From f92cfaa839a5881c7e25dfafccbff8efe07c0a2a Mon Sep 17 00:00:00 2001 From: GaoXiang233 <1679562189@qq.com> Date: Wed, 22 Apr 2026 18:57:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(BookAnalysis):=20=E6=B7=BB=E5=8A=A0PDF?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=A7=A3=E6=9E=90=E6=94=AF=E6=8C=81=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加mammoth和pdfjs-dist依赖以支持PDF和DOCX文件解析 重构文件处理逻辑为独立函数,提高代码可维护性 更新文件上传组件以显示支持的格式 --- dist/assets/index-8614bb7e.css | 1 + dist/assets/index-e0e8b1e6.js | 3146 ++++++++++++++++++++++++++++++++ dist/index.html | 15 + package-lock.json | 491 ++++- package.json | 4 +- src/views/BookAnalysis.vue | 147 +- 6 files changed, 3761 insertions(+), 43 deletions(-) create mode 100644 dist/assets/index-8614bb7e.css create mode 100644 dist/assets/index-e0e8b1e6.js create mode 100644 dist/index.html diff --git a/dist/assets/index-8614bb7e.css b/dist/assets/index-8614bb7e.css new file mode 100644 index 0000000..c17586f --- /dev/null +++ b/dist/assets/index-8614bb7e.css @@ -0,0 +1 @@ +@charset "UTF-8";.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.api-config[data-v-aa159c38]{padding:20px;max-width:100%}.config-card[data-v-aa159c38]{max-width:1600px;margin:0 auto}.card-header[data-v-aa159c38]{display:flex;justify-content:space-between;align-items:center}.config-type-selector[data-v-aa159c38]{margin-bottom:20px;text-align:center}.config-main-content[data-v-aa159c38]{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start}.config-tips-panel[data-v-aa159c38]{min-height:400px}.config-tips[data-v-aa159c38]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:20px;height:100%}.config-tips.official-tips[data-v-aa159c38]{background:#e8f4fd;border-color:#b3d9f7}.config-tips.custom-tips[data-v-aa159c38]{background:#fef4e8;border-color:#f7d9b3}.config-tips h4[data-v-aa159c38]{margin:0 0 12px;color:#2c3e50;font-size:16px;font-weight:600}.config-tips h5[data-v-aa159c38]{margin:16px 0 8px;color:#34495e;font-size:14px;font-weight:600}.tips-content p[data-v-aa159c38]{margin:0 0 12px;color:#5a6c7d;line-height:1.5}.tips-content ul[data-v-aa159c38],.tips-content ol[data-v-aa159c38]{margin:8px 0;padding-left:20px}.tips-content li[data-v-aa159c38]{margin-bottom:4px;color:#5a6c7d;line-height:1.4;font-size:13px}.purchase-info[data-v-aa159c38]{margin-top:16px;padding:12px;background:white;border:1px solid #ddd;border-radius:6px;text-align:center}.purchase-info p[data-v-aa159c38]{margin:0 0 8px;font-size:13px}.tips-note[data-v-aa159c38]{margin-top:16px;padding:8px 12px;background:#fff3cd;border:1px solid #ffeaa7;border-radius:4px}.tips-note p[data-v-aa159c38]{margin:0;font-size:12px;color:#856404}.config-form-panel[data-v-aa159c38]{min-height:400px}.config-form[data-v-aa159c38]{margin-top:16px;padding:0 8px}.model-option[data-v-aa159c38]{display:flex;justify-content:space-between;align-items:center}.model-name[data-v-aa159c38]{font-weight:500}.model-price[data-v-aa159c38]{color:#f56c6c;font-size:12px;font-weight:600}.model-description[data-v-aa159c38]{color:#909399;font-size:12px;margin-top:2px}.form-tip[data-v-aa159c38]{font-size:12px;color:#909399;margin-top:4px}.custom-model-input[data-v-aa159c38]{display:flex;gap:8px;margin-bottom:8px}.custom-models-list[data-v-aa159c38]{margin-top:8px}.max-tokens-control[data-v-aa159c38]{display:flex;flex-direction:column;gap:8px}@media (max-width: 900px){.config-main-content[data-v-aa159c38]{grid-template-columns:1fr;gap:16px}.config-tips-panel[data-v-aa159c38],.config-form-panel[data-v-aa159c38]{min-height:auto}.config-card[data-v-aa159c38]{max-width:100%}}@media (max-width: 1200px) and (min-width: 901px){.config-main-content[data-v-aa159c38]{grid-template-columns:1fr 1fr;gap:24px}}[data-v-aa159c38] .el-form-item__label{font-weight:500}[data-v-aa159c38] .el-slider__runway{margin:16px 0}[data-v-aa159c38] .el-radio-button__inner{padding:10px 20px;font-weight:500}[data-v-aa159c38] .el-alert{margin-bottom:16px}.official-config[data-v-aa159c38],.custom-config[data-v-aa159c38]{min-height:350px}.announcement-dialog[data-v-0c8048bb]{border-radius:12px}.announcement-content[data-v-0c8048bb]{padding:0}.announcement-meta[data-v-0c8048bb]{display:flex;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #ebeef5}.announcement-body[data-v-0c8048bb]{max-height:60vh;overflow-y:auto;padding:16px 0;line-height:1.6}.announcement-body[data-v-0c8048bb] h1{font-size:24px;color:#303133;margin:20px 0 16px;border-bottom:2px solid #409eff;padding-bottom:8px}.announcement-body[data-v-0c8048bb] h2{font-size:20px;color:#409eff;margin:16px 0 12px}.announcement-body[data-v-0c8048bb] h3{font-size:18px;color:#606266;margin:14px 0 10px}.announcement-body[data-v-0c8048bb] p{margin:8px 0;color:#606266}.announcement-body[data-v-0c8048bb] ul,.announcement-body[data-v-0c8048bb] ol{margin:8px 0;padding-left:20px}.announcement-body[data-v-0c8048bb] li{margin:4px 0;color:#606266}.announcement-body[data-v-0c8048bb] code{background:#f5f7fa;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;color:#e6a23c}.announcement-body[data-v-0c8048bb] pre{background:#f5f7fa;padding:12px;border-radius:6px;overflow-x:auto;margin:12px 0}.announcement-body[data-v-0c8048bb] blockquote{border-left:4px solid #409eff;background:#ecf5ff;padding:12px 16px;margin:12px 0;color:#606266}.announcement-body[data-v-0c8048bb] a{color:#409eff;text-decoration:none}.announcement-body[data-v-0c8048bb] a:hover{text-decoration:underline}.announcement-body[data-v-0c8048bb] strong{color:#303133;font-weight:600}.announcement-body[data-v-0c8048bb] table{width:100%;border-collapse:collapse;margin:12px 0}.announcement-body[data-v-0c8048bb] th,.announcement-body[data-v-0c8048bb] td{border:1px solid #ebeef5;padding:8px 12px;text-align:left}.announcement-body[data-v-0c8048bb] th{background:#f5f7fa;font-weight:600}.announcement-footer[data-v-0c8048bb]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-top:16px;border-top:1px solid #ebeef5}.footer-buttons[data-v-0c8048bb]{display:flex;gap:12px}[data-v-0c8048bb] .el-dialog__header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border-radius:12px 12px 0 0;padding:20px 24px}[data-v-0c8048bb] .el-dialog__title{color:#fff;font-weight:600;font-size:18px}[data-v-0c8048bb] .el-dialog__body{padding:24px}.dashboard-container[data-v-0bd020fe]{display:flex;height:100vh;background-color:#f5f5f5}.sidebar[data-v-0bd020fe]{width:250px;background-color:#304156;color:#fff;display:flex;flex-direction:column;transition:width .3s;overflow:hidden}.sidebar.collapsed[data-v-0bd020fe]{width:64px}.sidebar.collapsed .logo h2[data-v-0bd020fe]{display:none}.logo[data-v-0bd020fe]{height:60px;display:flex;align-items:center;justify-content:center;background-color:#2b3a4b;color:#fff;margin:0}.logo h2[data-v-0bd020fe]{margin:0;font-size:18px;white-space:nowrap}.sidebar-menu[data-v-0bd020fe]{border:none;background-color:#304156;height:calc(100vh - 60px)}.sidebar-menu .el-menu-item[data-v-0bd020fe],.sidebar-menu .el-sub-menu__title[data-v-0bd020fe]{color:#bfcbd9;border-bottom:none}.sidebar-menu .el-menu-item[data-v-0bd020fe]:hover,.sidebar-menu .el-sub-menu__title[data-v-0bd020fe]:hover{background-color:#263445;color:#409eff}.sidebar-menu .el-menu-item.is-active[data-v-0bd020fe]{background-color:#409eff;color:#fff}.main-container[data-v-0bd020fe]{flex:1;display:flex;flex-direction:column;overflow:hidden}.header[data-v-0bd020fe]{height:60px;background-color:#fff;border-bottom:1px solid #e4e7ed;display:flex;align-items:center;justify-content:space-between;padding:0 20px;box-shadow:0 1px 4px #00152914}.header-left[data-v-0bd020fe]{display:flex;align-items:center}.collapse-btn[data-v-0bd020fe]{margin-right:15px;font-size:18px}.page-title[data-v-0bd020fe]{font-size:18px;font-weight:500;color:#303133}.header-right[data-v-0bd020fe]{display:flex;align-items:center;gap:15px}.model-selector[data-v-0bd020fe]{display:flex;align-items:center}.model-selector .el-select[data-v-0bd020fe]{min-width:200px}.model-selector .el-select .el-input__inner[data-v-0bd020fe]{font-size:13px}.model-selector[data-v-0bd020fe] .el-select-group__title{font-weight:600;color:#409eff;padding:8px 12px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed}.model-selector[data-v-0bd020fe] .el-option-group .el-option{padding-left:20px}.model-selector[data-v-0bd020fe] .el-option-group:not(:last-child){border-bottom:1px solid #e4e7ed}.user-info[data-v-0bd020fe]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:5px 10px;border-radius:4px;transition:background-color .3s}.user-info[data-v-0bd020fe]:hover{background-color:#f5f7fa}.username[data-v-0bd020fe]{color:#606266;font-size:14px}.content[data-v-0bd020fe]{flex:1;padding:20px;overflow-y:auto;background-color:#f5f5f5}@media (max-width: 768px){.sidebar[data-v-0bd020fe]{position:fixed;z-index:1000;height:100vh}.main-container[data-v-0bd020fe]{margin-left:0}.content[data-v-0bd020fe]{padding:15px}}.writing-goals[data-v-04fd4519]{padding:20px}.goals-header[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.goals-overview[data-v-04fd4519]{margin-bottom:30px}.overview-card[data-v-04fd4519]{display:flex;align-items:center;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 8px #0000001a;transition:transform .2s}.overview-card[data-v-04fd4519]:hover{transform:translateY(-2px)}.card-icon[data-v-04fd4519]{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16px;font-size:20px;color:#fff}.card-icon.daily[data-v-04fd4519]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.card-icon.weekly[data-v-04fd4519]{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.card-icon.monthly[data-v-04fd4519]{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%)}.card-icon.streak[data-v-04fd4519]{background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%)}.card-content[data-v-04fd4519]{flex:1}.card-title[data-v-04fd4519]{font-size:14px;color:#666;margin-bottom:4px}.card-value[data-v-04fd4519]{font-size:24px;font-weight:700;color:#333;margin-bottom:2px}.card-subtitle[data-v-04fd4519]{font-size:12px;color:#999}.active-goals[data-v-04fd4519]{margin-bottom:30px}.goals-list[data-v-04fd4519]{display:flex;flex-direction:column;gap:16px}.goal-item[data-v-04fd4519]{background:white;border:1px solid #e4e7ed;border-radius:8px;padding:20px;transition:all .3s}.goal-item[data-v-04fd4519]:hover{border-color:#409eff;box-shadow:0 2px 12px #0000001a}.goal-item.completed[data-v-04fd4519]{background:#f0f9ff;border-color:#67c23a}.goal-header[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.goal-info[data-v-04fd4519]{display:flex;align-items:center;gap:12px}.goal-title[data-v-04fd4519]{font-size:16px;font-weight:700;color:#303133}.goal-actions[data-v-04fd4519]{display:flex;gap:8px}.goal-description[data-v-04fd4519]{color:#606266;margin-bottom:16px;line-height:1.5}.goal-progress[data-v-04fd4519]{margin-bottom:12px}.progress-info[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px}.progress-percentage[data-v-04fd4519]{font-weight:700;color:#409eff}.goal-meta[data-v-04fd4519]{display:flex;gap:20px;font-size:12px;color:#909399}.meta-item[data-v-04fd4519]{display:flex;align-items:center;gap:4px}.completion-date[data-v-04fd4519]{font-size:12px;color:#67c23a}.goal-result[data-v-04fd4519]{font-size:14px;color:#606266;background:#f8f9fa;padding:8px 12px;border-radius:4px;margin-top:8px}.empty-state[data-v-04fd4519]{text-align:center;padding:40px;color:#909399}.ml-2[data-v-04fd4519]{margin-left:8px}.active-goals-header[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.goals-controls[data-v-04fd4519]{display:flex;gap:8px}.sort-active[data-v-04fd4519]{background:#409eff!important;color:#fff!important}.sort-tip[data-v-04fd4519]{margin-bottom:16px}.sortable-goals[data-v-04fd4519]{display:flex;flex-direction:column;gap:16px}.goal-item.sortable[data-v-04fd4519]{cursor:move;border:2px dashed transparent;transition:all .3s ease}.goal-item.sortable[data-v-04fd4519]:hover{border-color:#409eff;box-shadow:0 4px 12px #409eff33}.goal-item.sortable[draggable=true][data-v-04fd4519]:active{opacity:.8;transform:rotate(2deg)}.list-move[data-v-04fd4519],.list-enter-active[data-v-04fd4519],.list-leave-active[data-v-04fd4519]{transition:all .3s ease}.list-enter-from[data-v-04fd4519],.list-leave-to[data-v-04fd4519]{opacity:0;transform:translate(30px)}.list-leave-active[data-v-04fd4519]{position:absolute;width:100%}.home-page[data-v-bcfccac0]{padding:0}.welcome-section[data-v-bcfccac0]{margin-bottom:20px}.welcome-card[data-v-bcfccac0]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border:none}.welcome-card[data-v-bcfccac0] .el-card__body{padding:40px}.welcome-content[data-v-bcfccac0]{display:flex;justify-content:space-between;align-items:center;color:#fff}.welcome-text h1[data-v-bcfccac0]{margin:0 0 10px;font-size:32px;font-weight:600}.welcome-text p[data-v-bcfccac0]{margin:0;font-size:16px;opacity:.9}.welcome-actions[data-v-bcfccac0]{display:flex;gap:15px}.stats-section[data-v-bcfccac0]{margin-bottom:20px}.stat-card[data-v-bcfccac0]{border:none;transition:transform .3s}.stat-card[data-v-bcfccac0]:hover{transform:translateY(-2px)}.stat-item[data-v-bcfccac0]{display:flex;align-items:center;gap:15px}.stat-icon[data-v-bcfccac0]{width:50px;height:50px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff}.stat-icon.novels[data-v-bcfccac0]{background:linear-gradient(135deg,#667eea,#764ba2)}.stat-icon.words[data-v-bcfccac0]{background:linear-gradient(135deg,#f093fb,#f5576c)}.stat-icon.chapters[data-v-bcfccac0]{background:linear-gradient(135deg,#4facfe,#00f2fe)}.stat-icon.tokens[data-v-bcfccac0]{background:linear-gradient(135deg,#43e97b,#38f9d7)}.stat-content[data-v-bcfccac0]{flex:1}.stat-number[data-v-bcfccac0]{font-size:24px;font-weight:600;color:#303133;line-height:1}.stat-label[data-v-bcfccac0]{font-size:14px;color:#909399;margin-top:5px}.main-content[data-v-bcfccac0]{margin-bottom:20px}.goals-card[data-v-bcfccac0],.quick-actions-card[data-v-bcfccac0]{height:100%;min-height:380px}.goals-card[data-v-bcfccac0] .el-card__body,.quick-actions-card[data-v-bcfccac0] .el-card__body{height:100%;display:flex;flex-direction:column}.goals-content[data-v-bcfccac0]{flex:1;display:flex;flex-direction:column;justify-content:flex-start;min-height:300px}.quick-actions[data-v-bcfccac0]{flex:1;display:flex;flex-direction:column;justify-content:center}.card-header[data-v-bcfccac0]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.goals-content[data-v-bcfccac0]{padding:10px 0}.goal-item[data-v-bcfccac0]{margin-bottom:20px;padding:15px;background:#fafafa;border-radius:8px;border:1px solid #f0f0f0}.goal-item[data-v-bcfccac0]:last-child{margin-bottom:15px}.goal-info[data-v-bcfccac0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.goal-label[data-v-bcfccac0]{font-size:14px;color:#606266}.goal-value[data-v-bcfccac0]{font-size:14px;font-weight:600;color:#303133}.goal-progress[data-v-bcfccac0]{position:relative}.progress-text[data-v-bcfccac0]{display:block;text-align:right;font-size:12px;color:#909399;margin-top:5px;line-height:1}.streak-info[data-v-bcfccac0]{display:flex;align-items:center;gap:8px;padding:15px;background:#f8f9fa;border-radius:8px;margin-top:auto;margin-bottom:0}.streak-icon[data-v-bcfccac0]{color:#f39c12;font-size:18px}.no-goals[data-v-bcfccac0]{padding:20px;text-align:center}.view-all-goals[data-v-bcfccac0]{text-align:center;padding:10px;border-top:1px solid #f0f0f0;margin-top:15px}.view-all-goals .el-button[data-v-bcfccac0]{color:#409eff;font-size:12px}.quick-actions[data-v-bcfccac0]{padding:10px 0}.action-grid[data-v-bcfccac0]{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;height:100%;align-content:start}.action-item[data-v-bcfccac0]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:25px 20px;border:1px solid #e4e7ed;border-radius:8px;cursor:pointer;transition:all .3s;min-height:100px;justify-content:center}.action-item[data-v-bcfccac0]:hover{border-color:#409eff;background-color:#f0f9ff;transform:translateY(-2px)}.action-icon[data-v-bcfccac0]{width:45px;height:45px;border-radius:50%;background:#409eff;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px}.recent-novels-section[data-v-bcfccac0]{margin-bottom:20px}.novels-list[data-v-bcfccac0]{display:flex;flex-direction:column;gap:15px}.novel-item[data-v-bcfccac0]{display:flex;align-items:center;gap:15px;padding:15px;border:1px solid #e4e7ed;border-radius:8px;cursor:pointer;transition:all .3s}.novel-item[data-v-bcfccac0]:hover{border-color:#409eff;background-color:#f0f9ff}.novel-cover[data-v-bcfccac0]{width:60px;height:80px;border-radius:4px;overflow:hidden;flex-shrink:0}.novel-cover img[data-v-bcfccac0]{width:100%;height:100%;object-fit:cover}.default-cover[data-v-bcfccac0]{width:100%;height:100%;background:#f5f7fa;display:flex;align-items:center;justify-content:center;color:#c0c4cc;font-size:24px}.novel-info[data-v-bcfccac0]{flex:1}.novel-title[data-v-bcfccac0]{margin:0 0 5px;font-size:16px;font-weight:600;color:#303133}.novel-desc[data-v-bcfccac0]{margin:0 0 8px;font-size:14px;color:#606266;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.novel-meta[data-v-bcfccac0]{display:flex;gap:15px;font-size:12px;color:#909399}.novel-actions[data-v-bcfccac0]{flex-shrink:0}.empty-novels[data-v-bcfccac0]{padding:40px 0}@media (max-width: 768px){.welcome-content[data-v-bcfccac0]{flex-direction:column;text-align:center;gap:20px}.goals-card[data-v-bcfccac0],.quick-actions-card[data-v-bcfccac0]{min-height:auto}.action-grid[data-v-bcfccac0]{grid-template-columns:1fr}.novel-item[data-v-bcfccac0]{flex-direction:column;text-align:center}.goals-content[data-v-bcfccac0]{min-height:auto}}.prompts-library[data-v-be8bc03c]{padding:0}.page-header[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-be8bc03c]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-be8bc03c]{margin:0;color:#606266;font-size:14px}.filter-section[data-v-be8bc03c]{margin-bottom:20px}.filter-content[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;gap:20px}.category-tabs[data-v-be8bc03c]{display:flex;gap:10px;flex-wrap:wrap}.category-btn[data-v-be8bc03c]{border-radius:20px;padding:8px 16px}.search-box[data-v-be8bc03c]{width:300px}.prompts-grid[data-v-be8bc03c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px;margin-bottom:20px}.prompt-card[data-v-be8bc03c]{height:100%}.prompt-item[data-v-be8bc03c]{height:100%;display:flex;flex-direction:column}.prompt-item[data-v-be8bc03c] .el-card__body{flex:1;display:flex;flex-direction:column}.prompt-header[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.prompt-title[data-v-be8bc03c]{display:flex;align-items:center;gap:8px;flex:1}.category-icon[data-v-be8bc03c]{font-size:18px}.prompt-title h3[data-v-be8bc03c]{margin:0;font-size:16px;color:#303133;line-height:1.4}.prompt-description[data-v-be8bc03c]{margin-bottom:15px}.prompt-description p[data-v-be8bc03c]{margin:0;color:#606266;font-size:14px;line-height:1.5}.prompt-content[data-v-be8bc03c]{flex:1;margin-bottom:15px}.content-preview[data-v-be8bc03c]{background:#f8f9fa;padding:12px;border-radius:6px;font-size:13px;color:#666;line-height:1.4;border-left:3px solid #409eff}.prompt-footer[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.prompt-tags[data-v-be8bc03c]{display:flex;gap:5px;flex-wrap:wrap}.empty-state[data-v-be8bc03c]{padding:60px 0}.tags-display[data-v-be8bc03c]{margin-top:10px}.content-input-area[data-v-be8bc03c]{width:100%}.content-toolbar[data-v-be8bc03c]{margin-bottom:8px;display:flex;gap:8px;align-items:center}.content-toolbar .el-button[data-v-be8bc03c]{border-radius:4px;font-size:12px}.use-prompt-content h4[data-v-be8bc03c]{margin:0 0 10px;color:#303133}.use-prompt-content p[data-v-be8bc03c]{margin:0 0 20px;color:#606266}.generated-prompt[data-v-be8bc03c]{margin-top:20px}.generated-prompt h5[data-v-be8bc03c]{margin:0 0 10px;color:#303133}@media (max-width: 768px){.page-header[data-v-be8bc03c]{flex-direction:column;gap:15px;text-align:center}.filter-content[data-v-be8bc03c]{flex-direction:column;gap:15px}.search-box[data-v-be8bc03c]{width:100%}.prompts-grid[data-v-be8bc03c]{grid-template-columns:1fr}.category-tabs[data-v-be8bc03c]{justify-content:center}}.import-content[data-v-be8bc03c]{padding:10px 0}.import-content .el-alert[data-v-be8bc03c] .el-alert__description{line-height:1.6}.import-content .el-alert ul[data-v-be8bc03c]{margin:10px 0 0;padding-left:20px}.import-content .el-alert li[data-v-be8bc03c]{margin:5px 0}.import-content code[data-v-be8bc03c]{background:#f1f2f6;padding:2px 6px;border-radius:3px;font-family:Courier New,monospace;font-size:12px}.file-import[data-v-be8bc03c]{min-height:200px;display:flex;align-items:center;justify-content:center}.text-import[data-v-be8bc03c]{padding:20px}.preview-section[data-v-be8bc03c]{margin-top:20px;border-top:1px solid #ebeef5;padding-top:20px}.preview-section h4[data-v-be8bc03c]{margin:0 0 15px;color:#303133;font-size:16px}.preview-list[data-v-be8bc03c]{max-height:300px;overflow-y:auto;border:1px solid #ebeef5;border-radius:6px}.preview-item[data-v-be8bc03c]{padding:12px 16px;border-bottom:1px solid #f5f7fa;transition:background-color .2s}.preview-item[data-v-be8bc03c]:last-child{border-bottom:none}.preview-item[data-v-be8bc03c]:hover{background-color:#f8f9fa}.preview-header[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.preview-title[data-v-be8bc03c]{font-weight:500;color:#303133;flex:1;margin-right:10px}.preview-description[data-v-be8bc03c]{color:#606266;font-size:13px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.el-tabs--border-card[data-v-be8bc03c] .el-tabs__content{padding:20px}.el-upload--text[data-v-be8bc03c],.el-upload-dragger[data-v-be8bc03c]{width:100%}.novel-management[data-v-b7c07dee]{padding:0}.page-header[data-v-b7c07dee]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-b7c07dee]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-b7c07dee]{margin:0;color:#606266;font-size:14px}.filter-section[data-v-b7c07dee]{margin-bottom:20px}.filter-content[data-v-b7c07dee]{display:flex;justify-content:space-between;align-items:center;gap:20px}.filter-left[data-v-b7c07dee]{display:flex;gap:15px}.novels-grid[data-v-b7c07dee]{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-bottom:20px}.novel-card[data-v-b7c07dee]{height:100%}.novel-item[data-v-b7c07dee]{height:100%;display:flex;flex-direction:column}.novel-item[data-v-b7c07dee] .el-card__body{flex:1;display:flex;flex-direction:column;padding:0}.novel-cover[data-v-b7c07dee]{position:relative;height:200px;overflow:hidden;border-radius:8px 8px 0 0}.novel-cover img[data-v-b7c07dee]{width:100%;height:100%;object-fit:cover;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.novel-status[data-v-b7c07dee]{position:absolute;top:10px;right:10px}.novel-info[data-v-b7c07dee]{flex:1;padding:15px}.novel-title[data-v-b7c07dee]{margin:0 0 8px;font-size:16px;font-weight:600;color:#303133;line-height:1.4}.novel-description[data-v-b7c07dee]{margin:0 0 15px;color:#606266;font-size:13px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.novel-meta[data-v-b7c07dee]{display:flex;flex-wrap:wrap;gap:15px;margin-bottom:10px}.meta-item[data-v-b7c07dee]{display:flex;align-items:center;gap:4px;color:#909399;font-size:12px}.novel-genre[data-v-b7c07dee]{margin-bottom:15px}.novel-actions[data-v-b7c07dee]{display:flex;gap:8px;padding:0 15px 15px;margin-top:auto}.empty-state[data-v-b7c07dee]{padding:60px 0}.cover-uploader[data-v-b7c07dee]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden;width:120px;height:160px;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.cover-uploader[data-v-b7c07dee]:hover{border-color:#409eff;background-color:#f8f9fa}.cover-uploader-placeholder[data-v-b7c07dee]{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;text-align:center}.cover-uploader-icon[data-v-b7c07dee]{font-size:24px;color:#8c939d;margin-bottom:8px}.upload-text[data-v-b7c07dee]{font-size:12px;color:#8c939d;line-height:1.2}.cover-preview[data-v-b7c07dee]{width:120px;height:160px;object-fit:cover;display:block;border-radius:6px}.cover-upload-container[data-v-b7c07dee]{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.cover-actions[data-v-b7c07dee]{display:flex;gap:8px}.tags-display[data-v-b7c07dee]{margin-top:10px}.tags-display .el-tag[data-v-b7c07dee]{margin:2px 4px 2px 0}.description-input-group[data-v-b7c07dee]{position:relative}.ai-generate-section[data-v-b7c07dee]{display:flex;align-items:center;gap:10px;margin-top:8px;padding:8px 12px;background:#f8f9fa;border-radius:4px;border:1px solid #e9ecef}.generate-tip[data-v-b7c07dee]{font-size:12px;color:#6c757d}.novel-details[data-v-b7c07dee]{max-height:600px;overflow-y:auto}.details-header[data-v-b7c07dee]{display:flex;gap:20px;margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid #ebeef5}.details-cover[data-v-b7c07dee]{flex-shrink:0}.details-cover img[data-v-b7c07dee]{width:120px;height:160px;object-fit:cover;border-radius:6px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.details-info[data-v-b7c07dee]{flex:1}.details-info h2[data-v-b7c07dee]{margin:0 0 10px;color:#303133}.details-description[data-v-b7c07dee]{margin:0 0 15px;color:#606266;line-height:1.6}.details-meta[data-v-b7c07dee]{display:flex;flex-direction:column;gap:8px}.meta-row[data-v-b7c07dee]{display:flex;align-items:center;gap:10px}.meta-label[data-v-b7c07dee]{font-weight:500;color:#303133;min-width:80px}.chapters-list[data-v-b7c07dee]{max-height:300px;overflow-y:auto}.chapter-item[data-v-b7c07dee]{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.chapter-info h4[data-v-b7c07dee]{margin:0 0 5px;font-size:14px;color:#303133}.chapter-info p[data-v-b7c07dee]{margin:0;font-size:12px;color:#909399}.writing-records[data-v-b7c07dee]{max-height:300px;overflow-y:auto}.record-item[data-v-b7c07dee]{display:flex;gap:15px;padding:12px 0;border-bottom:1px solid #f0f0f0}.record-date[data-v-b7c07dee]{flex-shrink:0;font-size:12px;color:#909399;min-width:80px}.record-content[data-v-b7c07dee]{flex:1}.record-stats[data-v-b7c07dee]{display:flex;gap:15px;font-size:13px;color:#606266;margin-bottom:5px}.record-note[data-v-b7c07dee]{font-size:12px;color:#909399}.stats-grid[data-v-b7c07dee]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:20px}.stat-item[data-v-b7c07dee]{text-align:center;padding:20px;background:#f8f9fa;border-radius:8px}.stat-value[data-v-b7c07dee]{font-size:24px;font-weight:600;color:#409eff;margin-bottom:5px}.stat-label[data-v-b7c07dee]{font-size:12px;color:#909399}.image-placeholder[data-v-b7c07dee]{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:#f5f7fa;color:#909399;font-size:12px}.image-placeholder i[data-v-b7c07dee]{font-size:24px;margin-bottom:8px}@media (max-width: 768px){.page-header[data-v-b7c07dee]{flex-direction:column;gap:15px;text-align:center}.filter-content[data-v-b7c07dee]{flex-direction:column;gap:15px}.filter-left[data-v-b7c07dee]{flex-wrap:wrap;justify-content:center}.novels-grid[data-v-b7c07dee]{grid-template-columns:1fr}.details-header[data-v-b7c07dee]{flex-direction:column;text-align:center}.stats-grid[data-v-b7c07dee]{grid-template-columns:repeat(2,1fr)}}.writing-goals[data-v-f3b7487c]{padding:0}.page-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-f3b7487c]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-f3b7487c]{margin:0;color:#606266;font-size:14px}.goals-overview[data-v-f3b7487c]{margin-bottom:30px}.overview-card[data-v-f3b7487c]{height:100%}.overview-item[data-v-f3b7487c]{display:flex;align-items:center;gap:15px}.overview-icon[data-v-f3b7487c]{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff}.overview-icon.active[data-v-f3b7487c]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.overview-icon.completed[data-v-f3b7487c]{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.overview-icon.words[data-v-f3b7487c]{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%)}.overview-icon.streak[data-v-f3b7487c]{background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%)}.overview-content[data-v-f3b7487c]{flex:1}.overview-value[data-v-f3b7487c]{font-size:24px;font-weight:600;color:#303133;margin-bottom:5px}.overview-label[data-v-f3b7487c]{font-size:14px;color:#606266}.active-goals-section[data-v-f3b7487c]{margin-bottom:30px}.active-goals-section h2[data-v-f3b7487c]{margin:0 0 20px;color:#303133}.goals-grid[data-v-f3b7487c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px}.goal-card[data-v-f3b7487c]{height:100%}.goal-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px}.goal-title[data-v-f3b7487c]{display:flex;align-items:center;gap:10px;flex:1}.goal-icon[data-v-f3b7487c]{font-size:20px}.goal-title h3[data-v-f3b7487c]{margin:0;font-size:16px;color:#303133}.goal-description[data-v-f3b7487c]{margin-bottom:20px}.goal-description p[data-v-f3b7487c]{margin:0;color:#606266;font-size:14px;line-height:1.5}.goal-progress[data-v-f3b7487c]{margin-bottom:20px}.progress-info[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.progress-text[data-v-f3b7487c]{font-size:14px;color:#303133}.progress-percentage[data-v-f3b7487c]{font-size:14px;font-weight:600;color:#409eff}.goal-timeline[data-v-f3b7487c]{margin-bottom:20px}.timeline-item[data-v-f3b7487c]{display:flex;justify-content:space-between;margin-bottom:5px;font-size:13px}.timeline-label[data-v-f3b7487c]{color:#909399}.text-danger[data-v-f3b7487c]{color:#f56c6c}.goal-footer[data-v-f3b7487c]{display:flex;gap:10px}.history-section[data-v-f3b7487c]{margin-bottom:30px}.section-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.section-header h2[data-v-f3b7487c]{margin:0;color:#303133}.filter-tabs[data-v-f3b7487c]{display:flex;gap:10px}.history-list[data-v-f3b7487c]{display:flex;flex-direction:column;gap:15px}.history-item[data-v-f3b7487c]{width:100%}.history-content[data-v-f3b7487c]{display:flex;align-items:center;gap:20px}.history-info[data-v-f3b7487c]{flex:1}.history-title[data-v-f3b7487c]{display:flex;align-items:center;gap:10px;margin-bottom:8px}.history-title h4[data-v-f3b7487c]{margin:0;font-size:16px;color:#303133}.history-description[data-v-f3b7487c]{margin:0 0 8px;color:#606266;font-size:14px}.history-meta[data-v-f3b7487c]{display:flex;gap:20px;font-size:12px;color:#909399}.history-progress[data-v-f3b7487c]{width:200px}.goal-details[data-v-f3b7487c]{max-height:600px;overflow-y:auto}.details-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #ebeef5}.details-header h3[data-v-f3b7487c]{margin:0;color:#303133}.details-content[data-v-f3b7487c]{display:flex;flex-direction:column;gap:20px}.detail-item[data-v-f3b7487c]{display:flex;margin-bottom:10px}.detail-item label[data-v-f3b7487c]{font-weight:500;color:#303133;min-width:80px}.progress-chart[data-v-f3b7487c]{padding:20px;background:#f8f9fa;border-radius:8px}.progress-chart h4[data-v-f3b7487c]{margin:0 0 15px;color:#303133}.chart-placeholder[data-v-f3b7487c]{height:200px;display:flex;align-items:center;justify-content:center;background:white;border-radius:6px;color:#909399}.progress-history h4[data-v-f3b7487c]{margin:0 0 15px;color:#303133}.history-timeline[data-v-f3b7487c]{max-height:200px;overflow-y:auto}.timeline-item[data-v-f3b7487c]{display:flex;gap:15px;padding:10px 0;border-bottom:1px solid #f0f0f0}.timeline-date[data-v-f3b7487c]{flex-shrink:0;font-size:12px;color:#909399;min-width:80px}.timeline-content[data-v-f3b7487c]{flex:1}.timeline-progress[data-v-f3b7487c]{font-size:14px;color:#409eff;font-weight:500;margin-bottom:3px}.timeline-note[data-v-f3b7487c]{font-size:12px;color:#606266}@media (max-width: 768px){.page-header[data-v-f3b7487c]{flex-direction:column;gap:15px;text-align:center}.goals-grid[data-v-f3b7487c]{grid-template-columns:1fr}.section-header[data-v-f3b7487c]{flex-direction:column;gap:15px;align-items:flex-start}.filter-tabs[data-v-f3b7487c]{flex-wrap:wrap}.history-content[data-v-f3b7487c]{flex-direction:column;align-items:flex-start}.history-progress[data-v-f3b7487c]{width:100%}}.token-billing[data-v-bda4e3ab]{padding:0}.page-header[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-bda4e3ab]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-bda4e3ab]{margin:0;color:#606266;font-size:14px}.header-actions[data-v-bda4e3ab]{display:flex;gap:10px}.account-overview[data-v-bda4e3ab]{margin-bottom:20px}.overview-card[data-v-bda4e3ab]{height:100%}.overview-card.usage[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%);color:#fff}.overview-card.input[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff}.overview-card.output[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%);color:#fff}.overview-card.total[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%);color:#fff}.overview-item[data-v-bda4e3ab]{display:flex;align-items:center;gap:15px}.overview-icon[data-v-bda4e3ab]{width:50px;height:50px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:20px}.overview-content[data-v-bda4e3ab]{flex:1}.overview-value[data-v-bda4e3ab]{font-size:24px;font-weight:600;margin-bottom:5px}.overview-label[data-v-bda4e3ab]{font-size:14px;opacity:.9}.statistics-section[data-v-bda4e3ab]{margin-bottom:20px}.card-header[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center}.card-header h3[data-v-bda4e3ab]{margin:0;font-size:18px;color:#303133}.time-filter[data-v-bda4e3ab]{margin-left:auto}.statistics-content[data-v-bda4e3ab]{padding:20px 0}.chart-container[data-v-bda4e3ab]{text-align:center}.chart-container h4[data-v-bda4e3ab]{margin:0 0 15px;font-size:16px;color:#606266}.chart-placeholder[data-v-bda4e3ab]{height:200px;background:#f8f9fa;border:2px dashed #e9ecef;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#6c757d;font-size:14px}.filter-section[data-v-bda4e3ab]{margin-bottom:20px}.filter-content[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center;padding:10px 0}.filter-left[data-v-bda4e3ab]{display:flex;gap:15px;align-items:center}.billing-records[data-v-bda4e3ab]{margin-bottom:20px}.record-stats[data-v-bda4e3ab]{display:flex;gap:20px;font-size:14px;color:#606266}.content-preview[data-v-bda4e3ab]{color:#606266;font-size:13px}.model-name[data-v-bda4e3ab]{font-weight:500;color:#409eff}.cost-amount[data-v-bda4e3ab]{font-weight:600;color:#e6a23c}.pagination-container[data-v-bda4e3ab]{margin-top:20px;display:flex;justify-content:center}.record-details[data-v-bda4e3ab]{max-height:500px;overflow-y:auto}.details-grid[data-v-bda4e3ab]{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:20px}.detail-item[data-v-bda4e3ab]{display:flex;align-items:center;gap:10px}.detail-item label[data-v-bda4e3ab]{font-weight:600;color:#606266;min-width:80px}.content-section[data-v-bda4e3ab],.response-section[data-v-bda4e3ab]{margin-bottom:20px}.content-header[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.content-section h4[data-v-bda4e3ab],.response-section h4[data-v-bda4e3ab]{margin:0;font-size:14px;color:#303133}.content-box[data-v-bda4e3ab]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:4px;padding:15px;font-size:13px;line-height:1.5;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.api-config[data-v-4a36dc73]{padding:0}.page-header[data-v-4a36dc73]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-4a36dc73]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-4a36dc73]{margin:0;color:#606266;font-size:14px}.header-actions[data-v-4a36dc73]{display:flex;gap:10px}.config-overview[data-v-4a36dc73]{margin-bottom:20px}.status-card[data-v-4a36dc73]{height:100%}.status-item[data-v-4a36dc73]{display:flex;align-items:center;gap:15px}.status-icon[data-v-4a36dc73]{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff}.status-icon.success[data-v-4a36dc73]{background:linear-gradient(135deg,#67c23a,#85ce61)}.status-icon.warning[data-v-4a36dc73]{background:linear-gradient(135deg,#e6a23c,#f0a020)}.status-icon.info[data-v-4a36dc73]{background:linear-gradient(135deg,#409eff,#66b1ff)}.status-icon.primary[data-v-4a36dc73]{background:linear-gradient(135deg,#909399,#b3b6bb)}.status-content[data-v-4a36dc73]{flex:1}.status-value[data-v-4a36dc73]{font-size:24px;font-weight:600;color:#303133;margin-bottom:5px}.status-label[data-v-4a36dc73]{font-size:14px;color:#606266}.config-list[data-v-4a36dc73]{margin-bottom:20px}.card-header[data-v-4a36dc73]{display:flex;justify-content:space-between;align-items:center}.card-header h3[data-v-4a36dc73]{margin:0;color:#303133}.config-tabs[data-v-4a36dc73]{margin-top:20px}.config-content[data-v-4a36dc73]{padding:20px 0}.config-section[data-v-4a36dc73]{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #ebeef5}.config-section[data-v-4a36dc73]:last-child{border-bottom:none}.config-section h4[data-v-4a36dc73]{margin:0 0 20px;color:#303133;font-size:16px;font-weight:600}.config-actions[data-v-4a36dc73]{display:flex;gap:10px;justify-content:flex-end;padding-top:20px;border-top:1px solid #ebeef5}.max-tokens-control[data-v-4a36dc73]{display:flex;flex-direction:column;gap:8px}.preset-templates[data-v-4a36dc73]{margin-bottom:20px}.template-grid[data-v-4a36dc73]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.template-card[data-v-4a36dc73]{padding:20px;border:1px solid #ebeef5;border-radius:8px;cursor:pointer;transition:all .3s;display:flex;gap:15px}.template-card[data-v-4a36dc73]:hover{border-color:#409eff;box-shadow:0 4px 8px #409eff33}.template-icon[data-v-4a36dc73]{font-size:32px;width:50px;height:50px;display:flex;align-items:center;justify-content:center;background:#f5f7fa;border-radius:8px}.template-content[data-v-4a36dc73]{flex:1}.template-content h4[data-v-4a36dc73]{margin:0 0 8px;color:#303133;font-size:16px}.template-content p[data-v-4a36dc73]{margin:0 0 10px;color:#606266;font-size:14px;line-height:1.4}.template-tags[data-v-4a36dc73]{display:flex;gap:5px;flex-wrap:wrap}.import-export[data-v-4a36dc73]{margin-bottom:20px}.import-export-actions[data-v-4a36dc73]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:30px}.action-group h4[data-v-4a36dc73]{margin:0 0 8px;color:#303133;font-size:16px}.action-group p[data-v-4a36dc73]{margin:0 0 15px;color:#606266;font-size:14px;line-height:1.4}@media (max-width: 768px){.page-header[data-v-4a36dc73]{flex-direction:column;gap:15px;text-align:center}.config-actions[data-v-4a36dc73]{flex-wrap:wrap;justify-content:center}.template-grid[data-v-4a36dc73],.import-export-actions[data-v-4a36dc73]{grid-template-columns:1fr}}.settings-page[data-v-fdf61afd]{padding:0}.settings-content[data-v-fdf61afd]{background:white;border-radius:8px}.settings-tabs[data-v-fdf61afd]{min-height:600px}.card-header[data-v-fdf61afd]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.data-management[data-v-fdf61afd]{padding:10px 0}.data-overview[data-v-fdf61afd]{margin-bottom:20px}.data-overview h3[data-v-fdf61afd]{margin:0 0 15px;font-size:16px;font-weight:600;color:#303133}.data-stats[data-v-fdf61afd]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:15px;margin-bottom:10px}.stat-item[data-v-fdf61afd]{text-align:center;padding:15px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.stat-label[data-v-fdf61afd]{font-size:12px;color:#6c757d;margin-bottom:5px}.stat-value[data-v-fdf61afd]{font-size:18px;font-weight:600;color:#495057}.data-section[data-v-fdf61afd]{margin-bottom:20px}.data-section h3[data-v-fdf61afd]{margin:0 0 10px;font-size:16px;font-weight:600;color:#303133}.data-section p[data-v-fdf61afd]{margin:0 0 15px;color:#606266;font-size:14px}.warning-text[data-v-fdf61afd]{color:#f56c6c!important}.data-actions[data-v-fdf61afd]{display:flex;gap:10px;flex-wrap:wrap}.about-content[data-v-fdf61afd]{padding:10px 0}.app-info[data-v-fdf61afd]{text-align:center;margin-bottom:20px}.app-logo h1[data-v-fdf61afd]{margin:0 0 20px;font-size:32px;color:#409eff}.app-details p[data-v-fdf61afd]{margin:8px 0;color:#606266}.features-list h3[data-v-fdf61afd],.update-log h3[data-v-fdf61afd]{margin:0 0 15px;font-size:16px;font-weight:600;color:#303133}.features-grid[data-v-fdf61afd]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:15px}.feature-category[data-v-fdf61afd]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:15px}.feature-category h4[data-v-fdf61afd]{margin:0 0 12px;font-size:14px;font-weight:600;color:#409eff;border-bottom:2px solid #409eff;padding-bottom:8px}.feature-category ul[data-v-fdf61afd]{margin:0;padding:0;list-style:none}.feature-category li[data-v-fdf61afd]{margin:6px 0;color:#606266;font-size:13px;line-height:1.4}.features-list ul[data-v-fdf61afd]{margin:0;padding-left:20px}.features-list li[data-v-fdf61afd]{margin:8px 0;color:#606266}.log-item[data-v-fdf61afd]{margin-bottom:20px;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:15px}.log-item.current-version[data-v-fdf61afd]{background:linear-gradient(135deg,#e3f2fd 0%,#f0f8ff 100%);border:2px solid #409eff}.log-item h4[data-v-fdf61afd]{margin:0 0 15px;font-size:15px;font-weight:600;color:#409eff;padding-bottom:8px;border-bottom:1px solid #409eff}.log-category[data-v-fdf61afd]{margin-bottom:15px}.log-category h5[data-v-fdf61afd]{margin:0 0 8px;font-size:13px;font-weight:600;color:#67c23a}.import-options[data-v-fdf61afd]{padding:10px 0}.import-options p[data-v-fdf61afd]{margin:0 0 15px;color:#606266}.import-options .el-checkbox-group[data-v-fdf61afd]{display:flex;flex-direction:column;gap:10px}.log-item ul[data-v-fdf61afd]{margin:0;padding-left:20px}.log-item li[data-v-fdf61afd]{margin:5px 0;color:#606266;font-size:14px}@media (max-width: 768px){.data-actions[data-v-fdf61afd]{flex-direction:column}.data-actions .el-button[data-v-fdf61afd]{width:100%}}:root[data-theme=light][data-v-fdf61afd]{--bg-color: #ffffff;--text-color: #303133;--border-color: #e4e7ed}:root[data-theme=dark][data-v-fdf61afd]{--bg-color: #1d1d1d;--text-color: #ffffff;--border-color: #434343}:root[data-theme=dark] .settings-page[data-v-fdf61afd]{background-color:var(--bg-color);color:var(--text-color)}:root[data-theme=dark] .el-card[data-v-fdf61afd]{background-color:#2d2d2d;border-color:var(--border-color)}.no-animations[data-v-fdf61afd] *{animation-duration:0ms!important;animation-delay:0ms!important;transition-duration:0ms!important;transition-delay:0ms!important}.chapter-management[data-v-5b2fb696]{padding:0}.page-header[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.header-content h1[data-v-5b2fb696]{margin:0 0 5px;font-size:24px;font-weight:600;color:#303133}.header-content p[data-v-5b2fb696]{margin:0;color:#606266;font-size:14px}.novel-selector[data-v-5b2fb696]{margin-bottom:20px}.selector-content[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:center}.selector-left[data-v-5b2fb696]{display:flex;align-items:center;gap:10px}.selector-label[data-v-5b2fb696]{font-weight:600;color:#303133}.novel-option[data-v-5b2fb696]{display:flex;flex-direction:column}.novel-title[data-v-5b2fb696]{font-weight:600}.novel-info[data-v-5b2fb696]{font-size:12px;color:#909399}.novel-stats[data-v-5b2fb696]{display:flex;gap:20px}.stat-item[data-v-5b2fb696]{display:flex;align-items:center;gap:5px}.stat-label[data-v-5b2fb696]{color:#606266;font-size:14px}.stat-value[data-v-5b2fb696]{font-weight:600;color:#303133}.chapters-section[data-v-5b2fb696]{margin-bottom:20px}.card-header[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.chapters-list[data-v-5b2fb696]{display:flex;flex-direction:column;gap:15px}.chapter-item[data-v-5b2fb696]{display:flex;align-items:flex-start;gap:15px;padding:15px;border:1px solid #e4e7ed;border-radius:8px;transition:all .3s}.chapter-item[data-v-5b2fb696]:hover,.chapter-item.selected[data-v-5b2fb696]{border-color:#409eff;background-color:#f0f9ff}.chapter-checkbox[data-v-5b2fb696]{flex-shrink:0;padding-top:2px}.chapter-number[data-v-5b2fb696]{flex-shrink:0;width:60px;text-align:center;font-weight:600;color:#409eff;background:#f0f9ff;padding:5px;border-radius:4px;font-size:12px}.chapter-content[data-v-5b2fb696]{flex:1}.chapter-title[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chapter-title h4[data-v-5b2fb696]{margin:0;font-size:16px;font-weight:600;color:#303133}.chapter-summary[data-v-5b2fb696]{color:#606266;font-size:14px;line-height:1.4;margin-bottom:10px}.chapter-meta[data-v-5b2fb696]{display:flex;gap:15px;font-size:12px;color:#909399}.meta-item[data-v-5b2fb696]{display:flex;align-items:center;gap:4px}.chapter-actions[data-v-5b2fb696]{flex-shrink:0;display:flex;align-items:center;gap:5px}.no-novel-selected[data-v-5b2fb696]{padding:60px 0}.tags-display[data-v-5b2fb696]{margin-top:10px}.chapter-preview[data-v-5b2fb696]{max-height:600px;overflow-y:auto}.preview-header[data-v-5b2fb696]{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #e4e7ed}.preview-header h2[data-v-5b2fb696]{margin:0 0 10px;font-size:20px;font-weight:600;color:#303133}.preview-meta[data-v-5b2fb696]{display:flex;gap:15px;font-size:14px;color:#606266}.preview-content[data-v-5b2fb696]{line-height:1.8;color:#303133}.preview-content p[data-v-5b2fb696]{margin:0 0 15px;text-indent:2em}.empty-chapters[data-v-5b2fb696]{padding:40px 0}@media (max-width: 768px){.page-header[data-v-5b2fb696]{flex-direction:column;gap:15px}.selector-content[data-v-5b2fb696]{flex-direction:column;gap:15px;align-items:flex-start}.chapter-item[data-v-5b2fb696]{flex-direction:column;gap:10px}.chapter-actions[data-v-5b2fb696]{width:100%;justify-content:flex-end}}:root,:host{--w-e-textarea-bg-color: #fff;--w-e-textarea-color: #333;--w-e-textarea-border-color: #ccc;--w-e-textarea-slight-border-color: #e8e8e8;--w-e-textarea-slight-color: #d4d4d4;--w-e-textarea-slight-bg-color: #f5f2f0;--w-e-textarea-selected-border-color: #B4D5FF;--w-e-textarea-handler-bg-color: #4290f7;--w-e-toolbar-color: #595959;--w-e-toolbar-bg-color: #fff;--w-e-toolbar-active-color: #333;--w-e-toolbar-active-bg-color: #f1f1f1;--w-e-toolbar-disabled-color: #999;--w-e-toolbar-border-color: #e8e8e8;--w-e-modal-button-bg-color: #fafafa;--w-e-modal-button-border-color: #d9d9d9}.w-e-text-container *,.w-e-toolbar *{box-sizing:border-box;margin:0;outline:none;padding:0}.w-e-text-container blockquote,.w-e-text-container li,.w-e-text-container p,.w-e-text-container td,.w-e-text-container th,.w-e-toolbar *{line-height:1.5}.w-e-text-container{background-color:var(--w-e-textarea-bg-color);color:var(--w-e-textarea-color);height:100%;position:relative}.w-e-text-container .w-e-scroll{-webkit-overflow-scrolling:touch;height:100%}.w-e-text-container [data-slate-editor]{word-wrap:break-word;border-top:1px solid transparent;min-height:100%;outline:0;padding:0 10px;white-space:pre-wrap}.w-e-text-container [data-slate-editor] p{margin:15px 0}.w-e-text-container [data-slate-editor] h1,.w-e-text-container [data-slate-editor] h2,.w-e-text-container [data-slate-editor] h3,.w-e-text-container [data-slate-editor] h4,.w-e-text-container [data-slate-editor] h5{margin:20px 0}.w-e-text-container [data-slate-editor] img{cursor:default;display:inline!important;max-width:100%;min-height:20px;min-width:20px}.w-e-text-container [data-slate-editor] span{text-indent:0}.w-e-text-container [data-slate-editor] [data-selected=true]{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-placeholder{font-style:italic;left:10px;top:17px;width:90%}.w-e-max-length-info,.w-e-text-placeholder{color:var(--w-e-textarea-slight-color);pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.w-e-max-length-info{bottom:.5em;right:1em}.w-e-bar{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-color);font-size:14px;padding:0 5px}.w-e-bar svg{fill:var(--w-e-toolbar-color);height:14px;width:14px}.w-e-bar-show{display:flex}.w-e-bar-hidden{display:none}.w-e-hover-bar{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 5px #0000001f;position:absolute}.w-e-toolbar{flex-wrap:wrap;position:relative}.w-e-bar-divider{background-color:var(--w-e-toolbar-border-color);display:inline-flex;height:40px;margin:0 5px;width:1px}.w-e-bar-item{display:flex;height:40px;padding:4px;position:relative;text-align:center}.w-e-bar-item,.w-e-bar-item button{align-items:center;justify-content:center}.w-e-bar-item button{background:transparent;border:none;color:var(--w-e-toolbar-color);cursor:pointer;display:inline-flex;height:32px;overflow:hidden;padding:0 8px;white-space:nowrap}.w-e-bar-item button:hover{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item button .title{margin-left:5px}.w-e-bar-item .active{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item .disabled{color:var(--w-e-toolbar-disabled-color);cursor:not-allowed}.w-e-bar-item .disabled svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-menu-tooltip-v5:before{background-color:var(--w-e-toolbar-active-color);border-radius:5px;color:var(--w-e-toolbar-bg-color);content:attr(data-tooltip);font-size:.75em;opacity:0;padding:5px 10px;position:absolute;text-align:center;top:40px;transition:opacity .6s;visibility:hidden;white-space:pre;z-index:1}.w-e-menu-tooltip-v5:after{border:5px solid transparent;border-bottom:5px solid var(--w-e-toolbar-active-color);content:"";opacity:0;position:absolute;top:30px;transition:opacity .6s;visibility:hidden}.w-e-menu-tooltip-v5:hover:after,.w-e-menu-tooltip-v5:hover:before{opacity:1;visibility:visible}.w-e-menu-tooltip-v5.tooltip-right:before{left:100%;top:10px}.w-e-menu-tooltip-v5.tooltip-right:after{border-bottom-color:transparent;border-left-color:transparent;border-right-color:var(--w-e-toolbar-active-color);border-top-color:transparent;left:100%;margin-left:-10px;top:16px}.w-e-bar-item-group .w-e-bar-item-menus-container{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;display:none;left:0;margin-top:40px;position:absolute;top:0;z-index:1}.w-e-bar-item-group:hover .w-e-bar-item-menus-container{display:block}.w-e-select-list{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;left:0;margin-top:40px;max-height:350px;min-width:100px;overflow-y:auto;position:absolute;top:0;z-index:1}.w-e-select-list ul{line-height:1;list-style:none}.w-e-select-list ul .selected{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li{cursor:pointer;padding:7px 0 7px 25px;position:relative;text-align:left;white-space:nowrap}.w-e-select-list ul li:hover{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li svg{left:0;margin-left:5px;margin-top:-7px;position:absolute;top:50%}.w-e-bar-bottom .w-e-select-list{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-drop-panel{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;margin-top:40px;min-width:200px;padding:10px;position:absolute;top:0;z-index:1}.w-e-bar-bottom .w-e-drop-panel{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-modal{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;color:var(--w-e-toolbar-color);font-size:14px;min-height:40px;min-width:100px;padding:20px 15px 0;position:absolute;text-align:left;z-index:1}.w-e-modal .btn-close{cursor:pointer;line-height:1;padding:5px;position:absolute;right:8px;top:7px}.w-e-modal .btn-close svg{fill:var(--w-e-toolbar-color);height:10px;width:10px}.w-e-modal .babel-container{display:block;margin-bottom:15px}.w-e-modal .babel-container span{display:block;margin-bottom:10px}.w-e-modal .button-container{margin-bottom:15px}.w-e-modal button{background-color:var(--w-e-modal-button-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);cursor:pointer;font-weight:400;height:32px;padding:4.5px 15px;text-align:center;touch-action:manipulation;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.w-e-modal input[type=number],.w-e-modal input[type=text],.w-e-modal textarea{font-feature-settings:"tnum";background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);font-variant:tabular-nums;padding:4.5px 11px;transition:all .3s;width:100%}.w-e-modal textarea{min-height:60px}body .w-e-modal,body .w-e-modal *{box-sizing:border-box}.w-e-progress-bar{background-color:var(--w-e-textarea-handler-bg-color);height:1px;position:absolute;transition:width .3s;width:0}.w-e-full-screen-container{bottom:0!important;display:flex!important;flex-direction:column!important;height:100%!important;left:0!important;margin:0!important;padding:0!important;position:fixed;right:0!important;top:0!important;width:100%!important}.w-e-full-screen-container [data-w-e-textarea=true]{flex:1!important}.w-e-text-container [data-slate-editor] code{background-color:var(--w-e-textarea-slight-bg-color);border-radius:3px;font-family:monospace;padding:3px}.w-e-panel-content-color{list-style:none;text-align:left;width:230px}.w-e-panel-content-color li{border:1px solid var(--w-e-toolbar-bg-color);border-radius:3px;cursor:pointer;display:inline-block;padding:2px}.w-e-panel-content-color li:hover{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color li .color-block{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;height:17px;width:17px}.w-e-panel-content-color .active{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color .clear{line-height:1.5;margin-bottom:5px;width:100%}.w-e-panel-content-color .clear svg{height:16px;margin-bottom:-4px;width:16px}.w-e-text-container [data-slate-editor] blockquote{background-color:var(--w-e-textarea-slight-bg-color);border-left:8px solid var(--w-e-textarea-selected-border-color);display:block;font-size:100%;line-height:1.5;margin:10px 0;padding:10px}.w-e-panel-content-emotion{font-size:20px;list-style:none;text-align:left;width:300px}.w-e-panel-content-emotion li{border-radius:3px;cursor:pointer;display:inline-block;padding:0 5px}.w-e-panel-content-emotion li:hover{background-color:var(--w-e-textarea-slight-bg-color)}.w-e-textarea-divider{border-radius:3px;margin:20px auto;padding:20px}.w-e-textarea-divider hr{background-color:var(--w-e-textarea-border-color);border:0;display:block;height:1px}.w-e-text-container [data-slate-editor] pre>code{background-color:var(--w-e-textarea-slight-bg-color);border:1px solid var(--w-e-textarea-slight-border-color);border-radius:4px;display:block;font-size:14px;padding:10px;text-indent:0}.w-e-text-container [data-slate-editor] .w-e-image-container{display:inline-block;margin:0 3px}.w-e-text-container [data-slate-editor] .w-e-image-container:hover{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-container [data-slate-editor] .w-e-selected-image-container{overflow:hidden;position:relative}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .w-e-image-dragger{background-color:var(--w-e-textarea-handler-bg-color);height:7px;position:absolute;width:7px}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-top{cursor:nwse-resize;left:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-top{cursor:nesw-resize;right:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-bottom{bottom:0;cursor:nesw-resize;left:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-bottom{bottom:0;cursor:nwse-resize;right:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container:hover,.w-e-text-container [contenteditable=false] .w-e-image-container:hover{box-shadow:none}.w-e-text-container [data-slate-editor] .table-container{border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin-top:10px;overflow-x:auto;padding:10px;width:100%}.w-e-text-container [data-slate-editor] table{border-collapse:collapse}.w-e-text-container [data-slate-editor] table td,.w-e-text-container [data-slate-editor] table th{border:1px solid var(--w-e-textarea-border-color);line-height:1.5;min-width:30px;padding:3px 5px;text-align:left}.w-e-text-container [data-slate-editor] table th{background-color:var(--w-e-textarea-slight-bg-color);font-weight:700;text-align:center}.w-e-panel-content-table{background-color:var(--w-e-toolbar-bg-color)}.w-e-panel-content-table table{border-collapse:collapse}.w-e-panel-content-table td{border:1px solid var(--w-e-toolbar-border-color);cursor:pointer;height:15px;padding:3px 5px;width:20px}.w-e-panel-content-table td.active{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-textarea-video-container{background-image:linear-gradient(45deg,#eee 25%,transparent 0,transparent 75%,#eee 0,#eee),linear-gradient(45deg,#eee 25%,#fff 0,#fff 75%,#eee 0,#eee);background-position:0 0,10px 10px;background-size:20px 20px;border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin:10px auto 0;padding:10px 0;text-align:center}.w-e-text-container [data-slate-editor] pre>code{word-wrap:normal;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;-webkit-hyphens:none;hyphens:none;line-height:1.5;margin:.5em 0;overflow:auto;padding:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}.w-e-text-container [data-slate-editor] pre>code .token.cdata,.w-e-text-container [data-slate-editor] pre>code .token.comment,.w-e-text-container [data-slate-editor] pre>code .token.doctype,.w-e-text-container [data-slate-editor] pre>code .token.prolog{color:#708090}.w-e-text-container [data-slate-editor] pre>code .token.punctuation{color:#999}.w-e-text-container [data-slate-editor] pre>code .token.namespace{opacity:.7}.w-e-text-container [data-slate-editor] pre>code .token.boolean,.w-e-text-container [data-slate-editor] pre>code .token.constant,.w-e-text-container [data-slate-editor] pre>code .token.deleted,.w-e-text-container [data-slate-editor] pre>code .token.number,.w-e-text-container [data-slate-editor] pre>code .token.property,.w-e-text-container [data-slate-editor] pre>code .token.symbol,.w-e-text-container [data-slate-editor] pre>code .token.tag{color:#905}.w-e-text-container [data-slate-editor] pre>code .token.attr-name,.w-e-text-container [data-slate-editor] pre>code .token.builtin,.w-e-text-container [data-slate-editor] pre>code .token.char,.w-e-text-container [data-slate-editor] pre>code .token.inserted,.w-e-text-container [data-slate-editor] pre>code .token.selector,.w-e-text-container [data-slate-editor] pre>code .token.string{color:#690}.w-e-text-container [data-slate-editor] pre>code .language-css .token.string,.w-e-text-container [data-slate-editor] pre>code .style .token.string,.w-e-text-container [data-slate-editor] pre>code .token.entity,.w-e-text-container [data-slate-editor] pre>code .token.operator,.w-e-text-container [data-slate-editor] pre>code .token.url{color:#9a6e3a}.w-e-text-container [data-slate-editor] pre>code .token.atrule,.w-e-text-container [data-slate-editor] pre>code .token.attr-value,.w-e-text-container [data-slate-editor] pre>code .token.keyword{color:#07a}.w-e-text-container [data-slate-editor] pre>code .token.class-name,.w-e-text-container [data-slate-editor] pre>code .token.function{color:#dd4a68}.w-e-text-container [data-slate-editor] pre>code .token.important,.w-e-text-container [data-slate-editor] pre>code .token.regex,.w-e-text-container [data-slate-editor] pre>code .token.variable{color:#e90}.w-e-text-container [data-slate-editor] pre>code .token.bold,.w-e-text-container [data-slate-editor] pre>code .token.important{font-weight:700}.w-e-text-container [data-slate-editor] pre>code .token.italic{font-style:italic}.w-e-text-container [data-slate-editor] pre>code .token.entity{cursor:help}.writer-container[data-v-afccd996]{height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}.title-bar[data-v-afccd996]{height:50px;background:white;border-bottom:1px solid #e4e7ed;display:flex;align-items:center;padding:0 20px;flex-shrink:0}.title-left[data-v-afccd996]{display:flex;align-items:center;gap:15px}.novel-title[data-v-afccd996]{font-size:16px;font-weight:600;color:#303133}.tabs-bar[data-v-afccd996]{background:white;border-bottom:1px solid #e4e7ed;padding:0 20px;flex-shrink:0}.main-tabs[data-v-afccd996],.main-tabs .el-tabs__header[data-v-afccd996]{margin:0}.main-tabs .el-tabs__nav-wrap[data-v-afccd996]:after{display:none}.main-content[data-v-afccd996]{flex:1;display:flex;gap:16px;padding:16px;overflow:hidden}.left-panel[data-v-afccd996]{width:280px;flex-shrink:0}.editor-panel[data-v-afccd996]{flex:1;min-width:0}.card-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.editor-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;width:100%}.editor-header-left[data-v-afccd996]{flex:1;display:flex;flex-direction:column;gap:8px}.chapter-title[data-v-afccd996]{margin:0;font-size:18px;font-weight:600;color:#303133;line-height:1.4}.chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:12px;font-size:13px;color:#909399}.word-count[data-v-afccd996]{font-weight:500;color:#606266}.editor-header-right[data-v-afccd996]{flex-shrink:0;margin-left:20px}.saving-indicator[data-v-afccd996]{color:#409eff!important;animation:pulse-afccd996 1.5s infinite}@keyframes pulse-afccd996{0%,to{opacity:1}50%{opacity:.6}}.editor-wrapper[data-v-afccd996] .w-e-text-container{background-color:#fcfcfc;border:none}.editor-wrapper[data-v-afccd996] .w-e-text{font-family:Microsoft YaHei,PingFang SC,Hiragino Sans GB,Source Han Sans CN,WenQuanYi Micro Hei,sans-serif;font-size:16px;line-height:2;color:#2c3e50;padding:30px 40px;letter-spacing:.5px;text-align:justify}.editor-wrapper[data-v-afccd996] .w-e-text p{margin:0 0 1.2em;text-indent:2em;line-height:2}.editor-wrapper[data-v-afccd996] .w-e-text h1,.editor-wrapper[data-v-afccd996] .w-e-text h2,.editor-wrapper[data-v-afccd996] .w-e-text h3{margin:1.5em 0 1em;line-height:1.6;text-indent:0}.editor-wrapper[data-v-afccd996] .w-e-text h1{font-size:24px;font-weight:600}.editor-wrapper[data-v-afccd996] .w-e-text h2{font-size:20px;font-weight:600}.editor-wrapper[data-v-afccd996] .w-e-text h3{font-size:18px;font-weight:600}.chapters-list[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.chapter-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.chapter-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.chapter-item.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.chapter-info[data-v-afccd996]{flex:1}.chapter-info h4[data-v-afccd996]{margin:0 0 4px;font-size:14px;color:#303133}.chapter-info p[data-v-afccd996]{margin:0 0 4px;font-size:13px;color:#606266;line-height:1.4}.chapter-meta[data-v-afccd996]{font-size:12px;color:#909399}.chapter-actions[data-v-afccd996]{display:flex;gap:4px}.empty-chapters[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.editor-container[data-v-afccd996]{height:calc(100vh - 300px);border:1px solid #e4e7ed;border-radius:6px;overflow:hidden}.editor-wrapper[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.preview-container[data-v-afccd996]{height:calc(100vh - 300px);border:1px solid #e4e7ed;border-radius:6px;overflow-y:auto;padding:20px;background:white}.preview-content[data-v-afccd996]{line-height:1.8;color:#303133}.chapter-generate-content[data-v-afccd996]{padding:0}.generate-config-section[data-v-afccd996]{margin-bottom:16px}.config-card-modern[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.config-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.config-left[data-v-afccd996]{display:flex;align-items:center;gap:12px}.config-title[data-v-afccd996]{font-weight:600;color:#303133}.config-item[data-v-afccd996]{margin-bottom:0}.config-item .el-form-item__label[data-v-afccd996]{font-size:12px;color:#606266;font-weight:500}.checkbox-group[data-v-afccd996]{display:flex;gap:8px;flex-wrap:wrap}.checkbox-group-horizontal[data-v-afccd996]{display:flex;gap:24px;align-items:center;flex-wrap:wrap}.section-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title[data-v-afccd996]{font-size:16px;font-weight:600;color:#303133;margin:0}.materials-tabs[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.materials-tabs .el-tabs__header[data-v-afccd996]{margin:0;background-color:#f8f9fa}.materials-tabs .el-tabs__nav-wrap[data-v-afccd996]:after{display:none}.tab-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#fafbfc;border-bottom:1px solid #e4e7ed;min-height:48px;flex-wrap:nowrap}.tab-count[data-v-afccd996]{font-size:12px;color:#606266}.materials-grid[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;padding:16px;max-height:300px;overflow-y:auto}.material-card[data-v-afccd996]{border:2px solid #e4e7ed;border-radius:6px;padding:12px;cursor:pointer;transition:all .2s;background-color:#fff;position:relative}.material-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff;transform:translateY(-1px);box-shadow:0 2px 8px #409eff1a}.material-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.material-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.material-name[data-v-afccd996]{font-size:14px;font-weight:600;color:#303133;line-height:1.2}.material-desc[data-v-afccd996]{font-size:12px;color:#606266;line-height:1.4;margin:0 0 8px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.material-tags[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:4px}.empty-materials[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.category-selection-modern[data-v-afccd996]{margin-bottom:16px}.category-header[data-v-afccd996]{font-size:14px;font-weight:600;color:#303133;margin-bottom:12px}.category-grid[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.category-card[data-v-afccd996]{display:flex;flex-direction:column;align-items:center;padding:12px 8px;border:2px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .2s;background-color:#fff}.category-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.category-card.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;color:#409eff}.category-icon[data-v-afccd996]{font-size:20px;margin-bottom:4px}.category-name[data-v-afccd996]{font-size:12px;font-weight:500;text-align:center}.prompt-selection-modern[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.prompt-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.prompt-list-modern[data-v-afccd996]{max-height:250px;overflow-y:auto;padding:8px}.prompt-item-modern[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .2s;background-color:#fff}.prompt-item-modern[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-item-modern.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.prompt-content[data-v-afccd996]{flex:1}.prompt-title[data-v-afccd996]{font-size:14px;font-weight:600;color:#303133;margin:0 0 4px}.prompt-desc[data-v-afccd996]{font-size:12px;color:#606266;margin:0 0 8px;line-height:1.4}.prompt-meta[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.prompt-actions[data-v-afccd996]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.variables-section[data-v-afccd996]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.variables-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.variables-form[data-v-afccd996]{padding:16px}.variable-item[data-v-afccd996]{margin-bottom:16px}.variable-label[data-v-afccd996]{display:block;font-size:12px;color:#606266;font-weight:500;margin-bottom:4px}.preview-section[data-v-afccd996]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.preview-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.preview-actions[data-v-afccd996]{display:flex;gap:8px}.preview-content[data-v-afccd996]{padding:16px}.preview-textarea[data-v-afccd996]{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5}.generate-actions[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding:16px 0 0;border-top:1px solid #e4e7ed}.action-info[data-v-afccd996]{display:flex;align-items:center;gap:8px;font-size:13px;color:#606266}.action-buttons[data-v-afccd996]{display:flex;gap:12px}.optimize-dialog-content[data-v-afccd996]{padding:0}.current-text-section[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.text-info[data-v-afccd996]{display:flex;gap:16px;font-size:12px;color:#606266}.current-text-content[data-v-afccd996]{padding:16px}.current-text-area[data-v-afccd996]{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5}.text-actions[data-v-afccd996]{padding:12px 16px;background-color:#f8f9fa;border-top:1px solid #e4e7ed;display:flex;gap:8px}.optimize-prompt-section[data-v-afccd996]{display:flex;flex-direction:column;gap:16px}.optimize-type-selection[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.type-header[data-v-afccd996]{padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.type-options[data-v-afccd996]{padding:16px}.optimize-prompt-selection[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.prompt-list-optimize[data-v-afccd996]{max-height:200px;overflow-y:auto;padding:8px}.prompt-item-optimize[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:10px;border:1px solid #e4e7ed;border-radius:4px;margin-bottom:6px;cursor:pointer;transition:all .2s;background-color:#fff}.prompt-item-optimize[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-item-optimize.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.optimize-variables[data-v-afccd996],.optimize-preview[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.optimize-actions[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding:16px 0 0;border-top:1px solid #e4e7ed}.ai-tools[data-v-afccd996]{padding:10px}.ai-section[data-v-afccd996]{margin-bottom:10px}.form-item-with-ai[data-v-afccd996]{display:flex;align-items:center}.form-item-with-ai .el-input[data-v-afccd996]{flex:1}.form-item-with-ai .el-button[data-v-afccd996]{margin-top:8px}.dialogue[data-v-afccd996]{font-style:italic;color:#2c3e50;padding-left:16px;border-left:3px solid #409eff;margin:8px 0}.characters-list[data-v-afccd996]{max-height:calc(100vh - 260px);overflow-y:auto}.character-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.character-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.character-item.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.character-avatar[data-v-afccd996]{width:40px;height:40px;border-radius:50%;overflow:hidden;margin-right:10px}.character-avatar img[data-v-afccd996]{width:100%;height:100%;object-fit:cover}.default-avatar[data-v-afccd996]{width:100%;height:100%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}.character-content[data-v-afccd996]{display:flex;align-items:center;flex:1;cursor:pointer}.character-info[data-v-afccd996]{flex:1}.character-info h4[data-v-afccd996]{margin:0 0 4px;font-size:14px;color:#303133}.character-info p[data-v-afccd996]{margin:0 0 4px;font-size:13px;color:#606266;line-height:1.4}.character-meta[data-v-afccd996]{display:flex;align-items:center;gap:6px;margin:4px 0;flex-wrap:wrap}.character-meta .age-text[data-v-afccd996]{font-size:12px;color:#909399;margin-left:4px}.character-desc[data-v-afccd996]{font-size:12px;color:#666;margin:4px 0;line-height:1.3;max-height:2.6em;overflow:hidden;text-overflow:ellipsis}.character-desc-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.character-desc-truncated[data-v-afccd996]:hover{color:#303133}.character-tags[data-v-afccd996]{margin-top:4px}.character-tags .el-tag[data-v-afccd996]{margin-right:4px;margin-bottom:4px}.character-item .character-actions[data-v-afccd996]{flex-shrink:0;margin-left:8px}.chapter-desc[data-v-afccd996]{font-size:12px;color:#909399;margin-top:4px;line-height:1.3}.chapter-desc-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.chapter-desc-truncated[data-v-afccd996]:hover{color:#606266}.chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;margin-top:4px}.panel-content[data-v-afccd996]{height:calc(100vh - 150px);overflow:hidden}.corpus-item[data-v-afccd996]{flex-direction:column;align-items:flex-start}.event-item[data-v-afccd996]{align-items:flex-start}.event-time[data-v-afccd996]{margin-left:8px;color:#c0c4cc}.empty-state[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.worldview-list[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.worldview-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.worldview-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.worldview-content[data-v-afccd996]{flex:1;cursor:pointer}.worldview-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.worldview-header h4[data-v-afccd996]{margin:0 8px 0 0;font-size:14px;color:#303133;flex:1}.worldview-description[data-v-afccd996]{margin:6px 0;font-size:13px;color:#606266;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.worldview-description-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.worldview-description-truncated[data-v-afccd996]:hover{color:#303133}.worldview-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;margin-top:6px}.worldview-meta .create-time[data-v-afccd996]{font-size:12px;color:#909399}.worldview-meta .ai-generated[data-v-afccd996]{font-size:11px;color:#67c23a;background-color:#f0f9ff;padding:2px 6px;border-radius:10px;border:1px solid #b3d8ff}.worldview-actions[data-v-afccd996]{flex-shrink:0;margin-left:8px}.corpus-list[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.corpus-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:flex-start}.corpus-content[data-v-afccd996]{flex:1;text-align:left}.corpus-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.corpus-header[data-v-afccd996],.worldview-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.corpus-header h4[data-v-afccd996]{margin:0;font-size:14px;color:#303133}.corpus-preview[data-v-afccd996]{margin:8px 0;font-size:13px;color:#606266}.corpus-preview-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.corpus-preview-truncated[data-v-afccd996]:hover{color:#303133}.corpus-actions[data-v-afccd996]{display:flex;gap:4px}.events-timeline[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.event-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.event-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.event-marker[data-v-afccd996]{width:10px;height:10px;border-radius:50%;background-color:#409eff;margin-right:10px}.event-content[data-v-afccd996]{flex:1}.event-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.event-content h4[data-v-afccd996]{margin:0;font-size:14px;color:#303133}.event-actions[data-v-afccd996]{opacity:0;transition:opacity .3s}.event-item:hover .event-actions[data-v-afccd996]{opacity:1}.chapter-status-dropdown .el-select-dropdown__item[data-v-afccd996]{padding:6px 16px;font-size:12px}.chapter-status-dropdown .el-select-dropdown__item.selected[data-v-afccd996]{font-weight:600}.chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.chapter-meta .el-select[data-v-afccd996]{min-width:70px}.chapter-meta .el-select .el-input__wrapper[data-v-afccd996]{padding:0 8px;height:24px;font-size:12px}.new-optimize-container[data-v-afccd996]{max-height:70vh;overflow-y:auto}.optimize-config-card[data-v-afccd996],.optimize-result-card[data-v-afccd996]{height:600px;display:flex;flex-direction:column}.optimize-config-card .el-card__body[data-v-afccd996],.optimize-result-card .el-card__body[data-v-afccd996]{flex:1;overflow-y:auto}.prompt-selection[data-v-afccd996]{margin-bottom:20px}.prompt-selection h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px;font-weight:600}.prompt-list[data-v-afccd996]{display:flex;flex-direction:column;gap:8px}.prompt-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .3s}.prompt-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-item.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.prompt-title[data-v-afccd996]{font-size:13px;font-weight:600;color:#303133;margin-bottom:4px}.prompt-desc[data-v-afccd996]{font-size:11px;color:#606266;line-height:1.4}.custom-prompt[data-v-afccd996]{margin-bottom:20px}.custom-prompt h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px;font-weight:600}.original-content-preview[data-v-afccd996]{margin-bottom:20px}.original-content-preview h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px;font-weight:600}.content-preview[data-v-afccd996]{padding:12px;background-color:#f8f9fa;border-radius:6px;font-size:12px;color:#606266;line-height:1.5;max-height:120px;overflow-y:auto;word-wrap:break-word}.content-stats[data-v-afccd996]{margin-top:8px;font-size:11px;color:#909399}.streaming-area[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.streaming-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e4e7ed}.streaming-status[data-v-afccd996]{color:#409eff;font-size:14px;font-weight:500}.streaming-content-box[data-v-afccd996]{flex:1;background-color:#f8f9fa;border-radius:6px;padding:16px;overflow-y:auto;min-height:300px}.streaming-text[data-v-afccd996]{font-size:14px;line-height:1.8;color:#303133;white-space:pre-wrap;word-wrap:break-word}.result-area[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.result-content[data-v-afccd996]{flex:1;background-color:#fff;border:1px solid #e4e7ed;border-radius:6px;padding:16px;font-size:14px;line-height:1.8;color:#303133;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word;min-height:300px}.result-stats[data-v-afccd996]{margin-top:12px;display:flex;justify-content:space-between;font-size:12px;color:#909399}.empty-result[data-v-afccd996]{height:100%;display:flex;align-items:center;justify-content:center}.dialog-footer[data-v-afccd996]:has(.action-info){justify-content:space-between;align-items:center;padding:16px 0 0;border-top:1px solid #e4e7ed}.dialog-footer .action-info[data-v-afccd996]{display:flex;align-items:center;gap:8px;font-size:13px;color:#606266}.dialog-footer .action-buttons[data-v-afccd996]{display:flex;gap:12px}.streaming-content-area[data-v-afccd996]{margin-bottom:16px}.streaming-card[data-v-afccd996]{border:1px solid #67c23a;background-color:#f0f9ff}.streaming-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;font-weight:500;color:#67c23a}.streaming-content[data-v-afccd996]{max-height:300px;overflow-y:auto;padding:12px;background-color:#fff;border-radius:6px;border:1px solid #e4e7ed}.streaming-text[data-v-afccd996]{line-height:1.8;font-size:14px;color:#303133;white-space:pre-wrap;word-break:break-all}.streaming-text-plain[data-v-afccd996]{margin:0;line-height:1.6;font-size:13px;color:#606266;font-family:Courier New,monospace;white-space:pre-wrap;word-break:break-all}.streaming-content[data-v-afccd996]::-webkit-scrollbar{width:6px}.streaming-content[data-v-afccd996]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.streaming-content[data-v-afccd996]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.streaming-content[data-v-afccd996]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.section-desc[data-v-afccd996]{margin:0 0 12px;font-size:13px;color:#909399;line-height:1.4}.ai-button-group[data-v-afccd996]{display:flex;align-items:center}.prompt-dialog-content[data-v-afccd996]{max-height:600px;overflow-y:auto}.prompt-list h4[data-v-afccd996]{margin:0 0 16px;color:#303133;font-size:16px}.prompt-cards[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:20px}.prompt-card[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;padding:12px;cursor:pointer;transition:all .3s;background-color:#fff}.prompt-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff;transform:translateY(-2px);box-shadow:0 4px 8px #409eff1a}.prompt-card.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.prompt-card-header h5[data-v-afccd996]{margin:0 0 8px;font-size:14px;color:#303133;font-weight:600}.prompt-card-description p[data-v-afccd996]{margin:0 0 8px;font-size:12px;color:#606266;line-height:1.4}.prompt-card-tags[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:4px}.prompt-card-tags .el-tag[data-v-afccd996]{font-size:11px;height:20px;line-height:18px}.empty-prompts[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.prompt-variables[data-v-afccd996]{margin:20px 0;padding:16px;background-color:#f9f9f9;border-radius:6px}.prompt-variables h4[data-v-afccd996]{margin:0 0 16px;color:#303133;font-size:14px}.final-prompt[data-v-afccd996]{margin-top:20px}.final-prompt h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px}.chapter-generate-content[data-v-afccd996]{max-height:70vh;overflow:hidden}.materials-section[data-v-afccd996],.prompt-section[data-v-afccd996]{height:500px;overflow-y:auto}.materials-section h4[data-v-afccd996],.prompt-section h4[data-v-afccd996]{margin:0 0 16px;color:#303133;font-size:16px;font-weight:600}.config-card[data-v-afccd996],.materials-card[data-v-afccd996],.prompt-selection-card[data-v-afccd996],.variables-card[data-v-afccd996],.preview-card[data-v-afccd996]{margin-bottom:16px}.materials-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.materials-count[data-v-afccd996]{font-size:12px;color:#409eff;background-color:#ecf5ff;padding:2px 8px;border-radius:12px;font-weight:600;border:1px solid #b3d8ff}.materials-list[data-v-afccd996]{max-height:200px;overflow-y:auto}.material-item[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:10px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;background-color:#fff}.material-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.material-item.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.material-info[data-v-afccd996]{flex:1}.material-info h5[data-v-afccd996]{margin:0 0 4px;font-size:14px;color:#303133;font-weight:600}.material-info p[data-v-afccd996]{margin:0;font-size:12px;color:#606266;line-height:1.4}.material-tags[data-v-afccd996],.material-type[data-v-afccd996]{display:flex;gap:4px}.category-selection-card[data-v-afccd996]{margin-bottom:16px}.category-tabs[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:8px}.category-tab[data-v-afccd996]{display:flex;flex-direction:column;align-items:center;padding:8px 12px;border:1px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .3s;background-color:#fff;min-width:70px;text-align:center}.category-tab[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.category-tab.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.category-icon[data-v-afccd996]{font-size:16px;margin-bottom:4px}.category-name[data-v-afccd996]{font-size:11px;color:#606266;line-height:1.2}.category-tab.active .category-name[data-v-afccd996]{color:#409eff;font-weight:600}.prompt-cards-grid[data-v-afccd996]{display:grid;grid-template-columns:1fr;gap:8px;max-height:250px;overflow-y:auto}.prompt-card-small[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:6px;padding:10px;cursor:pointer;transition:all .3s;background-color:#fff}.prompt-card-small[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-card-small.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.prompt-card-small h5[data-v-afccd996]{margin:0 0 6px;font-size:13px;color:#303133;font-weight:600}.prompt-card-small p[data-v-afccd996]{margin:0 0 6px;font-size:11px;color:#606266;line-height:1.3}.prompt-tags[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:4px}.prompt-tags .el-tag[data-v-afccd996]{font-size:10px;height:18px;line-height:16px}.variables-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.dialog-footer[data-v-afccd996]{display:flex;justify-content:flex-end;gap:12px}.context-variable-container[data-v-afccd996]{display:flex;flex-direction:column;gap:8px}.context-actions[data-v-afccd996]{display:flex;gap:8px;justify-content:flex-end}.context-chapter-option[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.context-chapter-option .chapter-title[data-v-afccd996]{font-size:13px;color:#303133;font-weight:500;flex:1}.context-chapter-option .chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px}.context-chapter-option .word-count[data-v-afccd996]{font-size:11px;color:#909399}.context-tab-actions[data-v-afccd996]{display:flex;gap:8px}.batch-generate-content[data-v-afccd996]{max-height:70vh;overflow-y:auto}.config-section[data-v-afccd996],.streaming-section[data-v-afccd996],.results-section[data-v-afccd996]{margin-bottom:16px}.character-type-options[data-v-afccd996]{display:flex;gap:16px}.streaming-content-container[data-v-afccd996]{max-height:300px;overflow-y:auto;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafafa}.streaming-content[data-v-afccd996]{padding:16px;font-family:Courier New,monospace;font-size:14px;line-height:1.6;color:#303133;white-space:pre-wrap}.results-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.result-actions[data-v-afccd996]{display:flex;gap:8px}.generated-characters-grid[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:16px;max-height:400px;overflow-y:auto}.generated-character-card[data-v-afccd996]{border:2px solid #e4e7ed;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s;background-color:#fff}.generated-character-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.generated-character-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.character-header[data-v-afccd996]{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}.character-avatar-preview[data-v-afccd996]{flex-shrink:0}.character-avatar-preview .default-avatar[data-v-afccd996]{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}.character-basic-info[data-v-afccd996]{flex:1}.character-basic-info h4[data-v-afccd996]{margin:0 0 8px;font-size:16px;color:#303133;font-weight:600}.character-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.age-text[data-v-afccd996]{font-size:12px;color:#909399}.selection-indicator[data-v-afccd996]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.selected-icon[data-v-afccd996]{color:#409eff;font-size:18px}.character-details[data-v-afccd996]{border-top:1px solid #f0f0f0;padding-top:12px}.detail-item[data-v-afccd996]{margin-bottom:8px}.detail-item label[data-v-afccd996]{font-size:12px;color:#909399;font-weight:600;margin-bottom:4px;display:block}.detail-item p[data-v-afccd996]{margin:0;font-size:13px;color:#606266;line-height:1.4;max-height:40px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.character-tags-preview[data-v-afccd996]{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px}.character-tags-preview .el-tag[data-v-afccd996]{font-size:10px;height:18px;line-height:16px}.character-actions[data-v-afccd996],.world-actions[data-v-afccd996]{display:flex;gap:8px}.world-generate-content[data-v-afccd996]{max-height:70vh;overflow-y:auto}.world-type-options[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:8px;align-items:center}.world-type-options .el-checkbox[data-v-afccd996]{margin:0;white-space:nowrap;min-width:fit-content}.generated-settings-list[data-v-afccd996]{display:flex;flex-direction:column;gap:12px;max-height:400px;overflow-y:auto}.generated-setting-card[data-v-afccd996]{border:2px solid #e4e7ed;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s;background-color:#fff}.generated-setting-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.generated-setting-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.setting-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.setting-basic-info[data-v-afccd996]{flex:1}.setting-basic-info h4[data-v-afccd996]{margin:0 0 8px;font-size:16px;color:#303133;font-weight:600}.setting-content p[data-v-afccd996]{margin:0;font-size:14px;color:#606266;line-height:1.6;max-height:80px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}.streaming-status-card[data-v-afccd996]{margin-top:16px;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafafa}.streaming-header[data-v-afccd996]{padding:12px 16px;background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;border-radius:6px 6px 0 0}.streaming-title[data-v-afccd996]{font-weight:600;color:#303133}.streaming-content-display[data-v-afccd996]{padding:16px;max-height:200px;overflow-y:auto;font-family:Courier New,monospace;font-size:13px;line-height:1.6;color:#303133;white-space:pre-wrap}.event-content p[data-v-afccd996]{margin:0 0 4px;font-size:13px;color:#606266;line-height:1.4}.event-desc-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.event-desc-truncated[data-v-afccd996]:hover{color:#303133}.event-meta[data-v-afccd996]{font-size:12px;color:#909399}.empty-editor[data-v-afccd996]{text-align:center;padding:80px 20px;color:#909399}.empty-icon[data-v-afccd996]{font-size:48px;margin-bottom:16px;opacity:.5}.selected-prompt-info[data-v-afccd996]{color:#409eff;font-size:12px;margin-left:5px}.ai-single-chapter-content[data-v-afccd996],.ai-batch-chapter-content[data-v-afccd996],.ai-optimize-content[data-v-afccd996]{padding:10px 0}.optimize-input-card[data-v-afccd996],.optimize-result-card[data-v-afccd996]{height:100%}.optimized-content[data-v-afccd996],.empty-result[data-v-afccd996]{padding:20px;text-align:center;color:#909399}.optimized-content .el-textarea[data-v-afccd996]{height:100%}.streaming-content-area[data-v-afccd996]{margin-top:20px;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafafa}.streaming-card[data-v-afccd996]{margin:0;border:none;background:transparent}.streaming-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;border-radius:6px 6px 0 0}.streaming-content[data-v-afccd996]{padding:16px;max-height:300px;overflow-y:auto}.streaming-text-plain[data-v-afccd996]{font-family:Courier New,monospace;font-size:13px;line-height:1.6;color:#303133;white-space:pre-wrap;margin:0}.streaming-text[data-v-afccd996]{font-size:14px;line-height:1.6;color:#303133;background-color:#fff;border:1px solid #e4e7ed;border-radius:6px;padding:12px;font-family:Consolas,Monaco,Courier New,monospace;white-space:pre-wrap;word-wrap:break-word;min-height:100px}.streaming-text[data-v-afccd996]:after{content:"▋";color:#409eff;animation:blink-afccd996 1s infinite}@keyframes blink-afccd996{0%,50%{opacity:1}51%,to{opacity:0}}.editor-panel .streaming-content-area[data-v-afccd996]{margin:16px 0;border:2px solid #409eff;border-radius:8px;background:linear-gradient(135deg,#f0f8ff 0%,#e6f3ff 100%)}.editor-panel .streaming-card[data-v-afccd996]{background:transparent;border:none}.editor-panel .streaming-header .streaming-title[data-v-afccd996]{color:#409eff;font-weight:600}.new-continue-container[data-v-afccd996]{height:600px;max-height:80vh}.continue-config-card[data-v-afccd996],.continue-result-card[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.continue-config-card .el-card__body[data-v-afccd996],.continue-result-card .el-card__body[data-v-afccd996]{flex:1;overflow-y:auto;padding:16px}.continue-direction[data-v-afccd996]{margin-bottom:20px}.continue-direction h4[data-v-afccd996]{margin:0 0 12px;font-size:14px;color:var(--el-text-color-primary)}.continue-word-count[data-v-afccd996]{margin-bottom:20px}.continue-word-count h4[data-v-afccd996]{margin:0 0 12px;font-size:14px;color:var(--el-text-color-primary)}.word-count-tips[data-v-afccd996]{margin-top:8px;font-size:12px;color:var(--el-text-color-secondary)}.current-content-preview[data-v-afccd996]{margin-bottom:20px}.current-content-preview h4[data-v-afccd996]{margin:0 0 12px;font-size:14px;color:var(--el-text-color-primary)}.content-summary[data-v-afccd996]{padding:8px 12px;background-color:var(--el-bg-color-page);border:1px solid var(--el-border-color-light);border-radius:6px;font-size:13px;line-height:1.5;color:var(--el-text-color-regular);max-height:80px;overflow-y:auto}.streaming-content-box[data-v-afccd996],.result-content[data-v-afccd996]{max-height:400px;overflow-y:auto}.empty-result[data-v-afccd996]{min-height:300px}.materials-list[data-v-afccd996]{max-height:400px;overflow-y:auto}.chapter-material-card[data-v-afccd996]{padding:14px;border:1px solid #e1e8ed;border-radius:8px;margin-bottom:10px;cursor:pointer;transition:all .2s ease;background:#fafbfc;min-height:80px;position:relative}.chapter-material-card[data-v-afccd996]:hover{border-color:#409eff;box-shadow:0 2px 8px #409eff1a}.chapter-material-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#e6f4ff}.chapter-material-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px;min-height:32px;gap:8px}.chapter-material-name[data-v-afccd996]{font-weight:500;color:#303133;font-size:14px;flex:1;margin-right:8px;line-height:1.4;word-wrap:break-word;overflow-wrap:break-word;min-width:0}.chapter-material-tags[data-v-afccd996]{display:flex;gap:4px;flex-shrink:0;flex-wrap:wrap;align-items:flex-start}.chapter-material-desc[data-v-afccd996]{color:#666;font-size:12px;line-height:1.4;margin:4px 0;word-wrap:break-word;overflow-wrap:break-word}.chapter-material-content[data-v-afccd996]{margin-top:8px;padding-top:8px;border-top:1px solid #eee}.content-preview[data-v-afccd996]{color:#999;font-size:11px;line-height:1.3;font-style:italic;word-wrap:break-word;overflow-wrap:break-word;display:block;margin-top:4px}.custom-prompt-status[data-v-afccd996]{margin:16px 0}.custom-prompt-status .el-alert[data-v-afccd996]{border-radius:8px}.prompt-preview[data-v-afccd996]{margin-top:8px;font-size:13px;color:#67c23a;line-height:1.4;opacity:.9}.prompt-content-collapse[data-v-afccd996]{margin-top:12px;border:1px solid #e1f5fe;border-radius:6px;background-color:#f8fdff}.prompt-content-preview[data-v-afccd996]{padding:0}.prompt-content-header[data-v-afccd996]{margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #e8f4fd}.content-label[data-v-afccd996]{font-size:13px;font-weight:600;color:#409eff}.prompt-content-text[data-v-afccd996]{padding:12px;background-color:#fafcff;border:1px solid #e8f4fd;border-radius:4px;font-family:Courier New,Consolas,monospace;font-size:12px;line-height:1.6;color:#606266;white-space:pre-wrap;word-wrap:break-word;max-height:200px;overflow-y:auto;margin-bottom:16px}.final-prompt-section[data-v-afccd996]{margin-top:16px;padding-top:16px;border-top:1px solid #e8f4fd}.final-prompt[data-v-afccd996]{background-color:#f0f9ff;border-color:#b3e5fc;color:#01579b}.writing-tools[data-v-19a36dd6]{display:flex;flex-direction:column;gap:16px}.tool-card[data-v-19a36dd6]{margin-bottom:16px}.card-header[data-v-19a36dd6]{display:flex;justify-content:space-between;align-items:center}.header-buttons[data-v-19a36dd6]{display:flex;gap:8px}.characters-list[data-v-19a36dd6],.world-settings[data-v-19a36dd6],.inspirations-list[data-v-19a36dd6]{max-height:300px;overflow-y:auto}.character-item[data-v-19a36dd6],.setting-item[data-v-19a36dd6],.inspiration-item[data-v-19a36dd6]{display:flex;justify-content:space-between;align-items:flex-start;padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px}.character-info[data-v-19a36dd6],.setting-info[data-v-19a36dd6],.inspiration-content[data-v-19a36dd6]{flex:1;margin-right:12px}.character-info h4[data-v-19a36dd6],.setting-info h4[data-v-19a36dd6]{margin:0 0 8px;color:#303133}.character-info p[data-v-19a36dd6],.setting-info p[data-v-19a36dd6]{margin:0 0 8px;color:#606266;line-height:1.4}.character-tags[data-v-19a36dd6]{display:flex;gap:4px;flex-wrap:wrap}.progress-info[data-v-19a36dd6]{display:flex;flex-direction:column;gap:12px}.progress-item[data-v-19a36dd6]{display:flex;align-items:center;gap:8px}.progress-item span[data-v-19a36dd6]{min-width:100px;color:#606266}.inspiration-content p[data-v-19a36dd6]{margin:0 0 4px;color:#303133;line-height:1.4}.inspiration-content small[data-v-19a36dd6]{color:#909399}.empty-state[data-v-19a36dd6]{text-align:center;color:#909399;padding:40px 20px;font-style:italic}.article-stats[data-v-b4d8fda8]{max-height:70vh;overflow-y:auto}.no-content[data-v-b4d8fda8]{text-align:center;padding:40px;color:#909399}.empty-icon[data-v-b4d8fda8]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-b4d8fda8]{font-size:12px;margin-top:8px}.stats-content[data-v-b4d8fda8]{padding:0}.stats-section[data-v-b4d8fda8]{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #f0f0f0}.stats-section[data-v-b4d8fda8]:last-child{border-bottom:none;margin-bottom:0}.section-title[data-v-b4d8fda8]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.stat-card[data-v-b4d8fda8]{text-align:center;padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.stat-number[data-v-b4d8fda8]{font-size:24px;font-weight:700;color:#409eff;margin-bottom:4px}.stat-label[data-v-b4d8fda8]{font-size:12px;color:#909399}.sentiment-analysis[data-v-b4d8fda8]{space-y:16px}.sentiment-item[data-v-b4d8fda8]{display:flex;align-items:center;margin-bottom:16px}.sentiment-label[data-v-b4d8fda8]{margin-right:12px;font-weight:500}.sentiment-chart[data-v-b4d8fda8]{space-y:12px}.chart-item[data-v-b4d8fda8]{display:flex;align-items:center;margin-bottom:12px}.chart-label[data-v-b4d8fda8]{width:80px;font-size:14px;color:#606266}.chart-value[data-v-b4d8fda8]{margin-left:12px;font-size:14px;font-weight:500;color:#303133}.tags-container[data-v-b4d8fda8]{display:flex;flex-wrap:wrap;gap:8px}.tag-item[data-v-b4d8fda8]{margin:0}.category-item[data-v-b4d8fda8],.score-item[data-v-b4d8fda8]{display:flex;align-items:center;margin-bottom:12px}.category-label[data-v-b4d8fda8],.score-label[data-v-b4d8fda8]{margin-right:12px;font-weight:500}.score-display[data-v-b4d8fda8]{display:flex;align-items:center;gap:8px}.score-number[data-v-b4d8fda8]{font-size:14px;color:#909399}.suggestions[data-v-b4d8fda8]{space-y:16px}.suggestion-item[data-v-b4d8fda8]{display:flex;align-items:flex-start;margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:8px;border-left:4px solid #409eff}.suggestion-icon[data-v-b4d8fda8]{margin-right:12px;margin-top:2px;color:#409eff}.suggestion-content[data-v-b4d8fda8]{flex:1}.suggestion-title[data-v-b4d8fda8]{font-weight:500;margin-bottom:4px;color:#303133}.suggestion-text[data-v-b4d8fda8]{font-size:14px;color:#606266;line-height:1.5}.export-section[data-v-b4d8fda8]{text-align:center;padding-top:20px;border-top:1px solid #f0f0f0}.ai-analysis[data-v-b4d8fda8]{background:#f8f9fa;padding:16px;border-radius:8px;border-left:4px solid #409eff}.analysis-summary h4[data-v-b4d8fda8]{margin:0 0 8px;color:#303133;font-size:16px}.analysis-summary p[data-v-b4d8fda8]{margin:0;color:#606266;line-height:1.6}.analysis-section[data-v-b4d8fda8]{background:white;padding:12px;border-radius:6px;height:100%}.analysis-section h5[data-v-b4d8fda8]{margin:0 0 8px;color:#409eff;font-size:14px;font-weight:600}.analysis-section ul[data-v-b4d8fda8]{margin:0;padding-left:16px;color:#606266}.analysis-section li[data-v-b4d8fda8]{margin-bottom:4px;line-height:1.4}.mr-2[data-v-b4d8fda8]{margin-right:8px}[data-v-b4d8fda8] .el-progress-bar__outer{background-color:#f0f0f0}[data-v-b4d8fda8] .el-rate{display:flex;align-items:center}.corpus-manager[data-v-f543abf1]{max-height:70vh;overflow-y:auto}.add-corpus-section[data-v-f543abf1]{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #f0f0f0}.section-title[data-v-f543abf1]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.corpus-tabs[data-v-f543abf1]{margin-top:16px}.text-input-area[data-v-f543abf1]{padding:16px 0}.input-actions[data-v-f543abf1]{margin-top:12px;display:flex;gap:12px}.file-upload-area[data-v-f543abf1]{padding:16px 0}.uploaded-file[data-v-f543abf1]{margin-top:16px;padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.file-info[data-v-f543abf1]{display:flex;align-items:center;margin-bottom:12px}.file-icon[data-v-f543abf1]{margin-right:8px;color:#409eff}.file-name[data-v-f543abf1]{font-weight:500;margin-right:8px}.file-size[data-v-f543abf1]{color:#909399;font-size:12px}.file-actions[data-v-f543abf1]{display:flex;gap:8px}.list-header[data-v-f543abf1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.list-actions[data-v-f543abf1]{display:flex;align-items:center;gap:12px}.empty-corpus[data-v-f543abf1]{text-align:center;padding:40px;color:#909399}.empty-icon[data-v-f543abf1]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-f543abf1]{font-size:12px;margin-top:8px}.corpus-list[data-v-f543abf1]{space-y:12px}.corpus-item[data-v-f543abf1]{padding:16px;background:#fafafa;border-radius:8px;border:1px solid #e9ecef;margin-bottom:12px}.corpus-header[data-v-f543abf1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.corpus-meta[data-v-f543abf1]{display:flex;align-items:center;gap:12px;font-size:12px;color:#909399}.corpus-id[data-v-f543abf1]{font-weight:500;color:#409eff}.corpus-actions[data-v-f543abf1]{display:flex;gap:4px}.delete-btn[data-v-f543abf1],.delete-btn[data-v-f543abf1]:hover{color:#f56c6c}.corpus-content[data-v-f543abf1]{line-height:1.6;color:#303133}.content-preview[data-v-f543abf1]{white-space:pre-wrap;word-break:break-word}.expand-btn[data-v-f543abf1]{margin-top:8px}.pagination[data-v-f543abf1]{display:flex;justify-content:center;margin-top:20px}.full-content[data-v-f543abf1]{line-height:1.8;white-space:pre-wrap;word-break:break-word;max-height:400px;overflow-y:auto;padding:16px;background:#f8f9fa;border-radius:8px}[data-v-f543abf1] .el-upload-dragger{width:100%;height:120px}[data-v-f543abf1] .el-tabs__content{padding:0}.template-manager[data-v-97b66dfe]{max-height:70vh;overflow-y:auto}.add-template-section[data-v-97b66dfe]{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #f0f0f0}.section-title[data-v-97b66dfe]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.template-form[data-v-97b66dfe]{max-width:600px}.list-header[data-v-97b66dfe]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.list-actions[data-v-97b66dfe]{display:flex;align-items:center;gap:12px}.empty-templates[data-v-97b66dfe]{text-align:center;padding:40px;color:#909399}.empty-icon[data-v-97b66dfe]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-97b66dfe]{font-size:12px;margin-top:8px}.template-grid[data-v-97b66dfe]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.template-card[data-v-97b66dfe]{padding:16px;background:white;border-radius:8px;border:1px solid #e9ecef;transition:all .3s ease}.template-card[data-v-97b66dfe]:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.system-template[data-v-97b66dfe]{background:#f8f9fa}.template-header[data-v-97b66dfe]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.template-title[data-v-97b66dfe]{display:flex;align-items:center;gap:8px}.template-name[data-v-97b66dfe]{font-weight:600;font-size:16px;color:#303133}.template-actions[data-v-97b66dfe]{display:flex;gap:4px}.delete-btn[data-v-97b66dfe],.delete-btn[data-v-97b66dfe]:hover{color:#f56c6c}.template-description[data-v-97b66dfe]{color:#606266;margin-bottom:12px;line-height:1.5}.template-details[data-v-97b66dfe]{display:flex;gap:16px;margin-bottom:12px}.detail-item[data-v-97b66dfe]{font-size:12px}.detail-label[data-v-97b66dfe]{color:#909399;margin-right:4px}.detail-value[data-v-97b66dfe]{color:#303133;font-weight:500}.template-keywords[data-v-97b66dfe]{margin-bottom:12px}.keywords-label[data-v-97b66dfe]{font-size:12px;color:#909399;margin-bottom:6px}.keywords-list[data-v-97b66dfe]{display:flex;flex-wrap:wrap;gap:4px}.keyword-tag[data-v-97b66dfe]{margin:0}.template-prompt[data-v-97b66dfe]{margin-top:12px;padding-top:12px;border-top:1px solid #f0f0f0}.prompt-label[data-v-97b66dfe]{font-size:12px;color:#909399;margin-bottom:6px}.prompt-content[data-v-97b66dfe]{font-size:12px;color:#606266;line-height:1.4}[data-v-97b66dfe] .el-form-item{margin-bottom:18px}[data-v-97b66dfe] .el-form-item__label{font-weight:500}.summary-generator[data-v-778cce28]{width:100%}.card-header[data-v-778cce28]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.summary-content[data-v-778cce28]{min-height:200px}.source-info[data-v-778cce28]{margin-bottom:16px;padding:12px;background-color:#f8f9fa;border-radius:6px}.summary-settings[data-v-778cce28]{margin-bottom:20px;padding:16px;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafbfc}.setting-label[data-v-778cce28]{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:#606266}.summary-result[data-v-778cce28]{margin-top:20px}.summary-result h4[data-v-778cce28]{margin:0 0 12px;color:#303133;font-size:16px}.summary-text[data-v-778cce28]{padding:16px;background-color:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;line-height:1.6;color:#1e40af;white-space:pre-wrap;margin-bottom:12px}.summary-actions[data-v-778cce28]{display:flex;gap:8px;justify-content:flex-end}.empty-state[data-v-778cce28],.no-summary[data-v-778cce28]{padding:40px 20px;text-align:center}[data-v-778cce28] .el-empty__description{color:#909399}.chapter-manager[data-v-485ca3e0]{display:flex;gap:20px;height:100%}.chapter-list-section[data-v-485ca3e0]{flex:1;min-width:0}.chapter-detail-section[data-v-485ca3e0]{width:400px;flex-shrink:0}.section-header[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.header-actions[data-v-485ca3e0]{display:flex;gap:8px}.chapter-stats[data-v-485ca3e0]{margin-bottom:20px}.stat-item[data-v-485ca3e0]{text-align:center;padding:16px;background:#f8f9fa;border-radius:8px}.stat-number[data-v-485ca3e0]{font-size:24px;font-weight:700;color:#409eff;margin-bottom:4px}.stat-label[data-v-485ca3e0]{font-size:14px;color:#666}.chapters-grid[data-v-485ca3e0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.chapter-card[data-v-485ca3e0]{border:1px solid #e4e7ed;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s;background:white}.chapter-card[data-v-485ca3e0]:hover{border-color:#409eff;box-shadow:0 2px 12px #0000001a}.chapter-card.selected[data-v-485ca3e0]{border-color:#409eff;background:#f0f9ff}.chapter-header[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chapter-number[data-v-485ca3e0]{font-size:12px;color:#909399;background:#f4f4f5;padding:2px 8px;border-radius:4px}.chapter-title[data-v-485ca3e0]{font-size:16px;font-weight:700;margin-bottom:8px;color:#303133}.chapter-summary[data-v-485ca3e0]{font-size:14px;color:#606266;margin-bottom:12px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chapter-meta[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#909399}.meta-item[data-v-485ca3e0]{display:flex;align-items:center;gap:4px}.detail-header[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center}.detail-actions[data-v-485ca3e0]{display:flex;gap:8px}.chapter-content[data-v-485ca3e0]{max-height:600px;overflow-y:auto}.content-section[data-v-485ca3e0]{margin-bottom:20px}.content-section h4[data-v-485ca3e0]{margin-bottom:8px;color:#303133}.content-preview[data-v-485ca3e0]{background:#f8f9fa;padding:12px;border-radius:4px;max-height:200px;overflow-y:auto;line-height:1.6}.empty-state[data-v-485ca3e0]{text-align:center;padding:40px}.mr-2[data-v-485ca3e0]{margin-right:8px}.backup-manager[data-v-946a913e]{padding:20px}.backup-header[data-v-946a913e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header-actions[data-v-946a913e]{display:flex;gap:12px}.backup-stats[data-v-946a913e]{margin-bottom:20px}.stat-card[data-v-946a913e]{display:flex;align-items:center;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 8px #0000001a;transition:transform .2s}.stat-card[data-v-946a913e]:hover{transform:translateY(-2px)}.stat-icon[data-v-946a913e]{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);display:flex;align-items:center;justify-content:center;margin-right:16px;font-size:20px;color:#fff}.stat-content[data-v-946a913e]{flex:1}.stat-number[data-v-946a913e]{font-size:24px;font-weight:700;color:#333;margin-bottom:4px}.stat-label[data-v-946a913e]{font-size:14px;color:#666}.auto-backup-card[data-v-946a913e]{margin-bottom:20px}.card-header[data-v-946a913e]{display:flex;justify-content:space-between;align-items:center}.auto-backup-settings[data-v-946a913e]{padding-top:16px}.setting-item[data-v-946a913e]{display:flex;flex-direction:column;gap:8px}.setting-item label[data-v-946a913e]{font-size:14px;color:#606266;font-weight:500}.next-backup-time[data-v-946a913e]{font-size:14px;color:#409eff;font-weight:500}.list-header[data-v-946a913e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.list-actions[data-v-946a913e]{display:flex;gap:12px;align-items:center}.backup-name[data-v-946a913e]{display:flex;align-items:center;gap:8px}.table-actions[data-v-946a913e]{display:flex;gap:8px}.table-actions .danger[data-v-946a913e]{color:#f56c6c}.backup-details[data-v-946a913e]{max-height:500px;overflow-y:auto}.detail-section[data-v-946a913e]{margin-bottom:24px}.detail-section h4[data-v-946a913e]{margin-bottom:12px;color:#303133}.content-list[data-v-946a913e]{display:flex;flex-direction:column;gap:8px}.content-item[data-v-946a913e]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#f8f9fa;border-radius:4px}.content-size[data-v-946a913e]{margin-left:auto;font-size:12px;color:#909399}.empty-state[data-v-946a913e]{text-align:center;padding:40px;color:#909399}.home-container[data-v-2dd0d183]{height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}.top-nav[data-v-2dd0d183]{height:60px;background:white;border-bottom:1px solid #e4e7ed;display:flex;align-items:center;justify-content:space-between;padding:0 20px;box-shadow:0 2px 4px #0000001a}.nav-left .app-title[data-v-2dd0d183]{margin:0;font-size:20px;color:#303133;display:flex;align-items:center}.nav-right[data-v-2dd0d183]{display:flex;gap:12px}.main-content[data-v-2dd0d183]{flex:1;display:flex;gap:16px;padding:16px;overflow:hidden}.left-panel[data-v-2dd0d183]{width:320px;flex-shrink:0;display:flex;flex-direction:column;gap:0;height:calc(100vh - 92px)}.center-panel[data-v-2dd0d183]{flex:1;min-width:0}.right-panel[data-v-2dd0d183]{width:320px;flex-shrink:0}.input-card[data-v-2dd0d183]{flex-shrink:0}.outline-card[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column;min-height:0}.editor-card[data-v-2dd0d183],.result-card[data-v-2dd0d183]{height:100%;display:flex;flex-direction:column}.generation-status[data-v-2dd0d183]{margin-bottom:16px}.status-content[data-v-2dd0d183]{display:flex;align-items:center;gap:8px}.rotating[data-v-2dd0d183]{animation:rotate-2dd0d183 2s linear infinite}@keyframes rotate-2dd0d183{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.card-header[data-v-2dd0d183]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.form-label[data-v-2dd0d183]{display:block;margin-bottom:8px;font-weight:500;color:#606266}.generation-settings[data-v-2dd0d183]{margin-top:8px}.setting-label[data-v-2dd0d183]{font-size:12px;color:#909399;text-align:center;margin-top:4px}.editor-container[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column}.editor-wrapper[data-v-2dd0d183]{flex:1;border:1px solid #ccc;border-radius:4px;overflow:hidden}.editor-wrapper .w-e-toolbar[data-v-2dd0d183]{border-bottom:1px solid #e4e7ed!important}.editor-wrapper .w-e-text-container[data-v-2dd0d183]{border:none!important}.editor-toolbar[data-v-2dd0d183]{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid #e4e7ed}.editor-stats[data-v-2dd0d183]{font-size:14px;color:#909399}.editor-actions[data-v-2dd0d183]{display:flex;gap:8px}.result-container[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column;height:500px}.generated-content[data-v-2dd0d183]{flex:1;overflow-y:auto;max-height:100%}.content-text[data-v-2dd0d183]{line-height:1.8;color:#303133;white-space:pre-wrap;word-break:break-word;padding:10px}.empty-result[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#909399}.empty-icon[data-v-2dd0d183]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-2dd0d183]{font-size:12px;margin-top:8px}[data-v-2dd0d183] .el-card__body{flex:1;display:flex;flex-direction:column;padding:16px}[data-v-2dd0d183] .left-panel .el-tabs{height:100%;display:flex;flex-direction:column}[data-v-2dd0d183] .left-panel .el-tabs__content{flex:1;overflow:hidden}[data-v-2dd0d183] .left-panel .el-tab-pane{height:100%;overflow-y:auto;padding-right:8px}.left-panel .el-card[data-v-2dd0d183]{margin-bottom:16px}.left-panel .el-card[data-v-2dd0d183]:last-child{margin-bottom:0}.outline-card[data-v-2dd0d183]{min-height:250px}.chapters-card[data-v-2dd0d183]{min-height:300px}.ai-chat-card[data-v-2dd0d183]{min-height:350px}.outline-container[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column}.outline-container .el-textarea[data-v-2dd0d183]{flex:1}.outline-container .el-textarea__inner[data-v-2dd0d183]{height:100%!important;min-height:200px}.chapters-container[data-v-2dd0d183]{display:flex;flex-direction:column;gap:16px}.chapters-list[data-v-2dd0d183]{display:flex;flex-direction:column;gap:8px;max-height:200px;overflow-y:auto}.chapter-item[data-v-2dd0d183]{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .3s}.chapter-item[data-v-2dd0d183]:hover{border-color:#409eff;background-color:#f0f9ff}.chapter-item.selected[data-v-2dd0d183]{border-color:#409eff;background-color:#ecf5ff}.chapter-item.completed[data-v-2dd0d183]{background-color:#f0f9ff}.chapter-title[data-v-2dd0d183]{font-weight:500;color:#303133}.chapter-detail[data-v-2dd0d183]{border:1px solid #e4e7ed;border-radius:6px;padding:16px;background-color:#fafafa}.chapter-content h4[data-v-2dd0d183]{margin:0 0 8px;color:#409eff}.chapter-content p[data-v-2dd0d183]{margin:0 0 16px;color:#606266;line-height:1.6}.generated-content[data-v-2dd0d183]{border-top:1px solid #e4e7ed;padding-top:16px}.generated-content h5[data-v-2dd0d183]{margin:0 0 8px;color:#67c23a}.generated-text[data-v-2dd0d183]{background-color:#fff;border:1px solid #e4e7ed;border-radius:4px;padding:12px;max-height:200px;overflow-y:auto;white-space:pre-wrap;line-height:1.6;color:#303133}.ai-chat-container[data-v-2dd0d183]{display:flex;flex-direction:column;height:300px}.chat-history[data-v-2dd0d183]{flex:1;overflow-y:auto;padding:8px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:12px;background-color:#fafafa}.chat-message[data-v-2dd0d183]{margin-bottom:12px;padding:8px 12px;border-radius:8px;max-width:80%}.user-message[data-v-2dd0d183]{background-color:#409eff;color:#fff;margin-left:auto;text-align:right}.ai-message[data-v-2dd0d183]{background-color:#f0f0f0;color:#303133;margin-right:auto}.message-content[data-v-2dd0d183]{margin-bottom:4px;line-height:1.4;white-space:pre-wrap}.message-time[data-v-2dd0d183]{font-size:12px;opacity:.7}.empty-chat[data-v-2dd0d183]{text-align:center;color:#909399;padding:40px 20px;font-style:italic}.chat-input[data-v-2dd0d183]{margin-top:auto}[data-v-2dd0d183] .el-textarea__inner{resize:none}.genre-management[data-v-d7a56fae]{padding:0}.page-header[data-v-d7a56fae]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;padding:24px;background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a}.header-content h1[data-v-d7a56fae]{margin:0 0 8px;font-size:24px;color:#303133}.header-content p[data-v-d7a56fae]{margin:0;color:#606266;font-size:14px}.genres-grid[data-v-d7a56fae]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px;padding:0 24px}.genre-item[data-v-d7a56fae]{border:none;transition:all .3s}.genre-item[data-v-d7a56fae]:hover{transform:translateY(-2px);box-shadow:0 8px 25px #00000026}.genre-header[data-v-d7a56fae]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.genre-info[data-v-d7a56fae]{flex:1}.genre-name[data-v-d7a56fae]{margin:0 0 8px;font-size:18px;font-weight:600;color:#303133}.genre-actions[data-v-d7a56fae]{display:flex;gap:8px}.genre-description[data-v-d7a56fae]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border-left:3px solid #409eff}.genre-description p[data-v-d7a56fae]{margin:0;color:#606266;line-height:1.6}.genre-tags[data-v-d7a56fae]{margin-bottom:16px;min-height:32px}.genre-meta[data-v-d7a56fae]{display:flex;gap:16px;font-size:12px;color:#909399}.meta-item[data-v-d7a56fae]{display:flex;align-items:center;gap:4px}.tags-input-section[data-v-d7a56fae]{width:100%}.tags-display[data-v-d7a56fae]{margin-top:8px}.form-tip[data-v-d7a56fae]{font-size:12px;color:#909399;margin-top:4px}.empty-state[data-v-d7a56fae]{padding:60px 24px;text-align:center}.dialog-footer[data-v-d7a56fae]{text-align:right}@media (max-width: 768px){.genres-grid[data-v-d7a56fae]{grid-template-columns:1fr;padding:0 16px}.page-header[data-v-d7a56fae]{flex-direction:column;gap:16px;align-items:stretch;padding:16px}}.tools-library[data-v-ef77a6b1]{max-width:1200px;margin:0 auto}.tools-grid[data-v-ef77a6b1]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;margin-bottom:40px}.tool-card[data-v-ef77a6b1]{background:white;border-radius:12px;padding:24px;box-shadow:0 2px 12px #0000001a;cursor:pointer;transition:all .3s ease;border:1px solid #e4e7ed}.tool-card[data-v-ef77a6b1]:hover{transform:translateY(-4px);box-shadow:0 8px 24px #00000026;border-color:#409eff}.tool-icon[data-v-ef77a6b1]{font-size:48px;text-align:center;margin-bottom:16px}.tool-card h3[data-v-ef77a6b1]{font-size:18px;color:#2c3e50;margin-bottom:8px;text-align:center}.tool-card p[data-v-ef77a6b1]{font-size:14px;color:#7f8c8d;text-align:center;line-height:1.5}.tool-dialog .tool-content[data-v-ef77a6b1]{padding:20px 0}.tool-form[data-v-ef77a6b1]{margin-bottom:24px}.tool-actions[data-v-ef77a6b1]{text-align:center;margin-bottom:24px}.tool-actions .el-button[data-v-ef77a6b1]{margin:0 8px}.generating-status[data-v-ef77a6b1]{margin:16px 0;text-align:center}.status-text[data-v-ef77a6b1]{display:block;margin-top:8px;color:#606266;font-size:14px}.tool-result[data-v-ef77a6b1]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.tool-result h4[data-v-ef77a6b1]{margin-top:0;margin-bottom:16px;color:#2c3e50}.result-content-wrapper[data-v-ef77a6b1]{margin-bottom:16px}.result-textarea[data-v-ef77a6b1]{width:100%}.result-textarea[data-v-ef77a6b1] .el-textarea__inner{background:white;border:1px solid #e4e7ed;border-radius:6px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;line-height:1.6;resize:vertical}.result-actions[data-v-ef77a6b1]{text-align:center;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.result-actions .el-button[data-v-ef77a6b1]{margin:4px}.tool-form .el-select[data-v-ef77a6b1]{width:100%}.tool-form .el-select .el-tag[data-v-ef77a6b1]{max-width:120px}.tool-form .el-form-item[data-v-ef77a6b1]{margin-bottom:18px}.prompt-option[data-v-ef77a6b1]{padding:8px 0}.prompt-option-title[data-v-ef77a6b1]{font-weight:500;color:#303133;margin-bottom:4px}.prompt-option-desc[data-v-ef77a6b1]{font-size:12px;color:#909399;line-height:1.4}.character-count-hint[data-v-ef77a6b1]{margin-top:5px;font-size:12px}.valid-hint[data-v-ef77a6b1]{color:#67c23a}.invalid-hint[data-v-ef77a6b1]{color:#f56c6c}@media (max-width: 768px){.tools-grid[data-v-ef77a6b1]{grid-template-columns:1fr}.tool-dialog[data-v-ef77a6b1]{width:95%!important}.result-actions[data-v-ef77a6b1]{flex-direction:column;align-items:center}.result-actions .el-button[data-v-ef77a6b1]{width:100%;max-width:200px}}.short-story-page[data-v-33d93414]{width:100%;height:100vh;padding:20px;box-sizing:border-box;background:#f5f7fa}.short-story-page[data-v-33d93414]{width:100%;height:100vh;display:flex;flex-direction:column;padding:20px;box-sizing:border-box;background:#f5f7fa}.page-tabs[data-v-33d93414]{flex-shrink:0;margin-bottom:20px}.page-content[data-v-33d93414]{flex:1;overflow:hidden}.workspace[data-v-33d93414]{height:100%}.workspace-layout[data-v-33d93414]{display:flex;gap:20px;height:100%}.config-sidebar[data-v-33d93414]{width:340px;flex-shrink:0;background:white;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a;display:flex;flex-direction:column;overflow:hidden}.config-header h3[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px;font-weight:600}.generate-btn[data-v-33d93414]{width:100%;margin-bottom:20px;height:40px;font-weight:500}.config-form[data-v-33d93414]{flex:1;overflow-y:auto;padding-right:4px;padding-top:8px}.config-section[data-v-33d93414]{margin-bottom:20px;padding:16px;background:#fafbfc;border-radius:8px;border:1px solid #e4e7ed}.section-title[data-v-33d93414]{font-size:14px;font-weight:600;color:#2c3e50;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e4e7ed}.section-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e4e7ed}.section-actions[data-v-33d93414]{display:flex;gap:8px}.form-grid[data-v-33d93414]{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;align-items:start}.form-item[data-v-33d93414]{display:flex;flex-direction:column}.form-item.full-width[data-v-33d93414]{grid-column:1 / -1}.form-item label[data-v-33d93414]{font-size:12px;font-weight:500;color:#606266;margin-bottom:6px;line-height:1.2}.form-item .el-input[data-v-33d93414],.form-item .el-select[data-v-33d93414],.form-item .el-input-number[data-v-33d93414]{width:100%}.age-input[data-v-33d93414]{display:flex;align-items:center;gap:8px;height:24px}.age-display[data-v-33d93414]{min-width:30px;text-align:center;font-weight:500;color:#2c3e50;font-size:14px}.item-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.selected-template[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding:6px 10px;background:#f0f9ff;border-radius:4px;font-size:12px}.validation-tip[data-v-33d93414]{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#fef0f0;border:1px solid #fbc4c4;border-radius:6px;font-size:12px;color:#f56c6c}.advanced-config[data-v-33d93414]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;overflow:visible}.advanced-config .el-collapse-item__header[data-v-33d93414]{height:40px;line-height:40px;font-size:13px;font-weight:500;padding:0 16px;background:#f8f9fa;border-bottom:1px solid #e4e7ed}.advanced-config .el-collapse-item__content[data-v-33d93414]{padding:16px;background:#fafbfc;min-height:200px;max-height:none}.advanced-config .el-collapse-item__wrap[data-v-33d93414]{border-bottom:none;overflow:visible}.advanced-config .el-collapse-item[data-v-33d93414]{border-bottom:none}.advanced-config .form-grid[data-v-33d93414]{margin-bottom:16px}.advanced-config .full-width[data-v-33d93414]{margin-top:16px}.config-scroll-container[data-v-33d93414]{flex:1;overflow:hidden}.config-sidebar .config-header[data-v-33d93414]{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;flex-shrink:0}.header-title-row[data-v-33d93414]{display:flex;justify-content:center;align-items:center}.header-actions-row[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.secondary-actions[data-v-33d93414]{display:flex;gap:6px;justify-content:center}.primary-action[data-v-33d93414]{display:flex}.config-sidebar .config-header h3[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px}.config-manager-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.config-manager-container[data-v-33d93414]{height:600px;overflow:hidden;display:flex;flex-direction:column}.config-tabs[data-v-33d93414]{height:100%;display:flex;flex-direction:column}.config-tabs[data-v-33d93414] .el-tabs__header{flex-shrink:0;margin-bottom:20px;order:-1;border-bottom:1px solid #e4e7ed}.config-tabs[data-v-33d93414] .el-tabs__nav-wrap{margin-bottom:0;background:white}.config-tabs[data-v-33d93414] .el-tabs__content{flex:1;overflow:hidden;padding:0}.config-tabs[data-v-33d93414] .el-tabs__item{padding:0 20px;height:40px;line-height:40px}.config-tab-content[data-v-33d93414]{height:100%;display:flex;flex-direction:column;padding:0 10px}.tab-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid #ebeef5}.tab-header h4[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px}.config-list[data-v-33d93414]{flex:1;overflow-y:auto;padding-right:8px}.config-item-row[data-v-33d93414]{display:flex;gap:12px;align-items:center;margin-bottom:12px;padding:12px;background:#f8f9fa;border-radius:6px;border:1px solid #e9ecef}.config-input[data-v-33d93414]{flex:1}.description-input[data-v-33d93414]{flex:2}.config-item-row .el-button[data-v-33d93414]{margin-left:8px}.dialog-footer[data-v-33d93414]{display:flex;justify-content:flex-end;gap:10px}.config-header .header-row[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.required-tip[data-v-33d93414]{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#fef0f0;border:1px solid #fbc4c4;border-radius:4px;font-size:12px;color:#f56c6c;margin-top:8px}.config-form[data-v-33d93414]{flex:1;padding:16px 0;display:flex;flex-direction:column;gap:16px;margin-top:6px}.form-row[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.form-row.two-cols[data-v-33d93414]{flex-direction:row;gap:12px}.form-row.two-cols[data-v-33d93414]>*{flex:1}.prompt-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:500;color:#2c3e50;margin-bottom:4px}.selected-template[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding:6px 8px;background:#f0f9ff;border-radius:4px;font-size:12px}.reference-list[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.reference-item[data-v-33d93414]{border:1px solid #e1e5e9;border-radius:4px;padding:8px;background:#fafbfc}.ref-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12px;font-weight:500;color:#606266}.config-content[data-v-33d93414]{padding-bottom:16px}.quick-config[data-v-33d93414]{display:flex;flex-direction:column;gap:16px}.basic-selects[data-v-33d93414]{display:flex;flex-direction:column;gap:12px}.select-row[data-v-33d93414]{display:flex;gap:12px}.select-item[data-v-33d93414]{flex:1;display:flex;flex-direction:column;gap:4px}.select-item label[data-v-33d93414]{font-size:12px;color:#606266;font-weight:500}.quick-inputs .input-row[data-v-33d93414]{display:flex;gap:12px}.prompt-area[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.prompt-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#606266;font-weight:500}.unified-prompt-input[data-v-33d93414]{border-radius:4px}.unified-prompt-input .el-textarea__inner[data-v-33d93414]{line-height:1.5;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif}.advanced-config[data-v-33d93414]{padding:10px}.generate-section[data-v-33d93414]{text-align:center;padding:60px 0}.content-panel[data-v-33d93414]{flex:1;background:white;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a;display:flex;flex-direction:column;overflow:hidden;position:relative}.panel-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-shrink:0}.panel-header h3[data-v-33d93414]{margin:0;color:#2c3e50}.content-body[data-v-33d93414]{flex:1;position:relative}.story-result[data-v-33d93414],.story-editor[data-v-33d93414]{flex:1;display:flex;flex-direction:column;overflow:hidden}.story-textarea[data-v-33d93414]{flex:1;display:flex;flex-direction:column}.content-footer[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-top:1px solid #e4e7ed;margin-top:16px;flex-shrink:0}.word-count[data-v-33d93414]{margin:0}.footer-actions[data-v-33d93414]{display:flex;gap:8px}.add-custom-item[data-v-33d93414]{display:flex;align-items:center;justify-content:center;border:1px dashed #c0c4cc;border-radius:6px;padding:12px;cursor:pointer;transition:all .3s;margin-top:8px;background-color:#f5f7fa}.add-custom-item[data-v-33d93414]:hover{border-color:#409eff;background-color:#ecf5ff}.add-custom-item .el-icon[data-v-33d93414]{margin-right:8px;font-size:16px;color:#909399}.add-custom-item:hover .el-icon[data-v-33d93414]{color:#409eff}@media (max-width: 768px){.story-header[data-v-33d93414]{flex-direction:column;gap:16px}.story-actions[data-v-33d93414]{flex-wrap:wrap;justify-content:center}}.config-section[data-v-33d93414]{padding:16px}.config-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.config-header h4[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px}.config-list[data-v-33d93414]{display:flex;flex-direction:column;gap:12px;max-height:500px;overflow-y:auto}.config-item[data-v-33d93414]{display:flex;gap:8px;align-items:center;padding:12px;border:1px solid #e4e7ed;border-radius:6px;background:#fafbfc;transition:all .3s}.config-item[data-v-33d93414]:hover{border-color:#c6e2ff;background:#ecf5ff}.config-item .el-input[data-v-33d93414]{flex:1}.config-item .el-input[data-v-33d93414]:nth-child(3){flex:2}.config-item .el-button[data-v-33d93414]{flex-shrink:0}.dialog-footer[data-v-33d93414]{display:flex;justify-content:flex-end;gap:8px}.empty-config[data-v-33d93414]{text-align:center;padding:40px 20px;color:#909399}.empty-config .el-icon[data-v-33d93414]{font-size:48px;margin-bottom:16px}.prompt-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.prompt-actions[data-v-33d93414]{display:flex;gap:8px}.selected-template[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;margin-bottom:12px}.template-info[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:4px}.template-title[data-v-33d93414]{font-weight:500;color:#1e40af}.template-description[data-v-33d93414]{font-size:12px;color:#64748b;line-height:1.4}.prompt-selector[data-v-33d93414]{display:flex;gap:20px;min-height:500px}.prompt-list[data-v-33d93414]{flex:1;max-height:500px;overflow-y:auto}.prompt-grid[data-v-33d93414]{display:grid;grid-template-columns:1fr;gap:12px}.prompt-card[data-v-33d93414]{border:1px solid #e5e7eb;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s;background:white}.prompt-card[data-v-33d93414]:hover{border-color:#3b82f6;box-shadow:0 2px 8px #3b82f61a}.prompt-card.active[data-v-33d93414]{border-color:#3b82f6;background:#eff6ff;box-shadow:0 2px 8px #3b82f626}.prompt-card-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.prompt-card-header h5[data-v-33d93414]{margin:0;font-size:14px;font-weight:500;color:#1f2937}.selected-icon[data-v-33d93414]{color:#3b82f6;font-size:16px}.prompt-card-description[data-v-33d93414]{margin-bottom:12px}.prompt-card-description p[data-v-33d93414]{margin:0;font-size:12px;color:#6b7280;line-height:1.4}.prompt-card-tags[data-v-33d93414]{display:flex;flex-wrap:wrap;gap:4px}.prompt-preview[data-v-33d93414]{flex:1;border-left:1px solid #e5e7eb;padding-left:20px}.prompt-preview h4[data-v-33d93414]{margin:0 0 16px;color:#1f2937;font-size:16px}.preview-content[data-v-33d93414]{height:calc(100% - 40px)}.prompt-content-editor[data-v-33d93414]{height:100%}.prompt-content-editor .el-textarea__inner[data-v-33d93414]{height:100%!important;resize:none;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.5}.empty-prompts[data-v-33d93414]{text-align:center;padding:60px 20px;color:#6b7280}.empty-prompts .el-empty[data-v-33d93414]{padding:20px}.continue-direction[data-v-33d93414]{display:flex;flex-direction:column;gap:20px}.direction-input[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.direction-input label[data-v-33d93414]{font-weight:500;color:#2c3e50;font-size:14px}.direction-tips[data-v-33d93414]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:16px}.direction-tips h4[data-v-33d93414]{margin:0 0 12px;color:#495057;font-size:14px;font-weight:500}.direction-tips ul[data-v-33d93414]{margin:0;padding-left:20px}.direction-tips li[data-v-33d93414]{color:#6c757d;font-size:13px;line-height:1.5;margin-bottom:4px}.direction-tips li[data-v-33d93414]:last-child{margin-bottom:0}.optimize-dialog[data-v-33d93414]{display:flex;flex-direction:column;gap:20px}.selected-content h4[data-v-33d93414],.optimize-direction h4[data-v-33d93414],.optimize-result h4[data-v-33d93414]{margin:0 0 8px;color:#2c3e50;font-size:14px;font-weight:600}.selected-text[data-v-33d93414]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#495057;max-height:120px;overflow-y:auto}.optimize-actions[data-v-33d93414]{text-align:center}.optimized-text[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#1e40af;max-height:200px;overflow-y:auto;scroll-behavior:smooth}.optimizing-placeholder[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-style:italic}.optimizing-placeholder .el-icon[data-v-33d93414]{font-size:16px}.optimized-content[data-v-33d93414]{white-space:pre-wrap;word-wrap:break-word}.modern-continue-dialog[data-v-33d93414]{border-radius:16px;overflow:hidden}.modern-continue-dialog .el-dialog__header[data-v-33d93414]{padding:0;margin:0;border-bottom:1px solid #f0f0f0}.modern-continue-dialog .el-dialog__body[data-v-33d93414]{padding:24px;background:#fafbfc}.modern-continue-dialog .el-dialog__footer[data-v-33d93414]{padding:20px 24px;background:#fff;border-top:1px solid #f0f0f0}.dialog-header[data-v-33d93414]{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff}.header-left[data-v-33d93414]{display:flex;align-items:center;gap:16px}.header-icon[data-v-33d93414]{width:48px;height:48px;background:rgba(255,255,255,.2);border-radius:12px;display:flex;align-items:center;justify-content:center}.header-text h3[data-v-33d93414]{margin:0;font-size:20px;font-weight:600}.header-text p[data-v-33d93414]{margin:4px 0 0;font-size:14px;opacity:.9}.close-btn[data-v-33d93414]{color:#fff!important;background:rgba(255,255,255,.1)!important;border:none!important;border-radius:8px!important;transition:all .3s ease}.close-btn[data-v-33d93414]:hover{background:rgba(255,255,255,.2)!important}.modern-continue-container[data-v-33d93414]{display:grid;grid-template-columns:1fr 1fr;gap:24px;min-height:500px}.config-card[data-v-33d93414],.result-card[data-v-33d93414]{border-radius:12px;border:1px solid #e8eaed;box-shadow:0 2px 8px #0000000a}.config-card .el-card__header[data-v-33d93414],.result-card .el-card__header[data-v-33d93414]{background:#f8f9fa;border-bottom:1px solid #e8eaed;padding:16px 20px}.card-header[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-weight:600;color:#1f2937}.header-actions[data-v-33d93414]{margin-left:auto;display:flex;gap:8px}.config-content[data-v-33d93414]{padding:20px}.config-row[data-v-33d93414]{display:flex;flex-direction:column;gap:24px}.config-item[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.config-label[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-weight:500;color:#374151;font-size:14px}.direction-input[data-v-33d93414]{border-radius:8px}.direction-input .el-textarea__inner[data-v-33d93414]{border-radius:8px;border:1px solid #d1d5db;font-size:14px;line-height:1.5}.word-count-slider[data-v-33d93414]{margin-top:8px}.tips-section[data-v-33d93414]{margin-top:24px;padding:16px;background:#f0f9ff;border-radius:8px;border:1px solid #bae6fd}.tips-header[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:500;color:#0369a1}.tips-grid[data-v-33d93414]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tip-item[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-size:13px;color:#374151}.result-content[data-v-33d93414]{padding:20px;min-height:400px}.streaming-state[data-v-33d93414]{display:flex;flex-direction:column;height:100%}.streaming-header[data-v-33d93414]{display:flex;align-items:center;gap:16px;padding:20px;background:#f0f9ff;border-radius:8px;margin-bottom:16px}.streaming-icon[data-v-33d93414]{width:40px;height:40px;background:#3b82f6;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.rotating[data-v-33d93414]{animation:rotate-33d93414 2s linear infinite}.streaming-text h4[data-v-33d93414]{margin:0;color:#1f2937;font-size:16px}.streaming-text p[data-v-33d93414]{margin:4px 0 0;color:#6b7280;font-size:14px}.streaming-content[data-v-33d93414]{flex:1;background:#fff;border-radius:8px;border:1px solid #e5e7eb;padding:16px;overflow-y:auto}.streaming-text-content[data-v-33d93414]{font-size:14px;line-height:1.6;color:#374151;white-space:pre-wrap;word-wrap:break-word}.result-display[data-v-33d93414]{height:100%;display:flex;flex-direction:column}.result-stats[data-v-33d93414]{display:flex;gap:24px;margin-bottom:16px;padding:12px 16px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.stat-item[data-v-33d93414]{display:flex;flex-direction:column;align-items:center;gap:4px}.stat-label[data-v-33d93414]{font-size:12px;color:#6b7280;font-weight:500}.stat-value[data-v-33d93414]{font-size:16px;color:#1f2937;font-weight:600}.result-text[data-v-33d93414]{flex:1;padding:16px;background:#fff;border-radius:8px;border:1px solid #e5e7eb;font-size:14px;line-height:1.6;color:#374151;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word}.empty-state[data-v-33d93414]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:#6b7280}.empty-icon[data-v-33d93414]{margin-bottom:16px}.empty-state h4[data-v-33d93414]{margin:0 0 8px;color:#374151;font-size:16px}.empty-state p[data-v-33d93414]{margin:0;font-size:14px;max-width:280px}.dialog-footer[data-v-33d93414]{display:flex;align-items:center;justify-content:space-between}.footer-info[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-size:14px}.footer-actions[data-v-33d93414]{display:flex;gap:12px}.continue-container[data-v-33d93414]{display:flex;gap:20px;height:500px}.continue-config[data-v-33d93414]{flex:1;display:flex;flex-direction:column;gap:16px}.continue-result[data-v-33d93414]{flex:1;display:flex;flex-direction:column;border-left:1px solid #e5e7eb;padding-left:20px}.result-content[data-v-33d93414]{flex:1;display:flex;flex-direction:column;min-height:0}.continuing-indicator[data-v-33d93414]{display:flex;align-items:center;justify-content:center;padding:8px;margin-top:8px;background:#e3f2fd;border-radius:4px;font-size:12px;color:#1976d2}.continuing-indicator .loading-icon[data-v-33d93414]{margin-right:4px;animation:spin-33d93414 1s linear infinite}.word-count-tips[data-v-33d93414]{margin-top:4px;font-size:12px;color:#6b7280;text-align:center}.empty-placeholder[data-v-33d93414]{flex:1;display:flex;align-items:center;justify-content:center}.empty-placeholder .el-empty[data-v-33d93414]{padding:20px}.page-tabs .el-tabs__header[data-v-33d93414]{background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a;padding:10px 20px;margin:0 0 20px}.page-tabs .el-tabs__nav-wrap[data-v-33d93414]{padding:0}.page-tabs .el-tabs__item[data-v-33d93414]{font-weight:500;font-size:15px;padding:0 20px;height:40px;line-height:40px}.advanced-config[data-v-33d93414]{margin-top:16px}.advanced-config .el-collapse-item__header[data-v-33d93414]{font-size:14px;font-weight:500;color:#2c3e50}.age-input[data-v-33d93414]{display:flex;align-items:center;gap:12px}.age-display[data-v-33d93414]{font-size:16px;font-weight:500;color:#2c3e50;min-width:40px;text-align:center}.editor-main[data-v-33d93414]{flex:1;background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a;display:flex;flex-direction:column;overflow:hidden}.editor-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e4e7ed;background:#fafbfc}.editor-title[data-v-33d93414]{display:flex;align-items:center;gap:12px;font-size:16px;font-weight:600;color:#2c3e50}.word-count[data-v-33d93414]{font-size:12px;color:#909399;background:#f0f2f5;padding:2px 8px;border-radius:12px}.editor-actions[data-v-33d93414]{display:flex;gap:8px}.editor-content[data-v-33d93414]{flex:1;position:relative;display:flex;flex-direction:column;min-height:0}.editor-wrapper[data-v-33d93414]{height:100%;display:flex;flex-direction:column;flex:1}.editor-wrapper .w-e-toolbar[data-v-33d93414]{border-bottom:1px solid #e4e7ed;background:#fafbfc;flex-shrink:0}.editor-wrapper .w-e-text-container[data-v-33d93414]{flex:1;background:white;overflow-y:auto!important;min-height:400px}.editor-wrapper .w-e-text-container .w-e-text[data-v-33d93414]{min-height:400px!important;max-height:none!important}.editor-wrapper .w-e-text-container .w-e-scroll[data-v-33d93414]{overflow-y:auto!important;max-height:none!important}.editor-wrapper[data-v-33d93414] .w-e-text-container{overflow-y:auto!important;min-height:400px;max-height:calc(100vh - 300px)}.editor-wrapper[data-v-33d93414] .w-e-text{min-height:400px!important;padding:20px!important;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.6}.editor-wrapper[data-v-33d93414] .w-e-scroll{overflow-y:auto!important;max-height:none!important}.editor-wrapper[data-v-33d93414] .w-e-text-container,.editor-wrapper[data-v-33d93414] .w-e-scroll,.editor-wrapper[data-v-33d93414] .w-e-text{scrollbar-width:auto!important;-webkit-overflow-scrolling:touch}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar{width:8px;height:8px}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar-track,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar-track,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar-track{background:#f5f5f5;border-radius:4px}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar-thumb,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar-thumb,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar-thumb:hover,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar-thumb:hover,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.generating-overlay[data-v-33d93414]{position:absolute;top:0;left:0;right:0;bottom:0;background:white;padding:20px;z-index:10}.reference-list[data-v-33d93414]{display:flex;flex-direction:column;gap:12px}.reference-item[data-v-33d93414]{border:1px solid #e1e5e9;border-radius:6px;padding:12px;background:#f8f9fa}.ref-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;font-weight:500;color:#606266}.generating-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid #e4e7ed;font-weight:500;color:#409eff}.streaming-content[data-v-33d93414]{line-height:1.6;color:#2c3e50;white-space:pre-wrap;word-wrap:break-word;max-height:350px;overflow-y:auto}.prompt-selector[data-v-33d93414]{height:400px;display:flex;flex-direction:column}.search-bar[data-v-33d93414]{margin-bottom:16px}.prompt-list[data-v-33d93414]{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.prompt-item[data-v-33d93414]{padding:16px;border:1px solid #e1e5e9;border-radius:8px;cursor:pointer;transition:all .2s}.prompt-item[data-v-33d93414]:hover{border-color:#409eff;background:#f0f9ff}.prompt-title[data-v-33d93414]{font-weight:500;color:#2c3e50;margin-bottom:8px}.prompt-description[data-v-33d93414]{color:#606266;font-size:13px;margin-bottom:8px}.prompt-tags[data-v-33d93414]{display:flex;gap:6px;flex-wrap:wrap}.continue-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.continue-container[data-v-33d93414]{height:500px}.continue-config[data-v-33d93414]{display:flex;flex-direction:column;gap:16px;height:100%}.config-section h4[data-v-33d93414]{margin:0 0 8px;color:#2c3e50;font-size:14px;font-weight:600}.tips-list[data-v-33d93414]{margin:0;padding-left:20px;color:#6c757d;font-size:13px;line-height:1.5}.tips-list li[data-v-33d93414]{margin-bottom:4px}.config-actions[data-v-33d93414]{margin-top:auto;display:flex;gap:8px;justify-content:flex-end}.continue-result[data-v-33d93414]{display:flex;flex-direction:column;border-left:1px solid #e5e7eb;padding-left:20px;height:100%}.result-header h4[data-v-33d93414]{margin:0 0 12px;color:#2c3e50;font-size:14px;font-weight:600}.result-content[data-v-33d93414]{flex:1;display:flex;flex-direction:column;overflow-y:auto;max-height:500px}.continuing-placeholder[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-style:italic;padding:20px;justify-content:center}.continuing-placeholder .loading-icon[data-v-33d93414]{font-size:16px;animation:spin-33d93414 1s linear infinite}@keyframes spin-33d93414{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.continued-content[data-v-33d93414]{flex:1;display:flex;flex-direction:column;min-height:0}.continued-text[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#1e40af;height:300px;overflow-y:auto;scroll-behavior:smooth;white-space:pre-wrap;word-wrap:break-word}.result-actions[data-v-33d93414]{display:flex;gap:8px;justify-content:center;margin-top:12px}.empty-result[data-v-33d93414]{flex:1;display:flex;align-items:center;justify-content:center}.optimize-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.optimize-container[data-v-33d93414]{height:500px}.optimize-config[data-v-33d93414]{display:flex;flex-direction:column;gap:16px;height:100%}.selected-text-preview[data-v-33d93414]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:12px;font-size:13px;line-height:1.6;color:#495057;max-height:120px;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word}.optimize-result[data-v-33d93414]{display:flex;flex-direction:column;border-left:1px solid #e5e7eb;padding-left:20px;height:100%}.optimizing-placeholder[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-style:italic;padding:20px;justify-content:center}.optimizing-placeholder .loading-icon[data-v-33d93414]{font-size:16px;animation:spin-33d93414 1s linear infinite}.optimized-content-container[data-v-33d93414]{flex:1;display:flex;flex-direction:column;min-height:0}.optimized-content[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#1e40af;flex:1;overflow-y:auto;scroll-behavior:smooth;white-space:pre-wrap;word-wrap:break-word}.header-actions[data-v-33d93414]{display:flex;gap:8px}.generating-status[data-v-33d93414]{margin-bottom:12px}.status-bar[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:8px 16px;border-radius:6px;box-shadow:0 2px 8px #667eea4d}.status-info[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500}.rotating[data-v-33d93414]{animation:rotate-33d93414 1s linear infinite}@keyframes rotate-33d93414{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.optimizing-status[data-v-33d93414]{margin-bottom:12px}.optimizing-status .status-bar[data-v-33d93414]{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%);color:#fff;padding:6px 12px;border-radius:4px;box-shadow:0 2px 6px #f093fb4d;font-size:13px}.optimizing-status .status-info[data-v-33d93414]{gap:6px;font-weight:500}.writing-style-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.writing-style-container[data-v-33d93414]{max-height:500px;overflow-y:auto}.style-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.style-header h4[data-v-33d93414]{margin:0;color:#374151;font-size:16px;font-weight:600}.style-list[data-v-33d93414]{display:flex;flex-direction:column;gap:12px}.style-item-row[data-v-33d93414]{display:flex;gap:12px;align-items:center;padding:12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px}.style-input[data-v-33d93414]{flex:1}.style-prompt-input[data-v-33d93414]{flex:2}.style-item-row .el-button[data-v-33d93414]{flex-shrink:0}.book-analysis[data-v-0ef89392]{height:calc(100vh - 140px);display:flex;flex-direction:column}.page-header[data-v-0ef89392]{text-align:center;margin-bottom:20px}.page-header h2[data-v-0ef89392]{font-size:24px;color:#2c3e50;margin-bottom:8px}.page-header p[data-v-0ef89392]{color:#7f8c8d;margin:0}.analysis-container[data-v-0ef89392]{display:flex;flex:1;gap:20px;height:100%;overflow:hidden}.left-panel[data-v-0ef89392]{width:320px;background:white;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a;overflow-y:auto}.panel-section[data-v-0ef89392]{margin-bottom:24px}.panel-section h3[data-v-0ef89392]{font-size:16px;color:#2c3e50;margin-bottom:16px;display:flex;align-items:center;gap:8px}.upload-area[data-v-0ef89392]{width:100%}.upload-area .el-upload-dragger[data-v-0ef89392]{width:100%;height:120px;display:flex;flex-direction:column;justify-content:center;align-items:center}.encoding-selection[data-v-0ef89392]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border:1px solid #e4e7ed}.encoding-selection label[data-v-0ef89392]{display:block;margin-bottom:8px;font-size:14px;font-weight:500;color:#2c3e50}.encoding-switch[data-v-0ef89392]{margin-top:12px;padding:8px 12px;background:#f0f2f5;border-radius:6px;display:flex;align-items:center;gap:12px}.encoding-switch span[data-v-0ef89392]{font-size:12px;color:#606266;white-space:nowrap}.file-info[data-v-0ef89392]{margin-top:12px}.file-card[data-v-0ef89392]{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #e4e7ed;border-radius:6px;background:#f8f9fa}.file-details[data-v-0ef89392]{flex:1;display:flex;flex-direction:column;gap:4px}.file-name[data-v-0ef89392]{font-size:14px;color:#2c3e50;font-weight:500}.file-size[data-v-0ef89392]{font-size:12px;color:#909399}.file-encoding[data-v-0ef89392]{font-size:11px;color:#67c23a;background:#f0f9ff;padding:2px 6px;border-radius:10px;border:1px solid #b3e5fc;align-self:flex-start}.file-actions[data-v-0ef89392]{display:flex;gap:4px;align-items:center}.remove-btn[data-v-0ef89392]{color:#f56c6c}.setting-item[data-v-0ef89392]{margin-bottom:16px}.setting-item label[data-v-0ef89392]{display:block;font-size:14px;color:#606266;margin-bottom:8px}.template-option[data-v-0ef89392]{display:flex;align-items:center;gap:8px}.template-icon[data-v-0ef89392]{font-size:16px}.action-buttons[data-v-0ef89392]{display:flex;flex-direction:column;gap:12px}.stats-section[data-v-0ef89392]{background:#f8f9fa;border-radius:6px;padding:16px}.stats-grid[data-v-0ef89392]{display:grid;grid-template-columns:1fr;gap:12px}.stat-item[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center}.stat-label[data-v-0ef89392]{font-size:14px;color:#909399}.stat-value[data-v-0ef89392]{font-size:14px;color:#2c3e50;font-weight:500}.right-panel[data-v-0ef89392]{flex:1;background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a;overflow:hidden;display:flex;flex-direction:column}.editor-container[data-v-0ef89392]{display:flex;flex-direction:column;height:100%;padding:20px}.editor-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e4e7ed}.editor-header h3[data-v-0ef89392]{margin:0;font-size:18px;color:#2c3e50}.header-actions[data-v-0ef89392]{display:flex;gap:8px}.progress-section[data-v-0ef89392]{margin-bottom:16px}.progress-text[data-v-0ef89392]{margin-top:8px;font-size:14px;color:#606266;text-align:center}.analysis-editor[data-v-0ef89392]{flex:1}.analysis-editor .el-textarea__inner[data-v-0ef89392]{height:100%!important;resize:none;font-family:Monaco,Consolas,Courier New,monospace;font-size:14px;line-height:1.6}.chapter-actions[data-v-0ef89392]{display:flex;gap:8px;margin-top:8px}.chapter-actions button[data-v-0ef89392]{margin-left:0!important}.range-input-group[data-v-0ef89392]{display:flex;align-items:center;gap:8px;width:100%}.range-separator[data-v-0ef89392]{color:#606266;font-size:14px}.chapter-option[data-v-0ef89392]{width:100%}.chapter-title[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.chapter-words[data-v-0ef89392]{color:#8492a6;font-size:12px}.chapter-summary[data-v-0ef89392]{color:#909399;font-size:12px;line-height:1.4;white-space:normal;word-break:break-all}.chapter-details-content[data-v-0ef89392]{max-height:500px;overflow-y:auto}.chapter-detail-item[data-v-0ef89392]{padding:16px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:12px}.chapter-detail-item[data-v-0ef89392]:last-child{margin-bottom:0}.chapter-detail-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.chapter-detail-header h4[data-v-0ef89392]{margin:0;color:#303133;font-size:16px}.chapter-detail-words[data-v-0ef89392]{color:#909399;font-size:12px}.chapter-detail-summary[data-v-0ef89392]{margin-bottom:12px;line-height:1.6;color:#606266}.chapter-detail-preview[data-v-0ef89392]{color:#909399;font-size:14px;line-height:1.6;background:#f8f9fa;padding:8px 12px;border-radius:4px}.ai-chapter-section[data-v-0ef89392]{margin-top:8px}.empty-state[data-v-0ef89392]{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#909399}.empty-icon[data-v-0ef89392]{font-size:64px;margin-bottom:16px}.content-preview[data-v-0ef89392]{flex:1;padding:20px;overflow-y:auto}.preview-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e4e7ed}.preview-header h3[data-v-0ef89392]{margin:0;color:#2c3e50}.preview-tip[data-v-0ef89392]{font-size:12px;color:#909399}.preview-content[data-v-0ef89392]{line-height:1.8;color:#606266;white-space:pre-wrap}.analysis-progress[data-v-0ef89392]{flex:1;display:flex;justify-content:center;align-items:center;padding:40px}.progress-content[data-v-0ef89392]{text-align:center;max-width:400px}.progress-icon[data-v-0ef89392]{font-size:48px;color:#409eff;margin-bottom:16px;animation:spin-0ef89392 2s linear infinite}@keyframes spin-0ef89392{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.progress-steps[data-v-0ef89392]{margin-top:24px;display:flex;flex-direction:column;gap:12px}.progress-step[data-v-0ef89392]{display:flex;align-items:center;gap:12px;padding:8px;border-radius:6px;transition:all .3s}.progress-step.active[data-v-0ef89392]{background:#e6f7ff;color:#1890ff}.progress-step.completed[data-v-0ef89392]{color:#52c41a}.step-text[data-v-0ef89392]{font-size:14px}.analysis-results[data-v-0ef89392]{flex:1;display:flex;flex-direction:column;overflow:hidden}.results-header[data-v-0ef89392]{padding:20px 20px 0;border-bottom:1px solid #e4e7ed}.results-header h3[data-v-0ef89392]{margin:0 0 8px;color:#2c3e50}.results-meta[data-v-0ef89392]{display:flex;gap:20px;font-size:12px;color:#909399;margin-bottom:16px}.results-tabs[data-v-0ef89392]{flex:1;overflow:hidden}.results-tabs[data-v-0ef89392] .el-tabs__content{height:calc(100% - 40px);overflow-y:auto;padding:20px}.analysis-grid[data-v-0ef89392]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.analysis-card[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;padding:16px;border:1px solid #e9ecef}.analysis-card h4[data-v-0ef89392]{margin:0 0 16px;color:#2c3e50;font-size:16px}.info-list[data-v-0ef89392]{display:flex;flex-direction:column;gap:8px}.info-item[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center}.label[data-v-0ef89392]{font-size:14px;color:#606266}.value[data-v-0ef89392]{font-size:14px;color:#2c3e50;font-weight:500}.characters-list[data-v-0ef89392]{display:flex;flex-direction:column;gap:8px}.character-item[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;padding:8px;background:white;border-radius:4px;font-size:14px}.character-name[data-v-0ef89392]{font-weight:500;color:#2c3e50}.character-role[data-v-0ef89392]{color:#909399}.character-frequency[data-v-0ef89392]{color:#409eff;font-size:12px}.plot-structure[data-v-0ef89392]{display:flex;flex-direction:column;gap:8px}.structure-item[data-v-0ef89392]{display:flex;gap:8px;padding:8px;background:white;border-radius:4px}.structure-label[data-v-0ef89392]{font-size:14px;color:#606266;min-width:80px}.structure-value[data-v-0ef89392]{font-size:14px;color:#2c3e50;flex:1}.techniques-analysis[data-v-0ef89392]{display:flex;flex-direction:column;gap:24px}.technique-section[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.technique-section h4[data-v-0ef89392]{margin:0 0 12px;color:#2c3e50}.technique-description[data-v-0ef89392]{color:#606266;margin-bottom:16px;line-height:1.6}.examples-section h5[data-v-0ef89392]{margin:0 0 12px;color:#2c3e50;font-size:14px}.example-item[data-v-0ef89392]{background:white;border-radius:6px;padding:16px;margin-bottom:12px;border:1px solid #e4e7ed}.example-text[data-v-0ef89392]{font-style:italic;color:#409eff;margin-bottom:8px}.example-analysis[data-v-0ef89392]{font-size:14px;color:#606266}.chapters-analysis[data-v-0ef89392]{display:flex;flex-direction:column;gap:20px}.chapter-detail[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.chapter-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e4e7ed}.chapter-header h4[data-v-0ef89392]{margin:0;color:#2c3e50}.chapter-words[data-v-0ef89392]{font-size:12px;color:#909399;background:#e9ecef;padding:4px 8px;border-radius:12px}.chapter-content[data-v-0ef89392]{display:grid;gap:16px}.chapter-summary h5[data-v-0ef89392],.chapter-techniques h5[data-v-0ef89392]{margin:0 0 8px;color:#2c3e50;font-size:14px}.chapter-summary p[data-v-0ef89392]{margin:0;color:#606266;line-height:1.6}.technique-tags[data-v-0ef89392]{display:flex;gap:8px;flex-wrap:wrap}.inspiration-grid[data-v-0ef89392]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.inspiration-card[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.inspiration-card h4[data-v-0ef89392]{margin:0 0 16px;color:#2c3e50}.highlight-list[data-v-0ef89392],.suggestion-list[data-v-0ef89392]{margin:0;padding-left:20px}.highlight-list li[data-v-0ef89392],.suggestion-list li[data-v-0ef89392]{margin-bottom:8px;color:#606266;line-height:1.6}.related-techniques[data-v-0ef89392]{display:flex;gap:8px;flex-wrap:wrap}.chapter-content-dialog[data-v-0ef89392]{display:flex;flex-direction:column;gap:20px}.chapter-selector[data-v-0ef89392]{display:flex;flex-direction:column;gap:12px}.chapter-select-option[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;width:100%}.chapter-title[data-v-0ef89392]{font-weight:500;color:#2c3e50}.chapter-words[data-v-0ef89392]{font-size:12px;color:#909399}.chapter-info[data-v-0ef89392]{display:flex;gap:8px;flex-wrap:wrap}.chapter-content-viewer[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;border:1px solid #e4e7ed;overflow:hidden}.chapter-text[data-v-0ef89392]{padding:20px;line-height:1.8;font-family:Microsoft YaHei,sans-serif;color:#2c3e50;white-space:pre-wrap;word-break:break-word}.empty-state[data-v-0ef89392]{padding:60px 20px;text-align:center;color:#909399}.empty-state .el-icon[data-v-0ef89392]{font-size:48px;margin-bottom:16px;color:#c0c4cc}.empty-state p[data-v-0ef89392]{margin:0;font-size:14px}.dialog-footer[data-v-0ef89392]{display:flex;justify-content:flex-end;gap:12px}@media (max-width: 1200px){.analysis-container[data-v-0ef89392]{flex-direction:column;height:auto}.left-panel[data-v-0ef89392]{width:100%;order:1}.right-panel[data-v-0ef89392]{order:2;min-height:600px}.analysis-grid[data-v-0ef89392],.inspiration-grid[data-v-0ef89392]{grid-template-columns:1fr}.chapter-content-dialog[data-v-0ef89392]{gap:16px}.chapter-text[data-v-0ef89392]{padding:16px;line-height:1.6}}@media (max-width: 768px){.analysis-container[data-v-0ef89392]{gap:16px}.left-panel[data-v-0ef89392],.right-panel[data-v-0ef89392]{border-radius:6px;padding:16px}.chapter-header[data-v-0ef89392]{flex-direction:column;align-items:flex-start;gap:8px}.chapter-selector .el-select[data-v-0ef89392]{width:100%!important}.dialog-footer[data-v-0ef89392]{flex-direction:column;gap:8px}.dialog-footer .el-button[data-v-0ef89392]{width:100%}}.chapter-details-main[data-v-0ef89392]{display:flex;gap:20px;height:600px}.chapter-list-panel[data-v-0ef89392]{width:350px;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.panel-header[data-v-0ef89392]{background:#f5f7fa;padding:12px 16px;border-bottom:1px solid #e4e7ed}.panel-header h4[data-v-0ef89392]{margin:0;font-size:14px;color:#2c3e50}.chapter-list[data-v-0ef89392]{height:calc(100% - 49px);overflow-y:auto}.chapter-list-item[data-v-0ef89392]{padding:12px 16px;border-bottom:1px solid #f0f0f0;cursor:pointer;transition:all .2s}.chapter-list-item[data-v-0ef89392]:hover{background:#f8f9fa}.chapter-list-item.active[data-v-0ef89392]{background:#e8f4fd;border-left:3px solid #409eff}.chapter-item-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.chapter-item-title[data-v-0ef89392]{font-weight:500;color:#2c3e50;font-size:14px}.chapter-item-words[data-v-0ef89392]{font-size:12px;color:#909399}.chapter-item-summary[data-v-0ef89392]{font-size:12px;color:#606266;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chapter-item-summary[data-v-0ef89392]:empty:before{content:"暂无简读,点击查看后可调用AI生成";color:#c0c4cc;font-style:italic}.chapter-detail-panel[data-v-0ef89392]{flex:1;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.detail-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f5f7fa;border-bottom:1px solid #e4e7ed}.detail-header h4[data-v-0ef89392]{margin:0;color:#2c3e50;font-size:16px}.detail-actions[data-v-0ef89392]{display:flex;gap:8px}.summary-content[data-v-0ef89392]{padding:20px}.chapter-meta[data-v-0ef89392]{display:flex;gap:8px;margin-bottom:16px}.summary-actions[data-v-0ef89392]{margin-top:20px}.summary-display[data-v-0ef89392]{margin-top:16px}.summary-text[data-v-0ef89392]{color:#2c3e50;line-height:1.6;font-size:14px;background:#f8f9fa;border-radius:6px;padding:16px;border:1px solid #e4e7ed}.summary-actions-bottom[data-v-0ef89392]{margin-top:12px;text-align:right}.prompt-section[data-v-0ef89392]{margin-bottom:16px;border:1px solid #e4e7ed;border-radius:6px;overflow:hidden}.prompt-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#f5f7fa;border-bottom:1px solid #e4e7ed}.prompt-label[data-v-0ef89392]{font-size:13px;font-weight:500;color:#2c3e50}.prompt-preview[data-v-0ef89392]{padding:12px;background:#fafbfc}.prompt-text[data-v-0ef89392]{font-size:12px;color:#606266;line-height:1.4;white-space:pre-wrap;word-break:break-word;max-height:120px;overflow-y:auto}.prompt-editor[data-v-0ef89392]{padding:12px;background:#fff}.prompt-textarea[data-v-0ef89392]{margin-bottom:8px}.prompt-textarea .el-textarea__inner[data-v-0ef89392]{font-size:12px;font-family:Monaco,Consolas,Courier New,monospace}.prompt-actions[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.prompt-tips[data-v-0ef89392]{flex:1}.prompt-buttons[data-v-0ef89392]{display:flex;gap:8px}.prompt-preview-dialog[data-v-0ef89392]{padding:16px}.preview-content[data-v-0ef89392]{margin-bottom:16px;border:1px solid #e4e7ed;border-radius:6px;overflow:hidden}.prompt-full-text[data-v-0ef89392]{margin:0;padding:16px;background:#f8f9fa;font-family:Monaco,Consolas,Courier New,monospace;font-size:13px;line-height:1.5;color:#2c3e50;white-space:pre-wrap;word-break:break-word}.preview-stats[data-v-0ef89392]{display:flex;gap:8px;justify-content:center}.full-content[data-v-0ef89392]{padding:20px}.chapter-full-text[data-v-0ef89392]{color:#2c3e50;line-height:1.8;font-family:Microsoft YaHei,sans-serif;white-space:pre-wrap;word-break:break-word}.empty-detail[data-v-0ef89392]{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#909399}.empty-detail .el-icon[data-v-0ef89392]{font-size:48px;margin-bottom:16px;color:#c0c4cc}.empty-detail p[data-v-0ef89392]{margin:0;font-size:14px}@media (max-width: 1200px){.chapter-details-main[data-v-0ef89392]{flex-direction:column;height:auto}.chapter-list-panel[data-v-0ef89392]{width:100%;height:250px}.chapter-detail-panel[data-v-0ef89392]{min-height:400px}}@media (max-width: 768px){.chapter-details-main[data-v-0ef89392]{gap:16px}.detail-header[data-v-0ef89392]{flex-direction:column;align-items:flex-start;gap:8px}.chapter-meta[data-v-0ef89392]{flex-wrap:wrap}.summary-content[data-v-0ef89392],.full-content[data-v-0ef89392]{padding:16px}}#app{width:100%;height:100vh;margin:0;padding:0}*{box-sizing:border-box}body{margin:0;padding:0;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif}:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121.3,187.1,255);--el-color-primary-light-5:rgb(159.5,206.5,255);--el-color-primary-light-7:rgb(197.7,225.9,255);--el-color-primary-light-8:rgb(216.8,235.6,255);--el-color-primary-light-9:rgb(235.9,245.3,255);--el-color-primary-dark-2:rgb(51.2,126.4,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(148.6,212.3,117.1);--el-color-success-light-5:rgb(179,224.5,156.5);--el-color-success-light-7:rgb(209.4,236.7,195.9);--el-color-success-light-8:rgb(224.6,242.8,215.6);--el-color-success-light-9:rgb(239.8,248.9,235.3);--el-color-success-dark-2:rgb(82.4,155.2,46.4);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(237.5,189.9,118.5);--el-color-warning-light-5:rgb(242.5,208.5,157.5);--el-color-warning-light-7:rgb(247.5,227.1,196.5);--el-color-warning-light-8:rgb(250,236.4,216);--el-color-warning-light-9:rgb(252.5,245.7,235.5);--el-color-warning-dark-2:rgb(184,129.6,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152.1,152.1);--el-color-danger-light-5:rgb(250,181.5,181.5);--el-color-danger-light-7:rgb(252,210.9,210.9);--el-color-danger-light-8:rgb(253,225.6,225.6);--el-color-danger-light-9:rgb(254,240.3,240.3);--el-color-danger-dark-2:rgb(196,86.4,86.4);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152.1,152.1);--el-color-error-light-5:rgb(250,181.5,181.5);--el-color-error-light-7:rgb(252,210.9,210.9);--el-color-error-light-8:rgb(253,225.6,225.6);--el-color-error-light-9:rgb(254,240.3,240.3);--el-color-error-dark-2:rgb(196,86.4,86.4);--el-color-info:#909399;--el-color-info-light-3:rgb(177.3,179.4,183.6);--el-color-info-light-5:rgb(199.5,201,204);--el-color-info-light-7:rgb(221.7,222.6,224.4);--el-color-info-light-8:rgb(232.8,233.4,234.6);--el-color-info-light-9:rgb(243.9,244.2,244.8);--el-color-info-dark-2:rgb(115.2,117.6,122.4);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-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);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{box-sizing:border-box;flex-shrink:0;overflow:auto;width:var(--el-aside-width,300px)}.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;position:relative;width:var(--el-input-width)}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{color:var(--el-text-color-secondary);font-size:20px;height:100px;line-height:100px;text-align:center}.el-autocomplete-suggestion.is-loading li:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-small:24px;--el-avatar-size:40px;align-items:center;background:var(--el-avatar-bg-color);box-sizing:border-box;color:var(--el-avatar-text-color);display:inline-flex;font-size:var(--el-avatar-text-size);height:var(--el-avatar-size);justify-content:center;outline:none;overflow:hidden;text-align:center;width:var(--el-avatar-size)}.el-avatar>img{display:block;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);align-items:center;background-color:var(--el-backtop-bg-color);border-radius:50%;box-shadow:var(--el-box-shadow-lighter);color:var(--el-backtop-text-color);cursor:pointer;display:flex;font-size:20px;height:40px;justify-content:center;position:fixed;width:40px;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{content:"";display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255,255,255,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}.el-calendar{--el-calendar-border:var(--el-table-border,1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{border-bottom:var(--el-calendar-header-border-bottom);display:flex;justify-content:space-between;padding:12px 20px}.el-calendar__title{align-self:center;color:var(--el-text-color)}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{color:var(--el-text-color-regular);font-weight:400;padding:12px 0}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);transition:background-color var(--el-transition-duration-fast) ease;vertical-align:top}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;height:var(--el-calendar-cell-width);padding:8px}.el-calendar-table .el-calendar-day:hover{background-color:var(--el-calendar-selected-bg-color);cursor:pointer}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-carousel__item{display:inline-block;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.el-carousel__item,.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{height:50%;width:100%}.el-carousel__mask{background-color:var(--el-color-white);height:100%;left:0;opacity:.24;position:absolute;top:0;transition:var(--el-transition-duration-fast);width:100%}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31,45,61,.11);--el-carousel-arrow-hover-background:rgba(31,45,61,.23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal,.el-carousel--vertical{overflow:hidden}.el-carousel__container{height:300px;position:relative}.el-carousel__arrow{align-items:center;background-color:var(--el-carousel-arrow-background);border:none;border-radius:50%;color:#fff;cursor:pointer;display:inline-flex;font-size:var(--el-carousel-arrow-font-size);height:var(--el-carousel-arrow-size);justify-content:center;margin:0;outline:none;padding:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);transition:var(--el-transition-duration);width:var(--el-carousel-arrow-size);z-index:10}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{list-style:none;margin:0;padding:0;position:absolute;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical)*2);position:static;text-align:center;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--right{right:0}.el-carousel__indicators--labels{left:0;right:0;text-align:center;transform:none}.el-carousel__indicators--labels .el-carousel__button{color:#000;font-size:12px;height:auto;padding:2px 18px;width:auto}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{height:calc(var(--el-carousel-indicator-width)/2);width:var(--el-carousel-indicator-height)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{background-color:#fff;border:none;cursor:pointer;display:block;height:var(--el-carousel-indicator-height);margin:0;opacity:.48;outline:none;padding:0;transition:var(--el-transition-duration);width:var(--el-carousel-indicator-width)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{opacity:0;transform:translateY(-50%) translate(-10px)}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{opacity:0;transform:translateY(-50%) translate(10px)}.el-transitioning{filter:url(#elCarouselHorizontal)}.el-transitioning-vertical{filter:url(#elCarouselVertical)}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);display:flex;font-size:var(--el-cascader-menu-font-size)}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{border-right:var(--el-cascader-menu-border);box-sizing:border-box;color:var(--el-cascader-menu-text-color);min-width:180px}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{box-sizing:border-box;list-style:none;margin:0;min-height:100%;padding:6px 0;position:relative}.el-cascader-menu__hover-zone{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.el-cascader-menu__empty-text{align-items:center;color:var(--el-cascader-color-empty);display:flex;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{align-items:center;display:flex;height:34px;line-height:34px;outline:none;padding:0 30px 0 20px;position:relative}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{left:10px;position:absolute}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;overflow:hidden;padding:0 8px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;font-size:var(--el-font-size-base);line-height:32px;outline:none;position:relative;vertical-align:middle}.el-cascader:not(.is-disabled):hover .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset;cursor:pointer}.el-cascader .el-input{cursor:pointer;display:flex}.el-cascader .el-input .el-input__inner{cursor:pointer;text-overflow:ellipsis}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{font-size:14px;transition:transform var(--el-transition-duration)}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--large .el-cascader__tags{gap:6px;padding:8px}.el-cascader--large .el-cascader__search-input{height:24px;margin-left:7px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader--small .el-cascader__tags{gap:4px;padding:2px}.el-cascader--small .el-cascader__search-input{height:20px;margin-left:5px}.el-cascader.is-disabled .el-cascader__label{color:var(--el-disabled-text-color);z-index:calc(var(--el-index-normal) + 1)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill)}.el-cascader__dropdown.el-popper,.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__tags{box-sizing:border-box;display:flex;flex-wrap:wrap;gap:6px;left:0;line-height:normal;padding:4px;position:absolute;right:30px;text-align:left;top:50%;transform:translateY(-50%)}.el-cascader__tags .el-tag{align-items:center;background:var(--el-cascader-tag-background);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__tags .el-tag.el-tag--dark,.el-cascader__tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__tags .el-tag+input{margin-left:0}.el-cascader__tags.is-validate{right:55px}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{align-items:center;background:var(--el-fill-color);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag.el-tag--dark,.el-cascader__collapse-tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__collapse-tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags .el-tag+input{margin-left:0}.el-cascader__collapse-tags .el-tag{margin:2px 0}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{color:var(--el-cascader-menu-text-color);font-size:var(--el-font-size-base);margin:0;max-height:204px;padding:6px 0;text-align:center}.el-cascader__suggestion-item{align-items:center;cursor:pointer;display:flex;height:34px;justify-content:space-between;outline:none;padding:0 15px;text-align:left}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{color:var(--el-cascader-color-empty);margin:10px 0}.el-cascader__search-input{background:transparent;border:none;box-sizing:border-box;color:var(--el-cascader-menu-text-color);flex:1;height:24px;margin-left:7px;min-width:60px;outline:none;padding:0}.el-cascader__search-input::-moz-placeholder{color:transparent}.el-cascader__search-input::placeholder{color:transparent}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:700;line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all)}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled,.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled,.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled,.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled,.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled,.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary);display:inline-block;position:relative}.el-checkbox-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left-color:transparent;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);line-height:1;margin:0;outline:none;padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{margin:0;opacity:0;outline:none;position:absolute;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7);color:var(--el-checkbox-button-checked-text-color)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-bottom-left-radius:var(--el-border-radius-base);border-left:var(--el-border);border-top-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-bottom-right-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;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);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{flex:0 0 0%;max-width:0}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{left:0;position:relative}.el-col-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-1,.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{left:4.1666666667%;position:relative}.el-col-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-2,.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{left:8.3333333333%;position:relative}.el-col-3{flex:0 0 12.5%;max-width:12.5%}.el-col-3,.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{left:12.5%;position:relative}.el-col-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-4,.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{left:16.6666666667%;position:relative}.el-col-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-5,.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{left:20.8333333333%;position:relative}.el-col-6{flex:0 0 25%;max-width:25%}.el-col-6,.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{left:25%;position:relative}.el-col-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-7,.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{left:29.1666666667%;position:relative}.el-col-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-8,.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{left:33.3333333333%;position:relative}.el-col-9{flex:0 0 37.5%;max-width:37.5%}.el-col-9,.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{left:37.5%;position:relative}.el-col-10{flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-10,.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{left:41.6666666667%;position:relative}.el-col-11{flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-11,.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{left:45.8333333333%;position:relative}.el-col-12{flex:0 0 50%;max-width:50%}.el-col-12,.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%;position:relative}.el-col-13{flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-13,.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{left:54.1666666667%;position:relative}.el-col-14{flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-14,.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{left:58.3333333333%;position:relative}.el-col-15{flex:0 0 62.5%;max-width:62.5%}.el-col-15,.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{left:62.5%;position:relative}.el-col-16{flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-16,.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{left:66.6666666667%;position:relative}.el-col-17{flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-17,.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{left:70.8333333333%;position:relative}.el-col-18{flex:0 0 75%;max-width:75%}.el-col-18,.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{left:75%;position:relative}.el-col-19{flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-19,.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{left:79.1666666667%;position:relative}.el-col-20{flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-20,.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{left:83.3333333333%;position:relative}.el-col-21{flex:0 0 87.5%;max-width:87.5%}.el-col-21,.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{left:87.5%;position:relative}.el-col-22{flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-22,.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{left:91.6666666667%;position:relative}.el-col-23{flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-23,.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{left:95.8333333333%;position:relative}.el-col-24{flex:0 0 100%;max-width:100%}.el-col-24,.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{left:100%;position:relative}@media only screen and (max-width:767px){.el-col-xs-0{display:none;flex:0 0 0%;max-width:0}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{left:0;position:relative}.el-col-xs-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xs-1,.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{left:4.1666666667%;position:relative}.el-col-xs-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xs-2,.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{left:8.3333333333%;position:relative}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xs-3,.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{left:12.5%;position:relative}.el-col-xs-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xs-4,.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{left:16.6666666667%;position:relative}.el-col-xs-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xs-5,.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{left:20.8333333333%;position:relative}.el-col-xs-6{flex:0 0 25%;max-width:25%}.el-col-xs-6,.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{left:25%;position:relative}.el-col-xs-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xs-7,.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{left:29.1666666667%;position:relative}.el-col-xs-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xs-8,.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{left:33.3333333333%;position:relative}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xs-9,.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{left:37.5%;position:relative}.el-col-xs-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{left:41.6666666667%;position:relative}.el-col-xs-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{left:45.8333333333%;position:relative}.el-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{left:50%;position:relative}.el-col-xs-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{left:54.1666666667%;position:relative}.el-col-xs-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{left:58.3333333333%;position:relative}.el-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{left:62.5%;position:relative}.el-col-xs-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{left:66.6666666667%;position:relative}.el-col-xs-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{left:70.8333333333%;position:relative}.el-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{left:75%;position:relative}.el-col-xs-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{left:79.1666666667%;position:relative}.el-col-xs-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{left:83.3333333333%;position:relative}.el-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{left:87.5%;position:relative}.el-col-xs-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{left:91.6666666667%;position:relative}.el-col-xs-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{left:95.8333333333%;position:relative}.el-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{left:100%;position:relative}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;flex:0 0 0%;max-width:0}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{left:0;position:relative}.el-col-sm-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-sm-1,.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{left:4.1666666667%;position:relative}.el-col-sm-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-sm-2,.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{left:8.3333333333%;position:relative}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%}.el-col-sm-3,.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{left:12.5%;position:relative}.el-col-sm-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-sm-4,.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{left:16.6666666667%;position:relative}.el-col-sm-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-sm-5,.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{left:20.8333333333%;position:relative}.el-col-sm-6{flex:0 0 25%;max-width:25%}.el-col-sm-6,.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{left:25%;position:relative}.el-col-sm-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-sm-7,.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{left:29.1666666667%;position:relative}.el-col-sm-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-sm-8,.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{left:33.3333333333%;position:relative}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%}.el-col-sm-9,.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{left:37.5%;position:relative}.el-col-sm-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{left:41.6666666667%;position:relative}.el-col-sm-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{left:45.8333333333%;position:relative}.el-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{left:50%;position:relative}.el-col-sm-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{left:54.1666666667%;position:relative}.el-col-sm-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{left:58.3333333333%;position:relative}.el-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{left:62.5%;position:relative}.el-col-sm-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{left:66.6666666667%;position:relative}.el-col-sm-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{left:70.8333333333%;position:relative}.el-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{left:75%;position:relative}.el-col-sm-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{left:79.1666666667%;position:relative}.el-col-sm-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{left:83.3333333333%;position:relative}.el-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{left:87.5%;position:relative}.el-col-sm-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{left:91.6666666667%;position:relative}.el-col-sm-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{left:95.8333333333%;position:relative}.el-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{left:100%;position:relative}}@media only screen and (min-width:992px){.el-col-md-0{display:none;flex:0 0 0%;max-width:0}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{left:0;position:relative}.el-col-md-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-md-1,.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{left:4.1666666667%;position:relative}.el-col-md-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-md-2,.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{left:8.3333333333%;position:relative}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%}.el-col-md-3,.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{left:12.5%;position:relative}.el-col-md-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-md-4,.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{left:16.6666666667%;position:relative}.el-col-md-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-md-5,.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{left:20.8333333333%;position:relative}.el-col-md-6{flex:0 0 25%;max-width:25%}.el-col-md-6,.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{left:25%;position:relative}.el-col-md-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-md-7,.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{left:29.1666666667%;position:relative}.el-col-md-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-md-8,.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{left:33.3333333333%;position:relative}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%}.el-col-md-9,.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{left:37.5%;position:relative}.el-col-md-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{left:41.6666666667%;position:relative}.el-col-md-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{left:45.8333333333%;position:relative}.el-col-md-12{display:block;flex:0 0 50%;max-width:50%}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{left:50%;position:relative}.el-col-md-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{left:54.1666666667%;position:relative}.el-col-md-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{left:58.3333333333%;position:relative}.el-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{left:62.5%;position:relative}.el-col-md-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{left:66.6666666667%;position:relative}.el-col-md-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{left:70.8333333333%;position:relative}.el-col-md-18{display:block;flex:0 0 75%;max-width:75%}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{left:75%;position:relative}.el-col-md-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{left:79.1666666667%;position:relative}.el-col-md-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{left:83.3333333333%;position:relative}.el-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{left:87.5%;position:relative}.el-col-md-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{left:91.6666666667%;position:relative}.el-col-md-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{left:95.8333333333%;position:relative}.el-col-md-24{display:block;flex:0 0 100%;max-width:100%}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{left:100%;position:relative}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;flex:0 0 0%;max-width:0}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{left:0;position:relative}.el-col-lg-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-lg-1,.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{left:4.1666666667%;position:relative}.el-col-lg-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-lg-2,.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{left:8.3333333333%;position:relative}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%}.el-col-lg-3,.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{left:12.5%;position:relative}.el-col-lg-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-lg-4,.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{left:16.6666666667%;position:relative}.el-col-lg-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-lg-5,.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{left:20.8333333333%;position:relative}.el-col-lg-6{flex:0 0 25%;max-width:25%}.el-col-lg-6,.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{left:25%;position:relative}.el-col-lg-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-lg-7,.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{left:29.1666666667%;position:relative}.el-col-lg-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-lg-8,.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{left:33.3333333333%;position:relative}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%}.el-col-lg-9,.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{left:37.5%;position:relative}.el-col-lg-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{left:41.6666666667%;position:relative}.el-col-lg-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{left:45.8333333333%;position:relative}.el-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{left:50%;position:relative}.el-col-lg-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{left:54.1666666667%;position:relative}.el-col-lg-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{left:58.3333333333%;position:relative}.el-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{left:62.5%;position:relative}.el-col-lg-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{left:66.6666666667%;position:relative}.el-col-lg-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{left:70.8333333333%;position:relative}.el-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{left:75%;position:relative}.el-col-lg-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{left:79.1666666667%;position:relative}.el-col-lg-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{left:83.3333333333%;position:relative}.el-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{left:87.5%;position:relative}.el-col-lg-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{left:91.6666666667%;position:relative}.el-col-lg-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{left:95.8333333333%;position:relative}.el-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{left:100%;position:relative}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;flex:0 0 0%;max-width:0}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{left:0;position:relative}.el-col-xl-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xl-1,.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{left:4.1666666667%;position:relative}.el-col-xl-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xl-2,.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{left:8.3333333333%;position:relative}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xl-3,.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{left:12.5%;position:relative}.el-col-xl-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xl-4,.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{left:16.6666666667%;position:relative}.el-col-xl-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xl-5,.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{left:20.8333333333%;position:relative}.el-col-xl-6{flex:0 0 25%;max-width:25%}.el-col-xl-6,.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{left:25%;position:relative}.el-col-xl-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xl-7,.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{left:29.1666666667%;position:relative}.el-col-xl-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xl-8,.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{left:33.3333333333%;position:relative}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xl-9,.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{left:37.5%;position:relative}.el-col-xl-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{left:41.6666666667%;position:relative}.el-col-xl-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{left:45.8333333333%;position:relative}.el-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{left:50%;position:relative}.el-col-xl-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{left:54.1666666667%;position:relative}.el-col-xl-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{left:58.3333333333%;position:relative}.el-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{left:62.5%;position:relative}.el-col-xl-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{left:66.6666666667%;position:relative}.el-col-xl-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{left:70.8333333333%;position:relative}.el-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{left:75%;position:relative}.el-col-xl-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{left:79.1666666667%;position:relative}.el-col-xl-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{left:83.3333333333%;position:relative}.el-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{left:87.5%;position:relative}.el-col-xl-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{left:91.6666666667%;position:relative}.el-col-xl-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{left:95.8333333333%;position:relative}.el-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{left:100%;position:relative}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-bottom:1px solid var(--el-collapse-border-color);border-top:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{align-items:center;background-color:var(--el-collapse-header-bg-color);border:none;border-bottom:1px solid var(--el-collapse-border-color);color:var(--el-collapse-header-text-color);cursor:pointer;display:flex;font-size:var(--el-collapse-header-font-size);font-weight:500;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);outline:none;padding:0;transition:border-bottom-color var(--el-transition-duration);width:100%}.el-collapse-item__arrow{font-weight:300;transition:transform var(--el-transition-duration)}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{flex:auto;text-align:left}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{background-color:var(--el-collapse-content-bg-color);border-bottom:1px solid var(--el-collapse-border-color);box-sizing:border-box;overflow:hidden;will-change:height}.el-collapse-item__content{color:var(--el-collapse-content-text-color);font-size:var(--el-collapse-content-font-size);line-height:1.7692307692;padding-bottom:25px}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{border-radius:4px;cursor:pointer;height:20px;margin:0 0 8px 8px;width:20px}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{border-radius:3px;display:flex;height:100%}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{background-color:red;box-sizing:border-box;float:right;height:12px;padding:0 2px;position:relative;width:280px}.el-color-hue-slider__bar{background:linear-gradient(90deg,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00);height:100%;position:relative}.el-color-hue-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-hue-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-hue-slider.is-vertical{height:180px;padding:2px 0;width:12px}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-svpanel{height:180px;position:relative;width:280px}.el-color-svpanel__black,.el-color-svpanel__white{bottom:0;left:0;position:absolute;right:0;top:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(0deg,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;cursor:head;height:4px;transform:translate(-2px,-2px);width:4px}.el-color-alpha-slider{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;box-sizing:border-box;height:12px;position:relative;width:280px}.el-color-alpha-slider__bar{background:linear-gradient(to right,rgba(255,255,255,0) 0,var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-alpha-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-alpha-slider.is-vertical{height:180px;width:20px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,rgba(255,255,255,0) 0,rgb(255,255,255))}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{clear:both;content:"";display:table}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{color:#000;float:left;font-size:12px;line-height:26px;width:160px}.el-color-picker{display:inline-block;height:32px;line-height:normal;outline:none;position:relative;width:32px}.el-color-picker:hover:not(.is-disabled,.is-focused) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-focused .el-color-picker__trigger{border-color:var(--el-color-primary)}.el-color-picker.is-disabled .el-color-picker__trigger{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-color-picker.is-disabled .el-color-picker__color{opacity:.3}.el-color-picker--large{height:40px;width:40px}.el-color-picker--small{height:24px;width:24px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__trigger{align-items:center;border:1px solid var(--el-border-color);border-radius:4px;cursor:pointer;display:inline-flex;font-size:0;justify-content:center;padding:4px}.el-color-picker__color,.el-color-picker__trigger{box-sizing:border-box;height:100%;position:relative;width:100%}.el-color-picker__color{border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);display:block;text-align:center}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px}.el-color-picker__color-inner{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{align-items:center;color:#fff;display:inline-flex;font-size:12px;justify-content:center}.el-color-picker__panel{background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);box-sizing:content-box;padding:6px;position:absolute;z-index:10}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333333}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;cursor:pointer;height:30px;padding:4px 0;position:relative;text-align:center;width:32px}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;display:block;height:24px;left:50%;line-height:24px;margin:0 auto;position:absolute;transform:translate(-50%);width:24px}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:1}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);border-radius:15px;color:#fff}.el-date-table td.week{color:var(--el-datepicker-header-text-color);font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{border-bottom:1px solid var(--el-border-color-lighter);color:var(--el-datepicker-header-text-color);font-weight:400;padding:5px}.el-month-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-month-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .el-date-table-cell__text,.el-month-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:54px}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date .el-date-table-cell,.el-month-table td.start-date .el-date-table-cell{color:#fff}.el-month-table td.end-date .el-date-table-cell__text,.el-month-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.end-date .el-date-table-cell__text,.el-year-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:60px}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.end-date .el-date-table-cell,.el-year-table td.start-date .el-date-table-cell{color:#fff}.el-year-table td.end-date .el-date-table-cell__text,.el-year-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px;vertical-align:middle}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled,.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:"";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;margin-top:8px;outline:none}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-picker__header{padding:12px 12px 0;text-align:center}.el-date-picker__header--bordered{border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{cursor:pointer;float:left;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{height:28px;position:relative;text-align:center}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-range-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-range-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-range-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-range-picker__content{box-sizing:border-box;float:left;margin:0;padding:16px;width:50%}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-range-picker__time-header>.el-icon-arrow-right{color:var(--el-datepicker-icon-color);display:table-cell;font-size:20px;vertical-align:middle}.el-date-range-picker__time-picker-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{background:#ffffff;position:absolute;right:0;top:13px;z-index:1}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:"";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:"";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-empty-padding);text-align:center}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:top;width:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:100%;vertical-align:top;width:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;text-align:left}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-input-tag__wrapper,.el-form-item.is-error .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-input-tag__wrapper:focus,.el-form-item.is-error .el-input-tag__wrapper:hover,.el-form-item.is-error .el-input__wrapper,.el-form-item.is-error .el-input__wrapper.is-focus,.el-form-item.is-error .el-input__wrapper:focus,.el-form-item.is-error .el-input__wrapper:hover,.el-form-item.is-error .el-select__wrapper,.el-form-item.is-error .el-select__wrapper.is-focus,.el-form-item.is-error .el-select__wrapper:focus,.el-form-item.is-error .el-select__wrapper:hover,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner.is-focus,.el-form-item.is-error .el-textarea__inner:focus,.el-form-item.is-error .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translate(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translate(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px)}.el-input__inner{-webkit-appearance:none;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%}.el-input__inner:focus{outline:none}.el-input__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;cursor:not-allowed}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper,.el-input-group__append{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-hidden{display:none!important}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-placeholder-color:var(--el-text-color-placeholder);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--el-input-tag-font-size);line-height:var(--el-input-tag-line-height);min-height:var(--el-input-tag-mini-height);padding:var(--el-input-tag-padding);transform:translateZ(0);transition:var(--el-transition-duration);width:var(--el-input-tag-width)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-input-tag.is-disabled,.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix,.el-input-tag__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;padding:0 var(--el-input-tag-inner-padding)}.el-input-tag__suffix{gap:8px}.el-input-tag__inner{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:var(--el-input-tag-gap);max-width:100%;min-width:0;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-input-tag__drop-indicator{background-color:var(--el-color-primary);height:var(--el-input-tag-line-height);position:absolute;top:0;width:1px}.el-input-tag__inner .el-tag{border-color:transparent;cursor:pointer;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{line-height:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-input-tag-text-color);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding:0;width:100%}.el-input-tag__input::-moz-placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input::placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);align-items:center;color:var(--el-link-text-color);cursor:pointer;display:inline-flex;flex-direction:row;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none;vertical-align:middle}.el-link.is-hover-underline:hover:after{border-bottom:1px solid var(--el-link-hover-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link.is-underline:after{border-bottom:1px solid var(--el-link-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link:hover:after{border-color:var(--el-link-hover-text-color)}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link__inner{align-items:center;display:inline-flex;justify-content:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link.is-disabled:after{border-color:var(--el-link-disabled-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@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}}.el-main{--el-main-padding:20px;box-sizing:border-box;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{background-color:var(--el-menu-bg-color);border-right:1px solid var(--el-menu-border-color);box-sizing:border-box;list-style:none;margin:0;padding-left:0;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level)*var(--el-menu-level-padding));white-space:nowrap}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{border-right:none;display:flex;flex-wrap:nowrap;height:var(--el-menu-horizontal-height)}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:1px solid var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{align-items:center;border-bottom:2px solid transparent;color:var(--el-menu-text-color);display:inline-flex;height:100%;justify-content:center;margin:0}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{border-bottom:2px solid transparent;color:var(--el-menu-text-color);height:100%}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{align-items:center;background-color:var(--el-menu-bg-color);color:var(--el-menu-text-color);display:flex;height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);padding:0 10px}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{background-color:var(--el-menu-hover-bg-color);color:var(--el-menu-active-color,var(--el-menu-hover-text-color));outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding)*2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{display:inline-block;height:0;overflow:hidden;visibility:hidden;width:0}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{border:none;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light);min-width:200px;padding:5px 0;z-index:100}.el-menu .el-icon{flex-shrink:0}.el-menu-item{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-menu-item [class^=el-icon]{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{align-items:center;box-sizing:border-box;display:inline-flex;height:100%;left:0;padding:0 var(--el-menu-base-level-padding);position:absolute;top:0;width:100%}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:none}.el-sub-menu__title.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu .el-icon{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{font-size:12px;margin-right:0;margin-top:-6px;position:absolute;right:var(--el-menu-base-level-padding);top:50%;transition:transform var(--el-transition-duration);width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{color:var(--el-text-color-secondary);font-size:12px;line-height:normal;padding:7px 0 7px var(--el-menu-base-level-padding)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{opacity:0;transition:var(--el-transition-duration-fast)}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.el-overlay.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.el-overlay.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0;min-width:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;left:50%;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;top:20px;transform:translate(-50%);transition:opacity var(--el-transition-duration),transform .4s,top .4s;width:-moz-fit-content;width:fit-content}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay);border:1px solid var(--el-notification-border-color);border-radius:var(--el-notification-radius);box-shadow:var(--el-notification-shadow);box-sizing:border-box;display:flex;overflow:hidden;overflow-wrap:break-word;padding:var(--el-notification-padding);position:fixed;transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);width:var(--el-notification-width);z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{flex:1;margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right);min-width:0}.el-notification__title{color:var(--el-notification-title-color);font-size:var(--el-notification-title-font-size);font-weight:700;line-height:var(--el-notification-icon-size);margin:0}.el-notification__content{color:var(--el-notification-content-color);font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0}.el-notification__content p{margin:0}.el-notification .el-notification__icon{flex-shrink:0;font-size:var(--el-notification-icon-size);height:var(--el-notification-icon-size);width:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{color:var(--el-notification-close-color);cursor:pointer;font-size:var(--el-notification-close-font-size);position:absolute;right:15px;top:18px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--primary{--el-notification-icon-color:var(--el-color-primary);color:var(--el-notification-icon-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{align-items:center;display:flex;justify-content:space-between;line-height:24px}.el-page-header__left{align-items:center;display:flex;margin-right:40px;position:relative}.el-page-header__back{align-items:center;cursor:pointer;display:flex}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{align-items:center;display:flex;font-size:16px;margin-right:10px}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{color:var(--el-text-color-primary);font-size:18px}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination button{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination button *{pointer-events:none}.el-pagination button:focus{outline:none}.el-pagination button.is-active,.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button.is-active{cursor:default;font-weight:700}.el-pagination button.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination button.is-disabled,.el-pagination button:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination button:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm__main{align-items:center;display:flex}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{margin-top:8px;text-align:right}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@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%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button,.el-radio-button__inner{display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;padding:8px 15px;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary);align-items:center;display:inline-flex;height:32px}.el-rate:active,.el-rate:focus{outline:none}.el-rate__item{color:var(--el-rate-void-color);cursor:pointer;display:inline-block;font-size:0;line-height:normal;position:relative;vertical-align:middle}.el-rate .el-rate__icon{display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);position:relative;transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{left:0;position:absolute;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{color:var(--el-rate-fill-color);display:inline-block;overflow:hidden}.el-rate__decimal,.el-rate__decimal--box{left:0;position:absolute;top:0}.el-rate__text{color:var(--el-rate-text-color);font-size:var(--el-rate-font-size);vertical-align:middle}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{color:var(--el-rate-disabled-void-color);cursor:auto}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{box-sizing:border-box;display:flex;flex-wrap:wrap;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;overflow:hidden;position:relative}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty,.el-select-dropdown__loading{color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0;text-align:center}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:6px 0}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{box-sizing:border-box;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);height:34px;line-height:34px;overflow:hidden;padding:0 32px 0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{background-color:unset;color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{list-style:none;margin:0;padding:0;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);font-size:12px;line-height:34px;overflow:hidden;padding:0 20px;text-overflow:ellipsis;white-space:nowrap}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;display:inline-block;position:relative;vertical-align:middle;width:var(--el-select-width)}.el-select__wrapper{align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:14px;gap:6px;line-height:24px;min-height:32px;padding:4px 12px;position:relative;text-align:left;transform:translateZ(0);transition:var(--el-transition-duration)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select__wrapper.is-disabled,.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__prefix,.el-select__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;gap:6px}.el-select__caret{color:var(--el-select-input-color);cursor:pointer;font-size:var(--el-select-input-font-size);transform:rotate(0);transition:var(--el-transition-duration)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{border-color:transparent;cursor:pointer}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{display:flex;flex-wrap:wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__tags-text{line-height:normal}.el-select__placeholder,.el-select__tags-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select__placeholder{color:var(--el-input-text-color,var(--el-text-color-regular));position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.el-select__placeholder.is-transparent{color:var(--el-text-color-placeholder);-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper,.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select__input-wrapper{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;position:absolute;z-index:-1}.el-select__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-select-multiple-input-color);font-family:inherit;font-size:inherit;height:24px;outline:none;padding:0;width:100%}.el-select__input.is-disabled{cursor:not-allowed}.el-select__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-select--large .el-select__wrapper{font-size:14px;gap:6px;line-height:24px;min-height:40px;padding:8px 16px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{font-size:12px;gap:4px;line-height:20px;min-height:24px;padding:2px 8px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);display:inline-block;height:16px;width:100%}.el-skeleton__circle{border-radius:50%;height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);width:var(--el-skeleton-circle-size)}.el-skeleton__button{border-radius:4px;height:40px;width:64px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{height:var(--el-font-size-small);width:100%}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{align-items:center;border-radius:0;display:flex;justify-content:center;width:unset}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:22%;width:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{animation:el-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translate(-50%);-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translate(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translate(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{white-space:nowrap;width:100%}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;height:50px;width:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@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}}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-grow:0;flex-shrink:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{border-color:var(--el-text-color-primary);color:var(--el-text-color-primary)}.el-step__head.is-wait{border-color:var(--el-text-color-placeholder);color:var(--el-text-color-placeholder)}.el-step__head.is-success{border-color:var(--el-color-success);color:var(--el-color-success)}.el-step__head.is-error{border-color:var(--el-color-danger);color:var(--el-color-danger)}.el-step__head.is-finish{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-step__icon{align-items:center;background:var(--el-bg-color);box-sizing:border-box;display:inline-flex;font-size:14px;height:24px;justify-content:center;position:relative;transition:.15s ease-out;width:24px;z-index:1}.el-step__icon.is-text{border:2px solid;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{color:inherit;display:inline-block;font-weight:700;line-height:1;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:currentColor;position:absolute}.el-step__line-inner{border:1px solid;box-sizing:border-box;display:block;height:0;transition:.15s ease-out;width:0}.el-step__main{text-align:left;white-space:normal}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:700}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{font-size:12px;font-weight:400;line-height:20px;margin-top:-5px;padding-right:10%}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;left:0;right:0;top:11px}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{bottom:0;left:11px;top:0;width:2px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{font-size:0;padding-right:10px;width:auto}.el-step.is-simple .el-step__icon{background:transparent;font-size:12px;height:16px;width:16px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{align-items:stretch;display:flex;flex-grow:1;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;overflow-wrap:break-word}.el-step.is-simple .el-step__arrow{align-items:center;display:flex;flex-grow:1;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{background:var(--el-text-color-placeholder);content:"";display:inline-block;height:15px;position:absolute;width:1px}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);align-items:center;display:inline-flex;font-size:14px;height:32px;line-height:20px;position:relative;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{color:var(--el-text-color-primary);cursor:pointer;display:inline-block;font-size:14px;font-weight:500;height:20px;transition:var(--el-transition-duration-fast);vertical-align:middle}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{display:inline-block;font-size:14px;line-height:1}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{height:0;margin:0;opacity:0;position:absolute;width:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{align-items:center;background:var(--el-switch-off-color);border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));border-radius:10px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:20px;min-width:40px;outline:none;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration)}.el-switch__core .el-switch__inner{align-items:center;display:flex;height:16px;justify-content:center;overflow:hidden;padding:0 4px 0 18px;transition:all var(--el-transition-duration);width:100%}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);font-size:12px;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-switch__core .el-switch__action{align-items:center;background-color:var(--el-color-white);border-radius:var(--el-border-radius-circle);color:var(--el-switch-off-color);display:flex;height:16px;justify-content:center;left:1px;position:absolute;transition:all var(--el-transition-duration);width:16px}.el-switch.is-checked .el-switch__core{background-color:var(--el-switch-on-color);border-color:var(--el-switch-border-color,var(--el-switch-on-color))}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px;line-height:24px}.el-switch--large .el-switch__label{font-size:14px;height:24px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;height:24px;min-width:50px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{height:20px;width:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{font-size:12px;height:24px;line-height:16px}.el-switch--small .el-switch__label{font-size:12px;height:16px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;height:16px;min-width:30px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{height:12px;width:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;padding:0 10px}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:transparent;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:none}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:-moz-fit-content;height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table__expand-icon{color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:20px;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;cursor:pointer;display:inline-flex;flex-direction:column;height:14px;overflow:initial;position:relative;vertical-align:middle;width:24px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{cursor:pointer;display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;height:12px;line-height:12px;margin-right:8px;text-align:center;width:12px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);font-size:var(--el-font-size-base)}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{background-color:var(--el-bg-color);display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{background-color:var(--el-bg-color);box-shadow:2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__horizontal,.el-table-v2__left .el-vl__vertical{z-index:-1}.el-table-v2__right{background-color:var(--el-bg-color);box-shadow:-2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;overflow:hidden;position:absolute;right:0;top:0}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__horizontal,.el-table-v2__right .el-vl__vertical{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{overflow:hidden;position:relative}.el-table-v2__header .el-checkbox{z-index:0}.el-table-v2__footer{bottom:0;overflow:hidden;right:0}.el-table-v2__empty,.el-table-v2__footer,.el-table-v2__overlay{left:0;position:absolute}.el-table-v2__overlay{bottom:0;right:0;top:0;z-index:9999}.el-table-v2__header-row{border-bottom:var(--el-table-border);display:flex}.el-table-v2__header-cell{align-items:center;background-color:var(--el-table-header-bg-color);color:var(--el-table-header-text-color);display:flex;font-weight:700;height:100%;overflow:hidden;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table-v2__header-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__header-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{display:none;opacity:.6;transition:opacity,display var(--el-transition-duration)}.el-table-v2__sort-icon.is-sorting{display:block;opacity:1}.el-table-v2__row{align-items:center;border-bottom:var(--el-table-border);display:flex;transition:background-color var(--el-transition-duration)}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{align-items:center;display:flex;height:100%;overflow:hidden;padding:0 8px}.el-table-v2__row-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__row-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__expand-icon{cursor:pointer;margin:0 4px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table-v2.is-dynamic .el-table-v2__row{align-items:stretch;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{overflow-wrap:break-word}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row-reverse}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--top{flex-direction:column-reverse}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translate(100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translate(-100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(-100%);transform-origin:0 0}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{margin:0;max-height:200px}.time-select-item{font-size:14px;line-height:20px;padding:8px 10px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);cursor:pointer;font-weight:700}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{padding-left:28px;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;left:4px;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{align-items:center;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;position:absolute}.el-timeline-item__node--normal{height:var(--el-timeline-node-size-normal);left:-1px;width:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{height:var(--el-timeline-node-size-large);left:-2px;width:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{align-items:center;display:flex;justify-content:center;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);font-size:var(--el-font-size-small);line-height:1}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);list-style:none;margin:0}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-tooltip-v2__content{--el-tooltip-v2-padding:5px 10px;--el-tooltip-v2-border-radius:4px;--el-tooltip-v2-border-color:var(--el-border-color);background-color:var(--el-color-white);border:1px solid var(--el-border-color);border-radius:var(--el-tooltip-v2-border-radius);color:var(--el-color-black);padding:var(--el-tooltip-v2-padding)}.el-tooltip-v2__arrow{color:var(--el-color-white);height:var(--el-tooltip-v2-arrow-height);left:var(--el-tooltip-v2-arrow-x);pointer-events:none;position:absolute;top:var(--el-tooltip-v2-arrow-y);width:var(--el-tooltip-v2-arrow-width)}.el-tooltip-v2__arrow:after,.el-tooltip-v2__arrow:before{border:var(--el-tooltip-v2-arrow-border-width) solid transparent;content:"";height:0;position:absolute;width:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow{bottom:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:before{border-bottom:0;border-top-color:var(--el-color-white);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:after{border-bottom:0;border-top-color:var(--el-border-color);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:100%;z-index:-1}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow{top:0}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:before{border-bottom-color:var(--el-color-white);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:after{border-bottom-color:var(--el-border-color);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow{right:0}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:before{border-left-color:var(--el-color-white);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:after{border-left-color:var(--el-border-color);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow{left:0}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:before{border-left:0;border-right-color:var(--el-color-white);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:after{border-left:0;border-right-color:var(--el-border-color);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:100%;z-index:-1}.el-tooltip-v2__content.is-dark{--el-tooltip-v2-border-color:transparent;color:var(--el-color-white)}.el-tooltip-v2__content.is-dark,.el-tooltip-v2__content.is-dark .el-tooltip-v2__arrow{background-color:var(--el-color-black);border-color:transparent}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;padding:0 30px;vertical-align:middle}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);box-sizing:border-box;display:inline-block;max-height:100%;overflow:hidden;position:relative;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width)}.el-transfer-panel__body{border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);height:var(--el-transfer-panel-body-height);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{box-sizing:border-box;height:var(--el-transfer-panel-body-height);list-style:none;margin:0;overflow:auto;padding:6px 0}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{display:block!important;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{box-sizing:border-box;display:block;line-height:var(--el-transfer-item-height);overflow:hidden;padding-left:22px;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{box-sizing:border-box;padding:15px;text-align:center}.el-transfer-panel__filter .el-input__inner{box-sizing:border-box;display:inline-block;font-size:12px;height:var(--el-transfer-filter-height);width:100%}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{align-items:center;background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);display:flex;height:var(--el-transfer-panel-header-height);margin:0;padding-left:15px}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;display:flex;position:relative;width:100%}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{color:var(--el-text-color-primary);font-size:16px;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{color:var(--el-text-color-secondary);font-size:12px;font-weight:400;position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0)}.el-transfer-panel .el-transfer-panel__footer{background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);height:var(--el-transfer-panel-footer-height);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{color:var(--el-text-color-secondary);height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);margin:0;padding:6px 15px 0;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{border-radius:3px;height:14px;width:14px}.el-transfer-panel .el-checkbox__inner:after{height:6px;left:4px;width:3px}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{background:transparent!important;flex:1;height:20px;line-height:20px;padding-left:0}.el-upload{--el-upload-dragger-padding-horizontal:40px;--el-upload-dragger-padding-vertical:10px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{--el-upload-picture-card-size:148px;align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-horizontal) var(--el-upload-dragger-padding-vertical);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-horizontal) - 1px) calc(var(--el-upload-dragger-padding-vertical) - 1px)}.el-upload-list{list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;-o-object-fit:contain;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-vl__wrapper{position:relative}.el-vl__wrapper.always-on .el-virtual-scrollbar,.el-vl__wrapper:hover .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;z-index:2000}.el-popper.is-dark{color:var(--el-bg-color)}.el-popper.is-dark,.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{right:0}.el-popper.is-light,.el-popper.is-light>.el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{right:0}.el-popper.is-pure{padding:0}.el-popper__arrow,.el-popper__arrow:before{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:" ";transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{color:var(--el-statistic-title-color);font-size:var(--el-statistic-title-font-size);font-weight:var(--el-statistic-title-font-weight);line-height:20px;margin-bottom:4px}.el-statistic__content{color:var(--el-statistic-content-color);font-size:var(--el-statistic-content-font-size);font-weight:var(--el-statistic-content-font-weight)}.el-statistic__value{display:inline-block}.el-statistic__prefix{display:inline-block;margin-right:4px}.el-statistic__suffix{display:inline-block;margin-left:4px}.el-tour{--el-tour-width:520px;--el-tour-padding-primary:12px;--el-tour-font-line-height:var(--el-font-line-height-primary);--el-tour-title-font-size:16px;--el-tour-title-text-color:var(--el-text-color-primary);--el-tour-title-font-weight:400;--el-tour-close-color:var(--el-color-info);--el-tour-font-size:14px;--el-tour-color:var(--el-text-color-primary);--el-tour-bg-color:var(--el-bg-color);--el-tour-border-radius:4px}.el-tour__hollow{transition:all var(--el-transition-duration) ease}.el-tour__content{border-radius:var(--el-tour-border-radius);box-shadow:var(--el-box-shadow-light);outline:none;overflow-wrap:break-word;padding:var(--el-tour-padding-primary);width:var(--el-tour-width)}.el-tour__arrow,.el-tour__content{background:var(--el-tour-bg-color);box-sizing:border-box}.el-tour__arrow{height:10px;pointer-events:none;position:absolute;transform:rotate(45deg);width:10px}.el-tour__content[data-side^=top] .el-tour__arrow{border-left-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=bottom] .el-tour__arrow{border-bottom-color:transparent;border-right-color:transparent}.el-tour__content[data-side^=left] .el-tour__arrow{border-bottom-color:transparent;border-left-color:transparent}.el-tour__content[data-side^=right] .el-tour__arrow{border-right-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=top] .el-tour__arrow{bottom:-5px}.el-tour__content[data-side^=bottom] .el-tour__arrow{top:-5px}.el-tour__content[data-side^=left] .el-tour__arrow{right:-5px}.el-tour__content[data-side^=right] .el-tour__arrow{left:-5px}.el-tour__closebtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-tour__closebtn .el-tour__close{color:var(--el-tour-close-color);font-size:inherit}.el-tour__closebtn:focus .el-tour__close,.el-tour__closebtn:hover .el-tour__close{color:var(--el-color-primary)}.el-tour__header{padding-bottom:var(--el-tour-padding-primary)}.el-tour__header.show-close{padding-right:calc(var(--el-tour-padding-primary) + var(--el-message-close-size, 16px))}.el-tour__title{color:var(--el-tour-title-text-color);font-size:var(--el-tour-title-font-size);font-weight:var(--el-tour-title-font-weight);line-height:var(--el-tour-font-line-height)}.el-tour__body{color:var(--el-tour-text-color);font-size:var(--el-tour-font-size)}.el-tour__body img,.el-tour__body video{max-width:100%}.el-tour__footer{box-sizing:border-box;display:flex;justify-content:space-between;padding-top:var(--el-tour-padding-primary)}.el-tour__content .el-tour-indicators{display:inline-block;flex:1}.el-tour__content .el-tour-indicator{background:var(--el-color-info-light-9);border-radius:50%;display:inline-block;height:6px;margin-right:6px;width:6px}.el-tour__content .el-tour-indicator.is-active{background:var(--el-color-primary)}.el-tour.el-tour--primary{--el-tour-title-text-color:#fff;--el-tour-text-color:#fff;--el-tour-bg-color:var(--el-color-primary);--el-tour-close-color:#fff}.el-tour.el-tour--primary .el-tour__closebtn:focus .el-tour__close,.el-tour.el-tour--primary .el-tour__closebtn:hover .el-tour__close{color:var(--el-tour-title-text-color)}.el-tour.el-tour--primary .el-button--default{background:#fff;border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-tour.el-tour--primary .el-button--primary{border-color:#fff}.el-tour.el-tour--primary .el-tour-indicator{background:rgba(255,255,255,.15)}.el-tour.el-tour--primary .el-tour-indicator.is-active{background:#fff}.el-tour-parent--hidden{overflow:hidden}.el-anchor{--el-anchor-bg-color:var(--el-bg-color);--el-anchor-padding-indent:14px;--el-anchor-line-height:22px;--el-anchor-font-size:12px;--el-anchor-color:var(--el-text-color-secondary);--el-anchor-active-color:var(--el-color-primary);--el-anchor-marker-bg-color:var(--el-color-primary);background-color:var(--el-anchor-bg-color);position:relative}.el-anchor__marker{background-color:var(--el-anchor-marker-bg-color);border-radius:4px;opacity:0;position:absolute;z-index:0}.el-anchor.el-anchor--vertical .el-anchor__marker{height:14px;left:0;top:8px;transition:top .25s ease-in-out,opacity .25s;width:4px}.el-anchor.el-anchor--vertical .el-anchor__list{padding-left:var(--el-anchor-padding-indent)}.el-anchor.el-anchor--vertical.el-anchor--underline:before{background-color:#0505050f;content:"";height:100%;left:0;position:absolute;width:2px}.el-anchor.el-anchor--vertical.el-anchor--underline .el-anchor__marker{border-radius:unset;width:2px}.el-anchor.el-anchor--horizontal .el-anchor__marker{bottom:0;height:2px;transition:left .25s ease-in-out,opacity .25s,width .25s;width:20px}.el-anchor.el-anchor--horizontal .el-anchor__list{display:flex;padding-bottom:4px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item{padding-left:16px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item:first-child{padding-left:0}.el-anchor.el-anchor--horizontal.el-anchor--underline:before{background-color:#0505050f;bottom:0;content:"";height:2px;position:absolute;width:100%}.el-anchor.el-anchor--horizontal.el-anchor--underline .el-anchor__marker{border-radius:unset;height:2px}.el-anchor__item{display:flex;flex-direction:column;overflow:hidden}.el-anchor__link{cursor:pointer;font-size:var(--el-anchor-font-size);line-height:var(--el-anchor-line-height);max-width:100%;outline:none;overflow:hidden;padding:4px 0;text-decoration:none;text-overflow:ellipsis;transition:color var(--el-transition-duration);white-space:nowrap}.el-anchor__link,.el-anchor__link:focus,.el-anchor__link:hover{color:var(--el-anchor-color)}.el-anchor__link.is-active{color:var(--el-anchor-active-color)}.el-anchor .el-anchor__list .el-anchor__item a{display:inline-block}.el-segmented--vertical{flex-direction:column}.el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented{--el-segmented-color:var(--el-text-color-regular);--el-segmented-bg-color:var(--el-fill-color-light);--el-segmented-padding:2px;--el-segmented-item-selected-color:var(--el-color-white);--el-segmented-item-selected-bg-color:var(--el-color-primary);--el-segmented-item-selected-disabled-bg-color:var(--el-color-primary-light-5);--el-segmented-item-hover-color:var(--el-text-color-primary);--el-segmented-item-hover-bg-color:var(--el-fill-color-dark);--el-segmented-item-active-bg-color:var(--el-fill-color-darker);--el-segmented-item-disabled-color:var(--el-text-color-placeholder);align-items:stretch;background:var(--el-segmented-bg-color);border-radius:var(--el-border-radius-base);box-sizing:border-box;color:var(--el-segmented-color);display:inline-flex;font-size:14px;min-height:32px;padding:var(--el-segmented-padding)}.el-segmented__group{align-items:stretch;display:flex;position:relative;width:100%}.el-segmented__item-selected{background:var(--el-segmented-item-selected-bg-color);border-radius:calc(var(--el-border-radius-base) - 2px);height:100%;left:0;pointer-events:none;position:absolute;top:0;transition:all .3s;width:10px}.el-segmented__item-selected.is-disabled{background:var(--el-segmented-item-selected-disabled-bg-color)}.el-segmented__item-selected.is-focus-visible:before{border-radius:inherit;content:"";top:0;right:0;bottom:0;left:0;outline:2px solid var(--el-segmented-item-selected-bg-color);outline-offset:1px;position:absolute}.el-segmented__item{align-items:center;border-radius:calc(var(--el-border-radius-base) - 2px);cursor:pointer;display:flex;flex:1;padding:0 11px}.el-segmented__item:not(.is-disabled):not(.is-selected):hover{background:var(--el-segmented-item-hover-bg-color);color:var(--el-segmented-item-hover-color)}.el-segmented__item:not(.is-disabled):not(.is-selected):active{background:var(--el-segmented-item-active-bg-color)}.el-segmented__item.is-selected,.el-segmented__item.is-selected.is-disabled{color:var(--el-segmented-item-selected-color)}.el-segmented__item.is-disabled{color:var(--el-segmented-item-disabled-color);cursor:not-allowed}.el-segmented__item-input{height:0;margin:0;opacity:0;pointer-events:none;position:absolute;width:0}.el-segmented__item-label{flex:1;line-height:normal;overflow:hidden;text-align:center;text-overflow:ellipsis;transition:color .3s;white-space:nowrap;z-index:1}.el-segmented.is-block{display:flex}.el-segmented.is-block .el-segmented__item{min-width:0}.el-segmented--large{border-radius:var(--el-border-radius-base);font-size:16px;min-height:40px}.el-segmented--large .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 2px)}.el-segmented--large .el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented--large .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 2px);padding:0 11px}.el-segmented--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:14px;min-height:24px}.el-segmented--small .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 3px)}.el-segmented--small .el-segmented--vertical .el-segmented__item{padding:7px}.el-segmented--small .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 3px);padding:0 7px}.el-mention{position:relative;width:100%}.el-mention__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-mention__popper.el-popper,.el-mention__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-mention__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-mention-dropdown{--el-mention-font-size:var(--el-font-size-base);--el-mention-bg-color:var(--el-bg-color-overlay);--el-mention-shadow:var(--el-box-shadow-light);--el-mention-border:1px solid var(--el-border-color-light);--el-mention-option-color:var(--el-text-color-regular);--el-mention-option-height:34px;--el-mention-option-min-width:100px;--el-mention-option-hover-background:var(--el-fill-color-light);--el-mention-option-selected-color:var(--el-color-primary);--el-mention-option-disabled-color:var(--el-text-color-placeholder);--el-mention-option-loading-color:var(--el-text-color-secondary);--el-mention-option-loading-padding:10px 0;--el-mention-max-height:174px;--el-mention-padding:6px 0;--el-mention-header-padding:10px;--el-mention-footer-padding:10px}.el-mention-dropdown__item{box-sizing:border-box;color:var(--el-mention-option-color);cursor:pointer;font-size:var(--el-mention-font-size);height:var(--el-mention-option-height);line-height:var(--el-mention-option-height);min-width:var(--el-mention-option-min-width);overflow:hidden;padding:0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-mention-dropdown__item.is-hovering{background-color:var(--el-mention-option-hover-background)}.el-mention-dropdown__item.is-selected{color:var(--el-mention-option-selected-color);font-weight:700}.el-mention-dropdown__item.is-disabled{background-color:unset;color:var(--el-mention-option-disabled-color);cursor:not-allowed}.el-mention-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-mention-dropdown__loading{color:var(--el-mention-option-loading-color);font-size:12px;margin:0;min-width:var(--el-mention-option-min-width);padding:10px 0;text-align:center}.el-mention-dropdown__wrap{max-height:var(--el-mention-max-height)}.el-mention-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:var(--el-mention-padding)}.el-mention-dropdown__header{border-bottom:var(--el-mention-border);padding:var(--el-mention-header-padding)}.el-mention-dropdown__footer{border-top:var(--el-mention-border);padding:var(--el-mention-footer-padding)}.el-splitter{display:flex;height:100%;margin:0;padding:0;position:relative;width:100%}.el-splitter__mask{top:0;right:0;bottom:0;left:0;position:absolute;z-index:999}.el-splitter__mask-horizontal{cursor:col-resize}.el-splitter__mask-vertical{cursor:row-resize}.el-splitter__horizontal{flex-direction:row}.el-splitter__vertical{flex-direction:column}.el-splitter-bar{flex:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-splitter-bar__disable{cursor:auto!important}.el-splitter-bar__disable:before{background-color:var(--el-border-color-light)!important}.el-splitter-bar__dragger{background:transparent;z-index:1}.el-splitter-bar__dragger,.el-splitter-bar__dragger:before{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:before{background-color:var(--el-border-color-light);content:""}.el-splitter-bar__dragger:hover:before{background-color:var(--el-color-primary-light-5)}.el-splitter-bar__dragger-horizontal:before{height:100%;width:2px}.el-splitter-bar__dragger-vertical:before{height:2px;width:100%}.el-splitter-bar__dragger-active:before{background-color:var(--el-color-primary-light-3)}.el-splitter-bar:hover .el-splitter-bar__collapse-icon{opacity:1}.el-splitter-bar__collapse-icon{align-items:center;background:var(--el-border-color-light);border-radius:2px;cursor:pointer;display:flex;justify-content:center;opacity:0;position:absolute;z-index:9}.el-splitter-bar__collapse-icon:hover{background-color:var(--el-color-primary-light-5);opacity:1}.el-splitter-bar__horizontal-collapse-icon-start{height:24px;left:-12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__horizontal-collapse-icon-end{height:24px;left:12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__vertical-collapse-icon-start{height:16px;right:50%;top:-12px;transform:translate(50%,-50%);width:24px}.el-splitter-bar__vertical-collapse-icon-end{height:16px;right:50%;top:12px;transform:translate(50%,-50%);width:24px}.el-splitter-panel{box-sizing:border-box;flex-grow:0;overflow:auto;scrollbar-width:thin}:root{--primary-color: #409eff;--success-color: #67c23a;--warning-color: #e6a23c;--danger-color: #f56c6c;--info-color: #909399;--text-primary: #303133;--text-regular: #606266;--text-secondary: #909399;--text-placeholder: #c0c4cc;--border-base: #dcdfe6;--border-light: #e4e7ed;--border-lighter: #ebeef5;--border-extra-light: #f2f6fc;--background-base: #f5f7fa;--background-light: #fafafa}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;color:var(--text-primary);background-color:#fff}#app{height:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.flex{display:flex}.flex-1{flex:1}.flex-center{display:flex;align-items:center;justify-content:center}.text-center{text-align:center}.mb-4{margin-bottom:16px}.mr-2{margin-right:8px}.ml-2{margin-left:8px} diff --git a/dist/assets/index-e0e8b1e6.js b/dist/assets/index-e0e8b1e6.js new file mode 100644 index 0000000..ffa3125 --- /dev/null +++ b/dist/assets/index-e0e8b1e6.js @@ -0,0 +1,3146 @@ +var WUe=Object.defineProperty;var qUe=(e,t,n)=>t in e?WUe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var lt=(e,t,n)=>(qUe(e,typeof t!="symbol"?t+"":t,n),n),Sz=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var x=(e,t,n)=>(Sz(e,t,"read from private field"),n?n.call(e):t.get(e)),Q=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},te=(e,t,n,r)=>(Sz(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var Ha=(e,t,n,r)=>({set _(o){te(e,t,o,n)},get _(){return x(e,t,r)}}),ge=(e,t,n)=>(Sz(e,t,"access private method"),n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const i of a.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(o){if(o.ep)return;o.ep=!0;const a=n(o);fetch(o.href,a)}})();/** +* @vue/shared v3.5.16 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Zte(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const To={},x3=[],fr=()=>{},KUe=()=>!1,rL=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Qte=e=>e.startsWith("onUpdate:"),Ba=Object.assign,ene=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},GUe=Object.prototype.hasOwnProperty,Gn=(e,t)=>GUe.call(e,t),ct=Array.isArray,S3=e=>QA(e)==="[object Map]",oL=e=>QA(e)==="[object Set]",Fm=e=>QA(e)==="[object Date]",Rt=e=>typeof e=="function",$t=e=>typeof e=="string",af=e=>typeof e=="symbol",vn=e=>e!==null&&typeof e=="object",Ub=e=>(vn(e)||Rt(e))&&Rt(e.then)&&Rt(e.catch),i8e=Object.prototype.toString,QA=e=>i8e.call(e),YUe=e=>QA(e).slice(8,-1),bD=e=>QA(e)==="[object Object]",tne=e=>$t(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,xS=Zte(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),aL=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},XUe=/-(\w)/g,wl=aL(e=>e.replace(XUe,(t,n)=>n?n.toUpperCase():"")),JUe=/\B([A-Z])/g,Ng=aL(e=>e.replace(JUe,"-$1").toLowerCase()),eT=aL(e=>e.charAt(0).toUpperCase()+e.slice(1)),SS=aL(e=>e?`on${eT(e)}`:""),om=(e,t)=>!Object.is(e,t),LF=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},aY=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ZUe=e=>{const t=$t(e)?Number(e):NaN;return isNaN(t)?e:t};let Gce;const iL=()=>Gce||(Gce=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Nt(e){if(ct(e)){const t={};for(let n=0;n{if(n){const r=n.split(eVe);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function ee(e){let t="";if($t(e))t=e;else if(ct(e))for(let n=0;nr8(n,t))}const c8e=e=>!!(e&&e.__v_isRef===!0),se=e=>$t(e)?e:e==null?"":ct(e)||vn(e)&&(e.toString===i8e||!Rt(e.toString))?c8e(e)?se(e.value):JSON.stringify(e,d8e,2):String(e),d8e=(e,t)=>c8e(t)?d8e(e,t.value):S3(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o],a)=>(n[Dz(r,a)+" =>"]=o,n),{})}:oL(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Dz(n))}:af(t)?Dz(t):vn(t)&&!ct(t)&&!bD(t)?String(t):t,Dz=(e,t="")=>{var n;return af(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.16 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Bs;class f8e{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Bs,!t&&Bs&&(this.index=(Bs.scopes||(Bs.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(Bs=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(ES){let t=ES;for(ES=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;DS;){let t=DS;for(DS=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function v8e(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function m8e(e){let t,n=e.depsTail,r=n;for(;r;){const o=r.prevDep;r.version===-1?(r===n&&(n=o),sne(r),iVe(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=o}e.deps=t,e.depsTail=n}function iY(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(y8e(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function y8e(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===_D)||(e.globalVersion=_D,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!iY(e))))return;e.flags|=2;const t=e.dep,n=Lo,r=Xd;Lo=e,Xd=!0;try{v8e(e);const o=e.fn(e._value);(t.version===0||om(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{Lo=n,Xd=r,m8e(e),e.flags&=-3}}function sne(e,t=!1){const{dep:n,prevSub:r,nextSub:o}=e;if(r&&(r.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let a=n.computed.deps;a;a=a.nextDep)sne(a,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function iVe(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Xd=!0;const b8e=[];function Sg(){b8e.push(Xd),Xd=!1}function Dg(){const e=b8e.pop();Xd=e===void 0?!0:e}function Yce(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Lo;Lo=void 0;try{t()}finally{Lo=n}}}let _D=0,sVe=class{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}};class sL{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!Lo||!Xd||Lo===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Lo)n=this.activeLink=new sVe(Lo,this),Lo.deps?(n.prevDep=Lo.depsTail,Lo.depsTail.nextDep=n,Lo.depsTail=n):Lo.deps=Lo.depsTail=n,_8e(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Lo.depsTail,n.nextDep=void 0,Lo.depsTail.nextDep=n,Lo.depsTail=n,Lo.deps===n&&(Lo.deps=r)}return n}trigger(t){this.version++,_D++,this.notify(t)}notify(t){ane();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{ine()}}}function _8e(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)_8e(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const SM=new WeakMap,sb=Symbol(""),sY=Symbol(""),wD=Symbol("");function Ls(e,t,n){if(Xd&&Lo){let r=SM.get(e);r||SM.set(e,r=new Map);let o=r.get(n);o||(r.set(n,o=new sL),o.map=r,o.key=n),o.track()}}function ig(e,t,n,r,o,a){const i=SM.get(e);if(!i){_D++;return}const s=l=>{l&&l.trigger()};if(ane(),t==="clear")i.forEach(s);else{const l=ct(e),u=l&&tne(n);if(l&&n==="length"){const c=Number(r);i.forEach((d,f)=>{(f==="length"||f===wD||!af(f)&&f>=c)&&s(d)})}else switch((n!==void 0||i.has(void 0))&&s(i.get(n)),u&&s(i.get(wD)),t){case"add":l?u&&s(i.get("length")):(s(i.get(sb)),S3(e)&&s(i.get(sY)));break;case"delete":l||(s(i.get(sb)),S3(e)&&s(i.get(sY)));break;case"set":S3(e)&&s(i.get(sb));break}}ine()}function lVe(e,t){const n=SM.get(e);return n&&n.get(t)}function K_(e){const t=Cr(e);return t===e?t:(Ls(t,"iterate",wD),Jc(e)?t:t.map(ps))}function lL(e){return Ls(e=Cr(e),"iterate",wD),e}const uVe={__proto__:null,[Symbol.iterator](){return kz(this,Symbol.iterator,ps)},concat(...e){return K_(this).concat(...e.map(t=>ct(t)?K_(t):t))},entries(){return kz(this,"entries",e=>(e[1]=ps(e[1]),e))},every(e,t){return rp(this,"every",e,t,void 0,arguments)},filter(e,t){return rp(this,"filter",e,t,n=>n.map(ps),arguments)},find(e,t){return rp(this,"find",e,t,ps,arguments)},findIndex(e,t){return rp(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return rp(this,"findLast",e,t,ps,arguments)},findLastIndex(e,t){return rp(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return rp(this,"forEach",e,t,void 0,arguments)},includes(...e){return Az(this,"includes",e)},indexOf(...e){return Az(this,"indexOf",e)},join(e){return K_(this).join(e)},lastIndexOf(...e){return Az(this,"lastIndexOf",e)},map(e,t){return rp(this,"map",e,t,void 0,arguments)},pop(){return tx(this,"pop")},push(...e){return tx(this,"push",e)},reduce(e,...t){return Xce(this,"reduce",e,t)},reduceRight(e,...t){return Xce(this,"reduceRight",e,t)},shift(){return tx(this,"shift")},some(e,t){return rp(this,"some",e,t,void 0,arguments)},splice(...e){return tx(this,"splice",e)},toReversed(){return K_(this).toReversed()},toSorted(e){return K_(this).toSorted(e)},toSpliced(...e){return K_(this).toSpliced(...e)},unshift(...e){return tx(this,"unshift",e)},values(){return kz(this,"values",ps)}};function kz(e,t,n){const r=lL(e),o=r[t]();return r!==e&&!Jc(e)&&(o._next=o.next,o.next=()=>{const a=o._next();return a.value&&(a.value=n(a.value)),a}),o}const cVe=Array.prototype;function rp(e,t,n,r,o,a){const i=lL(e),s=i!==e&&!Jc(e),l=i[t];if(l!==cVe[t]){const d=l.apply(e,a);return s?ps(d):d}let u=n;i!==e&&(s?u=function(d,f){return n.call(this,ps(d),f,e)}:n.length>2&&(u=function(d,f){return n.call(this,d,f,e)}));const c=l.call(i,u,r);return s&&o?o(c):c}function Xce(e,t,n,r){const o=lL(e);let a=n;return o!==e&&(Jc(e)?n.length>3&&(a=function(i,s,l){return n.call(this,i,s,l,e)}):a=function(i,s,l){return n.call(this,i,ps(s),l,e)}),o[t](a,...r)}function Az(e,t,n){const r=Cr(e);Ls(r,"iterate",wD);const o=r[t](...n);return(o===-1||o===!1)&&dne(n[0])?(n[0]=Cr(n[0]),r[t](...n)):o}function tx(e,t,n=[]){Sg(),ane();const r=Cr(e)[t].apply(e,n);return ine(),Dg(),r}const dVe=Zte("__proto__,__v_isRef,__isVue"),w8e=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(af));function fVe(e){af(e)||(e=String(e));const t=Cr(this);return Ls(t,"has",e),t.hasOwnProperty(e)}class C8e{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return a;if(n==="__v_raw")return r===(o?a?CVe:E8e:a?D8e:S8e).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=ct(t);if(!o){let l;if(i&&(l=uVe[n]))return l;if(n==="hasOwnProperty")return fVe}const s=Reflect.get(t,n,kr(t)?t:r);return(af(n)?w8e.has(n):dVe(n))||(o||Ls(t,"get",n),a)?s:kr(s)?i&&tne(n)?s:s.value:vn(s)?o?lC(s):Bn(s):s}}class x8e extends C8e{constructor(t=!1){super(!1,t)}set(t,n,r,o){let a=t[n];if(!this._isShallow){const l=Im(a);if(!Jc(r)&&!Im(r)&&(a=Cr(a),r=Cr(r)),!ct(t)&&kr(a)&&!kr(r))return l?!1:(a.value=r,!0)}const i=ct(t)&&tne(n)?Number(n)e,U7=e=>Reflect.getPrototypeOf(e);function mVe(e,t,n){return function(...r){const o=this.__v_raw,a=Cr(o),i=S3(a),s=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,u=o[e](...r),c=n?lY:t?DM:ps;return!t&&Ls(a,"iterate",l?sY:sb),{next(){const{value:d,done:f}=u.next();return f?{value:d,done:f}:{value:s?[c(d[0]),c(d[1])]:c(d),done:f}},[Symbol.iterator](){return this}}}}function V7(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function yVe(e,t){const n={get(o){const a=this.__v_raw,i=Cr(a),s=Cr(o);e||(om(o,s)&&Ls(i,"get",o),Ls(i,"get",s));const{has:l}=U7(i),u=t?lY:e?DM:ps;if(l.call(i,o))return u(a.get(o));if(l.call(i,s))return u(a.get(s));a!==i&&a.get(o)},get size(){const o=this.__v_raw;return!e&&Ls(Cr(o),"iterate",sb),Reflect.get(o,"size",o)},has(o){const a=this.__v_raw,i=Cr(a),s=Cr(o);return e||(om(o,s)&&Ls(i,"has",o),Ls(i,"has",s)),o===s?a.has(o):a.has(o)||a.has(s)},forEach(o,a){const i=this,s=i.__v_raw,l=Cr(s),u=t?lY:e?DM:ps;return!e&&Ls(l,"iterate",sb),s.forEach((c,d)=>o.call(a,u(c),u(d),i))}};return Ba(n,e?{add:V7("add"),set:V7("set"),delete:V7("delete"),clear:V7("clear")}:{add(o){!t&&!Jc(o)&&!Im(o)&&(o=Cr(o));const a=Cr(this);return U7(a).has.call(a,o)||(a.add(o),ig(a,"add",o,o)),this},set(o,a){!t&&!Jc(a)&&!Im(a)&&(a=Cr(a));const i=Cr(this),{has:s,get:l}=U7(i);let u=s.call(i,o);u||(o=Cr(o),u=s.call(i,o));const c=l.call(i,o);return i.set(o,a),u?om(a,c)&&ig(i,"set",o,a):ig(i,"add",o,a),this},delete(o){const a=Cr(this),{has:i,get:s}=U7(a);let l=i.call(a,o);l||(o=Cr(o),l=i.call(a,o)),s&&s.call(a,o);const u=a.delete(o);return l&&ig(a,"delete",o,void 0),u},clear(){const o=Cr(this),a=o.size!==0,i=o.clear();return a&&ig(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=mVe(o,e,t)}),n}function lne(e,t){const n=yVe(e,t);return(r,o,a)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(Gn(n,o)&&o in r?n:r,o,a)}const bVe={get:lne(!1,!1)},_Ve={get:lne(!1,!0)},wVe={get:lne(!0,!1)};const S8e=new WeakMap,D8e=new WeakMap,E8e=new WeakMap,CVe=new WeakMap;function xVe(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function SVe(e){return e.__v_skip||!Object.isExtensible(e)?0:xVe(YUe(e))}function Bn(e){return Im(e)?e:cne(e,!1,pVe,bVe,S8e)}function une(e){return cne(e,!1,vVe,_Ve,D8e)}function lC(e){return cne(e,!0,gVe,wVe,E8e)}function cne(e,t,n,r,o){if(!vn(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=SVe(e);if(a===0)return e;const i=o.get(e);if(i)return i;const s=new Proxy(e,a===2?r:n);return o.set(e,s),s}function am(e){return Im(e)?am(e.__v_raw):!!(e&&e.__v_isReactive)}function Im(e){return!!(e&&e.__v_isReadonly)}function Jc(e){return!!(e&&e.__v_isShallow)}function dne(e){return e?!!e.__v_raw:!1}function Cr(e){const t=e&&e.__v_raw;return t?Cr(t):e}function Jd(e){return!Gn(e,"__v_skip")&&Object.isExtensible(e)&&s8e(e,"__v_skip",!0),e}const ps=e=>vn(e)?Bn(e):e,DM=e=>vn(e)?lC(e):e;function kr(e){return e?e.__v_isRef===!0:!1}function X(e){return k8e(e,!1)}function Tr(e){return k8e(e,!0)}function k8e(e,t){return kr(e)?e:new DVe(e,t)}class DVe{constructor(t,n){this.dep=new sL,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Cr(t),this._value=n?t:ps(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Jc(t)||Im(t);t=r?t:Cr(t),om(t,n)&&(this._rawValue=t,this._value=r?t:ps(t),this.dep.trigger())}}function b(e){return kr(e)?e.value:e}const EVe={get:(e,t,n)=>t==="__v_raw"?e:b(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return kr(o)&&!kr(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function A8e(e){return am(e)?e:new Proxy(e,EVe)}class kVe{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new sL,{get:r,set:o}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=o}get value(){return this._value=this._get()}set value(t){this._set(t)}}function AVe(e){return new kVe(e)}function Ra(e){const t=ct(e)?new Array(e.length):{};for(const n in e)t[n]=T8e(e,n);return t}class TVe{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return lVe(Cr(this._object),this._key)}}class OVe{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function tr(e,t,n){return kr(e)?e:Rt(e)?new OVe(e):vn(e)&&arguments.length>1?T8e(e,t,n):X(e)}function T8e(e,t,n){const r=e[t];return kr(r)?r:new TVe(e,t,n)}class FVe{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new sL(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=_D-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Lo!==this)return g8e(this,!0),!0}get value(){const t=this.dep.track();return y8e(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function IVe(e,t,n=!1){let r,o;return Rt(e)?r=e:(r=e.get,o=e.set),new FVe(r,o,n)}const z7={},EM=new WeakMap;let j1;function MVe(e,t=!1,n=j1){if(n){let r=EM.get(n);r||EM.set(n,r=[]),r.push(e)}}function PVe(e,t,n=To){const{immediate:r,deep:o,once:a,scheduler:i,augmentJob:s,call:l}=n,u=C=>o?C:Jc(C)||o===!1||o===0?sg(C,1):sg(C);let c,d,f,h,g=!1,p=!1;if(kr(e)?(d=()=>e.value,g=Jc(e)):am(e)?(d=()=>u(e),g=!0):ct(e)?(p=!0,g=e.some(C=>am(C)||Jc(C)),d=()=>e.map(C=>{if(kr(C))return C.value;if(am(C))return u(C);if(Rt(C))return l?l(C,2):C()})):Rt(e)?t?d=l?()=>l(e,2):e:d=()=>{if(f){Sg();try{f()}finally{Dg()}}const C=j1;j1=c;try{return l?l(e,3,[h]):e(h)}finally{j1=C}}:d=fr,t&&o){const C=d,S=o===!0?1/0:o;d=()=>sg(C(),S)}const m=rne(),v=()=>{c.stop(),m&&m.active&&ene(m.effects,c)};if(a&&t){const C=t;t=(...S)=>{C(...S),v()}}let y=p?new Array(e.length).fill(z7):z7;const _=C=>{if(!(!(c.flags&1)||!c.dirty&&!C))if(t){const S=c.run();if(o||g||(p?S.some((E,k)=>om(E,y[k])):om(S,y))){f&&f();const E=j1;j1=c;try{const k=[S,y===z7?void 0:p&&y[0]===z7?[]:y,h];y=S,l?l(t,3,k):t(...k)}finally{j1=E}}}else c.run()};return s&&s(_),c=new h8e(d),c.scheduler=i?()=>i(_,!1):_,h=C=>MVe(C,!1,c),f=c.onStop=()=>{const C=EM.get(c);if(C){if(l)l(C,4);else for(const S of C)S();EM.delete(c)}},t?r?_(!0):y=c.run():i?i(_.bind(null,!0),!0):c.run(),v.pause=c.pause.bind(c),v.resume=c.resume.bind(c),v.stop=v,v}function sg(e,t=1/0,n){if(t<=0||!vn(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,kr(e))sg(e.value,t,n);else if(ct(e))for(let r=0;r{sg(r,t,n)});else if(bD(e)){for(const r in e)sg(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&sg(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.16 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function tT(e,t,n,r){try{return r?e(...r):e()}catch(o){uL(o,t,n)}}function sf(e,t,n,r){if(Rt(e)){const o=tT(e,t,n,r);return o&&Ub(o)&&o.catch(a=>{uL(a,t,n)}),o}if(ct(e)){const o=[];for(let a=0;a>>1,o=gl[r],a=CD(o);a=CD(n)?gl.push(e):gl.splice(BVe(t),0,e),e.flags|=1,F8e()}}function F8e(){kM||(kM=O8e.then(M8e))}function RVe(e){ct(e)?D3.push(...e):R0&&e.id===-1?R0.splice(z4+1,0,e):e.flags&1||(D3.push(e),e.flags|=1),F8e()}function Jce(e,t,n=$f+1){for(;nCD(n)-CD(r));if(D3.length=0,R0){R0.push(...t);return}for(R0=t,z4=0;z4e.id==null?e.flags&2?-1:1/0:e.id;function M8e(e){const t=fr;try{for($f=0;$f{r._d&&cde(-1);const a=AM(t);let i;try{i=e(...o)}finally{AM(a),r._d&&cde(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function rn(e,t){if(vi===null)return e;const n=vL(vi),r=e.dirs||(e.dirs=[]);for(let o=0;oe.__isTeleport,kS=e=>e&&(e.disabled||e.disabled===""),Zce=e=>e&&(e.defer||e.defer===""),Qce=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ede=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,uY=(e,t)=>{const n=e&&e.to;return $t(n)?t?t(n):null:n},R8e={name:"Teleport",__isTeleport:!0,process(e,t,n,r,o,a,i,s,l,u){const{mc:c,pc:d,pbc:f,o:{insert:h,querySelector:g,createText:p,createComment:m}}=u,v=kS(t.props);let{shapeFlag:y,children:_,dynamicChildren:C}=t;if(e==null){const S=t.el=p(""),E=t.anchor=p("");h(S,n,r),h(E,n,r);const k=(T,P)=>{y&16&&(o&&o.isCE&&(o.ce._teleportTarget=T),c(_,T,P,o,a,i,s,l))},O=()=>{const T=t.target=uY(t.props,g),P=N8e(T,t,p,h);T&&(i!=="svg"&&Qce(T)?i="svg":i!=="mathml"&&ede(T)&&(i="mathml"),v||(k(T,P),UF(t,!1)))};v&&(k(n,E),UF(t,!0)),Zce(t.props)?(t.el.__isMounted=!1,hl(()=>{O(),delete t.el.__isMounted},a)):O()}else{if(Zce(t.props)&&e.el.__isMounted===!1){hl(()=>{R8e.process(e,t,n,r,o,a,i,s,l,u)},a);return}t.el=e.el,t.targetStart=e.targetStart;const S=t.anchor=e.anchor,E=t.target=e.target,k=t.targetAnchor=e.targetAnchor,O=kS(e.props),T=O?n:E,P=O?S:k;if(i==="svg"||Qce(E)?i="svg":(i==="mathml"||ede(E))&&(i="mathml"),C?(f(e.dynamicChildren,C,T,o,a,i,s),bne(e,t,!0)):l||d(e,t,T,P,o,a,i,s,!1),v)O?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):j7(t,n,S,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const U=t.target=uY(t.props,g);U&&j7(t,U,null,u,0)}else O&&j7(t,E,k,u,1);UF(t,v)}},remove(e,t,n,{um:r,o:{remove:o}},a){const{shapeFlag:i,children:s,anchor:l,targetStart:u,targetAnchor:c,target:d,props:f}=e;if(d&&(o(u),o(c)),a&&o(l),i&16){const h=a||!kS(f);for(let g=0;g{e.isMounted=!0}),Ar(()=>{e.isUnmounting=!0}),e}const mc=[Function,Array],U8e={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:mc,onEnter:mc,onAfterEnter:mc,onEnterCancelled:mc,onBeforeLeave:mc,onLeave:mc,onAfterLeave:mc,onLeaveCancelled:mc,onBeforeAppear:mc,onAppear:mc,onAfterAppear:mc,onAppearCancelled:mc},V8e=e=>{const t=e.subTree;return t.component?V8e(t.component):t},UVe={name:"BaseTransition",props:U8e,setup(e,{slots:t}){const n=bn(),r=L8e();return()=>{const o=t.default&&hne(t.default(),!0);if(!o||!o.length)return;const a=z8e(o),i=Cr(e),{mode:s}=i;if(r.isLeaving)return Tz(a);const l=tde(a);if(!l)return Tz(a);let u=xD(l,i,r,n,d=>u=d);l.type!==da&&Vb(l,u);let c=n.subTree&&tde(n.subTree);if(c&&c.type!==da&&!e2(l,c)&&V8e(n).type!==da){let d=xD(c,i,r,n);if(Vb(c,d),s==="out-in"&&l.type!==da)return r.isLeaving=!0,d.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete d.afterLeave,c=void 0},Tz(a);s==="in-out"&&l.type!==da?d.delayLeave=(f,h,g)=>{const p=j8e(r,c);p[String(c.key)]=c,f[N0]=()=>{h(),f[N0]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{g(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return a}}};function z8e(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==da){t=n;break}}return t}const VVe=UVe;function j8e(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function xD(e,t,n,r,o){const{appear:a,mode:i,persisted:s=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:c,onEnterCancelled:d,onBeforeLeave:f,onLeave:h,onAfterLeave:g,onLeaveCancelled:p,onBeforeAppear:m,onAppear:v,onAfterAppear:y,onAppearCancelled:_}=t,C=String(e.key),S=j8e(n,e),E=(T,P)=>{T&&sf(T,r,9,P)},k=(T,P)=>{const U=P[1];E(T,P),ct(T)?T.every(F=>F.length<=1)&&U():T.length<=1&&U()},O={mode:i,persisted:s,beforeEnter(T){let P=l;if(!n.isMounted)if(a)P=m||l;else return;T[N0]&&T[N0](!0);const U=S[C];U&&e2(e,U)&&U.el[N0]&&U.el[N0](),E(P,[T])},enter(T){let P=u,U=c,F=d;if(!n.isMounted)if(a)P=v||u,U=y||c,F=_||d;else return;let H=!1;const R=T[H7]=z=>{H||(H=!0,z?E(F,[T]):E(U,[T]),O.delayedLeave&&O.delayedLeave(),T[H7]=void 0)};P?k(P,[T,R]):R()},leave(T,P){const U=String(e.key);if(T[H7]&&T[H7](!0),n.isUnmounting)return P();E(f,[T]);let F=!1;const H=T[N0]=R=>{F||(F=!0,P(),R?E(p,[T]):E(g,[T]),T[N0]=void 0,S[U]===e&&delete S[U])};S[U]=e,h?k(h,[T,H]):H()},clone(T){const P=xD(T,t,n,r,o);return o&&o(P),P}};return O}function Tz(e){if(cL(e))return e=Eg(e),e.children=null,e}function tde(e){if(!cL(e))return B8e(e.type)&&e.children?z8e(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&Rt(n.default))return n.default()}}function Vb(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Vb(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function hne(e,t=!1,n){let r=[],o=0;for(let a=0;a1)for(let a=0;aBa({name:e.name},t,{setup:e}))():e}function H8e(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function TM(e,t,n,r,o=!1){if(ct(e)){e.forEach((g,p)=>TM(g,t&&(ct(t)?t[p]:t),n,r,o));return}if(E3(r)&&!o){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&TM(e,t,n,r.component.subTree);return}const a=r.shapeFlag&4?vL(r.component):r.el,i=o?null:a,{i:s,r:l}=e,u=t&&t.r,c=s.refs===To?s.refs={}:s.refs,d=s.setupState,f=Cr(d),h=d===To?()=>!1:g=>Gn(f,g);if(u!=null&&u!==l&&($t(u)?(c[u]=null,h(u)&&(d[u]=null)):kr(u)&&(u.value=null)),Rt(l))tT(l,s,12,[i,c]);else{const g=$t(l),p=kr(l);if(g||p){const m=()=>{if(e.f){const v=g?h(l)?d[l]:c[l]:l.value;o?ct(v)&&ene(v,a):ct(v)?v.includes(a)||v.push(a):g?(c[l]=[a],h(l)&&(d[l]=c[l])):(l.value=[a],e.k&&(c[e.k]=l.value))}else g?(c[l]=i,h(l)&&(d[l]=i)):p&&(l.value=i,e.k&&(c[e.k]=i))};i?(m.id=-1,hl(m,n)):m()}}}iL().requestIdleCallback;iL().cancelIdleCallback;const E3=e=>!!e.type.__asyncLoader,cL=e=>e.type.__isKeepAlive;function dL(e,t){q8e(e,"a",t)}function W8e(e,t){q8e(e,"da",t)}function q8e(e,t,n=Vi){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(fL(t,r,n),n){let o=n.parent;for(;o&&o.parent;)cL(o.parent.vnode)&&zVe(r,t,n,o),o=o.parent}}function zVe(e,t,n,r){const o=fL(t,e,r,!0);gd(()=>{ene(r[t],o)},n)}function fL(e,t,n=Vi,r=!1){if(n){const o=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...i)=>{Sg();const s=nT(n),l=sf(t,n,e,i);return s(),Dg(),l});return r?o.unshift(a):o.push(a),a}}const Lg=e=>(t,n=Vi)=>{(!DD||e==="sp")&&fL(e,(...r)=>t(...r),n)},hL=Lg("bm"),Kt=Lg("m"),K8e=Lg("bu"),gf=Lg("u"),Ar=Lg("bum"),gd=Lg("um"),jVe=Lg("sp"),HVe=Lg("rtg"),WVe=Lg("rtc");function qVe(e,t=Vi){fL("ec",e,t)}const pne="components",KVe="directives";function yn(e,t){return gne(pne,e,!0,t)||e}const G8e=Symbol.for("v-ndc");function _n(e){return $t(e)?gne(pne,e,!1)||e:e||G8e}function pL(e){return gne(KVe,e)}function gne(e,t,n=!0,r=!1){const o=vi||Vi;if(o){const a=o.type;if(e===pne){const s=Ize(a,!1);if(s&&(s===t||s===wl(t)||s===eT(wl(t))))return a}const i=nde(o[e]||a[e],t)||nde(o.appContext[e],t);return!i&&r?a:i}}function nde(e,t){return e&&(e[t]||e[wl(t)]||e[eT(wl(t))])}function wt(e,t,n,r){let o;const a=n&&n[r],i=ct(e);if(i||$t(e)){const s=i&&am(e);let l=!1,u=!1;s&&(l=!Jc(e),u=Im(e),e=lL(e)),o=new Array(e.length);for(let c=0,d=e.length;ct(s,l,void 0,a&&a[l]));else{const s=Object.keys(e);o=new Array(s.length);for(let l=0,u=s.length;l{const a=r.fn(...o);return a&&(a.key=r.key),a}:r.fn)}return e}function Ne(e,t,n={},r,o){if(vi.ce||vi.parent&&E3(vi.parent)&&vi.parent.ce)return t!=="default"&&(n.name=t),I(),Oe(tt,null,[D("slot",n,r&&r())],64);let a=e[t];a&&a._c&&(a._d=!1),I();const i=a&&Y8e(a(n)),s=n.key||i&&i.key,l=Oe(tt,{key:(s&&!af(s)?s:`_${t}`)+(!i&&r?"_fb":"")},i||(r?r():[]),i&&e._===1?64:-2);return!o&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),a&&a._c&&(a._d=!0),l}function Y8e(e){return e.some(t=>jr(t)?!(t.type===da||t.type===tt&&!Y8e(t.children)):!0)?e:null}function GVe(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:SS(r)]=e[r];return n}const cY=e=>e?hCe(e)?vL(e):cY(e.parent):null,AS=Ba(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>cY(e.parent),$root:e=>cY(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>vne(e),$forceUpdate:e=>e.f||(e.f=()=>{fne(e.update)}),$nextTick:e=>e.n||(e.n=It.bind(e.proxy)),$watch:e=>vze.bind(e)}),Oz=(e,t)=>e!==To&&!e.__isScriptSetup&&Gn(e,t),YVe={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:o,props:a,accessCache:i,type:s,appContext:l}=e;let u;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return a[t]}else{if(Oz(r,t))return i[t]=1,r[t];if(o!==To&&Gn(o,t))return i[t]=2,o[t];if((u=e.propsOptions[0])&&Gn(u,t))return i[t]=3,a[t];if(n!==To&&Gn(n,t))return i[t]=4,n[t];dY&&(i[t]=0)}}const c=AS[t];let d,f;if(c)return t==="$attrs"&&Ls(e.attrs,"get",""),c(e);if((d=s.__cssModules)&&(d=d[t]))return d;if(n!==To&&Gn(n,t))return i[t]=4,n[t];if(f=l.config.globalProperties,Gn(f,t))return f[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:a}=e;return Oz(o,t)?(o[t]=n,!0):r!==To&&Gn(r,t)?(r[t]=n,!0):Gn(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:a}},i){let s;return!!n[i]||e!==To&&Gn(e,i)||Oz(t,i)||(s=a[0])&&Gn(s,i)||Gn(r,i)||Gn(AS,i)||Gn(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Gn(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function La(){return X8e().slots}function Ug(){return X8e().attrs}function X8e(){const e=bn();return e.setupContext||(e.setupContext=gCe(e))}function rde(e){return ct(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let dY=!0;function XVe(e){const t=vne(e),n=e.proxy,r=e.ctx;dY=!1,t.beforeCreate&&ode(t.beforeCreate,e,"bc");const{data:o,computed:a,methods:i,watch:s,provide:l,inject:u,created:c,beforeMount:d,mounted:f,beforeUpdate:h,updated:g,activated:p,deactivated:m,beforeDestroy:v,beforeUnmount:y,destroyed:_,unmounted:C,render:S,renderTracked:E,renderTriggered:k,errorCaptured:O,serverPrefetch:T,expose:P,inheritAttrs:U,components:F,directives:H,filters:R}=t;if(u&&JVe(u,r,null),i)for(const N in i){const L=i[N];Rt(L)&&(r[N]=L.bind(n))}if(o){const N=o.call(n,n);vn(N)&&(e.data=Bn(N))}if(dY=!0,a)for(const N in a){const L=a[N],V=Rt(L)?L.bind(n,n):Rt(L.get)?L.get.bind(n,n):fr,Y=!Rt(L)&&Rt(L.set)?L.set.bind(n):fr,$=K({get:V,set:Y});Object.defineProperty(r,N,{enumerable:!0,configurable:!0,get:()=>$.value,set:B=>$.value=B})}if(s)for(const N in s)J8e(s[N],r,n,N);if(l){const N=Rt(l)?l.call(n):l;Reflect.ownKeys(N).forEach(L=>{Fn(L,N[L])})}c&&ode(c,e,"c");function M(N,L){ct(L)?L.forEach(V=>N(V.bind(n))):L&&N(L.bind(n))}if(M(hL,d),M(Kt,f),M(K8e,h),M(gf,g),M(dL,p),M(W8e,m),M(qVe,O),M(WVe,E),M(HVe,k),M(Ar,y),M(gd,C),M(jVe,T),ct(P))if(P.length){const N=e.exposed||(e.exposed={});P.forEach(L=>{Object.defineProperty(N,L,{get:()=>n[L],set:V=>n[L]=V})})}else e.exposed||(e.exposed={});S&&e.render===fr&&(e.render=S),U!=null&&(e.inheritAttrs=U),F&&(e.components=F),H&&(e.directives=H),T&&H8e(e)}function JVe(e,t,n=fr){ct(e)&&(e=fY(e));for(const r in e){const o=e[r];let a;vn(o)?"default"in o?a=kt(o.from||r,o.default,!0):a=kt(o.from||r):a=kt(o),kr(a)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>a.value,set:i=>a.value=i}):t[r]=a}}function ode(e,t,n){sf(ct(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function J8e(e,t,n,r){let o=r.includes(".")?lCe(n,r):()=>n[r];if($t(e)){const a=t[e];Rt(a)&&Ze(o,a)}else if(Rt(e))Ze(o,e.bind(n));else if(vn(e))if(ct(e))e.forEach(a=>J8e(a,t,n,r));else{const a=Rt(e.handler)?e.handler.bind(n):t[e.handler];Rt(a)&&Ze(o,a,e)}}function vne(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:a,config:{optionMergeStrategies:i}}=e.appContext,s=a.get(t);let l;return s?l=s:!o.length&&!n&&!r?l=t:(l={},o.length&&o.forEach(u=>OM(l,u,i,!0)),OM(l,t,i)),vn(t)&&a.set(t,l),l}function OM(e,t,n,r=!1){const{mixins:o,extends:a}=t;a&&OM(e,a,n,!0),o&&o.forEach(i=>OM(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const s=ZVe[i]||n&&n[i];e[i]=s?s(e[i],t[i]):t[i]}return e}const ZVe={data:ade,props:ide,emits:ide,methods:N5,computed:N5,beforeCreate:ol,created:ol,beforeMount:ol,mounted:ol,beforeUpdate:ol,updated:ol,beforeDestroy:ol,beforeUnmount:ol,destroyed:ol,unmounted:ol,activated:ol,deactivated:ol,errorCaptured:ol,serverPrefetch:ol,components:N5,directives:N5,watch:eze,provide:ade,inject:QVe};function ade(e,t){return t?e?function(){return Ba(Rt(e)?e.call(this,this):e,Rt(t)?t.call(this,this):t)}:t:e}function QVe(e,t){return N5(fY(e),fY(t))}function fY(e){if(ct(e)){const t={};for(let n=0;n1)return n&&Rt(t)?t.call(r&&r.proxy):t}}function rze(){return!!(Vi||vi||lb)}const Q8e={},eCe=()=>Object.create(Q8e),tCe=e=>Object.getPrototypeOf(e)===Q8e;function oze(e,t,n,r=!1){const o={},a=eCe();e.propsDefaults=Object.create(null),nCe(e,t,o,a);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=r?o:une(o):e.type.props?e.props=o:e.props=a,e.attrs=a}function aze(e,t,n,r){const{props:o,attrs:a,vnode:{patchFlag:i}}=e,s=Cr(o),[l]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let d=0;d{l=!0;const[f,h]=rCe(d,t,!0);Ba(i,f),h&&s.push(...h)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!a&&!l)return vn(e)&&r.set(e,x3),x3;if(ct(a))for(let c=0;ce[0]==="_"||e==="$stable",yne=e=>ct(e)?e.map(uh):[uh(e)],sze=(e,t,n)=>{if(t._n)return t;const r=A((...o)=>yne(t(...o)),n);return r._c=!1,r},oCe=(e,t,n)=>{const r=e._ctx;for(const o in e){if(mne(o))continue;const a=e[o];if(Rt(a))t[o]=sze(o,a,r);else if(a!=null){const i=yne(a);t[o]=()=>i}}},aCe=(e,t)=>{const n=yne(t);e.slots.default=()=>n},iCe=(e,t,n)=>{for(const r in t)(n||!mne(r))&&(e[r]=t[r])},lze=(e,t,n)=>{const r=e.slots=eCe();if(e.vnode.shapeFlag&32){const o=t._;o?(iCe(r,t,n),n&&s8e(r,"_",o,!0)):oCe(t,r)}else t&&aCe(e,t)},uze=(e,t,n)=>{const{vnode:r,slots:o}=e;let a=!0,i=To;if(r.shapeFlag&32){const s=t._;s?n&&s===1?a=!1:iCe(o,t,n):(a=!t.$stable,oCe(t,o)),i=t}else t&&(aCe(e,t),i={default:1});if(a)for(const s in o)!mne(s)&&i[s]==null&&delete o[s]},hl=xze;function cze(e){return dze(e)}function dze(e,t){const n=iL();n.__VUE__=!0;const{insert:r,remove:o,patchProp:a,createElement:i,createText:s,createComment:l,setText:u,setElementText:c,parentNode:d,nextSibling:f,setScopeId:h=fr,insertStaticContent:g}=e,p=(le,q,pe,he=null,re=null,ue=null,_e=void 0,Pe=null,Ae=!!q.dynamicChildren)=>{if(le===q)return;le&&!e2(le,q)&&(he=Z(le),B(le,re,ue,!0),le=null),q.patchFlag===-2&&(Ae=!1,q.dynamicChildren=null);const{type:Ee,ref:ye,shapeFlag:ve}=q;switch(Ee){case uC:m(le,q,pe,he);break;case da:v(le,q,pe,he);break;case Mz:le==null&&y(q,pe,he,_e);break;case tt:F(le,q,pe,he,re,ue,_e,Pe,Ae);break;default:ve&1?S(le,q,pe,he,re,ue,_e,Pe,Ae):ve&6?H(le,q,pe,he,re,ue,_e,Pe,Ae):(ve&64||ve&128)&&Ee.process(le,q,pe,he,re,ue,_e,Pe,Ae,Be)}ye!=null&&re&&TM(ye,le&&le.ref,ue,q||le,!q)},m=(le,q,pe,he)=>{if(le==null)r(q.el=s(q.children),pe,he);else{const re=q.el=le.el;q.children!==le.children&&u(re,q.children)}},v=(le,q,pe,he)=>{le==null?r(q.el=l(q.children||""),pe,he):q.el=le.el},y=(le,q,pe,he)=>{[le.el,le.anchor]=g(le.children,q,pe,he,le.el,le.anchor)},_=({el:le,anchor:q},pe,he)=>{let re;for(;le&&le!==q;)re=f(le),r(le,pe,he),le=re;r(q,pe,he)},C=({el:le,anchor:q})=>{let pe;for(;le&&le!==q;)pe=f(le),o(le),le=pe;o(q)},S=(le,q,pe,he,re,ue,_e,Pe,Ae)=>{q.type==="svg"?_e="svg":q.type==="math"&&(_e="mathml"),le==null?E(q,pe,he,re,ue,_e,Pe,Ae):T(le,q,re,ue,_e,Pe,Ae)},E=(le,q,pe,he,re,ue,_e,Pe)=>{let Ae,Ee;const{props:ye,shapeFlag:ve,transition:Ce,dirs:ze}=le;if(Ae=le.el=i(le.type,ue,ye&&ye.is,ye),ve&8?c(Ae,le.children):ve&16&&O(le.children,Ae,null,he,re,Fz(le,ue),_e,Pe),ze&&D1(le,null,he,"created"),k(Ae,le,le.scopeId,_e,he),ye){for(const bt in ye)bt!=="value"&&!xS(bt)&&a(Ae,bt,null,ye[bt],ue,he);"value"in ye&&a(Ae,"value",null,ye.value,ue),(Ee=ye.onVnodeBeforeMount)&&Af(Ee,he,le)}ze&&D1(le,null,he,"beforeMount");const at=fze(re,Ce);at&&Ce.beforeEnter(Ae),r(Ae,q,pe),((Ee=ye&&ye.onVnodeMounted)||at||ze)&&hl(()=>{Ee&&Af(Ee,he,le),at&&Ce.enter(Ae),ze&&D1(le,null,he,"mounted")},re)},k=(le,q,pe,he,re)=>{if(pe&&h(le,pe),he)for(let ue=0;ue{for(let Ee=Ae;Ee{const Pe=q.el=le.el;let{patchFlag:Ae,dynamicChildren:Ee,dirs:ye}=q;Ae|=le.patchFlag&16;const ve=le.props||To,Ce=q.props||To;let ze;if(pe&&E1(pe,!1),(ze=Ce.onVnodeBeforeUpdate)&&Af(ze,pe,q,le),ye&&D1(q,le,pe,"beforeUpdate"),pe&&E1(pe,!0),(ve.innerHTML&&Ce.innerHTML==null||ve.textContent&&Ce.textContent==null)&&c(Pe,""),Ee?P(le.dynamicChildren,Ee,Pe,pe,he,Fz(q,re),ue):_e||L(le,q,Pe,null,pe,he,Fz(q,re),ue,!1),Ae>0){if(Ae&16)U(Pe,ve,Ce,pe,re);else if(Ae&2&&ve.class!==Ce.class&&a(Pe,"class",null,Ce.class,re),Ae&4&&a(Pe,"style",ve.style,Ce.style,re),Ae&8){const at=q.dynamicProps;for(let bt=0;bt{ze&&Af(ze,pe,q,le),ye&&D1(q,le,pe,"updated")},he)},P=(le,q,pe,he,re,ue,_e)=>{for(let Pe=0;Pe{if(q!==pe){if(q!==To)for(const ue in q)!xS(ue)&&!(ue in pe)&&a(le,ue,q[ue],null,re,he);for(const ue in pe){if(xS(ue))continue;const _e=pe[ue],Pe=q[ue];_e!==Pe&&ue!=="value"&&a(le,ue,Pe,_e,re,he)}"value"in pe&&a(le,"value",q.value,pe.value,re)}},F=(le,q,pe,he,re,ue,_e,Pe,Ae)=>{const Ee=q.el=le?le.el:s(""),ye=q.anchor=le?le.anchor:s("");let{patchFlag:ve,dynamicChildren:Ce,slotScopeIds:ze}=q;ze&&(Pe=Pe?Pe.concat(ze):ze),le==null?(r(Ee,pe,he),r(ye,pe,he),O(q.children||[],pe,ye,re,ue,_e,Pe,Ae)):ve>0&&ve&64&&Ce&&le.dynamicChildren?(P(le.dynamicChildren,Ce,pe,re,ue,_e,Pe),(q.key!=null||re&&q===re.subTree)&&bne(le,q,!0)):L(le,q,pe,ye,re,ue,_e,Pe,Ae)},H=(le,q,pe,he,re,ue,_e,Pe,Ae)=>{q.slotScopeIds=Pe,le==null?q.shapeFlag&512?re.ctx.activate(q,pe,he,_e,Ae):R(q,pe,he,re,ue,_e,Ae):z(le,q,Ae)},R=(le,q,pe,he,re,ue,_e)=>{const Pe=le.component=Aze(le,he,re);if(cL(le)&&(Pe.ctx.renderer=Be),Tze(Pe,!1,_e),Pe.asyncDep){if(re&&re.registerDep(Pe,M,_e),!le.el){const Ae=Pe.subTree=D(da);v(null,Ae,q,pe)}}else M(Pe,le,q,pe,re,ue,_e)},z=(le,q,pe)=>{const he=q.component=le.component;if(wze(le,q,pe))if(he.asyncDep&&!he.asyncResolved){N(he,q,pe);return}else he.next=q,he.update();else q.el=le.el,he.vnode=q},M=(le,q,pe,he,re,ue,_e)=>{const Pe=()=>{if(le.isMounted){let{next:ve,bu:Ce,u:ze,parent:at,vnode:bt}=le;{const Ue=sCe(le);if(Ue){ve&&(ve.el=bt.el,N(le,ve,_e)),Ue.asyncDep.then(()=>{le.isUnmounted||Pe()});return}}let Ft=ve,Dt;E1(le,!1),ve?(ve.el=bt.el,N(le,ve,_e)):ve=bt,Ce&&LF(Ce),(Dt=ve.props&&ve.props.onVnodeBeforeUpdate)&&Af(Dt,at,ve,bt),E1(le,!0);const He=Iz(le),Fe=le.subTree;le.subTree=He,p(Fe,He,d(Fe.el),Z(Fe),le,re,ue),ve.el=He.el,Ft===null&&Cze(le,He.el),ze&&hl(ze,re),(Dt=ve.props&&ve.props.onVnodeUpdated)&&hl(()=>Af(Dt,at,ve,bt),re)}else{let ve;const{el:Ce,props:ze}=q,{bm:at,m:bt,parent:Ft,root:Dt,type:He}=le,Fe=E3(q);if(E1(le,!1),at&&LF(at),!Fe&&(ve=ze&&ze.onVnodeBeforeMount)&&Af(ve,Ft,q),E1(le,!0),Ce&&ae){const Ue=()=>{le.subTree=Iz(le),ae(Ce,le.subTree,le,re,null)};Fe&&He.__asyncHydrate?He.__asyncHydrate(Ce,le,Ue):Ue()}else{Dt.ce&&Dt.ce._injectChildStyle(He);const Ue=le.subTree=Iz(le);p(null,Ue,pe,he,le,re,ue),q.el=Ue.el}if(bt&&hl(bt,re),!Fe&&(ve=ze&&ze.onVnodeMounted)){const Ue=q;hl(()=>Af(ve,Ft,Ue),re)}(q.shapeFlag&256||Ft&&E3(Ft.vnode)&&Ft.vnode.shapeFlag&256)&&le.a&&hl(le.a,re),le.isMounted=!0,q=pe=he=null}};le.scope.on();const Ae=le.effect=new h8e(Pe);le.scope.off();const Ee=le.update=Ae.run.bind(Ae),ye=le.job=Ae.runIfDirty.bind(Ae);ye.i=le,ye.id=le.uid,Ae.scheduler=()=>fne(ye),E1(le,!0),Ee()},N=(le,q,pe)=>{q.component=le;const he=le.vnode.props;le.vnode=q,le.next=null,aze(le,q.props,he,pe),uze(le,q.children,pe),Sg(),Jce(le),Dg()},L=(le,q,pe,he,re,ue,_e,Pe,Ae=!1)=>{const Ee=le&&le.children,ye=le?le.shapeFlag:0,ve=q.children,{patchFlag:Ce,shapeFlag:ze}=q;if(Ce>0){if(Ce&128){Y(Ee,ve,pe,he,re,ue,_e,Pe,Ae);return}else if(Ce&256){V(Ee,ve,pe,he,re,ue,_e,Pe,Ae);return}}ze&8?(ye&16&&ie(Ee,re,ue),ve!==Ee&&c(pe,ve)):ye&16?ze&16?Y(Ee,ve,pe,he,re,ue,_e,Pe,Ae):ie(Ee,re,ue,!0):(ye&8&&c(pe,""),ze&16&&O(ve,pe,he,re,ue,_e,Pe,Ae))},V=(le,q,pe,he,re,ue,_e,Pe,Ae)=>{le=le||x3,q=q||x3;const Ee=le.length,ye=q.length,ve=Math.min(Ee,ye);let Ce;for(Ce=0;Ceye?ie(le,re,ue,!0,!1,ve):O(q,pe,he,re,ue,_e,Pe,Ae,ve)},Y=(le,q,pe,he,re,ue,_e,Pe,Ae)=>{let Ee=0;const ye=q.length;let ve=le.length-1,Ce=ye-1;for(;Ee<=ve&&Ee<=Ce;){const ze=le[Ee],at=q[Ee]=Ae?L0(q[Ee]):uh(q[Ee]);if(e2(ze,at))p(ze,at,pe,null,re,ue,_e,Pe,Ae);else break;Ee++}for(;Ee<=ve&&Ee<=Ce;){const ze=le[ve],at=q[Ce]=Ae?L0(q[Ce]):uh(q[Ce]);if(e2(ze,at))p(ze,at,pe,null,re,ue,_e,Pe,Ae);else break;ve--,Ce--}if(Ee>ve){if(Ee<=Ce){const ze=Ce+1,at=zeCe)for(;Ee<=ve;)B(le[Ee],re,ue,!0),Ee++;else{const ze=Ee,at=Ee,bt=new Map;for(Ee=at;Ee<=Ce;Ee++){const Te=q[Ee]=Ae?L0(q[Ee]):uh(q[Ee]);Te.key!=null&&bt.set(Te.key,Ee)}let Ft,Dt=0;const He=Ce-at+1;let Fe=!1,Ue=0;const Se=new Array(He);for(Ee=0;Ee=He){B(Te,re,ue,!0);continue}let Ge;if(Te.key!=null)Ge=bt.get(Te.key);else for(Ft=at;Ft<=Ce;Ft++)if(Se[Ft-at]===0&&e2(Te,q[Ft])){Ge=Ft;break}Ge===void 0?B(Te,re,ue,!0):(Se[Ge-at]=Ee+1,Ge>=Ue?Ue=Ge:Fe=!0,p(Te,q[Ge],pe,null,re,ue,_e,Pe,Ae),Dt++)}const We=Fe?hze(Se):x3;for(Ft=We.length-1,Ee=He-1;Ee>=0;Ee--){const Te=at+Ee,Ge=q[Te],Ot=Te+1{const{el:ue,type:_e,transition:Pe,children:Ae,shapeFlag:Ee}=le;if(Ee&6){$(le.component.subTree,q,pe,he);return}if(Ee&128){le.suspense.move(q,pe,he);return}if(Ee&64){_e.move(le,q,pe,Be);return}if(_e===tt){r(ue,q,pe);for(let ve=0;vePe.enter(ue),re);else{const{leave:ve,delayLeave:Ce,afterLeave:ze}=Pe,at=()=>{le.ctx.isUnmounted?o(ue):r(ue,q,pe)},bt=()=>{ve(ue,()=>{at(),ze&&ze()})};Ce?Ce(ue,at,bt):bt()}else r(ue,q,pe)},B=(le,q,pe,he=!1,re=!1)=>{const{type:ue,props:_e,ref:Pe,children:Ae,dynamicChildren:Ee,shapeFlag:ye,patchFlag:ve,dirs:Ce,cacheIndex:ze}=le;if(ve===-2&&(re=!1),Pe!=null&&(Sg(),TM(Pe,null,pe,le,!0),Dg()),ze!=null&&(q.renderCache[ze]=void 0),ye&256){q.ctx.deactivate(le);return}const at=ye&1&&Ce,bt=!E3(le);let Ft;if(bt&&(Ft=_e&&_e.onVnodeBeforeUnmount)&&Af(Ft,q,le),ye&6)oe(le.component,pe,he);else{if(ye&128){le.suspense.unmount(pe,he);return}at&&D1(le,null,q,"beforeUnmount"),ye&64?le.type.remove(le,q,pe,Be,he):Ee&&!Ee.hasOnce&&(ue!==tt||ve>0&&ve&64)?ie(Ee,q,pe,!1,!0):(ue===tt&&ve&384||!re&&ye&16)&&ie(Ae,q,pe),he&&W(le)}(bt&&(Ft=_e&&_e.onVnodeUnmounted)||at)&&hl(()=>{Ft&&Af(Ft,q,le),at&&D1(le,null,q,"unmounted")},pe)},W=le=>{const{type:q,el:pe,anchor:he,transition:re}=le;if(q===tt){J(pe,he);return}if(q===Mz){C(le);return}const ue=()=>{o(pe),re&&!re.persisted&&re.afterLeave&&re.afterLeave()};if(le.shapeFlag&1&&re&&!re.persisted){const{leave:_e,delayLeave:Pe}=re,Ae=()=>_e(pe,ue);Pe?Pe(le.el,ue,Ae):Ae()}else ue()},J=(le,q)=>{let pe;for(;le!==q;)pe=f(le),o(le),le=pe;o(q)},oe=(le,q,pe)=>{const{bum:he,scope:re,job:ue,subTree:_e,um:Pe,m:Ae,a:Ee,parent:ye,slots:{__:ve}}=le;lde(Ae),lde(Ee),he&&LF(he),ye&&ct(ve)&&ve.forEach(Ce=>{ye.renderCache[Ce]=void 0}),re.stop(),ue&&(ue.flags|=8,B(_e,le,q,pe)),Pe&&hl(Pe,q),hl(()=>{le.isUnmounted=!0},q),q&&q.pendingBranch&&!q.isUnmounted&&le.asyncDep&&!le.asyncResolved&&le.suspenseId===q.pendingId&&(q.deps--,q.deps===0&&q.resolve())},ie=(le,q,pe,he=!1,re=!1,ue=0)=>{for(let _e=ue;_e{if(le.shapeFlag&6)return Z(le.component.subTree);if(le.shapeFlag&128)return le.suspense.next();const q=f(le.anchor||le.el),pe=q&&q[$8e];return pe?f(pe):q};let de=!1;const we=(le,q,pe)=>{le==null?q._vnode&&B(q._vnode,null,null,!0):p(q._vnode||null,le,q,null,null,null,pe),q._vnode=le,de||(de=!0,Jce(),I8e(),de=!1)},Be={p,um:B,m:$,r:W,mt:R,mc:O,pc:L,pbc:P,n:Z,o:e};let ke,ae;return t&&([ke,ae]=t(Be)),{render:we,hydrate:ke,createApp:nze(we,ke)}}function Fz({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function E1({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function fze(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function bne(e,t,n=!1){const r=e.children,o=t.children;if(ct(r)&&ct(o))for(let a=0;a>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,i=n[a-1];a-- >0;)n[a]=i,i=t[i];return n}function sCe(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:sCe(t)}function lde(e){if(e)for(let t=0;tkt(pze);function Wi(e,t){return _ne(e,null,t)}function Ze(e,t,n){return _ne(e,t,n)}function _ne(e,t,n=To){const{immediate:r,deep:o,flush:a,once:i}=n,s=Ba({},n),l=t&&r||!t&&a!=="post";let u;if(DD){if(a==="sync"){const h=gze();u=h.__watcherHandles||(h.__watcherHandles=[])}else if(!l){const h=()=>{};return h.stop=fr,h.resume=fr,h.pause=fr,h}}const c=Vi;s.call=(h,g,p)=>sf(h,c,g,p);let d=!1;a==="post"?s.scheduler=h=>{hl(h,c&&c.suspense)}:a!=="sync"&&(d=!0,s.scheduler=(h,g)=>{g?h():fne(h)}),s.augmentJob=h=>{t&&(h.flags|=4),d&&(h.flags|=2,c&&(h.id=c.uid,h.i=c))};const f=PVe(e,t,s);return DD&&(u?u.push(f):l&&f()),f}function vze(e,t,n){const r=this.proxy,o=$t(e)?e.includes(".")?lCe(r,e):()=>r[e]:e.bind(r,r);let a;Rt(t)?a=t:(a=t.handler,n=t);const i=nT(this),s=_ne(o,a.bind(r),n);return i(),s}function lCe(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${wl(t)}Modifiers`]||e[`${Ng(t)}Modifiers`];function yze(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||To;let o=n;const a=t.startsWith("update:"),i=a&&mze(r,t.slice(7));i&&(i.trim&&(o=n.map(c=>$t(c)?c.trim():c)),i.number&&(o=n.map(aY)));let s,l=r[s=SS(t)]||r[s=SS(wl(t))];!l&&a&&(l=r[s=SS(Ng(t))]),l&&sf(l,e,6,o);const u=r[s+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,sf(u,e,6,o)}}function uCe(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const a=e.emits;let i={},s=!1;if(!Rt(e)){const l=u=>{const c=uCe(u,t,!0);c&&(s=!0,Ba(i,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!a&&!s?(vn(e)&&r.set(e,null),null):(ct(a)?a.forEach(l=>i[l]=null):Ba(i,a),vn(e)&&r.set(e,i),i)}function gL(e,t){return!e||!rL(t)?!1:(t=t.slice(2).replace(/Once$/,""),Gn(e,t[0].toLowerCase()+t.slice(1))||Gn(e,Ng(t))||Gn(e,t))}function Iz(e){const{type:t,vnode:n,proxy:r,withProxy:o,propsOptions:[a],slots:i,attrs:s,emit:l,render:u,renderCache:c,props:d,data:f,setupState:h,ctx:g,inheritAttrs:p}=e,m=AM(e);let v,y;try{if(n.shapeFlag&4){const C=o||r,S=C;v=uh(u.call(S,C,c,d,h,f,g)),y=s}else{const C=t;v=uh(C.length>1?C(d,{attrs:s,slots:i,emit:l}):C(d,null)),y=t.props?s:bze(s)}}catch(C){TS.length=0,uL(C,e,1),v=D(da)}let _=v;if(y&&p!==!1){const C=Object.keys(y),{shapeFlag:S}=_;C.length&&S&7&&(a&&C.some(Qte)&&(y=_ze(y,a)),_=Eg(_,y,!1,!0))}return n.dirs&&(_=Eg(_,null,!1,!0),_.dirs=_.dirs?_.dirs.concat(n.dirs):n.dirs),n.transition&&Vb(_,n.transition),v=_,AM(m),v}const bze=e=>{let t;for(const n in e)(n==="class"||n==="style"||rL(n))&&((t||(t={}))[n]=e[n]);return t},_ze=(e,t)=>{const n={};for(const r in e)(!Qte(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function wze(e,t,n){const{props:r,children:o,component:a}=e,{props:i,children:s,patchFlag:l}=t,u=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?ude(r,i,u):!!i;if(l&8){const c=t.dynamicProps;for(let d=0;de.__isSuspense;function xze(e,t){t&&t.pendingBranch?ct(e)?t.effects.push(...e):t.effects.push(e):RVe(e)}const tt=Symbol.for("v-fgt"),uC=Symbol.for("v-txt"),da=Symbol.for("v-cmt"),Mz=Symbol.for("v-stc"),TS=[];let Wu=null;function I(e=!1){TS.push(Wu=e?null:[])}function Sze(){TS.pop(),Wu=TS[TS.length-1]||null}let SD=1;function cde(e,t=!1){SD+=e,e<0&&Wu&&t&&(Wu.hasOnce=!0)}function dCe(e){return e.dynamicChildren=SD>0?Wu||x3:null,Sze(),SD>0&&Wu&&Wu.push(e),e}function j(e,t,n,r,o,a){return dCe(w(e,t,n,r,o,a,!0))}function Oe(e,t,n,r,o){return dCe(D(e,t,n,r,o,!0))}function jr(e){return e?e.__v_isVNode===!0:!1}function e2(e,t){return e.type===t.type&&e.key===t.key}const fCe=({key:e})=>e??null,VF=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?$t(e)||kr(e)||Rt(e)?{i:vi,r:e,k:t,f:!!n}:e:null);function w(e,t=null,n=null,r=0,o=null,a=e===tt?0:1,i=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&fCe(t),ref:t&&VF(t),scopeId:P8e,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:vi};return s?(wne(l,n),a&128&&e.normalize(l)):n&&(l.shapeFlag|=$t(n)?8:16),SD>0&&!i&&Wu&&(l.patchFlag>0||a&6)&&l.patchFlag!==32&&Wu.push(l),l}const D=Dze;function Dze(e,t=null,n=null,r=0,o=null,a=!1){if((!e||e===G8e)&&(e=da),jr(e)){const s=Eg(e,t,!0);return n&&wne(s,n),SD>0&&!a&&Wu&&(s.shapeFlag&6?Wu[Wu.indexOf(e)]=s:Wu.push(s)),s.patchFlag=-2,s}if(Mze(e)&&(e=e.__vccOpts),t){t=Mh(t);let{class:s,style:l}=t;s&&!$t(s)&&(t.class=ee(s)),vn(l)&&(dne(l)&&!ct(l)&&(l=Ba({},l)),t.style=Nt(l))}const i=$t(e)?1:cCe(e)?128:B8e(e)?64:vn(e)?4:Rt(e)?2:0;return w(e,t,n,r,o,i,a,!0)}function Mh(e){return e?dne(e)||tCe(e)?Ba({},e):e:null}function Eg(e,t,n=!1,r=!1){const{props:o,ref:a,patchFlag:i,children:s,transition:l}=e,u=t?Dn(o||{},t):o,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&fCe(u),ref:t&&t.ref?n&&a?ct(a)?a.concat(VF(t)):[a,VF(t)]:VF(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==tt?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Eg(e.ssContent),ssFallback:e.ssFallback&&Eg(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&Vb(c,l.clone(c)),c}function ce(e=" ",t=0){return D(uC,null,e,t)}function be(e="",t=!1){return t?(I(),Oe(da,null,e)):D(da,null,e)}function uh(e){return e==null||typeof e=="boolean"?D(da):ct(e)?D(tt,null,e.slice()):jr(e)?L0(e):D(uC,null,String(e))}function L0(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Eg(e)}function wne(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(ct(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),wne(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!tCe(t)?t._ctx=vi:o===3&&vi&&(vi.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Rt(t)?(t={default:t,_ctx:vi},n=32):(t=String(t),r&64?(n=16,t=[ce(t)]):n=8);e.children=t,e.shapeFlag|=n}function Dn(...e){const t={};for(let n=0;nVi||vi;let FM,pY;{const e=iL(),t=(n,r)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(r),a=>{o.length>1?o.forEach(i=>i(a)):o[0](a)}};FM=t("__VUE_INSTANCE_SETTERS__",n=>Vi=n),pY=t("__VUE_SSR_SETTERS__",n=>DD=n)}const nT=e=>{const t=Vi;return FM(e),e.scope.on(),()=>{e.scope.off(),FM(t)}},dde=()=>{Vi&&Vi.scope.off(),FM(null)};function hCe(e){return e.vnode.shapeFlag&4}let DD=!1;function Tze(e,t=!1,n=!1){t&&pY(t);const{props:r,children:o}=e.vnode,a=hCe(e);oze(e,r,a,t),lze(e,o,n||t);const i=a?Oze(e,t):void 0;return t&&pY(!1),i}function Oze(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,YVe);const{setup:r}=n;if(r){Sg();const o=e.setupContext=r.length>1?gCe(e):null,a=nT(e),i=tT(r,e,0,[e.props,o]),s=Ub(i);if(Dg(),a(),(s||e.sp)&&!E3(e)&&H8e(e),s){if(i.then(dde,dde),t)return i.then(l=>{fde(e,l,t)}).catch(l=>{uL(l,e,0)});e.asyncDep=i}else fde(e,i,t)}else pCe(e,t)}function fde(e,t,n){Rt(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:vn(t)&&(e.setupState=A8e(t)),pCe(e,n)}let hde;function pCe(e,t,n){const r=e.type;if(!e.render){if(!t&&hde&&!r.render){const o=r.template||vne(e).template;if(o){const{isCustomElement:a,compilerOptions:i}=e.appContext.config,{delimiters:s,compilerOptions:l}=r,u=Ba(Ba({isCustomElement:a,delimiters:s},i),l);r.render=hde(o,u)}}e.render=r.render||fr}{const o=nT(e);Sg();try{XVe(e)}finally{Dg(),o()}}}const Fze={get(e,t){return Ls(e,"get",""),e[t]}};function gCe(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Fze),slots:e.slots,emit:e.emit,expose:t}}function vL(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(A8e(Jd(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in AS)return AS[n](e)},has(t,n){return n in t||n in AS}})):e.proxy}function Ize(e,t=!0){return Rt(e)?e.displayName||e.name:e.name||t&&e.__name}function Mze(e){return Rt(e)&&"__vccOpts"in e}const K=(e,t)=>IVe(e,t,DD);function Vt(e,t,n){const r=arguments.length;return r===2?vn(t)&&!ct(t)?jr(t)?D(e,null,[t]):D(e,t):D(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&jr(n)&&(n=[n]),D(e,t,n))}const Pze="3.5.16",$ze=fr;/** +* @vue/runtime-dom v3.5.16 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let gY;const pde=typeof window<"u"&&window.trustedTypes;if(pde)try{gY=pde.createPolicy("vue",{createHTML:e=>e})}catch{}const vCe=gY?e=>gY.createHTML(e):e=>e,Bze="http://www.w3.org/2000/svg",Rze="http://www.w3.org/1998/Math/MathML",mp=typeof document<"u"?document:null,gde=mp&&mp.createElement("template"),Nze={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t==="svg"?mp.createElementNS(Bze,e):t==="mathml"?mp.createElementNS(Rze,e):n?mp.createElement(e,{is:n}):mp.createElement(e);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>mp.createTextNode(e),createComment:e=>mp.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>mp.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,a){const i=n?n.previousSibling:t.lastChild;if(o&&(o===a||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===a||!(o=o.nextSibling)););else{gde.innerHTML=vCe(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const s=gde.content;if(r==="svg"||r==="mathml"){const l=s.firstChild;for(;l.firstChild;)s.appendChild(l.firstChild);s.removeChild(l)}t.insertBefore(s,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},t0="transition",nx="animation",o8=Symbol("_vtc"),mCe={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},yCe=Ba({},U8e,mCe),Lze=e=>(e.displayName="Transition",e.props=yCe,e),xi=Lze((e,{slots:t})=>Vt(VVe,bCe(e),t)),k1=(e,t=[])=>{ct(e)?e.forEach(n=>n(...t)):e&&e(...t)},vde=e=>e?ct(e)?e.some(t=>t.length>1):e.length>1:!1;function bCe(e){const t={};for(const F in e)F in mCe||(t[F]=e[F]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:a=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:l=a,appearActiveClass:u=i,appearToClass:c=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,g=Uze(o),p=g&&g[0],m=g&&g[1],{onBeforeEnter:v,onEnter:y,onEnterCancelled:_,onLeave:C,onLeaveCancelled:S,onBeforeAppear:E=v,onAppear:k=y,onAppearCancelled:O=_}=t,T=(F,H,R,z)=>{F._enterCancelled=z,I0(F,H?c:s),I0(F,H?u:i),R&&R()},P=(F,H)=>{F._isLeaving=!1,I0(F,d),I0(F,h),I0(F,f),H&&H()},U=F=>(H,R)=>{const z=F?k:y,M=()=>T(H,F,R);k1(z,[H,M]),mde(()=>{I0(H,F?l:a),If(H,F?c:s),vde(z)||yde(H,r,p,M)})};return Ba(t,{onBeforeEnter(F){k1(v,[F]),If(F,a),If(F,i)},onBeforeAppear(F){k1(E,[F]),If(F,l),If(F,u)},onEnter:U(!1),onAppear:U(!0),onLeave(F,H){F._isLeaving=!0;const R=()=>P(F,H);If(F,d),F._enterCancelled?(If(F,f),vY()):(vY(),If(F,f)),mde(()=>{F._isLeaving&&(I0(F,d),If(F,h),vde(C)||yde(F,r,m,R))}),k1(C,[F,R])},onEnterCancelled(F){T(F,!1,void 0,!0),k1(_,[F])},onAppearCancelled(F){T(F,!0,void 0,!0),k1(O,[F])},onLeaveCancelled(F){P(F),k1(S,[F])}})}function Uze(e){if(e==null)return null;if(vn(e))return[Pz(e.enter),Pz(e.leave)];{const t=Pz(e);return[t,t]}}function Pz(e){return ZUe(e)}function If(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[o8]||(e[o8]=new Set)).add(t)}function I0(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[o8];n&&(n.delete(t),n.size||(e[o8]=void 0))}function mde(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Vze=0;function yde(e,t,n,r){const o=e._endId=++Vze,a=()=>{o===e._endId&&r()};if(n!=null)return setTimeout(a,n);const{type:i,timeout:s,propCount:l}=_Ce(e,t);if(!i)return r();const u=i+"end";let c=0;const d=()=>{e.removeEventListener(u,f),a()},f=h=>{h.target===e&&++c>=l&&d()};setTimeout(()=>{c(n[g]||"").split(", "),o=r(`${t0}Delay`),a=r(`${t0}Duration`),i=bde(o,a),s=r(`${nx}Delay`),l=r(`${nx}Duration`),u=bde(s,l);let c=null,d=0,f=0;t===t0?i>0&&(c=t0,d=i,f=a.length):t===nx?u>0&&(c=nx,d=u,f=l.length):(d=Math.max(i,u),c=d>0?i>u?t0:nx:null,f=c?c===t0?a.length:l.length:0);const h=c===t0&&/\b(transform|all)(,|$)/.test(r(`${t0}Property`).toString());return{type:c,timeout:d,propCount:f,hasTransform:h}}function bde(e,t){for(;e.length_de(n)+_de(e[r])))}function _de(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function vY(){return document.body.offsetHeight}function zze(e,t,n){const r=e[o8];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const IM=Symbol("_vod"),wCe=Symbol("_vsh"),Pn={beforeMount(e,{value:t},{transition:n}){e[IM]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):rx(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),rx(e,!0),r.enter(e)):r.leave(e,()=>{rx(e,!1)}):rx(e,t))},beforeUnmount(e,{value:t}){rx(e,t)}};function rx(e,t){e.style.display=t?e[IM]:"none",e[wCe]=!t}const jze=Symbol(""),Hze=/(^|;)\s*display\s*:/;function Wze(e,t,n){const r=e.style,o=$t(n);let a=!1;if(n&&!o){if(t)if($t(t))for(const i of t.split(";")){const s=i.slice(0,i.indexOf(":")).trim();n[s]==null&&zF(r,s,"")}else for(const i in t)n[i]==null&&zF(r,i,"");for(const i in n)i==="display"&&(a=!0),zF(r,i,n[i])}else if(o){if(t!==n){const i=r[jze];i&&(n+=";"+i),r.cssText=n,a=Hze.test(n)}}else t&&e.removeAttribute("style");IM in e&&(e[IM]=a?r.display:"",e[wCe]&&(r.display="none"))}const wde=/\s*!important$/;function zF(e,t,n){if(ct(n))n.forEach(r=>zF(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=qze(e,t);wde.test(n)?e.setProperty(Ng(r),n.replace(wde,""),"important"):e[r]=n}}const Cde=["Webkit","Moz","ms"],$z={};function qze(e,t){const n=$z[t];if(n)return n;let r=wl(t);if(r!=="filter"&&r in e)return $z[t]=r;r=eT(r);for(let o=0;oBz||(Xze.then(()=>Bz=0),Bz=Date.now());function Zze(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;sf(Qze(r,n.value),t,5,[r])};return n.value=e,n.attached=Jze(),n}function Qze(e,t){if(ct(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Ade=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,eje=(e,t,n,r,o,a)=>{const i=o==="svg";t==="class"?zze(e,r,i):t==="style"?Wze(e,n,r):rL(t)?Qte(t)||Gze(e,t,n,r,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):tje(e,t,r,i))?(Dde(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Sde(e,t,r,i,a,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!$t(r))?Dde(e,wl(t),r,a,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Sde(e,t,r,i))};function tje(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ade(t)&&Rt(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Ade(t)&&$t(n)?!1:t in e}const CCe=new WeakMap,xCe=new WeakMap,MM=Symbol("_moveCb"),Tde=Symbol("_enterCb"),nje=e=>(delete e.props.mode,e),rje=nje({name:"TransitionGroup",props:Ba({},yCe,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=bn(),r=L8e();let o,a;return gf(()=>{if(!o.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!sje(o[0].el,n.vnode.el,i)){o=[];return}o.forEach(oje),o.forEach(aje);const s=o.filter(ije);vY(),s.forEach(l=>{const u=l.el,c=u.style;If(u,i),c.transform=c.webkitTransform=c.transitionDuration="";const d=u[MM]=f=>{f&&f.target!==u||(!f||/transform$/.test(f.propertyName))&&(u.removeEventListener("transitionend",d),u[MM]=null,I0(u,i))};u.addEventListener("transitionend",d)}),o=[]}),()=>{const i=Cr(e),s=bCe(i);let l=i.tag||tt;if(o=[],a)for(let u=0;u{s.split(/\s+/).forEach(l=>l&&r.classList.remove(l))}),n.split(/\s+/).forEach(s=>s&&r.classList.add(s)),r.style.display="none";const a=t.nodeType===1?t:t.parentNode;a.appendChild(r);const{hasTransform:i}=_Ce(r);return a.removeChild(r),i}const a8=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ct(t)?n=>LF(t,n):t};function lje(e){e.target.composing=!0}function Ode(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const gg=Symbol("_assign"),mL={created(e,{modifiers:{lazy:t,trim:n,number:r}},o){e[gg]=a8(o);const a=r||o.props&&o.props.type==="number";j0(e,t?"change":"input",i=>{if(i.target.composing)return;let s=e.value;n&&(s=s.trim()),a&&(s=aY(s)),e[gg](s)}),n&&j0(e,"change",()=>{e.value=e.value.trim()}),t||(j0(e,"compositionstart",lje),j0(e,"compositionend",Ode),j0(e,"change",Ode))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:o,number:a}},i){if(e[gg]=a8(i),e.composing)return;const s=(a||e.type==="number")&&!/^0\d/.test(e.value)?aY(e.value):e.value,l=t??"";s!==l&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||o&&e.value.trim()===l)||(e.value=l))}},PM={deep:!0,created(e,t,n){e[gg]=a8(n),j0(e,"change",()=>{const r=e._modelValue,o=DCe(e),a=e.checked,i=e[gg];if(ct(r)){const s=u8e(r,o),l=s!==-1;if(a&&!l)i(r.concat(o));else if(!a&&l){const u=[...r];u.splice(s,1),i(u)}}else if(oL(r)){const s=new Set(r);a?s.add(o):s.delete(o),i(s)}else i(ECe(e,a))})},mounted:Fde,beforeUpdate(e,t,n){e[gg]=a8(n),Fde(e,t,n)}};function Fde(e,{value:t,oldValue:n},r){e._modelValue=t;let o;if(ct(t))o=u8e(t,r.props.value)>-1;else if(oL(t))o=t.has(r.props.value);else{if(t===n)return;o=r8(t,ECe(e,!0))}e.checked!==o&&(e.checked=o)}const SCe={created(e,{value:t},n){e.checked=r8(t,n.props.value),e[gg]=a8(n),j0(e,"change",()=>{e[gg](DCe(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[gg]=a8(r),t!==n&&(e.checked=r8(t,r.props.value))}};function DCe(e){return"_value"in e?e._value:e.value}function ECe(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const uje=["ctrl","shift","alt","meta"],cje={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>uje.some(n=>e[`${n}Key`]&&!t.includes(n))},zt=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(o,...a)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=o=>{if(!("key"in o))return;const a=Ng(o.key);if(t.some(i=>i===a||dje[i]===a))return e(o)})},fje=Ba({patchProp:eje},Nze);let Ide;function kCe(){return Ide||(Ide=cze(fje))}const Mm=(...e)=>{kCe().render(...e)},ACe=(...e)=>{const t=kCe().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=pje(r);if(!o)return;const a=t._component;!Rt(a)&&!a.render&&!a.template&&(a.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const i=n(o,!1,hje(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t};function hje(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function pje(e){return $t(e)?document.querySelector(e):e}var gje=!1;/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let TCe;const yL=e=>TCe=e,OCe=Symbol();function mY(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var OS;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(OS||(OS={}));function vje(){const e=nne(!0),t=e.run(()=>X({}));let n=[],r=[];const o=Jd({install(a){yL(o),o._a=a,a.provide(OCe,o),a.config.globalProperties.$pinia=o,r.forEach(i=>n.push(i)),r=[]},use(a){return!this._a&&!gje?r.push(a):n.push(a),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return o}const FCe=()=>{};function Mde(e,t,n,r=FCe){e.push(t);const o=()=>{const a=e.indexOf(t);a>-1&&(e.splice(a,1),r())};return!n&&rne()&&one(o),o}function G_(e,...t){e.slice().forEach(n=>{n(...t)})}const mje=e=>e(),Pde=Symbol(),Rz=Symbol();function yY(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],o=e[n];mY(o)&&mY(r)&&e.hasOwnProperty(n)&&!kr(r)&&!am(r)?e[n]=yY(o,r):e[n]=r}return e}const yje=Symbol();function bje(e){return!mY(e)||!e.hasOwnProperty(yje)}const{assign:M0}=Object;function _je(e){return!!(kr(e)&&e.effect)}function wje(e,t,n,r){const{state:o,actions:a,getters:i}=t,s=n.state.value[e];let l;function u(){s||(n.state.value[e]=o?o():{});const c=Ra(n.state.value[e]);return M0(c,a,Object.keys(i||{}).reduce((d,f)=>(d[f]=Jd(K(()=>{yL(n);const h=n._s.get(e);return i[f].call(h,h)})),d),{}))}return l=ICe(e,u,t,n,r,!0),l}function ICe(e,t,n={},r,o,a){let i;const s=M0({actions:{}},n),l={deep:!0};let u,c,d=[],f=[],h;const g=r.state.value[e];!a&&!g&&(r.state.value[e]={}),X({});let p;function m(O){let T;u=c=!1,typeof O=="function"?(O(r.state.value[e]),T={type:OS.patchFunction,storeId:e,events:h}):(yY(r.state.value[e],O),T={type:OS.patchObject,payload:O,storeId:e,events:h});const P=p=Symbol();It().then(()=>{p===P&&(u=!0)}),c=!0,G_(d,T,r.state.value[e])}const v=a?function(){const{state:T}=n,P=T?T():{};this.$patch(U=>{M0(U,P)})}:FCe;function y(){i.stop(),d=[],f=[],r._s.delete(e)}const _=(O,T="")=>{if(Pde in O)return O[Rz]=T,O;const P=function(){yL(r);const U=Array.from(arguments),F=[],H=[];function R(N){F.push(N)}function z(N){H.push(N)}G_(f,{args:U,name:P[Rz],store:S,after:R,onError:z});let M;try{M=O.apply(this&&this.$id===e?this:S,U)}catch(N){throw G_(H,N),N}return M instanceof Promise?M.then(N=>(G_(F,N),N)).catch(N=>(G_(H,N),Promise.reject(N))):(G_(F,M),M)};return P[Pde]=!0,P[Rz]=T,P},C={_p:r,$id:e,$onAction:Mde.bind(null,f),$patch:m,$reset:v,$subscribe(O,T={}){const P=Mde(d,O,T.detached,()=>U()),U=i.run(()=>Ze(()=>r.state.value[e],F=>{(T.flush==="sync"?c:u)&&O({storeId:e,type:OS.direct,events:h},F)},M0({},l,T)));return P},$dispose:y},S=Bn(C);r._s.set(e,S);const k=(r._a&&r._a.runWithContext||mje)(()=>r._e.run(()=>(i=nne()).run(()=>t({action:_}))));for(const O in k){const T=k[O];if(kr(T)&&!_je(T)||am(T))a||(g&&bje(T)&&(kr(T)?T.value=g[O]:yY(T,g[O])),r.state.value[e][O]=T);else if(typeof T=="function"){const P=_(T,O);k[O]=P,s.actions[O]=T}}return M0(S,k),M0(Cr(S),k),Object.defineProperty(S,"$state",{get:()=>r.state.value[e],set:O=>{m(T=>{M0(T,O)})}}),r._p.forEach(O=>{M0(S,i.run(()=>O({store:S,app:r._a,pinia:r,options:s})))}),g&&a&&n.hydrate&&n.hydrate(S.$state,g),u=!0,c=!0,S}/*! #__NO_SIDE_EFFECTS__ */function Cje(e,t,n){let r,o;const a=typeof t=="function";typeof e=="string"?(r=e,o=a?n:t):(o=e,r=e.id);function i(s,l){const u=rze();return s=s||(u?kt(OCe,null):null),s&&yL(s),s=TCe,s._s.has(r)||(a?ICe(r,t,o,s):wje(r,o,s)),s._s.get(r)}return i.$id=r,i}/*! + * vue-router v4.5.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const j4=typeof document<"u";function MCe(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function xje(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&MCe(e.default)}const Qr=Object.assign;function Nz(e,t){const n={};for(const r in t){const o=t[r];n[r]=lf(o)?o.map(e):e(o)}return n}const FS=()=>{},lf=Array.isArray,PCe=/#/g,Sje=/&/g,Dje=/\//g,Eje=/=/g,kje=/\?/g,$Ce=/\+/g,Aje=/%5B/g,Tje=/%5D/g,BCe=/%5E/g,Oje=/%60/g,RCe=/%7B/g,Fje=/%7C/g,NCe=/%7D/g,Ije=/%20/g;function xne(e){return encodeURI(""+e).replace(Fje,"|").replace(Aje,"[").replace(Tje,"]")}function Mje(e){return xne(e).replace(RCe,"{").replace(NCe,"}").replace(BCe,"^")}function bY(e){return xne(e).replace($Ce,"%2B").replace(Ije,"+").replace(PCe,"%23").replace(Sje,"%26").replace(Oje,"`").replace(RCe,"{").replace(NCe,"}").replace(BCe,"^")}function Pje(e){return bY(e).replace(Eje,"%3D")}function $je(e){return xne(e).replace(PCe,"%23").replace(kje,"%3F")}function Bje(e){return e==null?"":$je(e).replace(Dje,"%2F")}function ED(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Rje=/\/$/,Nje=e=>e.replace(Rje,"");function Lz(e,t,n="/"){let r,o={},a="",i="";const s=t.indexOf("#");let l=t.indexOf("?");return s=0&&(l=-1),l>-1&&(r=t.slice(0,l),a=t.slice(l+1,s>-1?s:t.length),o=e(a)),s>-1&&(r=r||t.slice(0,s),i=t.slice(s,t.length)),r=zje(r??t,n),{fullPath:r+(a&&"?")+a+i,path:r,query:o,hash:ED(i)}}function Lje(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function $de(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Uje(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&i8(t.matched[r],n.matched[o])&&LCe(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function i8(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function LCe(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Vje(e[n],t[n]))return!1;return!0}function Vje(e,t){return lf(e)?Bde(e,t):lf(t)?Bde(t,e):e===t}function Bde(e,t){return lf(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function zje(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let a=n.length-1,i,s;for(i=0;i1&&a--;else break;return n.slice(0,a).join("/")+"/"+r.slice(i).join("/")}const n0={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var kD;(function(e){e.pop="pop",e.push="push"})(kD||(kD={}));var IS;(function(e){e.back="back",e.forward="forward",e.unknown=""})(IS||(IS={}));function jje(e){if(!e)if(j4){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Nje(e)}const Hje=/^[^#]+#/;function Wje(e,t){return e.replace(Hje,"#")+t}function qje(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const bL=()=>({left:window.scrollX,top:window.scrollY});function Kje(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=qje(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Rde(e,t){return(history.state?history.state.position-t:-1)+e}const _Y=new Map;function Gje(e,t){_Y.set(e,t)}function Yje(e){const t=_Y.get(e);return _Y.delete(e),t}let Xje=()=>location.protocol+"//"+location.host;function UCe(e,t){const{pathname:n,search:r,hash:o}=t,a=e.indexOf("#");if(a>-1){let s=o.includes(e.slice(a))?e.slice(a).length:1,l=o.slice(s);return l[0]!=="/"&&(l="/"+l),$de(l,"")}return $de(n,e)+r+o}function Jje(e,t,n,r){let o=[],a=[],i=null;const s=({state:f})=>{const h=UCe(e,location),g=n.value,p=t.value;let m=0;if(f){if(n.value=h,t.value=f,i&&i===g){i=null;return}m=p?f.position-p.position:0}else r(h);o.forEach(v=>{v(n.value,g,{delta:m,type:kD.pop,direction:m?m>0?IS.forward:IS.back:IS.unknown})})};function l(){i=n.value}function u(f){o.push(f);const h=()=>{const g=o.indexOf(f);g>-1&&o.splice(g,1)};return a.push(h),h}function c(){const{history:f}=window;f.state&&f.replaceState(Qr({},f.state,{scroll:bL()}),"")}function d(){for(const f of a)f();a=[],window.removeEventListener("popstate",s),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",s),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:d}}function Nde(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?bL():null}}function Zje(e){const{history:t,location:n}=window,r={value:UCe(e,n)},o={value:t.state};o.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(l,u,c){const d=e.indexOf("#"),f=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+l:Xje()+e+l;try{t[c?"replaceState":"pushState"](u,"",f),o.value=u}catch(h){console.error(h),n[c?"replace":"assign"](f)}}function i(l,u){const c=Qr({},t.state,Nde(o.value.back,l,o.value.forward,!0),u,{position:o.value.position});a(l,c,!0),r.value=l}function s(l,u){const c=Qr({},o.value,t.state,{forward:l,scroll:bL()});a(c.current,c,!0);const d=Qr({},Nde(r.value,l,null),{position:c.position+1},u);a(l,d,!1),r.value=l}return{location:r,state:o,push:s,replace:i}}function Qje(e){e=jje(e);const t=Zje(e),n=Jje(e,t.state,t.location,t.replace);function r(a,i=!0){i||n.pauseListeners(),history.go(a)}const o=Qr({location:"",base:e,go:r,createHref:Wje.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function eHe(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Qje(e)}function tHe(e){return typeof e=="string"||e&&typeof e=="object"}function VCe(e){return typeof e=="string"||typeof e=="symbol"}const zCe=Symbol("");var Lde;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Lde||(Lde={}));function s8(e,t){return Qr(new Error,{type:e,[zCe]:!0},t)}function op(e,t){return e instanceof Error&&zCe in e&&(t==null||!!(e.type&t))}const Ude="[^/]+?",nHe={sensitive:!1,strict:!1,start:!0,end:!0},rHe=/[.+*?^${}()[\]/\\]/g;function oHe(e,t){const n=Qr({},nHe,t),r=[];let o=n.start?"^":"";const a=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(o+="/");for(let d=0;dt.length?t.length===1&&t[0]===40+40?1:-1:0}function jCe(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const iHe={type:0,value:""},sHe=/[a-zA-Z0-9_]/;function lHe(e){if(!e)return[[]];if(e==="/")return[[iHe]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${u}": ${h}`)}let n=0,r=n;const o=[];let a;function i(){a&&o.push(a),a=[]}let s=0,l,u="",c="";function d(){u&&(n===0?a.push({type:0,value:u}):n===1||n===2||n===3?(a.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function f(){u+=l}for(;s{i(_)}:FS}function i(d){if(VCe(d)){const f=r.get(d);f&&(r.delete(d),n.splice(n.indexOf(f),1),f.children.forEach(i),f.alias.forEach(i))}else{const f=n.indexOf(d);f>-1&&(n.splice(f,1),d.record.name&&r.delete(d.record.name),d.children.forEach(i),d.alias.forEach(i))}}function s(){return n}function l(d){const f=hHe(d,n);n.splice(f,0,d),d.record.name&&!Hde(d)&&r.set(d.record.name,d)}function u(d,f){let h,g={},p,m;if("name"in d&&d.name){if(h=r.get(d.name),!h)throw s8(1,{location:d});m=h.record.name,g=Qr(zde(f.params,h.keys.filter(_=>!_.optional).concat(h.parent?h.parent.keys.filter(_=>_.optional):[]).map(_=>_.name)),d.params&&zde(d.params,h.keys.map(_=>_.name))),p=h.stringify(g)}else if(d.path!=null)p=d.path,h=n.find(_=>_.re.test(p)),h&&(g=h.parse(p),m=h.record.name);else{if(h=f.name?r.get(f.name):n.find(_=>_.re.test(f.path)),!h)throw s8(1,{location:d,currentLocation:f});m=h.record.name,g=Qr({},f.params,d.params),p=h.stringify(g)}const v=[];let y=h;for(;y;)v.unshift(y.record),y=y.parent;return{name:m,path:p,params:g,matched:v,meta:fHe(v)}}e.forEach(d=>a(d));function c(){n.length=0,r.clear()}return{addRoute:a,resolve:u,removeRoute:i,clearRoutes:c,getRoutes:s,getRecordMatcher:o}}function zde(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function jde(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:dHe(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function dHe(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Hde(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function fHe(e){return e.reduce((t,n)=>Qr(t,n.meta),{})}function Wde(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function hHe(e,t){let n=0,r=t.length;for(;n!==r;){const a=n+r>>1;jCe(e,t[a])<0?r=a:n=a+1}const o=pHe(e);return o&&(r=t.lastIndexOf(o,r-1)),r}function pHe(e){let t=e;for(;t=t.parent;)if(HCe(t)&&jCe(e,t)===0)return t}function HCe({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function gHe(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;oa&&bY(a)):[r&&bY(r)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+n,a!=null&&(t+="="+a))})}return t}function vHe(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=lf(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const mHe=Symbol(""),Kde=Symbol(""),_L=Symbol(""),Sne=Symbol(""),wY=Symbol("");function ox(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function U0(e,t,n,r,o,a=i=>i()){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((s,l)=>{const u=f=>{f===!1?l(s8(4,{from:n,to:t})):f instanceof Error?l(f):tHe(f)?l(s8(2,{from:t,to:f})):(i&&r.enterCallbacks[o]===i&&typeof f=="function"&&i.push(f),s())},c=a(()=>e.call(r&&r.instances[o],t,n,u));let d=Promise.resolve(c);e.length<3&&(d=d.then(u)),d.catch(f=>l(f))})}function Uz(e,t,n,r,o=a=>a()){const a=[];for(const i of e)for(const s in i.components){let l=i.components[s];if(!(t!=="beforeRouteEnter"&&!i.instances[s]))if(MCe(l)){const c=(l.__vccOpts||l)[t];c&&a.push(U0(c,n,r,i,s,o))}else{let u=l();a.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${s}" at "${i.path}"`);const d=xje(c)?c.default:c;i.mods[s]=c,i.components[s]=d;const h=(d.__vccOpts||d)[t];return h&&U0(h,n,r,i,s,o)()}))}}return a}function Gde(e){const t=kt(_L),n=kt(Sne),r=K(()=>{const l=b(e.to);return t.resolve(l)}),o=K(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],d=n.matched;if(!c||!d.length)return-1;const f=d.findIndex(i8.bind(null,c));if(f>-1)return f;const h=Yde(l[u-2]);return u>1&&Yde(c)===h&&d[d.length-1].path!==h?d.findIndex(i8.bind(null,l[u-2])):f}),a=K(()=>o.value>-1&&CHe(n.params,r.value.params)),i=K(()=>o.value>-1&&o.value===n.matched.length-1&&LCe(n.params,r.value.params));function s(l={}){if(wHe(l)){const u=t[b(e.replace)?"replace":"push"](b(e.to)).catch(FS);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:r,href:K(()=>r.value.href),isActive:a,isExactActive:i,navigate:s}}function yHe(e){return e.length===1?e[0]:e}const bHe=ne({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Gde,setup(e,{slots:t}){const n=Bn(Gde(e)),{options:r}=kt(_L),o=K(()=>({[Xde(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Xde(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&yHe(t.default(n));return e.custom?a:Vt("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},a)}}}),_He=bHe;function wHe(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function CHe(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!lf(o)||o.length!==r.length||r.some((a,i)=>a!==o[i]))return!1}return!0}function Yde(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Xde=(e,t,n)=>e??t??n,xHe=ne({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=kt(wY),o=K(()=>e.route||r.value),a=kt(Kde,0),i=K(()=>{let u=b(a);const{matched:c}=o.value;let d;for(;(d=c[u])&&!d.components;)u++;return u}),s=K(()=>o.value.matched[i.value]);Fn(Kde,K(()=>i.value+1)),Fn(mHe,s),Fn(wY,o);const l=X();return Ze(()=>[l.value,s.value,e.name],([u,c,d],[f,h,g])=>{c&&(c.instances[d]=u,h&&h!==c&&u&&u===f&&(c.leaveGuards.size||(c.leaveGuards=h.leaveGuards),c.updateGuards.size||(c.updateGuards=h.updateGuards))),u&&c&&(!h||!i8(c,h)||!f)&&(c.enterCallbacks[d]||[]).forEach(p=>p(u))},{flush:"post"}),()=>{const u=o.value,c=e.name,d=s.value,f=d&&d.components[c];if(!f)return Jde(n.default,{Component:f,route:u});const h=d.props[c],g=h?h===!0?u.params:typeof h=="function"?h(u):h:null,m=Vt(f,Qr({},g,t,{onVnodeUnmounted:v=>{v.component.isUnmounted&&(d.instances[c]=null)},ref:l}));return Jde(n.default,{Component:m,route:u})||m}}});function Jde(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const SHe=xHe;function DHe(e){const t=cHe(e.routes,e),n=e.parseQuery||gHe,r=e.stringifyQuery||qde,o=e.history,a=ox(),i=ox(),s=ox(),l=Tr(n0);let u=n0;j4&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Nz.bind(null,Z=>""+Z),d=Nz.bind(null,Bje),f=Nz.bind(null,ED);function h(Z,de){let we,Be;return VCe(Z)?(we=t.getRecordMatcher(Z),Be=de):Be=Z,t.addRoute(Be,we)}function g(Z){const de=t.getRecordMatcher(Z);de&&t.removeRoute(de)}function p(){return t.getRoutes().map(Z=>Z.record)}function m(Z){return!!t.getRecordMatcher(Z)}function v(Z,de){if(de=Qr({},de||l.value),typeof Z=="string"){const q=Lz(n,Z,de.path),pe=t.resolve({path:q.path},de),he=o.createHref(q.fullPath);return Qr(q,pe,{params:f(pe.params),hash:ED(q.hash),redirectedFrom:void 0,href:he})}let we;if(Z.path!=null)we=Qr({},Z,{path:Lz(n,Z.path,de.path).path});else{const q=Qr({},Z.params);for(const pe in q)q[pe]==null&&delete q[pe];we=Qr({},Z,{params:d(q)}),de.params=d(de.params)}const Be=t.resolve(we,de),ke=Z.hash||"";Be.params=c(f(Be.params));const ae=Lje(r,Qr({},Z,{hash:Mje(ke),path:Be.path})),le=o.createHref(ae);return Qr({fullPath:ae,hash:ke,query:r===qde?vHe(Z.query):Z.query||{}},Be,{redirectedFrom:void 0,href:le})}function y(Z){return typeof Z=="string"?Lz(n,Z,l.value.path):Qr({},Z)}function _(Z,de){if(u!==Z)return s8(8,{from:de,to:Z})}function C(Z){return k(Z)}function S(Z){return C(Qr(y(Z),{replace:!0}))}function E(Z){const de=Z.matched[Z.matched.length-1];if(de&&de.redirect){const{redirect:we}=de;let Be=typeof we=="function"?we(Z):we;return typeof Be=="string"&&(Be=Be.includes("?")||Be.includes("#")?Be=y(Be):{path:Be},Be.params={}),Qr({query:Z.query,hash:Z.hash,params:Be.path!=null?{}:Z.params},Be)}}function k(Z,de){const we=u=v(Z),Be=l.value,ke=Z.state,ae=Z.force,le=Z.replace===!0,q=E(we);if(q)return k(Qr(y(q),{state:typeof q=="object"?Qr({},ke,q.state):ke,force:ae,replace:le}),de||we);const pe=we;pe.redirectedFrom=de;let he;return!ae&&Uje(r,Be,we)&&(he=s8(16,{to:pe,from:Be}),$(Be,Be,!0,!1)),(he?Promise.resolve(he):P(pe,Be)).catch(re=>op(re)?op(re,2)?re:Y(re):L(re,pe,Be)).then(re=>{if(re){if(op(re,2))return k(Qr({replace:le},y(re.to),{state:typeof re.to=="object"?Qr({},ke,re.to.state):ke,force:ae}),de||pe)}else re=F(pe,Be,!0,le,ke);return U(pe,Be,re),re})}function O(Z,de){const we=_(Z,de);return we?Promise.reject(we):Promise.resolve()}function T(Z){const de=J.values().next().value;return de&&typeof de.runWithContext=="function"?de.runWithContext(Z):Z()}function P(Z,de){let we;const[Be,ke,ae]=EHe(Z,de);we=Uz(Be.reverse(),"beforeRouteLeave",Z,de);for(const q of Be)q.leaveGuards.forEach(pe=>{we.push(U0(pe,Z,de))});const le=O.bind(null,Z,de);return we.push(le),ie(we).then(()=>{we=[];for(const q of a.list())we.push(U0(q,Z,de));return we.push(le),ie(we)}).then(()=>{we=Uz(ke,"beforeRouteUpdate",Z,de);for(const q of ke)q.updateGuards.forEach(pe=>{we.push(U0(pe,Z,de))});return we.push(le),ie(we)}).then(()=>{we=[];for(const q of ae)if(q.beforeEnter)if(lf(q.beforeEnter))for(const pe of q.beforeEnter)we.push(U0(pe,Z,de));else we.push(U0(q.beforeEnter,Z,de));return we.push(le),ie(we)}).then(()=>(Z.matched.forEach(q=>q.enterCallbacks={}),we=Uz(ae,"beforeRouteEnter",Z,de,T),we.push(le),ie(we))).then(()=>{we=[];for(const q of i.list())we.push(U0(q,Z,de));return we.push(le),ie(we)}).catch(q=>op(q,8)?q:Promise.reject(q))}function U(Z,de,we){s.list().forEach(Be=>T(()=>Be(Z,de,we)))}function F(Z,de,we,Be,ke){const ae=_(Z,de);if(ae)return ae;const le=de===n0,q=j4?history.state:{};we&&(Be||le?o.replace(Z.fullPath,Qr({scroll:le&&q&&q.scroll},ke)):o.push(Z.fullPath,ke)),l.value=Z,$(Z,de,we,le),Y()}let H;function R(){H||(H=o.listen((Z,de,we)=>{if(!oe.listening)return;const Be=v(Z),ke=E(Be);if(ke){k(Qr(ke,{replace:!0,force:!0}),Be).catch(FS);return}u=Be;const ae=l.value;j4&&Gje(Rde(ae.fullPath,we.delta),bL()),P(Be,ae).catch(le=>op(le,12)?le:op(le,2)?(k(Qr(y(le.to),{force:!0}),Be).then(q=>{op(q,20)&&!we.delta&&we.type===kD.pop&&o.go(-1,!1)}).catch(FS),Promise.reject()):(we.delta&&o.go(-we.delta,!1),L(le,Be,ae))).then(le=>{le=le||F(Be,ae,!1),le&&(we.delta&&!op(le,8)?o.go(-we.delta,!1):we.type===kD.pop&&op(le,20)&&o.go(-1,!1)),U(Be,ae,le)}).catch(FS)}))}let z=ox(),M=ox(),N;function L(Z,de,we){Y(Z);const Be=M.list();return Be.length?Be.forEach(ke=>ke(Z,de,we)):console.error(Z),Promise.reject(Z)}function V(){return N&&l.value!==n0?Promise.resolve():new Promise((Z,de)=>{z.add([Z,de])})}function Y(Z){return N||(N=!Z,R(),z.list().forEach(([de,we])=>Z?we(Z):de()),z.reset()),Z}function $(Z,de,we,Be){const{scrollBehavior:ke}=e;if(!j4||!ke)return Promise.resolve();const ae=!we&&Yje(Rde(Z.fullPath,0))||(Be||!we)&&history.state&&history.state.scroll||null;return It().then(()=>ke(Z,de,ae)).then(le=>le&&Kje(le)).catch(le=>L(le,Z,de))}const B=Z=>o.go(Z);let W;const J=new Set,oe={currentRoute:l,listening:!0,addRoute:h,removeRoute:g,clearRoutes:t.clearRoutes,hasRoute:m,getRoutes:p,resolve:v,options:e,push:C,replace:S,go:B,back:()=>B(-1),forward:()=>B(1),beforeEach:a.add,beforeResolve:i.add,afterEach:s.add,onError:M.add,isReady:V,install(Z){const de=this;Z.component("RouterLink",_He),Z.component("RouterView",SHe),Z.config.globalProperties.$router=de,Object.defineProperty(Z.config.globalProperties,"$route",{enumerable:!0,get:()=>b(l)}),j4&&!W&&l.value===n0&&(W=!0,C(o.location).catch(ke=>{}));const we={};for(const ke in n0)Object.defineProperty(we,ke,{get:()=>l.value[ke],enumerable:!0});Z.provide(_L,de),Z.provide(Sne,une(we)),Z.provide(wY,l);const Be=Z.unmount;J.add(Z),Z.unmount=function(){J.delete(Z),J.size<1&&(u=n0,H&&H(),H=null,l.value=n0,W=!1,N=!1),Be()}}};function ie(Z){return Z.reduce((de,we)=>de.then(()=>T(we)),Promise.resolve())}return oe}function EHe(e,t){const n=[],r=[],o=[],a=Math.max(t.matched.length,e.matched.length);for(let i=0;ii8(u,s))?r.push(s):n.push(s));const l=e.matched[i];l&&(t.matched.find(u=>i8(u,l))||o.push(l))}return[n,r,o]}function cC(){return kt(_L)}function WCe(e){return kt(Sne)}const kHe="2.10.2",Zde=Symbol("INSTALLED_KEY"),qCe=Symbol(),MS="el",AHe="is-",A1=(e,t,n,r,o)=>{let a=`${e}-${t}`;return n&&(a+=`-${n}`),r&&(a+=`__${r}`),o&&(a+=`--${o}`),a},KCe=Symbol("namespaceContextKey"),Dne=e=>{const t=e||(bn()?kt(KCe,X(MS)):X(MS));return K(()=>b(t)||MS)},nt=(e,t)=>{const n=Dne(t);return{namespace:n,b:(p="")=>A1(n.value,e,p,"",""),e:p=>p?A1(n.value,e,"",p,""):"",m:p=>p?A1(n.value,e,"","",p):"",be:(p,m)=>p&&m?A1(n.value,e,p,m,""):"",em:(p,m)=>p&&m?A1(n.value,e,"",p,m):"",bm:(p,m)=>p&&m?A1(n.value,e,p,"",m):"",bem:(p,m,v)=>p&&m&&v?A1(n.value,e,p,m,v):"",is:(p,...m)=>{const v=m.length>=1?m[0]:!0;return p&&v?`${AHe}${p}`:""},cssVar:p=>{const m={};for(const v in p)p[v]&&(m[`--${n.value}-${v}`]=p[v]);return m},cssVarName:p=>`--${n.value}-${p}`,cssVarBlock:p=>{const m={};for(const v in p)p[v]&&(m[`--${n.value}-${e}-${v}`]=p[v]);return m},cssVarBlockName:p=>`--${n.value}-${e}-${p}`}};var THe=typeof global=="object"&&global&&global.Object===Object&&global;const GCe=THe;var OHe=typeof self=="object"&&self&&self.Object===Object&&self,FHe=GCe||OHe||Function("return this")();const vf=FHe;var IHe=vf.Symbol;const ad=IHe;var YCe=Object.prototype,MHe=YCe.hasOwnProperty,PHe=YCe.toString,ax=ad?ad.toStringTag:void 0;function $He(e){var t=MHe.call(e,ax),n=e[ax];try{e[ax]=void 0;var r=!0}catch{}var o=PHe.call(e);return r&&(t?e[ax]=n:delete e[ax]),o}var BHe=Object.prototype,RHe=BHe.toString;function NHe(e){return RHe.call(e)}var LHe="[object Null]",UHe="[object Undefined]",Qde=ad?ad.toStringTag:void 0;function m_(e){return e==null?e===void 0?UHe:LHe:Qde&&Qde in Object(e)?$He(e):NHe(e)}function Ph(e){return e!=null&&typeof e=="object"}var VHe="[object Symbol]";function wL(e){return typeof e=="symbol"||Ph(e)&&m_(e)==VHe}function Ene(e,t){for(var n=-1,r=e==null?0:e.length,o=Array(r);++n0){if(++t>=xWe)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function kWe(e){return function(){return e}}var AWe=function(){try{var e=b_(Object,"defineProperty");return e({},"",{}),e}catch{}}();const $M=AWe;var TWe=$M?function(e,t){return $M(e,"toString",{configurable:!0,enumerable:!1,value:kWe(t),writable:!0})}:kne;const OWe=TWe;var FWe=EWe(OWe);const ZCe=FWe;function IWe(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var RWe=9007199254740991,NWe=/^(?:0|[1-9]\d*)$/;function CL(e,t){var n=typeof e;return t=t??RWe,!!t&&(n=="number"||n!="symbol"&&NWe.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=VWe}function fC(e){return e!=null&&Fne(e.length)&&!Ane(e)}function zWe(e,t,n){if(!xl(n))return!1;var r=typeof t;return(r=="number"?fC(n)&&CL(t,n.length):r=="string"&&t in n)?rT(n[t],e):!1}function jWe(e){return txe(function(t,n){var r=-1,o=n.length,a=o>1?n[o-1]:void 0,i=o>2?n[2]:void 0;for(a=e.length>3&&typeof a=="function"?(o--,a):void 0,i&&zWe(n[0],n[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++r-1}function aKe(e,t){var n=this.__data__,r=xL(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Vg(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(s)?t>1?iT(s,t-1,n,r,o):Bne(o,s):r||(o[o.length]=s)}return o}function sxe(e){var t=e==null?0:e.length;return t?iT(e,1):[]}function lxe(e){return ZCe(exe(e,void 0,sxe),e+"")}var xKe=ixe(Object.getPrototypeOf,Object);const Rne=xKe;var SKe="[object Object]",DKe=Function.prototype,EKe=Object.prototype,uxe=DKe.toString,kKe=EKe.hasOwnProperty,AKe=uxe.call(Object);function cxe(e){if(!Ph(e)||m_(e)!=SKe)return!1;var t=Rne(e);if(t===null)return!0;var n=kKe.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&uxe.call(n)==AKe}function TKe(e,t,n){var r=-1,o=e.length;t<0&&(t=-t>o?0:o+t),n=n>o?o:n,n<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(o);++rs))return!1;var u=a.get(e),c=a.get(t);if(u&&c)return u==t&&c==e;var d=-1,f=!0,h=n&yYe?new MD:void 0;for(a.set(e,t),a.set(t,e);++d=t||k<0||d&&O>=a}function v(){var E=Hz();if(m(E))return y(E);s=setTimeout(v,p(E))}function y(E){return s=void 0,f&&r?h(E):(r=o=void 0,i)}function _(){s!==void 0&&clearTimeout(s),u=0,r=l=o=s=void 0}function C(){return s===void 0?i:y(Hz())}function S(){var E=Hz(),k=m(E);if(r=arguments,o=this,l=E,k){if(s===void 0)return g(l);if(d)return clearTimeout(s),s=setTimeout(v,t),h(l)}return s===void 0&&(s=setTimeout(v,t)),i}return S.cancel=_,S.flush=C,S}function kY(e,t,n){(n!==void 0&&!rT(e[t],n)||n===void 0&&!(t in e))&&Tne(e,t,n)}function Txe(e){return Ph(e)&&fC(e)}function AY(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}function cXe(e){return dC(e,aT(e))}function dXe(e,t,n,r,o,a,i){var s=AY(e,n),l=AY(t,n),u=i.get(l);if(u){kY(e,n,u);return}var c=a?a(s,l,n+"",e,t,i):void 0,d=c===void 0;if(d){var f=Cl(l),h=!f&&TD(l),g=!f&&!h&&Pne(l);c=l,f||h||g?Cl(s)?c=s:Txe(s)?c=JCe(s):h?(d=!1,c=fxe(l,!0)):g?(d=!1,c=mxe(l,!0)):c=[]:cxe(l)||AD(l)?(c=s,AD(s)?c=cXe(s):(!xl(s)||Ane(s))&&(c=yxe(l))):d=!1}d&&(i.set(l,c),o(c,l,r,a,i),i.delete(l)),kY(e,n,c)}function Oxe(e,t,n,r,o){e!==t&&Axe(t,function(a,i){if(o||(o=new Zd),xl(a))dXe(e,t,i,n,Oxe,r,o);else{var s=r?r(AY(e,i),a,i+"",e,t,o):void 0;s===void 0&&(s=a),kY(e,i,s)}},aT)}function fXe(e,t,n){for(var r=-1,o=e==null?0:e.length;++r1),a}),dC(e,vxe(e),n),r&&(n=A3(n,EXe|kXe|AXe,DXe));for(var o=t.length;o--;)SXe(n,t[o]);return n});const OXe=TXe;function Mxe(e,t,n,r){if(!xl(e))return e;t=hC(t,e);for(var o=-1,a=t.length,i=a-1,s=e;s!=null&&++o=LXe){var u=t?null:NXe(e);if(u)return Une(u);i=!1,o=Cxe,l=new MD}else l=t?[]:s;e:for(;++re===void 0,hr=e=>typeof e=="boolean",Lt=e=>typeof e=="number",Vu=e=>!e&&e!==0||ct(e)&&e.length===0||vn(e)&&!Object.keys(e).length,_l=e=>typeof Element>"u"?!1:e instanceof Element,ql=e=>ni(e),zXe=e=>$t(e)?!Number.isNaN(Number(e)):!1,AL=e=>e===window;var jXe=Object.defineProperty,HXe=Object.defineProperties,WXe=Object.getOwnPropertyDescriptors,Ofe=Object.getOwnPropertySymbols,qXe=Object.prototype.hasOwnProperty,KXe=Object.prototype.propertyIsEnumerable,Ffe=(e,t,n)=>t in e?jXe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,GXe=(e,t)=>{for(var n in t||(t={}))qXe.call(t,n)&&Ffe(e,n,t[n]);if(Ofe)for(var n of Ofe(t))KXe.call(t,n)&&Ffe(e,n,t[n]);return e},YXe=(e,t)=>HXe(e,WXe(t));function NM(e,t){var n;const r=Tr();return Wi(()=>{r.value=e()},YXe(GXe({},t),{flush:(n=t==null?void 0:t.flush)!=null?n:"sync"})),lC(r)}var Ife;const Nn=typeof window<"u",XXe=e=>typeof e<"u",TY=e=>typeof e=="function",JXe=e=>typeof e=="string",u8=()=>{},LM=Nn&&((Ife=window==null?void 0:window.navigator)==null?void 0:Ife.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Pm(e){return typeof e=="function"?e():b(e)}function Pxe(e,t){function n(...r){return new Promise((o,a)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(a)})}return n}function ZXe(e,t={}){let n,r,o=u8;const a=s=>{clearTimeout(s),o(),o=u8};return s=>{const l=Pm(e),u=Pm(t.maxWait);return n&&a(n),l<=0||u!==void 0&&u<=0?(r&&(a(r),r=null),Promise.resolve(s())):new Promise((c,d)=>{o=t.rejectOnCancel?d:c,u&&!r&&(r=setTimeout(()=>{n&&a(n),r=null,c(s())},u)),n=setTimeout(()=>{r&&a(r),r=null,c(s())},l)})}}function QXe(e,t=!0,n=!0,r=!1){let o=0,a,i=!0,s=u8,l;const u=()=>{a&&(clearTimeout(a),a=void 0,s(),s=u8)};return d=>{const f=Pm(e),h=Date.now()-o,g=()=>l=d();return u(),f<=0?(o=Date.now(),g()):(h>f&&(n||!i)?(o=Date.now(),g()):t&&(l=new Promise((p,m)=>{s=r?m:p,a=setTimeout(()=>{o=Date.now(),i=!0,p(g()),u()},Math.max(0,f-h))})),!n&&!a&&(a=setTimeout(()=>i=!0,f)),i=!1,l)}}function eJe(e){return e}function tJe(e,t){let n,r,o;const a=X(!0),i=()=>{a.value=!0,o()};Ze(e,i,{flush:"sync"});const s=TY(t)?t:t.get,l=TY(t)?void 0:t.set,u=AVe((c,d)=>(r=c,o=d,{get(){return a.value&&(n=s(),a.value=!1),r(),n},set(f){l==null||l(f)}}));return Object.isExtensible(u)&&(u.trigger=i),u}function lT(e){return rne()?(one(e),!0):!1}function nJe(e,t=200,n={}){return Pxe(ZXe(t,n),e)}function rJe(e,t=200,n={}){const r=X(e.value),o=nJe(()=>{r.value=e.value},t,n);return Ze(e,()=>o()),r}function $xe(e,t=200,n=!1,r=!0,o=!1){return Pxe(QXe(t,n,r,o),e)}function Vne(e,t=!0){bn()?Kt(e):t?e():It(e)}function jb(e,t,n={}){const{immediate:r=!0}=n,o=X(!1);let a=null;function i(){a&&(clearTimeout(a),a=null)}function s(){o.value=!1,i()}function l(...u){i(),o.value=!0,a=setTimeout(()=>{o.value=!1,a=null,e(...u)},Pm(t))}return r&&(o.value=!0,Nn&&l()),lT(s),{isPending:lC(o),start:l,stop:s}}function ji(e){var t;const n=Pm(e);return(t=n==null?void 0:n.$el)!=null?t:n}const jg=Nn?window:void 0,oJe=Nn?window.document:void 0;function xr(...e){let t,n,r,o;if(JXe(e[0])||Array.isArray(e[0])?([n,r,o]=e,t=jg):[t,n,r,o]=e,!t)return u8;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],i=()=>{a.forEach(c=>c()),a.length=0},s=(c,d,f,h)=>(c.addEventListener(d,f,h),()=>c.removeEventListener(d,f,h)),l=Ze(()=>[ji(t),Pm(o)],([c,d])=>{i(),c&&a.push(...n.flatMap(f=>r.map(h=>s(c,f,h,d))))},{immediate:!0,flush:"post"}),u=()=>{l(),i()};return lT(u),u}let Mfe=!1;function zne(e,t,n={}){const{window:r=jg,ignore:o=[],capture:a=!0,detectIframe:i=!1}=n;if(!r)return;LM&&!Mfe&&(Mfe=!0,Array.from(r.document.body.children).forEach(f=>f.addEventListener("click",u8)));let s=!0;const l=f=>o.some(h=>{if(typeof h=="string")return Array.from(r.document.querySelectorAll(h)).some(g=>g===f.target||f.composedPath().includes(g));{const g=ji(h);return g&&(f.target===g||f.composedPath().includes(g))}}),c=[xr(r,"click",f=>{const h=ji(e);if(!(!h||h===f.target||f.composedPath().includes(h))){if(f.detail===0&&(s=!l(f)),!s){s=!0;return}t(f)}},{passive:!0,capture:a}),xr(r,"pointerdown",f=>{const h=ji(e);h&&(s=!f.composedPath().includes(h)&&!l(f))},{passive:!0}),i&&xr(r,"blur",f=>{var h;const g=ji(e);((h=r.document.activeElement)==null?void 0:h.tagName)==="IFRAME"&&!(g!=null&&g.contains(r.document.activeElement))&&t(f)})].filter(Boolean);return()=>c.forEach(f=>f())}function aJe(e={}){var t;const{window:n=jg}=e,r=(t=e.document)!=null?t:n==null?void 0:n.document,o=tJe(()=>null,()=>r==null?void 0:r.activeElement);return n&&(xr(n,"blur",a=>{a.relatedTarget===null&&o.trigger()},!0),xr(n,"focus",o.trigger,!0)),o}function Bxe(e,t=!1){const n=X(),r=()=>n.value=!!e();return r(),Vne(r,t),n}function iJe(e){return JSON.parse(JSON.stringify(e))}const Pfe=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},$fe="__vueuse_ssr_handlers__";Pfe[$fe]=Pfe[$fe]||{};function sJe(e,t,{window:n=jg,initialValue:r=""}={}){const o=X(r),a=K(()=>{var i;return ji(t)||((i=n==null?void 0:n.document)==null?void 0:i.documentElement)});return Ze([a,()=>Pm(e)],([i,s])=>{var l;if(i&&n){const u=(l=n.getComputedStyle(i).getPropertyValue(s))==null?void 0:l.trim();o.value=u||r}},{immediate:!0}),Ze(o,i=>{var s;(s=a.value)!=null&&s.style&&a.value.style.setProperty(Pm(e),i)}),o}function lJe({document:e=oJe}={}){if(!e)return X("visible");const t=X(e.visibilityState);return xr(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var Bfe=Object.getOwnPropertySymbols,uJe=Object.prototype.hasOwnProperty,cJe=Object.prototype.propertyIsEnumerable,dJe=(e,t)=>{var n={};for(var r in e)uJe.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Bfe)for(var r of Bfe(e))t.indexOf(r)<0&&cJe.call(e,r)&&(n[r]=e[r]);return n};function co(e,t,n={}){const r=n,{window:o=jg}=r,a=dJe(r,["window"]);let i;const s=Bxe(()=>o&&"ResizeObserver"in o),l=()=>{i&&(i.disconnect(),i=void 0)},u=Ze(()=>ji(e),d=>{l(),s.value&&o&&d&&(i=new ResizeObserver(t),i.observe(d,a))},{immediate:!0,flush:"post"}),c=()=>{l(),u()};return lT(c),{isSupported:s,stop:c}}function Rfe(e,t={}){const{reset:n=!0,windowResize:r=!0,windowScroll:o=!0,immediate:a=!0}=t,i=X(0),s=X(0),l=X(0),u=X(0),c=X(0),d=X(0),f=X(0),h=X(0);function g(){const p=ji(e);if(!p){n&&(i.value=0,s.value=0,l.value=0,u.value=0,c.value=0,d.value=0,f.value=0,h.value=0);return}const m=p.getBoundingClientRect();i.value=m.height,s.value=m.bottom,l.value=m.left,u.value=m.right,c.value=m.top,d.value=m.width,f.value=m.x,h.value=m.y}return co(e,g),Ze(()=>ji(e),p=>!p&&g()),o&&xr("scroll",g,{capture:!0,passive:!0}),r&&xr("resize",g,{passive:!0}),Vne(()=>{a&&g()}),{height:i,bottom:s,left:l,right:u,top:c,width:d,x:f,y:h,update:g}}function fJe(e,t={width:0,height:0},n={}){const{window:r=jg,box:o="content-box"}=n,a=K(()=>{var l,u;return(u=(l=ji(e))==null?void 0:l.namespaceURI)==null?void 0:u.includes("svg")}),i=X(t.width),s=X(t.height);return co(e,([l])=>{const u=o==="border-box"?l.borderBoxSize:o==="content-box"?l.contentBoxSize:l.devicePixelContentBoxSize;if(r&&a.value){const c=ji(e);if(c){const d=r.getComputedStyle(c);i.value=parseFloat(d.width),s.value=parseFloat(d.height)}}else if(u){const c=Array.isArray(u)?u:[u];i.value=c.reduce((d,{inlineSize:f})=>d+f,0),s.value=c.reduce((d,{blockSize:f})=>d+f,0)}else i.value=l.contentRect.width,s.value=l.contentRect.height},n),Ze(()=>ji(e),l=>{i.value=l?t.width:0,s.value=l?t.height:0}),{width:i,height:s}}var Nfe=Object.getOwnPropertySymbols,hJe=Object.prototype.hasOwnProperty,pJe=Object.prototype.propertyIsEnumerable,gJe=(e,t)=>{var n={};for(var r in e)hJe.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Nfe)for(var r of Nfe(e))t.indexOf(r)<0&&pJe.call(e,r)&&(n[r]=e[r]);return n};function Rxe(e,t,n={}){const r=n,{window:o=jg}=r,a=gJe(r,["window"]);let i;const s=Bxe(()=>o&&"MutationObserver"in o),l=()=>{i&&(i.disconnect(),i=void 0)},u=Ze(()=>ji(e),d=>{l(),s.value&&o&&d&&(i=new MutationObserver(t),i.observe(d,a))},{immediate:!0}),c=()=>{l(),u()};return lT(c),{isSupported:s,stop:c}}var Lfe;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Lfe||(Lfe={}));var vJe=Object.defineProperty,Ufe=Object.getOwnPropertySymbols,mJe=Object.prototype.hasOwnProperty,yJe=Object.prototype.propertyIsEnumerable,Vfe=(e,t,n)=>t in e?vJe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,bJe=(e,t)=>{for(var n in t||(t={}))mJe.call(t,n)&&Vfe(e,n,t[n]);if(Ufe)for(var n of Ufe(t))yJe.call(t,n)&&Vfe(e,n,t[n]);return e};const _Je={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};bJe({linear:eJe},_Je);function Nxe(e,t,n,r={}){var o,a,i;const{clone:s=!1,passive:l=!1,eventName:u,deep:c=!1,defaultValue:d}=r,f=bn(),h=n||(f==null?void 0:f.emit)||((o=f==null?void 0:f.$emit)==null?void 0:o.bind(f))||((i=(a=f==null?void 0:f.proxy)==null?void 0:a.$emit)==null?void 0:i.bind(f==null?void 0:f.proxy));let g=u;t||(t="modelValue"),g=u||g||`update:${t.toString()}`;const p=v=>s?TY(s)?s(v):iJe(v):v,m=()=>XXe(e[t])?p(e[t]):d;if(l){const v=m(),y=X(v);return Ze(()=>e[t],_=>y.value=p(_)),Ze(y,_=>{(_!==e[t]||c)&&h(g,_)},{deep:c}),y}else return K({get(){return m()},set(v){h(g,v)}})}function wJe({window:e=jg}={}){if(!e)return X(!1);const t=X(e.document.hasFocus());return xr(e,"blur",()=>{t.value=!1}),xr(e,"focus",()=>{t.value=!0}),t}function CJe(e={}){const{window:t=jg,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:o=!0,includeScrollbar:a=!0}=e,i=X(n),s=X(r),l=()=>{t&&(a?(i.value=t.innerWidth,s.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,s.value=t.document.documentElement.clientHeight))};return l(),Vne(l),xr("resize",l,{passive:!0}),o&&xr("orientationchange",l,{passive:!0}),{width:i,height:s}}class xJe extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function oa(e,t){throw new xJe(`[${e}] ${t}`)}const zfe={current:0},jfe=X(0),Lxe=2e3,Hfe=Symbol("elZIndexContextKey"),Uxe=Symbol("zIndexContextKey"),gC=e=>{const t=bn()?kt(Hfe,zfe):zfe,n=e||(bn()?kt(Uxe,void 0):void 0),r=K(()=>{const i=b(n);return Lt(i)?i:Lxe}),o=K(()=>r.value+jfe.value),a=()=>(t.current++,jfe.value=t.current,o.value);return!Nn&&kt(Hfe),{initialZIndex:r,currentZIndex:o,nextZIndex:a}};var SJe={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const DJe=e=>(t,n)=>EJe(t,n,b(e)),EJe=(e,t,n)=>na(n,e,e).replace(/\{(\w+)\}/g,(r,o)=>{var a;return`${(a=t==null?void 0:t[o])!=null?a:`{${o}}`}`}),kJe=e=>{const t=K(()=>b(e).name),n=kr(e)?e:X(e);return{lang:t,locale:n,t:DJe(e)}},Vxe=Symbol("localeContextKey"),Un=e=>{const t=e||kt(Vxe,X());return kJe(K(()=>t.value||SJe))},zxe="__epPropKey",$e=e=>e,AJe=e=>vn(e)&&!!e[zxe],mf=(e,t)=>{if(!vn(e)||AJe(e))return e;const{values:n,required:r,default:o,type:a,validator:i}=e,l={type:a,required:!!r,validator:n||i?u=>{let c=!1,d=[];if(n&&(d=Array.from(n),Gn(e,"default")&&d.push(o),c||(c=d.includes(u))),i&&(c||(c=i(u))),!c&&d.length>0){const f=[...new Set(d)].map(h=>JSON.stringify(h)).join(", ");$ze(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${f}], got value ${JSON.stringify(u)}.`)}return c}:void 0,[zxe]:!0};return Gn(e,"default")&&(l.default=o),l},ht=e=>PD(Object.entries(e).map(([t,n])=>[t,mf(n,t)])),Gh=["","default","small","large"],Aa=mf({type:String,values:Gh,required:!1}),jxe=Symbol("size"),Hxe=()=>{const e=kt(jxe,{});return K(()=>b(e.size)||"")},Wxe=Symbol("emptyValuesContextKey"),TJe=["",void 0,null],OJe=void 0,vC=ht({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Rt(e)?!e():!e}}),TL=(e,t)=>{const n=bn()?kt(Wxe,X({})):X({}),r=K(()=>e.emptyValues||n.value.emptyValues||TJe),o=K(()=>Rt(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:Rt(n.value.valueOnClear)?n.value.valueOnClear():n.value.valueOnClear!==void 0?n.value.valueOnClear:t!==void 0?t:OJe),a=i=>r.value.includes(i);return r.value.includes(o.value),{emptyValues:r,valueOnClear:o,isEmptyValue:a}},c8=e=>Object.keys(e),qxe=e=>Object.entries(e),$S=(e,t,n)=>({get value(){return na(e,t,n)},set value(r){PXe(e,t,r)}}),UM=X();function uT(e,t=void 0){const n=bn()?kt(qCe,UM):UM;return e?K(()=>{var r,o;return(o=(r=n.value)==null?void 0:r[e])!=null?o:t}):n}function OL(e,t){const n=uT(),r=nt(e,K(()=>{var s;return((s=n.value)==null?void 0:s.namespace)||MS})),o=Un(K(()=>{var s;return(s=n.value)==null?void 0:s.locale})),a=gC(K(()=>{var s;return((s=n.value)==null?void 0:s.zIndex)||Lxe})),i=K(()=>{var s;return b(t)||((s=n.value)==null?void 0:s.size)||""});return jne(K(()=>b(n)||{})),{ns:r,locale:o,zIndex:a,size:i}}const jne=(e,t,n=!1)=>{var r;const o=!!bn(),a=o?uT():void 0,i=(r=t==null?void 0:t.provide)!=null?r:o?Fn:void 0;if(!i)return;const s=K(()=>{const l=b(e);return a!=null&&a.value?FJe(a.value,l):l});return i(qCe,s),i(Vxe,K(()=>s.value.locale)),i(KCe,K(()=>s.value.namespace)),i(Uxe,K(()=>s.value.zIndex)),i(jxe,{size:K(()=>s.value.size||"")}),i(Wxe,K(()=>({emptyValues:s.value.emptyValues,valueOnClear:s.value.valueOnClear}))),(n||!UM.value)&&(UM.value=s.value),s},FJe=(e,t)=>{const n=[...new Set([...c8(e),...c8(t)])],r={};for(const o of n)r[o]=t[o]!==void 0?t[o]:e[o];return r},IJe=(e=[])=>({version:kHe,install:(n,r)=>{n[Zde]||(n[Zde]=!0,e.forEach(o=>n.use(o)),r&&jne(r,n,!0))}}),en="update:modelValue",En="change",Ea="input",MJe=ht({zIndex:{type:$e([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),PJe={scroll:({scrollTop:e,fixed:t})=>Lt(e)&&hr(t),[En]:e=>hr(e)};var vt=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n};function $Je(e,t,n,r){const o=n-t;return e/=r/2,e<1?o/2*e*e*e+t:o/2*((e-=2)*e*e+2)+t}const $m=e=>Nn?window.requestAnimationFrame(e):setTimeout(e,16),Hb=e=>Nn?window.cancelAnimationFrame(e):clearTimeout(e),Kxe=(e="")=>e.split(" ").filter(t=>!!t.trim()),jl=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},Yc=(e,t)=>{!e||!t.trim()||e.classList.add(...Kxe(t))},Hs=(e,t)=>{!e||!t.trim()||e.classList.remove(...Kxe(t))},lg=(e,t)=>{var n;if(!Nn||!e||!t)return"";let r=wl(t);r==="float"&&(r="cssFloat");try{const o=e.style[r];if(o)return o;const a=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return a?a[r]:""}catch{return e.style[r]}},Gxe=(e,t,n)=>{if(!(!e||!t))if(vn(t))qxe(t).forEach(([r,o])=>Gxe(e,r,o));else{const r=wl(t);e.style[r]=n}};function Io(e,t="px"){if(!e)return"";if(Lt(e)||zXe(e))return`${e}${t}`;if($t(e))return e}const BJe=(e,t)=>{if(!Nn)return!1;const n={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(t)],r=lg(e,n);return["scroll","auto","overlay"].some(o=>r.includes(o))},Hne=(e,t)=>{if(!Nn)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(BJe(n,t))return n;n=n.parentNode}return n};let q7;const Yxe=e=>{var t;if(!Nn)return 0;if(q7!==void 0)return q7;const n=document.createElement("div");n.className=`${e}-scrollbar__wrap`,n.style.visibility="hidden",n.style.width="100px",n.style.position="absolute",n.style.top="-9999px",document.body.appendChild(n);const r=n.offsetWidth;n.style.overflow="scroll";const o=document.createElement("div");o.style.width="100%",n.appendChild(o);const a=o.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),q7=r-a,q7};function Wne(e,t){if(!Nn)return;if(!t){e.scrollTop=0;return}const n=[];let r=t.offsetParent;for(;r!==null&&e!==r&&e.contains(r);)n.push(r),r=r.offsetParent;const o=t.offsetTop+n.reduce((l,u)=>l+u.offsetTop,0),a=o+t.offsetHeight,i=e.scrollTop,s=i+e.clientHeight;os&&(e.scrollTop=a-e.clientHeight)}function RJe(e,t,n,r,o){const a=Date.now();let i;const s=()=>{const u=Date.now()-a,c=$Je(u>r?r:u,t,n,r);AL(e)?e.scrollTo(window.pageXOffset,c):e.scrollTop=c,u{i&&Hb(i)}}const Wfe=(e,t)=>AL(t)?e.ownerDocument.documentElement:t,qfe=e=>AL(e)?window.scrollY:e.scrollTop,Xxe="ElAffix",NJe=ne({name:Xxe}),LJe=ne({...NJe,props:MJe,emits:PJe,setup(e,{expose:t,emit:n}){const r=e,o=nt("affix"),a=Tr(),i=Tr(),s=Tr(),{height:l}=CJe(),{height:u,width:c,top:d,bottom:f,update:h}=Rfe(i,{windowScroll:!1}),g=Rfe(a),p=X(!1),m=X(0),v=X(0),y=K(()=>({height:p.value?`${u.value}px`:"",width:p.value?`${c.value}px`:""})),_=K(()=>{if(!p.value)return{};const E=r.offset?Io(r.offset):0;return{height:`${u.value}px`,width:`${c.value}px`,top:r.position==="top"?E:"",bottom:r.position==="bottom"?E:"",transform:v.value?`translateY(${v.value}px)`:"",zIndex:r.zIndex}}),C=()=>{if(!s.value)return;m.value=s.value instanceof Window?document.documentElement.scrollTop:s.value.scrollTop||0;const{position:E,target:k,offset:O}=r,T=O+u.value;if(E==="top")if(k){const P=g.bottom.value-T;p.value=O>d.value&&g.bottom.value>0,v.value=P<0?P:0}else p.value=O>d.value;else if(k){const P=l.value-g.top.value-T;p.value=l.value-Og.top.value,v.value=P<0?-P:0}else p.value=l.value-O{h(),await It(),n("scroll",{scrollTop:m.value,fixed:p.value})};return Ze(p,E=>n(En,E)),Kt(()=>{var E;r.target?(a.value=(E=document.querySelector(r.target))!=null?E:void 0,a.value||oa(Xxe,`Target does not exist: ${r.target}`)):a.value=document.documentElement,s.value=Hne(i.value,!0),h()}),xr(s,"scroll",S),Wi(C),t({update:C,updateRoot:h}),(E,k)=>(I(),j("div",{ref_key:"root",ref:i,class:ee(b(o).b()),style:Nt(b(y))},[w("div",{class:ee({[b(o).m("fixed")]:p.value}),style:Nt(b(_))},[Ne(E.$slots,"default")],6)],6))}});var UJe=vt(LJe,[["__file","affix.vue"]]);const dn=(e,t)=>{if(e.install=n=>{for(const r of[e,...Object.values(t??{})])n.component(r.name,r)},t)for(const[n,r]of Object.entries(t))e[n]=r;return e},Jxe=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),VJe=(e,t)=>(e.install=n=>{n.directive(t,e)},e),vo=e=>(e.install=fr,e),zJe=dn(UJe),jJe=ht({size:{type:$e([Number,String])},color:{type:String}}),HJe=ne({name:"ElIcon",inheritAttrs:!1}),WJe=ne({...HJe,props:jJe,setup(e){const t=e,n=nt("icon"),r=K(()=>{const{size:o,color:a}=t;return!o&&!a?{}:{fontSize:Ln(o)?void 0:Io(o),"--color":a}});return(o,a)=>(I(),j("i",Dn({class:b(n).b(),style:b(r)},o.$attrs),[Ne(o.$slots,"default")],16))}});var qJe=vt(WJe,[["__file","icon.vue"]]);const Tt=dn(qJe);function Kfe(){let e;const t=(r,o)=>{n(),e=window.setTimeout(r,o)},n=()=>window.clearTimeout(e);return lT(()=>n()),{registerTimeout:t,cancelTimeout:n}}const Zxe=ht({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),Qxe=({showAfter:e,hideAfter:t,autoClose:n,open:r,close:o})=>{const{registerTimeout:a}=Kfe(),{registerTimeout:i,cancelTimeout:s}=Kfe();return{onOpen:c=>{a(()=>{r(c);const d=b(n);Lt(d)&&d>0&&i(()=>{o(c)},d)},b(e))},onClose:c=>{s(),a(()=>{o(c)},b(t))}}};/*! Element Plus Icons Vue v2.3.1 */var KJe=ne({name:"AddLocation",__name:"add-location",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32"}),w("path",{fill:"currentColor",d:"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"}),w("path",{fill:"currentColor",d:"M544 384h96a32 32 0 1 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0z"})]))}}),GJe=KJe,YJe=ne({name:"Aim",__name:"aim",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),w("path",{fill:"currentColor",d:"M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32"})]))}}),e5e=YJe,XJe=ne({name:"AlarmClock",__name:"alarm-clock",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 832a320 320 0 1 0 0-640 320 320 0 0 0 0 640m0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768"}),w("path",{fill:"currentColor",d:"m292.288 824.576 55.424 32-48 83.136a32 32 0 1 1-55.424-32zm439.424 0-55.424 32 48 83.136a32 32 0 1 0 55.424-32zM512 512h160a32 32 0 1 1 0 64H480a32 32 0 0 1-32-32V320a32 32 0 0 1 64 0zM90.496 312.256A160 160 0 0 1 312.32 90.496l-46.848 46.848a96 96 0 0 0-128 128L90.56 312.256zm835.264 0A160 160 0 0 0 704 90.496l46.848 46.848a96 96 0 0 1 128 128z"})]))}}),JJe=XJe,ZJe=ne({name:"Apple",__name:"apple",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M599.872 203.776a189.44 189.44 0 0 1 64.384-4.672l2.624.128c31.168 1.024 51.2 4.096 79.488 16.32 37.632 16.128 74.496 45.056 111.488 89.344 96.384 115.264 82.752 372.8-34.752 521.728-7.68 9.728-32 41.6-30.72 39.936a426.624 426.624 0 0 1-30.08 35.776c-31.232 32.576-65.28 49.216-110.08 50.048-31.36.64-53.568-5.312-84.288-18.752l-6.528-2.88c-20.992-9.216-30.592-11.904-47.296-11.904-18.112 0-28.608 2.88-51.136 12.672l-6.464 2.816c-28.416 12.224-48.32 18.048-76.16 19.2-74.112 2.752-116.928-38.08-180.672-132.16-96.64-142.08-132.608-349.312-55.04-486.4 46.272-81.92 129.92-133.632 220.672-135.04 32.832-.576 60.288 6.848 99.648 22.72 27.136 10.88 34.752 13.76 37.376 14.272 16.256-20.16 27.776-36.992 34.56-50.24 13.568-26.304 27.2-59.968 40.704-100.8a32 32 0 1 1 60.8 20.224c-12.608 37.888-25.408 70.4-38.528 97.664zm-51.52 78.08c-14.528 17.792-31.808 37.376-51.904 58.816a32 32 0 1 1-46.72-43.776l12.288-13.248c-28.032-11.2-61.248-26.688-95.68-26.112-70.4 1.088-135.296 41.6-171.648 105.792C121.6 492.608 176 684.16 247.296 788.992c34.816 51.328 76.352 108.992 130.944 106.944 52.48-2.112 72.32-34.688 135.872-34.688 63.552 0 81.28 34.688 136.96 33.536 56.448-1.088 75.776-39.04 126.848-103.872 107.904-136.768 107.904-362.752 35.776-449.088-72.192-86.272-124.672-84.096-151.68-85.12-41.472-4.288-81.6 12.544-113.664 25.152z"})]))}}),QJe=ZJe,eZe=ne({name:"ArrowDownBold",__name:"arrow-down-bold",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M104.704 338.752a64 64 0 0 1 90.496 0l316.8 316.8 316.8-316.8a64 64 0 0 1 90.496 90.496L557.248 791.296a64 64 0 0 1-90.496 0L104.704 429.248a64 64 0 0 1 0-90.496z"})]))}}),tZe=eZe,nZe=ne({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"})]))}}),lc=nZe,rZe=ne({name:"ArrowLeftBold",__name:"arrow-left-bold",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M685.248 104.704a64 64 0 0 1 0 90.496L368.448 512l316.8 316.8a64 64 0 0 1-90.496 90.496L232.704 557.248a64 64 0 0 1 0-90.496l362.048-362.048a64 64 0 0 1 90.496 0z"})]))}}),oZe=rZe,aZe=ne({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"})]))}}),uf=aZe,iZe=ne({name:"ArrowRightBold",__name:"arrow-right-bold",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M338.752 104.704a64 64 0 0 0 0 90.496l316.8 316.8-316.8 316.8a64 64 0 0 0 90.496 90.496l362.048-362.048a64 64 0 0 0 0-90.496L429.248 104.704a64 64 0 0 0-90.496 0z"})]))}}),sZe=iZe,lZe=ne({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),_i=lZe,uZe=ne({name:"ArrowUpBold",__name:"arrow-up-bold",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M104.704 685.248a64 64 0 0 0 90.496 0l316.8-316.8 316.8 316.8a64 64 0 0 0 90.496-90.496L557.248 232.704a64 64 0 0 0-90.496 0L104.704 594.752a64 64 0 0 0 0 90.496z"})]))}}),cZe=uZe,dZe=ne({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),mC=dZe,fZe=ne({name:"Avatar",__name:"avatar",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M628.736 528.896A416 416 0 0 1 928 928H96a415.872 415.872 0 0 1 299.264-399.104L512 704zM720 304a208 208 0 1 1-416 0 208 208 0 0 1 416 0"})]))}}),hZe=fZe,pZe=ne({name:"Back",__name:"back",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),w("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),t5e=pZe,gZe=ne({name:"Baseball",__name:"baseball",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M195.2 828.8a448 448 0 1 1 633.6-633.6 448 448 0 0 1-633.6 633.6zm45.248-45.248a384 384 0 1 0 543.104-543.104 384 384 0 0 0-543.104 543.104"}),w("path",{fill:"currentColor",d:"M497.472 96.896c22.784 4.672 44.416 9.472 64.896 14.528a256.128 256.128 0 0 0 350.208 350.208c5.056 20.48 9.856 42.112 14.528 64.896A320.128 320.128 0 0 1 497.472 96.896zM108.48 491.904a320.128 320.128 0 0 1 423.616 423.68c-23.04-3.648-44.992-7.424-65.728-11.52a256.128 256.128 0 0 0-346.496-346.432 1736.64 1736.64 0 0 1-11.392-65.728z"})]))}}),vZe=gZe,mZe=ne({name:"Basketball",__name:"basketball",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M778.752 788.224a382.464 382.464 0 0 0 116.032-245.632 256.512 256.512 0 0 0-241.728-13.952 762.88 762.88 0 0 1 125.696 259.584zm-55.04 44.224a699.648 699.648 0 0 0-125.056-269.632 256.128 256.128 0 0 0-56.064 331.968 382.72 382.72 0 0 0 181.12-62.336m-254.08 61.248A320.128 320.128 0 0 1 557.76 513.6a715.84 715.84 0 0 0-48.192-48.128 320.128 320.128 0 0 1-379.264 88.384 382.4 382.4 0 0 0 110.144 229.696 382.4 382.4 0 0 0 229.184 110.08zM129.28 481.088a256.128 256.128 0 0 0 331.072-56.448 699.648 699.648 0 0 0-268.8-124.352 382.656 382.656 0 0 0-62.272 180.8m106.56-235.84a762.88 762.88 0 0 1 258.688 125.056 256.512 256.512 0 0 0-13.44-241.088A382.464 382.464 0 0 0 235.84 245.248zm318.08-114.944c40.576 89.536 37.76 193.92-8.448 281.344a779.84 779.84 0 0 1 66.176 66.112 320.832 320.832 0 0 1 282.112-8.128 382.4 382.4 0 0 0-110.144-229.12 382.4 382.4 0 0 0-229.632-110.208zM828.8 828.8a448 448 0 1 1-633.6-633.6 448 448 0 0 1 633.6 633.6"})]))}}),yZe=mZe,bZe=ne({name:"BellFilled",__name:"bell-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M640 832a128 128 0 0 1-256 0zm192-64H134.4a38.4 38.4 0 0 1 0-76.8H192V448c0-154.88 110.08-284.16 256.32-313.6a64 64 0 1 1 127.36 0A320.128 320.128 0 0 1 832 448v243.2h57.6a38.4 38.4 0 0 1 0 76.8z"})]))}}),_Ze=bZe,wZe=ne({name:"Bell",__name:"bell",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64"}),w("path",{fill:"currentColor",d:"M256 768h512V448a256 256 0 1 0-512 0zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320"}),w("path",{fill:"currentColor",d:"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32m352 128h128a64 64 0 0 1-128 0"})]))}}),n5e=wZe,CZe=ne({name:"Bicycle",__name:"bicycle",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 832a128 128 0 1 0 0-256 128 128 0 0 0 0 256m0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384"}),w("path",{fill:"currentColor",d:"M288 672h320q32 0 32 32t-32 32H288q-32 0-32-32t32-32"}),w("path",{fill:"currentColor",d:"M768 832a128 128 0 1 0 0-256 128 128 0 0 0 0 256m0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384"}),w("path",{fill:"currentColor",d:"M480 192a32 32 0 0 1 0-64h160a32 32 0 0 1 31.04 24.256l96 384a32 32 0 0 1-62.08 15.488L615.04 192zM96 384a32 32 0 0 1 0-64h128a32 32 0 0 1 30.336 21.888l64 192a32 32 0 1 1-60.672 20.224L200.96 384z"}),w("path",{fill:"currentColor",d:"m373.376 599.808-42.752-47.616 320-288 42.752 47.616z"})]))}}),xZe=CZe,SZe=ne({name:"BottomLeft",__name:"bottom-left",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 768h416a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V352a32 32 0 0 1 64 0z"}),w("path",{fill:"currentColor",d:"M246.656 822.656a32 32 0 0 1-45.312-45.312l544-544a32 32 0 0 1 45.312 45.312l-544 544z"})]))}}),DZe=SZe,EZe=ne({name:"BottomRight",__name:"bottom-right",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M352 768a32 32 0 1 0 0 64h448a32 32 0 0 0 32-32V352a32 32 0 0 0-64 0v416z"}),w("path",{fill:"currentColor",d:"M777.344 822.656a32 32 0 0 0 45.312-45.312l-544-544a32 32 0 0 0-45.312 45.312z"})]))}}),kZe=EZe,AZe=ne({name:"Bottom",__name:"bottom",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M544 805.888V168a32 32 0 1 0-64 0v637.888L246.656 557.952a30.72 30.72 0 0 0-45.312 0 35.52 35.52 0 0 0 0 48.064l288 306.048a30.72 30.72 0 0 0 45.312 0l288-306.048a35.52 35.52 0 0 0 0-48 30.72 30.72 0 0 0-45.312 0L544 805.824z"})]))}}),TZe=AZe,OZe=ne({name:"Bowl",__name:"bowl",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M714.432 704a351.744 351.744 0 0 0 148.16-256H161.408a351.744 351.744 0 0 0 148.16 256zM288 766.592A415.68 415.68 0 0 1 96 416a32 32 0 0 1 32-32h768a32 32 0 0 1 32 32 415.68 415.68 0 0 1-192 350.592V832a64 64 0 0 1-64 64H352a64 64 0 0 1-64-64zM493.248 320h-90.496l254.4-254.4a32 32 0 1 1 45.248 45.248zm187.328 0h-128l269.696-155.712a32 32 0 0 1 32 55.424zM352 768v64h320v-64z"})]))}}),FZe=OZe,IZe=ne({name:"Box",__name:"box",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M317.056 128 128 344.064V896h768V344.064L706.944 128zm-14.528-64h418.944a32 32 0 0 1 24.064 10.88l206.528 236.096A32 32 0 0 1 960 332.032V928a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V332.032a32 32 0 0 1 7.936-21.12L278.4 75.008A32 32 0 0 1 302.528 64z"}),w("path",{fill:"currentColor",d:"M64 320h896v64H64z"}),w("path",{fill:"currentColor",d:"M448 327.872V640h128V327.872L526.08 128h-28.16zM448 64h128l64 256v352a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V320z"})]))}}),MZe=IZe,PZe=ne({name:"Briefcase",__name:"briefcase",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M320 320V128h384v192h192v192H128V320zM128 576h768v320H128zm256-256h256.064V192H384z"})]))}}),$Ze=PZe,BZe=ne({name:"BrushFilled",__name:"brush-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M608 704v160a96 96 0 0 1-192 0V704h-96a128 128 0 0 1-128-128h640a128 128 0 0 1-128 128zM192 512V128.064h640V512z"})]))}}),RZe=BZe,NZe=ne({name:"Brush",__name:"brush",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M896 448H128v192a64 64 0 0 0 64 64h192v192h256V704h192a64 64 0 0 0 64-64zm-770.752-64c0-47.552 5.248-90.24 15.552-128 14.72-54.016 42.496-107.392 83.2-160h417.28l-15.36 70.336L736 96h211.2c-24.832 42.88-41.92 96.256-51.2 160a663.872 663.872 0 0 0-6.144 128H960v256a128 128 0 0 1-128 128H704v160a32 32 0 0 1-32 32H352a32 32 0 0 1-32-32V768H192A128 128 0 0 1 64 640V384h61.248zm64 0h636.544c-2.048-45.824.256-91.584 6.848-137.216 4.48-30.848 10.688-59.776 18.688-86.784h-96.64l-221.12 141.248L561.92 160H256.512c-25.856 37.888-43.776 75.456-53.952 112.832-8.768 32.064-13.248 69.12-13.312 111.168z"})]))}}),LZe=NZe,UZe=ne({name:"Burger",__name:"burger",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 512a32 32 0 0 0-32 32v64a32 32 0 0 0 30.08 32H864a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32zm736-58.56A96 96 0 0 1 960 544v64a96 96 0 0 1-51.968 85.312L855.36 833.6a96 96 0 0 1-89.856 62.272H258.496A96 96 0 0 1 168.64 833.6l-52.608-140.224A96 96 0 0 1 64 608v-64a96 96 0 0 1 64-90.56V448a384 384 0 1 1 768 5.44M832 448a320 320 0 0 0-640 0zM512 704H188.352l40.192 107.136a32 32 0 0 0 29.952 20.736h507.008a32 32 0 0 0 29.952-20.736L835.648 704z"})]))}}),VZe=UZe,zZe=ne({name:"Calendar",__name:"calendar",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),Bm=zZe,jZe=ne({name:"CameraFilled",__name:"camera-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 224a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h704a64 64 0 0 0 64-64V288a64 64 0 0 0-64-64H748.416l-46.464-92.672A64 64 0 0 0 644.736 96H379.328a64 64 0 0 0-57.216 35.392L275.776 224zm352 435.2a115.2 115.2 0 1 0 0-230.4 115.2 115.2 0 0 0 0 230.4m0 140.8a256 256 0 1 1 0-512 256 256 0 0 1 0 512"})]))}}),HZe=jZe,WZe=ne({name:"Camera",__name:"camera",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M896 256H128v576h768zm-199.424-64-32.064-64h-304.96l-32 64zM96 192h160l46.336-92.608A64 64 0 0 1 359.552 64h304.96a64 64 0 0 1 57.216 35.328L768.192 192H928a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32m416 512a160 160 0 1 0 0-320 160 160 0 0 0 0 320m0 64a224 224 0 1 1 0-448 224 224 0 0 1 0 448"})]))}}),qZe=WZe,KZe=ne({name:"CaretBottom",__name:"caret-bottom",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m192 384 320 384 320-384z"})]))}}),GZe=KZe,YZe=ne({name:"CaretLeft",__name:"caret-left",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M672 192 288 511.936 672 832z"})]))}}),XZe=YZe,JZe=ne({name:"CaretRight",__name:"caret-right",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"})]))}}),qne=JZe,ZZe=ne({name:"CaretTop",__name:"caret-top",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"})]))}}),r5e=ZZe,QZe=ne({name:"Cellphone",__name:"cellphone",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 128a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h512a128 128 0 0 1 128 128v640a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V192A128 128 0 0 1 256 64m128 128h256a32 32 0 1 1 0 64H384a32 32 0 0 1 0-64m128 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128"})]))}}),eQe=QZe,tQe=ne({name:"ChatDotRound",__name:"chat-dot-round",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 0 1-206.912-48.384l-175.616 58.56z"}),w("path",{fill:"currentColor",d:"M512 563.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4"})]))}}),nQe=tQe,rQe=ne({name:"ChatDotSquare",__name:"chat-dot-square",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z"}),w("path",{fill:"currentColor",d:"M512 499.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4z"})]))}}),oQe=rQe,aQe=ne({name:"ChatLineRound",__name:"chat-line-round",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 0 1-206.912-48.384l-175.616 58.56z"}),w("path",{fill:"currentColor",d:"M352 576h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m32-192h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32"})]))}}),iQe=aQe,sQe=ne({name:"ChatLineSquare",__name:"chat-line-square",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 826.88 273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z"}),w("path",{fill:"currentColor",d:"M352 512h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m0-192h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32"})]))}}),FL=sQe,lQe=ne({name:"ChatRound",__name:"chat-round",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m174.72 855.68 130.048-43.392 23.424 11.392C382.4 849.984 444.352 864 512 864c223.744 0 384-159.872 384-352 0-192.832-159.104-352-384-352S128 319.168 128 512a341.12 341.12 0 0 0 69.248 204.288l21.632 28.8-44.16 110.528zm-45.248 82.56A32 32 0 0 1 89.6 896l56.512-141.248A405.12 405.12 0 0 1 64 512C64 299.904 235.648 96 512 96s448 203.904 448 416-173.44 416-448 416c-79.68 0-150.848-17.152-211.712-46.72l-170.88 56.96z"})]))}}),uQe=lQe,cQe=ne({name:"ChatSquare",__name:"chat-square",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128z"})]))}}),dQe=cQe,fQe=ne({name:"Check",__name:"check",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),Za=fQe,hQe=ne({name:"Checked",__name:"checked",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M704 192h160v736H160V192h160.064v64H704zM311.616 537.28l-45.312 45.248L447.36 763.52l316.8-316.8-45.312-45.184L447.36 673.024zM384 192V96h256v96z"})]))}}),pQe=hQe,gQe=ne({name:"Cherry",__name:"cherry",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M261.056 449.6c13.824-69.696 34.88-128.96 63.36-177.728 23.744-40.832 61.12-88.64 112.256-143.872H320a32 32 0 0 1 0-64h384a32 32 0 1 1 0 64H554.752c14.912 39.168 41.344 86.592 79.552 141.76 47.36 68.48 84.8 106.752 106.304 114.304a224 224 0 1 1-84.992 14.784c-22.656-22.912-47.04-53.76-73.92-92.608-38.848-56.128-67.008-105.792-84.352-149.312-55.296 58.24-94.528 107.52-117.76 147.2-23.168 39.744-41.088 88.768-53.568 147.072a224.064 224.064 0 1 1-64.96-1.6zM288 832a160 160 0 1 0 0-320 160 160 0 0 0 0 320m448-64a160 160 0 1 0 0-320 160 160 0 0 0 0 320"})]))}}),vQe=gQe,mQe=ne({name:"Chicken",__name:"chicken",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M349.952 716.992 478.72 588.16a106.688 106.688 0 0 1-26.176-19.072 106.688 106.688 0 0 1-19.072-26.176L304.704 671.744c.768 3.072 1.472 6.144 2.048 9.216l2.048 31.936 31.872 1.984c3.136.64 6.208 1.28 9.28 2.112zm57.344 33.152a128 128 0 1 1-216.32 114.432l-1.92-32-32-1.92a128 128 0 1 1 114.432-216.32L416.64 469.248c-2.432-101.44 58.112-239.104 149.056-330.048 107.328-107.328 231.296-85.504 316.8 0 85.44 85.44 107.328 209.408 0 316.8-91.008 90.88-228.672 151.424-330.112 149.056L407.296 750.08zm90.496-226.304c49.536 49.536 233.344-7.04 339.392-113.088 78.208-78.208 63.232-163.072 0-226.304-63.168-63.232-148.032-78.208-226.24 0C504.896 290.496 448.32 474.368 497.792 523.84M244.864 708.928a64 64 0 1 0-59.84 59.84l56.32-3.52zm8.064 127.68a64 64 0 1 0 59.84-59.84l-56.32 3.52-3.52 56.32z"})]))}}),yQe=mQe,bQe=ne({name:"ChromeFilled",__name:"chrome-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M938.67 512.01c0-44.59-6.82-87.6-19.54-128H682.67a212.372 212.372 0 0 1 42.67 128c.06 38.71-10.45 76.7-30.42 109.87l-182.91 316.8c235.65-.01 426.66-191.02 426.66-426.67z"}),w("path",{fill:"currentColor",d:"M576.79 401.63a127.92 127.92 0 0 0-63.56-17.6c-22.36-.22-44.39 5.43-63.89 16.38s-35.79 26.82-47.25 46.02a128.005 128.005 0 0 0-2.16 127.44l1.24 2.13a127.906 127.906 0 0 0 46.36 46.61 127.907 127.907 0 0 0 63.38 17.44c22.29.2 44.24-5.43 63.68-16.33a127.94 127.94 0 0 0 47.16-45.79v-.01l1.11-1.92a127.984 127.984 0 0 0 .29-127.46 127.957 127.957 0 0 0-46.36-46.91"}),w("path",{fill:"currentColor",d:"M394.45 333.96A213.336 213.336 0 0 1 512 298.67h369.58A426.503 426.503 0 0 0 512 85.34a425.598 425.598 0 0 0-171.74 35.98 425.644 425.644 0 0 0-142.62 102.22l118.14 204.63a213.397 213.397 0 0 1 78.67-94.21m117.56 604.72H512zm-97.25-236.73a213.284 213.284 0 0 1-89.54-86.81L142.48 298.6c-36.35 62.81-57.13 135.68-57.13 213.42 0 203.81 142.93 374.22 333.95 416.55h.04l118.19-204.71a213.315 213.315 0 0 1-122.77-21.91z"})]))}}),_Qe=bQe,wQe=ne({name:"CircleCheckFilled",__name:"circle-check-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),o5e=wQe,CQe=ne({name:"CircleCheck",__name:"circle-check",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),w("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"})]))}}),cT=CQe,xQe=ne({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),IL=xQe,SQe=ne({name:"CircleClose",__name:"circle-close",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),w("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),Yh=SQe,DQe=ne({name:"CirclePlusFilled",__name:"circle-plus-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-38.4 409.6H326.4a38.4 38.4 0 1 0 0 76.8h147.2v147.2a38.4 38.4 0 0 0 76.8 0V550.4h147.2a38.4 38.4 0 0 0 0-76.8H550.4V326.4a38.4 38.4 0 1 0-76.8 0v147.2z"})]))}}),EQe=DQe,kQe=ne({name:"CirclePlus",__name:"circle-plus",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64"}),w("path",{fill:"currentColor",d:"M480 672V352a32 32 0 1 1 64 0v320a32 32 0 0 1-64 0"}),w("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),AQe=kQe,TQe=ne({name:"Clock",__name:"clock",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),w("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),$D=TQe,OQe=ne({name:"CloseBold",__name:"close-bold",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z"})]))}}),FQe=OQe,IQe=ne({name:"Close",__name:"close",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),Gs=IQe,MQe=ne({name:"Cloudy",__name:"cloudy",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M598.4 831.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 831.872m-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 381.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z"})]))}}),PQe=MQe,$Qe=ne({name:"CoffeeCup",__name:"coffee-cup",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M768 192a192 192 0 1 1-8 383.808A256.128 256.128 0 0 1 512 768H320A256 256 0 0 1 64 512V160a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zm0 64v256a128 128 0 1 0 0-256M96 832h640a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64m32-640v320a192 192 0 0 0 192 192h192a192 192 0 0 0 192-192V192z"})]))}}),BQe=$Qe,RQe=ne({name:"Coffee",__name:"coffee",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M822.592 192h14.272a32 32 0 0 1 31.616 26.752l21.312 128A32 32 0 0 1 858.24 384h-49.344l-39.04 546.304A32 32 0 0 1 737.92 960H285.824a32 32 0 0 1-32-29.696L214.912 384H165.76a32 32 0 0 1-31.552-37.248l21.312-128A32 32 0 0 1 187.136 192h14.016l-6.72-93.696A32 32 0 0 1 226.368 64h571.008a32 32 0 0 1 31.936 34.304zm-64.128 0 4.544-64H260.736l4.544 64h493.184m-548.16 128H820.48l-10.688-64H214.208l-10.688 64h6.784m68.736 64 36.544 512H708.16l36.544-512z"})]))}}),NQe=RQe,LQe=ne({name:"Coin",__name:"coin",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z"}),w("path",{fill:"currentColor",d:"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z"}),w("path",{fill:"currentColor",d:"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224m0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160"})]))}}),UQe=LQe,VQe=ne({name:"ColdDrink",__name:"cold-drink",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M768 64a192 192 0 1 1-69.952 370.88L480 725.376V896h96a32 32 0 1 1 0 64H320a32 32 0 1 1 0-64h96V725.376L76.8 273.536a64 64 0 0 1-12.8-38.4v-10.688a32 32 0 0 1 32-32h71.808l-65.536-83.84a32 32 0 0 1 50.432-39.424l96.256 123.264h337.728A192.064 192.064 0 0 1 768 64M656.896 192.448H800a32 32 0 0 1 32 32v10.624a64 64 0 0 1-12.8 38.4l-80.448 107.2a128 128 0 1 0-81.92-188.16v-.064zm-357.888 64 129.472 165.76a32 32 0 0 1-50.432 39.36l-160.256-205.12H144l304 404.928 304-404.928z"})]))}}),zQe=VQe,jQe=ne({name:"CollectionTag",__name:"collection-tag",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 128v698.88l196.032-156.864a96 96 0 0 1 119.936 0L768 826.816V128zm-32-64h576a32 32 0 0 1 32 32v797.44a32 32 0 0 1-51.968 24.96L531.968 720a32 32 0 0 0-39.936 0L243.968 918.4A32 32 0 0 1 192 893.44V96a32 32 0 0 1 32-32"})]))}}),HQe=jQe,WQe=ne({name:"Collection",__name:"collection",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M192 736h640V128H256a64 64 0 0 0-64 64zm64-672h608a32 32 0 0 1 32 32v672a32 32 0 0 1-32 32H160l-32 57.536V192A128 128 0 0 1 256 64"}),w("path",{fill:"currentColor",d:"M240 800a48 48 0 1 0 0 96h592v-96zm0-64h656v160a64 64 0 0 1-64 64H240a112 112 0 0 1 0-224m144-608v250.88l96-76.8 96 76.8V128zm-64-64h320v381.44a32 32 0 0 1-51.968 24.96L480 384l-108.032 86.4A32 32 0 0 1 320 445.44z"})]))}}),Kne=WQe,qQe=ne({name:"Comment",__name:"comment",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M736 504a56 56 0 1 1 0-112 56 56 0 0 1 0 112m-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112m-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112M128 128v640h192v160l224-160h352V128z"})]))}}),KQe=qQe,GQe=ne({name:"Compass",__name:"compass",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),w("path",{fill:"currentColor",d:"M725.888 315.008C676.48 428.672 624 513.28 568.576 568.64c-55.424 55.424-139.968 107.904-253.568 157.312a12.8 12.8 0 0 1-16.896-16.832c49.536-113.728 102.016-198.272 157.312-253.632 55.36-55.296 139.904-107.776 253.632-157.312a12.8 12.8 0 0 1 16.832 16.832"})]))}}),YQe=GQe,XQe=ne({name:"Connection",__name:"connection",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M640 384v64H448a128 128 0 0 0-128 128v128a128 128 0 0 0 128 128h320a128 128 0 0 0 128-128V576a128 128 0 0 0-64-110.848V394.88c74.56 26.368 128 97.472 128 181.056v128a192 192 0 0 1-192 192H448a192 192 0 0 1-192-192V576a192 192 0 0 1 192-192z"}),w("path",{fill:"currentColor",d:"M384 640v-64h192a128 128 0 0 0 128-128V320a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128v128a128 128 0 0 0 64 110.848v70.272A192.064 192.064 0 0 1 64 448V320a192 192 0 0 1 192-192h320a192 192 0 0 1 192 192v128a192 192 0 0 1-192 192z"})]))}}),L5=XQe,JQe=ne({name:"Coordinate",__name:"coordinate",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M480 512h64v320h-64z"}),w("path",{fill:"currentColor",d:"M192 896h640a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64m64-128h512a128 128 0 0 1 128 128v64H128v-64a128 128 0 0 1 128-128m256-256a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512"})]))}}),ZQe=JQe,QQe=ne({name:"CopyDocument",__name:"copy-document",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z"}),w("path",{fill:"currentColor",d:"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64"})]))}}),vg=QQe,eet=ne({name:"Cpu",__name:"cpu",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M320 256a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64zm0-64h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128H320a128 128 0 0 1-128-128V320a128 128 0 0 1 128-128"}),w("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m160 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m-320 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32m160 896a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32m160 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32m-320 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32M64 512a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m0-160a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m0 320a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32m896-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32m0-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32m0 320a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32"})]))}}),tet=eet,net=ne({name:"CreditCard",__name:"credit-card",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M896 324.096c0-42.368-2.496-55.296-9.536-68.48a52.352 52.352 0 0 0-22.144-22.08c-13.12-7.04-26.048-9.536-68.416-9.536H228.096c-42.368 0-55.296 2.496-68.48 9.536a52.352 52.352 0 0 0-22.08 22.144c-7.04 13.12-9.536 26.048-9.536 68.416v375.808c0 42.368 2.496 55.296 9.536 68.48a52.352 52.352 0 0 0 22.144 22.08c13.12 7.04 26.048 9.536 68.416 9.536h567.808c42.368 0 55.296-2.496 68.48-9.536a52.352 52.352 0 0 0 22.08-22.144c7.04-13.12 9.536-26.048 9.536-68.416zm64 0v375.808c0 57.088-5.952 77.76-17.088 98.56-11.136 20.928-27.52 37.312-48.384 48.448-20.864 11.136-41.6 17.088-98.56 17.088H228.032c-57.088 0-77.76-5.952-98.56-17.088a116.288 116.288 0 0 1-48.448-48.384c-11.136-20.864-17.088-41.6-17.088-98.56V324.032c0-57.088 5.952-77.76 17.088-98.56 11.136-20.928 27.52-37.312 48.384-48.448 20.864-11.136 41.6-17.088 98.56-17.088H795.84c57.088 0 77.76 5.952 98.56 17.088 20.928 11.136 37.312 27.52 48.448 48.384 11.136 20.864 17.088 41.6 17.088 98.56z"}),w("path",{fill:"currentColor",d:"M64 320h896v64H64zm0 128h896v64H64zm128 192h256v64H192z"})]))}}),VM=net,ret=ne({name:"Crop",__name:"crop",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 768h672a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V96a32 32 0 0 1 64 0z"}),w("path",{fill:"currentColor",d:"M832 224v704a32 32 0 1 1-64 0V256H96a32 32 0 0 1 0-64h704a32 32 0 0 1 32 32"})]))}}),oet=ret,aet=ne({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"})]))}}),kg=aet,iet=ne({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"})]))}}),Ag=iet,set=ne({name:"DCaret",__name:"d-caret",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m512 128 288 320H224zM224 576h576L512 896z"})]))}}),uet=set,cet=ne({name:"DataAnalysis",__name:"data-analysis",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m665.216 768 110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32l110.848-192H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32zM832 192H192v512h640zM352 448a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0v-64a32 32 0 0 1 32-32m160-64a32 32 0 0 1 32 32v128a32 32 0 0 1-64 0V416a32 32 0 0 1 32-32m160-64a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V352a32 32 0 0 1 32-32"})]))}}),ML=cet,det=ne({name:"DataBoard",__name:"data-board",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M32 128h960v64H32z"}),w("path",{fill:"currentColor",d:"M192 192v512h640V192zm-64-64h768v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32z"}),w("path",{fill:"currentColor",d:"M322.176 960H248.32l144.64-250.56 55.424 32zm453.888 0h-73.856L576 741.44l55.424-32z"})]))}}),fet=det,het=ne({name:"DataLine",__name:"data-line",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M359.168 768H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32H665.216l110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32zM832 192H192v512h640zM342.656 534.656a32 32 0 1 1-45.312-45.312L444.992 341.76l125.44 94.08L679.04 300.032a32 32 0 1 1 49.92 39.936L581.632 524.224 451.008 426.24 342.656 534.592z"})]))}}),pet=het,get=ne({name:"DeleteFilled",__name:"delete-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M352 192V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64H96a32 32 0 0 1 0-64zm64 0h192v-64H416zM192 960a32 32 0 0 1-32-32V256h704v672a32 32 0 0 1-32 32zm224-192a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32m192 0a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32"})]))}}),vet=get,met=ne({name:"DeleteLocation",__name:"delete-location",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32"}),w("path",{fill:"currentColor",d:"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"}),w("path",{fill:"currentColor",d:"M384 384h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32"})]))}}),yet=met,bet=ne({name:"Delete",__name:"delete",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),Ws=bet,_et=ne({name:"Dessert",__name:"dessert",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 416v-48a144 144 0 0 1 168.64-141.888 224.128 224.128 0 0 1 430.72 0A144 144 0 0 1 896 368v48a384 384 0 0 1-352 382.72V896h-64v-97.28A384 384 0 0 1 128 416m287.104-32.064h193.792a143.808 143.808 0 0 1 58.88-132.736 160.064 160.064 0 0 0-311.552 0 143.808 143.808 0 0 1 58.88 132.8zm-72.896 0a72 72 0 1 0-140.48 0h140.48m339.584 0h140.416a72 72 0 1 0-140.48 0zM512 736a320 320 0 0 0 318.4-288.064H193.6A320 320 0 0 0 512 736M384 896.064h256a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64"})]))}}),wet=_et,Cet=ne({name:"Discount",__name:"discount",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M224 704h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0L224 318.336zm0 64v128h576V768zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0"}),w("path",{fill:"currentColor",d:"M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"})]))}}),xet=Cet,Det=ne({name:"DishDot",__name:"dish-dot",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m384.064 274.56.064-50.688A128 128 0 0 1 512.128 96c70.528 0 127.68 57.152 127.68 127.68v50.752A448.192 448.192 0 0 1 955.392 768H68.544A448.192 448.192 0 0 1 384 274.56zM96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64m32-128h768a384 384 0 1 0-768 0m447.808-448v-32.32a63.68 63.68 0 0 0-63.68-63.68 64 64 0 0 0-64 63.936V256z"})]))}}),Eet=Det,ket=ne({name:"Dish",__name:"dish",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M480 257.152V192h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64h-96v65.152A448 448 0 0 1 955.52 768H68.48A448 448 0 0 1 480 257.152M128 704h768a384 384 0 1 0-768 0M96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64"})]))}}),Aet=ket,Tet=ne({name:"DocumentAdd",__name:"document-add",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m320 512V448h64v128h128v64H544v128h-64V640H352v-64z"})]))}}),a5e=Tet,Oet=ne({name:"DocumentChecked",__name:"document-checked",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M805.504 320 640 154.496V320zM832 384H576V128H192v768h640zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m318.4 582.144 180.992-180.992L704.64 510.4 478.4 736.64 320 578.304l45.248-45.312z"})]))}}),Fet=Oet,Iet=ne({name:"DocumentCopy",__name:"document-copy",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 320v576h576V320zm-32-64h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32M960 96v704a32 32 0 0 1-32 32h-96v-64h64V128H384v64h-64V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32M256 672h320v64H256zm0-192h320v64H256z"})]))}}),cb=Iet,Met=ne({name:"DocumentDelete",__name:"document-delete",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M805.504 320 640 154.496V320zM832 384H576V128H192v768h640zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m308.992 546.304-90.496-90.624 45.248-45.248 90.56 90.496 90.496-90.432 45.248 45.248-90.496 90.56 90.496 90.496-45.248 45.248-90.496-90.496-90.56 90.496-45.248-45.248 90.496-90.496z"})]))}}),Pet=Met,$et=ne({name:"DocumentRemove",__name:"document-remove",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M805.504 320 640 154.496V320zM832 384H576V128H192v768h640zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m192 512h320v64H352z"})]))}}),Bet=$et,Ret=ne({name:"Document",__name:"document",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),Yu=Ret,Net=ne({name:"Download",__name:"download",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z"})]))}}),qu=Net,Let=ne({name:"Drizzling",__name:"drizzling",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672zM959.552 480a256 256 0 0 1-256 256h-400A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480M288 800h64v64h-64zm192 0h64v64h-64zm-96 96h64v64h-64zm192 0h64v64h-64zm96-96h64v64h-64z"})]))}}),Uet=Let,Vet=ne({name:"EditPen",__name:"edit-pen",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m199.04 672.64 193.984 112 224-387.968-193.92-112-224 388.032zm-23.872 60.16 32.896 148.288 144.896-45.696zM455.04 229.248l193.92 112 56.704-98.112-193.984-112-56.64 98.112zM104.32 708.8l384-665.024 304.768 175.936L409.152 884.8h.064l-248.448 78.336zm384 254.272v-64h448v64h-448z"})]))}}),$h=Vet,zet=ne({name:"Edit",__name:"edit",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("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"}),w("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"})]))}}),Xu=zet,jet=ne({name:"ElemeFilled",__name:"eleme-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M176 64h672c61.824 0 112 50.176 112 112v672a112 112 0 0 1-112 112H176A112 112 0 0 1 64 848V176c0-61.824 50.176-112 112-112m150.528 173.568c-152.896 99.968-196.544 304.064-97.408 456.96a330.688 330.688 0 0 0 456.96 96.64c9.216-5.888 17.6-11.776 25.152-18.56a18.24 18.24 0 0 0 4.224-24.32L700.352 724.8a47.552 47.552 0 0 0-65.536-14.272A234.56 234.56 0 0 1 310.592 641.6C240 533.248 271.104 387.968 379.456 316.48a234.304 234.304 0 0 1 276.352 15.168c1.664.832 2.56 2.56 3.392 4.224 5.888 8.384 3.328 19.328-5.12 25.216L456.832 489.6a47.552 47.552 0 0 0-14.336 65.472l16 24.384c5.888 8.384 16.768 10.88 25.216 5.056l308.224-199.936a19.584 19.584 0 0 0 6.72-23.488v-.896c-4.992-9.216-10.048-17.6-15.104-26.88-99.968-151.168-304.064-194.88-456.96-95.744zM786.88 504.704l-62.208 40.32c-8.32 5.888-10.88 16.768-4.992 25.216L760 632.32c5.888 8.448 16.768 11.008 25.152 5.12l31.104-20.16a55.36 55.36 0 0 0 16-76.48l-20.224-31.04a19.52 19.52 0 0 0-25.152-5.12z"})]))}}),Het=jet,Wet=ne({name:"Eleme",__name:"eleme",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M300.032 188.8c174.72-113.28 408-63.36 522.24 109.44 5.76 10.56 11.52 20.16 17.28 30.72v.96a22.4 22.4 0 0 1-7.68 26.88l-352.32 228.48c-9.6 6.72-22.08 3.84-28.8-5.76l-18.24-27.84a54.336 54.336 0 0 1 16.32-74.88l225.6-146.88c9.6-6.72 12.48-19.2 5.76-28.8-.96-1.92-1.92-3.84-3.84-4.8a267.84 267.84 0 0 0-315.84-17.28c-123.84 81.6-159.36 247.68-78.72 371.52a268.096 268.096 0 0 0 370.56 78.72 54.336 54.336 0 0 1 74.88 16.32l17.28 26.88c5.76 9.6 3.84 21.12-4.8 27.84-8.64 7.68-18.24 14.4-28.8 21.12a377.92 377.92 0 0 1-522.24-110.4c-113.28-174.72-63.36-408 111.36-522.24zm526.08 305.28a22.336 22.336 0 0 1 28.8 5.76l23.04 35.52a63.232 63.232 0 0 1-18.24 87.36l-35.52 23.04c-9.6 6.72-22.08 3.84-28.8-5.76l-46.08-71.04c-6.72-9.6-3.84-22.08 5.76-28.8l71.04-46.08z"})]))}}),qet=Wet,Ket=ne({name:"ElementPlus",__name:"element-plus",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M839.7 734.7c0 33.3-17.9 41-17.9 41S519.7 949.8 499.2 960c-10.2 5.1-20.5 5.1-30.7 0 0 0-314.9-184.3-325.1-192-5.1-5.1-10.2-12.8-12.8-20.5V368.6c0-17.9 20.5-28.2 20.5-28.2L466 158.6c12.8-5.1 25.6-5.1 38.4 0 0 0 279 161.3 309.8 179.2 17.9 7.7 28.2 25.6 25.6 46.1-.1-5-.1 317.5-.1 350.8M714.2 371.2c-64-35.8-217.6-125.4-217.6-125.4-7.7-5.1-20.5-5.1-30.7 0L217.6 389.1s-17.9 10.2-17.9 23v297c0 5.1 5.1 12.8 7.7 17.9 7.7 5.1 256 148.5 256 148.5 7.7 5.1 17.9 5.1 25.6 0 15.4-7.7 250.9-145.9 250.9-145.9s12.8-5.1 12.8-30.7v-74.2l-276.5 169v-64c0-17.9 7.7-30.7 20.5-46.1L745 535c5.1-7.7 10.2-20.5 10.2-30.7v-66.6l-279 169v-69.1c0-15.4 5.1-30.7 17.9-38.4l220.1-128zM919 135.7c0-5.1-5.1-7.7-7.7-7.7h-58.9V66.6c0-5.1-5.1-5.1-10.2-5.1l-30.7 5.1c-5.1 0-5.1 2.6-5.1 5.1V128h-56.3c-5.1 0-5.1 5.1-7.7 5.1v38.4h69.1v64c0 5.1 5.1 5.1 10.2 5.1l30.7-5.1c5.1 0 5.1-2.6 5.1-5.1v-56.3h64l-2.5-38.4z"})]))}}),Get=Ket,Yet=ne({name:"Expand",__name:"expand",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 192h768v128H128zm0 256h512v128H128zm0 256h768v128H128zm576-352 192 160-192 128z"})]))}}),i5e=Yet,Xet=ne({name:"Failed",__name:"failed",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m557.248 608 135.744-135.744-45.248-45.248-135.68 135.744-135.808-135.68-45.248 45.184L466.752 608l-135.68 135.68 45.184 45.312L512 653.248l135.744 135.744 45.248-45.248L557.312 608zM704 192h160v736H160V192h160v64h384zm-320 0V96h256v96z"})]))}}),Jet=Xet,Zet=ne({name:"Female",__name:"female",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 640a256 256 0 1 0 0-512 256 256 0 0 0 0 512m0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640"}),w("path",{fill:"currentColor",d:"M512 640q32 0 32 32v256q0 32-32 32t-32-32V672q0-32 32-32"}),w("path",{fill:"currentColor",d:"M352 800h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32"})]))}}),Qet=Zet,ett=ne({name:"Files",__name:"files",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 384v448h768V384zm-32-64h832a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32m64-128h704v64H160zm96-128h512v64H256z"})]))}}),ttt=ett,ntt=ne({name:"Film",__name:"film",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 160v704h704V160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M320 288V128h64v352h256V128h64v160h160v64H704v128h160v64H704v128h160v64H704v160h-64V544H384v352h-64V736H128v-64h192V544H128v-64h192V352H128v-64z"})]))}}),rtt=ntt,ott=ne({name:"Filter",__name:"filter",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M384 523.392V928a32 32 0 0 0 46.336 28.608l192-96A32 32 0 0 0 640 832V523.392l280.768-343.104a32 32 0 1 0-49.536-40.576l-288 352A32 32 0 0 0 576 512v300.224l-128 64V512a32 32 0 0 0-7.232-20.288L195.52 192H704a32 32 0 1 0 0-64H128a32 32 0 0 0-24.768 52.288z"})]))}}),att=ott,itt=ne({name:"Finished",__name:"finished",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M280.768 753.728 691.456 167.04a32 32 0 1 1 52.416 36.672L314.24 817.472a32 32 0 0 1-45.44 7.296l-230.4-172.8a32 32 0 0 1 38.4-51.2l203.968 152.96zM736 448a32 32 0 1 1 0-64h192a32 32 0 1 1 0 64zM608 640a32 32 0 0 1 0-64h319.936a32 32 0 1 1 0 64zM480 832a32 32 0 1 1 0-64h447.936a32 32 0 1 1 0 64z"})]))}}),stt=itt,ltt=ne({name:"FirstAidKit",__name:"first-aid-kit",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M192 256a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64zm0-64h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128"}),w("path",{fill:"currentColor",d:"M544 512h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0zM352 128v64h320v-64zm-32-64h384a32 32 0 0 1 32 32v128a32 32 0 0 1-32 32H320a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32"})]))}}),utt=ltt,ctt=ne({name:"Flag",__name:"flag",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M288 128h608L736 384l160 256H288v320h-96V64h96z"})]))}}),dtt=ctt,ftt=ne({name:"Fold",__name:"fold",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M896 192H128v128h768zm0 256H384v128h512zm0 256H128v128h768zM320 384 128 512l192 128z"})]))}}),s5e=ftt,htt=ne({name:"FolderAdd",__name:"folder-add",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m384 416V416h64v128h128v64H544v128h-64V608H352v-64z"})]))}}),OY=htt,ptt=ne({name:"FolderChecked",__name:"folder-checked",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m414.08 502.144 180.992-180.992L736.32 494.4 510.08 720.64l-158.4-158.336 45.248-45.312z"})]))}}),gtt=ptt,vtt=ne({name:"FolderDelete",__name:"folder-delete",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m370.752 448-90.496-90.496 45.248-45.248L512 530.752l90.496-90.496 45.248 45.248L557.248 576l90.496 90.496-45.248 45.248L512 621.248l-90.496 90.496-45.248-45.248z"})]))}}),mtt=vtt,ytt=ne({name:"FolderOpened",__name:"folder-opened",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M878.08 448H241.92l-96 384h636.16l96-384zM832 384v-64H485.76L357.504 192H128v448l57.92-231.744A32 32 0 0 1 216.96 384zm-24.96 512H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h287.872l128.384 128H864a32 32 0 0 1 32 32v96h23.04a32 32 0 0 1 31.04 39.744l-112 448A32 32 0 0 1 807.04 896"})]))}}),btt=ytt,_tt=ne({name:"FolderRemove",__name:"folder-remove",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32m256 416h320v64H352z"})]))}}),wtt=_tt,Ctt=ne({name:"Folder",__name:"folder",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 192v640h768V320H485.76L357.504 192zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32"})]))}}),xtt=Ctt,Stt=ne({name:"Food",__name:"food",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 352.576V352a288 288 0 0 1 491.072-204.224 192 192 0 0 1 274.24 204.48 64 64 0 0 1 57.216 74.24C921.6 600.512 850.048 710.656 736 756.992V800a96 96 0 0 1-96 96H384a96 96 0 0 1-96-96v-43.008c-114.048-46.336-185.6-156.48-214.528-330.496A64 64 0 0 1 128 352.64zm64-.576h64a160 160 0 0 1 320 0h64a224 224 0 0 0-448 0m128 0h192a96 96 0 0 0-192 0m439.424 0h68.544A128.256 128.256 0 0 0 704 192c-15.36 0-29.952 2.688-43.52 7.616 11.328 18.176 20.672 37.76 27.84 58.304A64.128 64.128 0 0 1 759.424 352M672 768H352v32a32 32 0 0 0 32 32h256a32 32 0 0 0 32-32zm-342.528-64h365.056c101.504-32.64 165.76-124.928 192.896-288H136.576c27.136 163.072 91.392 255.36 192.896 288"})]))}}),Dtt=Stt,Ett=ne({name:"Football",__name:"football",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896m0-64a384 384 0 1 0 0-768 384 384 0 0 0 0 768"}),w("path",{fill:"currentColor",d:"M186.816 268.288c16-16.384 31.616-31.744 46.976-46.08 17.472 30.656 39.808 58.112 65.984 81.28l-32.512 56.448a385.984 385.984 0 0 1-80.448-91.648zm653.696-5.312a385.92 385.92 0 0 1-83.776 96.96l-32.512-56.384a322.923 322.923 0 0 0 68.48-85.76c15.552 14.08 31.488 29.12 47.808 45.184zM465.984 445.248l11.136-63.104a323.584 323.584 0 0 0 69.76 0l11.136 63.104a387.968 387.968 0 0 1-92.032 0m-62.72-12.8A381.824 381.824 0 0 1 320 396.544l32-55.424a319.885 319.885 0 0 0 62.464 27.712l-11.2 63.488zm300.8-35.84a381.824 381.824 0 0 1-83.328 35.84l-11.2-63.552A319.885 319.885 0 0 0 672 341.184l32 55.424zm-520.768 364.8a385.92 385.92 0 0 1 83.968-97.28l32.512 56.32c-26.88 23.936-49.856 52.352-67.52 84.032-16-13.44-32.32-27.712-48.96-43.072zm657.536.128a1442.759 1442.759 0 0 1-49.024 43.072 321.408 321.408 0 0 0-67.584-84.16l32.512-56.32c33.216 27.456 61.696 60.352 84.096 97.408zM465.92 578.752a387.968 387.968 0 0 1 92.032 0l-11.136 63.104a323.584 323.584 0 0 0-69.76 0zm-62.72 12.8 11.2 63.552a319.885 319.885 0 0 0-62.464 27.712L320 627.392a381.824 381.824 0 0 1 83.264-35.84zm300.8 35.84-32 55.424a318.272 318.272 0 0 0-62.528-27.712l11.2-63.488c29.44 8.64 57.28 20.736 83.264 35.776z"})]))}}),ktt=Ett,Att=ne({name:"ForkSpoon",__name:"fork-spoon",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 410.304V96a32 32 0 0 1 64 0v314.304a96 96 0 0 0 64-90.56V96a32 32 0 0 1 64 0v223.744a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.544a160 160 0 0 1-128-156.8V96a32 32 0 0 1 64 0v223.744a96 96 0 0 0 64 90.56zM672 572.48C581.184 552.128 512 446.848 512 320c0-141.44 85.952-256 192-256s192 114.56 192 256c0 126.848-69.184 232.128-160 252.48V928a32 32 0 1 1-64 0zM704 512c66.048 0 128-82.56 128-192s-61.952-192-128-192-128 82.56-128 192 61.952 192 128 192"})]))}}),Ttt=Att,Ott=ne({name:"Fries",__name:"fries",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M608 224v-64a32 32 0 0 0-64 0v336h26.88A64 64 0 0 0 608 484.096zm101.12 160A64 64 0 0 0 672 395.904V384h64V224a32 32 0 1 0-64 0v160zm74.88 0a92.928 92.928 0 0 1 91.328 110.08l-60.672 323.584A96 96 0 0 1 720.32 896H303.68a96 96 0 0 1-94.336-78.336L148.672 494.08A92.928 92.928 0 0 1 240 384h-16V224a96 96 0 0 1 188.608-25.28A95.744 95.744 0 0 1 480 197.44V160a96 96 0 0 1 188.608-25.28A96 96 0 0 1 800 224v160zM670.784 512a128 128 0 0 1-99.904 48H453.12a128 128 0 0 1-99.84-48H352v-1.536a128.128 128.128 0 0 1-9.984-14.976L314.88 448H240a28.928 28.928 0 0 0-28.48 34.304L241.088 640h541.824l29.568-157.696A28.928 28.928 0 0 0 784 448h-74.88l-27.136 47.488A132.405 132.405 0 0 1 672 510.464V512zM480 288a32 32 0 0 0-64 0v196.096A64 64 0 0 0 453.12 496H480zm-128 96V224a32 32 0 0 0-64 0v160zh-37.12A64 64 0 0 1 352 395.904zm-98.88 320 19.072 101.888A32 32 0 0 0 303.68 832h416.64a32 32 0 0 0 31.488-26.112L770.88 704z"})]))}}),Ftt=Ott,Itt=ne({name:"FullScreen",__name:"full-screen",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),l5e=Itt,Mtt=ne({name:"GobletFull",__name:"goblet-full",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 320h512c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320m503.936 64H264.064a256.128 256.128 0 0 0 495.872 0zM544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4"})]))}}),Ptt=Mtt,$tt=ne({name:"GobletSquareFull",__name:"goblet-square-full",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 270.912c10.048 6.72 22.464 14.912 28.992 18.624a220.16 220.16 0 0 0 114.752 30.72c30.592 0 49.408-9.472 91.072-41.152l.64-.448c52.928-40.32 82.368-55.04 132.288-54.656 55.552.448 99.584 20.8 142.72 57.408l1.536 1.28V128H256v142.912zm.96 76.288C266.368 482.176 346.88 575.872 512 576c157.44.064 237.952-85.056 253.248-209.984a952.32 952.32 0 0 1-40.192-35.712c-32.704-27.776-63.36-41.92-101.888-42.24-31.552-.256-50.624 9.28-93.12 41.6l-.576.448c-52.096 39.616-81.024 54.208-129.792 54.208-54.784 0-100.48-13.376-142.784-37.056zM480 638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96z"})]))}}),Btt=$tt,Rtt=ne({name:"GobletSquare",__name:"goblet-square",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M544 638.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912M256 319.68c0 149.568 80 256.192 256 256.256C688.128 576 768 469.568 768 320V128H256z"})]))}}),Ntt=Rtt,Ltt=ne({name:"Goblet",__name:"goblet",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4M256 320a256 256 0 1 0 512 0c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320"})]))}}),Utt=Ltt,Vtt=ne({name:"GoldMedal",__name:"gold-medal",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m772.13 452.84 53.86-351.81c1.32-10.01-1.17-18.68-7.49-26.02S804.35 64 795.01 64H228.99v-.01h-.06c-9.33 0-17.15 3.67-23.49 11.01s-8.83 16.01-7.49 26.02l53.87 351.89C213.54 505.73 193.59 568.09 192 640c2 90.67 33.17 166.17 93.5 226.5S421.33 957.99 512 960c90.67-2 166.17-33.17 226.5-93.5 60.33-60.34 91.49-135.83 93.5-226.5-1.59-71.94-21.56-134.32-59.87-187.16zM640.01 128h117.02l-39.01 254.02c-20.75-10.64-40.74-19.73-59.94-27.28-5.92-3-11.95-5.8-18.08-8.41V128h.01zM576 128v198.76c-13.18-2.58-26.74-4.43-40.67-5.55-8.07-.8-15.85-1.2-23.33-1.2-10.54 0-21.09.66-31.64 1.96a359.844 359.844 0 0 0-32.36 4.79V128zm-192 0h.04v218.3c-6.22 2.66-12.34 5.5-18.36 8.56-19.13 7.54-39.02 16.6-59.66 27.16L267.01 128zm308.99 692.99c-48 48-108.33 73-180.99 75.01-72.66-2.01-132.99-27.01-180.99-75.01S258.01 712.66 256 640c2.01-72.66 27.01-132.99 75.01-180.99 19.67-19.67 41.41-35.47 65.22-47.41 38.33-15.04 71.15-23.92 98.44-26.65 5.07-.41 10.2-.7 15.39-.88.63-.01 1.28-.03 1.91-.03.66 0 1.35.03 2.02.04 5.11.17 10.15.46 15.13.86 27.4 2.71 60.37 11.65 98.91 26.79 23.71 11.93 45.36 27.69 64.96 47.29 48 48 73 108.33 75.01 180.99-2.01 72.65-27.01 132.98-75.01 180.98z"}),w("path",{fill:"currentColor",d:"M544 480H416v64h64v192h-64v64h192v-64h-64z"})]))}}),ztt=Vtt,jtt=ne({name:"GoodsFilled",__name:"goods-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M192 352h640l64 544H128zm128 224h64V448h-64zm320 0h64V448h-64zM384 288h-64a192 192 0 1 1 384 0h-64a128 128 0 1 0-256 0"})]))}}),Htt=jtt,Wtt=ne({name:"Goods",__name:"goods",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M320 288v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4h131.072a32 32 0 0 1 31.808 28.8l57.6 576a32 32 0 0 1-31.808 35.2H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320zm64 0h256v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4zm-64 64H217.92l-51.2 512h690.56l-51.264-512H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0z"})]))}}),qtt=Wtt,Ktt=ne({name:"Grape",__name:"grape",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M544 195.2a160 160 0 0 1 96 60.8 160 160 0 1 1 146.24 254.976 160 160 0 0 1-128 224 160 160 0 1 1-292.48 0 160 160 0 0 1-128-224A160 160 0 1 1 384 256a160 160 0 0 1 96-60.8V128h-64a32 32 0 0 1 0-64h192a32 32 0 0 1 0 64h-64zM512 448a96 96 0 1 0 0-192 96 96 0 0 0 0 192m-256 0a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192m128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192"})]))}}),Gtt=Ktt,Ytt=ne({name:"Grid",__name:"grid",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M640 384v256H384V384zm64 0h192v256H704zm-64 512H384V704h256zm64 0V704h192v192zm-64-768v192H384V128zm64 0h192v192H704zM320 384v256H128V384zm0 512H128V704h192zm0-768v192H128V128z"})]))}}),Xtt=Ytt,Jtt=ne({name:"Guide",__name:"guide",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M640 608h-64V416h64zm0 160v160a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V768h64v128h128V768zM384 608V416h64v192zm256-352h-64V128H448v128h-64V96a32 32 0 0 1 32-32h192a32 32 0 0 1 32 32z"}),w("path",{fill:"currentColor",d:"m220.8 256-71.232 80 71.168 80H768V256H220.8zm-14.4-64H800a32 32 0 0 1 32 32v224a32 32 0 0 1-32 32H206.4a32 32 0 0 1-23.936-10.752l-99.584-112a32 32 0 0 1 0-42.496l99.584-112A32 32 0 0 1 206.4 192m678.784 496-71.104 80H266.816V608h547.2l71.168 80zm-56.768-144H234.88a32 32 0 0 0-32 32v224a32 32 0 0 0 32 32h593.6a32 32 0 0 0 23.936-10.752l99.584-112a32 32 0 0 0 0-42.496l-99.584-112A32 32 0 0 0 828.48 544z"})]))}}),Ztt=Jtt,Qtt=ne({name:"Handbag",__name:"handbag",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M887.01 264.99c-6-5.99-13.67-8.99-23.01-8.99H704c-1.34-54.68-20.01-100.01-56-136s-81.32-54.66-136-56c-54.68 1.34-100.01 20.01-136 56s-54.66 81.32-56 136H160c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.67-8.99 23.01v640c0 9.35 2.99 17.02 8.99 23.01S150.66 960 160 960h704c9.35 0 17.02-2.99 23.01-8.99S896 937.34 896 928V288c0-9.35-2.99-17.02-8.99-23.01M421.5 165.5c24.32-24.34 54.49-36.84 90.5-37.5 35.99.68 66.16 13.18 90.5 37.5s36.84 54.49 37.5 90.5H384c.68-35.99 13.18-66.16 37.5-90.5M832 896H192V320h128v128h64V320h256v128h64V320h128z"})]))}}),ent=Qtt,tnt=ne({name:"Headset",__name:"headset",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M896 529.152V512a384 384 0 1 0-768 0v17.152A128 128 0 0 1 320 640v128a128 128 0 1 1-256 0V512a448 448 0 1 1 896 0v256a128 128 0 1 1-256 0V640a128 128 0 0 1 192-110.848M896 640a64 64 0 0 0-128 0v128a64 64 0 0 0 128 0zm-768 0v128a64 64 0 0 0 128 0V640a64 64 0 1 0-128 0"})]))}}),nnt=tnt,rnt=ne({name:"HelpFilled",__name:"help-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M926.784 480H701.312A192.512 192.512 0 0 0 544 322.688V97.216A416.064 416.064 0 0 1 926.784 480m0 64A416.064 416.064 0 0 1 544 926.784V701.312A192.512 192.512 0 0 0 701.312 544zM97.28 544h225.472A192.512 192.512 0 0 0 480 701.312v225.472A416.064 416.064 0 0 1 97.216 544zm0-64A416.064 416.064 0 0 1 480 97.216v225.472A192.512 192.512 0 0 0 322.688 480H97.216z"})]))}}),ont=rnt,ant=ne({name:"Help",__name:"help",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m759.936 805.248-90.944-91.008A254.912 254.912 0 0 1 512 768a254.912 254.912 0 0 1-156.992-53.76l-90.944 91.008A382.464 382.464 0 0 0 512 896c94.528 0 181.12-34.176 247.936-90.752m45.312-45.312A382.464 382.464 0 0 0 896 512c0-94.528-34.176-181.12-90.752-247.936l-91.008 90.944C747.904 398.4 768 452.864 768 512c0 59.136-20.096 113.6-53.76 156.992l91.008 90.944zm-45.312-541.184A382.464 382.464 0 0 0 512 128c-94.528 0-181.12 34.176-247.936 90.752l90.944 91.008A254.912 254.912 0 0 1 512 256c59.136 0 113.6 20.096 156.992 53.76l90.944-91.008zm-541.184 45.312A382.464 382.464 0 0 0 128 512c0 94.528 34.176 181.12 90.752 247.936l91.008-90.944A254.912 254.912 0 0 1 256 512c0-59.136 20.096-113.6 53.76-156.992zm417.28 394.496a194.56 194.56 0 0 0 22.528-22.528C686.912 602.56 704 559.232 704 512a191.232 191.232 0 0 0-67.968-146.56A191.296 191.296 0 0 0 512 320a191.232 191.232 0 0 0-146.56 67.968C337.088 421.44 320 464.768 320 512a191.232 191.232 0 0 0 67.968 146.56C421.44 686.912 464.768 704 512 704c47.296 0 90.56-17.088 124.032-45.44zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),int=ant,snt=ne({name:"Hide",__name:"hide",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z"}),w("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z"})]))}}),u5e=snt,lnt=ne({name:"Histogram",__name:"histogram",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M416 896V128h192v768zm-288 0V448h192v448zm576 0V320h192v576z"})]))}}),unt=lnt,cnt=ne({name:"HomeFilled",__name:"home-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 128 128 447.936V896h255.936V640H640v256h255.936V447.936z"})]))}}),dnt=cnt,fnt=ne({name:"HotWater",__name:"hot-water",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M273.067 477.867h477.866V409.6H273.067zm0 68.266v51.2A187.733 187.733 0 0 0 460.8 785.067h102.4a187.733 187.733 0 0 0 187.733-187.734v-51.2H273.067zm-34.134-204.8h546.134a34.133 34.133 0 0 1 34.133 34.134v221.866a256 256 0 0 1-256 256H460.8a256 256 0 0 1-256-256V375.467a34.133 34.133 0 0 1 34.133-34.134zM512 34.133a34.133 34.133 0 0 1 34.133 34.134v170.666a34.133 34.133 0 0 1-68.266 0V68.267A34.133 34.133 0 0 1 512 34.133zM375.467 102.4a34.133 34.133 0 0 1 34.133 34.133v102.4a34.133 34.133 0 0 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.134-34.133m273.066 0a34.133 34.133 0 0 1 34.134 34.133v102.4a34.133 34.133 0 1 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.133-34.133M170.667 921.668h682.666a34.133 34.133 0 1 1 0 68.267H170.667a34.133 34.133 0 1 1 0-68.267z"})]))}}),hnt=fnt,pnt=ne({name:"House",__name:"house",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M192 413.952V896h640V413.952L512 147.328zM139.52 374.4l352-293.312a32 32 0 0 1 40.96 0l352 293.312A32 32 0 0 1 896 398.976V928a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V398.976a32 32 0 0 1 11.52-24.576"})]))}}),c5e=pnt,gnt=ne({name:"IceCreamRound",__name:"ice-cream-round",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m308.352 489.344 226.304 226.304a32 32 0 0 0 45.248 0L783.552 512A192 192 0 1 0 512 240.448L308.352 444.16a32 32 0 0 0 0 45.248zm135.744 226.304L308.352 851.392a96 96 0 0 1-135.744-135.744l135.744-135.744-45.248-45.248a96 96 0 0 1 0-135.808L466.752 195.2A256 256 0 0 1 828.8 557.248L625.152 760.96a96 96 0 0 1-135.808 0l-45.248-45.248zM398.848 670.4 353.6 625.152 217.856 760.896a32 32 0 0 0 45.248 45.248zm248.96-384.64a32 32 0 0 1 0 45.248L466.624 512a32 32 0 1 1-45.184-45.248l180.992-181.056a32 32 0 0 1 45.248 0zm90.496 90.496a32 32 0 0 1 0 45.248L557.248 602.496A32 32 0 1 1 512 557.248l180.992-180.992a32 32 0 0 1 45.312 0z"})]))}}),vnt=gnt,mnt=ne({name:"IceCreamSquare",__name:"ice-cream-square",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M416 640h256a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32H352a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32zm192 64v160a96 96 0 0 1-192 0V704h-64a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h320a96 96 0 0 1 96 96v448a96 96 0 0 1-96 96zm-64 0h-64v160a32 32 0 1 0 64 0z"})]))}}),ynt=mnt,bnt=ne({name:"IceCream",__name:"ice-cream",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128.64 448a208 208 0 0 1 193.536-191.552 224 224 0 0 1 445.248 15.488A208.128 208.128 0 0 1 894.784 448H896L548.8 983.68a32 32 0 0 1-53.248.704L128 448zm64.256 0h286.208a144 144 0 0 0-286.208 0zm351.36 0h286.272a144 144 0 0 0-286.272 0zm-294.848 64 271.808 396.608L778.24 512H249.408zM511.68 352.64a207.872 207.872 0 0 1 189.184-96.192 160 160 0 0 0-314.752 5.632c52.608 12.992 97.28 46.08 125.568 90.56"})]))}}),_nt=bnt,wnt=ne({name:"IceDrink",__name:"ice-drink",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 448v128h239.68l16.064-128zm-64 0H256.256l16.064 128H448zm64-255.36V384h247.744A256.128 256.128 0 0 0 512 192.64m-64 8.064A256.448 256.448 0 0 0 264.256 384H448zm64-72.064A320.128 320.128 0 0 1 825.472 384H896a32 32 0 1 1 0 64h-64v1.92l-56.96 454.016A64 64 0 0 1 711.552 960H312.448a64 64 0 0 1-63.488-56.064L192 449.92V448h-64a32 32 0 0 1 0-64h70.528A320.384 320.384 0 0 1 448 135.04V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H544a32 32 0 0 0-32 32zM743.68 640H280.32l32.128 256h399.104z"})]))}}),Cnt=wnt,xnt=ne({name:"IceTea",__name:"ice-tea",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M197.696 259.648a320.128 320.128 0 0 1 628.608 0A96 96 0 0 1 896 352v64a96 96 0 0 1-71.616 92.864l-49.408 395.072A64 64 0 0 1 711.488 960H312.512a64 64 0 0 1-63.488-56.064l-49.408-395.072A96 96 0 0 1 128 416v-64a96 96 0 0 1 69.696-92.352M264.064 256h495.872a256.128 256.128 0 0 0-495.872 0m495.424 256H264.512l48 384h398.976zM224 448h576a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32m160 192h64v64h-64zm192 64h64v64h-64zm-128 64h64v64h-64zm64-192h64v64h-64z"})]))}}),Snt=xnt,Dnt=ne({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Wd=Dnt,Ent=ne({name:"Iphone",__name:"iphone",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M224 768v96.064a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V768zm0-64h576V160a64 64 0 0 0-64-64H288a64 64 0 0 0-64 64zm32 288a96 96 0 0 1-96-96V128a96 96 0 0 1 96-96h512a96 96 0 0 1 96 96v768a96 96 0 0 1-96 96zm304-144a48 48 0 1 1-96 0 48 48 0 0 1 96 0"})]))}}),knt=Ent,Ant=ne({name:"Key",__name:"key",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M448 456.064V96a32 32 0 0 1 32-32.064L672 64a32 32 0 0 1 0 64H512v128h160a32 32 0 0 1 0 64H512v128a256 256 0 1 1-64 8.064M512 896a192 192 0 1 0 0-384 192 192 0 0 0 0 384"})]))}}),d5e=Ant,Tnt=ne({name:"KnifeFork",__name:"knife-fork",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 410.56V96a32 32 0 0 1 64 0v314.56A96 96 0 0 0 384 320V96a32 32 0 0 1 64 0v224a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.8A160 160 0 0 1 128 320V96a32 32 0 0 1 64 0v224a96 96 0 0 0 64 90.56m384-250.24V544h126.72c-3.328-78.72-12.928-147.968-28.608-207.744-14.336-54.528-46.848-113.344-98.112-175.872zM640 608v320a32 32 0 1 1-64 0V64h64c85.312 89.472 138.688 174.848 160 256 21.312 81.152 32 177.152 32 288z"})]))}}),Ont=Tnt,Fnt=ne({name:"Lightning",__name:"lightning",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M288 671.36v64.128A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 736 734.016v-64.768a192 192 0 0 0 3.328-377.92l-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 91.968 70.464 167.36 160.256 175.232z"}),w("path",{fill:"currentColor",d:"M416 736a32 32 0 0 1-27.776-47.872l128-224a32 32 0 1 1 55.552 31.744L471.168 672H608a32 32 0 0 1 27.776 47.872l-128 224a32 32 0 1 1-55.68-31.744L552.96 736z"})]))}}),Int=Fnt,Mnt=ne({name:"Link",__name:"link",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M715.648 625.152 670.4 579.904l90.496-90.56c75.008-74.944 85.12-186.368 22.656-248.896-62.528-62.464-173.952-52.352-248.96 22.656L444.16 353.6l-45.248-45.248 90.496-90.496c100.032-99.968 251.968-110.08 339.456-22.656 87.488 87.488 77.312 239.424-22.656 339.456l-90.496 90.496zm-90.496 90.496-90.496 90.496C434.624 906.112 282.688 916.224 195.2 828.8c-87.488-87.488-77.312-239.424 22.656-339.456l90.496-90.496 45.248 45.248-90.496 90.56c-75.008 74.944-85.12 186.368-22.656 248.896 62.528 62.464 173.952 52.352 248.96-22.656l90.496-90.496zm0-362.048 45.248 45.248L398.848 670.4 353.6 625.152z"})]))}}),Pnt=Mnt,$nt=ne({name:"List",__name:"list",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M704 192h160v736H160V192h160v64h384zM288 512h448v-64H288zm0 256h448v-64H288zm96-576V96h256v96z"})]))}}),FY=$nt,Bnt=ne({name:"Loading",__name:"loading",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"})]))}}),Kl=Bnt,Rnt=ne({name:"LocationFilled",__name:"location-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 928c23.936 0 117.504-68.352 192.064-153.152C803.456 661.888 864 535.808 864 416c0-189.632-155.84-320-352-320S160 226.368 160 416c0 120.32 60.544 246.4 159.936 359.232C394.432 859.84 488 928 512 928m0-435.2a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 140.8a204.8 204.8 0 1 1 0-409.6 204.8 204.8 0 0 1 0 409.6"})]))}}),Nnt=Rnt,Lnt=ne({name:"LocationInformation",__name:"location-information",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32"}),w("path",{fill:"currentColor",d:"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"}),w("path",{fill:"currentColor",d:"M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192m0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320"})]))}}),Unt=Lnt,Vnt=ne({name:"Location",__name:"location",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"}),w("path",{fill:"currentColor",d:"M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192m0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320"})]))}}),znt=Vnt,jnt=ne({name:"Lock",__name:"lock",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96"}),w("path",{fill:"currentColor",d:"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m192-160v-64a192 192 0 1 0-384 0v64zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64"})]))}}),Hnt=jnt,Wnt=ne({name:"Lollipop",__name:"lollipop",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M513.28 448a64 64 0 1 1 76.544 49.728A96 96 0 0 0 768 448h64a160 160 0 0 1-320 0zm-126.976-29.696a256 256 0 1 0 43.52-180.48A256 256 0 0 1 832 448h-64a192 192 0 0 0-381.696-29.696m105.664 249.472L285.696 874.048a96 96 0 0 1-135.68-135.744l206.208-206.272a320 320 0 1 1 135.744 135.744zm-54.464-36.032a321.92 321.92 0 0 1-45.248-45.248L195.2 783.552a32 32 0 1 0 45.248 45.248l197.056-197.12z"})]))}}),qnt=Wnt,Knt=ne({name:"MagicStick",__name:"magic-stick",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64h64v192h-64zm0 576h64v192h-64zM160 480v-64h192v64zm576 0v-64h192v64zM249.856 199.04l45.248-45.184L430.848 289.6 385.6 334.848 249.856 199.104zM657.152 606.4l45.248-45.248 135.744 135.744-45.248 45.248zM114.048 923.2 68.8 877.952l316.8-316.8 45.248 45.248zM702.4 334.848 657.152 289.6l135.744-135.744 45.248 45.248z"})]))}}),Dh=Knt,Gnt=ne({name:"Magnet",__name:"magnet",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M832 320V192H704v320a192 192 0 1 1-384 0V192H192v128h128v64H192v128a320 320 0 0 0 640 0V384H704v-64zM640 512V128h256v384a384 384 0 1 1-768 0V128h256v384a128 128 0 1 0 256 0"})]))}}),Ynt=Gnt,Xnt=ne({name:"Male",__name:"male",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M399.5 849.5a225 225 0 1 0 0-450 225 225 0 0 0 0 450m0 56.25a281.25 281.25 0 1 1 0-562.5 281.25 281.25 0 0 1 0 562.5m253.125-787.5h225q28.125 0 28.125 28.125T877.625 174.5h-225q-28.125 0-28.125-28.125t28.125-28.125"}),w("path",{fill:"currentColor",d:"M877.625 118.25q28.125 0 28.125 28.125v225q0 28.125-28.125 28.125T849.5 371.375v-225q0-28.125 28.125-28.125"}),w("path",{fill:"currentColor",d:"M604.813 458.9 565.1 419.131l292.613-292.668 39.825 39.824z"})]))}}),Jnt=Xnt,Znt=ne({name:"Management",__name:"management",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M576 128v288l96-96 96 96V128h128v768H320V128zm-448 0h128v768H128z"})]))}}),Qnt=Znt,ert=ne({name:"MapLocation",__name:"map-location",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416M512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544"}),w("path",{fill:"currentColor",d:"M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256m345.6 192L960 960H672v-64H352v64H64l102.4-256zm-68.928 0H235.328l-76.8 192h706.944z"})]))}}),trt=ert,nrt=ne({name:"Medal",__name:"medal",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 896a256 256 0 1 0 0-512 256 256 0 0 0 0 512m0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640"}),w("path",{fill:"currentColor",d:"M576 128H448v200a286.72 286.72 0 0 1 64-8c19.52 0 40.832 2.688 64 8zm64 0v219.648c24.448 9.088 50.56 20.416 78.4 33.92L757.44 128zm-256 0H266.624l39.04 253.568c27.84-13.504 53.888-24.832 78.336-33.92V128zM229.312 64h565.376a32 32 0 0 1 31.616 36.864L768 480c-113.792-64-199.104-96-256-96-56.896 0-142.208 32-256 96l-58.304-379.136A32 32 0 0 1 229.312 64"})]))}}),f5e=nrt,rrt=ne({name:"Memo",__name:"memo",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M480 320h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32"}),w("path",{fill:"currentColor",d:"M887.01 72.99C881.01 67 873.34 64 864 64H160c-9.35 0-17.02 3-23.01 8.99C131 78.99 128 86.66 128 96v832c0 9.35 2.99 17.02 8.99 23.01S150.66 960 160 960h704c9.35 0 17.02-2.99 23.01-8.99S896 937.34 896 928V96c0-9.35-3-17.02-8.99-23.01M192 896V128h96v768zm640 0H352V128h480z"}),w("path",{fill:"currentColor",d:"M480 512h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32m0 192h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32"})]))}}),ort=rrt,art=ne({name:"Menu",__name:"menu",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32z"})]))}}),irt=art,srt=ne({name:"MessageBox",__name:"message-box",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M288 384h448v64H288zm96-128h256v64H384zM131.456 512H384v128h256V512h252.544L721.856 192H302.144zM896 576H704v128H320V576H128v256h768zM275.776 128h472.448a32 32 0 0 1 28.608 17.664l179.84 359.552A32 32 0 0 1 960 519.552V864a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V519.552a32 32 0 0 1 3.392-14.336l179.776-359.552A32 32 0 0 1 275.776 128z"})]))}}),lrt=srt,urt=ne({name:"Message",__name:"message",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64"}),w("path",{fill:"currentColor",d:"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056"})]))}}),crt=urt,drt=ne({name:"Mic",__name:"mic",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M480 704h160a64 64 0 0 0 64-64v-32h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-32a64 64 0 0 0-64-64H384a64 64 0 0 0-64 64v32h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v32a64 64 0 0 0 64 64zm64 64v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768h-96a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64h256a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128z"})]))}}),frt=drt,hrt=ne({name:"Microphone",__name:"microphone",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 128a128 128 0 0 0-128 128v256a128 128 0 1 0 256 0V256a128 128 0 0 0-128-128m0-64a192 192 0 0 1 192 192v256a192 192 0 1 1-384 0V256A192 192 0 0 1 512 64m-32 832v-64a288 288 0 0 1-288-288v-32a32 32 0 0 1 64 0v32a224 224 0 0 0 224 224h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64z"})]))}}),prt=hrt,grt=ne({name:"MilkTea",__name:"milk-tea",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M416 128V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H512a32 32 0 0 0-32 32v32h320a96 96 0 0 1 11.712 191.296l-39.68 581.056A64 64 0 0 1 708.224 960H315.776a64 64 0 0 1-63.872-59.648l-39.616-581.056A96 96 0 0 1 224 128zM276.48 320l39.296 576h392.448l4.8-70.784a224.064 224.064 0 0 1 30.016-439.808L747.52 320zM224 256h576a32 32 0 1 0 0-64H224a32 32 0 0 0 0 64m493.44 503.872 21.12-309.12a160 160 0 0 0-21.12 309.12"})]))}}),vrt=grt,mrt=ne({name:"Minus",__name:"minus",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"})]))}}),h5e=mrt,yrt=ne({name:"Money",__name:"money",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 640v192h640V384H768v-64h150.976c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H233.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096c-2.688-5.184-4.224-10.368-4.224-24.576V640z"}),w("path",{fill:"currentColor",d:"M768 192H128v448h640zm64-22.976v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 682.432 64 677.248 64 663.04V169.024c0-14.272 1.472-19.456 4.288-24.64a29.056 29.056 0 0 1 12.096-12.16C85.568 129.536 90.752 128 104.96 128h685.952c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64z"}),w("path",{fill:"currentColor",d:"M448 576a160 160 0 1 1 0-320 160 160 0 0 1 0 320m0-64a96 96 0 1 0 0-192 96 96 0 0 0 0 192"})]))}}),brt=yrt,_rt=ne({name:"Monitor",__name:"monitor",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M544 768v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768H192A128 128 0 0 1 64 640V256a128 128 0 0 1 128-128h640a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128zM192 192a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64z"})]))}}),wrt=_rt,Crt=ne({name:"MoonNight",__name:"moon-night",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M384 512a448 448 0 0 1 215.872-383.296A384 384 0 0 0 213.76 640h188.8A448.256 448.256 0 0 1 384 512M171.136 704a448 448 0 0 1 636.992-575.296A384 384 0 0 0 499.328 704h-328.32z"}),w("path",{fill:"currentColor",d:"M32 640h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32m128 128h384a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m160 127.68 224 .256a32 32 0 0 1 32 32V928a32 32 0 0 1-32 32l-224-.384a32 32 0 0 1-32-32v-.064a32 32 0 0 1 32-32z"})]))}}),xrt=Crt,Srt=ne({name:"Moon",__name:"moon",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M240.448 240.448a384 384 0 1 0 559.424 525.696 448 448 0 0 1-542.016-542.08 390.592 390.592 0 0 0-17.408 16.384zm181.056 362.048a384 384 0 0 0 525.632 16.384A448 448 0 1 1 405.056 76.8a384 384 0 0 0 16.448 525.696"})]))}}),Drt=Srt,Ert=ne({name:"MoreFilled",__name:"more-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),Ku=Ert,krt=ne({name:"More",__name:"more",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),p5e=krt,Art=ne({name:"MostlyCloudy",__name:"mostly-cloudy",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M737.216 357.952 704 349.824l-11.776-32a192.064 192.064 0 0 0-367.424 23.04l-8.96 39.04-39.04 8.96A192.064 192.064 0 0 0 320 768h368a207.808 207.808 0 0 0 207.808-208 208.32 208.32 0 0 0-158.592-202.048m15.168-62.208A272.32 272.32 0 0 1 959.744 560a271.808 271.808 0 0 1-271.552 272H320a256 256 0 0 1-57.536-505.536 256.128 256.128 0 0 1 489.92-30.72"})]))}}),Trt=Art,Ort=ne({name:"Mouse",__name:"mouse",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M438.144 256c-68.352 0-92.736 4.672-117.76 18.112-20.096 10.752-35.52 26.176-46.272 46.272C260.672 345.408 256 369.792 256 438.144v275.712c0 68.352 4.672 92.736 18.112 117.76 10.752 20.096 26.176 35.52 46.272 46.272C345.408 891.328 369.792 896 438.144 896h147.712c68.352 0 92.736-4.672 117.76-18.112 20.096-10.752 35.52-26.176 46.272-46.272C763.328 806.592 768 782.208 768 713.856V438.144c0-68.352-4.672-92.736-18.112-117.76a110.464 110.464 0 0 0-46.272-46.272C678.592 260.672 654.208 256 585.856 256zm0-64h147.712c85.568 0 116.608 8.96 147.904 25.6 31.36 16.768 55.872 41.344 72.576 72.64C823.104 321.536 832 352.576 832 438.08v275.84c0 85.504-8.96 116.544-25.6 147.84a174.464 174.464 0 0 1-72.64 72.576C702.464 951.104 671.424 960 585.92 960H438.08c-85.504 0-116.544-8.96-147.84-25.6a174.464 174.464 0 0 1-72.64-72.704c-16.768-31.296-25.664-62.336-25.664-147.84v-275.84c0-85.504 8.96-116.544 25.6-147.84a174.464 174.464 0 0 1 72.768-72.576c31.232-16.704 62.272-25.6 147.776-25.6z"}),w("path",{fill:"currentColor",d:"M512 320q32 0 32 32v128q0 32-32 32t-32-32V352q0-32 32-32m32-96a32 32 0 0 1-64 0v-64a32 32 0 0 0-32-32h-96a32 32 0 0 1 0-64h96a96 96 0 0 1 96 96z"})]))}}),Frt=Ort,Irt=ne({name:"Mug",__name:"mug",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M736 800V160H160v640a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64m64-544h63.552a96 96 0 0 1 96 96v224a96 96 0 0 1-96 96H800v128a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V128a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zm0 64v288h63.552a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32z"})]))}}),Mrt=Irt,Prt=ne({name:"MuteNotification",__name:"mute-notification",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m241.216 832 63.616-64H768V448c0-42.368-10.24-82.304-28.48-117.504l46.912-47.232C815.36 331.392 832 387.84 832 448v320h96a32 32 0 1 1 0 64zm-90.24 0H96a32 32 0 1 1 0-64h96V448a320.128 320.128 0 0 1 256-313.6V128a64 64 0 1 1 128 0v6.4a319.552 319.552 0 0 1 171.648 97.088l-45.184 45.44A256 256 0 0 0 256 448v278.336L151.04 832zM448 896h128a64 64 0 0 1-128 0"}),w("path",{fill:"currentColor",d:"M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056l-704 708.544z"})]))}}),$rt=Prt,Brt=ne({name:"Mute",__name:"mute",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m412.16 592.128-45.44 45.44A191.232 191.232 0 0 1 320 512V256a192 192 0 1 1 384 0v44.352l-64 64V256a128 128 0 1 0-256 0v256c0 30.336 10.56 58.24 28.16 80.128m51.968 38.592A128 128 0 0 0 640 512v-57.152l64-64V512a192 192 0 0 1-287.68 166.528zM314.88 779.968l46.144-46.08A222.976 222.976 0 0 0 480 768h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64h64v-64c-61.44 0-118.4-19.2-165.12-52.032M266.752 737.6A286.976 286.976 0 0 1 192 544v-32a32 32 0 0 1 64 0v32c0 56.832 21.184 108.8 56.064 148.288z"}),w("path",{fill:"currentColor",d:"M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056l-704 708.544z"})]))}}),Rrt=Brt,Nrt=ne({name:"NoSmoking",__name:"no-smoking",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M440.256 576H256v128h56.256l-64 64H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32h280.256zm143.488 128H704V583.744L775.744 512H928a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H519.744zM768 576v128h128V576zm-29.696-207.552 45.248 45.248-497.856 497.856-45.248-45.248zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z"})]))}}),Lrt=Nrt,Urt=ne({name:"Notebook",__name:"notebook",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M192 128v768h640V128zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M672 128h64v768h-64zM96 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32m0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32m0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32m0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32"})]))}}),zM=Urt,Vrt=ne({name:"Notification",__name:"notification",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 128v64H256a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V512h64v256a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V256a128 128 0 0 1 128-128z"}),w("path",{fill:"currentColor",d:"M768 384a128 128 0 1 0 0-256 128 128 0 0 0 0 256m0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384"})]))}}),zrt=Vrt,jrt=ne({name:"Odometer",__name:"odometer",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),w("path",{fill:"currentColor",d:"M192 512a320 320 0 1 1 640 0 32 32 0 1 1-64 0 256 256 0 1 0-512 0 32 32 0 0 1-64 0"}),w("path",{fill:"currentColor",d:"M570.432 627.84A96 96 0 1 1 509.568 608l60.992-187.776A32 32 0 1 1 631.424 440l-60.992 187.776zM502.08 734.464a32 32 0 1 0 19.84-60.928 32 32 0 0 0-19.84 60.928"})]))}}),Hrt=jrt,Wrt=ne({name:"OfficeBuilding",__name:"office-building",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M192 128v704h384V128zm-32-64h448a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M256 256h256v64H256zm0 192h256v64H256zm0 192h256v64H256zm384-128h128v64H640zm0 128h128v64H640zM64 832h896v64H64z"}),w("path",{fill:"currentColor",d:"M640 384v448h192V384zm-32-64h256a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H608a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32"})]))}}),qrt=Wrt,Krt=ne({name:"Open",__name:"open",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36z"}),w("path",{fill:"currentColor",d:"M694.044 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454m0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088"})]))}}),Grt=Krt,Yrt=ne({name:"Operation",__name:"operation",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M389.44 768a96.064 96.064 0 0 1 181.12 0H896v64H570.56a96.064 96.064 0 0 1-181.12 0H128v-64zm192-288a96.064 96.064 0 0 1 181.12 0H896v64H762.56a96.064 96.064 0 0 1-181.12 0H128v-64zm-320-288a96.064 96.064 0 0 1 181.12 0H896v64H442.56a96.064 96.064 0 0 1-181.12 0H128v-64z"})]))}}),Xrt=Yrt,Jrt=ne({name:"Opportunity",__name:"opportunity",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M384 960v-64h192.064v64zm448-544a350.656 350.656 0 0 1-128.32 271.424C665.344 719.04 640 763.776 640 813.504V832H320v-14.336c0-48-19.392-95.36-57.216-124.992a351.552 351.552 0 0 1-128.448-344.256c25.344-136.448 133.888-248.128 269.76-276.48A352.384 352.384 0 0 1 832 416m-544 32c0-132.288 75.904-224 192-224v-64c-154.432 0-256 122.752-256 288z"})]))}}),Zrt=Jrt,Qrt=ne({name:"Orange",__name:"orange",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M544 894.72a382.336 382.336 0 0 0 215.936-89.472L577.024 622.272c-10.24 6.016-21.248 10.688-33.024 13.696v258.688zm261.248-134.784A382.336 382.336 0 0 0 894.656 544H635.968c-3.008 11.776-7.68 22.848-13.696 33.024l182.976 182.912zM894.656 480a382.336 382.336 0 0 0-89.408-215.936L622.272 446.976c6.016 10.24 10.688 21.248 13.696 33.024h258.688zm-134.72-261.248A382.336 382.336 0 0 0 544 129.344v258.688c11.776 3.008 22.848 7.68 33.024 13.696zM480 129.344a382.336 382.336 0 0 0-215.936 89.408l182.912 182.976c10.24-6.016 21.248-10.688 33.024-13.696zm-261.248 134.72A382.336 382.336 0 0 0 129.344 480h258.688c3.008-11.776 7.68-22.848 13.696-33.024zM129.344 544a382.336 382.336 0 0 0 89.408 215.936l182.976-182.912A127.232 127.232 0 0 1 388.032 544zm134.72 261.248A382.336 382.336 0 0 0 480 894.656V635.968a127.232 127.232 0 0 1-33.024-13.696zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896m0-384a64 64 0 1 0 0-128 64 64 0 0 0 0 128"})]))}}),eot=Qrt,tot=ne({name:"Paperclip",__name:"paperclip",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M602.496 240.448A192 192 0 1 1 874.048 512l-316.8 316.8A256 256 0 0 1 195.2 466.752L602.496 59.456l45.248 45.248L240.448 512A192 192 0 0 0 512 783.552l316.8-316.8a128 128 0 1 0-181.056-181.056L353.6 579.904a32 32 0 1 0 45.248 45.248l294.144-294.144 45.312 45.248L444.096 670.4a96 96 0 1 1-135.744-135.744l294.144-294.208z"})]))}}),not=tot,rot=ne({name:"PartlyCloudy",__name:"partly-cloudy",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M598.4 895.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 895.872m-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 445.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z"}),w("path",{fill:"currentColor",d:"M139.84 501.888a256 256 0 1 1 417.856-277.12c-17.728 2.176-38.208 8.448-61.504 18.816A192 192 0 1 0 189.12 460.48a6003.84 6003.84 0 0 0-49.28 41.408z"})]))}}),oot=rot,aot=ne({name:"Pear",__name:"pear",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M542.336 258.816a443.255 443.255 0 0 0-9.024 25.088 32 32 0 1 1-60.8-20.032l1.088-3.328a162.688 162.688 0 0 0-122.048 131.392l-17.088 102.72-20.736 15.36C256.192 552.704 224 610.88 224 672c0 120.576 126.4 224 288 224s288-103.424 288-224c0-61.12-32.192-119.296-89.728-161.92l-20.736-15.424-17.088-102.72a162.688 162.688 0 0 0-130.112-133.12zm-40.128-66.56c7.936-15.552 16.576-30.08 25.92-43.776 23.296-33.92 49.408-59.776 78.528-77.12a32 32 0 1 1 32.704 55.04c-20.544 12.224-40.064 31.552-58.432 58.304a316.608 316.608 0 0 0-9.792 15.104 226.688 226.688 0 0 1 164.48 181.568l12.8 77.248C819.456 511.36 864 587.392 864 672c0 159.04-157.568 288-352 288S160 831.04 160 672c0-84.608 44.608-160.64 115.584-213.376l12.8-77.248a226.624 226.624 0 0 1 213.76-189.184z"})]))}}),iot=aot,sot=ne({name:"PhoneFilled",__name:"phone-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M199.232 125.568 90.624 379.008a32 32 0 0 0 6.784 35.2l512.384 512.384a32 32 0 0 0 35.2 6.784l253.44-108.608a32 32 0 0 0 10.048-52.032L769.6 633.92a32 32 0 0 0-36.928-5.952l-130.176 65.088-271.488-271.552 65.024-130.176a32 32 0 0 0-5.952-36.928L251.2 115.52a32 32 0 0 0-51.968 10.048z"})]))}}),lot=sot,uot=ne({name:"Phone",__name:"phone",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M79.36 432.256 591.744 944.64a32 32 0 0 0 35.2 6.784l253.44-108.544a32 32 0 0 0 9.984-52.032l-153.856-153.92a32 32 0 0 0-36.928-6.016l-69.888 34.944L358.08 394.24l35.008-69.888a32 32 0 0 0-5.952-36.928L233.152 133.568a32 32 0 0 0-52.032 10.048L72.512 397.056a32 32 0 0 0 6.784 35.2zm60.48-29.952 81.536-190.08L325.568 316.48l-24.64 49.216-20.608 41.216 32.576 32.64 271.552 271.552 32.64 32.64 41.216-20.672 49.28-24.576 104.192 104.128-190.08 81.472L139.84 402.304zM512 320v-64a256 256 0 0 1 256 256h-64a192 192 0 0 0-192-192m0-192V64a448 448 0 0 1 448 448h-64a384 384 0 0 0-384-384"})]))}}),cot=uot,dot=ne({name:"PictureFilled",__name:"picture-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),g5e=dot,fot=ne({name:"PictureRounded",__name:"picture-rounded",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 128a384 384 0 1 0 0 768 384 384 0 0 0 0-768m0-64a448 448 0 1 1 0 896 448 448 0 0 1 0-896"}),w("path",{fill:"currentColor",d:"M640 288q64 0 64 64t-64 64q-64 0-64-64t64-64M214.656 790.656l-45.312-45.312 185.664-185.6a96 96 0 0 1 123.712-10.24l138.24 98.688a32 32 0 0 0 39.872-2.176L906.688 422.4l42.624 47.744L699.52 693.696a96 96 0 0 1-119.808 6.592l-138.24-98.752a32 32 0 0 0-41.152 3.456l-185.664 185.6z"})]))}}),hot=fot,pot=ne({name:"Picture",__name:"picture",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 160v704h704V160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64M185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952z"})]))}}),got=pot,vot=ne({name:"PieChart",__name:"pie-chart",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M448 68.48v64.832A384.128 384.128 0 0 0 512 896a384.128 384.128 0 0 0 378.688-320h64.768A448.128 448.128 0 0 1 64 512 448.128 448.128 0 0 1 448 68.48z"}),w("path",{fill:"currentColor",d:"M576 97.28V448h350.72A384.064 384.064 0 0 0 576 97.28zM512 64V33.152A448 448 0 0 1 990.848 512H512z"})]))}}),mot=vot,yot=ne({name:"Place",__name:"place",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512"}),w("path",{fill:"currentColor",d:"M512 512a32 32 0 0 1 32 32v256a32 32 0 1 1-64 0V544a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M384 649.088v64.96C269.76 732.352 192 771.904 192 800c0 37.696 139.904 96 320 96s320-58.304 320-96c0-28.16-77.76-67.648-192-85.952v-64.96C789.12 671.04 896 730.368 896 800c0 88.32-171.904 160-384 160s-384-71.68-384-160c0-69.696 106.88-128.96 256-150.912"})]))}}),bot=yot,_ot=ne({name:"Platform",__name:"platform",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M448 832v-64h128v64h192v64H256v-64zM128 704V128h768v576z"})]))}}),wot=_ot,Cot=ne({name:"Plus",__name:"plus",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("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"})]))}}),ea=Cot,xot=ne({name:"Pointer",__name:"pointer",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M511.552 128c-35.584 0-64.384 28.8-64.384 64.448v516.48L274.048 570.88a94.272 94.272 0 0 0-112.896-3.456 44.416 44.416 0 0 0-8.96 62.208L332.8 870.4A64 64 0 0 0 384 896h512V575.232a64 64 0 0 0-45.632-61.312l-205.952-61.76A96 96 0 0 1 576 360.192V192.448C576 156.8 547.2 128 511.552 128M359.04 556.8l24.128 19.2V192.448a128.448 128.448 0 1 1 256.832 0v167.744a32 32 0 0 0 22.784 30.656l206.016 61.76A128 128 0 0 1 960 575.232V896a64 64 0 0 1-64 64H384a128 128 0 0 1-102.4-51.2L101.056 668.032A108.416 108.416 0 0 1 128 512.512a158.272 158.272 0 0 1 185.984 8.32z"})]))}}),Sot=xot,Dot=ne({name:"Position",__name:"position",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m249.6 417.088 319.744 43.072 39.168 310.272L845.12 178.88 249.6 417.088zm-129.024 47.168a32 32 0 0 1-7.68-61.44l777.792-311.04a32 32 0 0 1 41.6 41.6l-310.336 775.68a32 32 0 0 1-61.44-7.808L512 516.992l-391.424-52.736z"})]))}}),Eot=Dot,kot=ne({name:"Postcard",__name:"postcard",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 224a32 32 0 0 0-32 32v512a32 32 0 0 0 32 32h704a32 32 0 0 0 32-32V256a32 32 0 0 0-32-32zm0-64h704a96 96 0 0 1 96 96v512a96 96 0 0 1-96 96H160a96 96 0 0 1-96-96V256a96 96 0 0 1 96-96"}),w("path",{fill:"currentColor",d:"M704 320a64 64 0 1 1 0 128 64 64 0 0 1 0-128M288 448h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32m0 128h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32"})]))}}),Aot=kot,Tot=ne({name:"Pouring",__name:"pouring",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672zM959.552 480a256 256 0 0 1-256 256h-400A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480M224 800a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32m192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32"})]))}}),Oot=Tot,Fot=ne({name:"Present",__name:"present",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M480 896V640H192v-64h288V320H192v576zm64 0h288V320H544v256h288v64H544zM128 256h768v672a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32z"}),w("path",{fill:"currentColor",d:"M96 256h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32"}),w("path",{fill:"currentColor",d:"M416 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"}),w("path",{fill:"currentColor",d:"M608 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"})]))}}),Iot=Fot,Mot=ne({name:"PriceTag",__name:"price-tag",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M224 318.336V896h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0z"}),w("path",{fill:"currentColor",d:"M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"})]))}}),Pot=Mot,$ot=ne({name:"Printer",__name:"printer",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 768H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 746.432 64 741.248 64 727.04V379.072c0-42.816 4.48-58.304 12.8-73.984 8.384-15.616 20.672-27.904 36.288-36.288 15.68-8.32 31.168-12.8 73.984-12.8H256V64h512v192h68.928c42.816 0 58.304 4.48 73.984 12.8 15.616 8.384 27.904 20.672 36.288 36.288 8.32 15.68 12.8 31.168 12.8 73.984v347.904c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H768v192H256zm64-192v320h384V576zm-64 128V512h512v192h128V379.072c0-29.376-1.408-36.48-5.248-43.776a23.296 23.296 0 0 0-10.048-10.048c-7.232-3.84-14.4-5.248-43.776-5.248H187.072c-29.376 0-36.48 1.408-43.776 5.248a23.296 23.296 0 0 0-10.048 10.048c-3.84 7.232-5.248 14.4-5.248 43.776V704zm64-448h384V128H320zm-64 128h64v64h-64zm128 0h64v64h-64z"})]))}}),Bot=$ot,Rot=ne({name:"Promotion",__name:"promotion",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472zm256 512V657.024L512 768z"})]))}}),Not=Rot,Lot=ne({name:"QuartzWatch",__name:"quartz-watch",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M422.02 602.01v-.03c-6.68-5.99-14.35-8.83-23.01-8.51-8.67.32-16.17 3.66-22.5 10.02-6.33 6.36-9.5 13.7-9.5 22.02s3 15.82 8.99 22.5c8.68 8.68 19.02 11.35 31.01 8s19.49-10.85 22.5-22.5c3.01-11.65.51-22.15-7.49-31.49zM384 512c0-9.35-3-17.02-8.99-23.01-6-5.99-13.66-8.99-23.01-8.99-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.66 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.67 8.99-23.01m6.53-82.49c11.65 3.01 22.15.51 31.49-7.49h.04c5.99-6.68 8.83-14.34 8.51-23.01-.32-8.67-3.66-16.16-10.02-22.5-6.36-6.33-13.7-9.5-22.02-9.5s-15.82 3-22.5 8.99c-8.68 8.69-11.35 19.02-8 31.01 3.35 11.99 10.85 19.49 22.5 22.5zm242.94 0c11.67-3.03 19.01-10.37 22.02-22.02 3.01-11.65.51-22.15-7.49-31.49h.01c-6.68-5.99-14.18-8.99-22.5-8.99s-15.66 3.16-22.02 9.5c-6.36 6.34-9.7 13.84-10.02 22.5-.32 8.66 2.52 16.33 8.51 23.01 9.32 8.02 19.82 10.52 31.49 7.49M512 640c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.67 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.66 8.99-23.01s-3-17.02-8.99-23.01c-6-5.99-13.66-8.99-23.01-8.99m183.01-151.01c-6-5.99-13.66-8.99-23.01-8.99s-17.02 3-23.01 8.99c-5.99 6-8.99 13.66-8.99 23.01s3 17.02 8.99 23.01c6 5.99 13.66 8.99 23.01 8.99s17.02-3 23.01-8.99c5.99-6 8.99-13.67 8.99-23.01 0-9.35-3-17.02-8.99-23.01"}),w("path",{fill:"currentColor",d:"M832 512c-2-90.67-33.17-166.17-93.5-226.5-20.43-20.42-42.6-37.49-66.5-51.23V64H352v170.26c-23.9 13.74-46.07 30.81-66.5 51.24-60.33 60.33-91.49 135.83-93.5 226.5 2 90.67 33.17 166.17 93.5 226.5 20.43 20.43 42.6 37.5 66.5 51.24V960h320V789.74c23.9-13.74 46.07-30.81 66.5-51.24 60.33-60.34 91.49-135.83 93.5-226.5M416 128h192v78.69c-29.85-9.03-61.85-13.93-96-14.69-34.15.75-66.15 5.65-96 14.68zm192 768H416v-78.68c29.85 9.03 61.85 13.93 96 14.68 34.15-.75 66.15-5.65 96-14.68zm-96-128c-72.66-2.01-132.99-27.01-180.99-75.01S258.01 584.66 256 512c2.01-72.66 27.01-132.99 75.01-180.99S439.34 258.01 512 256c72.66 2.01 132.99 27.01 180.99 75.01S765.99 439.34 768 512c-2.01 72.66-27.01 132.99-75.01 180.99S584.66 765.99 512 768"}),w("path",{fill:"currentColor",d:"M512 320c-9.35 0-17.02 3-23.01 8.99-5.99 6-8.99 13.66-8.99 23.01 0 9.35 3 17.02 8.99 23.01 6 5.99 13.67 8.99 23.01 8.99 9.35 0 17.02-3 23.01-8.99 5.99-6 8.99-13.66 8.99-23.01 0-9.35-3-17.02-8.99-23.01-6-5.99-13.66-8.99-23.01-8.99m112.99 273.5c-8.66-.32-16.33 2.52-23.01 8.51-7.98 9.32-10.48 19.82-7.49 31.49s10.49 19.17 22.5 22.5 22.35.66 31.01-8v.04c5.99-6.68 8.99-14.18 8.99-22.5s-3.16-15.66-9.5-22.02-13.84-9.7-22.5-10.02"})]))}}),Uot=Lot,Vot=ne({name:"QuestionFilled",__name:"question-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"})]))}}),v5e=Vot,zot=ne({name:"Rank",__name:"rank",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m186.496 544 41.408 41.344a32 32 0 1 1-45.248 45.312l-96-96a32 32 0 0 1 0-45.312l96-96a32 32 0 1 1 45.248 45.312L186.496 480h290.816V186.432l-41.472 41.472a32 32 0 1 1-45.248-45.184l96-96.128a32 32 0 0 1 45.312 0l96 96.064a32 32 0 0 1-45.248 45.184l-41.344-41.28V480H832l-41.344-41.344a32 32 0 0 1 45.248-45.312l96 96a32 32 0 0 1 0 45.312l-96 96a32 32 0 0 1-45.248-45.312L832 544H541.312v293.44l41.344-41.28a32 32 0 1 1 45.248 45.248l-96 96a32 32 0 0 1-45.312 0l-96-96a32 32 0 1 1 45.312-45.248l41.408 41.408V544H186.496z"})]))}}),m5e=zot,jot=ne({name:"ReadingLamp",__name:"reading-lamp",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M352 896h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32m-44.672-768-99.52 448h608.384l-99.52-448zm-25.6-64h460.608a32 32 0 0 1 31.232 25.088l113.792 512A32 32 0 0 1 856.128 640H167.872a32 32 0 0 1-31.232-38.912l113.792-512A32 32 0 0 1 281.664 64z"}),w("path",{fill:"currentColor",d:"M672 576q32 0 32 32v128q0 32-32 32t-32-32V608q0-32 32-32m-192-.064h64V960h-64z"})]))}}),Hot=jot,Wot=ne({name:"Reading",__name:"reading",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m512 863.36 384-54.848v-638.72L525.568 222.72a96 96 0 0 1-27.136 0L128 169.792v638.72zM137.024 106.432l370.432 52.928a32 32 0 0 0 9.088 0l370.432-52.928A64 64 0 0 1 960 169.792v638.72a64 64 0 0 1-54.976 63.36l-388.48 55.488a32 32 0 0 1-9.088 0l-388.48-55.488A64 64 0 0 1 64 808.512v-638.72a64 64 0 0 1 73.024-63.36z"}),w("path",{fill:"currentColor",d:"M480 192h64v704h-64z"})]))}}),qot=Wot,Kot=ne({name:"RefreshLeft",__name:"refresh-left",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"})]))}}),Gne=Kot,Got=ne({name:"RefreshRight",__name:"refresh-right",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"})]))}}),y5e=Got,Yot=ne({name:"Refresh",__name:"refresh",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z"})]))}}),Xot=Yot,Jot=ne({name:"Refrigerator",__name:"refrigerator",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 448h512V160a32 32 0 0 0-32-32H288a32 32 0 0 0-32 32zm0 64v352a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V512zm32-448h448a96 96 0 0 1 96 96v704a96 96 0 0 1-96 96H288a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96m32 224h64v96h-64zm0 288h64v96h-64z"})]))}}),Zot=Jot,Qot=ne({name:"RemoveFilled",__name:"remove-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896M288 512a38.4 38.4 0 0 0 38.4 38.4h371.2a38.4 38.4 0 0 0 0-76.8H326.4A38.4 38.4 0 0 0 288 512"})]))}}),eat=Qot,tat=ne({name:"Remove",__name:"remove",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64"}),w("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),nat=tat,rat=ne({name:"Right",__name:"right",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M754.752 480H160a32 32 0 1 0 0 64h594.752L521.344 777.344a32 32 0 0 0 45.312 45.312l288-288a32 32 0 0 0 0-45.312l-288-288a32 32 0 1 0-45.312 45.312z"})]))}}),oat=rat,aat=ne({name:"ScaleToOriginal",__name:"scale-to-original",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118M512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412M512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512"})]))}}),b5e=aat,iat=ne({name:"School",__name:"school",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M224 128v704h576V128zm-32-64h640a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M64 832h896v64H64zm256-640h128v96H320z"}),w("path",{fill:"currentColor",d:"M384 832h256v-64a128 128 0 1 0-256 0zm128-256a192 192 0 0 1 192 192v128H320V768a192 192 0 0 1 192-192M320 384h128v96H320zm256-192h128v96H576zm0 192h128v96H576z"})]))}}),sat=iat,lat=ne({name:"Scissor",__name:"scissor",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m512.064 578.368-106.88 152.768a160 160 0 1 1-23.36-78.208L472.96 522.56 196.864 128.256a32 32 0 1 1 52.48-36.736l393.024 561.344a160 160 0 1 1-23.36 78.208l-106.88-152.704zm54.4-189.248 208.384-297.6a32 32 0 0 1 52.48 36.736l-221.76 316.672-39.04-55.808zm-376.32 425.856a96 96 0 1 0 110.144-157.248 96 96 0 0 0-110.08 157.248zm643.84 0a96 96 0 1 0-110.08-157.248 96 96 0 0 0 110.08 157.248"})]))}}),uat=lat,cat=ne({name:"Search",__name:"search",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("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"})]))}}),dT=cat,dat=ne({name:"Select",__name:"select",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z"})]))}}),fat=dat,hat=ne({name:"Sell",__name:"sell",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 483.84L768 698.496V928a32 32 0 1 1-64 0V698.496l-73.344 73.344a32 32 0 1 1-45.248-45.248l128-128a32 32 0 0 1 45.248 0l128 128a32 32 0 1 1-45.248 45.248z"})]))}}),pat=hat,gat=ne({name:"SemiSelect",__name:"semi-select",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 448h768q64 0 64 64t-64 64H128q-64 0-64-64t64-64"})]))}}),vat=gat,mat=ne({name:"Service",__name:"service",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M864 409.6a192 192 0 0 1-37.888 349.44A256.064 256.064 0 0 1 576 960h-96a32 32 0 1 1 0-64h96a192.064 192.064 0 0 0 181.12-128H736a32 32 0 0 1-32-32V416a32 32 0 0 1 32-32h32c10.368 0 20.544.832 30.528 2.432a288 288 0 0 0-573.056 0A193.235 193.235 0 0 1 256 384h32a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32h-32a192 192 0 0 1-96-358.4 352 352 0 0 1 704 0M256 448a128 128 0 1 0 0 256zm640 128a128 128 0 0 0-128-128v256a128 128 0 0 0 128-128"})]))}}),yat=mat,bat=ne({name:"SetUp",__name:"set-up",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M224 160a64 64 0 0 0-64 64v576a64 64 0 0 0 64 64h576a64 64 0 0 0 64-64V224a64 64 0 0 0-64-64zm0-64h576a128 128 0 0 1 128 128v576a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V224A128 128 0 0 1 224 96"}),w("path",{fill:"currentColor",d:"M384 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"}),w("path",{fill:"currentColor",d:"M480 320h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32m160 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128m0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256"}),w("path",{fill:"currentColor",d:"M288 640h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32"})]))}}),_at=bat,wat=ne({name:"Setting",__name:"setting",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256"})]))}}),im=wat,Cat=ne({name:"Share",__name:"share",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m679.872 348.8-301.76 188.608a127.808 127.808 0 0 1 5.12 52.16l279.936 104.96a128 128 0 1 1-22.464 59.904l-279.872-104.96a128 128 0 1 1-16.64-166.272l301.696-188.608a128 128 0 1 1 33.92 54.272z"})]))}}),xat=Cat,Sat=ne({name:"Ship",__name:"ship",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 386.88V448h405.568a32 32 0 0 1 30.72 40.768l-76.48 267.968A192 192 0 0 1 687.168 896H336.832a192 192 0 0 1-184.64-139.264L75.648 488.768A32 32 0 0 1 106.368 448H448V117.888a32 32 0 0 1 47.36-28.096l13.888 7.616L512 96v2.88l231.68 126.4a32 32 0 0 1-2.048 57.216zm0-70.272 144.768-65.792L512 171.84zM512 512H148.864l18.24 64H856.96l18.24-64zM185.408 640l28.352 99.2A128 128 0 0 0 336.832 832h350.336a128 128 0 0 0 123.072-92.8l28.352-99.2H185.408"})]))}}),Dat=Sat,Eat=ne({name:"Shop",__name:"shop",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M704 704h64v192H256V704h64v64h384zm188.544-152.192C894.528 559.616 896 567.616 896 576a96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0c0-8.384 1.408-16.384 3.392-24.192L192 128h640z"})]))}}),kat=Eat,Aat=ne({name:"ShoppingBag",__name:"shopping-bag",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M704 320v96a32 32 0 0 1-32 32h-32V320H384v128h-32a32 32 0 0 1-32-32v-96H192v576h640V320zm-384-64a192 192 0 1 1 384 0h160a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32zm64 0h256a128 128 0 1 0-256 0"}),w("path",{fill:"currentColor",d:"M192 704h640v64H192z"})]))}}),Tat=Aat,Oat=ne({name:"ShoppingCartFull",__name:"shopping-cart-full",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96m320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96M96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128zm314.24 576h395.904l82.304-384H333.44l76.8 384z"}),w("path",{fill:"currentColor",d:"M699.648 256 608 145.984 516.352 256h183.296zm-140.8-151.04a64 64 0 0 1 98.304 0L836.352 320H379.648l179.2-215.04"})]))}}),Fat=Oat,Iat=ne({name:"ShoppingCart",__name:"shopping-cart",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96m320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96M96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128zm314.24 576h395.904l82.304-384H333.44l76.8 384z"})]))}}),Mat=Iat,Pat=ne({name:"ShoppingTrolley",__name:"shopping-trolley",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M368 833c-13.3 0-24.5 4.5-33.5 13.5S321 866.7 321 880s4.5 24.5 13.5 33.5 20.2 13.8 33.5 14.5c13.3-.7 24.5-5.5 33.5-14.5S415 893.3 415 880s-4.5-24.5-13.5-33.5S381.3 833 368 833m439-193c7.4 0 13.8-2.2 19.5-6.5S836 623.3 838 616l112-448c2-10-.2-19.2-6.5-27.5S929 128 919 128H96c-9.3 0-17 3-23 9s-9 13.7-9 23 3 17 9 23 13.7 9 23 9h96v576h672c9.3 0 17-3 23-9s9-13.7 9-23-3-17-9-23-13.7-9-23-9H256v-64zM256 192h622l-96 384H256zm432 641c-13.3 0-24.5 4.5-33.5 13.5S641 866.7 641 880s4.5 24.5 13.5 33.5 20.2 13.8 33.5 14.5c13.3-.7 24.5-5.5 33.5-14.5S735 893.3 735 880s-4.5-24.5-13.5-33.5S701.3 833 688 833"})]))}}),$at=Pat,Bat=ne({name:"Smoking",__name:"smoking",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 576v128h640V576zm-32-64h704a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M704 576h64v128h-64zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z"})]))}}),Rat=Bat,Nat=ne({name:"Soccer",__name:"soccer",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M418.496 871.04 152.256 604.8c-16.512 94.016-2.368 178.624 42.944 224 44.928 44.928 129.344 58.752 223.296 42.24m72.32-18.176a573.056 573.056 0 0 0 224.832-137.216 573.12 573.12 0 0 0 137.216-224.832L533.888 171.84a578.56 578.56 0 0 0-227.52 138.496A567.68 567.68 0 0 0 170.432 532.48l320.384 320.384zM871.04 418.496c16.512-93.952 2.688-178.368-42.24-223.296-44.544-44.544-128.704-58.048-222.592-41.536zM149.952 874.048c-112.96-112.96-88.832-408.96 111.168-608.96C461.056 65.152 760.96 36.928 874.048 149.952c113.024 113.024 86.784 411.008-113.152 610.944-199.936 199.936-497.92 226.112-610.944 113.152m452.544-497.792 22.656-22.656a32 32 0 0 1 45.248 45.248l-22.656 22.656 45.248 45.248A32 32 0 1 1 647.744 512l-45.248-45.248L557.248 512l45.248 45.248a32 32 0 1 1-45.248 45.248L512 557.248l-45.248 45.248L512 647.744a32 32 0 1 1-45.248 45.248l-45.248-45.248-22.656 22.656a32 32 0 1 1-45.248-45.248l22.656-22.656-45.248-45.248A32 32 0 1 1 376.256 512l45.248 45.248L466.752 512l-45.248-45.248a32 32 0 1 1 45.248-45.248L512 466.752l45.248-45.248L512 376.256a32 32 0 0 1 45.248-45.248l45.248 45.248z"})]))}}),Lat=Nat,Uat=ne({name:"SoldOut",__name:"sold-out",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 476.16a32 32 0 1 1 45.248 45.184l-128 128a32 32 0 0 1-45.248 0l-128-128a32 32 0 1 1 45.248-45.248L704 837.504V608a32 32 0 1 1 64 0v229.504l73.408-73.408z"})]))}}),Vat=Uat,zat=ne({name:"SortDown",__name:"sort-down",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0"})]))}}),_5e=zat,jat=ne({name:"SortUp",__name:"sort-up",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248"})]))}}),w5e=jat,Hat=ne({name:"Sort",__name:"sort",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M384 96a32 32 0 0 1 64 0v786.752a32 32 0 0 1-54.592 22.656L95.936 608a32 32 0 0 1 0-45.312h.128a32 32 0 0 1 45.184 0L384 805.632zm192 45.248a32 32 0 0 1 54.592-22.592L928.064 416a32 32 0 0 1 0 45.312h-.128a32 32 0 0 1-45.184 0L640 218.496V928a32 32 0 1 1-64 0V141.248z"})]))}}),Wat=Hat,qat=ne({name:"Stamp",__name:"stamp",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M624 475.968V640h144a128 128 0 0 1 128 128H128a128 128 0 0 1 128-128h144V475.968a192 192 0 1 1 224 0M128 896v-64h768v64z"})]))}}),Kat=qat,Gat=ne({name:"StarFilled",__name:"star-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"})]))}}),U5=Gat,Yat=ne({name:"Star",__name:"star",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),Ld=Yat,Xat=ne({name:"Stopwatch",__name:"stopwatch",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),w("path",{fill:"currentColor",d:"M672 234.88c-39.168 174.464-80 298.624-122.688 372.48-64 110.848-202.624 30.848-138.624-80C453.376 453.44 540.48 355.968 672 234.816z"})]))}}),Jat=Xat,Zat=ne({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Yne=Zat,Qat=ne({name:"Sugar",__name:"sugar",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m801.728 349.184 4.48 4.48a128 128 0 0 1 0 180.992L534.656 806.144a128 128 0 0 1-181.056 0l-4.48-4.48-19.392 109.696a64 64 0 0 1-108.288 34.176L78.464 802.56a64 64 0 0 1 34.176-108.288l109.76-19.328-4.544-4.544a128 128 0 0 1 0-181.056l271.488-271.488a128 128 0 0 1 181.056 0l4.48 4.48 19.392-109.504a64 64 0 0 1 108.352-34.048l142.592 143.04a64 64 0 0 1-34.24 108.16l-109.248 19.2zm-548.8 198.72h447.168v2.24l60.8-60.8a63.808 63.808 0 0 0 18.752-44.416h-426.88l-89.664 89.728a64.064 64.064 0 0 0-10.24 13.248zm0 64c2.752 4.736 6.144 9.152 10.176 13.248l135.744 135.744a64 64 0 0 0 90.496 0L638.4 611.904zm490.048-230.976L625.152 263.104a64 64 0 0 0-90.496 0L416.768 380.928zM123.712 757.312l142.976 142.976 24.32-137.6a25.6 25.6 0 0 0-29.696-29.632l-137.6 24.256zm633.6-633.344-24.32 137.472a25.6 25.6 0 0 0 29.632 29.632l137.28-24.064-142.656-143.04z"})]))}}),eit=Qat,tit=ne({name:"SuitcaseLine",__name:"suitcase-line",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M922.5 229.5c-24.32-24.34-54.49-36.84-90.5-37.5H704v-64c-.68-17.98-7.02-32.98-19.01-44.99S658.01 64.66 640 64H384c-17.98.68-32.98 7.02-44.99 19.01S320.66 110 320 128v64H192c-35.99.68-66.16 13.18-90.5 37.5C77.16 253.82 64.66 283.99 64 320v448c.68 35.99 13.18 66.16 37.5 90.5s54.49 36.84 90.5 37.5h640c35.99-.68 66.16-13.18 90.5-37.5s36.84-54.49 37.5-90.5V320c-.68-35.99-13.18-66.16-37.5-90.5M384 128h256v64H384zM256 832h-64c-17.98-.68-32.98-7.02-44.99-19.01S128.66 786.01 128 768V448h128zm448 0H320V448h384zm192-64c-.68 17.98-7.02 32.98-19.01 44.99S850.01 831.34 832 832h-64V448h128zm0-384H128v-64c.69-17.98 7.02-32.98 19.01-44.99S173.99 256.66 192 256h640c17.98.69 32.98 7.02 44.99 19.01S895.34 301.99 896 320z"})]))}}),nit=tit,rit=ne({name:"Suitcase",__name:"suitcase",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 384h768v-64a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64zm0 64v320a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V448zm64-256h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128"}),w("path",{fill:"currentColor",d:"M384 128v64h256v-64zm0-64h256a64 64 0 0 1 64 64v64a64 64 0 0 1-64 64H384a64 64 0 0 1-64-64v-64a64 64 0 0 1 64-64"})]))}}),oit=rit,ait=ne({name:"Sunny",__name:"sunny",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 704a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m0-704a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 768a32 32 0 0 1 32 32v64a32 32 0 1 1-64 0v-64a32 32 0 0 1 32-32M195.2 195.2a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 1 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm543.104 543.104a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 0 1-45.248 45.248l-45.248-45.248a32 32 0 0 1 0-45.248M64 512a32 32 0 0 1 32-32h64a32 32 0 0 1 0 64H96a32 32 0 0 1-32-32m768 0a32 32 0 0 1 32-32h64a32 32 0 1 1 0 64h-64a32 32 0 0 1-32-32M195.2 828.8a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248L240.448 828.8a32 32 0 0 1-45.248 0zm543.104-543.104a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248l-45.248 45.248a32 32 0 0 1-45.248 0"})]))}}),iit=ait,sit=ne({name:"Sunrise",__name:"sunrise",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M32 768h960a32 32 0 1 1 0 64H32a32 32 0 1 1 0-64m129.408-96a352 352 0 0 1 701.184 0h-64.32a288 288 0 0 0-572.544 0h-64.32zM512 128a32 32 0 0 1 32 32v96a32 32 0 0 1-64 0v-96a32 32 0 0 1 32-32m407.296 168.704a32 32 0 0 1 0 45.248l-67.84 67.84a32 32 0 1 1-45.248-45.248l67.84-67.84a32 32 0 0 1 45.248 0zm-814.592 0a32 32 0 0 1 45.248 0l67.84 67.84a32 32 0 1 1-45.248 45.248l-67.84-67.84a32 32 0 0 1 0-45.248"})]))}}),lit=sit,uit=ne({name:"Sunset",__name:"sunset",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M82.56 640a448 448 0 1 1 858.88 0h-67.2a384 384 0 1 0-724.288 0zM32 704h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32m256 128h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32"})]))}}),cit=uit,dit=ne({name:"SwitchButton",__name:"switch-button",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M352 159.872V230.4a352 352 0 1 0 320 0v-70.528A416.128 416.128 0 0 1 512 960a416 416 0 0 1-160-800.128z"}),w("path",{fill:"currentColor",d:"M512 64q32 0 32 32v320q0 32-32 32t-32-32V96q0-32 32-32"})]))}}),fit=dit,hit=ne({name:"SwitchFilled",__name:"switch-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M247.47 358.4v.04c.07 19.17 7.72 37.53 21.27 51.09s31.92 21.2 51.09 21.27c39.86 0 72.41-32.6 72.41-72.4s-32.6-72.36-72.41-72.36-72.36 32.55-72.36 72.36z"}),w("path",{fill:"currentColor",d:"M492.38 128H324.7c-52.16 0-102.19 20.73-139.08 57.61a196.655 196.655 0 0 0-57.61 139.08V698.7c-.01 25.84 5.08 51.42 14.96 75.29s24.36 45.56 42.63 63.83 39.95 32.76 63.82 42.65a196.67 196.67 0 0 0 75.28 14.98h167.68c3.03 0 5.46-2.43 5.46-5.42V133.42c.6-2.99-1.83-5.42-5.46-5.42zm-56.11 705.88H324.7c-17.76.13-35.36-3.33-51.75-10.18s-31.22-16.94-43.61-29.67c-25.3-25.35-39.81-59.1-39.81-95.32V324.69c-.13-17.75 3.33-35.35 10.17-51.74a131.695 131.695 0 0 1 29.64-43.62c25.39-25.3 59.14-39.81 95.36-39.81h111.57zm402.12-647.67a196.655 196.655 0 0 0-139.08-57.61H580.48c-3.03 0-4.82 2.43-4.82 4.82v757.16c-.6 2.99 1.79 5.42 5.42 5.42h118.23a196.69 196.69 0 0 0 139.08-57.61A196.655 196.655 0 0 0 896 699.31V325.29a196.69 196.69 0 0 0-57.61-139.08zm-111.3 441.92c-42.83 0-77.82-34.99-77.82-77.82s34.98-77.82 77.82-77.82c42.83 0 77.82 34.99 77.82 77.82s-34.99 77.82-77.82 77.82z"})]))}}),pit=hit,git=ne({name:"Switch",__name:"switch",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M118.656 438.656a32 32 0 0 1 0-45.248L416 96l4.48-3.776A32 32 0 0 1 461.248 96l3.712 4.48a32.064 32.064 0 0 1-3.712 40.832L218.56 384H928a32 32 0 1 1 0 64H141.248a32 32 0 0 1-22.592-9.344zM64 608a32 32 0 0 1 32-32h786.752a32 32 0 0 1 22.656 54.592L608 928l-4.48 3.776a32.064 32.064 0 0 1-40.832-49.024L805.632 640H96a32 32 0 0 1-32-32"})]))}}),vit=git,mit=ne({name:"TakeawayBox",__name:"takeaway-box",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M832 384H192v448h640zM96 320h832V128H96zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64"})]))}}),yit=mit,bit=ne({name:"Ticket",__name:"ticket",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M640 832H64V640a128 128 0 1 0 0-256V192h576v160h64V192h256v192a128 128 0 1 0 0 256v192H704V672h-64zm0-416v192h64V416z"})]))}}),_it=bit,wit=ne({name:"Tickets",__name:"tickets",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M192 128v768h640V128zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h192v64H320zm0 384h384v64H320z"})]))}}),Cit=wit,xit=ne({name:"Timer",__name:"timer",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 896a320 320 0 1 0 0-640 320 320 0 0 0 0 640m0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768"}),w("path",{fill:"currentColor",d:"M512 320a32 32 0 0 1 32 32l-.512 224a32 32 0 1 1-64 0L480 352a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M448 576a64 64 0 1 0 128 0 64 64 0 1 0-128 0m96-448v128h-64V128h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64z"})]))}}),Sit=xit,Dit=ne({name:"ToiletPaper",__name:"toilet-paper",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M595.2 128H320a192 192 0 0 0-192 192v576h384V352c0-90.496 32.448-171.2 83.2-224M736 64c123.712 0 224 128.96 224 288S859.712 640 736 640H576v320H64V320A256 256 0 0 1 320 64zM576 352v224h160c84.352 0 160-97.28 160-224s-75.648-224-160-224-160 97.28-160 224"}),w("path",{fill:"currentColor",d:"M736 448c-35.328 0-64-43.008-64-96s28.672-96 64-96 64 43.008 64 96-28.672 96-64 96"})]))}}),Eit=Dit,kit=ne({name:"Tools",__name:"tools",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M764.416 254.72a351.68 351.68 0 0 1 86.336 149.184H960v192.064H850.752a351.68 351.68 0 0 1-86.336 149.312l54.72 94.72-166.272 96-54.592-94.72a352.64 352.64 0 0 1-172.48 0L371.136 936l-166.272-96 54.72-94.72a351.68 351.68 0 0 1-86.336-149.312H64v-192h109.248a351.68 351.68 0 0 1 86.336-149.312L204.8 160l166.208-96h.192l54.656 94.592a352.64 352.64 0 0 1 172.48 0L652.8 64h.128L819.2 160l-54.72 94.72zM704 499.968a192 192 0 1 0-384 0 192 192 0 0 0 384 0"})]))}}),BS=kit,Ait=ne({name:"TopLeft",__name:"top-left",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M256 256h416a32 32 0 1 0 0-64H224a32 32 0 0 0-32 32v448a32 32 0 0 0 64 0z"}),w("path",{fill:"currentColor",d:"M246.656 201.344a32 32 0 0 0-45.312 45.312l544 544a32 32 0 0 0 45.312-45.312l-544-544z"})]))}}),Tit=Ait,Oit=ne({name:"TopRight",__name:"top-right",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M768 256H353.6a32 32 0 1 1 0-64H800a32 32 0 0 1 32 32v448a32 32 0 0 1-64 0z"}),w("path",{fill:"currentColor",d:"M777.344 201.344a32 32 0 0 1 45.312 45.312l-544 544a32 32 0 0 1-45.312-45.312l544-544z"})]))}}),Fit=Oit,Iit=ne({name:"Top",__name:"top",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z"})]))}}),Mit=Iit,Pit=ne({name:"TrendCharts",__name:"trend-charts",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128 896V128h768v768zm291.712-327.296 128 102.4 180.16-201.792-47.744-42.624-139.84 156.608-128-102.4-180.16 201.792 47.744 42.624 139.84-156.608zM816 352a48 48 0 1 0-96 0 48 48 0 0 0 96 0"})]))}}),Xne=Pit,$it=ne({name:"TrophyBase",__name:"trophy-base",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M918.4 201.6c-6.4-6.4-12.8-9.6-22.4-9.6H768V96c0-9.6-3.2-16-9.6-22.4C752 67.2 745.6 64 736 64H288c-9.6 0-16 3.2-22.4 9.6C259.2 80 256 86.4 256 96v96H128c-9.6 0-16 3.2-22.4 9.6-6.4 6.4-9.6 16-9.6 22.4 3.2 108.8 25.6 185.6 64 224 34.4 34.4 77.56 55.65 127.65 61.99 10.91 20.44 24.78 39.25 41.95 56.41 40.86 40.86 91 65.47 150.4 71.9V768h-96c-9.6 0-16 3.2-22.4 9.6-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4c6.4 6.4 12.8 9.6 22.4 9.6h256c9.6 0 16-3.2 22.4-9.6 6.4-6.4 9.6-12.8 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-12.8-9.6-22.4-9.6h-96V637.26c59.4-7.71 109.54-30.01 150.4-70.86 17.2-17.2 31.51-36.06 42.81-56.55 48.93-6.51 90.02-27.7 126.79-61.85 38.4-38.4 60.8-112 64-224 0-6.4-3.2-16-9.6-22.4zM256 438.4c-19.2-6.4-35.2-19.2-51.2-35.2-22.4-22.4-35.2-70.4-41.6-147.2H256zm390.4 80C608 553.6 566.4 576 512 576s-99.2-19.2-134.4-57.6C342.4 480 320 438.4 320 384V128h384v256c0 54.4-19.2 99.2-57.6 134.4m172.8-115.2c-16 16-32 25.6-51.2 35.2V256h92.8c-6.4 76.8-19.2 124.8-41.6 147.2zM768 896H256c-9.6 0-16 3.2-22.4 9.6-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4c6.4 6.4 12.8 9.6 22.4 9.6h512c9.6 0 16-3.2 22.4-9.6 6.4-6.4 9.6-12.8 9.6-22.4s-3.2-16-9.6-22.4c-6.4-6.4-12.8-9.6-22.4-9.6"})]))}}),Bit=$it,Rit=ne({name:"Trophy",__name:"trophy",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M480 896V702.08A256.256 256.256 0 0 1 264.064 512h-32.64a96 96 0 0 1-91.968-68.416L93.632 290.88a76.8 76.8 0 0 1 73.6-98.88H256V96a32 32 0 0 1 32-32h448a32 32 0 0 1 32 32v96h88.768a76.8 76.8 0 0 1 73.6 98.88L884.48 443.52A96 96 0 0 1 792.576 512h-32.64A256.256 256.256 0 0 1 544 702.08V896h128a32 32 0 1 1 0 64H352a32 32 0 1 1 0-64zm224-448V128H320v320a192 192 0 1 0 384 0m64 0h24.576a32 32 0 0 0 30.656-22.784l45.824-152.768A12.8 12.8 0 0 0 856.768 256H768zm-512 0V256h-88.768a12.8 12.8 0 0 0-12.288 16.448l45.824 152.768A32 32 0 0 0 231.424 448z"})]))}}),PL=Rit,Nit=ne({name:"TurnOff",__name:"turn-off",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36z"}),w("path",{fill:"currentColor",d:"M329.956 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454m0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088"})]))}}),Lit=Nit,Uit=ne({name:"Umbrella",__name:"umbrella",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M320 768a32 32 0 1 1 64 0 64 64 0 0 0 128 0V512H64a448 448 0 1 1 896 0H576v256a128 128 0 1 1-256 0m570.688-320a384.128 384.128 0 0 0-757.376 0z"})]))}}),Vit=Uit,zit=ne({name:"Unlock",__name:"unlock",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96"}),w("path",{fill:"currentColor",d:"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m178.304-295.296A192.064 192.064 0 0 0 320 320v64h352l96 38.4V448H256V320a256 256 0 0 1 493.76-95.104z"})]))}}),jit=zit,Hit=ne({name:"UploadFilled",__name:"upload-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6z"})]))}}),Jne=Hit,Wit=ne({name:"Upload",__name:"upload",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-578.304V704h-64V247.296L237.248 490.048 192 444.8 508.8 128l316.8 316.8-45.312 45.248z"})]))}}),fT=Wit,qit=ne({name:"UserFilled",__name:"user-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0m544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"})]))}}),Kit=qit,Git=ne({name:"User",__name:"user",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0"})]))}}),Yit=Git,Xit=ne({name:"Van",__name:"van",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M128.896 736H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v96h164.544a32 32 0 0 1 31.616 27.136l54.144 352A32 32 0 0 1 922.688 736h-91.52a144 144 0 1 1-286.272 0H415.104a144 144 0 1 1-286.272 0zm23.36-64a143.872 143.872 0 0 1 239.488 0H568.32c17.088-25.6 42.24-45.376 71.744-55.808V256H128v416zm655.488 0h77.632l-19.648-128H704v64.896A144 144 0 0 1 807.744 672m48.128-192-14.72-96H704v96h151.872M688 832a80 80 0 1 0 0-160 80 80 0 0 0 0 160m-416 0a80 80 0 1 0 0-160 80 80 0 0 0 0 160"})]))}}),Jit=Xit,Zit=ne({name:"VideoCameraFilled",__name:"video-camera-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m768 576 192-64v320l-192-64v96a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V480a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zM192 768v64h384v-64zm192-480a160 160 0 0 1 320 0 160 160 0 0 1-320 0m64 0a96 96 0 1 0 192.064-.064A96 96 0 0 0 448 288m-320 32a128 128 0 1 1 256.064.064A128 128 0 0 1 128 320m64 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0"})]))}}),Qit=Zit,est=ne({name:"VideoCamera",__name:"video-camera",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M704 768V256H128v512zm64-416 192-96v512l-192-96v128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32zm0 71.552v176.896l128 64V359.552zM192 320h192v64H192z"})]))}}),tst=est,nst=ne({name:"VideoPause",__name:"video-pause",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m-96-544q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32m192 0q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32"})]))}}),Zne=nst,rst=ne({name:"VideoPlay",__name:"video-play",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m-48-247.616L668.608 512 464 375.616zm10.624-342.656 249.472 166.336a48 48 0 0 1 0 79.872L474.624 718.272A48 48 0 0 1 400 678.336V345.6a48 48 0 0 1 74.624-39.936z"})]))}}),ost=rst,ast=ne({name:"View",__name:"view",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),db=ast,ist=ne({name:"WalletFilled",__name:"wallet-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M688 512a112 112 0 1 0 0 224h208v160H128V352h768v160zm32 160h-32a48 48 0 0 1 0-96h32a48 48 0 0 1 0 96m-80-544 128 160H384z"})]))}}),sst=ist,lst=ne({name:"Wallet",__name:"wallet",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M640 288h-64V128H128v704h384v32a32 32 0 0 0 32 32H96a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h512a32 32 0 0 1 32 32z"}),w("path",{fill:"currentColor",d:"M128 320v512h768V320zm-32-64h832a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M704 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128"})]))}}),ust=lst,cst=ne({name:"WarnTriangleFilled",__name:"warn-triangle-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xml:space":"preserve",style:{"enable-background":"new 0 0 1024 1024"},viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M928.99 755.83 574.6 203.25c-12.89-20.16-36.76-32.58-62.6-32.58s-49.71 12.43-62.6 32.58L95.01 755.83c-12.91 20.12-12.9 44.91.01 65.03 12.92 20.12 36.78 32.51 62.59 32.49h708.78c25.82.01 49.68-12.37 62.59-32.49 12.91-20.12 12.92-44.91.01-65.03M554.67 768h-85.33v-85.33h85.33zm0-426.67v298.66h-85.33V341.32z"})]))}}),dst=cst,fst=ne({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),hT=fst,hst=ne({name:"Warning",__name:"warning",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m48-176a48 48 0 1 1-96 0 48 48 0 0 1 96 0m-48-464a32 32 0 0 1 32 32v288a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"})]))}}),C5e=hst,pst=ne({name:"Watch",__name:"watch",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M512 768a256 256 0 1 0 0-512 256 256 0 0 0 0 512m0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640"}),w("path",{fill:"currentColor",d:"M480 352a32 32 0 0 1 32 32v160a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32"}),w("path",{fill:"currentColor",d:"M480 512h128q32 0 32 32t-32 32H480q-32 0-32-32t32-32m128-256V128H416v128h-64V64h320v192zM416 768v128h192V768h64v192H352V768z"})]))}}),gst=pst,vst=ne({name:"Watermelon",__name:"watermelon",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"m683.072 600.32-43.648 162.816-61.824-16.512 53.248-198.528L576 493.248l-158.4 158.4-45.248-45.248 158.4-158.4-55.616-55.616-198.528 53.248-16.512-61.824 162.816-43.648L282.752 200A384 384 0 0 0 824 741.248zm231.552 141.056a448 448 0 1 1-632-632l632 632"})]))}}),mst=vst,yst=ne({name:"WindPower",__name:"wind-power",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("path",{fill:"currentColor",d:"M160 64q32 0 32 32v832q0 32-32 32t-32-32V96q0-32 32-32m416 354.624 128-11.584V168.96l-128-11.52v261.12zm-64 5.824V151.552L320 134.08V160h-64V64l616.704 56.064A96 96 0 0 1 960 215.68v144.64a96 96 0 0 1-87.296 95.616L256 512V224h64v217.92zm256-23.232 98.88-8.96A32 32 0 0 0 896 360.32V215.68a32 32 0 0 0-29.12-31.872l-98.88-8.96z"})]))}}),bst=yst,_st=ne({name:"ZoomIn",__name:"zoom-in",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("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 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})]))}}),Qne=_st,wst=ne({name:"ZoomOut",__name:"zoom-out",setup(e){return(t,n)=>(I(),j("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[w("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 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})]))}}),x5e=wst;const Cst=Object.freeze(Object.defineProperty({__proto__:null,AddLocation:GJe,Aim:e5e,AlarmClock:JJe,Apple:QJe,ArrowDown:lc,ArrowDownBold:tZe,ArrowLeft:uf,ArrowLeftBold:oZe,ArrowRight:_i,ArrowRightBold:sZe,ArrowUp:mC,ArrowUpBold:cZe,Avatar:hZe,Back:t5e,Baseball:vZe,Basketball:yZe,Bell:n5e,BellFilled:_Ze,Bicycle:xZe,Bottom:TZe,BottomLeft:DZe,BottomRight:kZe,Bowl:FZe,Box:MZe,Briefcase:$Ze,Brush:LZe,BrushFilled:RZe,Burger:VZe,Calendar:Bm,Camera:qZe,CameraFilled:HZe,CaretBottom:GZe,CaretLeft:XZe,CaretRight:qne,CaretTop:r5e,Cellphone:eQe,ChatDotRound:nQe,ChatDotSquare:oQe,ChatLineRound:iQe,ChatLineSquare:FL,ChatRound:uQe,ChatSquare:dQe,Check:Za,Checked:pQe,Cherry:vQe,Chicken:yQe,ChromeFilled:_Qe,CircleCheck:cT,CircleCheckFilled:o5e,CircleClose:Yh,CircleCloseFilled:IL,CirclePlus:AQe,CirclePlusFilled:EQe,Clock:$D,Close:Gs,CloseBold:FQe,Cloudy:PQe,Coffee:NQe,CoffeeCup:BQe,Coin:UQe,ColdDrink:zQe,Collection:Kne,CollectionTag:HQe,Comment:KQe,Compass:YQe,Connection:L5,Coordinate:ZQe,CopyDocument:vg,Cpu:tet,CreditCard:VM,Crop:oet,DArrowLeft:kg,DArrowRight:Ag,DCaret:uet,DataAnalysis:ML,DataBoard:fet,DataLine:pet,Delete:Ws,DeleteFilled:vet,DeleteLocation:yet,Dessert:wet,Discount:xet,Dish:Aet,DishDot:Eet,Document:Yu,DocumentAdd:a5e,DocumentChecked:Fet,DocumentCopy:cb,DocumentDelete:Pet,DocumentRemove:Bet,Download:qu,Drizzling:Uet,Edit:Xu,EditPen:$h,Eleme:qet,ElemeFilled:Het,ElementPlus:Get,Expand:i5e,Failed:Jet,Female:Qet,Files:ttt,Film:rtt,Filter:att,Finished:stt,FirstAidKit:utt,Flag:dtt,Fold:s5e,Folder:xtt,FolderAdd:OY,FolderChecked:gtt,FolderDelete:mtt,FolderOpened:btt,FolderRemove:wtt,Food:Dtt,Football:ktt,ForkSpoon:Ttt,Fries:Ftt,FullScreen:l5e,Goblet:Utt,GobletFull:Ptt,GobletSquare:Ntt,GobletSquareFull:Btt,GoldMedal:ztt,Goods:qtt,GoodsFilled:Htt,Grape:Gtt,Grid:Xtt,Guide:Ztt,Handbag:ent,Headset:nnt,Help:int,HelpFilled:ont,Hide:u5e,Histogram:unt,HomeFilled:dnt,HotWater:hnt,House:c5e,IceCream:_nt,IceCreamRound:vnt,IceCreamSquare:ynt,IceDrink:Cnt,IceTea:Snt,InfoFilled:Wd,Iphone:knt,Key:d5e,KnifeFork:Ont,Lightning:Int,Link:Pnt,List:FY,Loading:Kl,Location:znt,LocationFilled:Nnt,LocationInformation:Unt,Lock:Hnt,Lollipop:qnt,MagicStick:Dh,Magnet:Ynt,Male:Jnt,Management:Qnt,MapLocation:trt,Medal:f5e,Memo:ort,Menu:irt,Message:crt,MessageBox:lrt,Mic:frt,Microphone:prt,MilkTea:vrt,Minus:h5e,Money:brt,Monitor:wrt,Moon:Drt,MoonNight:xrt,More:p5e,MoreFilled:Ku,MostlyCloudy:Trt,Mouse:Frt,Mug:Mrt,Mute:Rrt,MuteNotification:$rt,NoSmoking:Lrt,Notebook:zM,Notification:zrt,Odometer:Hrt,OfficeBuilding:qrt,Open:Grt,Operation:Xrt,Opportunity:Zrt,Orange:eot,Paperclip:not,PartlyCloudy:oot,Pear:iot,Phone:cot,PhoneFilled:lot,Picture:got,PictureFilled:g5e,PictureRounded:hot,PieChart:mot,Place:bot,Platform:wot,Plus:ea,Pointer:Sot,Position:Eot,Postcard:Aot,Pouring:Oot,Present:Iot,PriceTag:Pot,Printer:Bot,Promotion:Not,QuartzWatch:Uot,QuestionFilled:v5e,Rank:m5e,Reading:qot,ReadingLamp:Hot,Refresh:Xot,RefreshLeft:Gne,RefreshRight:y5e,Refrigerator:Zot,Remove:nat,RemoveFilled:eat,Right:oat,ScaleToOriginal:b5e,School:sat,Scissor:uat,Search:dT,Select:fat,Sell:pat,SemiSelect:vat,Service:yat,SetUp:_at,Setting:im,Share:xat,Ship:Dat,Shop:kat,ShoppingBag:Tat,ShoppingCart:Mat,ShoppingCartFull:Fat,ShoppingTrolley:$at,Smoking:Rat,Soccer:Lat,SoldOut:Vat,Sort:Wat,SortDown:_5e,SortUp:w5e,Stamp:Kat,Star:Ld,StarFilled:U5,Stopwatch:Jat,SuccessFilled:Yne,Sugar:eit,Suitcase:oit,SuitcaseLine:nit,Sunny:iit,Sunrise:lit,Sunset:cit,Switch:vit,SwitchButton:fit,SwitchFilled:pit,TakeawayBox:yit,Ticket:_it,Tickets:Cit,Timer:Sit,ToiletPaper:Eit,Tools:BS,Top:Mit,TopLeft:Tit,TopRight:Fit,TrendCharts:Xne,Trophy:PL,TrophyBase:Bit,TurnOff:Lit,Umbrella:Vit,Unlock:jit,Upload:fT,UploadFilled:Jne,User:Yit,UserFilled:Kit,Van:Jit,VideoCamera:tst,VideoCameraFilled:Qit,VideoPause:Zne,VideoPlay:ost,View:db,Wallet:ust,WalletFilled:sst,WarnTriangleFilled:dst,Warning:C5e,WarningFilled:hT,Watch:gst,Watermelon:mst,WindPower:bst,ZoomIn:Qne,ZoomOut:x5e},Symbol.toStringTag,{value:"Module"})),mr=$e([String,Object,Function]),S5e={Close:Gs},ere={Close:Gs,SuccessFilled:Yne,InfoFilled:Wd,WarningFilled:hT,CircleCloseFilled:IL},Rm={primary:Wd,success:Yne,warning:hT,error:IL,info:Wd},$L={validating:Kl,success:cT,error:Yh},xst=["light","dark"],Sst=ht({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:c8(Rm),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:xst,default:"light"},...Zxe}),Dst={open:()=>!0,close:e=>Ln(e)||e instanceof Event},Est=ne({name:"ElAlert"}),kst=ne({...Est,props:Sst,emits:Dst,setup(e,{emit:t}){const n=e,{Close:r}=ere,o=La(),a=nt("alert"),i=X(!1),s=K(()=>Rm[n.type]),l=K(()=>!!(n.description||o.default)),u=()=>{i.value=!0,t("open")},c=h=>{i.value=!1,t("close",h)},{onOpen:d,onClose:f}=Qxe({showAfter:tr(n,"showAfter"),hideAfter:tr(n,"hideAfter"),autoClose:tr(n,"autoClose"),open:u,close:c});return Nn&&d(),(h,g)=>(I(),Oe(xi,{name:b(a).b("fade"),persisted:""},{default:A(()=>[rn(w("div",{class:ee([b(a).b(),b(a).m(h.type),b(a).is("center",h.center),b(a).is(h.effect)]),role:"alert"},[h.showIcon&&(h.$slots.icon||b(s))?(I(),Oe(b(Tt),{key:0,class:ee([b(a).e("icon"),{[b(a).is("big")]:b(l)}])},{default:A(()=>[Ne(h.$slots,"icon",{},()=>[(I(),Oe(_n(b(s))))])]),_:3},8,["class"])):be("v-if",!0),w("div",{class:ee(b(a).e("content"))},[h.title||h.$slots.title?(I(),j("span",{key:0,class:ee([b(a).e("title"),{"with-description":b(l)}])},[Ne(h.$slots,"title",{},()=>[ce(se(h.title),1)])],2)):be("v-if",!0),b(l)?(I(),j("p",{key:1,class:ee(b(a).e("description"))},[Ne(h.$slots,"default",{},()=>[ce(se(h.description),1)])],2)):be("v-if",!0),h.closable?(I(),j(tt,{key:2},[h.closeText?(I(),j("div",{key:0,class:ee([b(a).e("close-btn"),b(a).is("customed")]),onClick:c},se(h.closeText),3)):(I(),Oe(b(Tt),{key:1,class:ee(b(a).e("close-btn")),onClick:b(f)},{default:A(()=>[D(b(r))]),_:1},8,["class","onClick"]))],64)):be("v-if",!0)],2)],2),[[Pn,i.value]])]),_:3},8,["name"]))}});var Ast=vt(kst,[["__file","alert.vue"]]);const pT=dn(Ast),tre=()=>Nn&&/firefox/i.test(window.navigator.userAgent);let Tl;const Tst={height:"0",visibility:"hidden",overflow:tre()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},Ost=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function Fst(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),r=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),o=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:Ost.map(i=>[i,t.getPropertyValue(i)]),paddingSize:r,borderSize:o,boxSizing:n}}function Gfe(e,t=1,n){var r;Tl||(Tl=document.createElement("textarea"),document.body.appendChild(Tl));const{paddingSize:o,borderSize:a,boxSizing:i,contextStyle:s}=Fst(e);s.forEach(([d,f])=>Tl==null?void 0:Tl.style.setProperty(d,f)),Object.entries(Tst).forEach(([d,f])=>Tl==null?void 0:Tl.style.setProperty(d,f,"important")),Tl.value=e.value||e.placeholder||"";let l=Tl.scrollHeight;const u={};i==="border-box"?l=l+a:i==="content-box"&&(l=l-o),Tl.value="";const c=Tl.scrollHeight-o;if(Lt(t)){let d=c*t;i==="border-box"&&(d=d+o+a),l=Math.max(d,l),u.minHeight=`${d}px`}if(Lt(n)){let d=c*n;i==="border-box"&&(d=d+o+a),l=Math.min(d,l)}return u.height=`${l}px`,(r=Tl.parentNode)==null||r.removeChild(Tl),Tl=void 0,u}const Eo=e=>e,Ist=ht({ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical","undefined"]},ariaControls:String}),ts=e=>Hd(Ist,e),nre=ht({id:{type:String,default:void 0},size:Aa,disabled:Boolean,modelValue:{type:$e([String,Number,Object]),default:""},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:$e([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,showPassword:Boolean,showWordLimit:Boolean,suffixIcon:{type:mr},prefixIcon:{type:mr},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:$e([Object,Array,String]),default:()=>Eo({})},autofocus:Boolean,rows:{type:Number,default:2},...ts(["ariaLabel"])}),Mst={[en]:e=>$t(e),input:e=>$t(e),change:e=>$t(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},Pst=["class","style"],$st=/^on[A-Z]/,gT=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n}=e,r=K(()=>((n==null?void 0:n.value)||[]).concat(Pst)),o=bn();return K(o?()=>{var a;return PD(Object.entries((a=o.proxy)==null?void 0:a.$attrs).filter(([i])=>!r.value.includes(i)&&!(t&&$st.test(i))))}:()=>({}))},Yfe={prefix:Math.floor(Math.random()*1e4),current:0},Bst=Symbol("elIdInjection"),rre=()=>bn()?kt(Bst,Yfe):Yfe,Gi=e=>{const t=rre(),n=Dne();return NM(()=>b(e)||`${n.value}-id-${t.prefix}-${t.current++}`)},__=Symbol("formContextKey"),Bh=Symbol("formItemContextKey"),ws=()=>{const e=kt(__,void 0),t=kt(Bh,void 0);return{form:e,formItem:t}},vd=(e,{formItemContext:t,disableIdGeneration:n,disableIdManagement:r})=>{n||(n=X(!1)),r||(r=X(!1));const o=X();let a;const i=K(()=>{var s;return!!(!(e.label||e.ariaLabel)&&t&&t.inputIds&&((s=t.inputIds)==null?void 0:s.length)<=1)});return Kt(()=>{a=Ze([tr(e,"id"),n],([s,l])=>{const u=s??(l?void 0:Gi().value);u!==o.value&&(t!=null&&t.removeInputId&&(o.value&&t.removeInputId(o.value),!(r!=null&&r.value)&&!l&&u&&t.addInputId(u)),o.value=u)},{immediate:!0})}),gd(()=>{a&&a(),t!=null&&t.removeInputId&&o.value&&t.removeInputId(o.value)}),{isLabeledByFormItem:i,inputId:o}},D5e=e=>{const t=bn();return K(()=>{var n,r;return(r=(n=t==null?void 0:t.proxy)==null?void 0:n.$props)==null?void 0:r[e]})},ma=(e,t={})=>{const n=X(void 0),r=t.prop?n:D5e("size"),o=t.global?n:Hxe(),a=t.form?{size:void 0}:kt(__,void 0),i=t.formItem?{size:void 0}:kt(Bh,void 0);return K(()=>r.value||b(e)||(i==null?void 0:i.size)||(a==null?void 0:a.size)||o.value||"")},ns=e=>{const t=D5e("disabled"),n=kt(__,void 0);return K(()=>t.value||b(e)||(n==null?void 0:n.disabled)||!1)},Rst='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',Nst=e=>getComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,Xfe=e=>Array.from(e.querySelectorAll(Rst)).filter(t=>BD(t)&&Nst(t)),BD=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true")return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},jF=function(e,t,...n){let r;t.includes("mouse")||t.includes("click")?r="MouseEvents":t.includes("key")?r="KeyboardEvent":r="HTMLEvents";const o=document.createEvent(r);return o.initEvent(t,...n),e.dispatchEvent(o),e},E5e=e=>!e.getAttribute("aria-owns"),k5e=(e,t,n)=>{const{parentNode:r}=e;if(!r)return null;const o=r.querySelectorAll(n),a=Array.prototype.indexOf.call(o,e);return o[a+t]||null},HF=e=>{e&&(e.focus(),!E5e(e)&&e.click())};function t1(e,{beforeFocus:t,afterFocus:n,beforeBlur:r,afterBlur:o}={}){const a=bn(),{emit:i}=a,s=Tr(),l=ns(),u=X(!1),c=h=>{Rt(t)&&t(h)||u.value||(u.value=!0,i("focus",h),n==null||n())},d=h=>{var g;Rt(r)&&r(h)||h.relatedTarget&&((g=s.value)!=null&&g.contains(h.relatedTarget))||(u.value=!1,i("blur",h),o==null||o())},f=h=>{var g,p;(g=s.value)!=null&&g.contains(document.activeElement)&&s.value!==document.activeElement||BD(h.target)||l.value||(p=e.value)==null||p.focus()};return Ze([s,l],([h,g])=>{h&&(g?h.removeAttribute("tabindex"):h.setAttribute("tabindex","-1"))}),xr(s,"focus",c,!0),xr(s,"blur",d,!0),xr(s,"click",f,!0),{isFocused:u,wrapperRef:s,handleFocus:c,handleBlur:d}}const Lst=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function vT({afterComposition:e,emit:t}){const n=X(!1),r=s=>{t==null||t("compositionstart",s),n.value=!0},o=s=>{var l;t==null||t("compositionupdate",s);const u=(l=s.target)==null?void 0:l.value,c=u[u.length-1]||"";n.value=!Lst(c)},a=s=>{t==null||t("compositionend",s),n.value&&(n.value=!1,It(()=>e(s)))};return{isComposing:n,handleComposition:s=>{s.type==="compositionend"?a(s):o(s)},handleCompositionStart:r,handleCompositionUpdate:o,handleCompositionEnd:a}}function Ust(e){let t;function n(){if(e.value==null)return;const{selectionStart:o,selectionEnd:a,value:i}=e.value;if(o==null||a==null)return;const s=i.slice(0,Math.max(0,o)),l=i.slice(Math.max(0,a));t={selectionStart:o,selectionEnd:a,value:i,beforeTxt:s,afterTxt:l}}function r(){if(e.value==null||t==null)return;const{value:o}=e.value,{beforeTxt:a,afterTxt:i,selectionStart:s}=t;if(a==null||i==null||s==null)return;let l=o.length;if(o.endsWith(i))l=o.length-i.length;else if(o.startsWith(a))l=a.length;else{const u=a[s-1],c=o.indexOf(u,s-1);c!==-1&&(l=c+1)}e.value.setSelectionRange(l,l)}return[n,r]}const Vst="ElInput",zst=ne({name:Vst,inheritAttrs:!1}),jst=ne({...zst,props:nre,emits:Mst,setup(e,{expose:t,emit:n}){const r=e,o=Ug(),a=gT(),i=La(),s=K(()=>[r.type==="textarea"?p.b():g.b(),g.m(f.value),g.is("disabled",h.value),g.is("exceed",B.value),{[g.b("group")]:i.prepend||i.append,[g.m("prefix")]:i.prefix||r.prefixIcon,[g.m("suffix")]:i.suffix||r.suffixIcon||r.clearable||r.showPassword,[g.bm("suffix","password-clear")]:L.value&&V.value,[g.b("hidden")]:r.type==="hidden"},o.class]),l=K(()=>[g.e("wrapper"),g.is("focus",O.value)]),{form:u,formItem:c}=ws(),{inputId:d}=vd(r,{formItemContext:c}),f=ma(),h=ns(),g=nt("input"),p=nt("textarea"),m=Tr(),v=Tr(),y=X(!1),_=X(!1),C=X(),S=Tr(r.inputStyle),E=K(()=>m.value||v.value),{wrapperRef:k,isFocused:O,handleFocus:T,handleBlur:P}=t1(E,{beforeFocus(){return h.value},afterBlur(){var ve;r.validateEvent&&((ve=c==null?void 0:c.validate)==null||ve.call(c,"blur").catch(Ce=>void 0))}}),U=K(()=>{var ve;return(ve=u==null?void 0:u.statusIcon)!=null?ve:!1}),F=K(()=>(c==null?void 0:c.validateState)||""),H=K(()=>F.value&&$L[F.value]),R=K(()=>_.value?db:u5e),z=K(()=>[o.style]),M=K(()=>[r.inputStyle,S.value,{resize:r.resize}]),N=K(()=>ni(r.modelValue)?"":String(r.modelValue)),L=K(()=>r.clearable&&!h.value&&!r.readonly&&!!N.value&&(O.value||y.value)),V=K(()=>r.showPassword&&!h.value&&!!N.value),Y=K(()=>r.showWordLimit&&!!r.maxlength&&(r.type==="text"||r.type==="textarea")&&!h.value&&!r.readonly&&!r.showPassword),$=K(()=>N.value.length),B=K(()=>!!Y.value&&$.value>Number(r.maxlength)),W=K(()=>!!i.suffix||!!r.suffixIcon||L.value||r.showPassword||Y.value||!!F.value&&U.value),[J,oe]=Ust(m);co(v,ve=>{if(de(),!Y.value||r.resize!=="both")return;const Ce=ve[0],{width:ze}=Ce.contentRect;C.value={right:`calc(100% - ${ze+15+6}px)`}});const ie=()=>{const{type:ve,autosize:Ce}=r;if(!(!Nn||ve!=="textarea"||!v.value))if(Ce){const ze=vn(Ce)?Ce.minRows:void 0,at=vn(Ce)?Ce.maxRows:void 0,bt=Gfe(v.value,ze,at);S.value={overflowY:"hidden",...bt},It(()=>{v.value.offsetHeight,S.value=bt})}else S.value={minHeight:Gfe(v.value).minHeight}},de=(ve=>{let Ce=!1;return()=>{var ze;if(Ce||!r.autosize)return;((ze=v.value)==null?void 0:ze.offsetParent)===null||(ve(),Ce=!0)}})(ie),we=()=>{const ve=E.value,Ce=r.formatter?r.formatter(N.value):N.value;!ve||ve.value===Ce||(ve.value=Ce)},Be=async ve=>{J();let{value:Ce}=ve.target;if(r.formatter&&r.parser&&(Ce=r.parser(Ce)),!ae.value){if(Ce===N.value){we();return}n(en,Ce),n(Ea,Ce),await It(),we(),oe()}},ke=ve=>{let{value:Ce}=ve.target;r.formatter&&r.parser&&(Ce=r.parser(Ce)),n(En,Ce)},{isComposing:ae,handleCompositionStart:le,handleCompositionUpdate:q,handleCompositionEnd:pe}=vT({emit:n,afterComposition:Be}),he=()=>{J(),_.value=!_.value,setTimeout(oe)},re=()=>{var ve;return(ve=E.value)==null?void 0:ve.focus()},ue=()=>{var ve;return(ve=E.value)==null?void 0:ve.blur()},_e=ve=>{y.value=!1,n("mouseleave",ve)},Pe=ve=>{y.value=!0,n("mouseenter",ve)},Ae=ve=>{n("keydown",ve)},Ee=()=>{var ve;(ve=E.value)==null||ve.select()},ye=()=>{n(en,""),n(En,""),n("clear"),n(Ea,"")};return Ze(()=>r.modelValue,()=>{var ve;It(()=>ie()),r.validateEvent&&((ve=c==null?void 0:c.validate)==null||ve.call(c,"change").catch(Ce=>void 0))}),Ze(N,()=>we()),Ze(()=>r.type,async()=>{await It(),we(),ie()}),Kt(()=>{!r.formatter&&r.parser,we(),It(ie)}),t({input:m,textarea:v,ref:E,textareaStyle:M,autosize:tr(r,"autosize"),isComposing:ae,focus:re,blur:ue,select:Ee,clear:ye,resizeTextarea:ie}),(ve,Ce)=>(I(),j("div",{class:ee([b(s),{[b(g).bm("group","append")]:ve.$slots.append,[b(g).bm("group","prepend")]:ve.$slots.prepend}]),style:Nt(b(z)),onMouseenter:Pe,onMouseleave:_e},[be(" input "),ve.type!=="textarea"?(I(),j(tt,{key:0},[be(" prepend slot "),ve.$slots.prepend?(I(),j("div",{key:0,class:ee(b(g).be("group","prepend"))},[Ne(ve.$slots,"prepend")],2)):be("v-if",!0),w("div",{ref_key:"wrapperRef",ref:k,class:ee(b(l))},[be(" prefix slot "),ve.$slots.prefix||ve.prefixIcon?(I(),j("span",{key:0,class:ee(b(g).e("prefix"))},[w("span",{class:ee(b(g).e("prefix-inner"))},[Ne(ve.$slots,"prefix"),ve.prefixIcon?(I(),Oe(b(Tt),{key:0,class:ee(b(g).e("icon"))},{default:A(()=>[(I(),Oe(_n(ve.prefixIcon)))]),_:1},8,["class"])):be("v-if",!0)],2)],2)):be("v-if",!0),w("input",Dn({id:b(d),ref_key:"input",ref:m,class:b(g).e("inner")},b(a),{minlength:ve.minlength,maxlength:ve.maxlength,type:ve.showPassword?_.value?"text":"password":ve.type,disabled:b(h),readonly:ve.readonly,autocomplete:ve.autocomplete,tabindex:ve.tabindex,"aria-label":ve.ariaLabel,placeholder:ve.placeholder,style:ve.inputStyle,form:ve.form,autofocus:ve.autofocus,role:ve.containerRole,onCompositionstart:b(le),onCompositionupdate:b(q),onCompositionend:b(pe),onInput:Be,onChange:ke,onKeydown:Ae}),null,16,["id","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","onCompositionstart","onCompositionupdate","onCompositionend"]),be(" suffix slot "),b(W)?(I(),j("span",{key:1,class:ee(b(g).e("suffix"))},[w("span",{class:ee(b(g).e("suffix-inner"))},[!b(L)||!b(V)||!b(Y)?(I(),j(tt,{key:0},[Ne(ve.$slots,"suffix"),ve.suffixIcon?(I(),Oe(b(Tt),{key:0,class:ee(b(g).e("icon"))},{default:A(()=>[(I(),Oe(_n(ve.suffixIcon)))]),_:1},8,["class"])):be("v-if",!0)],64)):be("v-if",!0),b(L)?(I(),Oe(b(Tt),{key:1,class:ee([b(g).e("icon"),b(g).e("clear")]),onMousedown:zt(b(fr),["prevent"]),onClick:ye},{default:A(()=>[D(b(Yh))]),_:1},8,["class","onMousedown"])):be("v-if",!0),b(V)?(I(),Oe(b(Tt),{key:2,class:ee([b(g).e("icon"),b(g).e("password")]),onClick:he},{default:A(()=>[(I(),Oe(_n(b(R))))]),_:1},8,["class"])):be("v-if",!0),b(Y)?(I(),j("span",{key:3,class:ee(b(g).e("count"))},[w("span",{class:ee(b(g).e("count-inner"))},se(b($))+" / "+se(ve.maxlength),3)],2)):be("v-if",!0),b(F)&&b(H)&&b(U)?(I(),Oe(b(Tt),{key:4,class:ee([b(g).e("icon"),b(g).e("validateIcon"),b(g).is("loading",b(F)==="validating")])},{default:A(()=>[(I(),Oe(_n(b(H))))]),_:1},8,["class"])):be("v-if",!0)],2)],2)):be("v-if",!0)],2),be(" append slot "),ve.$slots.append?(I(),j("div",{key:1,class:ee(b(g).be("group","append"))},[Ne(ve.$slots,"append")],2)):be("v-if",!0)],64)):(I(),j(tt,{key:1},[be(" textarea "),w("textarea",Dn({id:b(d),ref_key:"textarea",ref:v,class:[b(p).e("inner"),b(g).is("focus",b(O))]},b(a),{minlength:ve.minlength,maxlength:ve.maxlength,tabindex:ve.tabindex,disabled:b(h),readonly:ve.readonly,autocomplete:ve.autocomplete,style:b(M),"aria-label":ve.ariaLabel,placeholder:ve.placeholder,form:ve.form,autofocus:ve.autofocus,rows:ve.rows,role:ve.containerRole,onCompositionstart:b(le),onCompositionupdate:b(q),onCompositionend:b(pe),onInput:Be,onFocus:b(T),onBlur:b(P),onChange:ke,onKeydown:Ae}),null,16,["id","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","onCompositionstart","onCompositionupdate","onCompositionend","onFocus","onBlur"]),b(Y)?(I(),j("span",{key:0,style:Nt(C.value),class:ee(b(g).e("count"))},se(b($))+" / "+se(ve.maxlength),7)):be("v-if",!0)],64))],38))}});var Hst=vt(jst,[["__file","input.vue"]]);const fo=dn(Hst),Y_=4,A5e={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},Wst=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),ore=Symbol("scrollbarContextKey"),qst=ht({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),Kst="Thumb",Gst=ne({__name:"thumb",props:qst,setup(e){const t=e,n=kt(ore),r=nt("scrollbar");n||oa(Kst,"can not inject scrollbar context");const o=X(),a=X(),i=X({}),s=X(!1);let l=!1,u=!1,c=0,d=0,f=Nn?document.onselectstart:null;const h=K(()=>A5e[t.vertical?"vertical":"horizontal"]),g=K(()=>Wst({size:t.size,move:t.move,bar:h.value})),p=K(()=>o.value[h.value.offset]**2/n.wrapElement[h.value.scrollSize]/t.ratio/a.value[h.value.offset]),m=O=>{var T;if(O.stopPropagation(),O.ctrlKey||[1,2].includes(O.button))return;(T=window.getSelection())==null||T.removeAllRanges(),y(O);const P=O.currentTarget;P&&(i.value[h.value.axis]=P[h.value.offset]-(O[h.value.client]-P.getBoundingClientRect()[h.value.direction]))},v=O=>{if(!a.value||!o.value||!n.wrapElement)return;const T=Math.abs(O.target.getBoundingClientRect()[h.value.direction]-O[h.value.client]),P=a.value[h.value.offset]/2,U=(T-P)*100*p.value/o.value[h.value.offset];n.wrapElement[h.value.scroll]=U*n.wrapElement[h.value.scrollSize]/100},y=O=>{O.stopImmediatePropagation(),l=!0,c=n.wrapElement.scrollHeight,d=n.wrapElement.scrollWidth,document.addEventListener("mousemove",_),document.addEventListener("mouseup",C),f=document.onselectstart,document.onselectstart=()=>!1},_=O=>{if(!o.value||!a.value||l===!1)return;const T=i.value[h.value.axis];if(!T)return;const P=(o.value.getBoundingClientRect()[h.value.direction]-O[h.value.client])*-1,U=a.value[h.value.offset]-T,F=(P-U)*100*p.value/o.value[h.value.offset];h.value.scroll==="scrollLeft"?n.wrapElement[h.value.scroll]=F*d/100:n.wrapElement[h.value.scroll]=F*c/100},C=()=>{l=!1,i.value[h.value.axis]=0,document.removeEventListener("mousemove",_),document.removeEventListener("mouseup",C),k(),u&&(s.value=!1)},S=()=>{u=!1,s.value=!!t.size},E=()=>{u=!0,s.value=l};Ar(()=>{k(),document.removeEventListener("mouseup",C)});const k=()=>{document.onselectstart!==f&&(document.onselectstart=f)};return xr(tr(n,"scrollbarElement"),"mousemove",S),xr(tr(n,"scrollbarElement"),"mouseleave",E),(O,T)=>(I(),Oe(xi,{name:b(r).b("fade"),persisted:""},{default:A(()=>[rn(w("div",{ref_key:"instance",ref:o,class:ee([b(r).e("bar"),b(r).is(b(h).key)]),onMousedown:v,onClick:zt(()=>{},["stop"])},[w("div",{ref_key:"thumb",ref:a,class:ee(b(r).e("thumb")),style:Nt(b(g)),onMousedown:m},null,38)],42,["onClick"]),[[Pn,O.always||s.value]])]),_:1},8,["name"]))}});var Jfe=vt(Gst,[["__file","thumb.vue"]]);const Yst=ht({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),Xst=ne({__name:"bar",props:Yst,setup(e,{expose:t}){const n=e,r=kt(ore),o=X(0),a=X(0),i=X(""),s=X(""),l=X(1),u=X(1);return t({handleScroll:f=>{if(f){const h=f.offsetHeight-Y_,g=f.offsetWidth-Y_;a.value=f.scrollTop*100/h*l.value,o.value=f.scrollLeft*100/g*u.value}},update:()=>{const f=r==null?void 0:r.wrapElement;if(!f)return;const h=f.offsetHeight-Y_,g=f.offsetWidth-Y_,p=h**2/f.scrollHeight,m=g**2/f.scrollWidth,v=Math.max(p,n.minSize),y=Math.max(m,n.minSize);l.value=p/(h-p)/(v/(h-v)),u.value=m/(g-m)/(y/(g-y)),s.value=v+Y_(I(),j(tt,null,[D(Jfe,{move:o.value,ratio:u.value,size:i.value,always:f.always},null,8,["move","ratio","size","always"]),D(Jfe,{move:a.value,ratio:l.value,size:s.value,vertical:"",always:f.always},null,8,["move","ratio","size","always"])],64))}});var Jst=vt(Xst,[["__file","bar.vue"]]);const Zst=ht({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:{type:Boolean,default:!1},wrapStyle:{type:$e([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...ts(["ariaLabel","ariaOrientation"])}),T5e={"end-reached":e=>["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Lt)},Qst="ElScrollbar",elt=ne({name:Qst}),tlt=ne({...elt,props:Zst,emits:T5e,setup(e,{expose:t,emit:n}){const r=e,o=nt("scrollbar");let a,i,s=0,l=0,u="";const c=X(),d=X(),f=X(),h=X(),g=K(()=>{const E={};return r.height&&(E.height=Io(r.height)),r.maxHeight&&(E.maxHeight=Io(r.maxHeight)),[r.wrapStyle,E]}),p=K(()=>[r.wrapClass,o.e("wrap"),{[o.em("wrap","hidden-default")]:!r.native}]),m=K(()=>[o.e("view"),r.viewClass]),v=()=>{var E;if(d.value){(E=h.value)==null||E.handleScroll(d.value);const k=s,O=l;s=d.value.scrollTop,l=d.value.scrollLeft;const T={bottom:s+d.value.clientHeight>=d.value.scrollHeight,top:s<=0&&k!==0,right:l+d.value.clientWidth>=d.value.scrollWidth&&O!==l,left:l<=0&&O!==0};k!==s&&(u=s>k?"bottom":"top"),O!==l&&(u=l>O?"right":"left"),n("scroll",{scrollTop:s,scrollLeft:l}),T[u]&&n("end-reached",u)}};function y(E,k){vn(E)?d.value.scrollTo(E):Lt(E)&&Lt(k)&&d.value.scrollTo(E,k)}const _=E=>{Lt(E)&&(d.value.scrollTop=E)},C=E=>{Lt(E)&&(d.value.scrollLeft=E)},S=()=>{var E;(E=h.value)==null||E.update()};return Ze(()=>r.noresize,E=>{E?(a==null||a(),i==null||i()):({stop:a}=co(f,S),i=xr("resize",S))},{immediate:!0}),Ze(()=>[r.maxHeight,r.height],()=>{r.native||It(()=>{var E;S(),d.value&&((E=h.value)==null||E.handleScroll(d.value))})}),Fn(ore,Bn({scrollbarElement:c,wrapElement:d})),dL(()=>{d.value&&(d.value.scrollTop=s,d.value.scrollLeft=l)}),Kt(()=>{r.native||It(()=>{S()})}),gf(()=>S()),t({wrapRef:d,update:S,scrollTo:y,setScrollTop:_,setScrollLeft:C,handleScroll:v}),(E,k)=>(I(),j("div",{ref_key:"scrollbarRef",ref:c,class:ee(b(o).b())},[w("div",{ref_key:"wrapRef",ref:d,class:ee(b(p)),style:Nt(b(g)),tabindex:E.tabindex,onScroll:v},[(I(),Oe(_n(E.tag),{id:E.id,ref_key:"resizeRef",ref:f,class:ee(b(m)),style:Nt(E.viewStyle),role:E.role,"aria-label":E.ariaLabel,"aria-orientation":E.ariaOrientation},{default:A(()=>[Ne(E.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),E.native?be("v-if",!0):(I(),Oe(Jst,{key:0,ref_key:"barRef",ref:h,always:E.always,"min-size":E.minSize},null,8,["always","min-size"]))],2))}});var nlt=vt(tlt,[["__file","scrollbar.vue"]]);const id=dn(nlt),are=Symbol("popper"),O5e=Symbol("popperContent"),F5e=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],I5e=ht({role:{type:String,values:F5e,default:"tooltip"}}),rlt=ne({name:"ElPopper",inheritAttrs:!1}),olt=ne({...rlt,props:I5e,setup(e,{expose:t}){const n=e,r=X(),o=X(),a=X(),i=X(),s=K(()=>n.role),l={triggerRef:r,popperInstanceRef:o,contentRef:a,referenceRef:i,role:s};return t(l),Fn(are,l),(u,c)=>Ne(u.$slots,"default")}});var alt=vt(olt,[["__file","popper.vue"]]);const ilt=ne({name:"ElPopperArrow",inheritAttrs:!1}),slt=ne({...ilt,setup(e,{expose:t}){const n=nt("popper"),{arrowRef:r,arrowStyle:o}=kt(O5e,void 0);return Ar(()=>{r.value=void 0}),t({arrowRef:r}),(a,i)=>(I(),j("span",{ref_key:"arrowRef",ref:r,class:ee(b(n).e("arrow")),style:Nt(b(o)),"data-popper-arrow":""},null,6))}});var llt=vt(slt,[["__file","arrow.vue"]]);const M5e=ht({virtualRef:{type:$e(Object)},virtualTriggering:Boolean,onMouseenter:{type:$e(Function)},onMouseleave:{type:$e(Function)},onClick:{type:$e(Function)},onKeydown:{type:$e(Function)},onFocus:{type:$e(Function)},onBlur:{type:$e(Function)},onContextmenu:{type:$e(Function)},id:String,open:Boolean}),P5e=Symbol("elForwardRef"),ult=e=>{Fn(P5e,{setForwardRef:n=>{e.value=n}})},clt=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),dlt="ElOnlyChild",$5e=ne({name:dlt,setup(e,{slots:t,attrs:n}){var r;const o=kt(P5e),a=clt((r=o==null?void 0:o.setForwardRef)!=null?r:fr);return()=>{var i;const s=(i=t.default)==null?void 0:i.call(t,n);if(!s||s.length>1)return null;const l=B5e(s);return l?rn(Eg(l,n),[[a]]):null}}});function B5e(e){if(!e)return null;const t=e;for(const n of t){if(vn(n))switch(n.type){case da:continue;case uC:case"svg":return Zfe(n);case tt:return B5e(n.children);default:return n}return Zfe(n)}return null}function Zfe(e){const t=nt("only-child");return D("span",{class:t.e("content")},[e])}const flt=ne({name:"ElPopperTrigger",inheritAttrs:!1}),hlt=ne({...flt,props:M5e,setup(e,{expose:t}){const n=e,{role:r,triggerRef:o}=kt(are,void 0);ult(o);const a=K(()=>s.value?n.id:void 0),i=K(()=>{if(r&&r.value==="tooltip")return n.open&&n.id?n.id:void 0}),s=K(()=>{if(r&&r.value!=="tooltip")return r.value}),l=K(()=>s.value?`${n.open}`:void 0);let u;const c=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return Kt(()=>{Ze(()=>n.virtualRef,d=>{d&&(o.value=ji(d))},{immediate:!0}),Ze(o,(d,f)=>{u==null||u(),u=void 0,_l(d)&&(c.forEach(h=>{var g;const p=n[h];p&&(d.addEventListener(h.slice(2).toLowerCase(),p),(g=f==null?void 0:f.removeEventListener)==null||g.call(f,h.slice(2).toLowerCase(),p))}),BD(d)&&(u=Ze([a,i,s,l],h=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((g,p)=>{ni(h[p])?d.removeAttribute(g):d.setAttribute(g,h[p])})},{immediate:!0}))),_l(f)&&BD(f)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(h=>f.removeAttribute(h))},{immediate:!0})}),Ar(()=>{if(u==null||u(),u=void 0,o.value&&_l(o.value)){const d=o.value;c.forEach(f=>{const h=n[f];h&&d.removeEventListener(f.slice(2).toLowerCase(),h)}),o.value=void 0}}),t({triggerRef:o}),(d,f)=>d.virtualTriggering?be("v-if",!0):(I(),Oe(b($5e),Dn({key:0},d.$attrs,{"aria-controls":b(a),"aria-describedby":b(i),"aria-expanded":b(l),"aria-haspopup":b(s)}),{default:A(()=>[Ne(d.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var plt=vt(hlt,[["__file","trigger.vue"]]);const qz="focus-trap.focus-after-trapped",Kz="focus-trap.focus-after-released",glt="focus-trap.focusout-prevented",Qfe={cancelable:!0,bubbles:!1},vlt={cancelable:!0,bubbles:!1},ehe="focusAfterTrapped",the="focusAfterReleased",ire=Symbol("elFocusTrap"),sre=X(),BL=X(0),lre=X(0);let K7=0;const R5e=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0||r===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},nhe=(e,t)=>{for(const n of e)if(!mlt(n,t))return n},mlt=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},ylt=e=>{const t=R5e(e),n=nhe(t,e),r=nhe(t.reverse(),e);return[n,r]},blt=e=>e instanceof HTMLInputElement&&"select"in e,yp=(e,t)=>{if(e&&e.focus){const n=document.activeElement;let r=!1;_l(e)&&!BD(e)&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),r=!0),e.focus({preventScroll:!0}),lre.value=window.performance.now(),e!==n&&blt(e)&&t&&e.select(),_l(e)&&r&&e.removeAttribute("tabindex")}};function rhe(e,t){const n=[...e],r=e.indexOf(t);return r!==-1&&n.splice(r,1),n}const _lt=()=>{let e=[];return{push:r=>{const o=e[0];o&&r!==o&&o.pause(),e=rhe(e,r),e.unshift(r)},remove:r=>{var o,a;e=rhe(e,r),(a=(o=e[0])==null?void 0:o.resume)==null||a.call(o)}}},wlt=(e,t=!1)=>{const n=document.activeElement;for(const r of e)if(yp(r,t),document.activeElement!==n)return},ohe=_lt(),Clt=()=>BL.value>lre.value,G7=()=>{sre.value="pointer",BL.value=window.performance.now()},ahe=()=>{sre.value="keyboard",BL.value=window.performance.now()},xlt=()=>(Kt(()=>{K7===0&&(document.addEventListener("mousedown",G7),document.addEventListener("touchstart",G7),document.addEventListener("keydown",ahe)),K7++}),Ar(()=>{K7--,K7<=0&&(document.removeEventListener("mousedown",G7),document.removeEventListener("touchstart",G7),document.removeEventListener("keydown",ahe))}),{focusReason:sre,lastUserFocusTimestamp:BL,lastAutomatedFocusTimestamp:lre}),Y7=e=>new CustomEvent(glt,{...vlt,detail:e}),St={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"};let H4=[];const ihe=e=>{e.code===St.esc&&H4.forEach(t=>t(e))},Slt=e=>{Kt(()=>{H4.length===0&&document.addEventListener("keydown",ihe),Nn&&H4.push(e)}),Ar(()=>{H4=H4.filter(t=>t!==e),H4.length===0&&Nn&&document.removeEventListener("keydown",ihe)})},Dlt=ne({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[ehe,the,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const n=X();let r,o;const{focusReason:a}=xlt();Slt(g=>{e.trapped&&!i.paused&&t("release-requested",g)});const i={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},s=g=>{if(!e.loop&&!e.trapped||i.paused)return;const{code:p,altKey:m,ctrlKey:v,metaKey:y,currentTarget:_,shiftKey:C}=g,{loop:S}=e,E=p===St.tab&&!m&&!v&&!y,k=document.activeElement;if(E&&k){const O=_,[T,P]=ylt(O);if(T&&P){if(!C&&k===P){const F=Y7({focusReason:a.value});t("focusout-prevented",F),F.defaultPrevented||(g.preventDefault(),S&&yp(T,!0))}else if(C&&[T,O].includes(k)){const F=Y7({focusReason:a.value});t("focusout-prevented",F),F.defaultPrevented||(g.preventDefault(),S&&yp(P,!0))}}else if(k===O){const F=Y7({focusReason:a.value});t("focusout-prevented",F),F.defaultPrevented||g.preventDefault()}}};Fn(ire,{focusTrapRef:n,onKeydown:s}),Ze(()=>e.focusTrapEl,g=>{g&&(n.value=g)},{immediate:!0}),Ze([n],([g],[p])=>{g&&(g.addEventListener("keydown",s),g.addEventListener("focusin",c),g.addEventListener("focusout",d)),p&&(p.removeEventListener("keydown",s),p.removeEventListener("focusin",c),p.removeEventListener("focusout",d))});const l=g=>{t(ehe,g)},u=g=>t(the,g),c=g=>{const p=b(n);if(!p)return;const m=g.target,v=g.relatedTarget,y=m&&p.contains(m);e.trapped||v&&p.contains(v)||(r=v),y&&t("focusin",g),!i.paused&&e.trapped&&(y?o=m:yp(o,!0))},d=g=>{const p=b(n);if(!(i.paused||!p))if(e.trapped){const m=g.relatedTarget;!ni(m)&&!p.contains(m)&&setTimeout(()=>{if(!i.paused&&e.trapped){const v=Y7({focusReason:a.value});t("focusout-prevented",v),v.defaultPrevented||yp(o,!0)}},0)}else{const m=g.target;m&&p.contains(m)||t("focusout",g)}};async function f(){await It();const g=b(n);if(g){ohe.push(i);const p=g.contains(document.activeElement)?r:document.activeElement;if(r=p,!g.contains(p)){const v=new Event(qz,Qfe);g.addEventListener(qz,l),g.dispatchEvent(v),v.defaultPrevented||It(()=>{let y=e.focusStartEl;$t(y)||(yp(y),document.activeElement!==y&&(y="first")),y==="first"&&wlt(R5e(g),!0),(document.activeElement===p||y==="container")&&yp(g)})}}}function h(){const g=b(n);if(g){g.removeEventListener(qz,l);const p=new CustomEvent(Kz,{...Qfe,detail:{focusReason:a.value}});g.addEventListener(Kz,u),g.dispatchEvent(p),!p.defaultPrevented&&(a.value=="keyboard"||!Clt()||g.contains(document.activeElement))&&yp(r??document.body),g.removeEventListener(Kz,u),ohe.remove(i)}}return Kt(()=>{e.trapped&&f(),Ze(()=>e.trapped,g=>{g?f():h()})}),Ar(()=>{e.trapped&&h(),n.value&&(n.value.removeEventListener("keydown",s),n.value.removeEventListener("focusin",c),n.value.removeEventListener("focusout",d),n.value=void 0)}),{onKeydown:s}}});function Elt(e,t,n,r,o,a){return Ne(e.$slots,"default",{handleKeydown:e.onKeydown})}var yC=vt(Dlt,[["render",Elt],["__file","focus-trap.vue"]]),Gl="top",sd="bottom",ld="right",Yl="left",ure="auto",mT=[Gl,sd,ld,Yl],d8="start",RD="end",klt="clippingParents",N5e="viewport",ix="popper",Alt="reference",she=mT.reduce(function(e,t){return e.concat([t+"-"+d8,t+"-"+RD])},[]),Hg=[].concat(mT,[ure]).reduce(function(e,t){return e.concat([t,t+"-"+d8,t+"-"+RD])},[]),Tlt="beforeRead",Olt="read",Flt="afterRead",Ilt="beforeMain",Mlt="main",Plt="afterMain",$lt="beforeWrite",Blt="write",Rlt="afterWrite",Nlt=[Tlt,Olt,Flt,Ilt,Mlt,Plt,$lt,Blt,Rlt];function Rh(e){return e?(e.nodeName||"").toLowerCase():null}function yf(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function f8(e){var t=yf(e).Element;return e instanceof t||e instanceof Element}function Zc(e){var t=yf(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function cre(e){if(typeof ShadowRoot>"u")return!1;var t=yf(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Llt(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},o=t.attributes[n]||{},a=t.elements[n];!Zc(a)||!Rh(a)||(Object.assign(a.style,r),Object.keys(o).forEach(function(i){var s=o[i];s===!1?a.removeAttribute(i):a.setAttribute(i,s===!0?"":s)}))})}function Ult(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var o=t.elements[r],a=t.attributes[r]||{},i=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),s=i.reduce(function(l,u){return l[u]="",l},{});!Zc(o)||!Rh(o)||(Object.assign(o.style,s),Object.keys(a).forEach(function(l){o.removeAttribute(l)}))})}}var L5e={name:"applyStyles",enabled:!0,phase:"write",fn:Llt,effect:Ult,requires:["computeStyles"]};function Eh(e){return e.split("-")[0]}var fb=Math.max,jM=Math.min,h8=Math.round;function p8(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),r=1,o=1;if(Zc(e)&&t){var a=e.offsetHeight,i=e.offsetWidth;i>0&&(r=h8(n.width)/i||1),a>0&&(o=h8(n.height)/a||1)}return{width:n.width/r,height:n.height/o,top:n.top/o,right:n.right/r,bottom:n.bottom/o,left:n.left/r,x:n.left/r,y:n.top/o}}function dre(e){var t=p8(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function U5e(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&cre(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Tg(e){return yf(e).getComputedStyle(e)}function Vlt(e){return["table","td","th"].indexOf(Rh(e))>=0}function n1(e){return((f8(e)?e.ownerDocument:e.document)||window.document).documentElement}function RL(e){return Rh(e)==="html"?e:e.assignedSlot||e.parentNode||(cre(e)?e.host:null)||n1(e)}function lhe(e){return!Zc(e)||Tg(e).position==="fixed"?null:e.offsetParent}function zlt(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&Zc(e)){var r=Tg(e);if(r.position==="fixed")return null}var o=RL(e);for(cre(o)&&(o=o.host);Zc(o)&&["html","body"].indexOf(Rh(o))<0;){var a=Tg(o);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return o;o=o.parentNode}return null}function yT(e){for(var t=yf(e),n=lhe(e);n&&Vlt(n)&&Tg(n).position==="static";)n=lhe(n);return n&&(Rh(n)==="html"||Rh(n)==="body"&&Tg(n).position==="static")?t:n||zlt(e)||t}function fre(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function RS(e,t,n){return fb(e,jM(t,n))}function jlt(e,t,n){var r=RS(e,t,n);return r>n?n:r}function V5e(){return{top:0,right:0,bottom:0,left:0}}function z5e(e){return Object.assign({},V5e(),e)}function j5e(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var Hlt=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,z5e(typeof e!="number"?e:j5e(e,mT))};function Wlt(e){var t,n=e.state,r=e.name,o=e.options,a=n.elements.arrow,i=n.modifiersData.popperOffsets,s=Eh(n.placement),l=fre(s),u=[Yl,ld].indexOf(s)>=0,c=u?"height":"width";if(!(!a||!i)){var d=Hlt(o.padding,n),f=dre(a),h=l==="y"?Gl:Yl,g=l==="y"?sd:ld,p=n.rects.reference[c]+n.rects.reference[l]-i[l]-n.rects.popper[c],m=i[l]-n.rects.reference[l],v=yT(a),y=v?l==="y"?v.clientHeight||0:v.clientWidth||0:0,_=p/2-m/2,C=d[h],S=y-f[c]-d[g],E=y/2-f[c]/2+_,k=RS(C,E,S),O=l;n.modifiersData[r]=(t={},t[O]=k,t.centerOffset=k-E,t)}}function qlt(e){var t=e.state,n=e.options,r=n.element,o=r===void 0?"[data-popper-arrow]":r;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||!U5e(t.elements.popper,o)||(t.elements.arrow=o))}var Klt={name:"arrow",enabled:!0,phase:"main",fn:Wlt,effect:qlt,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function g8(e){return e.split("-")[1]}var Glt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ylt(e){var t=e.x,n=e.y,r=window,o=r.devicePixelRatio||1;return{x:h8(t*o)/o||0,y:h8(n*o)/o||0}}function uhe(e){var t,n=e.popper,r=e.popperRect,o=e.placement,a=e.variation,i=e.offsets,s=e.position,l=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,d=e.isFixed,f=i.x,h=f===void 0?0:f,g=i.y,p=g===void 0?0:g,m=typeof c=="function"?c({x:h,y:p}):{x:h,y:p};h=m.x,p=m.y;var v=i.hasOwnProperty("x"),y=i.hasOwnProperty("y"),_=Yl,C=Gl,S=window;if(u){var E=yT(n),k="clientHeight",O="clientWidth";if(E===yf(n)&&(E=n1(n),Tg(E).position!=="static"&&s==="absolute"&&(k="scrollHeight",O="scrollWidth")),E=E,o===Gl||(o===Yl||o===ld)&&a===RD){C=sd;var T=d&&E===S&&S.visualViewport?S.visualViewport.height:E[k];p-=T-r.height,p*=l?1:-1}if(o===Yl||(o===Gl||o===sd)&&a===RD){_=ld;var P=d&&E===S&&S.visualViewport?S.visualViewport.width:E[O];h-=P-r.width,h*=l?1:-1}}var U=Object.assign({position:s},u&&Glt),F=c===!0?Ylt({x:h,y:p}):{x:h,y:p};if(h=F.x,p=F.y,l){var H;return Object.assign({},U,(H={},H[C]=y?"0":"",H[_]=v?"0":"",H.transform=(S.devicePixelRatio||1)<=1?"translate("+h+"px, "+p+"px)":"translate3d("+h+"px, "+p+"px, 0)",H))}return Object.assign({},U,(t={},t[C]=y?p+"px":"",t[_]=v?h+"px":"",t.transform="",t))}function Xlt(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=r===void 0?!0:r,a=n.adaptive,i=a===void 0?!0:a,s=n.roundOffsets,l=s===void 0?!0:s,u={placement:Eh(t.placement),variation:g8(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,uhe(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,uhe(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var H5e={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Xlt,data:{}},X7={passive:!0};function Jlt(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,a=o===void 0?!0:o,i=r.resize,s=i===void 0?!0:i,l=yf(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&u.forEach(function(c){c.addEventListener("scroll",n.update,X7)}),s&&l.addEventListener("resize",n.update,X7),function(){a&&u.forEach(function(c){c.removeEventListener("scroll",n.update,X7)}),s&&l.removeEventListener("resize",n.update,X7)}}var W5e={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Jlt,data:{}},Zlt={left:"right",right:"left",bottom:"top",top:"bottom"};function WF(e){return e.replace(/left|right|bottom|top/g,function(t){return Zlt[t]})}var Qlt={start:"end",end:"start"};function che(e){return e.replace(/start|end/g,function(t){return Qlt[t]})}function hre(e){var t=yf(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function pre(e){return p8(n1(e)).left+hre(e).scrollLeft}function eut(e){var t=yf(e),n=n1(e),r=t.visualViewport,o=n.clientWidth,a=n.clientHeight,i=0,s=0;return r&&(o=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(i=r.offsetLeft,s=r.offsetTop)),{width:o,height:a,x:i+pre(e),y:s}}function tut(e){var t,n=n1(e),r=hre(e),o=(t=e.ownerDocument)==null?void 0:t.body,a=fb(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=fb(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+pre(e),l=-r.scrollTop;return Tg(o||n).direction==="rtl"&&(s+=fb(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:i,x:s,y:l}}function gre(e){var t=Tg(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function q5e(e){return["html","body","#document"].indexOf(Rh(e))>=0?e.ownerDocument.body:Zc(e)&&gre(e)?e:q5e(RL(e))}function NS(e,t){var n;t===void 0&&(t=[]);var r=q5e(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),a=yf(r),i=o?[a].concat(a.visualViewport||[],gre(r)?r:[]):r,s=t.concat(i);return o?s:s.concat(NS(RL(i)))}function IY(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function nut(e){var t=p8(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function dhe(e,t){return t===N5e?IY(eut(e)):f8(t)?nut(t):IY(tut(n1(e)))}function rut(e){var t=NS(RL(e)),n=["absolute","fixed"].indexOf(Tg(e).position)>=0,r=n&&Zc(e)?yT(e):e;return f8(r)?t.filter(function(o){return f8(o)&&U5e(o,r)&&Rh(o)!=="body"}):[]}function out(e,t,n){var r=t==="clippingParents"?rut(e):[].concat(t),o=[].concat(r,[n]),a=o[0],i=o.reduce(function(s,l){var u=dhe(e,l);return s.top=fb(u.top,s.top),s.right=jM(u.right,s.right),s.bottom=jM(u.bottom,s.bottom),s.left=fb(u.left,s.left),s},dhe(e,a));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function K5e(e){var t=e.reference,n=e.element,r=e.placement,o=r?Eh(r):null,a=r?g8(r):null,i=t.x+t.width/2-n.width/2,s=t.y+t.height/2-n.height/2,l;switch(o){case Gl:l={x:i,y:t.y-n.height};break;case sd:l={x:i,y:t.y+t.height};break;case ld:l={x:t.x+t.width,y:s};break;case Yl:l={x:t.x-n.width,y:s};break;default:l={x:t.x,y:t.y}}var u=o?fre(o):null;if(u!=null){var c=u==="y"?"height":"width";switch(a){case d8:l[u]=l[u]-(t[c]/2-n[c]/2);break;case RD:l[u]=l[u]+(t[c]/2-n[c]/2);break}}return l}function ND(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=r===void 0?e.placement:r,a=n.boundary,i=a===void 0?klt:a,s=n.rootBoundary,l=s===void 0?N5e:s,u=n.elementContext,c=u===void 0?ix:u,d=n.altBoundary,f=d===void 0?!1:d,h=n.padding,g=h===void 0?0:h,p=z5e(typeof g!="number"?g:j5e(g,mT)),m=c===ix?Alt:ix,v=e.rects.popper,y=e.elements[f?m:c],_=out(f8(y)?y:y.contextElement||n1(e.elements.popper),i,l),C=p8(e.elements.reference),S=K5e({reference:C,element:v,strategy:"absolute",placement:o}),E=IY(Object.assign({},v,S)),k=c===ix?E:C,O={top:_.top-k.top+p.top,bottom:k.bottom-_.bottom+p.bottom,left:_.left-k.left+p.left,right:k.right-_.right+p.right},T=e.modifiersData.offset;if(c===ix&&T){var P=T[o];Object.keys(O).forEach(function(U){var F=[ld,sd].indexOf(U)>=0?1:-1,H=[Gl,sd].indexOf(U)>=0?"y":"x";O[U]+=P[H]*F})}return O}function aut(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=n.boundary,a=n.rootBoundary,i=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,u=l===void 0?Hg:l,c=g8(r),d=c?s?she:she.filter(function(g){return g8(g)===c}):mT,f=d.filter(function(g){return u.indexOf(g)>=0});f.length===0&&(f=d);var h=f.reduce(function(g,p){return g[p]=ND(e,{placement:p,boundary:o,rootBoundary:a,padding:i})[Eh(p)],g},{});return Object.keys(h).sort(function(g,p){return h[g]-h[p]})}function iut(e){if(Eh(e)===ure)return[];var t=WF(e);return[che(e),t,che(t)]}function sut(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,a=o===void 0?!0:o,i=n.altAxis,s=i===void 0?!0:i,l=n.fallbackPlacements,u=n.padding,c=n.boundary,d=n.rootBoundary,f=n.altBoundary,h=n.flipVariations,g=h===void 0?!0:h,p=n.allowedAutoPlacements,m=t.options.placement,v=Eh(m),y=v===m,_=l||(y||!g?[WF(m)]:iut(m)),C=[m].concat(_).reduce(function(J,oe){return J.concat(Eh(oe)===ure?aut(t,{placement:oe,boundary:c,rootBoundary:d,padding:u,flipVariations:g,allowedAutoPlacements:p}):oe)},[]),S=t.rects.reference,E=t.rects.popper,k=new Map,O=!0,T=C[0],P=0;P=0,z=R?"width":"height",M=ND(t,{placement:U,boundary:c,rootBoundary:d,altBoundary:f,padding:u}),N=R?H?ld:Yl:H?sd:Gl;S[z]>E[z]&&(N=WF(N));var L=WF(N),V=[];if(a&&V.push(M[F]<=0),s&&V.push(M[N]<=0,M[L]<=0),V.every(function(J){return J})){T=U,O=!1;break}k.set(U,V)}if(O)for(var Y=g?3:1,$=function(J){var oe=C.find(function(ie){var Z=k.get(ie);if(Z)return Z.slice(0,J).every(function(de){return de})});if(oe)return T=oe,"break"},B=Y;B>0;B--){var W=$(B);if(W==="break")break}t.placement!==T&&(t.modifiersData[r]._skip=!0,t.placement=T,t.reset=!0)}}var lut={name:"flip",enabled:!0,phase:"main",fn:sut,requiresIfExists:["offset"],data:{_skip:!1}};function fhe(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function hhe(e){return[Gl,ld,sd,Yl].some(function(t){return e[t]>=0})}function uut(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,i=ND(t,{elementContext:"reference"}),s=ND(t,{altBoundary:!0}),l=fhe(i,r),u=fhe(s,o,a),c=hhe(l),d=hhe(u);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}var cut={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:uut};function dut(e,t,n){var r=Eh(e),o=[Yl,Gl].indexOf(r)>=0?-1:1,a=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,i=a[0],s=a[1];return i=i||0,s=(s||0)*o,[Yl,ld].indexOf(r)>=0?{x:s,y:i}:{x:i,y:s}}function fut(e){var t=e.state,n=e.options,r=e.name,o=n.offset,a=o===void 0?[0,0]:o,i=Hg.reduce(function(c,d){return c[d]=dut(d,t.rects,a),c},{}),s=i[t.placement],l=s.x,u=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=i}var hut={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:fut};function put(e){var t=e.state,n=e.name;t.modifiersData[n]=K5e({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var G5e={name:"popperOffsets",enabled:!0,phase:"read",fn:put,data:{}};function gut(e){return e==="x"?"y":"x"}function vut(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,a=o===void 0?!0:o,i=n.altAxis,s=i===void 0?!1:i,l=n.boundary,u=n.rootBoundary,c=n.altBoundary,d=n.padding,f=n.tether,h=f===void 0?!0:f,g=n.tetherOffset,p=g===void 0?0:g,m=ND(t,{boundary:l,rootBoundary:u,padding:d,altBoundary:c}),v=Eh(t.placement),y=g8(t.placement),_=!y,C=fre(v),S=gut(C),E=t.modifiersData.popperOffsets,k=t.rects.reference,O=t.rects.popper,T=typeof p=="function"?p(Object.assign({},t.rects,{placement:t.placement})):p,P=typeof T=="number"?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),U=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,F={x:0,y:0};if(E){if(a){var H,R=C==="y"?Gl:Yl,z=C==="y"?sd:ld,M=C==="y"?"height":"width",N=E[C],L=N+m[R],V=N-m[z],Y=h?-O[M]/2:0,$=y===d8?k[M]:O[M],B=y===d8?-O[M]:-k[M],W=t.elements.arrow,J=h&&W?dre(W):{width:0,height:0},oe=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:V5e(),ie=oe[R],Z=oe[z],de=RS(0,k[M],J[M]),we=_?k[M]/2-Y-de-ie-P.mainAxis:$-de-ie-P.mainAxis,Be=_?-k[M]/2+Y+de+Z+P.mainAxis:B+de+Z+P.mainAxis,ke=t.elements.arrow&&yT(t.elements.arrow),ae=ke?C==="y"?ke.clientTop||0:ke.clientLeft||0:0,le=(H=U==null?void 0:U[C])!=null?H:0,q=N+we-le-ae,pe=N+Be-le,he=RS(h?jM(L,q):L,N,h?fb(V,pe):V);E[C]=he,F[C]=he-N}if(s){var re,ue=C==="x"?Gl:Yl,_e=C==="x"?sd:ld,Pe=E[S],Ae=S==="y"?"height":"width",Ee=Pe+m[ue],ye=Pe-m[_e],ve=[Gl,Yl].indexOf(v)!==-1,Ce=(re=U==null?void 0:U[S])!=null?re:0,ze=ve?Ee:Pe-k[Ae]-O[Ae]-Ce+P.altAxis,at=ve?Pe+k[Ae]+O[Ae]-Ce-P.altAxis:ye,bt=h&&ve?jlt(ze,Pe,at):RS(h?ze:Ee,Pe,h?at:ye);E[S]=bt,F[S]=bt-Pe}t.modifiersData[r]=F}}var mut={name:"preventOverflow",enabled:!0,phase:"main",fn:vut,requiresIfExists:["offset"]};function yut(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function but(e){return e===yf(e)||!Zc(e)?hre(e):yut(e)}function _ut(e){var t=e.getBoundingClientRect(),n=h8(t.width)/e.offsetWidth||1,r=h8(t.height)/e.offsetHeight||1;return n!==1||r!==1}function wut(e,t,n){n===void 0&&(n=!1);var r=Zc(t),o=Zc(t)&&_ut(t),a=n1(t),i=p8(e,o),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&((Rh(t)!=="body"||gre(a))&&(s=but(t)),Zc(t)?(l=p8(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=pre(a))),{x:i.left+s.scrollLeft-l.x,y:i.top+s.scrollTop-l.y,width:i.width,height:i.height}}function Cut(e){var t=new Map,n=new Set,r=[];e.forEach(function(a){t.set(a.name,a)});function o(a){n.add(a.name);var i=[].concat(a.requires||[],a.requiresIfExists||[]);i.forEach(function(s){if(!n.has(s)){var l=t.get(s);l&&o(l)}}),r.push(a)}return e.forEach(function(a){n.has(a.name)||o(a)}),r}function xut(e){var t=Cut(e);return Nlt.reduce(function(n,r){return n.concat(t.filter(function(o){return o.phase===r}))},[])}function Sut(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function Dut(e){var t=e.reduce(function(n,r){var o=n[r.name];return n[r.name]=o?Object.assign({},o,r,{options:Object.assign({},o.options,r.options),data:Object.assign({},o.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var phe={placement:"bottom",modifiers:[],strategy:"absolute"};function ghe(){for(var e=arguments.length,t=new Array(e),n=0;n({})},strategy:{type:String,values:Tut,default:"absolute"}}),X5e=ht({...Out,...Y5e,id:String,style:{type:$e([String,Array,Object])},className:{type:$e([String,Array,Object])},effect:{type:$e(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:{type:Boolean,default:!1},trapping:{type:Boolean,default:!1},popperClass:{type:$e([String,Array,Object])},popperStyle:{type:$e([String,Array,Object])},referenceEl:{type:$e(Object)},triggerTargetEl:{type:$e(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...ts(["ariaLabel"])}),Fut={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},Iut=(e,t)=>{const n=X(!1),r=X();return{focusStartRef:r,trapped:n,onFocusAfterReleased:u=>{var c;((c=u.detail)==null?void 0:c.focusReason)!=="pointer"&&(r.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:u=>{e.visible&&!n.value&&(u.target&&(r.value=u.target),n.value=!0)},onFocusoutPrevented:u=>{e.trapping||(u.detail.focusReason==="pointer"&&u.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t("close")}}},Mut=(e,t=[])=>{const{placement:n,strategy:r,popperOptions:o}=e,a={placement:n,strategy:r,...o,modifiers:[...$ut(e),...t]};return But(a,o==null?void 0:o.modifiers),a},Put=e=>{if(Nn)return ji(e)};function $ut(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:r}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:r}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function But(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const Rut=(e,t,n={})=>{const r={name:"updateState",enabled:!0,phase:"write",fn:({state:l})=>{const u=Nut(l);Object.assign(i.value,u)},requires:["computeStyles"]},o=K(()=>{const{onFirstUpdate:l,placement:u,strategy:c,modifiers:d}=b(n);return{onFirstUpdate:l,placement:u||"bottom",strategy:c||"absolute",modifiers:[...d||[],r,{name:"applyStyles",enabled:!1}]}}),a=Tr(),i=X({styles:{popper:{position:b(o).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),s=()=>{a.value&&(a.value.destroy(),a.value=void 0)};return Ze(o,l=>{const u=b(a);u&&u.setOptions(l)},{deep:!0}),Ze([e,t],([l,u])=>{s(),!(!l||!u)&&(a.value=Aut(l,u,b(o)))}),Ar(()=>{s()}),{state:K(()=>{var l;return{...((l=b(a))==null?void 0:l.state)||{}}}),styles:K(()=>b(i).styles),attributes:K(()=>b(i).attributes),update:()=>{var l;return(l=b(a))==null?void 0:l.update()},forceUpdate:()=>{var l;return(l=b(a))==null?void 0:l.forceUpdate()},instanceRef:K(()=>b(a))}};function Nut(e){const t=Object.keys(e.elements),n=PD(t.map(o=>[o,e.styles[o]||{}])),r=PD(t.map(o=>[o,e.attributes[o]]));return{styles:n,attributes:r}}const Lut=0,Uut=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:r,role:o}=kt(are,void 0),a=X(),i=K(()=>e.arrowOffset),s=K(()=>({name:"eventListeners",enabled:!!e.visible})),l=K(()=>{var v;const y=b(a),_=(v=b(i))!=null?v:Lut;return{name:"arrow",enabled:!CXe(y),options:{element:y,padding:_}}}),u=K(()=>({onFirstUpdate:()=>{g()},...Mut(e,[b(l),b(s)])})),c=K(()=>Put(e.referenceEl)||b(r)),{attributes:d,state:f,styles:h,update:g,forceUpdate:p,instanceRef:m}=Rut(c,n,u);return Ze(m,v=>t.value=v,{flush:"sync"}),Kt(()=>{Ze(()=>{var v;return(v=b(c))==null?void 0:v.getBoundingClientRect()},()=>{g()})}),{attributes:d,arrowRef:a,contentRef:n,instanceRef:m,state:f,styles:h,role:o,forceUpdate:p,update:g}},Vut=(e,{attributes:t,styles:n,role:r})=>{const{nextZIndex:o}=gC(),a=nt("popper"),i=K(()=>b(t).popper),s=X(Lt(e.zIndex)?e.zIndex:o()),l=K(()=>[a.b(),a.is("pure",e.pure),a.is(e.effect),e.popperClass]),u=K(()=>[{zIndex:b(s)},b(n).popper,e.popperStyle||{}]),c=K(()=>r.value==="dialog"?"false":void 0),d=K(()=>b(n).arrow||{});return{ariaModal:c,arrowStyle:d,contentAttrs:i,contentClass:l,contentStyle:u,contentZIndex:s,updateZIndex:()=>{s.value=Lt(e.zIndex)?e.zIndex:o()}}},zut=ne({name:"ElPopperContent"}),jut=ne({...zut,props:X5e,emits:Fut,setup(e,{expose:t,emit:n}){const r=e,{focusStartRef:o,trapped:a,onFocusAfterReleased:i,onFocusAfterTrapped:s,onFocusInTrap:l,onFocusoutPrevented:u,onReleaseRequested:c}=Iut(r,n),{attributes:d,arrowRef:f,contentRef:h,styles:g,instanceRef:p,role:m,update:v}=Uut(r),{ariaModal:y,arrowStyle:_,contentAttrs:C,contentClass:S,contentStyle:E,updateZIndex:k}=Vut(r,{styles:g,attributes:d,role:m}),O=kt(Bh,void 0);Fn(O5e,{arrowStyle:_,arrowRef:f}),O&&Fn(Bh,{...O,addInputId:fr,removeInputId:fr});let T;const P=(F=!0)=>{v(),F&&k()},U=()=>{P(!1),r.visible&&r.focusOnShow?a.value=!0:r.visible===!1&&(a.value=!1)};return Kt(()=>{Ze(()=>r.triggerTargetEl,(F,H)=>{T==null||T(),T=void 0;const R=b(F||h.value),z=b(H||h.value);_l(R)&&(T=Ze([m,()=>r.ariaLabel,y,()=>r.id],M=>{["role","aria-label","aria-modal","id"].forEach((N,L)=>{ni(M[L])?R.removeAttribute(N):R.setAttribute(N,M[L])})},{immediate:!0})),z!==R&&_l(z)&&["role","aria-label","aria-modal","id"].forEach(M=>{z.removeAttribute(M)})},{immediate:!0}),Ze(()=>r.visible,U,{immediate:!0})}),Ar(()=>{T==null||T(),T=void 0}),t({popperContentRef:h,popperInstanceRef:p,updatePopper:P,contentStyle:E}),(F,H)=>(I(),j("div",Dn({ref_key:"contentRef",ref:h},b(C),{style:b(E),class:b(S),tabindex:"-1",onMouseenter:R=>F.$emit("mouseenter",R),onMouseleave:R=>F.$emit("mouseleave",R)}),[D(b(yC),{trapped:b(a),"trap-on-focus-in":!0,"focus-trap-el":b(h),"focus-start-el":b(o),onFocusAfterTrapped:b(s),onFocusAfterReleased:b(i),onFocusin:b(l),onFocusoutPrevented:b(u),onReleaseRequested:b(c)},{default:A(()=>[Ne(F.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16,["onMouseenter","onMouseleave"]))}});var Hut=vt(jut,[["__file","content.vue"]]);const J5e=dn(alt),NL=Symbol("elTooltip"),LL=ht({to:{type:$e([String,Object]),required:!0},disabled:Boolean}),Qo=ht({...Zxe,...X5e,appendTo:{type:LL.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:$e(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...ts(["ariaLabel"])}),T3=ht({...M5e,disabled:Boolean,trigger:{type:$e([String,Array]),default:"hover"},triggerKeys:{type:$e(Array),default:()=>[St.enter,St.numpadEnter,St.space]}}),Wut=mf({type:$e(Boolean),default:null}),qut=mf({type:$e(Function)}),Z5e=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,r=[t],o={[e]:Wut,[n]:qut};return{useModelToggle:({indicator:i,toggleReason:s,shouldHideWhenRouteChanges:l,shouldProceed:u,onShow:c,onHide:d})=>{const f=bn(),{emit:h}=f,g=f.props,p=K(()=>Rt(g[n])),m=K(()=>g[e]===null),v=k=>{i.value!==!0&&(i.value=!0,s&&(s.value=k),Rt(c)&&c(k))},y=k=>{i.value!==!1&&(i.value=!1,s&&(s.value=k),Rt(d)&&d(k))},_=k=>{if(g.disabled===!0||Rt(u)&&!u())return;const O=p.value&&Nn;O&&h(t,!0),(m.value||!O)&&v(k)},C=k=>{if(g.disabled===!0||!Nn)return;const O=p.value&&Nn;O&&h(t,!1),(m.value||!O)&&y(k)},S=k=>{hr(k)&&(g.disabled&&k?p.value&&h(t,!1):i.value!==k&&(k?v():y()))},E=()=>{i.value?C():_()};return Ze(()=>g[e],S),l&&f.appContext.config.globalProperties.$route!==void 0&&Ze(()=>({...f.proxy.$route}),()=>{l.value&&i.value&&C()}),Kt(()=>{S(g[e])}),{hide:C,show:_,toggle:E,hasUpdateHandler:p}},useModelToggleProps:o,useModelToggleEmits:r}};Z5e("modelValue");const{useModelToggleProps:Kut,useModelToggleEmits:Gut,useModelToggle:Yut}=Z5e("visible"),Xut=ht({...I5e,...Kut,...Qo,...T3,...Y5e,showArrow:{type:Boolean,default:!0}}),Jut=[...Gut,"before-show","before-hide","show","hide","open","close"],Zut=(e,t)=>ct(e)?e.includes(t):e===t,X_=(e,t,n)=>r=>{Zut(b(e),t)&&n(r)},Uo=(e,t,{checkForDefaultPrevented:n=!0}={})=>o=>{const a=e==null?void 0:e(o);if(n===!1||!a)return t==null?void 0:t(o)},vhe=e=>t=>t.pointerType==="mouse"?e(t):void 0,Qut=ne({name:"ElTooltipTrigger"}),ect=ne({...Qut,props:T3,setup(e,{expose:t}){const n=e,r=nt("tooltip"),{controlled:o,id:a,open:i,onOpen:s,onClose:l,onToggle:u}=kt(NL,void 0),c=X(null),d=()=>{if(b(o)||n.disabled)return!0},f=tr(n,"trigger"),h=Uo(d,X_(f,"hover",s)),g=Uo(d,X_(f,"hover",l)),p=Uo(d,X_(f,"click",C=>{C.button===0&&u(C)})),m=Uo(d,X_(f,"focus",s)),v=Uo(d,X_(f,"focus",l)),y=Uo(d,X_(f,"contextmenu",C=>{C.preventDefault(),u(C)})),_=Uo(d,C=>{const{code:S}=C;n.triggerKeys.includes(S)&&(C.preventDefault(),u(C))});return t({triggerRef:c}),(C,S)=>(I(),Oe(b(plt),{id:b(a),"virtual-ref":C.virtualRef,open:b(i),"virtual-triggering":C.virtualTriggering,class:ee(b(r).e("trigger")),onBlur:b(v),onClick:b(p),onContextmenu:b(y),onFocus:b(m),onMouseenter:b(h),onMouseleave:b(g),onKeydown:b(_)},{default:A(()=>[Ne(C.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var tct=vt(ect,[["__file","trigger.vue"]]);const nct=ne({__name:"teleport",props:LL,setup(e){return(t,n)=>t.disabled?Ne(t.$slots,"default",{key:0}):(I(),Oe(LVe,{key:1,to:t.to},[Ne(t.$slots,"default")],8,["to"]))}});var rct=vt(nct,[["__file","teleport.vue"]]);const bC=dn(rct),Q5e=()=>{const e=Dne(),t=rre(),n=K(()=>`${e.value}-popper-container-${t.prefix}`),r=K(()=>`#${n.value}`);return{id:n,selector:r}},oct=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},act=()=>{const{id:e,selector:t}=Q5e();return hL(()=>{Nn&&(document.body.querySelector(t.value)||oct(e.value))}),{id:e,selector:t}},ict=ne({name:"ElTooltipContent",inheritAttrs:!1}),sct=ne({...ict,props:Qo,setup(e,{expose:t}){const n=e,{selector:r}=Q5e(),o=nt("tooltip"),a=X(),i=NM(()=>{var L;return(L=a.value)==null?void 0:L.popperContentRef});let s;const{controlled:l,id:u,open:c,trigger:d,onClose:f,onOpen:h,onShow:g,onHide:p,onBeforeShow:m,onBeforeHide:v}=kt(NL,void 0),y=K(()=>n.transition||`${o.namespace.value}-fade-in-linear`),_=K(()=>n.persistent);Ar(()=>{s==null||s()});const C=K(()=>b(_)?!0:b(c)),S=K(()=>n.disabled?!1:b(c)),E=K(()=>n.appendTo||r.value),k=K(()=>{var L;return(L=n.style)!=null?L:{}}),O=X(!0),T=()=>{p(),N()&&yp(document.body),O.value=!0},P=()=>{if(b(l))return!0},U=Uo(P,()=>{n.enterable&&b(d)==="hover"&&h()}),F=Uo(P,()=>{b(d)==="hover"&&f()}),H=()=>{var L,V;(V=(L=a.value)==null?void 0:L.updatePopper)==null||V.call(L),m==null||m()},R=()=>{v==null||v()},z=()=>{g()},M=()=>{n.virtualTriggering||f()},N=L=>{var V;const Y=(V=a.value)==null?void 0:V.popperContentRef,$=(L==null?void 0:L.relatedTarget)||document.activeElement;return Y==null?void 0:Y.contains($)};return Ze(()=>b(c),L=>{L?(O.value=!1,s=zne(i,()=>{if(b(l))return;b(d)!=="hover"&&f()})):s==null||s()},{flush:"post"}),Ze(()=>n.content,()=>{var L,V;(V=(L=a.value)==null?void 0:L.updatePopper)==null||V.call(L)}),t({contentRef:a,isFocusInsideContent:N}),(L,V)=>(I(),Oe(b(bC),{disabled:!L.teleported,to:b(E)},{default:A(()=>[D(xi,{name:b(y),onAfterLeave:T,onBeforeEnter:H,onAfterEnter:z,onBeforeLeave:R},{default:A(()=>[b(C)?rn((I(),Oe(b(Hut),Dn({key:0,id:b(u),ref_key:"contentRef",ref:a},L.$attrs,{"aria-label":L.ariaLabel,"aria-hidden":O.value,"boundaries-padding":L.boundariesPadding,"fallback-placements":L.fallbackPlacements,"gpu-acceleration":L.gpuAcceleration,offset:L.offset,placement:L.placement,"popper-options":L.popperOptions,"arrow-offset":L.arrowOffset,strategy:L.strategy,effect:L.effect,enterable:L.enterable,pure:L.pure,"popper-class":L.popperClass,"popper-style":[L.popperStyle,b(k)],"reference-el":L.referenceEl,"trigger-target-el":L.triggerTargetEl,visible:b(S),"z-index":L.zIndex,onMouseenter:b(U),onMouseleave:b(F),onBlur:M,onClose:b(f)}),{default:A(()=>[Ne(L.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[Pn,b(S)]]):be("v-if",!0)]),_:3},8,["name"])]),_:3},8,["disabled","to"]))}});var lct=vt(sct,[["__file","content.vue"]]);const uct=ne({name:"ElTooltip"}),cct=ne({...uct,props:Xut,emits:Jut,setup(e,{expose:t,emit:n}){const r=e;act();const o=nt("tooltip"),a=Gi(),i=X(),s=X(),l=()=>{var _;const C=b(i);C&&((_=C.popperInstanceRef)==null||_.update())},u=X(!1),c=X(),{show:d,hide:f,hasUpdateHandler:h}=Yut({indicator:u,toggleReason:c}),{onOpen:g,onClose:p}=Qxe({showAfter:tr(r,"showAfter"),hideAfter:tr(r,"hideAfter"),autoClose:tr(r,"autoClose"),open:d,close:f}),m=K(()=>hr(r.visible)&&!h.value),v=K(()=>[o.b(),r.popperClass]);Fn(NL,{controlled:m,id:a,open:lC(u),trigger:tr(r,"trigger"),onOpen:_=>{g(_)},onClose:_=>{p(_)},onToggle:_=>{b(u)?p(_):g(_)},onShow:()=>{n("show",c.value)},onHide:()=>{n("hide",c.value)},onBeforeShow:()=>{n("before-show",c.value)},onBeforeHide:()=>{n("before-hide",c.value)},updatePopper:l}),Ze(()=>r.disabled,_=>{_&&u.value&&(u.value=!1)});const y=_=>{var C;return(C=s.value)==null?void 0:C.isFocusInsideContent(_)};return W8e(()=>u.value&&f()),t({popperRef:i,contentRef:s,isFocusInsideContent:y,updatePopper:l,onOpen:g,onClose:p,hide:f}),(_,C)=>(I(),Oe(b(J5e),{ref_key:"popperRef",ref:i,role:_.role},{default:A(()=>[D(tct,{disabled:_.disabled,trigger:_.trigger,"trigger-keys":_.triggerKeys,"virtual-ref":_.virtualRef,"virtual-triggering":_.virtualTriggering},{default:A(()=>[_.$slots.default?Ne(_.$slots,"default",{key:0}):be("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),D(lct,{ref_key:"contentRef",ref:s,"aria-label":_.ariaLabel,"boundaries-padding":_.boundariesPadding,content:_.content,disabled:_.disabled,effect:_.effect,enterable:_.enterable,"fallback-placements":_.fallbackPlacements,"hide-after":_.hideAfter,"gpu-acceleration":_.gpuAcceleration,offset:_.offset,persistent:_.persistent,"popper-class":b(v),"popper-style":_.popperStyle,placement:_.placement,"popper-options":_.popperOptions,"arrow-offset":_.arrowOffset,pure:_.pure,"raw-content":_.rawContent,"reference-el":_.referenceEl,"trigger-target-el":_.triggerTargetEl,"show-after":_.showAfter,strategy:_.strategy,teleported:_.teleported,transition:_.transition,"virtual-triggering":_.virtualTriggering,"z-index":_.zIndex,"append-to":_.appendTo},{default:A(()=>[Ne(_.$slots,"content",{},()=>[_.rawContent?(I(),j("span",{key:0,innerHTML:_.content},null,8,["innerHTML"])):(I(),j("span",{key:1},se(_.content),1))]),_.showArrow?(I(),Oe(b(llt),{key:0})):be("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var dct=vt(cct,[["__file","tooltip.vue"]]);const Yi=dn(dct),fct=ht({valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:$e(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:$e([Function,Array]),default:fr},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:{type:Boolean,default:!1},hideLoading:{type:Boolean,default:!1},teleported:Qo.teleported,appendTo:Qo.appendTo,highlightFirstItem:{type:Boolean,default:!1},fitInputWidth:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},name:String,...ts(["ariaLabel"])}),hct={[en]:e=>$t(e),[Ea]:e=>$t(e),[En]:e=>$t(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>vn(e)},eSe="ElAutocomplete",pct=ne({name:eSe,inheritAttrs:!1}),gct=ne({...pct,props:fct,emits:hct,setup(e,{expose:t,emit:n}){const r=e,o=gT(),a=Ug(),i=ns(),s=nt("autocomplete"),l=X(),u=X(),c=X(),d=X();let f=!1,h=!1;const g=X([]),p=X(-1),m=X(""),v=X(!1),y=X(!1),_=X(!1),C=Gi(),S=K(()=>a.style),E=K(()=>(g.value.length>0||_.value)&&v.value),k=K(()=>!r.hideLoading&&_.value),O=K(()=>l.value?Array.from(l.value.$el.querySelectorAll("input")):[]),T=()=>{E.value&&(m.value=`${l.value.$el.offsetWidth}px`)},P=()=>{p.value=-1},U=async Z=>{if(y.value)return;const de=we=>{_.value=!1,!y.value&&(ct(we)?(g.value=we,p.value=r.highlightFirstItem?0:-1):oa(eSe,"autocomplete suggestions must be an array"))};if(_.value=!0,ct(r.fetchSuggestions))de(r.fetchSuggestions);else{const we=await r.fetchSuggestions(Z,de);ct(we)&&de(we)}},F=tu(U,r.debounce),H=Z=>{const de=!!Z;if(n(Ea,Z),n(en,Z),y.value=!1,v.value||(v.value=de),!r.triggerOnFocus&&!Z){y.value=!0,g.value=[];return}F(Z)},R=Z=>{var de;i.value||(((de=Z.target)==null?void 0:de.tagName)!=="INPUT"||O.value.includes(document.activeElement))&&(v.value=!0)},z=Z=>{n(En,Z)},M=Z=>{var de;if(h)h=!1;else{v.value=!0,n("focus",Z);const we=(de=r.modelValue)!=null?de:"";r.triggerOnFocus&&!f&&F(String(we))}},N=Z=>{setTimeout(()=>{var de;if((de=c.value)!=null&&de.isFocusInsideContent()){h=!0;return}v.value&&$(),n("blur",Z)})},L=()=>{v.value=!1,n(en,""),n("clear")},V=async()=>{E.value&&p.value>=0&&p.value{E.value&&(Z.preventDefault(),Z.stopPropagation(),$())},$=()=>{v.value=!1},B=()=>{var Z;(Z=l.value)==null||Z.focus()},W=()=>{var Z;(Z=l.value)==null||Z.blur()},J=async Z=>{n(Ea,Z[r.valueKey]),n(en,Z[r.valueKey]),n("select",Z),g.value=[],p.value=-1},oe=Z=>{if(!E.value||_.value)return;if(Z<0){p.value=-1;return}Z>=g.value.length&&(Z=g.value.length-1);const de=u.value.querySelector(`.${s.be("suggestion","wrap")}`),Be=de.querySelectorAll(`.${s.be("suggestion","list")} li`)[Z],ke=de.scrollTop,{offsetTop:ae,scrollHeight:le}=Be;ae+le>ke+de.clientHeight&&(de.scrollTop+=le),ae{var Z;(Z=c.value)!=null&&Z.isFocusInsideContent()||E.value&&$()});return Ar(()=>{ie==null||ie()}),Kt(()=>{l.value.ref.setAttribute("role","textbox"),l.value.ref.setAttribute("aria-autocomplete","list"),l.value.ref.setAttribute("aria-controls","id"),l.value.ref.setAttribute("aria-activedescendant",`${C.value}-item-${p.value}`),f=l.value.ref.hasAttribute("readonly")}),t({highlightedIndex:p,activated:v,loading:_,inputRef:l,popperRef:c,suggestions:g,handleSelect:J,handleKeyEnter:V,focus:B,blur:W,close:$,highlight:oe,getData:U}),(Z,de)=>(I(),Oe(b(Yi),{ref_key:"popperRef",ref:c,visible:b(E),placement:Z.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[b(s).e("popper"),Z.popperClass],teleported:Z.teleported,"append-to":Z.appendTo,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${b(s).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:T,onHide:P},{content:A(()=>[w("div",{ref_key:"regionRef",ref:u,class:ee([b(s).b("suggestion"),b(s).is("loading",b(k))]),style:Nt({[Z.fitInputWidth?"width":"minWidth"]:m.value,outline:"none"}),role:"region"},[D(b(id),{id:b(C),tag:"ul","wrap-class":b(s).be("suggestion","wrap"),"view-class":b(s).be("suggestion","list"),role:"listbox"},{default:A(()=>[b(k)?(I(),j("li",{key:0},[Ne(Z.$slots,"loading",{},()=>[D(b(Tt),{class:ee(b(s).is("loading"))},{default:A(()=>[D(b(Kl))]),_:1},8,["class"])])])):(I(!0),j(tt,{key:1},wt(g.value,(we,Be)=>(I(),j("li",{id:`${b(C)}-item-${Be}`,key:Be,class:ee({highlighted:p.value===Be}),role:"option","aria-selected":p.value===Be,onClick:ke=>J(we)},[Ne(Z.$slots,"default",{item:we},()=>[ce(se(we[Z.valueKey]),1)])],10,["id","aria-selected","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class"])],6)]),default:A(()=>[w("div",{ref_key:"listboxRef",ref:d,class:ee([b(s).b(),Z.$attrs.class]),style:Nt(b(S)),role:"combobox","aria-haspopup":"listbox","aria-expanded":b(E),"aria-owns":b(C)},[D(b(fo),Dn({ref_key:"inputRef",ref:l},b(o),{clearable:Z.clearable,disabled:b(i),name:Z.name,"model-value":Z.modelValue,"aria-label":Z.ariaLabel,onInput:H,onChange:z,onFocus:M,onBlur:N,onClear:L,onKeydown:[qn(zt(we=>oe(p.value-1),["prevent"]),["up"]),qn(zt(we=>oe(p.value+1),["prevent"]),["down"]),qn(V,["enter"]),qn($,["tab"]),qn(Y,["esc"])],onMousedown:R}),eu({_:2},[Z.$slots.prepend?{name:"prepend",fn:A(()=>[Ne(Z.$slots,"prepend")])}:void 0,Z.$slots.append?{name:"append",fn:A(()=>[Ne(Z.$slots,"append")])}:void 0,Z.$slots.prefix?{name:"prefix",fn:A(()=>[Ne(Z.$slots,"prefix")])}:void 0,Z.$slots.suffix?{name:"suffix",fn:A(()=>[Ne(Z.$slots,"suffix")])}:void 0]),1040,["clearable","disabled","name","model-value","aria-label","onKeydown"])],14,["aria-expanded","aria-owns"])]),_:3},8,["visible","placement","popper-class","teleported","append-to","transition"]))}});var vct=vt(gct,[["__file","autocomplete.vue"]]);const mct=dn(vct),yct=ht({size:{type:[Number,String],values:Gh,default:"",validator:e=>Lt(e)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:mr},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:$e(String),default:"cover"}}),bct={error:e=>e instanceof Event},_ct=ne({name:"ElAvatar"}),wct=ne({..._ct,props:yct,emits:bct,setup(e,{emit:t}){const n=e,r=nt("avatar"),o=X(!1),a=K(()=>{const{size:u,icon:c,shape:d}=n,f=[r.b()];return $t(u)&&f.push(r.m(u)),c&&f.push(r.m("icon")),d&&f.push(r.m(d)),f}),i=K(()=>{const{size:u}=n;return Lt(u)?r.cssVarBlock({size:Io(u)||""}):void 0}),s=K(()=>({objectFit:n.fit}));Ze(()=>n.src,()=>o.value=!1);function l(u){o.value=!0,t("error",u)}return(u,c)=>(I(),j("span",{class:ee(b(a)),style:Nt(b(i))},[(u.src||u.srcSet)&&!o.value?(I(),j("img",{key:0,src:u.src,alt:u.alt,srcset:u.srcSet,style:Nt(b(s)),onError:l},null,44,["src","alt","srcset"])):u.icon?(I(),Oe(b(Tt),{key:1},{default:A(()=>[(I(),Oe(_n(u.icon)))]),_:1})):Ne(u.$slots,"default",{key:2})],6))}});var Cct=vt(wct,[["__file","avatar.vue"]]);const xct=dn(Cct),Sct={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},Dct={click:e=>e instanceof MouseEvent},Ect=(e,t,n)=>{const r=Tr(),o=Tr(),a=X(!1),i=()=>{r.value&&(a.value=r.value.scrollTop>=e.visibilityHeight)},s=u=>{var c;(c=r.value)==null||c.scrollTo({top:0,behavior:"smooth"}),t("click",u)},l=$xe(i,300,!0);return xr(o,"scroll",l),Kt(()=>{var u;o.value=document,r.value=document.documentElement,e.target&&(r.value=(u=document.querySelector(e.target))!=null?u:void 0,r.value||oa(n,`target does not exist: ${e.target}`),o.value=r.value),i()}),{visible:a,handleClick:s}},tSe="ElBacktop",kct=ne({name:tSe}),Act=ne({...kct,props:Sct,emits:Dct,setup(e,{emit:t}){const n=e,r=nt("backtop"),{handleClick:o,visible:a}=Ect(n,t,tSe),i=K(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(s,l)=>(I(),Oe(xi,{name:`${b(r).namespace.value}-fade-in`},{default:A(()=>[b(a)?(I(),j("div",{key:0,style:Nt(b(i)),class:ee(b(r).b()),onClick:zt(b(o),["stop"])},[Ne(s.$slots,"default",{},()=>[D(b(Tt),{class:ee(b(r).e("icon"))},{default:A(()=>[D(b(r5e))]),_:1},8,["class"])])],14,["onClick"])):be("v-if",!0)]),_:3},8,["name"]))}});var Tct=vt(Act,[["__file","backtop.vue"]]);const Oct=dn(Tct),Fct=ht({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:$e([String,Object,Array])},offset:{type:$e(Array),default:[0,0]},badgeClass:{type:String}}),Ict=ne({name:"ElBadge"}),Mct=ne({...Ict,props:Fct,setup(e,{expose:t}){const n=e,r=nt("badge"),o=K(()=>n.isDot?"":Lt(n.value)&&Lt(n.max)?n.max{var i,s,l,u,c;return[{backgroundColor:n.color,marginRight:Io(-((s=(i=n.offset)==null?void 0:i[0])!=null?s:0)),marginTop:Io((u=(l=n.offset)==null?void 0:l[1])!=null?u:0)},(c=n.badgeStyle)!=null?c:{}]});return t({content:o}),(i,s)=>(I(),j("div",{class:ee(b(r).b())},[Ne(i.$slots,"default"),D(xi,{name:`${b(r).namespace.value}-zoom-in-center`,persisted:""},{default:A(()=>[rn(w("sup",{class:ee([b(r).e("content"),b(r).em("content",i.type),b(r).is("fixed",!!i.$slots.default),b(r).is("dot",i.isDot),b(r).is("hide-zero",!i.showZero&&n.value===0),i.badgeClass]),style:Nt(b(a))},[Ne(i.$slots,"content",{value:b(o)},()=>[ce(se(b(o)),1)])],6),[[Pn,!i.hidden&&(b(o)||i.isDot||i.$slots.content)]])]),_:3},8,["name"])],2))}});var Pct=vt(Mct,[["__file","badge.vue"]]);const nSe=dn(Pct),rSe=Symbol("breadcrumbKey"),$ct=ht({separator:{type:String,default:"/"},separatorIcon:{type:mr}}),Bct=ne({name:"ElBreadcrumb"}),Rct=ne({...Bct,props:$ct,setup(e){const t=e,{t:n}=Un(),r=nt("breadcrumb"),o=X();return Fn(rSe,t),Kt(()=>{const a=o.value.querySelectorAll(`.${r.e("item")}`);a.length&&a[a.length-1].setAttribute("aria-current","page")}),(a,i)=>(I(),j("div",{ref_key:"breadcrumb",ref:o,class:ee(b(r).b()),"aria-label":b(n)("el.breadcrumb.label"),role:"navigation"},[Ne(a.$slots,"default")],10,["aria-label"]))}});var Nct=vt(Rct,[["__file","breadcrumb.vue"]]);const Lct=ht({to:{type:$e([String,Object]),default:""},replace:Boolean}),Uct=ne({name:"ElBreadcrumbItem"}),Vct=ne({...Uct,props:Lct,setup(e){const t=e,n=bn(),r=kt(rSe,void 0),o=nt("breadcrumb"),a=n.appContext.config.globalProperties.$router,i=X(),s=()=>{!t.to||!a||(t.replace?a.replace(t.to):a.push(t.to))};return(l,u)=>{var c,d;return I(),j("span",{class:ee(b(o).e("item"))},[w("span",{ref_key:"link",ref:i,class:ee([b(o).e("inner"),b(o).is("link",!!l.to)]),role:"link",onClick:s},[Ne(l.$slots,"default")],2),(c=b(r))!=null&&c.separatorIcon?(I(),Oe(b(Tt),{key:0,class:ee(b(o).e("separator"))},{default:A(()=>[(I(),Oe(_n(b(r).separatorIcon)))]),_:1},8,["class"])):(I(),j("span",{key:1,class:ee(b(o).e("separator")),role:"presentation"},se((d=b(r))==null?void 0:d.separator),3))],2)}}});var oSe=vt(Vct,[["__file","breadcrumb-item.vue"]]);const zct=dn(Nct,{BreadcrumbItem:oSe}),jct=vo(oSe),aSe=Symbol("buttonGroupContextKey"),mg=({from:e,replacement:t,scope:n,version:r,ref:o,type:a="API"},i)=>{Ze(()=>b(i),s=>{},{immediate:!0})},Hct=(e,t)=>{mg({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},K(()=>e.type==="text"));const n=kt(aSe,void 0),r=uT("button"),{form:o}=ws(),a=ma(K(()=>n==null?void 0:n.size)),i=ns(),s=X(),l=La(),u=K(()=>{var m;return e.type||(n==null?void 0:n.type)||((m=r.value)==null?void 0:m.type)||""}),c=K(()=>{var m,v,y;return(y=(v=e.autoInsertSpace)!=null?v:(m=r.value)==null?void 0:m.autoInsertSpace)!=null?y:!1}),d=K(()=>{var m,v,y;return(y=(v=e.plain)!=null?v:(m=r.value)==null?void 0:m.plain)!=null?y:!1}),f=K(()=>{var m,v,y;return(y=(v=e.round)!=null?v:(m=r.value)==null?void 0:m.round)!=null?y:!1}),h=K(()=>e.tag==="button"?{ariaDisabled:i.value||e.loading,disabled:i.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),g=K(()=>{var m;const v=(m=l.default)==null?void 0:m.call(l);if(c.value&&(v==null?void 0:v.length)===1){const y=v[0];if((y==null?void 0:y.type)===uC){const _=y.children;return/^\p{Unified_Ideograph}{2}$/u.test(_.trim())}}return!1});return{_disabled:i,_size:a,_type:u,_ref:s,_props:h,_plain:d,_round:f,shouldAddSpace:g,handleClick:m=>{if(i.value||e.loading){m.stopPropagation();return}e.nativeType==="reset"&&(o==null||o.resetFields()),t("click",m)}}},MY=["default","primary","success","warning","info","danger","text",""],Wct=["button","submit","reset"],PY=ht({size:Aa,disabled:Boolean,type:{type:String,values:MY,default:""},icon:{type:mr},nativeType:{type:String,values:Wct,default:"button"},loading:Boolean,loadingIcon:{type:mr,default:()=>Kl},plain:{type:Boolean,default:void 0},text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:$e([String,Object]),default:"button"}}),qct={click:e=>e instanceof MouseEvent};function gs(e,t){Kct(e)&&(e="100%");var n=Gct(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function J7(e){return Math.min(1,Math.max(0,e))}function Kct(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function Gct(e){return typeof e=="string"&&e.indexOf("%")!==-1}function iSe(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function Z7(e){return e<=1?"".concat(Number(e)*100,"%"):e}function f2(e){return e.length===1?"0"+e:String(e)}function Yct(e,t,n){return{r:gs(e,255)*255,g:gs(t,255)*255,b:gs(n,255)*255}}function mhe(e,t,n){e=gs(e,255),t=gs(t,255),n=gs(n,255);var r=Math.max(e,t,n),o=Math.min(e,t,n),a=0,i=0,s=(r+o)/2;if(r===o)i=0,a=0;else{var l=r-o;switch(i=s>.5?l/(2-r-o):l/(r+o),r){case e:a=(t-n)/l+(t1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function Xct(e,t,n){var r,o,a;if(e=gs(e,360),t=gs(t,100),n=gs(n,100),t===0)o=n,a=n,r=n;else{var i=n<.5?n*(1+t):n+t-n*t,s=2*n-i;r=Gz(s,i,e+1/3),o=Gz(s,i,e),a=Gz(s,i,e-1/3)}return{r:r*255,g:o*255,b:a*255}}function yhe(e,t,n){e=gs(e,255),t=gs(t,255),n=gs(n,255);var r=Math.max(e,t,n),o=Math.min(e,t,n),a=0,i=r,s=r-o,l=r===0?0:s/r;if(r===o)a=0;else{switch(r){case e:a=(t-n)/s+(t>16,g:(e&65280)>>8,b:e&255}}var $Y={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function tdt(e){var t={r:0,g:0,b:0},n=1,r=null,o=null,a=null,i=!1,s=!1;return typeof e=="string"&&(e=odt(e)),typeof e=="object"&&(ap(e.r)&&ap(e.g)&&ap(e.b)?(t=Yct(e.r,e.g,e.b),i=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):ap(e.h)&&ap(e.s)&&ap(e.v)?(r=Z7(e.s),o=Z7(e.v),t=Jct(e.h,r,o),i=!0,s="hsv"):ap(e.h)&&ap(e.s)&&ap(e.l)&&(r=Z7(e.s),a=Z7(e.l),t=Xct(e.h,r,a),i=!0,s="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=iSe(n),{ok:i,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var ndt="[-\\+]?\\d+%?",rdt="[-\\+]?\\d*\\.\\d+%?",Yv="(?:".concat(rdt,")|(?:").concat(ndt,")"),Yz="[\\s|\\(]+(".concat(Yv,")[,|\\s]+(").concat(Yv,")[,|\\s]+(").concat(Yv,")\\s*\\)?"),Xz="[\\s|\\(]+(".concat(Yv,")[,|\\s]+(").concat(Yv,")[,|\\s]+(").concat(Yv,")[,|\\s]+(").concat(Yv,")\\s*\\)?"),bd={CSS_UNIT:new RegExp(Yv),rgb:new RegExp("rgb"+Yz),rgba:new RegExp("rgba"+Xz),hsl:new RegExp("hsl"+Yz),hsla:new RegExp("hsla"+Xz),hsv:new RegExp("hsv"+Yz),hsva:new RegExp("hsva"+Xz),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function odt(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if($Y[e])e=$Y[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=bd.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=bd.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=bd.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=bd.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=bd.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=bd.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=bd.hex8.exec(e),n?{r:fu(n[1]),g:fu(n[2]),b:fu(n[3]),a:_he(n[4]),format:t?"name":"hex8"}:(n=bd.hex6.exec(e),n?{r:fu(n[1]),g:fu(n[2]),b:fu(n[3]),format:t?"name":"hex"}:(n=bd.hex4.exec(e),n?{r:fu(n[1]+n[1]),g:fu(n[2]+n[2]),b:fu(n[3]+n[3]),a:_he(n[4]+n[4]),format:t?"name":"hex8"}:(n=bd.hex3.exec(e),n?{r:fu(n[1]+n[1]),g:fu(n[2]+n[2]),b:fu(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function ap(e){return!!bd.CSS_UNIT.exec(String(e))}var u3=function(){function e(t,n){t===void 0&&(t=""),n===void 0&&(n={});var r;if(t instanceof e)return t;typeof t=="number"&&(t=edt(t)),this.originalInput=t;var o=tdt(t);this.originalInput=t,this.r=o.r,this.g=o.g,this.b=o.b,this.a=o.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:o.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=o.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,r,o,a=t.r/255,i=t.g/255,s=t.b/255;return a<=.03928?n=a/12.92:n=Math.pow((a+.055)/1.055,2.4),i<=.03928?r=i/12.92:r=Math.pow((i+.055)/1.055,2.4),s<=.03928?o=s/12.92:o=Math.pow((s+.055)/1.055,2.4),.2126*n+.7152*r+.0722*o},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=iSe(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=yhe(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=yhe(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),o=Math.round(t.v*100);return this.a===1?"hsv(".concat(n,", ").concat(r,"%, ").concat(o,"%)"):"hsva(".concat(n,", ").concat(r,"%, ").concat(o,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=mhe(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=mhe(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),o=Math.round(t.l*100);return this.a===1?"hsl(".concat(n,", ").concat(r,"%, ").concat(o,"%)"):"hsla(".concat(n,", ").concat(r,"%, ").concat(o,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),bhe(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),Zct(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),r=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(n,", ").concat(r,")"):"rgba(".concat(t,", ").concat(n,", ").concat(r,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(n){return"".concat(Math.round(gs(n,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(gs(n,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+bhe(this.r,this.g,this.b,!1),n=0,r=Object.entries($Y);n=0,a=!n&&o&&(t.startsWith("hex")||t==="name");return a?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(r=this.toRgbString()),t==="prgb"&&(r=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(r=this.toHexString()),t==="hex3"&&(r=this.toHexString(!0)),t==="hex4"&&(r=this.toHex8String(!0)),t==="hex8"&&(r=this.toHex8String()),t==="name"&&(r=this.toName()),t==="hsl"&&(r=this.toHslString()),t==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=J7(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=J7(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=J7(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=J7(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var r=this.toRgb(),o=new e(t).toRgb(),a=n/100,i={r:(o.r-r.r)*a+r.r,g:(o.g-r.g)*a+r.g,b:(o.b-r.b)*a+r.b,a:(o.a-r.a)*a+r.a};return new e(i)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var r=this.toHsl(),o=360/n,a=[this];for(r.h=(r.h-(o*t>>1)+720)%360;--t;)r.h=(r.h+o)%360,a.push(new e(r));return a},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),r=n.h,o=n.s,a=n.v,i=[],s=1/t;t--;)i.push(new e({h:r,s:o,v:a})),a=(a+s)%1;return i},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb(),o=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/o,g:(n.g*n.a+r.g*r.a*(1-n.a))/o,b:(n.b*n.a+r.b*r.a*(1-n.a))/o,a:o})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,o=[this],a=360/t,i=1;i{let r={},o=e.color;if(o){const a=o.match(/var\((.*?)\)/);a&&(o=window.getComputedStyle(window.document.documentElement).getPropertyValue(a[1]));const i=new u3(o),s=e.dark?i.tint(20).toString():r0(i,20);if(e.plain)r=n.cssVarBlock({"bg-color":e.dark?r0(i,90):i.tint(90).toString(),"text-color":o,"border-color":e.dark?r0(i,50):i.tint(50).toString(),"hover-text-color":`var(${n.cssVarName("color-white")})`,"hover-bg-color":o,"hover-border-color":o,"active-bg-color":s,"active-text-color":`var(${n.cssVarName("color-white")})`,"active-border-color":s}),t.value&&(r[n.cssVarBlockName("disabled-bg-color")]=e.dark?r0(i,90):i.tint(90).toString(),r[n.cssVarBlockName("disabled-text-color")]=e.dark?r0(i,50):i.tint(50).toString(),r[n.cssVarBlockName("disabled-border-color")]=e.dark?r0(i,80):i.tint(80).toString());else{const l=e.dark?r0(i,30):i.tint(30).toString(),u=i.isDark()?`var(${n.cssVarName("color-white")})`:`var(${n.cssVarName("color-black")})`;if(r=n.cssVarBlock({"bg-color":o,"text-color":u,"border-color":o,"hover-bg-color":l,"hover-text-color":u,"hover-border-color":l,"active-bg-color":s,"active-border-color":s}),t.value){const c=e.dark?r0(i,50):i.tint(50).toString();r[n.cssVarBlockName("disabled-bg-color")]=c,r[n.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${n.cssVarName("color-white")})`,r[n.cssVarBlockName("disabled-border-color")]=c}}}return r})}const idt=ne({name:"ElButton"}),sdt=ne({...idt,props:PY,emits:qct,setup(e,{expose:t,emit:n}){const r=e,o=adt(r),a=nt("button"),{_ref:i,_size:s,_type:l,_disabled:u,_props:c,_plain:d,_round:f,shouldAddSpace:h,handleClick:g}=Hct(r,n),p=K(()=>[a.b(),a.m(l.value),a.m(s.value),a.is("disabled",u.value),a.is("loading",r.loading),a.is("plain",d.value),a.is("round",f.value),a.is("circle",r.circle),a.is("text",r.text),a.is("link",r.link),a.is("has-bg",r.bg)]);return t({ref:i,size:s,type:l,disabled:u,shouldAddSpace:h}),(m,v)=>(I(),Oe(_n(m.tag),Dn({ref_key:"_ref",ref:i},b(c),{class:b(p),style:b(o),onClick:b(g)}),{default:A(()=>[m.loading?(I(),j(tt,{key:0},[m.$slots.loading?Ne(m.$slots,"loading",{key:0}):(I(),Oe(b(Tt),{key:1,class:ee(b(a).is("loading"))},{default:A(()=>[(I(),Oe(_n(m.loadingIcon)))]),_:1},8,["class"]))],64)):m.icon||m.$slots.icon?(I(),Oe(b(Tt),{key:1},{default:A(()=>[m.icon?(I(),Oe(_n(m.icon),{key:0})):Ne(m.$slots,"icon",{key:1})]),_:3})):be("v-if",!0),m.$slots.default?(I(),j("span",{key:2,class:ee({[b(a).em("text","expand")]:b(h)})},[Ne(m.$slots,"default")],2)):be("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var ldt=vt(sdt,[["__file","button.vue"]]);const udt={size:PY.size,type:PY.type},cdt=ne({name:"ElButtonGroup"}),ddt=ne({...cdt,props:udt,setup(e){const t=e;Fn(aSe,Bn({size:tr(t,"size"),type:tr(t,"type")}));const n=nt("button");return(r,o)=>(I(),j("div",{class:ee(b(n).b("group"))},[Ne(r.$slots,"default")],2))}});var sSe=vt(ddt,[["__file","button-group.vue"]]);const Br=dn(ldt,{ButtonGroup:sSe}),mre=vo(sSe);var Xn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Wg(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function fdt(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),n}var lSe={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Xn,function(){var n=1e3,r=6e4,o=36e5,a="millisecond",i="second",s="minute",l="hour",u="day",c="week",d="month",f="quarter",h="year",g="date",p="Invalid Date",m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,y={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var z=["th","st","nd","rd"],M=R%100;return"["+R+(z[(M-20)%10]||z[M]||z[0])+"]"}},_=function(R,z,M){var N=String(R);return!N||N.length>=z?R:""+Array(z+1-N.length).join(M)+R},C={s:_,z:function(R){var z=-R.utcOffset(),M=Math.abs(z),N=Math.floor(M/60),L=M%60;return(z<=0?"+":"-")+_(N,2,"0")+":"+_(L,2,"0")},m:function R(z,M){if(z.date()1)return R(Y[0])}else{var $=z.name;E[$]=z,L=$}return!N&&L&&(S=L),L||!N&&S},P=function(R,z){if(O(R))return R.clone();var M=typeof z=="object"?z:{};return M.date=R,M.args=arguments,new F(M)},U=C;U.l=T,U.i=O,U.w=function(R,z){return P(R,{locale:z.$L,utc:z.$u,x:z.$x,$offset:z.$offset})};var F=function(){function R(M){this.$L=T(M.locale,null,!0),this.parse(M),this.$x=this.$x||M.x||{},this[k]=!0}var z=R.prototype;return z.parse=function(M){this.$d=function(N){var L=N.date,V=N.utc;if(L===null)return new Date(NaN);if(U.u(L))return new Date;if(L instanceof Date)return new Date(L);if(typeof L=="string"&&!/Z$/i.test(L)){var Y=L.match(m);if(Y){var $=Y[2]-1||0,B=(Y[7]||"0").substring(0,3);return V?new Date(Date.UTC(Y[1],$,Y[3]||1,Y[4]||0,Y[5]||0,Y[6]||0,B)):new Date(Y[1],$,Y[3]||1,Y[4]||0,Y[5]||0,Y[6]||0,B)}}return new Date(L)}(M),this.init()},z.init=function(){var M=this.$d;this.$y=M.getFullYear(),this.$M=M.getMonth(),this.$D=M.getDate(),this.$W=M.getDay(),this.$H=M.getHours(),this.$m=M.getMinutes(),this.$s=M.getSeconds(),this.$ms=M.getMilliseconds()},z.$utils=function(){return U},z.isValid=function(){return this.$d.toString()!==p},z.isSame=function(M,N){var L=P(M);return this.startOf(N)<=L&&L<=this.endOf(N)},z.isAfter=function(M,N){return P(M)[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),uSe=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),cSe=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),whe=function(e,t){const n=Fm(e),r=Fm(t);return n&&r?e.getTime()===t.getTime():!n&&!r?e===t:!1},Che=function(e,t){const n=ct(e),r=ct(t);return n&&r?e.length!==t.length?!1:e.every((o,a)=>whe(o,t[a])):!n&&!r?whe(e,t):!1},xhe=function(e,t,n){const r=Vu(t)||t==="x"?hn(e).locale(n):hn(e,t).locale(n);return r.isValid()?r:void 0},She=function(e,t,n){return Vu(t)?e:t==="x"?+e:hn(e).locale(n).format(t)},Zz=(e,t)=>{var n;const r=[],o=t==null?void 0:t();for(let a=0;act(e)?e.map(t=>t.toDate()):e.toDate(),pdt=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return sm(t).map((r,o)=>n-(t-o-1))},gdt=e=>{const t=e.daysInMonth();return sm(t).map((n,r)=>r+1)},vdt=e=>sm(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),mdt=ht({selectedDay:{type:$e(Object)},range:{type:$e(Array)},date:{type:$e(Object),required:!0},hideHeader:{type:Boolean}}),ydt={pick:e=>vn(e)};var dSe={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Xn,function(){return function(n,r,o){var a=r.prototype,i=function(d){return d&&(d.indexOf?d:d.s)},s=function(d,f,h,g,p){var m=d.name?d:d.$locale(),v=i(m[f]),y=i(m[h]),_=v||y.map(function(S){return S.slice(0,g)});if(!p)return _;var C=m.weekStart;return _.map(function(S,E){return _[(E+(C||0))%7]})},l=function(){return o.Ls[o.locale()]},u=function(d,f){return d.formats[f]||function(h){return h.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(g,p,m){return p||m.slice(1)})}(d.formats[f.toUpperCase()])},c=function(){var d=this;return{months:function(f){return f?f.format("MMMM"):s(d,"months")},monthsShort:function(f){return f?f.format("MMM"):s(d,"monthsShort","months",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(f){return f?f.format("dddd"):s(d,"weekdays")},weekdaysMin:function(f){return f?f.format("dd"):s(d,"weekdaysMin","weekdays",2)},weekdaysShort:function(f){return f?f.format("ddd"):s(d,"weekdaysShort","weekdays",3)},longDateFormat:function(f){return u(d.$locale(),f)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};a.localeData=function(){return c.bind(this)()},o.localeData=function(){var d=l();return{firstDayOfWeek:function(){return d.weekStart||0},weekdays:function(){return o.weekdays()},weekdaysShort:function(){return o.weekdaysShort()},weekdaysMin:function(){return o.weekdaysMin()},months:function(){return o.months()},monthsShort:function(){return o.monthsShort()},longDateFormat:function(f){return u(d,f)},meridiem:d.meridiem,ordinal:d.ordinal}},o.months=function(){return s(l(),"months")},o.monthsShort=function(){return s(l(),"monthsShort","months",3)},o.weekdays=function(d){return s(l(),"weekdays",null,null,d)},o.weekdaysShort=function(d){return s(l(),"weekdaysShort","weekdays",3,d)},o.weekdaysMin=function(d){return s(l(),"weekdaysMin","weekdays",2,d)}}})})(dSe);var bdt=dSe.exports;const fSe=Wg(bdt),_dt=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"],Qz=["sun","mon","tue","wed","thu","fri","sat"],wdt=(e,t)=>{hn.extend(fSe);const n=hn.localeData().firstDayOfWeek(),{t:r,lang:o}=Un(),a=hn().locale(o.value),i=K(()=>!!e.range&&!!e.range.length),s=K(()=>{let f=[];if(i.value){const[h,g]=e.range,p=sm(g.date()-h.date()+1).map(y=>({text:h.date()+y,type:"current"}));let m=p.length%7;m=m===0?0:7-m;const v=sm(m).map((y,_)=>({text:_+1,type:"next"}));f=p.concat(v)}else{const h=e.date.startOf("month").day(),g=pdt(e.date,(h-n+7)%7).map(y=>({text:y,type:"prev"})),p=gdt(e.date).map(y=>({text:y,type:"current"}));f=[...g,...p];const m=7-(f.length%7||7),v=sm(m).map((y,_)=>({text:_+1,type:"next"}));f=f.concat(v)}return vdt(f)}),l=K(()=>{const f=n;return f===0?Qz.map(h=>r(`el.datepicker.weeks.${h}`)):Qz.slice(f).concat(Qz.slice(0,f)).map(h=>r(`el.datepicker.weeks.${h}`))}),u=(f,h)=>{switch(h){case"prev":return e.date.startOf("month").subtract(1,"month").date(f);case"next":return e.date.startOf("month").add(1,"month").date(f);case"current":return e.date.date(f)}};return{now:a,isInRange:i,rows:s,weekDays:l,getFormattedDate:u,handlePickDay:({text:f,type:h})=>{const g=u(f,h);t("pick",g)},getSlotData:({text:f,type:h})=>{const g=u(f,h);return{isSelected:g.isSame(e.selectedDay),type:`${h}-month`,day:g.format("YYYY-MM-DD"),date:g.toDate()}}}},Cdt=ne({name:"DateTable"}),xdt=ne({...Cdt,props:mdt,emits:ydt,setup(e,{expose:t,emit:n}){const r=e,{isInRange:o,now:a,rows:i,weekDays:s,getFormattedDate:l,handlePickDay:u,getSlotData:c}=wdt(r,n),d=nt("calendar-table"),f=nt("calendar-day"),h=({text:g,type:p})=>{const m=[p];if(p==="current"){const v=l(g,p);v.isSame(r.selectedDay,"day")&&m.push(f.is("selected")),v.isSame(a,"day")&&m.push(f.is("today"))}return m};return t({getFormattedDate:l}),(g,p)=>(I(),j("table",{class:ee([b(d).b(),b(d).is("range",b(o))]),cellspacing:"0",cellpadding:"0"},[g.hideHeader?be("v-if",!0):(I(),j("thead",{key:0},[w("tr",null,[(I(!0),j(tt,null,wt(b(s),m=>(I(),j("th",{key:m,scope:"col"},se(m),1))),128))])])),w("tbody",null,[(I(!0),j(tt,null,wt(b(i),(m,v)=>(I(),j("tr",{key:v,class:ee({[b(d).e("row")]:!0,[b(d).em("row","hide-border")]:v===0&&g.hideHeader})},[(I(!0),j(tt,null,wt(m,(y,_)=>(I(),j("td",{key:_,class:ee(h(y)),onClick:C=>b(u)(y)},[w("div",{class:ee(b(f).b())},[Ne(g.$slots,"date-cell",{data:b(c)(y)},()=>[w("span",null,se(y.text),1)])],2)],10,["onClick"]))),128))],2))),128))])],2))}});var Dhe=vt(xdt,[["__file","date-table.vue"]]);const Sdt=(e,t)=>{const n=e.endOf("month"),r=t.startOf("month"),a=n.isSame(r,"week")?r.add(1,"week"):r;return[[e,n],[a.startOf("week"),t]]},Ddt=(e,t)=>{const n=e.endOf("month"),r=e.add(1,"month").startOf("month"),o=n.isSame(r,"week")?r.add(1,"week"):r,a=o.endOf("month"),i=t.startOf("month"),s=a.isSame(i,"week")?i.add(1,"week"):i;return[[e,n],[o.startOf("week"),a],[s.startOf("week"),t]]},Edt=(e,t,n)=>{const{lang:r}=Un(),o=X(),a=hn().locale(r.value),i=K({get(){return e.modelValue?l.value:o.value},set(m){if(!m)return;o.value=m;const v=m.toDate();t(Ea,v),t(en,v)}}),s=K(()=>{if(!e.range||!ct(e.range)||e.range.length!==2||e.range.some(_=>!Fm(_)))return[];const m=e.range.map(_=>hn(_).locale(r.value)),[v,y]=m;return v.isAfter(y)?[]:v.isSame(y,"month")?h(v,y):v.add(1,"month").month()!==y.month()?[]:h(v,y)}),l=K(()=>e.modelValue?hn(e.modelValue).locale(r.value):i.value||(s.value.length?s.value[0][0]:a)),u=K(()=>l.value.subtract(1,"month").date(1)),c=K(()=>l.value.add(1,"month").date(1)),d=K(()=>l.value.subtract(1,"year").date(1)),f=K(()=>l.value.add(1,"year").date(1)),h=(m,v)=>{const y=m.startOf("week"),_=v.endOf("week"),C=y.get("month"),S=_.get("month");return C===S?[[y,_]]:(C+1)%12===S?Sdt(y,_):C+2===S||(C+1)%11===S?Ddt(y,_):[]},g=m=>{i.value=m};return{calculateValidatedDateRange:h,date:l,realSelectedDay:i,pickDay:g,selectDate:m=>{const y={"prev-month":u.value,"next-month":c.value,"prev-year":d.value,"next-year":f.value,today:a}[m];y.isSame(l.value,"day")||g(y)},validatedRange:s}},kdt=e=>ct(e)&&e.length===2&&e.every(t=>Fm(t)),Adt=ht({modelValue:{type:Date},range:{type:$e(Array),validator:kdt}}),Tdt={[en]:e=>Fm(e),[Ea]:e=>Fm(e)},Odt="ElCalendar",Fdt=ne({name:Odt}),Idt=ne({...Fdt,props:Adt,emits:Tdt,setup(e,{expose:t,emit:n}){const r=e,o=nt("calendar"),{calculateValidatedDateRange:a,date:i,pickDay:s,realSelectedDay:l,selectDate:u,validatedRange:c}=Edt(r,n),{t:d}=Un(),f=K(()=>{const h=`el.datepicker.month${i.value.format("M")}`;return`${i.value.year()} ${d("el.datepicker.year")} ${d(h)}`});return t({selectedDay:l,pickDay:s,selectDate:u,calculateValidatedDateRange:a}),(h,g)=>(I(),j("div",{class:ee(b(o).b())},[w("div",{class:ee(b(o).e("header"))},[Ne(h.$slots,"header",{date:b(f)},()=>[w("div",{class:ee(b(o).e("title"))},se(b(f)),3),b(c).length===0?(I(),j("div",{key:0,class:ee(b(o).e("button-group"))},[D(b(mre),null,{default:A(()=>[D(b(Br),{size:"small",onClick:p=>b(u)("prev-month")},{default:A(()=>[ce(se(b(d)("el.datepicker.prevMonth")),1)]),_:1},8,["onClick"]),D(b(Br),{size:"small",onClick:p=>b(u)("today")},{default:A(()=>[ce(se(b(d)("el.datepicker.today")),1)]),_:1},8,["onClick"]),D(b(Br),{size:"small",onClick:p=>b(u)("next-month")},{default:A(()=>[ce(se(b(d)("el.datepicker.nextMonth")),1)]),_:1},8,["onClick"])]),_:1})],2)):be("v-if",!0)])],2),b(c).length===0?(I(),j("div",{key:0,class:ee(b(o).e("body"))},[D(Dhe,{date:b(i),"selected-day":b(l),onPick:b(s)},eu({_:2},[h.$slots["date-cell"]?{name:"date-cell",fn:A(p=>[Ne(h.$slots,"date-cell",Hu(Mh(p)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):(I(),j("div",{key:1,class:ee(b(o).e("body"))},[(I(!0),j(tt,null,wt(b(c),(p,m)=>(I(),Oe(Dhe,{key:m,date:p[0],"selected-day":b(l),range:p,"hide-header":m!==0,onPick:b(s)},eu({_:2},[h.$slots["date-cell"]?{name:"date-cell",fn:A(v=>[Ne(h.$slots,"date-cell",Hu(Mh(v)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var Mdt=vt(Idt,[["__file","calendar.vue"]]);const Pdt=dn(Mdt),$dt=ht({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:$e([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:"always"}}),Bdt=ne({name:"ElCard"}),Rdt=ne({...Bdt,props:$dt,setup(e){const t=nt("card");return(n,r)=>(I(),j("div",{class:ee([b(t).b(),b(t).is(`${n.shadow}-shadow`)])},[n.$slots.header||n.header?(I(),j("div",{key:0,class:ee([b(t).e("header"),n.headerClass])},[Ne(n.$slots,"header",{},()=>[ce(se(n.header),1)])],2)):be("v-if",!0),w("div",{class:ee([b(t).e("body"),n.bodyClass]),style:Nt(n.bodyStyle)},[Ne(n.$slots,"default")],6),n.$slots.footer||n.footer?(I(),j("div",{key:1,class:ee([b(t).e("footer"),n.footerClass])},[Ne(n.$slots,"footer",{},()=>[ce(se(n.footer),1)])],2)):be("v-if",!0)],2))}});var Ndt=vt(Rdt,[["__file","card.vue"]]);const uc=dn(Ndt),Ldt=ht({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),Udt={change:(e,t)=>[e,t].every(Lt)},hSe=Symbol("carouselContextKey"),BY="ElCarouselItem";var Lc=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Lc||{});function RY(e){return jr(e)&&e.type===tt}function Vdt(e){return jr(e)&&e.type===da}function zdt(e){return jr(e)&&!RY(e)&&!Vdt(e)}const jdt=e=>{if(!jr(e))return{};const t=e.props||{},n=(jr(e.type)?e.type.props:void 0)||{},r={};return Object.keys(n).forEach(o=>{Gn(n[o],"default")&&(r[o]=n[o].default)}),Object.keys(t).forEach(o=>{r[wl(o)]=t[o]}),r},Hdt=e=>{if(!ct(e)||e.length>1)throw new Error("expect to receive a single Vue element child");return e[0]},mh=e=>{const t=ct(e)?e:[e],n=[];return t.forEach(r=>{var o;ct(r)?n.push(...mh(r)):jr(r)&&((o=r.component)!=null&&o.subTree)?n.push(r,...mh(r.component.subTree)):jr(r)&&ct(r.children)?n.push(...mh(r.children)):jr(r)&&r.shapeFlag===2?n.push(...mh(r.type())):n.push(r)}),n},Wdt=(e,t,n)=>mh(e.subTree).filter(a=>{var i;return jr(a)&&((i=a.type)==null?void 0:i.name)===t&&!!a.component}).map(a=>a.component.uid).map(a=>n[a]).filter(a=>!!a),UL=(e,t)=>{const n={},r=Tr([]);return{children:r,addChild:i=>{n[i.uid]=i,r.value=Wdt(e,t,n)},removeChild:i=>{delete n[i],r.value=r.value.filter(s=>s.uid!==i)}}},Ehe=300,qdt=(e,t,n)=>{const{children:r,addChild:o,removeChild:a}=UL(bn(),BY),i=La(),s=X(-1),l=X(null),u=X(!1),c=X(),d=X(0),f=X(!0),h=K(()=>e.arrow!=="never"&&!b(m)),g=K(()=>r.value.some(W=>W.props.label.toString().length>0)),p=K(()=>e.type==="card"),m=K(()=>e.direction==="vertical"),v=K(()=>e.height!=="auto"?{height:e.height}:{height:`${d.value}px`,overflow:"hidden"}),y=ub(W=>{O(W)},Ehe,{trailing:!0}),_=ub(W=>{M(W)},Ehe),C=W=>f.value?s.value<=1?W<=1:W>1:!0;function S(){l.value&&(clearInterval(l.value),l.value=null)}function E(){e.interval<=0||!e.autoplay||l.value||(l.value=setInterval(()=>k(),e.interval))}const k=()=>{s.valueZ.props.name===W);ie.length>0&&(W=r.value.indexOf(ie[0]))}if(W=Number(W),Number.isNaN(W)||W!==Math.floor(W))return;const J=r.value.length,oe=s.value;W<0?s.value=e.loop?J-1:0:W>=J?s.value=e.loop?0:J-1:s.value=W,oe===s.value&&T(oe),V()}function T(W){r.value.forEach((J,oe)=>{J.translateItem(oe,s.value,W)})}function P(W,J){var oe,ie,Z,de;const we=b(r),Be=we.length;if(Be===0||!W.states.inStage)return!1;const ke=J+1,ae=J-1,le=Be-1,q=we[le].states.active,pe=we[0].states.active,he=(ie=(oe=we[ke])==null?void 0:oe.states)==null?void 0:ie.active,re=(de=(Z=we[ae])==null?void 0:Z.states)==null?void 0:de.active;return J===le&&pe||he?"left":J===0&&q||re?"right":!1}function U(){u.value=!0,e.pauseOnHover&&S()}function F(){u.value=!1,E()}function H(W){b(m)||r.value.forEach((J,oe)=>{W===P(J,oe)&&(J.states.hover=!0)})}function R(){b(m)||r.value.forEach(W=>{W.states.hover=!1})}function z(W){s.value=W}function M(W){e.trigger==="hover"&&W!==s.value&&(s.value=W)}function N(){O(s.value-1)}function L(){O(s.value+1)}function V(){S(),e.pauseOnHover||E()}function Y(W){e.height==="auto"&&(d.value=W)}function $(){var W;const J=(W=i.default)==null?void 0:W.call(i);if(!J)return null;const ie=mh(J).filter(Z=>jr(Z)&&Z.type.name===BY);return(ie==null?void 0:ie.length)===2&&e.loop&&!p.value?(f.value=!0,ie):(f.value=!1,null)}Ze(()=>s.value,(W,J)=>{T(J),f.value&&(W=W%2,J=J%2),J>-1&&t(En,W,J)}),Ze(()=>e.autoplay,W=>{W?E():S()}),Ze(()=>e.loop,()=>{O(s.value)}),Ze(()=>e.interval,()=>{V()});const B=Tr();return Kt(()=>{Ze(()=>r.value,()=>{r.value.length>0&&O(e.initialIndex)},{immediate:!0}),B.value=co(c.value,()=>{T()}),E()}),Ar(()=>{S(),c.value&&B.value&&B.value.stop()}),Fn(hSe,{root:c,isCardType:p,isVertical:m,items:r,loop:e.loop,cardScale:e.cardScale,addItem:o,removeItem:a,setActiveItem:O,setContainerHeight:Y}),{root:c,activeIndex:s,arrowDisplay:h,hasLabel:g,hover:u,isCardType:p,items:r,isVertical:m,containerStyle:v,isItemsTwoLength:f,handleButtonEnter:H,handleButtonLeave:R,handleIndicatorClick:z,handleMouseEnter:U,handleMouseLeave:F,setActiveItem:O,prev:N,next:L,PlaceholderItem:$,isTwoLengthShow:C,throttledArrowClick:y,throttledIndicatorHover:_}},Kdt="ElCarousel",Gdt=ne({name:Kdt}),Ydt=ne({...Gdt,props:Ldt,emits:Udt,setup(e,{expose:t,emit:n}){const r=e,{root:o,activeIndex:a,arrowDisplay:i,hasLabel:s,hover:l,isCardType:u,items:c,isVertical:d,containerStyle:f,handleButtonEnter:h,handleButtonLeave:g,handleIndicatorClick:p,handleMouseEnter:m,handleMouseLeave:v,setActiveItem:y,prev:_,next:C,PlaceholderItem:S,isTwoLengthShow:E,throttledArrowClick:k,throttledIndicatorHover:O}=qdt(r,n),T=nt("carousel"),{t:P}=Un(),U=K(()=>{const z=[T.b(),T.m(r.direction)];return b(u)&&z.push(T.m("card")),z}),F=K(()=>{const z=[T.e("indicators"),T.em("indicators",r.direction)];return b(s)&&z.push(T.em("indicators","labels")),r.indicatorPosition==="outside"&&z.push(T.em("indicators","outside")),b(d)&&z.push(T.em("indicators","right")),z});function H(z){if(!r.motionBlur)return;const M=b(d)?`${T.namespace.value}-transitioning-vertical`:`${T.namespace.value}-transitioning`;z.currentTarget.classList.add(M)}function R(z){if(!r.motionBlur)return;const M=b(d)?`${T.namespace.value}-transitioning-vertical`:`${T.namespace.value}-transitioning`;z.currentTarget.classList.remove(M)}return t({activeIndex:a,setActiveItem:y,prev:_,next:C}),(z,M)=>(I(),j("div",{ref_key:"root",ref:o,class:ee(b(U)),onMouseenter:zt(b(m),["stop"]),onMouseleave:zt(b(v),["stop"])},[b(i)?(I(),Oe(xi,{key:0,name:"carousel-arrow-left",persisted:""},{default:A(()=>[rn(w("button",{type:"button",class:ee([b(T).e("arrow"),b(T).em("arrow","left")]),"aria-label":b(P)("el.carousel.leftArrow"),onMouseenter:N=>b(h)("left"),onMouseleave:b(g),onClick:zt(N=>b(k)(b(a)-1),["stop"])},[D(b(Tt),null,{default:A(()=>[D(b(uf))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[Pn,(z.arrow==="always"||b(l))&&(r.loop||b(a)>0)]])]),_:1})):be("v-if",!0),b(i)?(I(),Oe(xi,{key:1,name:"carousel-arrow-right",persisted:""},{default:A(()=>[rn(w("button",{type:"button",class:ee([b(T).e("arrow"),b(T).em("arrow","right")]),"aria-label":b(P)("el.carousel.rightArrow"),onMouseenter:N=>b(h)("right"),onMouseleave:b(g),onClick:zt(N=>b(k)(b(a)+1),["stop"])},[D(b(Tt),null,{default:A(()=>[D(b(_i))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[Pn,(z.arrow==="always"||b(l))&&(r.loop||b(a)rn((I(),j("li",{key:L,class:ee([b(T).e("indicator"),b(T).em("indicator",z.direction),b(T).is("active",L===b(a))]),onMouseenter:V=>b(O)(L),onClick:zt(V=>b(p)(L),["stop"])},[w("button",{class:ee(b(T).e("button")),"aria-label":b(P)("el.carousel.indicator",{index:L+1})},[b(s)?(I(),j("span",{key:0},se(N.props.label),1)):be("v-if",!0)],10,["aria-label"])],42,["onMouseenter","onClick"])),[[Pn,b(E)(L)]])),128))],2)):be("v-if",!0),r.motionBlur?(I(),j("svg",{key:3,xmlns:"http://www.w3.org/2000/svg",version:"1.1",style:{display:"none"}},[w("defs",null,[w("filter",{id:"elCarouselHorizontal"},[w("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"12,0"})]),w("filter",{id:"elCarouselVertical"},[w("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"0,10"})])])])):be("v-if",!0)],42,["onMouseenter","onMouseleave"]))}});var Xdt=vt(Ydt,[["__file","carousel.vue"]]);const Jdt=ht({name:{type:String,default:""},label:{type:[String,Number],default:""}}),Zdt=e=>{const t=kt(hSe),n=bn(),r=X(),o=X(!1),a=X(0),i=X(1),s=X(!1),l=X(!1),u=X(!1),c=X(!1),{isCardType:d,isVertical:f,cardScale:h}=t;function g(_,C,S){const E=S-1,k=C-1,O=C+1,T=S/2;return C===0&&_===E?-1:C===E&&_===0?S:_=T?S+1:_>O&&_-C>=T?-2:_}function p(_,C){var S,E;const k=b(f)?((S=t.root.value)==null?void 0:S.offsetHeight)||0:((E=t.root.value)==null?void 0:E.offsetWidth)||0;return u.value?k*((2-h)*(_-C)+1)/4:_{var E;const k=b(d),O=(E=t.items.value.length)!=null?E:Number.NaN,T=_===C;!k&&!Ln(S)&&(c.value=T||_===S),!T&&O>2&&t.loop&&(_=g(_,C,O));const P=b(f);s.value=T,k?(u.value=Math.round(Math.abs(_-C))<=1,a.value=p(_,C),i.value=b(s)?1:h):a.value=m(_,C,P),l.value=!0,T&&r.value&&t.setContainerHeight(r.value.offsetHeight)};function y(){if(t&&b(d)){const _=t.items.value.findIndex(({uid:C})=>C===n.uid);t.setActiveItem(_)}}return Kt(()=>{t.addItem({props:e,states:Bn({hover:o,translate:a,scale:i,active:s,ready:l,inStage:u,animating:c}),uid:n.uid,translateItem:v})}),gd(()=>{t.removeItem(n.uid)}),{carouselItemRef:r,active:s,animating:c,hover:o,inStage:u,isVertical:f,translate:a,isCardType:d,scale:i,ready:l,handleItemClick:y}},Qdt=ne({name:BY}),eft=ne({...Qdt,props:Jdt,setup(e){const t=e,n=nt("carousel"),{carouselItemRef:r,active:o,animating:a,hover:i,inStage:s,isVertical:l,translate:u,isCardType:c,scale:d,ready:f,handleItemClick:h}=Zdt(t),g=K(()=>[n.e("item"),n.is("active",o.value),n.is("in-stage",s.value),n.is("hover",i.value),n.is("animating",a.value),{[n.em("item","card")]:c.value,[n.em("item","card-vertical")]:c.value&&l.value}]),p=K(()=>{const v=`${`translate${b(l)?"Y":"X"}`}(${b(u)}px)`,y=`scale(${b(d)})`;return{transform:[v,y].join(" ")}});return(m,v)=>rn((I(),j("div",{ref_key:"carouselItemRef",ref:r,class:ee(b(g)),style:Nt(b(p)),onClick:b(h)},[b(c)?rn((I(),j("div",{key:0,class:ee(b(n).e("mask"))},null,2)),[[Pn,!b(o)]]):be("v-if",!0),Ne(m.$slots,"default")],14,["onClick"])),[[Pn,b(f)]])}});var pSe=vt(eft,[["__file","carousel-item.vue"]]);const tft=dn(Xdt,{CarouselItem:pSe}),nft=vo(pSe),gSe={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:Aa,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},...ts(["ariaControls"])},vSe={[en]:e=>$t(e)||Lt(e)||hr(e),change:e=>$t(e)||Lt(e)||hr(e)},_C=Symbol("checkboxGroupContextKey"),rft=({model:e,isChecked:t})=>{const n=kt(_C,void 0),r=K(()=>{var a,i;const s=(a=n==null?void 0:n.max)==null?void 0:a.value,l=(i=n==null?void 0:n.min)==null?void 0:i.value;return!Ln(s)&&e.value.length>=s&&!t.value||!Ln(l)&&e.value.length<=l&&t.value});return{isDisabled:ns(K(()=>(n==null?void 0:n.disabled.value)||r.value)),isLimitDisabled:r}},oft=(e,{model:t,isLimitExceeded:n,hasOwnLabel:r,isDisabled:o,isLabeledByFormItem:a})=>{const i=kt(_C,void 0),{formItem:s}=ws(),{emit:l}=bn();function u(g){var p,m,v,y;return[!0,e.trueValue,e.trueLabel].includes(g)?(m=(p=e.trueValue)!=null?p:e.trueLabel)!=null?m:!0:(y=(v=e.falseValue)!=null?v:e.falseLabel)!=null?y:!1}function c(g,p){l(En,u(g),p)}function d(g){if(n.value)return;const p=g.target;l(En,u(p.checked),g)}async function f(g){n.value||!r.value&&!o.value&&a.value&&(g.composedPath().some(v=>v.tagName==="LABEL")||(t.value=u([!1,e.falseValue,e.falseLabel].includes(t.value)),await It(),c(t.value,g)))}const h=K(()=>(i==null?void 0:i.validateEvent)||e.validateEvent);return Ze(()=>e.modelValue,()=>{h.value&&(s==null||s.validate("change").catch(g=>void 0))}),{handleChange:d,onClickRoot:f}},aft=e=>{const t=X(!1),{emit:n}=bn(),r=kt(_C,void 0),o=K(()=>Ln(r)===!1),a=X(!1),i=K({get(){var s,l;return o.value?(s=r==null?void 0:r.modelValue)==null?void 0:s.value:(l=e.modelValue)!=null?l:t.value},set(s){var l,u;o.value&&ct(s)?(a.value=((l=r==null?void 0:r.max)==null?void 0:l.value)!==void 0&&s.length>(r==null?void 0:r.max.value)&&s.length>i.value.length,a.value===!1&&((u=r==null?void 0:r.changeEvent)==null||u.call(r,s))):(n(en,s),t.value=s)}});return{model:i,isGroup:o,isLimitExceeded:a}},ift=(e,t,{model:n})=>{const r=kt(_C,void 0),o=X(!1),a=K(()=>ql(e.value)?e.label:e.value),i=K(()=>{const c=n.value;return hr(c)?c:ct(c)?vn(a.value)?c.map(Cr).some(d=>mi(d,a.value)):c.map(Cr).includes(a.value):c!=null?c===e.trueValue||c===e.trueLabel:!!c}),s=ma(K(()=>{var c;return(c=r==null?void 0:r.size)==null?void 0:c.value}),{prop:!0}),l=ma(K(()=>{var c;return(c=r==null?void 0:r.size)==null?void 0:c.value})),u=K(()=>!!t.default||!ql(a.value));return{checkboxButtonSize:s,isChecked:i,isFocused:o,checkboxSize:l,hasOwnLabel:u,actualValue:a}},mSe=(e,t)=>{const{formItem:n}=ws(),{model:r,isGroup:o,isLimitExceeded:a}=aft(e),{isFocused:i,isChecked:s,checkboxButtonSize:l,checkboxSize:u,hasOwnLabel:c,actualValue:d}=ift(e,t,{model:r}),{isDisabled:f}=rft({model:r,isChecked:s}),{inputId:h,isLabeledByFormItem:g}=vd(e,{formItemContext:n,disableIdGeneration:c,disableIdManagement:o}),{handleChange:p,onClickRoot:m}=oft(e,{model:r,isLimitExceeded:a,hasOwnLabel:c,isDisabled:f,isLabeledByFormItem:g});return(()=>{function y(){var _,C;ct(r.value)&&!r.value.includes(d.value)?r.value.push(d.value):r.value=(C=(_=e.trueValue)!=null?_:e.trueLabel)!=null?C:!0}e.checked&&y()})(),mg({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},K(()=>o.value&&ql(e.value))),mg({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},K(()=>!!e.trueLabel)),mg({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},K(()=>!!e.falseLabel)),{inputId:h,isLabeledByFormItem:g,isChecked:s,isDisabled:f,isFocused:i,checkboxButtonSize:l,checkboxSize:u,hasOwnLabel:c,model:r,actualValue:d,handleChange:p,onClickRoot:m}},sft=ne({name:"ElCheckbox"}),lft=ne({...sft,props:gSe,emits:vSe,setup(e){const t=e,n=La(),{inputId:r,isLabeledByFormItem:o,isChecked:a,isDisabled:i,isFocused:s,checkboxSize:l,hasOwnLabel:u,model:c,actualValue:d,handleChange:f,onClickRoot:h}=mSe(t,n),g=nt("checkbox"),p=K(()=>[g.b(),g.m(l.value),g.is("disabled",i.value),g.is("bordered",t.border),g.is("checked",a.value)]),m=K(()=>[g.e("input"),g.is("disabled",i.value),g.is("checked",a.value),g.is("indeterminate",t.indeterminate),g.is("focus",s.value)]);return(v,y)=>(I(),Oe(_n(!b(u)&&b(o)?"span":"label"),{class:ee(b(p)),"aria-controls":v.indeterminate?v.ariaControls:null,onClick:b(h)},{default:A(()=>{var _,C,S,E;return[w("span",{class:ee(b(m))},[v.trueValue||v.falseValue||v.trueLabel||v.falseLabel?rn((I(),j("input",{key:0,id:b(r),"onUpdate:modelValue":k=>kr(c)?c.value=k:null,class:ee(b(g).e("original")),type:"checkbox",indeterminate:v.indeterminate,name:v.name,tabindex:v.tabindex,disabled:b(i),"true-value":(C=(_=v.trueValue)!=null?_:v.trueLabel)!=null?C:!0,"false-value":(E=(S=v.falseValue)!=null?S:v.falseLabel)!=null?E:!1,onChange:b(f),onFocus:k=>s.value=!0,onBlur:k=>s.value=!1,onClick:zt(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[PM,b(c)]]):rn((I(),j("input",{key:1,id:b(r),"onUpdate:modelValue":k=>kr(c)?c.value=k:null,class:ee(b(g).e("original")),type:"checkbox",indeterminate:v.indeterminate,disabled:b(i),value:b(d),name:v.name,tabindex:v.tabindex,onChange:b(f),onFocus:k=>s.value=!0,onBlur:k=>s.value=!1,onClick:zt(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","disabled","value","name","tabindex","onChange","onFocus","onBlur","onClick"])),[[PM,b(c)]]),w("span",{class:ee(b(g).e("inner"))},null,2)],2),b(u)?(I(),j("span",{key:0,class:ee(b(g).e("label"))},[Ne(v.$slots,"default"),v.$slots.default?be("v-if",!0):(I(),j(tt,{key:0},[ce(se(v.label),1)],64))],2)):be("v-if",!0)]}),_:3},8,["class","aria-controls","onClick"]))}});var uft=vt(lft,[["__file","checkbox.vue"]]);const cft=ne({name:"ElCheckboxButton"}),dft=ne({...cft,props:gSe,emits:vSe,setup(e){const t=e,n=La(),{isFocused:r,isChecked:o,isDisabled:a,checkboxButtonSize:i,model:s,actualValue:l,handleChange:u}=mSe(t,n),c=kt(_C,void 0),d=nt("checkbox"),f=K(()=>{var g,p,m,v;const y=(p=(g=c==null?void 0:c.fill)==null?void 0:g.value)!=null?p:"";return{backgroundColor:y,borderColor:y,color:(v=(m=c==null?void 0:c.textColor)==null?void 0:m.value)!=null?v:"",boxShadow:y?`-1px 0 0 0 ${y}`:void 0}}),h=K(()=>[d.b("button"),d.bm("button",i.value),d.is("disabled",a.value),d.is("checked",o.value),d.is("focus",r.value)]);return(g,p)=>{var m,v,y,_;return I(),j("label",{class:ee(b(h))},[g.trueValue||g.falseValue||g.trueLabel||g.falseLabel?rn((I(),j("input",{key:0,"onUpdate:modelValue":C=>kr(s)?s.value=C:null,class:ee(b(d).be("button","original")),type:"checkbox",name:g.name,tabindex:g.tabindex,disabled:b(a),"true-value":(v=(m=g.trueValue)!=null?m:g.trueLabel)!=null?v:!0,"false-value":(_=(y=g.falseValue)!=null?y:g.falseLabel)!=null?_:!1,onChange:b(u),onFocus:C=>r.value=!0,onBlur:C=>r.value=!1,onClick:zt(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[PM,b(s)]]):rn((I(),j("input",{key:1,"onUpdate:modelValue":C=>kr(s)?s.value=C:null,class:ee(b(d).be("button","original")),type:"checkbox",name:g.name,tabindex:g.tabindex,disabled:b(a),value:b(l),onChange:b(u),onFocus:C=>r.value=!0,onBlur:C=>r.value=!1,onClick:zt(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","value","onChange","onFocus","onBlur","onClick"])),[[PM,b(s)]]),g.$slots.default||g.label?(I(),j("span",{key:2,class:ee(b(d).be("button","inner")),style:Nt(b(o)?b(f):void 0)},[Ne(g.$slots,"default",{},()=>[ce(se(g.label),1)])],6)):be("v-if",!0)],2)}}});var ySe=vt(dft,[["__file","checkbox-button.vue"]]);const fft=ht({modelValue:{type:$e(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:Aa,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},...ts(["ariaLabel"])}),hft={[en]:e=>ct(e),change:e=>ct(e)},pft=ne({name:"ElCheckboxGroup"}),gft=ne({...pft,props:fft,emits:hft,setup(e,{emit:t}){const n=e,r=nt("checkbox"),{formItem:o}=ws(),{inputId:a,isLabeledByFormItem:i}=vd(n,{formItemContext:o}),s=async u=>{t(en,u),await It(),t(En,u)},l=K({get(){return n.modelValue},set(u){s(u)}});return Fn(_C,{...Hd(Ra(n),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:l,changeEvent:s}),Ze(()=>n.modelValue,()=>{n.validateEvent&&(o==null||o.validate("change").catch(u=>void 0))}),(u,c)=>{var d;return I(),Oe(_n(u.tag),{id:b(a),class:ee(b(r).b("group")),role:"group","aria-label":b(i)?void 0:u.ariaLabel||"checkbox-group","aria-labelledby":b(i)?(d=b(o))==null?void 0:d.labelId:void 0},{default:A(()=>[Ne(u.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var bSe=vt(gft,[["__file","checkbox-group.vue"]]);const Xi=dn(uft,{CheckboxButton:ySe,CheckboxGroup:bSe}),vft=vo(ySe),yre=vo(bSe),_Se=ht({modelValue:{type:[String,Number,Boolean],default:void 0},size:Aa,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),mft=ht({..._Se,border:Boolean}),wSe={[en]:e=>$t(e)||Lt(e)||hr(e),[En]:e=>$t(e)||Lt(e)||hr(e)},CSe=Symbol("radioGroupKey"),xSe=(e,t)=>{const n=X(),r=kt(CSe,void 0),o=K(()=>!!r),a=K(()=>ql(e.value)?e.label:e.value),i=K({get(){return o.value?r.modelValue:e.modelValue},set(d){o.value?r.changeEvent(d):t&&t(en,d),n.value.checked=e.modelValue===a.value}}),s=ma(K(()=>r==null?void 0:r.size)),l=ns(K(()=>r==null?void 0:r.disabled)),u=X(!1),c=K(()=>l.value||o.value&&i.value!==a.value?-1:0);return mg({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},K(()=>o.value&&ql(e.value))),{radioRef:n,isGroup:o,radioGroup:r,focus:u,size:s,disabled:l,tabIndex:c,modelValue:i,actualValue:a}},yft=ne({name:"ElRadio"}),bft=ne({...yft,props:mft,emits:wSe,setup(e,{emit:t}){const n=e,r=nt("radio"),{radioRef:o,radioGroup:a,focus:i,size:s,disabled:l,modelValue:u,actualValue:c}=xSe(n,t);function d(){It(()=>t(En,u.value))}return(f,h)=>{var g;return I(),j("label",{class:ee([b(r).b(),b(r).is("disabled",b(l)),b(r).is("focus",b(i)),b(r).is("bordered",f.border),b(r).is("checked",b(u)===b(c)),b(r).m(b(s))])},[w("span",{class:ee([b(r).e("input"),b(r).is("disabled",b(l)),b(r).is("checked",b(u)===b(c))])},[rn(w("input",{ref_key:"radioRef",ref:o,"onUpdate:modelValue":p=>kr(u)?u.value=p:null,class:ee(b(r).e("original")),value:b(c),name:f.name||((g=b(a))==null?void 0:g.name),disabled:b(l),checked:b(u)===b(c),type:"radio",onFocus:p=>i.value=!0,onBlur:p=>i.value=!1,onChange:d,onClick:zt(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","checked","onFocus","onBlur","onClick"]),[[SCe,b(u)]]),w("span",{class:ee(b(r).e("inner"))},null,2)],2),w("span",{class:ee(b(r).e("label")),onKeydown:zt(()=>{},["stop"])},[Ne(f.$slots,"default",{},()=>[ce(se(f.label),1)])],42,["onKeydown"])],2)}}});var _ft=vt(bft,[["__file","radio.vue"]]);const wft=ht({..._Se}),Cft=ne({name:"ElRadioButton"}),xft=ne({...Cft,props:wft,setup(e){const t=e,n=nt("radio"),{radioRef:r,focus:o,size:a,disabled:i,modelValue:s,radioGroup:l,actualValue:u}=xSe(t),c=K(()=>({backgroundColor:(l==null?void 0:l.fill)||"",borderColor:(l==null?void 0:l.fill)||"",boxShadow:l!=null&&l.fill?`-1px 0 0 0 ${l.fill}`:"",color:(l==null?void 0:l.textColor)||""}));return(d,f)=>{var h;return I(),j("label",{class:ee([b(n).b("button"),b(n).is("active",b(s)===b(u)),b(n).is("disabled",b(i)),b(n).is("focus",b(o)),b(n).bm("button",b(a))])},[rn(w("input",{ref_key:"radioRef",ref:r,"onUpdate:modelValue":g=>kr(s)?s.value=g:null,class:ee(b(n).be("button","original-radio")),value:b(u),type:"radio",name:d.name||((h=b(l))==null?void 0:h.name),disabled:b(i),onFocus:g=>o.value=!0,onBlur:g=>o.value=!1,onClick:zt(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","onFocus","onBlur","onClick"]),[[SCe,b(s)]]),w("span",{class:ee(b(n).be("button","inner")),style:Nt(b(s)===b(u)?b(c):{}),onKeydown:zt(()=>{},["stop"])},[Ne(d.$slots,"default",{},()=>[ce(se(d.label),1)])],46,["onKeydown"])],2)}}});var SSe=vt(xft,[["__file","radio-button.vue"]]);const Sft=ht({id:{type:String,default:void 0},size:Aa,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},...ts(["ariaLabel"])}),Dft=wSe,Eft=ne({name:"ElRadioGroup"}),kft=ne({...Eft,props:Sft,emits:Dft,setup(e,{emit:t}){const n=e,r=nt("radio"),o=Gi(),a=X(),{formItem:i}=ws(),{inputId:s,isLabeledByFormItem:l}=vd(n,{formItemContext:i}),u=d=>{t(en,d),It(()=>t(En,d))};Kt(()=>{const d=a.value.querySelectorAll("[type=radio]"),f=d[0];!Array.from(d).some(h=>h.checked)&&f&&(f.tabIndex=0)});const c=K(()=>n.name||o.value);return Fn(CSe,Bn({...Ra(n),changeEvent:u,name:c})),Ze(()=>n.modelValue,()=>{n.validateEvent&&(i==null||i.validate("change").catch(d=>void 0))}),(d,f)=>(I(),j("div",{id:b(s),ref_key:"radioGroupRef",ref:a,class:ee(b(r).b("group")),role:"radiogroup","aria-label":b(l)?void 0:d.ariaLabel||"radio-group","aria-labelledby":b(l)?b(i).labelId:void 0},[Ne(d.$slots,"default")],10,["id","aria-label","aria-labelledby"]))}});var DSe=vt(kft,[["__file","radio-group.vue"]]);const VL=dn(_ft,{RadioButton:SSe,RadioGroup:DSe}),w_=vo(DSe),bT=vo(SSe);function Aft(e){return!!(e!=null&&e.every(t=>t.type===da))}var Tft=ne({name:"NodeContent",setup(){return{ns:nt("cascader-node")}},render(){const{ns:e}=this,{node:t,panel:n}=this.$parent,{data:r,label:o}=t,{renderLabelFn:a}=n,i=()=>{let s=a==null?void 0:a({node:t,data:r});return Aft(s)&&(s=o),s??o};return Vt("span",{class:e.e("label")},i())}});const bre=Symbol(),Oft=ne({name:"ElCascaderNode",components:{ElCheckbox:Xi,ElRadio:VL,NodeContent:Tft,ElIcon:Tt,Check:Za,Loading:Kl,ArrowRight:_i},props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=kt(bre),r=nt("cascader-node"),o=K(()=>n.isHoverMenu),a=K(()=>n.config.multiple),i=K(()=>n.config.checkStrictly),s=K(()=>{var E;return(E=n.checkedNodes[0])==null?void 0:E.uid}),l=K(()=>e.node.isDisabled),u=K(()=>e.node.isLeaf),c=K(()=>i.value&&!u.value||!l.value),d=K(()=>h(n.expandingNode)),f=K(()=>i.value&&n.checkedNodes.some(h)),h=E=>{var k;const{level:O,uid:T}=e.node;return((k=E==null?void 0:E.pathNodes[O-1])==null?void 0:k.uid)===T},g=()=>{d.value||n.expandNode(e.node)},p=E=>{const{node:k}=e;E!==k.checked&&n.handleCheckChange(k,E)},m=()=>{n.lazyLoad(e.node,()=>{u.value||g()})},v=E=>{o.value&&(y(),!u.value&&t("expand",E))},y=()=>{const{node:E}=e;!c.value||E.loading||(E.loaded?g():m())},_=()=>{o.value&&!u.value||(u.value&&!l.value&&!i.value&&!a.value?S(!0):y())},C=E=>{i.value?(p(E),e.node.loaded&&g()):S(E)},S=E=>{e.node.loaded?(p(E),!i.value&&g()):m()};return{panel:n,isHoverMenu:o,multiple:a,checkStrictly:i,checkedNodeId:s,isDisabled:l,isLeaf:u,expandable:c,inExpandingPath:d,inCheckedPath:f,ns:r,handleHoverExpand:v,handleExpand:y,handleClick:_,handleCheck:S,handleSelectCheck:C}}});function Fft(e,t,n,r,o,a){const i=yn("el-checkbox"),s=yn("el-radio"),l=yn("check"),u=yn("el-icon"),c=yn("node-content"),d=yn("loading"),f=yn("arrow-right");return I(),j("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!e.isLeaf,"aria-owns":e.isLeaf?void 0:e.menuId,"aria-expanded":e.inExpandingPath,tabindex:e.expandable?-1:void 0,class:ee([e.ns.b(),e.ns.is("selectable",e.checkStrictly),e.ns.is("active",e.node.checked),e.ns.is("disabled",!e.expandable),e.inExpandingPath&&"in-active-path",e.inCheckedPath&&"in-checked-path"]),onMouseenter:e.handleHoverExpand,onFocus:e.handleHoverExpand,onClick:e.handleClick},[be(" prefix "),e.multiple?(I(),Oe(i,{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:e.isDisabled,onClick:zt(()=>{},["stop"]),"onUpdate:modelValue":e.handleSelectCheck},null,8,["model-value","indeterminate","disabled","onClick","onUpdate:modelValue"])):e.checkStrictly?(I(),Oe(s,{key:1,"model-value":e.checkedNodeId,label:e.node.uid,disabled:e.isDisabled,"onUpdate:modelValue":e.handleSelectCheck,onClick:zt(()=>{},["stop"])},{default:A(()=>[be(` + Add an empty element to avoid render label, + do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485 + `),w("span")]),_:1},8,["model-value","label","disabled","onUpdate:modelValue","onClick"])):e.isLeaf&&e.node.checked?(I(),Oe(u,{key:2,class:ee(e.ns.e("prefix"))},{default:A(()=>[D(l)]),_:1},8,["class"])):be("v-if",!0),be(" content "),D(c),be(" postfix "),e.isLeaf?be("v-if",!0):(I(),j(tt,{key:3},[e.node.loading?(I(),Oe(u,{key:0,class:ee([e.ns.is("loading"),e.ns.e("postfix")])},{default:A(()=>[D(d)]),_:1},8,["class"])):(I(),Oe(u,{key:1,class:ee(["arrow-right",e.ns.e("postfix")])},{default:A(()=>[D(f)]),_:1},8,["class"]))],64))],42,["id","aria-haspopup","aria-owns","aria-expanded","tabindex","onMouseenter","onFocus","onClick"])}var Ift=vt(Oft,[["render",Fft],["__file","node.vue"]]);const Mft=ne({name:"ElCascaderMenu",components:{Loading:Kl,ElIcon:Tt,ElScrollbar:id,ElCascaderNode:Ift},props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(e){const t=bn(),n=nt("cascader-menu"),{t:r}=Un(),o=Gi();let a=null,i=null;const s=kt(bre),l=X(null),u=K(()=>!e.nodes.length),c=K(()=>!s.initialLoaded),d=K(()=>`${o.value}-${e.index}`),f=m=>{a=m.target},h=m=>{if(!(!s.isHoverMenu||!a||!l.value))if(a.contains(m.target)){g();const v=t.vnode.el,{left:y}=v.getBoundingClientRect(),{offsetWidth:_,offsetHeight:C}=v,S=m.clientX-y,E=a.offsetTop,k=E+a.offsetHeight;l.value.innerHTML=` + + + `}else i||(i=window.setTimeout(p,s.config.hoverThreshold))},g=()=>{i&&(clearTimeout(i),i=null)},p=()=>{l.value&&(l.value.innerHTML="",g())};return{ns:n,panel:s,hoverZone:l,isEmpty:u,isLoading:c,menuId:d,t:r,handleExpand:f,handleMouseMove:h,clearHoverZone:p}}});function Pft(e,t,n,r,o,a){const i=yn("el-cascader-node"),s=yn("loading"),l=yn("el-icon"),u=yn("el-scrollbar");return I(),Oe(u,{key:e.menuId,tag:"ul",role:"menu",class:ee(e.ns.b()),"wrap-class":e.ns.e("wrap"),"view-class":[e.ns.e("list"),e.ns.is("empty",e.isEmpty)],onMousemove:e.handleMouseMove,onMouseleave:e.clearHoverZone},{default:A(()=>{var c;return[(I(!0),j(tt,null,wt(e.nodes,d=>(I(),Oe(i,{key:d.uid,node:d,"menu-id":e.menuId,onExpand:e.handleExpand},null,8,["node","menu-id","onExpand"]))),128)),e.isLoading?(I(),j("div",{key:0,class:ee(e.ns.e("empty-text"))},[D(l,{size:"14",class:ee(e.ns.is("loading"))},{default:A(()=>[D(s)]),_:1},8,["class"]),ce(" "+se(e.t("el.cascader.loading")),1)],2)):e.isEmpty?(I(),j("div",{key:1,class:ee(e.ns.e("empty-text"))},[Ne(e.$slots,"empty",{},()=>[ce(se(e.t("el.cascader.noData")),1)])],2)):(c=e.panel)!=null&&c.isHoverMenu?(I(),j(tt,{key:2},[be(" eslint-disable-next-line vue/html-self-closing "),(I(),j("svg",{ref:"hoverZone",class:ee(e.ns.e("hover-zone"))},null,2))],2112)):be("v-if",!0)]}),_:3},8,["class","wrap-class","view-class","onMousemove","onMouseleave"])}var $ft=vt(Mft,[["render",Pft],["__file","menu.vue"]]);const _re=(e="")=>e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),fh=e=>eT(e);let Bft=0;const Rft=e=>{const t=[e];let{parent:n}=e;for(;n;)t.unshift(n),n=n.parent;return t};let NY=class LY{constructor(t,n,r,o=!1){this.data=t,this.config=n,this.parent=r,this.root=o,this.uid=Bft++,this.checked=!1,this.indeterminate=!1,this.loading=!1;const{value:a,label:i,children:s}=n,l=t[s],u=Rft(this);this.level=o?0:r?r.level+1:1,this.value=t[a],this.label=t[i],this.pathNodes=u,this.pathValues=u.map(c=>c.value),this.pathLabels=u.map(c=>c.label),this.childrenData=l,this.children=(l||[]).map(c=>new LY(c,n,this)),this.loaded=!n.lazy||this.isLeaf||!Vu(l)}get isDisabled(){const{data:t,parent:n,config:r}=this,{disabled:o,checkStrictly:a}=r;return(Rt(o)?o(t,this):!!t[o])||!a&&(n==null?void 0:n.isDisabled)}get isLeaf(){const{data:t,config:n,childrenData:r,loaded:o}=this,{lazy:a,leaf:i}=n,s=Rt(i)?i(t,this):t[i];return Ln(s)?a&&!o?!1:!(ct(r)&&r.length):!!s}get valueByOption(){return this.config.emitPath?this.pathValues:this.value}appendChild(t){const{childrenData:n,children:r}=this,o=new LY(t,this.config,this);return ct(n)?n.push(t):this.childrenData=[t],r.push(o),o}calcText(t,n){const r=t?this.pathLabels.join(n):this.label;return this.text=r,r}broadcast(t,...n){const r=`onParent${fh(t)}`;this.children.forEach(o=>{o&&(o.broadcast(t,...n),o[r]&&o[r](...n))})}emit(t,...n){const{parent:r}=this,o=`onChild${fh(t)}`;r&&(r[o]&&r[o](...n),r.emit(t,...n))}onParentCheck(t){this.isDisabled||this.setCheckState(t)}onChildCheck(){const{children:t}=this,n=t.filter(o=>!o.isDisabled),r=n.length?n.every(o=>o.checked):!1;this.setCheckState(r)}setCheckState(t){const n=this.children.length,r=this.children.reduce((o,a)=>{const i=a.checked?1:a.indeterminate?.5:0;return o+i},0);this.checked=this.loaded&&this.children.filter(o=>!o.isDisabled).every(o=>o.loaded&&o.checked)&&t,this.indeterminate=this.loaded&&r!==n&&r>0}doCheck(t){if(this.checked===t)return;const{checkStrictly:n,multiple:r}=this.config;n||!r?this.checked=t:(this.broadcast("check",t),this.setCheckState(t),this.emit("check"))}};const UY=(e,t)=>e.reduce((n,r)=>(r.isLeaf?n.push(r):(!t&&n.push(r),n=n.concat(UY(r.children,t))),n),[]);class khe{constructor(t,n){this.config=n;const r=(t||[]).map(o=>new NY(o,this.config));this.nodes=r,this.allNodes=UY(r,!1),this.leafNodes=UY(r,!0)}getNodes(){return this.nodes}getFlattedNodes(t){return t?this.leafNodes:this.allNodes}appendNode(t,n){const r=n?n.appendChild(t):new NY(t,this.config);n||this.nodes.push(r),this.appendAllNodesAndLeafNodes(r)}appendNodes(t,n){t.forEach(r=>this.appendNode(r,n))}appendAllNodesAndLeafNodes(t){this.allNodes.push(t),t.isLeaf&&this.leafNodes.push(t),t.children&&t.children.forEach(n=>{this.appendAllNodesAndLeafNodes(n)})}getNodeByValue(t,n=!1){return ql(t)?null:this.getFlattedNodes(n).find(o=>mi(o.value,t)||mi(o.pathValues,t))||null}getSameNode(t){return t&&this.getFlattedNodes(!1).find(({value:r,level:o})=>mi(t.value,r)&&t.level===o)||null}}const ESe=ht({modelValue:{type:$e([Number,String,Array])},options:{type:$e(Array),default:()=>[]},props:{type:$e(Object),default:()=>({})}}),Nft={expandTrigger:"click",multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:fr,value:"value",label:"label",children:"children",leaf:"leaf",disabled:"disabled",hoverThreshold:500},Lft=e=>K(()=>({...Nft,...e.props})),Ahe=e=>{if(!e)return 0;const t=e.id.split("-");return Number(t[t.length-2])},Uft=e=>{if(!e)return;const t=e.querySelector("input");t?t.click():E5e(e)&&e.click()},Vft=(e,t)=>{const n=t.slice(0),r=n.map(a=>a.uid),o=e.reduce((a,i)=>{const s=r.indexOf(i.uid);return s>-1&&(a.push(i),n.splice(s,1),r.splice(s,1)),a},[]);return o.push(...n),o},The=e=>[...new Set(e)],yl=e=>!e&&e!==0?[]:ct(e)?e:[e],zft=ne({name:"ElCascaderPanel",components:{ElCascaderMenu:$ft},props:{...ESe,border:{type:Boolean,default:!0},renderLabel:Function},emits:[en,En,"close","expand-change"],setup(e,{emit:t,slots:n}){let r=!1;const o=nt("cascader"),a=Lft(e);let i=null;const s=X(!0),l=X([]),u=X(null),c=X([]),d=X(null),f=X([]),h=K(()=>a.value.expandTrigger==="hover"),g=K(()=>e.renderLabel||n.default),p=()=>{const{options:F}=e,H=a.value;r=!1,i=new khe(F,H),c.value=[i.getNodes()],H.lazy&&Vu(e.options)?(s.value=!1,m(void 0,R=>{R&&(i=new khe(R,H),c.value=[i.getNodes()]),s.value=!0,O(!1,!0)})):O(!1,!0)},m=(F,H)=>{const R=a.value;F=F||new NY({},R,void 0,!0),F.loading=!0;const z=M=>{const N=F,L=N.root?null:N;M&&(i==null||i.appendNodes(M,L)),N.loading=!1,N.loaded=!0,N.childrenData=N.childrenData||[],H&&H(M)};R.lazyLoad(F,z)},v=(F,H)=>{var R;const{level:z}=F,M=c.value.slice(0,z);let N;F.isLeaf?N=F.pathNodes[z-2]:(N=F,M.push(F.children)),((R=d.value)==null?void 0:R.uid)!==(N==null?void 0:N.uid)&&(d.value=F,c.value=M,!H&&t("expand-change",(F==null?void 0:F.pathValues)||[]))},y=(F,H,R=!0)=>{const{checkStrictly:z,multiple:M}=a.value,N=f.value[0];r=!0,!M&&(N==null||N.doCheck(!1)),F.doCheck(H),k(),R&&!M&&!z&&t("close"),!R&&!M&&!z&&_(F)},_=F=>{F&&(F=F.parent,_(F),F&&v(F))},C=F=>i==null?void 0:i.getFlattedNodes(F),S=F=>{var H;return(H=C(F))==null?void 0:H.filter(R=>R.checked!==!1)},E=()=>{f.value.forEach(F=>F.doCheck(!1)),k(),c.value=c.value.slice(0,1),d.value=null,t("expand-change",[])},k=()=>{var F;const{checkStrictly:H,multiple:R}=a.value,z=f.value,M=S(!H),N=Vft(z,M),L=N.map(V=>V.valueByOption);f.value=N,u.value=R?L:(F=L[0])!=null?F:null},O=(F=!1,H=!1)=>{const{modelValue:R}=e,{lazy:z,multiple:M,checkStrictly:N}=a.value,L=!N;if(!(!s.value||r||!H&&mi(R,u.value)))if(z&&!F){const Y=The(_Xe(yl(R))).map($=>i==null?void 0:i.getNodeByValue($)).filter($=>!!$&&!$.loaded&&!$.loading);Y.length?Y.forEach($=>{m($,()=>O(!1,H))}):O(!0,H)}else{const V=M?yl(R):[R],Y=The(V.map($=>i==null?void 0:i.getNodeByValue($,L)));T(Y,H),u.value=RM(R)}},T=(F,H=!0)=>{const{checkStrictly:R}=a.value,z=f.value,M=F.filter(V=>!!V&&(R||V.isLeaf)),N=i==null?void 0:i.getSameNode(d.value),L=H&&N||M[0];L?L.pathNodes.forEach(V=>v(V,!0)):d.value=null,z.forEach(V=>V.doCheck(!1)),Bn(M).forEach(V=>V.doCheck(!0)),f.value=M,It(P)},P=()=>{Nn&&l.value.forEach(F=>{const H=F==null?void 0:F.$el;if(H){const R=H.querySelector(`.${o.namespace.value}-scrollbar__wrap`),z=H.querySelector(`.${o.b("node")}.${o.is("active")}:last-child`)||H.querySelector(`.${o.b("node")}.in-active-path`);Wne(R,z)}})},U=F=>{const H=F.target,{code:R}=F;switch(R){case St.up:case St.down:{F.preventDefault();const z=R===St.up?-1:1;HF(k5e(H,z,`.${o.b("node")}[tabindex="-1"]`));break}case St.left:{F.preventDefault();const z=l.value[Ahe(H)-1],M=z==null?void 0:z.$el.querySelector(`.${o.b("node")}[aria-expanded="true"]`);HF(M);break}case St.right:{F.preventDefault();const z=l.value[Ahe(H)+1],M=z==null?void 0:z.$el.querySelector(`.${o.b("node")}[tabindex="-1"]`);HF(M);break}case St.enter:case St.numpadEnter:Uft(H);break}};return Fn(bre,Bn({config:a,expandingNode:d,checkedNodes:f,isHoverMenu:h,initialLoaded:s,renderLabelFn:g,lazyLoad:m,expandNode:v,handleCheckChange:y})),Ze([a,()=>e.options],p,{deep:!0,immediate:!0}),Ze(()=>e.modelValue,()=>{r=!1,O()},{deep:!0}),Ze(()=>u.value,F=>{mi(F,e.modelValue)||(t(en,F),t(En,F))}),K8e(()=>l.value=[]),Kt(()=>!Vu(e.modelValue)&&O()),{ns:o,menuList:l,menus:c,checkedNodes:f,handleKeyDown:U,handleCheckChange:y,getFlattedNodes:C,getCheckedNodes:S,clearCheckedNodes:E,calculateCheckedValue:k,scrollToExpandingNode:P}}});function jft(e,t,n,r,o,a){const i=yn("el-cascader-menu");return I(),j("div",{class:ee([e.ns.b("panel"),e.ns.is("bordered",e.border)]),onKeydown:e.handleKeyDown},[(I(!0),j(tt,null,wt(e.menus,(s,l)=>(I(),Oe(i,{key:l,ref_for:!0,ref:u=>e.menuList[l]=u,index:l,nodes:[...s]},{empty:A(()=>[Ne(e.$slots,"empty")]),_:2},1032,["index","nodes"]))),128))],42,["onKeydown"])}var Hft=vt(zft,[["render",jft],["__file","index.vue"]]);const kSe=dn(Hft),Og=ht({type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:String,size:{type:String,values:Gh},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),Wft={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},qft=ne({name:"ElTag"}),Kft=ne({...qft,props:Og,emits:Wft,setup(e,{emit:t}){const n=e,r=ma(),o=nt("tag"),a=K(()=>{const{type:u,hit:c,effect:d,closable:f,round:h}=n;return[o.b(),o.is("closable",f),o.m(u||"primary"),o.m(r.value),o.m(d),o.is("hit",c),o.is("round",h)]}),i=u=>{t("close",u)},s=u=>{t("click",u)},l=u=>{var c,d,f;(f=(d=(c=u==null?void 0:u.component)==null?void 0:c.subTree)==null?void 0:d.component)!=null&&f.bum&&(u.component.subTree.component.bum=null)};return(u,c)=>u.disableTransitions?(I(),j("span",{key:0,class:ee(b(a)),style:Nt({backgroundColor:u.color}),onClick:s},[w("span",{class:ee(b(o).e("content"))},[Ne(u.$slots,"default")],2),u.closable?(I(),Oe(b(Tt),{key:0,class:ee(b(o).e("close")),onClick:zt(i,["stop"])},{default:A(()=>[D(b(Gs))]),_:1},8,["class","onClick"])):be("v-if",!0)],6)):(I(),Oe(xi,{key:1,name:`${b(o).namespace.value}-zoom-in-center`,appear:"",onVnodeMounted:l},{default:A(()=>[w("span",{class:ee(b(a)),style:Nt({backgroundColor:u.color}),onClick:s},[w("span",{class:ee(b(o).e("content"))},[Ne(u.$slots,"default")],2),u.closable?(I(),Oe(b(Tt),{key:0,class:ee(b(o).e("close")),onClick:zt(i,["stop"])},{default:A(()=>[D(b(Gs))]),_:1},8,["class","onClick"])):be("v-if",!0)],6)]),_:3},8,["name"]))}});var Gft=vt(Kft,[["__file","tag.vue"]]);const Si=dn(Gft),Yft=ht({...ESe,size:Aa,placeholder:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:{type:$e(Function),default:(e,t)=>e.text.includes(t)},separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,maxCollapseTags:{type:Number,default:1},collapseTagsTooltip:{type:Boolean,default:!1},maxCollapseTagsTooltipHeight:{type:[String,Number]},debounce:{type:Number,default:300},beforeFilter:{type:$e(Function),default:()=>!0},placement:{type:$e(String),values:Hg,default:"bottom-start"},fallbackPlacements:{type:$e(Array),default:["bottom-start","bottom","top-start","top","right","left"]},popperClass:{type:String,default:""},teleported:Qo.teleported,tagType:{...Og.type,default:"info"},tagEffect:{...Og.effect,default:"light"},validateEvent:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},...vC}),Xft={[en]:e=>!0,[En]:e=>!0,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,visibleChange:e=>hr(e),expandChange:e=>!!e,removeTag:e=>!!e},P0=new Map;if(Nn){let e;document.addEventListener("mousedown",t=>e=t),document.addEventListener("mouseup",t=>{if(e){for(const n of P0.values())for(const{documentHandler:r}of n)r(t,e);e=void 0}})}function Ohe(e,t){let n=[];return ct(t.arg)?n=t.arg:_l(t.arg)&&n.push(t.arg),function(r,o){const a=t.instance.popperRef,i=r.target,s=o==null?void 0:o.target,l=!t||!t.instance,u=!i||!s,c=e.contains(i)||e.contains(s),d=e===i,f=n.length&&n.some(g=>g==null?void 0:g.contains(i))||n.length&&n.includes(s),h=a&&(a.contains(i)||a.contains(s));l||u||c||d||f||h||t.value(r,o)}}const Fg={beforeMount(e,t){P0.has(e)||P0.set(e,[]),P0.get(e).push({documentHandler:Ohe(e,t),bindingFn:t.value})},updated(e,t){P0.has(e)||P0.set(e,[]);const n=P0.get(e),r=n.findIndex(a=>a.bindingFn===t.oldValue),o={documentHandler:Ohe(e,t),bindingFn:t.value};r>=0?n.splice(r,1,o):n.push(o)},unmounted(e){P0.delete(e)}},Jft="ElCascader",Zft=ne({name:Jft}),Qft=ne({...Zft,props:Yft,emits:Xft,setup(e,{expose:t,emit:n}){const r=e,o={modifiers:[{name:"arrowPosition",enabled:!0,phase:"main",fn:({state:Se})=>{const{modifiersData:We,placement:Te}=Se;["right","left","bottom","top"].includes(Te)||We.arrow&&(We.arrow.x=35)},requires:["arrow"]}]},a=Ug();let i=0,s=0;const l=nt("cascader"),u=nt("input"),{t:c}=Un(),{form:d,formItem:f}=ws(),{valueOnClear:h}=TL(r),{isComposing:g,handleComposition:p}=vT({afterComposition(Se){var We;const Te=(We=Se.target)==null?void 0:We.value;Fe(Te)}}),m=X(null),v=X(null),y=X(null),_=X(null),C=X(null),S=X(!1),E=X(!1),k=X(!1),O=X(!1),T=X(""),P=X(""),U=X([]),F=X([]),H=X([]),R=K(()=>a.style),z=K(()=>r.disabled||(d==null?void 0:d.disabled)),M=K(()=>{var Se;return(Se=r.placeholder)!=null?Se:c("el.cascader.placeholder")}),N=K(()=>P.value||U.value.length>0||g.value?"":M.value),L=ma(),V=K(()=>L.value==="small"?"small":"default"),Y=K(()=>!!r.props.multiple),$=K(()=>!r.filterable||Y.value),B=K(()=>Y.value?P.value:T.value),W=K(()=>{var Se;return((Se=_.value)==null?void 0:Se.checkedNodes)||[]}),J=K(()=>!r.clearable||z.value||k.value||!E.value?!1:!!W.value.length),oe=K(()=>{const{showAllLevels:Se,separator:We}=r,Te=W.value;return Te.length?Y.value?"":Te[0].calcText(Se,We):""}),ie=K(()=>(f==null?void 0:f.validateState)||""),Z=K({get(){return RM(r.modelValue)},set(Se){const We=Se??h.value;n(en,We),n(En,We),r.validateEvent&&(f==null||f.validate("change").catch(Te=>void 0))}}),de=K(()=>[l.b(),l.m(L.value),l.is("disabled",z.value),a.class]),we=K(()=>[u.e("icon"),"icon-arrow-down",l.is("reverse",S.value)]),Be=K(()=>l.is("focus",S.value||O.value)),ke=K(()=>{var Se,We;return(We=(Se=m.value)==null?void 0:Se.popperRef)==null?void 0:We.contentRef}),ae=Se=>{var We,Te,Ge;z.value||(Se=Se??!S.value,Se!==S.value&&(S.value=Se,(Te=(We=v.value)==null?void 0:We.input)==null||Te.setAttribute("aria-expanded",`${Se}`),Se?(le(),It((Ge=_.value)==null?void 0:Ge.scrollToExpandingNode)):r.filterable&&Ce(),n("visibleChange",Se)))},le=()=>{It(()=>{var Se;(Se=m.value)==null||Se.updatePopper()})},q=()=>{k.value=!1},pe=Se=>{const{showAllLevels:We,separator:Te}=r;return{node:Se,key:Se.uid,text:Se.calcText(We,Te),hitState:!1,closable:!z.value&&!Se.isDisabled,isCollapseTag:!1}},he=Se=>{var We;const Te=Se.node;Te.doCheck(!1),(We=_.value)==null||We.calculateCheckedValue(),n("removeTag",Te.valueByOption)},re=()=>{if(!Y.value)return;const Se=W.value,We=[],Te=[];if(Se.forEach(Ge=>Te.push(pe(Ge))),F.value=Te,Se.length){Se.slice(0,r.maxCollapseTags).forEach(Zt=>We.push(pe(Zt)));const Ge=Se.slice(r.maxCollapseTags),Ot=Ge.length;Ot&&(r.collapseTags?We.push({key:-1,text:`+ ${Ot}`,closable:!1,isCollapseTag:!0}):Ge.forEach(Zt=>We.push(pe(Zt))))}U.value=We},ue=()=>{var Se,We;const{filterMethod:Te,showAllLevels:Ge,separator:Ot}=r,Zt=(We=(Se=_.value)==null?void 0:Se.getFlattedNodes(!r.props.checkStrictly))==null?void 0:We.filter(Wt=>Wt.isDisabled?!1:(Wt.calcText(Ge,Ot),Te(Wt,B.value)));Y.value&&(U.value.forEach(Wt=>{Wt.hitState=!1}),F.value.forEach(Wt=>{Wt.hitState=!1})),k.value=!0,H.value=Zt,le()},_e=()=>{var Se;let We;k.value&&C.value?We=C.value.$el.querySelector(`.${l.e("suggestion-item")}`):We=(Se=_.value)==null?void 0:Se.$el.querySelector(`.${l.b("node")}[tabindex="-1"]`),We&&(We.focus(),!k.value&&We.click())},Pe=()=>{var Se,We;const Te=(Se=v.value)==null?void 0:Se.input,Ge=y.value,Ot=(We=C.value)==null?void 0:We.$el;if(!(!Nn||!Te)){if(Ot){const Zt=Ot.querySelector(`.${l.e("suggestion-list")}`);Zt.style.minWidth=`${Te.offsetWidth}px`}if(Ge){const{offsetHeight:Zt}=Ge,Wt=U.value.length>0?`${Math.max(Zt,i)-2}px`:`${i}px`;Te.style.height=Wt,le()}}},Ae=Se=>{var We;return(We=_.value)==null?void 0:We.getCheckedNodes(Se)},Ee=Se=>{le(),n("expandChange",Se)},ye=Se=>{if(!g.value)switch(Se.code){case St.enter:case St.numpadEnter:ae();break;case St.down:ae(!0),It(_e),Se.preventDefault();break;case St.esc:S.value===!0&&(Se.preventDefault(),Se.stopPropagation(),ae(!1));break;case St.tab:ae(!1);break}},ve=()=>{var Se;(Se=_.value)==null||Se.clearCheckedNodes(),!S.value&&r.filterable&&Ce(),ae(!1),n("clear")},Ce=()=>{const{value:Se}=oe;T.value=Se,P.value=Se},ze=Se=>{var We,Te;const{checked:Ge}=Se;Y.value?(We=_.value)==null||We.handleCheckChange(Se,!Ge,!1):(!Ge&&((Te=_.value)==null||Te.handleCheckChange(Se,!0,!1)),ae(!1))},at=Se=>{const We=Se.target,{code:Te}=Se;switch(Te){case St.up:case St.down:{Se.preventDefault();const Ge=Te===St.up?-1:1;HF(k5e(We,Ge,`.${l.e("suggestion-item")}[tabindex="-1"]`));break}case St.enter:case St.numpadEnter:We.click();break}},bt=()=>{const Se=U.value,We=Se[Se.length-1];s=P.value?0:s+1,!(!We||!s||r.collapseTags&&Se.length>1)&&(We.hitState?he(We):We.hitState=!0)},Ft=Se=>{const We=Se.target,Te=l.e("search-input");We.className===Te&&(O.value=!0),n("focus",Se)},Dt=Se=>{O.value=!1,n("blur",Se)},He=tu(()=>{const{value:Se}=B;if(!Se)return;const We=r.beforeFilter(Se);Ub(We)?We.then(ue).catch(()=>{}):We!==!1?ue():q()},r.debounce),Fe=(Se,We)=>{!S.value&&ae(!0),!(We!=null&&We.isComposing)&&(Se?He():q())},Ue=Se=>Number.parseFloat(sJe(u.cssVarName("input-height"),Se).value)-2;return Ze(k,le),Ze([W,z,()=>r.collapseTags],re),Ze(U,()=>{It(()=>Pe())}),Ze(L,async()=>{await It();const Se=v.value.input;i=Ue(Se)||i,Pe()}),Ze(oe,Ce,{immediate:!0}),Kt(()=>{const Se=v.value.input,We=Ue(Se);i=Se.offsetHeight||We,co(Se,Pe)}),t({getCheckedNodes:Ae,cascaderPanelRef:_,togglePopperVisible:ae,contentRef:ke,presentText:oe}),(Se,We)=>(I(),Oe(b(Yi),{ref_key:"tooltipRef",ref:m,visible:S.value,teleported:Se.teleported,"popper-class":[b(l).e("dropdown"),Se.popperClass],"popper-options":o,"fallback-placements":Se.fallbackPlacements,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,placement:Se.placement,transition:`${b(l).namespace.value}-zoom-in-top`,effect:"light",pure:"",persistent:Se.persistent,onHide:q},{default:A(()=>[rn((I(),j("div",{class:ee(b(de)),style:Nt(b(R)),onClick:()=>ae(b($)?void 0:!0),onKeydown:ye,onMouseenter:Te=>E.value=!0,onMouseleave:Te=>E.value=!1},[D(b(fo),{ref_key:"input",ref:v,modelValue:T.value,"onUpdate:modelValue":Te=>T.value=Te,placeholder:b(N),readonly:b($),disabled:b(z),"validate-event":!1,size:b(L),class:ee(b(Be)),tabindex:b(Y)&&Se.filterable&&!b(z)?-1:void 0,onCompositionstart:b(p),onCompositionupdate:b(p),onCompositionend:b(p),onFocus:Ft,onBlur:Dt,onInput:Fe},eu({suffix:A(()=>[b(J)?(I(),Oe(b(Tt),{key:"clear",class:ee([b(u).e("icon"),"icon-circle-close"]),onClick:zt(ve,["stop"])},{default:A(()=>[D(b(Yh))]),_:1},8,["class","onClick"])):(I(),Oe(b(Tt),{key:"arrow-down",class:ee(b(we)),onClick:zt(Te=>ae(),["stop"])},{default:A(()=>[D(b(lc))]),_:1},8,["class","onClick"]))]),_:2},[Se.$slots.prefix?{name:"prefix",fn:A(()=>[Ne(Se.$slots,"prefix")])}:void 0]),1032,["modelValue","onUpdate:modelValue","placeholder","readonly","disabled","size","class","tabindex","onCompositionstart","onCompositionupdate","onCompositionend"]),b(Y)?(I(),j("div",{key:0,ref_key:"tagWrapper",ref:y,class:ee([b(l).e("tags"),b(l).is("validate",!!b(ie))])},[(I(!0),j(tt,null,wt(U.value,Te=>(I(),Oe(b(Si),{key:Te.key,type:Se.tagType,size:b(V),effect:Se.tagEffect,hit:Te.hitState,closable:Te.closable,"disable-transitions":"",onClose:Ge=>he(Te)},{default:A(()=>[Te.isCollapseTag===!1?(I(),j("span",{key:0},se(Te.text),1)):(I(),Oe(b(Yi),{key:1,disabled:S.value||!Se.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],placement:"bottom",effect:"light"},{default:A(()=>[w("span",null,se(Te.text),1)]),content:A(()=>[D(b(id),{"max-height":Se.maxCollapseTagsTooltipHeight},{default:A(()=>[w("div",{class:ee(b(l).e("collapse-tags"))},[(I(!0),j(tt,null,wt(F.value.slice(Se.maxCollapseTags),(Ge,Ot)=>(I(),j("div",{key:Ot,class:ee(b(l).e("collapse-tag"))},[(I(),Oe(b(Si),{key:Ge.key,class:"in-tooltip",type:Se.tagType,size:b(V),effect:Se.tagEffect,hit:Ge.hitState,closable:Ge.closable,"disable-transitions":"",onClose:Zt=>he(Ge)},{default:A(()=>[w("span",null,se(Ge.text),1)]),_:2},1032,["type","size","effect","hit","closable","onClose"]))],2))),128))],2)]),_:1},8,["max-height"])]),_:2},1032,["disabled"]))]),_:2},1032,["type","size","effect","hit","closable","onClose"]))),128)),Se.filterable&&!b(z)?rn((I(),j("input",{key:0,"onUpdate:modelValue":Te=>P.value=Te,type:"text",class:ee(b(l).e("search-input")),placeholder:b(oe)?"":b(M),onInput:Te=>Fe(P.value,Te),onClick:zt(Te=>ae(!0),["stop"]),onKeydown:qn(bt,["delete"]),onCompositionstart:b(p),onCompositionupdate:b(p),onCompositionend:b(p),onFocus:Ft,onBlur:Dt},null,42,["onUpdate:modelValue","placeholder","onInput","onClick","onKeydown","onCompositionstart","onCompositionupdate","onCompositionend"])),[[mL,P.value]]):be("v-if",!0)],2)):be("v-if",!0)],46,["onClick","onMouseenter","onMouseleave"])),[[b(Fg),()=>ae(!1),b(ke)]])]),content:A(()=>[rn(D(b(kSe),{ref_key:"cascaderPanelRef",ref:_,modelValue:b(Z),"onUpdate:modelValue":Te=>kr(Z)?Z.value=Te:null,options:Se.options,props:r.props,border:!1,"render-label":Se.$slots.default,onExpandChange:Ee,onClose:Te=>Se.$nextTick(()=>ae(!1))},{empty:A(()=>[Ne(Se.$slots,"empty")]),_:3},8,["modelValue","onUpdate:modelValue","options","props","render-label","onClose"]),[[Pn,!k.value]]),Se.filterable?rn((I(),Oe(b(id),{key:0,ref_key:"suggestionPanel",ref:C,tag:"ul",class:ee(b(l).e("suggestion-panel")),"view-class":b(l).e("suggestion-list"),onKeydown:at},{default:A(()=>[H.value.length?(I(!0),j(tt,{key:0},wt(H.value,Te=>(I(),j("li",{key:Te.uid,class:ee([b(l).e("suggestion-item"),b(l).is("checked",Te.checked)]),tabindex:-1,onClick:Ge=>ze(Te)},[Ne(Se.$slots,"suggestion-item",{item:Te},()=>[w("span",null,se(Te.text),1),Te.checked?(I(),Oe(b(Tt),{key:0},{default:A(()=>[D(b(Za))]),_:1})):be("v-if",!0)])],10,["onClick"]))),128)):Ne(Se.$slots,"empty",{key:1},()=>[w("li",{class:ee(b(l).e("empty-text"))},se(b(c)("el.cascader.noMatch")),3)])]),_:3},8,["class","view-class"])),[[Pn,k.value]]):be("v-if",!0)]),_:3},8,["visible","teleported","popper-class","fallback-placements","placement","transition","persistent"]))}});var eht=vt(Qft,[["__file","cascader.vue"]]);const tht=dn(eht),nht=ht({checked:Boolean,disabled:Boolean,type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"}}),rht={"update:checked":e=>hr(e),[En]:e=>hr(e)},oht=ne({name:"ElCheckTag"}),aht=ne({...oht,props:nht,emits:rht,setup(e,{emit:t}){const n=e,r=nt("check-tag"),o=K(()=>n.disabled),a=K(()=>[r.b(),r.is("checked",n.checked),r.is("disabled",o.value),r.m(n.type||"primary")]),i=()=>{if(o.value)return;const s=!n.checked;t(En,s),t("update:checked",s)};return(s,l)=>(I(),j("span",{class:ee(b(a)),onClick:i},[Ne(s.$slots,"default")],2))}});var iht=vt(aht,[["__file","check-tag.vue"]]);const sht=dn(iht),lht=ht({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:$e([Number,Object]),default:()=>Eo({})},sm:{type:$e([Number,Object]),default:()=>Eo({})},md:{type:$e([Number,Object]),default:()=>Eo({})},lg:{type:$e([Number,Object]),default:()=>Eo({})},xl:{type:$e([Number,Object]),default:()=>Eo({})}}),ASe=Symbol("rowContextKey"),uht=ne({name:"ElCol"}),cht=ne({...uht,props:lht,setup(e){const t=e,{gutter:n}=kt(ASe,{gutter:K(()=>0)}),r=nt("col"),o=K(()=>{const i={};return n.value&&(i.paddingLeft=i.paddingRight=`${n.value/2}px`),i}),a=K(()=>{const i=[];return["span","offset","pull","push"].forEach(u=>{const c=t[u];Lt(c)&&(u==="span"?i.push(r.b(`${t[u]}`)):c>0&&i.push(r.b(`${u}-${t[u]}`)))}),["xs","sm","md","lg","xl"].forEach(u=>{Lt(t[u])?i.push(r.b(`${u}-${t[u]}`)):vn(t[u])&&Object.entries(t[u]).forEach(([c,d])=>{i.push(c!=="span"?r.b(`${u}-${c}-${d}`):r.b(`${u}-${d}`))})}),n.value&&i.push(r.is("guttered")),[r.b(),i]});return(i,s)=>(I(),Oe(_n(i.tag),{class:ee(b(a)),style:Nt(b(o))},{default:A(()=>[Ne(i.$slots,"default")]),_:3},8,["class","style"]))}});var dht=vt(cht,[["__file","col.vue"]]);const r1=dn(dht),Fhe=e=>Lt(e)||$t(e)||ct(e),fht=ht({accordion:Boolean,modelValue:{type:$e([Array,String,Number]),default:()=>Eo([])},expandIconPosition:{type:$e([String]),default:"right"},beforeCollapse:{type:$e(Function)}}),hht={[en]:Fhe,[En]:Fhe},TSe=Symbol("collapseContextKey"),pht="ElCollapse",ght=(e,t)=>{const n=X(Vs(e.modelValue)),r=i=>{n.value=i;const s=e.accordion?n.value[0]:n.value;t(en,s),t(En,s)},o=i=>{if(e.accordion)r([n.value[0]===i?"":i]);else{const s=[...n.value],l=s.indexOf(i);l>-1?s.splice(l,1):s.push(i),r(s)}},a=async i=>{const{beforeCollapse:s}=e;if(!s){o(i);return}const l=s(i);[Ub(l),hr(l)].includes(!0)||oa(pht,"beforeCollapse must return type `Promise` or `boolean`"),Ub(l)?l.then(c=>{c!==!1&&o(i)}).catch(c=>{}):l&&o(i)};return Ze(()=>e.modelValue,()=>n.value=Vs(e.modelValue),{deep:!0}),Fn(TSe,{activeNames:n,handleItemClick:a}),{activeNames:n,setActiveNames:r}},vht=e=>{const t=nt("collapse");return{rootKls:K(()=>[t.b(),t.b(`icon-position-${e.expandIconPosition}`)])}},mht=ne({name:"ElCollapse"}),yht=ne({...mht,props:fht,emits:hht,setup(e,{expose:t,emit:n}){const r=e,{activeNames:o,setActiveNames:a}=ght(r,n),{rootKls:i}=vht(r);return t({activeNames:o,setActiveNames:a}),(s,l)=>(I(),j("div",{class:ee(b(i))},[Ne(s.$slots,"default")],2))}});var bht=vt(yht,[["__file","collapse.vue"]]);const _ht=ne({name:"ElCollapseTransition"}),wht=ne({..._ht,setup(e){const t=nt("collapse-transition"),n=o=>{o.style.maxHeight="",o.style.overflow=o.dataset.oldOverflow,o.style.paddingTop=o.dataset.oldPaddingTop,o.style.paddingBottom=o.dataset.oldPaddingBottom},r={beforeEnter(o){o.dataset||(o.dataset={}),o.dataset.oldPaddingTop=o.style.paddingTop,o.dataset.oldPaddingBottom=o.style.paddingBottom,o.style.height&&(o.dataset.elExistsHeight=o.style.height),o.style.maxHeight=0,o.style.paddingTop=0,o.style.paddingBottom=0},enter(o){requestAnimationFrame(()=>{o.dataset.oldOverflow=o.style.overflow,o.dataset.elExistsHeight?o.style.maxHeight=o.dataset.elExistsHeight:o.scrollHeight!==0?o.style.maxHeight=`${o.scrollHeight}px`:o.style.maxHeight=0,o.style.paddingTop=o.dataset.oldPaddingTop,o.style.paddingBottom=o.dataset.oldPaddingBottom,o.style.overflow="hidden"})},afterEnter(o){o.style.maxHeight="",o.style.overflow=o.dataset.oldOverflow},enterCancelled(o){n(o)},beforeLeave(o){o.dataset||(o.dataset={}),o.dataset.oldPaddingTop=o.style.paddingTop,o.dataset.oldPaddingBottom=o.style.paddingBottom,o.dataset.oldOverflow=o.style.overflow,o.style.maxHeight=`${o.scrollHeight}px`,o.style.overflow="hidden"},leave(o){o.scrollHeight!==0&&(o.style.maxHeight=0,o.style.paddingTop=0,o.style.paddingBottom=0)},afterLeave(o){n(o)},leaveCancelled(o){n(o)}};return(o,a)=>(I(),Oe(xi,Dn({name:b(t).b()},GVe(r)),{default:A(()=>[Ne(o.$slots,"default")]),_:3},16,["name"]))}});var Cht=vt(wht,[["__file","collapse-transition.vue"]]);const zL=dn(Cht),xht=ht({title:{type:String,default:""},name:{type:$e([String,Number]),default:void 0},icon:{type:mr,default:_i},disabled:Boolean}),Sht=e=>{const t=kt(TSe),{namespace:n}=nt("collapse"),r=X(!1),o=X(!1),a=rre(),i=K(()=>a.current++),s=K(()=>{var f;return(f=e.name)!=null?f:`${n.value}-id-${a.prefix}-${b(i)}`}),l=K(()=>t==null?void 0:t.activeNames.value.includes(b(s)));return{focusing:r,id:i,isActive:l,handleFocus:()=>{setTimeout(()=>{o.value?o.value=!1:r.value=!0},50)},handleHeaderClick:f=>{if(e.disabled)return;const h=f.target;h!=null&&h.closest("input, textarea, select")||(t==null||t.handleItemClick(b(s)),r.value=!1,o.value=!0)},handleEnterClick:f=>{const h=f.target;h!=null&&h.closest("input, textarea, select")||(f.preventDefault(),t==null||t.handleItemClick(b(s)))}}},Dht=(e,{focusing:t,isActive:n,id:r})=>{const o=nt("collapse"),a=K(()=>[o.b("item"),o.is("active",b(n)),o.is("disabled",e.disabled)]),i=K(()=>[o.be("item","header"),o.is("active",b(n)),{focusing:b(t)&&!e.disabled}]),s=K(()=>[o.be("item","arrow"),o.is("active",b(n))]),l=K(()=>[o.be("item","title")]),u=K(()=>o.be("item","wrap")),c=K(()=>o.be("item","content")),d=K(()=>o.b(`content-${b(r)}`)),f=K(()=>o.b(`head-${b(r)}`));return{itemTitleKls:l,arrowKls:s,headKls:i,rootKls:a,itemWrapperKls:u,itemContentKls:c,scopedContentId:d,scopedHeadId:f}},Eht=ne({name:"ElCollapseItem"}),kht=ne({...Eht,props:xht,setup(e,{expose:t}){const n=e,{focusing:r,id:o,isActive:a,handleFocus:i,handleHeaderClick:s,handleEnterClick:l}=Sht(n),{arrowKls:u,headKls:c,rootKls:d,itemTitleKls:f,itemWrapperKls:h,itemContentKls:g,scopedContentId:p,scopedHeadId:m}=Dht(n,{focusing:r,isActive:a,id:o});return t({isActive:a}),(v,y)=>(I(),j("div",{class:ee(b(d))},[w("div",{id:b(m),class:ee(b(c)),"aria-expanded":b(a),"aria-controls":b(p),"aria-describedby":b(p),tabindex:v.disabled?-1:0,role:"button",onClick:b(s),onKeydown:qn(zt(b(l),["stop"]),["space","enter"]),onFocus:b(i),onBlur:_=>r.value=!1},[w("span",{class:ee(b(f))},[Ne(v.$slots,"title",{isActive:b(a)},()=>[ce(se(v.title),1)])],2),Ne(v.$slots,"icon",{isActive:b(a)},()=>[D(b(Tt),{class:ee(b(u))},{default:A(()=>[(I(),Oe(_n(v.icon)))]),_:1},8,["class"])])],42,["id","aria-expanded","aria-controls","aria-describedby","tabindex","onClick","onKeydown","onFocus","onBlur"]),D(b(zL),null,{default:A(()=>[rn(w("div",{id:b(p),role:"region",class:ee(b(h)),"aria-hidden":!b(a),"aria-labelledby":b(m)},[w("div",{class:ee(b(g))},[Ne(v.$slots,"default")],2)],10,["id","aria-hidden","aria-labelledby"]),[[Pn,b(a)]])]),_:3})],2))}});var OSe=vt(kht,[["__file","collapse-item.vue"]]);const jL=dn(bht,{CollapseItem:OSe}),HL=vo(OSe),Aht=ht({color:{type:$e(Object),required:!0},vertical:{type:Boolean,default:!1}});let ej=!1;function LD(e,t){if(!Nn)return;const n=function(a){var i;(i=t.drag)==null||i.call(t,a)},r=function(a){var i;document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",r),document.removeEventListener("touchmove",n),document.removeEventListener("touchend",r),document.onselectstart=null,document.ondragstart=null,ej=!1,(i=t.end)==null||i.call(t,a)},o=function(a){var i;ej||(a.preventDefault(),document.onselectstart=()=>!1,document.ondragstart=()=>!1,document.addEventListener("mousemove",n),document.addEventListener("mouseup",r),document.addEventListener("touchmove",n),document.addEventListener("touchend",r),ej=!0,(i=t.start)==null||i.call(t,a))};e.addEventListener("mousedown",o),e.addEventListener("touchstart",o,{passive:!1})}const Tht=(e,t)=>{if(!Nn||!e||!t)return!1;const n=e.getBoundingClientRect();let r;return t instanceof Element?r=t.getBoundingClientRect():r={top:0,right:window.innerWidth,bottom:window.innerHeight,left:0},n.topr.top&&n.right>r.left&&n.left{let t=0,n=e;for(;n;)t+=n.offsetTop,n=n.offsetParent;return t},VY=(e,t)=>Math.abs(Ihe(e)-Ihe(t)),wre=e=>{let t,n;return e.type==="touchend"?(n=e.changedTouches[0].clientY,t=e.changedTouches[0].clientX):e.type.startsWith("touch")?(n=e.touches[0].clientY,t=e.touches[0].clientX):(n=e.clientY,t=e.clientX),{clientX:t,clientY:n}},Oht=e=>{const t=bn(),{t:n}=Un(),r=Tr(),o=Tr(),a=K(()=>e.color.get("alpha")),i=K(()=>n("el.colorpicker.alphaLabel"));function s(d){var f;d.target!==r.value&&l(d),(f=r.value)==null||f.focus()}function l(d){if(!o.value||!r.value)return;const h=t.vnode.el.getBoundingClientRect(),{clientX:g,clientY:p}=wre(d);if(e.vertical){let m=p-h.top;m=Math.max(r.value.offsetHeight/2,m),m=Math.min(m,h.height-r.value.offsetHeight/2),e.color.set("alpha",Math.round((m-r.value.offsetHeight/2)/(h.height-r.value.offsetHeight)*100))}else{let m=g-h.left;m=Math.max(r.value.offsetWidth/2,m),m=Math.min(m,h.width-r.value.offsetWidth/2),e.color.set("alpha",Math.round((m-r.value.offsetWidth/2)/(h.width-r.value.offsetWidth)*100))}}function u(d){const{code:f,shiftKey:h}=d,g=h?10:1;switch(f){case St.left:case St.down:d.preventDefault(),d.stopPropagation(),c(-g);break;case St.right:case St.up:d.preventDefault(),d.stopPropagation(),c(g);break}}function c(d){let f=a.value+d;f=f<0?0:f>100?100:f,e.color.set("alpha",f)}return{thumb:r,bar:o,alpha:a,alphaLabel:i,handleDrag:l,handleClick:s,handleKeydown:u}},Fht=(e,{bar:t,thumb:n,handleDrag:r})=>{const o=bn(),a=nt("color-alpha-slider"),i=X(0),s=X(0),l=X();function u(){if(!n.value||e.vertical)return 0;const y=o.vnode.el,_=e.color.get("alpha");return y?Math.round(_*(y.offsetWidth-n.value.offsetWidth/2)/100):0}function c(){if(!n.value)return 0;const y=o.vnode.el;if(!e.vertical)return 0;const _=e.color.get("alpha");return y?Math.round(_*(y.offsetHeight-n.value.offsetHeight/2)/100):0}function d(){if(e.color&&e.color.value){const{r:y,g:_,b:C}=e.color.toRgb();return`linear-gradient(to right, rgba(${y}, ${_}, ${C}, 0) 0%, rgba(${y}, ${_}, ${C}, 1) 100%)`}return""}function f(){i.value=u(),s.value=c(),l.value=d()}Kt(()=>{if(!t.value||!n.value)return;const y={drag:_=>{r(_)},end:_=>{r(_)}};LD(t.value,y),LD(n.value,y),f()}),Ze(()=>e.color.get("alpha"),()=>f()),Ze(()=>e.color.value,()=>f());const h=K(()=>[a.b(),a.is("vertical",e.vertical)]),g=K(()=>a.e("bar")),p=K(()=>a.e("thumb")),m=K(()=>({background:l.value})),v=K(()=>({left:Io(i.value),top:Io(s.value)}));return{rootKls:h,barKls:g,barStyle:m,thumbKls:p,thumbStyle:v,update:f}},Iht="ElColorAlphaSlider",Mht=ne({name:Iht}),Pht=ne({...Mht,props:Aht,setup(e,{expose:t}){const n=e,{alpha:r,alphaLabel:o,bar:a,thumb:i,handleDrag:s,handleClick:l,handleKeydown:u}=Oht(n),{rootKls:c,barKls:d,barStyle:f,thumbKls:h,thumbStyle:g,update:p}=Fht(n,{bar:a,thumb:i,handleDrag:s});return t({update:p,bar:a,thumb:i}),(m,v)=>(I(),j("div",{class:ee(b(c))},[w("div",{ref_key:"bar",ref:a,class:ee(b(d)),style:Nt(b(f)),onClick:b(l)},null,14,["onClick"]),w("div",{ref_key:"thumb",ref:i,class:ee(b(h)),style:Nt(b(g)),"aria-label":b(o),"aria-valuenow":b(r),"aria-orientation":m.vertical?"vertical":"horizontal","aria-valuemin":"0","aria-valuemax":"100",role:"slider",tabindex:"0",onKeydown:b(u)},null,46,["aria-label","aria-valuenow","aria-orientation","onKeydown"])],2))}});var $ht=vt(Pht,[["__file","alpha-slider.vue"]]);const Bht=ne({name:"ElColorHueSlider",props:{color:{type:Object,required:!0},vertical:Boolean},setup(e){const t=nt("color-hue-slider"),n=bn(),r=X(),o=X(),a=X(0),i=X(0),s=K(()=>e.color.get("hue"));Ze(()=>s.value,()=>{f()});function l(h){h.target!==r.value&&u(h)}function u(h){if(!o.value||!r.value)return;const p=n.vnode.el.getBoundingClientRect(),{clientX:m,clientY:v}=wre(h);let y;if(e.vertical){let _=v-p.top;_=Math.min(_,p.height-r.value.offsetHeight/2),_=Math.max(r.value.offsetHeight/2,_),y=Math.round((_-r.value.offsetHeight/2)/(p.height-r.value.offsetHeight)*360)}else{let _=m-p.left;_=Math.min(_,p.width-r.value.offsetWidth/2),_=Math.max(r.value.offsetWidth/2,_),y=Math.round((_-r.value.offsetWidth/2)/(p.width-r.value.offsetWidth)*360)}e.color.set("hue",y)}function c(){if(!r.value)return 0;const h=n.vnode.el;if(e.vertical)return 0;const g=e.color.get("hue");return h?Math.round(g*(h.offsetWidth-r.value.offsetWidth/2)/360):0}function d(){if(!r.value)return 0;const h=n.vnode.el;if(!e.vertical)return 0;const g=e.color.get("hue");return h?Math.round(g*(h.offsetHeight-r.value.offsetHeight/2)/360):0}function f(){a.value=c(),i.value=d()}return Kt(()=>{if(!o.value||!r.value)return;const h={drag:g=>{u(g)},end:g=>{u(g)}};LD(o.value,h),LD(r.value,h),f()}),{bar:o,thumb:r,thumbLeft:a,thumbTop:i,hueValue:s,handleClick:l,update:f,ns:t}}});function Rht(e,t,n,r,o,a){return I(),j("div",{class:ee([e.ns.b(),e.ns.is("vertical",e.vertical)])},[w("div",{ref:"bar",class:ee(e.ns.e("bar")),onClick:e.handleClick},null,10,["onClick"]),w("div",{ref:"thumb",class:ee(e.ns.e("thumb")),style:Nt({left:e.thumbLeft+"px",top:e.thumbTop+"px"})},null,6)],2)}var Nht=vt(Bht,[["render",Rht],["__file","hue-slider.vue"]]);const Lht=ht({modelValue:String,id:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:Aa,popperClass:{type:String,default:""},tabindex:{type:[String,Number],default:0},teleported:Qo.teleported,predefine:{type:$e(Array)},validateEvent:{type:Boolean,default:!0},...ts(["ariaLabel"])}),Uht={[en]:e=>$t(e)||ni(e),[En]:e=>$t(e)||ni(e),activeChange:e=>$t(e)||ni(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},FSe=Symbol("colorPickerContextKey");class HM{constructor(t={}){this._hue=0,this._saturation=100,this._value=100,this._alpha=100,this._tiny=new u3,this._isValid=!1,this.enableAlpha=!1,this.format="",this.value="";for(const n in t)Gn(t,n)&&(this[n]=t[n]);t.value?this.fromString(t.value):this.doOnChange()}set(t,n){if(arguments.length===1&&typeof t=="object"){for(const r in t)Gn(t,r)&&this.set(r,t[r]);return}this[`_${t}`]=n,this._isValid=!0,this.doOnChange()}get(t){return["hue","saturation","value","alpha"].includes(t)?Math.round(this[`_${t}`]):this[`_${t}`]}toRgb(){return this._isValid?this._tiny.toRgb():{r:255,g:255,b:255,a:0}}fromString(t){const n=new u3(t);if(this._isValid=n.isValid,n.isValid){const{h:r,s:o,v:a,a:i}=n.toHsv();this._hue=r,this._saturation=o*100,this._value=a*100,this._alpha=i*100}else this._hue=0,this._saturation=100,this._value=100,this._alpha=100;this.doOnChange()}compare(t){const n=new u3({h:t._hue,s:t._saturation/100,v:t._value/100,a:t._alpha/100});return this._tiny.equals(n)}doOnChange(){const{_hue:t,_saturation:n,_value:r,_alpha:o,format:a,enableAlpha:i}=this;let s=a||(i?"rgb":"hex");a==="hex"&&i&&(s="hex8"),this._tiny=new u3({h:t,s:n/100,v:r/100,a:o/100}),this.value=this._isValid?this._tiny.toString(s):""}}const Vht=ne({props:{colors:{type:Array,required:!0},color:{type:Object,required:!0},enableAlpha:{type:Boolean,required:!0}},setup(e){const t=nt("color-predefine"),{currentColor:n}=kt(FSe),r=X(a(e.colors,e.color));Ze(()=>n.value,i=>{const s=new HM({value:i});r.value.forEach(l=>{l.selected=s.compare(l)})}),Wi(()=>{r.value=a(e.colors,e.color)});function o(i){e.color.fromString(e.colors[i])}function a(i,s){return i.map(l=>{const u=new HM({value:l});return u.selected=u.compare(s),u})}return{rgbaColors:r,handleSelect:o,ns:t}}});function zht(e,t,n,r,o,a){return I(),j("div",{class:ee(e.ns.b())},[w("div",{class:ee(e.ns.e("colors"))},[(I(!0),j(tt,null,wt(e.rgbaColors,(i,s)=>(I(),j("div",{key:e.colors[s],class:ee([e.ns.e("color-selector"),e.ns.is("alpha",i.get("alpha")<100),{selected:i.selected}]),onClick:l=>e.handleSelect(s)},[w("div",{style:Nt({backgroundColor:i.value})},null,4)],10,["onClick"]))),128))],2)],2)}var jht=vt(Vht,[["render",zht],["__file","predefine.vue"]]);const Hht=ne({name:"ElSlPanel",props:{color:{type:Object,required:!0}},setup(e){const t=nt("color-svpanel"),n=bn(),r=X(0),o=X(0),a=X("hsl(0, 100%, 50%)"),i=K(()=>{const u=e.color.get("hue"),c=e.color.get("value");return{hue:u,value:c}});function s(){const u=e.color.get("saturation"),c=e.color.get("value"),d=n.vnode.el,{clientWidth:f,clientHeight:h}=d;o.value=u*f/100,r.value=(100-c)*h/100,a.value=`hsl(${e.color.get("hue")}, 100%, 50%)`}function l(u){const d=n.vnode.el.getBoundingClientRect(),{clientX:f,clientY:h}=wre(u);let g=f-d.left,p=h-d.top;g=Math.max(0,g),g=Math.min(g,d.width),p=Math.max(0,p),p=Math.min(p,d.height),o.value=g,r.value=p,e.color.set({saturation:g/d.width*100,value:100-p/d.height*100})}return Ze(()=>i.value,()=>{s()}),Kt(()=>{LD(n.vnode.el,{drag:u=>{l(u)},end:u=>{l(u)}}),s()}),{cursorTop:r,cursorLeft:o,background:a,colorValue:i,handleDrag:l,update:s,ns:t}}});function Wht(e,t,n,r,o,a){return I(),j("div",{class:ee(e.ns.b()),style:Nt({backgroundColor:e.background})},[w("div",{class:ee(e.ns.e("white"))},null,2),w("div",{class:ee(e.ns.e("black"))},null,2),w("div",{class:ee(e.ns.e("cursor")),style:Nt({top:e.cursorTop+"px",left:e.cursorLeft+"px"})},[w("div")],6)],6)}var qht=vt(Hht,[["render",Wht],["__file","sv-panel.vue"]]);const Kht=ne({name:"ElColorPicker"}),Ght=ne({...Kht,props:Lht,emits:Uht,setup(e,{expose:t,emit:n}){const r=e,{t:o}=Un(),a=nt("color"),{formItem:i}=ws(),s=ma(),l=ns(),{inputId:u,isLabeledByFormItem:c}=vd(r,{formItemContext:i}),d=X(),f=X(),h=X(),g=X(),p=X(),m=X(),{isFocused:v,handleFocus:y,handleBlur:_}=t1(p,{beforeFocus(){return l.value},beforeBlur(we){var Be;return(Be=g.value)==null?void 0:Be.isFocusInsideContent(we)},afterBlur(){z(!1),V()}});let C=!0;const S=Bn(new HM({enableAlpha:r.showAlpha,format:r.colorFormat||"",value:r.modelValue})),E=X(!1),k=X(!1),O=X(""),T=K(()=>!r.modelValue&&!k.value?"transparent":R(S,r.showAlpha)),P=K(()=>!r.modelValue&&!k.value?"":S.value),U=K(()=>c.value?void 0:r.ariaLabel||o("el.colorpicker.defaultLabel")),F=K(()=>c.value?i==null?void 0:i.labelId:void 0),H=K(()=>[a.b("picker"),a.is("disabled",l.value),a.bm("picker",s.value),a.is("focused",v.value)]);function R(we,Be){const{r:ke,g:ae,b:le,a:q}=we.toRgb();return Be?`rgba(${ke}, ${ae}, ${le}, ${q})`:`rgb(${ke}, ${ae}, ${le})`}function z(we){E.value=we}const M=tu(z,100,{leading:!0});function N(){l.value||z(!0)}function L(){M(!1),V()}function V(){It(()=>{r.modelValue?S.fromString(r.modelValue):(S.value="",!P.value&&O.value&&(O.value=""),It(()=>{k.value=!1}))})}function Y(){l.value||(E.value&&V(),M(!E.value))}function $(){S.fromString(O.value),S.value!==O.value&&(O.value=S.value)}function B(){const we=S.value;n(en,we),n(En,we),r.validateEvent&&(i==null||i.validate("change").catch(Be=>void 0)),M(!1),It(()=>{const Be=new HM({enableAlpha:r.showAlpha,format:r.colorFormat||"",value:r.modelValue});S.compare(Be)||V()})}function W(){M(!1),n(en,null),n(En,null),r.modelValue!==null&&r.validateEvent&&(i==null||i.validate("change").catch(we=>void 0)),V()}function J(){E.value&&(L(),v.value&&Z())}function oe(we){we.preventDefault(),we.stopPropagation(),z(!1),V()}function ie(we){switch(we.code){case St.enter:case St.numpadEnter:case St.space:we.preventDefault(),we.stopPropagation(),N(),m.value.focus();break;case St.esc:oe(we);break}}function Z(){p.value.focus()}function de(){p.value.blur()}return Kt(()=>{r.modelValue&&(O.value=P.value)}),Ze(()=>r.modelValue,we=>{we?we&&we!==S.value&&(C=!1,S.fromString(we)):k.value=!1}),Ze(()=>[r.colorFormat,r.showAlpha],()=>{S.enableAlpha=r.showAlpha,S.format=r.colorFormat||S.format,S.doOnChange(),n(en,S.value)}),Ze(()=>P.value,we=>{O.value=we,C&&n("activeChange",we),C=!0}),Ze(()=>S.value,()=>{!r.modelValue&&!k.value&&(k.value=!0)}),Ze(()=>E.value,()=>{It(()=>{var we,Be,ke;(we=d.value)==null||we.update(),(Be=f.value)==null||Be.update(),(ke=h.value)==null||ke.update()})}),Fn(FSe,{currentColor:P}),t({color:S,show:N,hide:L,focus:Z,blur:de}),(we,Be)=>(I(),Oe(b(Yi),{ref_key:"popper",ref:g,visible:E.value,"show-arrow":!1,"fallback-placements":["bottom","top","right","left"],offset:0,"gpu-acceleration":!1,"popper-class":[b(a).be("picker","panel"),b(a).b("dropdown"),we.popperClass],"stop-popper-mouse-event":!1,effect:"light",trigger:"click",teleported:we.teleported,transition:`${b(a).namespace.value}-zoom-in-top`,persistent:"",onHide:ke=>z(!1)},{content:A(()=>[rn((I(),j("div",{onKeydown:qn(oe,["esc"])},[w("div",{class:ee(b(a).be("dropdown","main-wrapper"))},[D(Nht,{ref_key:"hue",ref:d,class:"hue-slider",color:b(S),vertical:""},null,8,["color"]),D(qht,{ref_key:"sv",ref:f,color:b(S)},null,8,["color"])],2),we.showAlpha?(I(),Oe($ht,{key:0,ref_key:"alpha",ref:h,color:b(S)},null,8,["color"])):be("v-if",!0),we.predefine?(I(),Oe(jht,{key:1,ref:"predefine","enable-alpha":we.showAlpha,color:b(S),colors:we.predefine},null,8,["enable-alpha","color","colors"])):be("v-if",!0),w("div",{class:ee(b(a).be("dropdown","btns"))},[w("span",{class:ee(b(a).be("dropdown","value"))},[D(b(fo),{ref_key:"inputRef",ref:m,modelValue:O.value,"onUpdate:modelValue":ke=>O.value=ke,"validate-event":!1,size:"small",onChange:$},null,8,["modelValue","onUpdate:modelValue"])],2),D(b(Br),{class:ee(b(a).be("dropdown","link-btn")),text:"",size:"small",onClick:W},{default:A(()=>[ce(se(b(o)("el.colorpicker.clear")),1)]),_:1},8,["class"]),D(b(Br),{plain:"",size:"small",class:ee(b(a).be("dropdown","btn")),onClick:B},{default:A(()=>[ce(se(b(o)("el.colorpicker.confirm")),1)]),_:1},8,["class"])],2)],40,["onKeydown"])),[[b(Fg),J,p.value]])]),default:A(()=>[w("div",Dn({id:b(u),ref_key:"triggerRef",ref:p},we.$attrs,{class:b(H),role:"button","aria-label":b(U),"aria-labelledby":b(F),"aria-description":b(o)("el.colorpicker.description",{color:we.modelValue||""}),"aria-disabled":b(l),tabindex:b(l)?void 0:we.tabindex,onKeydown:ie,onFocus:b(y),onBlur:b(_)}),[w("div",{class:ee(b(a).be("picker","trigger")),onClick:Y},[w("span",{class:ee([b(a).be("picker","color"),b(a).is("alpha",we.showAlpha)])},[w("span",{class:ee(b(a).be("picker","color-inner")),style:Nt({backgroundColor:b(T)})},[rn(D(b(Tt),{class:ee([b(a).be("picker","icon"),b(a).is("icon-arrow-down")])},{default:A(()=>[D(b(lc))]),_:1},8,["class"]),[[Pn,we.modelValue||k.value]]),rn(D(b(Tt),{class:ee([b(a).be("picker","empty"),b(a).is("icon-close")])},{default:A(()=>[D(b(Gs))]),_:1},8,["class"]),[[Pn,!we.modelValue&&!k.value]])],6)],2)],2)],16,["id","aria-label","aria-labelledby","aria-description","aria-disabled","tabindex","onFocus","onBlur"])]),_:1},8,["visible","popper-class","teleported","transition","onHide"]))}});var Yht=vt(Ght,[["__file","color-picker.vue"]]);const Xht=dn(Yht),Jht=ht({a11y:{type:Boolean,default:!0},locale:{type:$e(Object)},size:Aa,button:{type:$e(Object)},link:{type:$e(Object)},experimentalFeatures:{type:$e(Object)},keyboardNavigation:{type:Boolean,default:!0},message:{type:$e(Object)},zIndex:Number,namespace:{type:String,default:"el"},...vC}),gu={},Zht=ne({name:"ElConfigProvider",props:Jht,setup(e,{slots:t}){const n=jne(e);return Ze(()=>e.message,r=>{var o,a;Object.assign(gu,(a=(o=n==null?void 0:n.value)==null?void 0:o.message)!=null?a:{},r??{})},{immediate:!0,deep:!0}),()=>Ne(t,"default",{config:n==null?void 0:n.value})}}),Qht=dn(Zht),ept=ne({name:"ElContainer"}),tpt=ne({...ept,props:{direction:{type:String}},setup(e){const t=e,n=La(),r=nt("container"),o=K(()=>t.direction==="vertical"?!0:t.direction==="horizontal"?!1:n&&n.default?n.default().some(i=>{const s=i.type.name;return s==="ElHeader"||s==="ElFooter"}):!1);return(a,i)=>(I(),j("section",{class:ee([b(r).b(),b(r).is("vertical",b(o))])},[Ne(a.$slots,"default")],2))}});var npt=vt(tpt,[["__file","container.vue"]]);const rpt=ne({name:"ElAside"}),opt=ne({...rpt,props:{width:{type:String,default:null}},setup(e){const t=e,n=nt("aside"),r=K(()=>t.width?n.cssVarBlock({width:t.width}):{});return(o,a)=>(I(),j("aside",{class:ee(b(n).b()),style:Nt(b(r))},[Ne(o.$slots,"default")],6))}});var ISe=vt(opt,[["__file","aside.vue"]]);const apt=ne({name:"ElFooter"}),ipt=ne({...apt,props:{height:{type:String,default:null}},setup(e){const t=e,n=nt("footer"),r=K(()=>t.height?n.cssVarBlock({height:t.height}):{});return(o,a)=>(I(),j("footer",{class:ee(b(n).b()),style:Nt(b(r))},[Ne(o.$slots,"default")],6))}});var MSe=vt(ipt,[["__file","footer.vue"]]);const spt=ne({name:"ElHeader"}),lpt=ne({...spt,props:{height:{type:String,default:null}},setup(e){const t=e,n=nt("header"),r=K(()=>t.height?n.cssVarBlock({height:t.height}):{});return(o,a)=>(I(),j("header",{class:ee(b(n).b()),style:Nt(b(r))},[Ne(o.$slots,"default")],6))}});var PSe=vt(lpt,[["__file","header.vue"]]);const upt=ne({name:"ElMain"}),cpt=ne({...upt,setup(e){const t=nt("main");return(n,r)=>(I(),j("main",{class:ee(b(t).b())},[Ne(n.$slots,"default")],2))}});var $Se=vt(cpt,[["__file","main.vue"]]);const dpt=dn(npt,{Aside:ISe,Footer:MSe,Header:PSe,Main:$Se}),fpt=vo(ISe),hpt=vo(MSe),ppt=vo(PSe),gpt=vo($Se);var BSe={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Xn,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},r=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,o=/\d/,a=/\d\d/,i=/\d\d?/,s=/\d*[^-_:/,()\s\d]+/,l={},u=function(m){return(m=+m)+(m>68?1900:2e3)},c=function(m){return function(v){this[m]=+v}},d=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(v){if(!v||v==="Z")return 0;var y=v.match(/([+-]|\d\d)/g),_=60*y[1]+(+y[2]||0);return _===0?0:y[0]==="+"?-_:_}(m)}],f=function(m){var v=l[m];return v&&(v.indexOf?v:v.s.concat(v.f))},h=function(m,v){var y,_=l.meridiem;if(_){for(var C=1;C<=24;C+=1)if(m.indexOf(_(C,0,v))>-1){y=C>12;break}}else y=m===(v?"pm":"PM");return y},g={A:[s,function(m){this.afternoon=h(m,!1)}],a:[s,function(m){this.afternoon=h(m,!0)}],Q:[o,function(m){this.month=3*(m-1)+1}],S:[o,function(m){this.milliseconds=100*+m}],SS:[a,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[i,c("seconds")],ss:[i,c("seconds")],m:[i,c("minutes")],mm:[i,c("minutes")],H:[i,c("hours")],h:[i,c("hours")],HH:[i,c("hours")],hh:[i,c("hours")],D:[i,c("day")],DD:[a,c("day")],Do:[s,function(m){var v=l.ordinal,y=m.match(/\d+/);if(this.day=y[0],v)for(var _=1;_<=31;_+=1)v(_).replace(/\[|\]/g,"")===m&&(this.day=_)}],w:[i,c("week")],ww:[a,c("week")],M:[i,c("month")],MM:[a,c("month")],MMM:[s,function(m){var v=f("months"),y=(f("monthsShort")||v.map(function(_){return _.slice(0,3)})).indexOf(m)+1;if(y<1)throw new Error;this.month=y%12||y}],MMMM:[s,function(m){var v=f("months").indexOf(m)+1;if(v<1)throw new Error;this.month=v%12||v}],Y:[/[+-]?\d+/,c("year")],YY:[a,function(m){this.year=u(m)}],YYYY:[/\d{4}/,c("year")],Z:d,ZZ:d};function p(m){var v,y;v=m,y=l&&l.formats;for(var _=(m=v.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(P,U,F){var H=F&&F.toUpperCase();return U||y[F]||n[F]||y[H].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(R,z,M){return z||M.slice(1)})})).match(r),C=_.length,S=0;S-1)return new Date((L==="X"?1e3:1)*N);var $=p(L)(N),B=$.year,W=$.month,J=$.day,oe=$.hours,ie=$.minutes,Z=$.seconds,de=$.milliseconds,we=$.zone,Be=$.week,ke=new Date,ae=J||(B||W?1:ke.getDate()),le=B||ke.getFullYear(),q=0;B&&!W||(q=W>0?W-1:ke.getMonth());var pe,he=oe||0,re=ie||0,ue=Z||0,_e=de||0;return we?new Date(Date.UTC(le,q,ae,he,re,ue,_e+60*we.offset*1e3)):V?new Date(Date.UTC(le,q,ae,he,re,ue,_e)):(pe=new Date(le,q,ae,he,re,ue,_e),Be&&(pe=Y(pe).week(Be).toDate()),pe)}catch{return new Date("")}}(E,T,k,y),this.init(),H&&H!==!0&&(this.$L=this.locale(H).$L),F&&E!=this.format(T)&&(this.$d=new Date("")),l={}}else if(T instanceof Array)for(var R=T.length,z=1;z<=R;z+=1){O[1]=T[z-1];var M=y.apply(this,O);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}z===R&&(this.$d=new Date(""))}else C.call(this,S)}}})})(BSe);var vpt=BSe.exports;const Cre=Wg(vpt);var RSe={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Xn,function(){return function(n,r){var o=r.prototype,a=o.format;o.format=function(i){var s=this,l=this.$locale();if(!this.isValid())return a.bind(this)(i);var u=this.$utils(),c=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(d){switch(d){case"Q":return Math.ceil((s.$M+1)/3);case"Do":return l.ordinal(s.$D);case"gggg":return s.weekYear();case"GGGG":return s.isoWeekYear();case"wo":return l.ordinal(s.week(),"W");case"w":case"ww":return u.s(s.week(),d==="w"?1:2,"0");case"W":case"WW":return u.s(s.isoWeek(),d==="W"?1:2,"0");case"k":case"kk":return u.s(String(s.$H===0?24:s.$H),d==="k"?1:2,"0");case"X":return Math.floor(s.$d.getTime()/1e3);case"x":return s.$d.getTime();case"z":return"["+s.offsetName()+"]";case"zzz":return"["+s.offsetName("long")+"]";default:return d}});return a.bind(this)(c)}}})})(RSe);var mpt=RSe.exports;const ypt=Wg(mpt);var NSe={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Xn,function(){var n="week",r="year";return function(o,a,i){var s=a.prototype;s.week=function(l){if(l===void 0&&(l=null),l!==null)return this.add(7*(l-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var c=i(this).startOf(r).add(1,r).date(u),d=i(this).endOf(n);if(c.isBefore(d))return 1}var f=i(this).startOf(r).date(u).startOf(n).subtract(1,"millisecond"),h=this.diff(f,n,!0);return h<0?i(this).startOf("week").week():Math.ceil(h)},s.weeks=function(l){return l===void 0&&(l=null),this.week(l)}}})})(NSe);var bpt=NSe.exports;const _pt=Wg(bpt);var LSe={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Xn,function(){return function(n,r){r.prototype.weekYear=function(){var o=this.month(),a=this.week(),i=this.year();return a===1&&o===11?i+1:o===0&&a>=52?i-1:i}}})})(LSe);var wpt=LSe.exports;const Cpt=Wg(wpt);var USe={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Xn,function(){return function(n,r,o){r.prototype.dayOfYear=function(a){var i=Math.round((o(this).startOf("day")-o(this).startOf("year"))/864e5)+1;return a==null?i:this.add(a-i,"day")}}})})(USe);var xpt=USe.exports;const Spt=Wg(xpt);var VSe={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Xn,function(){return function(n,r){r.prototype.isSameOrAfter=function(o,a){return this.isSame(o,a)||this.isAfter(o,a)}}})})(VSe);var Dpt=VSe.exports;const Ept=Wg(Dpt);var zSe={exports:{}};(function(e,t){(function(n,r){e.exports=r()})(Xn,function(){return function(n,r){r.prototype.isSameOrBefore=function(o,a){return this.isSame(o,a)||this.isBefore(o,a)}}})})(zSe);var kpt=zSe.exports;const Apt=Wg(kpt),Mhe=["hours","minutes","seconds"],qg="EP_PICKER_BASE",xre="ElPopperOptions",WM="HH:mm:ss",W4="YYYY-MM-DD",Tpt={date:W4,dates:W4,week:"gggg[w]ww",year:"YYYY",years:"YYYY",month:"YYYY-MM",months:"YYYY-MM",datetime:`${W4} ${WM}`,monthrange:"YYYY-MM",yearrange:"YYYY",daterange:W4,datetimerange:`${W4} ${WM}`},jSe=ht({disabledHours:{type:$e(Function)},disabledMinutes:{type:$e(Function)},disabledSeconds:{type:$e(Function)}}),HSe=ht({visible:Boolean,actualVisible:{type:Boolean,default:void 0},format:{type:String,default:""}}),Sre=ht({id:{type:$e([Array,String])},name:{type:$e([Array,String])},popperClass:{type:String,default:""},format:String,valueFormat:String,dateFormat:String,timeFormat:String,type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:$e([String,Object]),default:Yh},editable:{type:Boolean,default:!0},prefixIcon:{type:$e([String,Object]),default:""},size:Aa,readonly:Boolean,disabled:Boolean,placeholder:{type:String,default:""},popperOptions:{type:$e(Object),default:()=>({})},modelValue:{type:$e([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:$e([Date,Array])},defaultTime:{type:$e([Date,Array])},isRange:Boolean,...jSe,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,tabindex:{type:$e([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean,placement:{type:$e(String),values:Hg,default:"bottom"},fallbackPlacements:{type:$e(Array),default:["bottom","top","right","left"]},...vC,...ts(["ariaLabel"]),showNow:{type:Boolean,default:!0}}),Opt=ht({id:{type:$e(Array)},name:{type:$e(Array)},modelValue:{type:$e([Array,String])},startPlaceholder:String,endPlaceholder:String,disabled:Boolean}),Fpt=ne({name:"PickerRangeTrigger",inheritAttrs:!1}),Ipt=ne({...Fpt,props:Opt,emits:["mouseenter","mouseleave","click","touchstart","focus","blur","startInput","endInput","startChange","endChange"],setup(e,{expose:t,emit:n}){const r=gT(),o=nt("date"),a=nt("range"),i=X(),s=X(),{wrapperRef:l,isFocused:u}=t1(i),c=C=>{n("click",C)},d=C=>{n("mouseenter",C)},f=C=>{n("mouseleave",C)},h=C=>{n("mouseenter",C)},g=C=>{n("startInput",C)},p=C=>{n("endInput",C)},m=C=>{n("startChange",C)},v=C=>{n("endChange",C)};return t({focus:()=>{var C;(C=i.value)==null||C.focus()},blur:()=>{var C,S;(C=i.value)==null||C.blur(),(S=s.value)==null||S.blur()}}),(C,S)=>(I(),j("div",{ref_key:"wrapperRef",ref:l,class:ee([b(o).is("active",b(u)),C.$attrs.class]),style:Nt(C.$attrs.style),onClick:c,onMouseenter:d,onMouseleave:f,onTouchstartPassive:h},[Ne(C.$slots,"prefix"),w("input",Dn(b(r),{id:C.id&&C.id[0],ref_key:"inputRef",ref:i,name:C.name&&C.name[0],placeholder:C.startPlaceholder,value:C.modelValue&&C.modelValue[0],class:b(a).b("input"),disabled:C.disabled,onInput:g,onChange:m}),null,16,["id","name","placeholder","value","disabled"]),Ne(C.$slots,"range-separator"),w("input",Dn(b(r),{id:C.id&&C.id[1],ref_key:"endInputRef",ref:s,name:C.name&&C.name[1],placeholder:C.endPlaceholder,value:C.modelValue&&C.modelValue[1],class:b(a).b("input"),disabled:C.disabled,onInput:p,onChange:v}),null,16,["id","name","placeholder","value","disabled"]),Ne(C.$slots,"suffix")],38))}});var Mpt=vt(Ipt,[["__file","picker-range-trigger.vue"]]);const Ppt=ne({name:"Picker"}),$pt=ne({...Ppt,props:Sre,emits:[en,En,"focus","blur","clear","calendar-change","panel-change","visible-change","keydown"],setup(e,{expose:t,emit:n}){const r=e,o=Ug(),{lang:a}=Un(),i=nt("date"),s=nt("input"),l=nt("range"),{form:u,formItem:c}=ws(),d=kt(xre,{}),{valueOnClear:f}=TL(r,null),h=X(),g=X(),p=X(!1),m=X(!1),v=X(null);let y=!1;const{isFocused:_,handleFocus:C,handleBlur:S}=t1(g,{beforeFocus(){return r.readonly||V.value},afterFocus(){p.value=!0},beforeBlur(Te){var Ge;return!y&&((Ge=h.value)==null?void 0:Ge.isFocusInsideContent(Te))},afterBlur(){Pe(),p.value=!1,y=!1,r.validateEvent&&(c==null||c.validate("blur").catch(Te=>void 0))}}),E=K(()=>[i.b("editor"),i.bm("editor",r.type),s.e("wrapper"),i.is("disabled",V.value),i.is("active",p.value),l.b("editor"),he?l.bm("editor",he.value):"",o.class]),k=K(()=>[s.e("icon"),l.e("close-icon"),de.value?"":l.e("close-icon--hidden")]);Ze(p,Te=>{Te?It(()=>{Te&&(v.value=r.modelValue)}):(_e.value=null,It(()=>{O(r.modelValue)}))});const O=(Te,Ge)=>{(Ge||!Che(Te,v.value))&&(n(En,Te),Ge&&(v.value=Te),r.validateEvent&&(c==null||c.validate("change").catch(Ot=>void 0)))},T=Te=>{if(!Che(r.modelValue,Te)){let Ge;ct(Te)?Ge=Te.map(Ot=>She(Ot,r.valueFormat,a.value)):Te&&(Ge=She(Te,r.valueFormat,a.value)),n(en,Te&&Ge,a.value)}},P=Te=>{n("keydown",Te)},U=K(()=>g.value?Array.from(g.value.$el.querySelectorAll("input")):[]),F=(Te,Ge,Ot)=>{const Zt=U.value;Zt.length&&(!Ot||Ot==="min"?(Zt[0].setSelectionRange(Te,Ge),Zt[0].focus()):Ot==="max"&&(Zt[1].setSelectionRange(Te,Ge),Zt[1].focus()))},H=(Te="",Ge=!1)=>{p.value=Ge;let Ot;ct(Te)?Ot=Te.map(Zt=>Zt.toDate()):Ot=Te&&Te.toDate(),_e.value=null,T(Ot)},R=()=>{m.value=!0},z=()=>{n("visible-change",!0)},M=()=>{m.value=!1,p.value=!1,n("visible-change",!1)},N=()=>{p.value=!0},L=()=>{p.value=!1},V=K(()=>r.disabled||(u==null?void 0:u.disabled)),Y=K(()=>{let Te;if(Be.value?Dt.value.getDefaultValue&&(Te=Dt.value.getDefaultValue()):ct(r.modelValue)?Te=r.modelValue.map(Ge=>xhe(Ge,r.valueFormat,a.value)):Te=xhe(r.modelValue,r.valueFormat,a.value),Dt.value.getRangeAvailableTime){const Ge=Dt.value.getRangeAvailableTime(Te);mi(Ge,Te)||(Te=Ge,Be.value||T(Q7(Te)))}return ct(Te)&&Te.some(Ge=>!Ge)&&(Te=[]),Te}),$=K(()=>{if(!Dt.value.panelReady)return"";const Te=Ee(Y.value);return ct(_e.value)?[_e.value[0]||Te&&Te[0]||"",_e.value[1]||Te&&Te[1]||""]:_e.value!==null?_e.value:!W.value&&Be.value||!p.value&&Be.value?"":Te?J.value||oe.value||ie.value?Te.join(", "):Te:""}),B=K(()=>r.type.includes("time")),W=K(()=>r.type.startsWith("time")),J=K(()=>r.type==="dates"),oe=K(()=>r.type==="months"),ie=K(()=>r.type==="years"),Z=K(()=>r.prefixIcon||(B.value?$D:Bm)),de=X(!1),we=Te=>{r.readonly||V.value||(de.value&&(Te.stopPropagation(),Dt.value.handleClear?Dt.value.handleClear():T(f.value),O(f.value,!0),de.value=!1,M()),n("clear"))},Be=K(()=>{const{modelValue:Te}=r;return!Te||ct(Te)&&!Te.filter(Boolean).length}),ke=async Te=>{var Ge;r.readonly||V.value||(((Ge=Te.target)==null?void 0:Ge.tagName)!=="INPUT"||_.value)&&(p.value=!0)},ae=()=>{r.readonly||V.value||!Be.value&&r.clearable&&(de.value=!0)},le=()=>{de.value=!1},q=Te=>{var Ge;r.readonly||V.value||(((Ge=Te.touches[0].target)==null?void 0:Ge.tagName)!=="INPUT"||_.value)&&(p.value=!0)},pe=K(()=>r.type.includes("range")),he=ma(),re=K(()=>{var Te,Ge;return(Ge=(Te=b(h))==null?void 0:Te.popperRef)==null?void 0:Ge.contentRef}),ue=zne(g,Te=>{const Ge=b(re),Ot=ji(g);Ge&&(Te.target===Ge||Te.composedPath().includes(Ge))||Te.target===Ot||Ot&&Te.composedPath().includes(Ot)||(p.value=!1)});Ar(()=>{ue==null||ue()});const _e=X(null),Pe=()=>{if(_e.value){const Te=Ae($.value);Te&&ye(Te)&&(T(Q7(Te)),_e.value=null)}_e.value===""&&(T(f.value),O(f.value,!0),_e.value=null)},Ae=Te=>Te?Dt.value.parseUserInput(Te):null,Ee=Te=>Te?Dt.value.formatToString(Te):null,ye=Te=>Dt.value.isValidValue(Te),ve=async Te=>{if(r.readonly||V.value)return;const{code:Ge}=Te;if(P(Te),Ge===St.esc){p.value===!0&&(p.value=!1,Te.preventDefault(),Te.stopPropagation());return}if(Ge===St.down&&(Dt.value.handleFocusPicker&&(Te.preventDefault(),Te.stopPropagation()),p.value===!1&&(p.value=!0,await It()),Dt.value.handleFocusPicker)){Dt.value.handleFocusPicker();return}if(Ge===St.tab){y=!0;return}if(Ge===St.enter||Ge===St.numpadEnter){(_e.value===null||_e.value===""||ye(Ae($.value)))&&(Pe(),p.value=!1),Te.stopPropagation();return}if(_e.value){Te.stopPropagation();return}Dt.value.handleKeydownInput&&Dt.value.handleKeydownInput(Te)},Ce=Te=>{_e.value=Te,p.value||(p.value=!0)},ze=Te=>{const Ge=Te.target;_e.value?_e.value=[Ge.value,_e.value[1]]:_e.value=[Ge.value,null]},at=Te=>{const Ge=Te.target;_e.value?_e.value=[_e.value[0],Ge.value]:_e.value=[null,Ge.value]},bt=()=>{var Te;const Ge=_e.value,Ot=Ae(Ge&&Ge[0]),Zt=b(Y);if(Ot&&Ot.isValid()){_e.value=[Ee(Ot),((Te=$.value)==null?void 0:Te[1])||null];const Wt=[Ot,Zt&&(Zt[1]||null)];ye(Wt)&&(T(Q7(Wt)),_e.value=null)}},Ft=()=>{var Te;const Ge=b(_e),Ot=Ae(Ge&&Ge[1]),Zt=b(Y);if(Ot&&Ot.isValid()){_e.value=[((Te=b($))==null?void 0:Te[0])||null,Ee(Ot)];const Wt=[Zt&&Zt[0],Ot];ye(Wt)&&(T(Q7(Wt)),_e.value=null)}},Dt=X({}),He=Te=>{Dt.value[Te[0]]=Te[1],Dt.value.panelReady=!0},Fe=Te=>{n("calendar-change",Te)},Ue=(Te,Ge,Ot)=>{n("panel-change",Te,Ge,Ot)},Se=()=>{var Te;(Te=g.value)==null||Te.focus()},We=()=>{var Te;(Te=g.value)==null||Te.blur()};return Fn(qg,{props:r}),t({focus:Se,blur:We,handleOpen:N,handleClose:L,onPick:H}),(Te,Ge)=>(I(),Oe(b(Yi),Dn({ref_key:"refPopper",ref:h,visible:p.value,effect:"light",pure:"",trigger:"click"},Te.$attrs,{role:"dialog",teleported:"",transition:`${b(i).namespace.value}-zoom-in-top`,"popper-class":[`${b(i).namespace.value}-picker__popper`,Te.popperClass],"popper-options":b(d),"fallback-placements":Te.fallbackPlacements,"gpu-acceleration":!1,placement:Te.placement,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:R,onShow:z,onHide:M}),{default:A(()=>[b(pe)?(I(),Oe(Mpt,{key:1,id:Te.id,ref_key:"inputRef",ref:g,"model-value":b($),name:Te.name,disabled:b(V),readonly:!Te.editable||Te.readonly,"start-placeholder":Te.startPlaceholder,"end-placeholder":Te.endPlaceholder,class:ee(b(E)),style:Nt(Te.$attrs.style),"aria-label":Te.ariaLabel,tabindex:Te.tabindex,autocomplete:"off",role:"combobox",onClick:ke,onFocus:b(C),onBlur:b(S),onStartInput:ze,onStartChange:bt,onEndInput:at,onEndChange:Ft,onMousedown:ke,onMouseenter:ae,onMouseleave:le,onTouchstartPassive:q,onKeydown:ve},{prefix:A(()=>[b(Z)?(I(),Oe(b(Tt),{key:0,class:ee([b(s).e("icon"),b(l).e("icon")])},{default:A(()=>[(I(),Oe(_n(b(Z))))]),_:1},8,["class"])):be("v-if",!0)]),"range-separator":A(()=>[Ne(Te.$slots,"range-separator",{},()=>[w("span",{class:ee(b(l).b("separator"))},se(Te.rangeSeparator),3)])]),suffix:A(()=>[Te.clearIcon?(I(),Oe(b(Tt),{key:0,class:ee(b(k)),onMousedown:zt(b(fr),["prevent"]),onClick:we},{default:A(()=>[(I(),Oe(_n(Te.clearIcon)))]),_:1},8,["class","onMousedown"])):be("v-if",!0)]),_:3},8,["id","model-value","name","disabled","readonly","start-placeholder","end-placeholder","class","style","aria-label","tabindex","onFocus","onBlur"])):(I(),Oe(b(fo),{key:0,id:Te.id,ref_key:"inputRef",ref:g,"container-role":"combobox","model-value":b($),name:Te.name,size:b(he),disabled:b(V),placeholder:Te.placeholder,class:ee([b(i).b("editor"),b(i).bm("editor",Te.type),Te.$attrs.class]),style:Nt(Te.$attrs.style),readonly:!Te.editable||Te.readonly||b(J)||b(oe)||b(ie)||Te.type==="week","aria-label":Te.ariaLabel,tabindex:Te.tabindex,"validate-event":!1,onInput:Ce,onFocus:b(C),onBlur:b(S),onKeydown:ve,onChange:Pe,onMousedown:ke,onMouseenter:ae,onMouseleave:le,onTouchstartPassive:q,onClick:zt(()=>{},["stop"])},{prefix:A(()=>[b(Z)?(I(),Oe(b(Tt),{key:0,class:ee(b(s).e("icon")),onMousedown:zt(ke,["prevent"]),onTouchstartPassive:q},{default:A(()=>[(I(),Oe(_n(b(Z))))]),_:1},8,["class","onMousedown"])):be("v-if",!0)]),suffix:A(()=>[de.value&&Te.clearIcon?(I(),Oe(b(Tt),{key:0,class:ee(`${b(s).e("icon")} clear-icon`),onMousedown:zt(b(fr),["prevent"]),onClick:we},{default:A(()=>[(I(),Oe(_n(Te.clearIcon)))]),_:1},8,["class","onMousedown"])):be("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","aria-label","tabindex","onFocus","onBlur","onClick"]))]),content:A(()=>[Ne(Te.$slots,"default",{visible:p.value,actualVisible:m.value,parsedValue:b(Y),format:Te.format,dateFormat:Te.dateFormat,timeFormat:Te.timeFormat,unlinkPanels:Te.unlinkPanels,type:Te.type,defaultValue:Te.defaultValue,showNow:Te.showNow,onPick:H,onSelectRange:F,onSetPickerOption:He,onCalendarChange:Fe,onPanelChange:Ue,onMousedown:zt(()=>{},["stop"])})]),_:3},16,["visible","transition","popper-class","popper-options","fallback-placements","placement"]))}});var WSe=vt($pt,[["__file","picker.vue"]]);const Bpt=ht({...HSe,datetimeRole:String,parsedValue:{type:$e(Object)}}),qSe=({getAvailableHours:e,getAvailableMinutes:t,getAvailableSeconds:n})=>{const r=(i,s,l,u)=>{const c={hour:e,minute:t,second:n};let d=i;return["hour","minute","second"].forEach(f=>{if(c[f]){let h;const g=c[f];switch(f){case"minute":{h=g(d.hour(),s,u);break}case"second":{h=g(d.hour(),d.minute(),s,u);break}default:{h=g(s,u);break}}if(h!=null&&h.length&&!h.includes(d[f]())){const p=l?0:h.length-1;d=d[f](h[p])}}}),d},o={};return{timePickerOptions:o,getAvailableTime:r,onSetOption:([i,s])=>{o[i]=s}}},tj=e=>{const t=(r,o)=>r||o,n=r=>r!==!0;return e.map(t).filter(n)},KSe=(e,t,n)=>({getHoursList:(i,s)=>Zz(24,e&&(()=>e==null?void 0:e(i,s))),getMinutesList:(i,s,l)=>Zz(60,t&&(()=>t==null?void 0:t(i,s,l))),getSecondsList:(i,s,l,u)=>Zz(60,n&&(()=>n==null?void 0:n(i,s,l,u)))}),GSe=(e,t,n)=>{const{getHoursList:r,getMinutesList:o,getSecondsList:a}=KSe(e,t,n);return{getAvailableHours:(u,c)=>tj(r(u,c)),getAvailableMinutes:(u,c,d)=>tj(o(u,c,d)),getAvailableSeconds:(u,c,d,f)=>tj(a(u,c,d,f))}},YSe=e=>{const t=X(e.parsedValue);return Ze(()=>e.visible,n=>{n||(t.value=e.parsedValue)}),t},Rpt=ht({role:{type:String,required:!0},spinnerDate:{type:$e(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:$e(String),default:""},...jSe}),Npt=100,Lpt=600,qM={beforeMount(e,t){const n=t.value,{interval:r=Npt,delay:o=Lpt}=Rt(n)?{}:n;let a,i;const s=()=>Rt(n)?n():n.handler(),l=()=>{i&&(clearTimeout(i),i=void 0),a&&(clearInterval(a),a=void 0)};e.addEventListener("mousedown",u=>{u.button===0&&(l(),s(),document.addEventListener("mouseup",()=>l(),{once:!0}),i=setTimeout(()=>{a=setInterval(()=>{s()},r)},o))})}},Upt=ne({__name:"basic-time-spinner",props:Rpt,emits:[En,"select-range","set-option"],setup(e,{emit:t}){const n=e,r=kt(qg),{isRange:o,format:a}=r.props,i=nt("time"),{getHoursList:s,getMinutesList:l,getSecondsList:u}=KSe(n.disabledHours,n.disabledMinutes,n.disabledSeconds);let c=!1;const d=X(),f=X(),h=X(),g=X(),p={hours:f,minutes:h,seconds:g},m=K(()=>n.showSeconds?Mhe:Mhe.slice(0,2)),v=K(()=>{const{spinnerDate:B}=n,W=B.hour(),J=B.minute(),oe=B.second();return{hours:W,minutes:J,seconds:oe}}),y=K(()=>{const{hours:B,minutes:W}=b(v),{role:J,spinnerDate:oe}=n,ie=o?void 0:oe;return{hours:s(J,ie),minutes:l(B,J,ie),seconds:u(B,W,J,ie)}}),_=K(()=>{const{hours:B,minutes:W,seconds:J}=b(v);return{hours:Jz(B,23),minutes:Jz(W,59),seconds:Jz(J,59)}}),C=tu(B=>{c=!1,k(B)},200),S=B=>{if(!!!n.amPmMode)return"";const J=n.amPmMode==="A";let oe=B<12?" am":" pm";return J&&(oe=oe.toUpperCase()),oe},E=B=>{let W=[0,0];if(!a||a===WM)switch(B){case"hours":W=[0,2];break;case"minutes":W=[3,5];break;case"seconds":W=[6,8];break}const[J,oe]=W;t("select-range",J,oe),d.value=B},k=B=>{P(B,b(v)[B])},O=()=>{k("hours"),k("minutes"),k("seconds")},T=B=>B.querySelector(`.${i.namespace.value}-scrollbar__wrap`),P=(B,W)=>{if(n.arrowControl)return;const J=b(p[B]);J&&J.$el&&(T(J.$el).scrollTop=Math.max(0,W*U(B)))},U=B=>{const W=b(p[B]),J=W==null?void 0:W.$el.querySelector("li");return J&&Number.parseFloat(lg(J,"height"))||0},F=()=>{R(1)},H=()=>{R(-1)},R=B=>{d.value||E("hours");const W=d.value,J=b(v)[W],oe=d.value==="hours"?24:60,ie=z(W,J,B,oe);M(W,ie),P(W,ie),It(()=>E(W))},z=(B,W,J,oe)=>{let ie=(W+J+oe)%oe;const Z=b(y)[B];for(;Z[ie]&&ie!==W;)ie=(ie+J+oe)%oe;return ie},M=(B,W)=>{if(b(y)[B][W])return;const{hours:ie,minutes:Z,seconds:de}=b(v);let we;switch(B){case"hours":we=n.spinnerDate.hour(W).minute(Z).second(de);break;case"minutes":we=n.spinnerDate.hour(ie).minute(W).second(de);break;case"seconds":we=n.spinnerDate.hour(ie).minute(Z).second(W);break}t(En,we)},N=(B,{value:W,disabled:J})=>{J||(M(B,W),E(B),P(B,W))},L=B=>{const W=b(p[B]);if(!W)return;c=!0,C(B);const J=Math.min(Math.round((T(W.$el).scrollTop-(V(B)*.5-10)/U(B)+3)/U(B)),B==="hours"?23:59);M(B,J)},V=B=>b(p[B]).$el.offsetHeight,Y=()=>{const B=W=>{const J=b(p[W]);J&&J.$el&&(T(J.$el).onscroll=()=>{L(W)})};B("hours"),B("minutes"),B("seconds")};Kt(()=>{It(()=>{!n.arrowControl&&Y(),O(),n.role==="start"&&E("hours")})});const $=(B,W)=>{p[W].value=B??void 0};return t("set-option",[`${n.role}_scrollDown`,R]),t("set-option",[`${n.role}_emitSelectRange`,E]),Ze(()=>n.spinnerDate,()=>{c||O()}),(B,W)=>(I(),j("div",{class:ee([b(i).b("spinner"),{"has-seconds":B.showSeconds}])},[B.arrowControl?be("v-if",!0):(I(!0),j(tt,{key:0},wt(b(m),J=>(I(),Oe(b(id),{key:J,ref_for:!0,ref:oe=>$(oe,J),class:ee(b(i).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":b(i).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:oe=>E(J),onMousemove:oe=>k(J)},{default:A(()=>[(I(!0),j(tt,null,wt(b(y)[J],(oe,ie)=>(I(),j("li",{key:ie,class:ee([b(i).be("spinner","item"),b(i).is("active",ie===b(v)[J]),b(i).is("disabled",oe)]),onClick:Z=>N(J,{value:ie,disabled:oe})},[J==="hours"?(I(),j(tt,{key:0},[ce(se(("0"+(B.amPmMode?ie%12||12:ie)).slice(-2))+se(S(ie)),1)],64)):(I(),j(tt,{key:1},[ce(se(("0"+ie).slice(-2)),1)],64))],10,["onClick"]))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),B.arrowControl?(I(!0),j(tt,{key:1},wt(b(m),J=>(I(),j("div",{key:J,class:ee([b(i).be("spinner","wrapper"),b(i).is("arrow")]),onMouseenter:oe=>E(J)},[rn((I(),Oe(b(Tt),{class:ee(["arrow-up",b(i).be("spinner","arrow")])},{default:A(()=>[D(b(mC))]),_:1},8,["class"])),[[b(qM),H]]),rn((I(),Oe(b(Tt),{class:ee(["arrow-down",b(i).be("spinner","arrow")])},{default:A(()=>[D(b(lc))]),_:1},8,["class"])),[[b(qM),F]]),w("ul",{class:ee(b(i).be("spinner","list"))},[(I(!0),j(tt,null,wt(b(_)[J],(oe,ie)=>(I(),j("li",{key:ie,class:ee([b(i).be("spinner","item"),b(i).is("active",oe===b(v)[J]),b(i).is("disabled",b(y)[J][oe])])},[b(Lt)(oe)?(I(),j(tt,{key:0},[J==="hours"?(I(),j(tt,{key:0},[ce(se(("0"+(B.amPmMode?oe%12||12:oe)).slice(-2))+se(S(oe)),1)],64)):(I(),j(tt,{key:1},[ce(se(("0"+oe).slice(-2)),1)],64))],64)):be("v-if",!0)],2))),128))],2)],42,["onMouseenter"]))),128)):be("v-if",!0)],2))}});var zY=vt(Upt,[["__file","basic-time-spinner.vue"]]);const Vpt=ne({__name:"panel-time-pick",props:Bpt,emits:["pick","select-range","set-picker-option"],setup(e,{emit:t}){const n=e,r=kt(qg),{arrowControl:o,disabledHours:a,disabledMinutes:i,disabledSeconds:s,defaultValue:l}=r.props,{getAvailableHours:u,getAvailableMinutes:c,getAvailableSeconds:d}=GSe(a,i,s),f=nt("time"),{t:h,lang:g}=Un(),p=X([0,2]),m=YSe(n),v=K(()=>Ln(n.actualVisible)?`${f.namespace.value}-zoom-in-top`:""),y=K(()=>n.format.includes("ss")),_=K(()=>n.format.includes("A")?"A":n.format.includes("a")?"a":""),C=L=>{const V=hn(L).locale(g.value),Y=R(V);return V.isSame(Y)},S=()=>{t("pick",m.value,!1)},E=(L=!1,V=!1)=>{V||t("pick",n.parsedValue,L)},k=L=>{if(!n.visible)return;const V=R(L).millisecond(0);t("pick",V,!0)},O=(L,V)=>{t("select-range",L,V),p.value=[L,V]},T=L=>{const V=[0,3].concat(y.value?[6]:[]),Y=["hours","minutes"].concat(y.value?["seconds"]:[]),B=(V.indexOf(p.value[0])+L+V.length)%V.length;U.start_emitSelectRange(Y[B])},P=L=>{const V=L.code,{left:Y,right:$,up:B,down:W}=St;if([Y,$].includes(V)){T(V===Y?-1:1),L.preventDefault();return}if([B,W].includes(V)){const J=V===B?-1:1;U.start_scrollDown(J),L.preventDefault();return}},{timePickerOptions:U,onSetOption:F,getAvailableTime:H}=qSe({getAvailableHours:u,getAvailableMinutes:c,getAvailableSeconds:d}),R=L=>H(L,n.datetimeRole||"",!0),z=L=>L?hn(L,n.format).locale(g.value):null,M=L=>L?L.format(n.format):null,N=()=>hn(l).locale(g.value);return t("set-picker-option",["isValidValue",C]),t("set-picker-option",["formatToString",M]),t("set-picker-option",["parseUserInput",z]),t("set-picker-option",["handleKeydownInput",P]),t("set-picker-option",["getRangeAvailableTime",R]),t("set-picker-option",["getDefaultValue",N]),(L,V)=>(I(),Oe(xi,{name:b(v)},{default:A(()=>[L.actualVisible||L.visible?(I(),j("div",{key:0,class:ee(b(f).b("panel"))},[w("div",{class:ee([b(f).be("panel","content"),{"has-seconds":b(y)}])},[D(zY,{ref:"spinner",role:L.datetimeRole||"start","arrow-control":b(o),"show-seconds":b(y),"am-pm-mode":b(_),"spinner-date":L.parsedValue,"disabled-hours":b(a),"disabled-minutes":b(i),"disabled-seconds":b(s),onChange:k,onSetOption:b(F),onSelectRange:O},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),w("div",{class:ee(b(f).be("panel","footer"))},[w("button",{type:"button",class:ee([b(f).be("panel","btn"),"cancel"]),onClick:S},se(b(h)("el.datepicker.cancel")),3),w("button",{type:"button",class:ee([b(f).be("panel","btn"),"confirm"]),onClick:Y=>E()},se(b(h)("el.datepicker.confirm")),11,["onClick"])],2)],2)):be("v-if",!0)]),_:1},8,["name"]))}});var KM=vt(Vpt,[["__file","panel-time-pick.vue"]]);const zpt=ht({...HSe,parsedValue:{type:$e(Array)}}),jpt=ne({__name:"panel-time-range",props:zpt,emits:["pick","select-range","set-picker-option"],setup(e,{emit:t}){const n=e,r=(ke,ae)=>{const le=[];for(let q=ke;q<=ae;q++)le.push(q);return le},{t:o,lang:a}=Un(),i=nt("time"),s=nt("picker"),l=kt(qg),{arrowControl:u,disabledHours:c,disabledMinutes:d,disabledSeconds:f,defaultValue:h}=l.props,g=K(()=>[i.be("range-picker","body"),i.be("panel","content"),i.is("arrow",u),C.value?"has-seconds":""]),p=K(()=>[i.be("range-picker","body"),i.be("panel","content"),i.is("arrow",u),C.value?"has-seconds":""]),m=K(()=>n.parsedValue[0]),v=K(()=>n.parsedValue[1]),y=YSe(n),_=()=>{t("pick",y.value,!1)},C=K(()=>n.format.includes("ss")),S=K(()=>n.format.includes("A")?"A":n.format.includes("a")?"a":""),E=(ke=!1)=>{t("pick",[m.value,v.value],ke)},k=ke=>{P(ke.millisecond(0),v.value)},O=ke=>{P(m.value,ke.millisecond(0))},T=ke=>{const ae=ke.map(q=>hn(q).locale(a.value)),le=$(ae);return ae[0].isSame(le[0])&&ae[1].isSame(le[1])},P=(ke,ae)=>{n.visible&&t("pick",[ke,ae],!0)},U=K(()=>m.value>v.value),F=X([0,2]),H=(ke,ae)=>{t("select-range",ke,ae,"min"),F.value=[ke,ae]},R=K(()=>C.value?11:8),z=(ke,ae)=>{t("select-range",ke,ae,"max");const le=b(R);F.value=[ke+le,ae+le]},M=ke=>{const ae=C.value?[0,3,6,11,14,17]:[0,3,8,11],le=["hours","minutes"].concat(C.value?["seconds"]:[]),pe=(ae.indexOf(F.value[0])+ke+ae.length)%ae.length,he=ae.length/2;pe{const ae=ke.code,{left:le,right:q,up:pe,down:he}=St;if([le,q].includes(ae)){M(ae===le?-1:1),ke.preventDefault();return}if([pe,he].includes(ae)){const re=ae===pe?-1:1,ue=F.value[0]{const le=c?c(ke):[],q=ke==="start",he=(ae||(q?v.value:m.value)).hour(),re=q?r(he+1,23):r(0,he-1);return Wz(le,re)},V=(ke,ae,le)=>{const q=d?d(ke,ae):[],pe=ae==="start",he=le||(pe?v.value:m.value),re=he.hour();if(ke!==re)return q;const ue=he.minute(),_e=pe?r(ue+1,59):r(0,ue-1);return Wz(q,_e)},Y=(ke,ae,le,q)=>{const pe=f?f(ke,ae,le):[],he=le==="start",re=q||(he?v.value:m.value),ue=re.hour(),_e=re.minute();if(ke!==ue||ae!==_e)return pe;const Pe=re.second(),Ae=he?r(Pe+1,59):r(0,Pe-1);return Wz(pe,Ae)},$=([ke,ae])=>[ie(ke,"start",!0,ae),ie(ae,"end",!1,ke)],{getAvailableHours:B,getAvailableMinutes:W,getAvailableSeconds:J}=GSe(L,V,Y),{timePickerOptions:oe,getAvailableTime:ie,onSetOption:Z}=qSe({getAvailableHours:B,getAvailableMinutes:W,getAvailableSeconds:J}),de=ke=>ke?ct(ke)?ke.map(ae=>hn(ae,n.format).locale(a.value)):hn(ke,n.format).locale(a.value):null,we=ke=>ke?ct(ke)?ke.map(ae=>ae.format(n.format)):ke.format(n.format):null,Be=()=>{if(ct(h))return h.map(ae=>hn(ae).locale(a.value));const ke=hn(h).locale(a.value);return[ke,ke.add(60,"m")]};return t("set-picker-option",["formatToString",we]),t("set-picker-option",["parseUserInput",de]),t("set-picker-option",["isValidValue",T]),t("set-picker-option",["handleKeydownInput",N]),t("set-picker-option",["getDefaultValue",Be]),t("set-picker-option",["getRangeAvailableTime",$]),(ke,ae)=>ke.actualVisible?(I(),j("div",{key:0,class:ee([b(i).b("range-picker"),b(s).b("panel")])},[w("div",{class:ee(b(i).be("range-picker","content"))},[w("div",{class:ee(b(i).be("range-picker","cell"))},[w("div",{class:ee(b(i).be("range-picker","header"))},se(b(o)("el.datepicker.startTime")),3),w("div",{class:ee(b(g))},[D(zY,{ref:"minSpinner",role:"start","show-seconds":b(C),"am-pm-mode":b(S),"arrow-control":b(u),"spinner-date":b(m),"disabled-hours":L,"disabled-minutes":V,"disabled-seconds":Y,onChange:k,onSetOption:b(Z),onSelectRange:H},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2),w("div",{class:ee(b(i).be("range-picker","cell"))},[w("div",{class:ee(b(i).be("range-picker","header"))},se(b(o)("el.datepicker.endTime")),3),w("div",{class:ee(b(p))},[D(zY,{ref:"maxSpinner",role:"end","show-seconds":b(C),"am-pm-mode":b(S),"arrow-control":b(u),"spinner-date":b(v),"disabled-hours":L,"disabled-minutes":V,"disabled-seconds":Y,onChange:O,onSetOption:b(Z),onSelectRange:z},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2)],2),w("div",{class:ee(b(i).be("panel","footer"))},[w("button",{type:"button",class:ee([b(i).be("panel","btn"),"cancel"]),onClick:le=>_()},se(b(o)("el.datepicker.cancel")),11,["onClick"]),w("button",{type:"button",class:ee([b(i).be("panel","btn"),"confirm"]),disabled:b(U),onClick:le=>E()},se(b(o)("el.datepicker.confirm")),11,["disabled","onClick"])],2)],2)):be("v-if",!0)}});var Hpt=vt(jpt,[["__file","panel-time-range.vue"]]);hn.extend(Cre);var Wpt=ne({name:"ElTimePicker",install:null,props:{...Sre,isRange:{type:Boolean,default:!1}},emits:[en],setup(e,t){const n=X(),[r,o]=e.isRange?["timerange",Hpt]:["time",KM],a=i=>t.emit(en,i);return Fn(xre,e.popperOptions),t.expose({focus:()=>{var i;(i=n.value)==null||i.focus()},blur:()=>{var i;(i=n.value)==null||i.blur()},handleOpen:()=>{var i;(i=n.value)==null||i.handleOpen()},handleClose:()=>{var i;(i=n.value)==null||i.handleClose()}}),()=>{var i;const s=(i=e.format)!=null?i:WM;return D(WSe,Dn(e,{ref:n,type:r,format:s,"onUpdate:modelValue":a}),{default:l=>D(o,l,null)})}}});const XSe=dn(Wpt),Dre=Symbol(),_T="ElIsDefaultFormat",qpt=ht({...Sre,type:{type:$e(String),default:"date"}}),Kpt=["date","dates","year","years","month","months","week","range"],Ere=ht({disabledDate:{type:$e(Function)},date:{type:$e(Object),required:!0},minDate:{type:$e(Object)},maxDate:{type:$e(Object)},parsedValue:{type:$e([Object,Array])},rangeState:{type:$e(Object),default:()=>({endDate:null,selecting:!1})}}),JSe=ht({type:{type:$e(String),required:!0,values:_dt},dateFormat:String,timeFormat:String,showNow:{type:Boolean,default:!0}}),kre=ht({unlinkPanels:Boolean,visible:Boolean,parsedValue:{type:$e(Array)}}),Are=e=>({type:String,values:Kpt,default:e}),Gpt=ht({...JSe,parsedValue:{type:$e([Object,Array])},visible:{type:Boolean},format:{type:String,default:""}}),UD=e=>{if(!ct(e))return!1;const[t,n]=e;return hn.isDayjs(t)&&hn.isDayjs(n)&&hn(t).isValid()&&hn(n).isValid()&&t.isSameOrBefore(n)},WL=(e,{lang:t,step:n=1,unit:r,unlinkPanels:o})=>{let a;if(ct(e)){let[i,s]=e.map(l=>hn(l).locale(t));return o||(s=i.add(n,r)),[i,s]}else e?a=hn(e):a=hn();return a=a.locale(t),[a,a.add(n,r)]},Ypt=(e,t,{columnIndexOffset:n,startDate:r,nextEndDate:o,now:a,unit:i,relativeDateGetter:s,setCellMetadata:l,setRowMetadata:u})=>{for(let c=0;c{const o=hn().locale(r).startOf("month").month(n).year(t).hour(e.hour()).minute(e.minute()).second(e.second()),a=o.daysInMonth();return sm(a).map(i=>o.add(i,"day").toDate())},v8=(e,t,n,r,o)=>{const a=hn().year(t).month(n).startOf("month").hour(e.hour()).minute(e.minute()).second(e.second()),i=GM(e,t,n,r).find(s=>!(o!=null&&o(s)));return i?hn(i).locale(r):a.locale(r)},YM=(e,t,n)=>{const r=e.year();if(!(n!=null&&n(e.toDate())))return e.locale(t);const o=e.month();if(!GM(e,r,o,t).every(n))return v8(e,r,o,t,n);for(let a=0;a<12;a++)if(!GM(e,r,a,t).every(n))return v8(e,r,a,t,n);return e},m8=(e,t,n,r)=>{if(ct(e))return e.map(o=>m8(o,t,n,r));if($t(e)){const o=r.value?hn(e):hn(e,t);if(!o.isValid())return o}return hn(e,t).locale(n)},Xpt=ht({...Ere,cellClassName:{type:$e(Function)},showWeekNumber:Boolean,selectionMode:Are("date")}),Jpt=["changerange","pick","select"],jY=(e="")=>["normal","today"].includes(e),Zpt=(e,t)=>{const{lang:n}=Un(),r=X(),o=X(),a=X(),i=X(),s=X([[],[],[],[],[],[]]);let l=!1;const u=e.date.$locale().weekStart||7,c=e.date.locale("en").localeData().weekdaysShort().map(V=>V.toLowerCase()),d=K(()=>u>3?7-u:-u),f=K(()=>{const V=e.date.startOf("month");return V.subtract(V.day()||7,"day")}),h=K(()=>c.concat(c).slice(u,u+7)),g=K(()=>sxe(b(C)).some(V=>V.isCurrent)),p=K(()=>{const V=e.date.startOf("month"),Y=V.day()||7,$=V.daysInMonth(),B=V.subtract(1,"month").daysInMonth();return{startOfMonthDay:Y,dateCountOfMonth:$,dateCountOfLastMonth:B}}),m=K(()=>e.selectionMode==="dates"?yl(e.parsedValue):[]),v=(V,{count:Y,rowIndex:$,columnIndex:B})=>{const{startOfMonthDay:W,dateCountOfMonth:J,dateCountOfLastMonth:oe}=b(p),ie=b(d);if($>=0&&$<=1){const Z=W+ie<0?7+W+ie:W+ie;if(B+$*7>=Z)return V.text=Y,!0;V.text=oe-(Z-B%7)+1+$*7,V.type="prev-month"}else return Y<=J?V.text=Y:(V.text=Y-J,V.type="next-month"),!0;return!1},y=(V,{columnIndex:Y,rowIndex:$},B)=>{const{disabledDate:W,cellClassName:J}=e,oe=b(m),ie=v(V,{count:B,rowIndex:$,columnIndex:Y}),Z=V.dayjs.toDate();return V.selected=oe.find(de=>de.isSame(V.dayjs,"day")),V.isSelected=!!V.selected,V.isCurrent=E(V),V.disabled=W==null?void 0:W(Z),V.customClass=J==null?void 0:J(Z),ie},_=V=>{if(e.selectionMode==="week"){const[Y,$]=e.showWeekNumber?[1,7]:[0,6],B=L(V[Y+1]);V[Y].inRange=B,V[Y].start=B,V[$].inRange=B,V[$].end=B}},C=K(()=>{const{minDate:V,maxDate:Y,rangeState:$,showWeekNumber:B}=e,W=b(d),J=b(s),oe="day";let ie=1;if(B)for(let Z=0;Z<6;Z++)J[Z][0]||(J[Z][0]={type:"week",text:b(f).add(Z*7+1,oe).week()});return Ypt({row:6,column:7},J,{startDate:V,columnIndexOffset:B?1:0,nextEndDate:$.endDate||Y||$.selecting&&V||null,now:hn().locale(b(n)).startOf(oe),unit:oe,relativeDateGetter:Z=>b(f).add(Z-W,oe),setCellMetadata:(...Z)=>{y(...Z,ie)&&(ie+=1)},setRowMetadata:_}),J});Ze(()=>e.date,async()=>{var V;(V=b(r))!=null&&V.contains(document.activeElement)&&(await It(),await S())});const S=async()=>{var V;return(V=b(o))==null?void 0:V.focus()},E=V=>e.selectionMode==="date"&&jY(V.type)&&k(V,e.parsedValue),k=(V,Y)=>Y?hn(Y).locale(b(n)).isSame(e.date.date(Number(V.text)),"day"):!1,O=(V,Y)=>{const $=V*7+(Y-(e.showWeekNumber?1:0))-b(d);return b(f).add($,"day")},T=V=>{var Y;if(!e.rangeState.selecting)return;let $=V.target;if($.tagName==="SPAN"&&($=(Y=$.parentNode)==null?void 0:Y.parentNode),$.tagName==="DIV"&&($=$.parentNode),$.tagName!=="TD")return;const B=$.parentNode.rowIndex-1,W=$.cellIndex;b(C)[B][W].disabled||(B!==b(a)||W!==b(i))&&(a.value=B,i.value=W,t("changerange",{selecting:!0,endDate:O(B,W)}))},P=V=>!b(g)&&(V==null?void 0:V.text)===1&&V.type==="normal"||V.isCurrent,U=V=>{l||b(g)||e.selectionMode!=="date"||N(V,!0)},F=V=>{V.target.closest("td")&&(l=!0)},H=V=>{V.target.closest("td")&&(l=!1)},R=V=>{!e.rangeState.selecting||!e.minDate?(t("pick",{minDate:V,maxDate:null}),t("select",!0)):(V>=e.minDate?t("pick",{minDate:e.minDate,maxDate:V}):t("pick",{minDate:V,maxDate:e.minDate}),t("select",!1))},z=V=>{const Y=V.week(),$=`${V.year()}w${Y}`;t("pick",{year:V.year(),week:Y,value:$,date:V.startOf("week")})},M=(V,Y)=>{const $=Y?yl(e.parsedValue).filter(B=>(B==null?void 0:B.valueOf())!==V.valueOf()):yl(e.parsedValue).concat([V]);t("pick",$)},N=(V,Y=!1)=>{const $=V.target.closest("td");if(!$)return;const B=$.parentNode.rowIndex-1,W=$.cellIndex,J=b(C)[B][W];if(J.disabled||J.type==="week")return;const oe=O(B,W);switch(e.selectionMode){case"range":{R(oe);break}case"date":{t("pick",oe,Y);break}case"week":{z(oe);break}case"dates":{M(oe,!!J.selected);break}}},L=V=>{if(e.selectionMode!=="week")return!1;let Y=e.date.startOf("day");if(V.type==="prev-month"&&(Y=Y.subtract(1,"month")),V.type==="next-month"&&(Y=Y.add(1,"month")),Y=Y.date(Number.parseInt(V.text,10)),e.parsedValue&&!ct(e.parsedValue)){const $=(e.parsedValue.day()-u+7)%7-1;return e.parsedValue.subtract($,"day").isSame(Y,"day")}return!1};return{WEEKS:h,rows:C,tbodyRef:r,currentCellRef:o,focus:S,isCurrent:E,isWeekActive:L,isSelectedCell:P,handlePickDate:N,handleMouseUp:H,handleMouseDown:F,handleMouseMove:T,handleFocus:U}},Qpt=(e,{isCurrent:t,isWeekActive:n})=>{const r=nt("date-table"),{t:o}=Un(),a=K(()=>[r.b(),{"is-week-mode":e.selectionMode==="week"}]),i=K(()=>o("el.datepicker.dateTablePrompt")),s=K(()=>o("el.datepicker.week"));return{tableKls:a,tableLabel:i,weekLabel:s,getCellClasses:c=>{const d=[];return jY(c.type)&&!c.disabled?(d.push("available"),c.type==="today"&&d.push("today")):d.push(c.type),t(c)&&d.push("current"),c.inRange&&(jY(c.type)||e.selectionMode==="week")&&(d.push("in-range"),c.start&&d.push("start-date"),c.end&&d.push("end-date")),c.disabled&&d.push("disabled"),c.selected&&d.push("selected"),c.customClass&&d.push(c.customClass),d.join(" ")},getRowKls:c=>[r.e("row"),{current:n(c)}],t:o}},egt=ht({cell:{type:$e(Object)}});var Tre=ne({name:"ElDatePickerCell",props:egt,setup(e){const t=nt("date-table-cell"),{slots:n}=kt(Dre);return()=>{const{cell:r}=e;return Ne(n,"default",{...r},()=>{var o;return[D("div",{class:t.b()},[D("span",{class:t.e("text")},[(o=r==null?void 0:r.renderText)!=null?o:r==null?void 0:r.text])])]})}}});const tgt=ne({__name:"basic-date-table",props:Xpt,emits:Jpt,setup(e,{expose:t,emit:n}){const r=e,{WEEKS:o,rows:a,tbodyRef:i,currentCellRef:s,focus:l,isCurrent:u,isWeekActive:c,isSelectedCell:d,handlePickDate:f,handleMouseUp:h,handleMouseDown:g,handleMouseMove:p,handleFocus:m}=Zpt(r,n),{tableLabel:v,tableKls:y,weekLabel:_,getCellClasses:C,getRowKls:S,t:E}=Qpt(r,{isCurrent:u,isWeekActive:c});let k=!1;return Ar(()=>{k=!0}),t({focus:l}),(O,T)=>(I(),j("table",{"aria-label":b(v),class:ee(b(y)),cellspacing:"0",cellpadding:"0",role:"grid",onClick:b(f),onMousemove:b(p),onMousedown:zt(b(g),["prevent"]),onMouseup:b(h)},[w("tbody",{ref_key:"tbodyRef",ref:i},[w("tr",null,[O.showWeekNumber?(I(),j("th",{key:0,scope:"col"},se(b(_)),1)):be("v-if",!0),(I(!0),j(tt,null,wt(b(o),(P,U)=>(I(),j("th",{key:U,"aria-label":b(E)("el.datepicker.weeksFull."+P),scope:"col"},se(b(E)("el.datepicker.weeks."+P)),9,["aria-label"]))),128))]),(I(!0),j(tt,null,wt(b(a),(P,U)=>(I(),j("tr",{key:U,class:ee(b(S)(P[1]))},[(I(!0),j(tt,null,wt(P,(F,H)=>(I(),j("td",{key:`${U}.${H}`,ref_for:!0,ref:R=>!b(k)&&b(d)(F)&&(s.value=R),class:ee(b(C)(F)),"aria-current":F.isCurrent?"date":void 0,"aria-selected":F.isCurrent,tabindex:b(d)(F)?0:-1,onFocus:b(m)},[D(b(Tre),{cell:F},null,8,["cell"])],42,["aria-current","aria-selected","tabindex","onFocus"]))),128))],2))),128))],512)],42,["aria-label","onClick","onMousemove","onMousedown","onMouseup"]))}});var HY=vt(tgt,[["__file","basic-date-table.vue"]]);const ngt=ht({...Ere,selectionMode:Are("month")}),rgt=ne({__name:"basic-month-table",props:ngt,emits:["changerange","pick","select"],setup(e,{expose:t,emit:n}){const r=e,o=nt("month-table"),{t:a,lang:i}=Un(),s=X(),l=X(),u=X(r.date.locale("en").localeData().monthsShort().map(_=>_.toLowerCase())),c=X([[],[],[]]),d=X(),f=X(),h=K(()=>{var _,C;const S=c.value,E=hn().locale(i.value).startOf("month");for(let k=0;k<3;k++){const O=S[k];for(let T=0;T<4;T++){const P=O[T]||(O[T]={row:k,column:T,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1});P.type="normal";const U=k*4+T,F=r.date.startOf("year").month(U),H=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;P.inRange=!!(r.minDate&&F.isSameOrAfter(r.minDate,"month")&&H&&F.isSameOrBefore(H,"month"))||!!(r.minDate&&F.isSameOrBefore(r.minDate,"month")&&H&&F.isSameOrAfter(H,"month")),(_=r.minDate)!=null&&_.isSameOrAfter(H)?(P.start=!!(H&&F.isSame(H,"month")),P.end=r.minDate&&F.isSame(r.minDate,"month")):(P.start=!!(r.minDate&&F.isSame(r.minDate,"month")),P.end=!!(H&&F.isSame(H,"month"))),E.isSame(F)&&(P.type="today"),P.text=U,P.disabled=((C=r.disabledDate)==null?void 0:C.call(r,F.toDate()))||!1}}return S}),g=()=>{var _;(_=l.value)==null||_.focus()},p=_=>{const C={},S=r.date.year(),E=new Date,k=_.text;return C.disabled=r.disabledDate?GM(r.date,S,k,i.value).every(r.disabledDate):!1,C.current=yl(r.parsedValue).findIndex(O=>hn.isDayjs(O)&&O.year()===S&&O.month()===k)>=0,C.today=E.getFullYear()===S&&E.getMonth()===k,_.inRange&&(C["in-range"]=!0,_.start&&(C["start-date"]=!0),_.end&&(C["end-date"]=!0)),C},m=_=>{const C=r.date.year(),S=_.text;return yl(r.date).findIndex(E=>E.year()===C&&E.month()===S)>=0},v=_=>{var C;if(!r.rangeState.selecting)return;let S=_.target;if(S.tagName==="SPAN"&&(S=(C=S.parentNode)==null?void 0:C.parentNode),S.tagName==="DIV"&&(S=S.parentNode),S.tagName!=="TD")return;const E=S.parentNode.rowIndex,k=S.cellIndex;h.value[E][k].disabled||(E!==d.value||k!==f.value)&&(d.value=E,f.value=k,n("changerange",{selecting:!0,endDate:r.date.startOf("year").month(E*4+k)}))},y=_=>{var C;const S=(C=_.target)==null?void 0:C.closest("td");if((S==null?void 0:S.tagName)!=="TD"||jl(S,"disabled"))return;const E=S.cellIndex,O=S.parentNode.rowIndex*4+E,T=r.date.startOf("year").month(O);if(r.selectionMode==="months"){if(_.type==="keydown"){n("pick",yl(r.parsedValue),!1);return}const P=v8(r.date,r.date.year(),O,i.value,r.disabledDate),U=jl(S,"current")?yl(r.parsedValue).filter(F=>(F==null?void 0:F.year())!==P.year()||(F==null?void 0:F.month())!==P.month()):yl(r.parsedValue).concat([hn(P)]);n("pick",U)}else r.selectionMode==="range"?r.rangeState.selecting?(r.minDate&&T>=r.minDate?n("pick",{minDate:r.minDate,maxDate:T}):n("pick",{minDate:T,maxDate:r.minDate}),n("select",!1)):(n("pick",{minDate:T,maxDate:null}),n("select",!0)):n("pick",O)};return Ze(()=>r.date,async()=>{var _,C;(_=s.value)!=null&&_.contains(document.activeElement)&&(await It(),(C=l.value)==null||C.focus())}),t({focus:g}),(_,C)=>(I(),j("table",{role:"grid","aria-label":b(a)("el.datepicker.monthTablePrompt"),class:ee(b(o).b()),onClick:y,onMousemove:v},[w("tbody",{ref_key:"tbodyRef",ref:s},[(I(!0),j(tt,null,wt(b(h),(S,E)=>(I(),j("tr",{key:E},[(I(!0),j(tt,null,wt(S,(k,O)=>(I(),j("td",{key:O,ref_for:!0,ref:T=>m(k)&&(l.value=T),class:ee(p(k)),"aria-selected":`${m(k)}`,"aria-label":b(a)(`el.datepicker.month${+k.text+1}`),tabindex:m(k)?0:-1,onKeydown:[qn(zt(y,["prevent","stop"]),["space"]),qn(zt(y,["prevent","stop"]),["enter"])]},[D(b(Tre),{cell:{...k,renderText:b(a)("el.datepicker.months."+u.value[k.text])}},null,8,["cell"])],42,["aria-selected","aria-label","tabindex","onKeydown"]))),128))]))),128))],512)],42,["aria-label"]))}});var VD=vt(rgt,[["__file","basic-month-table.vue"]]);const ogt=ht({...Ere,selectionMode:Are("year")}),agt=ne({__name:"basic-year-table",props:ogt,emits:["changerange","pick","select"],setup(e,{expose:t,emit:n}){const r=e,o=(C,S)=>{const E=hn(String(C)).locale(S).startOf("year"),O=E.endOf("year").dayOfYear();return sm(O).map(T=>E.add(T,"day").toDate())},a=nt("year-table"),{t:i,lang:s}=Un(),l=X(),u=X(),c=K(()=>Math.floor(r.date.year()/10)*10),d=X([[],[],[]]),f=X(),h=X(),g=K(()=>{var C;const S=d.value,E=hn().locale(s.value).startOf("year");for(let k=0;k<3;k++){const O=S[k];for(let T=0;T<4&&!(k*4+T>=10);T++){let P=O[T];P||(P={row:k,column:T,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1}),P.type="normal";const U=k*4+T+c.value,F=hn().year(U),H=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;P.inRange=!!(r.minDate&&F.isSameOrAfter(r.minDate,"year")&&H&&F.isSameOrBefore(H,"year"))||!!(r.minDate&&F.isSameOrBefore(r.minDate,"year")&&H&&F.isSameOrAfter(H,"year")),(C=r.minDate)!=null&&C.isSameOrAfter(H)?(P.start=!!(H&&F.isSame(H,"year")),P.end=!!(r.minDate&&F.isSame(r.minDate,"year"))):(P.start=!!(r.minDate&&F.isSame(r.minDate,"year")),P.end=!!(H&&F.isSame(H,"year"))),E.isSame(F)&&(P.type="today"),P.text=U;const z=F.toDate();P.disabled=r.disabledDate&&r.disabledDate(z)||!1,O[T]=P}}return S}),p=()=>{var C;(C=u.value)==null||C.focus()},m=C=>{const S={},E=hn().locale(s.value),k=C.text;return S.disabled=r.disabledDate?o(k,s.value).every(r.disabledDate):!1,S.today=E.year()===k,S.current=yl(r.parsedValue).findIndex(O=>O.year()===k)>=0,C.inRange&&(S["in-range"]=!0,C.start&&(S["start-date"]=!0),C.end&&(S["end-date"]=!0)),S},v=C=>{const S=C.text;return yl(r.date).findIndex(E=>E.year()===S)>=0},y=C=>{var S;const E=(S=C.target)==null?void 0:S.closest("td");if(!E||!E.textContent||jl(E,"disabled"))return;const k=E.cellIndex,T=E.parentNode.rowIndex*4+k+c.value,P=hn().year(T);if(r.selectionMode==="range")r.rangeState.selecting?(r.minDate&&P>=r.minDate?n("pick",{minDate:r.minDate,maxDate:P}):n("pick",{minDate:P,maxDate:r.minDate}),n("select",!1)):(n("pick",{minDate:P,maxDate:null}),n("select",!0));else if(r.selectionMode==="years"){if(C.type==="keydown"){n("pick",yl(r.parsedValue),!1);return}const U=YM(P.startOf("year"),s.value,r.disabledDate),F=jl(E,"current")?yl(r.parsedValue).filter(H=>(H==null?void 0:H.year())!==T):yl(r.parsedValue).concat([U]);n("pick",F)}else n("pick",T)},_=C=>{var S;if(!r.rangeState.selecting)return;const E=(S=C.target)==null?void 0:S.closest("td");if(!E)return;const k=E.parentNode.rowIndex,O=E.cellIndex;g.value[k][O].disabled||(k!==f.value||O!==h.value)&&(f.value=k,h.value=O,n("changerange",{selecting:!0,endDate:hn().year(c.value).add(k*4+O,"year")}))};return Ze(()=>r.date,async()=>{var C,S;(C=l.value)!=null&&C.contains(document.activeElement)&&(await It(),(S=u.value)==null||S.focus())}),t({focus:p}),(C,S)=>(I(),j("table",{role:"grid","aria-label":b(i)("el.datepicker.yearTablePrompt"),class:ee(b(a).b()),onClick:y,onMousemove:_},[w("tbody",{ref_key:"tbodyRef",ref:l},[(I(!0),j(tt,null,wt(b(g),(E,k)=>(I(),j("tr",{key:k},[(I(!0),j(tt,null,wt(E,(O,T)=>(I(),j("td",{key:`${k}_${T}`,ref_for:!0,ref:P=>v(O)&&(u.value=P),class:ee(["available",m(O)]),"aria-selected":v(O),"aria-label":String(O.text),tabindex:v(O)?0:-1,onKeydown:[qn(zt(y,["prevent","stop"]),["space"]),qn(zt(y,["prevent","stop"]),["enter"])]},[D(b(Tre),{cell:O},null,8,["cell"])],42,["aria-selected","aria-label","tabindex","onKeydown"]))),128))]))),128))],512)],42,["aria-label"]))}});var zD=vt(agt,[["__file","basic-year-table.vue"]]);const igt=ne({__name:"panel-date-pick",props:Gpt,emits:["pick","set-picker-option","panel-change"],setup(e,{emit:t}){const n=e,r=(Se,We,Te)=>!0,o=nt("picker-panel"),a=nt("date-picker"),i=Ug(),s=La(),{t:l,lang:u}=Un(),c=kt(qg),d=kt(_T),f=kt(NL),{shortcuts:h,disabledDate:g,cellClassName:p,defaultTime:m}=c.props,v=tr(c.props,"defaultValue"),y=X(),_=X(hn().locale(u.value)),C=X(!1);let S=!1;const E=K(()=>hn(m).locale(u.value)),k=K(()=>_.value.month()),O=K(()=>_.value.year()),T=X([]),P=X(null),U=X(null),F=Se=>T.value.length>0?r(Se,T.value,n.format||"HH:mm:ss"):!0,H=Se=>m&&!he.value&&!C.value&&!S?E.value.year(Se.year()).month(Se.month()).date(Se.date()):de.value?Se.millisecond(0):Se.startOf("day"),R=(Se,...We)=>{if(!Se)t("pick",Se,...We);else if(ct(Se)){const Te=Se.map(H);t("pick",Te,...We)}else t("pick",H(Se),...We);P.value=null,U.value=null,C.value=!1,S=!1},z=async(Se,We)=>{if($.value==="date"){Se=Se;let Te=n.parsedValue?n.parsedValue.year(Se.year()).month(Se.month()).date(Se.date()):Se;F(Te)||(Te=T.value[0][0].year(Se.year()).month(Se.month()).date(Se.date())),_.value=Te,R(Te,de.value||We),n.type==="datetime"&&(await It(),Ft())}else $.value==="week"?R(Se.date):$.value==="dates"&&R(Se,!0)},M=Se=>{const We=Se?"add":"subtract";_.value=_.value[We](1,"month"),Ue("month")},N=Se=>{const We=_.value,Te=Se?"add":"subtract";_.value=L.value==="year"?We[Te](10,"year"):We[Te](1,"year"),Ue("year")},L=X("date"),V=K(()=>{const Se=l("el.datepicker.year");if(L.value==="year"){const We=Math.floor(O.value/10)*10;return Se?`${We} ${Se} - ${We+9} ${Se}`:`${We} - ${We+9}`}return`${O.value} ${Se}`}),Y=Se=>{const We=Rt(Se.value)?Se.value():Se.value;if(We){S=!0,R(hn(We).locale(u.value));return}Se.onClick&&Se.onClick({attrs:i,slots:s,emit:t})},$=K(()=>{const{type:Se}=n;return["week","month","months","year","years","dates"].includes(Se)?Se:"date"}),B=K(()=>$.value==="dates"||$.value==="months"||$.value==="years"),W=K(()=>$.value==="date"?L.value:$.value),J=K(()=>!!h.length),oe=async(Se,We)=>{$.value==="month"?(_.value=v8(_.value,_.value.year(),Se,u.value,g),R(_.value,!1)):$.value==="months"?R(Se,We??!0):(_.value=v8(_.value,_.value.year(),Se,u.value,g),L.value="date",["month","year","date","week"].includes($.value)&&(R(_.value,!0),await It(),Ft())),Ue("month")},ie=async(Se,We)=>{if($.value==="year"){const Te=_.value.startOf("year").year(Se);_.value=YM(Te,u.value,g),R(_.value,!1)}else if($.value==="years")R(Se,We??!0);else{const Te=_.value.year(Se);_.value=YM(Te,u.value,g),L.value="month",["month","year","date","week"].includes($.value)&&(R(_.value,!0),await It(),Ft())}Ue("year")},Z=async Se=>{L.value=Se,await It(),Ft()},de=K(()=>n.type==="datetime"||n.type==="datetimerange"),we=K(()=>{const Se=de.value||$.value==="dates",We=$.value==="years",Te=$.value==="months",Ge=L.value==="date",Ot=L.value==="year",Zt=L.value==="month";return Se&&Ge||We&&Ot||Te&&Zt}),Be=K(()=>g?n.parsedValue?ct(n.parsedValue)?g(n.parsedValue[0].toDate()):g(n.parsedValue.toDate()):!0:!1),ke=()=>{if(B.value)R(n.parsedValue);else{let Se=n.parsedValue;if(!Se){const We=hn(m).locale(u.value),Te=bt();Se=We.year(Te.year()).month(Te.month()).date(Te.date())}_.value=Se,R(Se)}},ae=K(()=>g?g(hn().locale(u.value).toDate()):!1),le=()=>{const We=hn().locale(u.value).toDate();C.value=!0,(!g||!g(We))&&F(We)&&(_.value=hn().locale(u.value),R(_.value))},q=K(()=>n.timeFormat||cSe(n.format)),pe=K(()=>n.dateFormat||uSe(n.format)),he=K(()=>{if(U.value)return U.value;if(!(!n.parsedValue&&!v.value))return(n.parsedValue||_.value).format(q.value)}),re=K(()=>{if(P.value)return P.value;if(!(!n.parsedValue&&!v.value))return(n.parsedValue||_.value).format(pe.value)}),ue=X(!1),_e=()=>{ue.value=!0},Pe=()=>{ue.value=!1},Ae=Se=>({hour:Se.hour(),minute:Se.minute(),second:Se.second(),year:Se.year(),month:Se.month(),date:Se.date()}),Ee=(Se,We,Te)=>{const{hour:Ge,minute:Ot,second:Zt}=Ae(Se),Wt=n.parsedValue?n.parsedValue.hour(Ge).minute(Ot).second(Zt):Se;_.value=Wt,R(_.value,!0),Te||(ue.value=We)},ye=Se=>{const We=hn(Se,q.value).locale(u.value);if(We.isValid()&&F(We)){const{year:Te,month:Ge,date:Ot}=Ae(_.value);_.value=We.year(Te).month(Ge).date(Ot),U.value=null,ue.value=!1,R(_.value,!0)}},ve=Se=>{const We=m8(Se,pe.value,u.value,d);if(We.isValid()){if(g&&g(We.toDate()))return;const{hour:Te,minute:Ge,second:Ot}=Ae(_.value);_.value=We.hour(Te).minute(Ge).second(Ot),P.value=null,R(_.value,!0)}},Ce=Se=>hn.isDayjs(Se)&&Se.isValid()&&(g?!g(Se.toDate()):!0),ze=Se=>ct(Se)?Se.map(We=>We.format(n.format)):Se.format(n.format),at=Se=>m8(Se,n.format,u.value,d),bt=()=>{const Se=hn(v.value).locale(u.value);if(!v.value){const We=E.value;return hn().hour(We.hour()).minute(We.minute()).second(We.second()).locale(u.value)}return Se},Ft=()=>{var Se;["week","month","year","date"].includes($.value)&&((Se=y.value)==null||Se.focus())},Dt=()=>{Ft(),$.value==="week"&&Fe(St.down)},He=Se=>{const{code:We}=Se;[St.up,St.down,St.left,St.right,St.home,St.end,St.pageUp,St.pageDown].includes(We)&&(Fe(We),Se.stopPropagation(),Se.preventDefault()),[St.enter,St.space,St.numpadEnter].includes(We)&&P.value===null&&U.value===null&&(Se.preventDefault(),R(_.value,!1))},Fe=Se=>{var We;const{up:Te,down:Ge,left:Ot,right:Zt,home:Wt,end:dt,pageUp:Le,pageDown:Mt}=St,je={year:{[Te]:-4,[Ge]:4,[Ot]:-1,[Zt]:1,offset:(Je,it)=>Je.setFullYear(Je.getFullYear()+it)},month:{[Te]:-4,[Ge]:4,[Ot]:-1,[Zt]:1,offset:(Je,it)=>Je.setMonth(Je.getMonth()+it)},week:{[Te]:-1,[Ge]:1,[Ot]:-1,[Zt]:1,offset:(Je,it)=>Je.setDate(Je.getDate()+it*7)},date:{[Te]:-7,[Ge]:7,[Ot]:-1,[Zt]:1,[Wt]:Je=>-Je.getDay(),[dt]:Je=>-Je.getDay()+6,[Le]:Je=>-new Date(Je.getFullYear(),Je.getMonth(),0).getDate(),[Mt]:Je=>new Date(Je.getFullYear(),Je.getMonth()+1,0).getDate(),offset:(Je,it)=>Je.setDate(Je.getDate()+it)}},Ye=_.value.toDate();for(;Math.abs(_.value.diff(Ye,"year",!0))<1;){const Je=je[W.value];if(!Je)return;if(Je.offset(Ye,Rt(Je[Se])?Je[Se](Ye):(We=Je[Se])!=null?We:0),g&&g(Ye))break;const it=hn(Ye).locale(u.value);_.value=it,t("pick",it,!0);break}},Ue=Se=>{t("panel-change",_.value.toDate(),Se,L.value)};return Ze(()=>$.value,Se=>{if(["month","year"].includes(Se)){L.value=Se;return}else if(Se==="years"){L.value="year";return}else if(Se==="months"){L.value="month";return}L.value="date"},{immediate:!0}),Ze(()=>L.value,()=>{f==null||f.updatePopper()}),Ze(()=>v.value,Se=>{Se&&(_.value=bt())},{immediate:!0}),Ze(()=>n.parsedValue,Se=>{if(Se){if(B.value||ct(Se))return;_.value=Se}else _.value=bt()},{immediate:!0}),t("set-picker-option",["isValidValue",Ce]),t("set-picker-option",["formatToString",ze]),t("set-picker-option",["parseUserInput",at]),t("set-picker-option",["handleFocusPicker",Dt]),(Se,We)=>(I(),j("div",{class:ee([b(o).b(),b(a).b(),{"has-sidebar":Se.$slots.sidebar||b(J),"has-time":b(de)}])},[w("div",{class:ee(b(o).e("body-wrapper"))},[Ne(Se.$slots,"sidebar",{class:ee(b(o).e("sidebar"))}),b(J)?(I(),j("div",{key:0,class:ee(b(o).e("sidebar"))},[(I(!0),j(tt,null,wt(b(h),(Te,Ge)=>(I(),j("button",{key:Ge,type:"button",class:ee(b(o).e("shortcut")),onClick:Ot=>Y(Te)},se(Te.text),11,["onClick"]))),128))],2)):be("v-if",!0),w("div",{class:ee(b(o).e("body"))},[b(de)?(I(),j("div",{key:0,class:ee(b(a).e("time-header"))},[w("span",{class:ee(b(a).e("editor-wrap"))},[D(b(fo),{placeholder:b(l)("el.datepicker.selectDate"),"model-value":b(re),size:"small","validate-event":!1,onInput:Te=>P.value=Te,onChange:ve},null,8,["placeholder","model-value","onInput"])],2),rn((I(),j("span",{class:ee(b(a).e("editor-wrap"))},[D(b(fo),{placeholder:b(l)("el.datepicker.selectTime"),"model-value":b(he),size:"small","validate-event":!1,onFocus:_e,onInput:Te=>U.value=Te,onChange:ye},null,8,["placeholder","model-value","onInput"]),D(b(KM),{visible:ue.value,format:b(q),"parsed-value":_.value,onPick:Ee},null,8,["visible","format","parsed-value"])],2)),[[b(Fg),Pe]])],2)):be("v-if",!0),rn(w("div",{class:ee([b(a).e("header"),(L.value==="year"||L.value==="month")&&b(a).e("header--bordered")])},[w("span",{class:ee(b(a).e("prev-btn"))},[w("button",{type:"button","aria-label":b(l)("el.datepicker.prevYear"),class:ee(["d-arrow-left",b(o).e("icon-btn")]),onClick:Te=>N(!1)},[Ne(Se.$slots,"prev-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(kg))]),_:1})])],10,["aria-label","onClick"]),rn(w("button",{type:"button","aria-label":b(l)("el.datepicker.prevMonth"),class:ee([b(o).e("icon-btn"),"arrow-left"]),onClick:Te=>M(!1)},[Ne(Se.$slots,"prev-month",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(uf))]),_:1})])],10,["aria-label","onClick"]),[[Pn,L.value==="date"]])],2),w("span",{role:"button",class:ee(b(a).e("header-label")),"aria-live":"polite",tabindex:"0",onKeydown:qn(Te=>Z("year"),["enter"]),onClick:Te=>Z("year")},se(b(V)),43,["onKeydown","onClick"]),rn(w("span",{role:"button","aria-live":"polite",tabindex:"0",class:ee([b(a).e("header-label"),{active:L.value==="month"}]),onKeydown:qn(Te=>Z("month"),["enter"]),onClick:Te=>Z("month")},se(b(l)(`el.datepicker.month${b(k)+1}`)),43,["onKeydown","onClick"]),[[Pn,L.value==="date"]]),w("span",{class:ee(b(a).e("next-btn"))},[rn(w("button",{type:"button","aria-label":b(l)("el.datepicker.nextMonth"),class:ee([b(o).e("icon-btn"),"arrow-right"]),onClick:Te=>M(!0)},[Ne(Se.$slots,"next-month",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(_i))]),_:1})])],10,["aria-label","onClick"]),[[Pn,L.value==="date"]]),w("button",{type:"button","aria-label":b(l)("el.datepicker.nextYear"),class:ee([b(o).e("icon-btn"),"d-arrow-right"]),onClick:Te=>N(!0)},[Ne(Se.$slots,"next-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(Ag))]),_:1})])],10,["aria-label","onClick"])],2)],2),[[Pn,L.value!=="time"]]),w("div",{class:ee(b(o).e("content")),onKeydown:He},[L.value==="date"?(I(),Oe(HY,{key:0,ref_key:"currentViewRef",ref:y,"selection-mode":b($),date:_.value,"parsed-value":Se.parsedValue,"disabled-date":b(g),"cell-class-name":b(p),onPick:z},null,8,["selection-mode","date","parsed-value","disabled-date","cell-class-name"])):be("v-if",!0),L.value==="year"?(I(),Oe(zD,{key:1,ref_key:"currentViewRef",ref:y,"selection-mode":b($),date:_.value,"disabled-date":b(g),"parsed-value":Se.parsedValue,onPick:ie},null,8,["selection-mode","date","disabled-date","parsed-value"])):be("v-if",!0),L.value==="month"?(I(),Oe(VD,{key:2,ref_key:"currentViewRef",ref:y,"selection-mode":b($),date:_.value,"parsed-value":Se.parsedValue,"disabled-date":b(g),onPick:oe},null,8,["selection-mode","date","parsed-value","disabled-date"])):be("v-if",!0)],34)],2)],2),rn(w("div",{class:ee(b(o).e("footer"))},[rn(D(b(Br),{text:"",size:"small",class:ee(b(o).e("link-btn")),disabled:b(ae),onClick:le},{default:A(()=>[ce(se(b(l)("el.datepicker.now")),1)]),_:1},8,["class","disabled"]),[[Pn,!b(B)&&Se.showNow]]),D(b(Br),{plain:"",size:"small",class:ee(b(o).e("link-btn")),disabled:b(Be),onClick:ke},{default:A(()=>[ce(se(b(l)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled"])],2),[[Pn,b(we)]])],2))}});var sgt=vt(igt,[["__file","panel-date-pick.vue"]]);const lgt=ht({...JSe,...kre}),ugt=e=>{const{emit:t}=bn(),n=Ug(),r=La();return a=>{const i=Rt(a.value)?a.value():a.value;if(i){t("pick",[hn(i[0]).locale(e.value),hn(i[1]).locale(e.value)]);return}a.onClick&&a.onClick({attrs:n,slots:r,emit:t})}},Ore=(e,{defaultValue:t,defaultTime:n,leftDate:r,rightDate:o,step:a,unit:i,onParsedValueChanged:s})=>{const{emit:l}=bn(),{pickerNs:u}=kt(Dre),c=nt("date-range-picker"),{t:d,lang:f}=Un(),h=ugt(f),g=X(),p=X(),m=X({endDate:null,selecting:!1}),v=E=>{m.value=E},y=(E=!1)=>{const k=b(g),O=b(p);UD([k,O])&&l("pick",[k,O],E)},_=E=>{m.value.selecting=E,E||(m.value.endDate=null)},C=E=>{if(ct(E)&&E.length===2){const[k,O]=E;g.value=k,r.value=k,p.value=O,s(b(g),b(p))}else S()},S=()=>{let[E,k]=WL(b(t),{lang:b(f),step:a,unit:i,unlinkPanels:e.unlinkPanels});const O=P=>P.diff(P.startOf("d"),"ms"),T=b(n);if(T){let P=0,U=0;if(ct(T)){const[F,H]=T.map(hn);P=O(F),U=O(H)}else{const F=O(hn(T));P=F,U=F}E=E.startOf("d").add(P,"ms"),k=k.startOf("d").add(U,"ms")}g.value=void 0,p.value=void 0,r.value=E,o.value=k};return Ze(t,E=>{E&&S()},{immediate:!0}),Ze(()=>e.parsedValue,C,{immediate:!0}),{minDate:g,maxDate:p,rangeState:m,lang:f,ppNs:u,drpNs:c,handleChangeRange:v,handleRangeConfirm:y,handleShortcutClick:h,onSelect:_,onReset:C,t:d}},cgt=(e,t,n,r)=>{const o=X("date"),a=X(),i=X("date"),s=X(),l=kt(qg),{disabledDate:u}=l.props,{t:c,lang:d}=Un(),f=K(()=>n.value.year()),h=K(()=>n.value.month()),g=K(()=>r.value.year()),p=K(()=>r.value.month());function m(E,k){const O=c("el.datepicker.year");if(E.value==="year"){const T=Math.floor(k.value/10)*10;return O?`${T} ${O} - ${T+9} ${O}`:`${T} - ${T+9}`}return`${k.value} ${O}`}function v(E){E==null||E.focus()}async function y(E,k){const O=E==="left"?o:i,T=E==="left"?a:s;O.value=k,await It(),v(T.value)}async function _(E,k,O){const T=k==="left",P=T?n:r,U=T?r:n,F=T?o:i,H=T?a:s;if(E==="year"){const R=P.value.year(O);P.value=YM(R,d.value,u)}E==="month"&&(P.value=v8(P.value,P.value.year(),O,d.value,u)),e.unlinkPanels||(U.value=k==="left"?P.value.add(1,"month"):P.value.subtract(1,"month")),F.value=E==="year"?"month":"date",await It(),v(H.value),C(E)}function C(E){t("panel-change",[n.value.toDate(),r.value.toDate()],E)}function S(E,k,O){const T=O?"add":"subtract";return E==="year"?k[T](10,"year"):k[T](1,"year")}return{leftCurrentView:o,rightCurrentView:i,leftCurrentViewRef:a,rightCurrentViewRef:s,leftYear:f,rightYear:g,leftMonth:h,rightMonth:p,leftYearLabel:K(()=>m(o,f)),rightYearLabel:K(()=>m(i,g)),showLeftPicker:E=>y("left",E),showRightPicker:E=>y("right",E),handleLeftYearPick:E=>_("year","left",E),handleRightYearPick:E=>_("year","right",E),handleLeftMonthPick:E=>_("month","left",E),handleRightMonthPick:E=>_("month","right",E),handlePanelChange:C,adjustDateByView:S}},eO="month",dgt=ne({__name:"panel-date-range",props:lgt,emits:["pick","set-picker-option","calendar-change","panel-change"],setup(e,{emit:t}){const n=e,r=kt(qg),o=kt(_T),{disabledDate:a,cellClassName:i,defaultTime:s,clearable:l}=r.props,u=tr(r.props,"format"),c=tr(r.props,"shortcuts"),d=tr(r.props,"defaultValue"),{lang:f}=Un(),h=X(hn().locale(f.value)),g=X(hn().locale(f.value).add(1,eO)),{minDate:p,maxDate:m,rangeState:v,ppNs:y,drpNs:_,handleChangeRange:C,handleRangeConfirm:S,handleShortcutClick:E,onSelect:k,onReset:O,t:T}=Ore(n,{defaultValue:d,defaultTime:s,leftDate:h,rightDate:g,unit:eO,onParsedValueChanged:Ye});Ze(()=>n.visible,Je=>{!Je&&v.value.selecting&&(O(n.parsedValue),k(!1))});const P=X({min:null,max:null}),U=X({min:null,max:null}),{leftCurrentView:F,rightCurrentView:H,leftCurrentViewRef:R,rightCurrentViewRef:z,leftYear:M,rightYear:N,leftMonth:L,rightMonth:V,leftYearLabel:Y,rightYearLabel:$,showLeftPicker:B,showRightPicker:W,handleLeftYearPick:J,handleRightYearPick:oe,handleLeftMonthPick:ie,handleRightMonthPick:Z,handlePanelChange:de,adjustDateByView:we}=cgt(n,t,h,g),Be=K(()=>!!c.value.length),ke=K(()=>P.value.min!==null?P.value.min:p.value?p.value.format(he.value):""),ae=K(()=>P.value.max!==null?P.value.max:m.value||p.value?(m.value||p.value).format(he.value):""),le=K(()=>U.value.min!==null?U.value.min:p.value?p.value.format(pe.value):""),q=K(()=>U.value.max!==null?U.value.max:m.value||p.value?(m.value||p.value).format(pe.value):""),pe=K(()=>n.timeFormat||cSe(u.value)),he=K(()=>n.dateFormat||uSe(u.value)),re=Je=>UD(Je)&&(a?!a(Je[0].toDate())&&!a(Je[1].toDate()):!0),ue=()=>{h.value=we(F.value,h.value,!1),n.unlinkPanels||(g.value=h.value.add(1,"month")),de("year")},_e=()=>{h.value=h.value.subtract(1,"month"),n.unlinkPanels||(g.value=h.value.add(1,"month")),de("month")},Pe=()=>{n.unlinkPanels?g.value=we(H.value,g.value,!0):(h.value=we(H.value,h.value,!0),g.value=h.value.add(1,"month")),de("year")},Ae=()=>{n.unlinkPanels?g.value=g.value.add(1,"month"):(h.value=h.value.add(1,"month"),g.value=h.value.add(1,"month")),de("month")},Ee=()=>{h.value=we(F.value,h.value,!0),de("year")},ye=()=>{h.value=h.value.add(1,"month"),de("month")},ve=()=>{g.value=we(H.value,g.value,!1),de("year")},Ce=()=>{g.value=g.value.subtract(1,"month"),de("month")},ze=K(()=>{const Je=(L.value+1)%12,it=L.value+1>=12?1:0;return n.unlinkPanels&&new Date(M.value+it,Je)n.unlinkPanels&&N.value*12+V.value-(M.value*12+L.value+1)>=12),bt=K(()=>!(p.value&&m.value&&!v.value.selecting&&UD([p.value,m.value]))),Ft=K(()=>n.type==="datetime"||n.type==="datetimerange"),Dt=(Je,it)=>{if(Je)return s?hn(s[it]||s).locale(f.value).year(Je.year()).month(Je.month()).date(Je.date()):Je},He=(Je,it=!0)=>{const mt=Je.minDate,_t=Je.maxDate,Qt=Dt(mt,0),Vn=Dt(_t,1);m.value===Vn&&p.value===Qt||(t("calendar-change",[mt.toDate(),_t&&_t.toDate()]),m.value=Vn,p.value=Qt,!(!it||Ft.value)&&S())},Fe=X(!1),Ue=X(!1),Se=()=>{Fe.value=!1},We=()=>{Ue.value=!1},Te=(Je,it)=>{P.value[it]=Je;const mt=hn(Je,he.value).locale(f.value);if(mt.isValid()){if(a&&a(mt.toDate()))return;it==="min"?(h.value=mt,p.value=(p.value||h.value).year(mt.year()).month(mt.month()).date(mt.date()),!n.unlinkPanels&&(!m.value||m.value.isBefore(p.value))&&(g.value=mt.add(1,"month"),m.value=p.value.add(1,"month"))):(g.value=mt,m.value=(m.value||g.value).year(mt.year()).month(mt.month()).date(mt.date()),!n.unlinkPanels&&(!p.value||p.value.isAfter(m.value))&&(h.value=mt.subtract(1,"month"),p.value=m.value.subtract(1,"month")))}},Ge=(Je,it)=>{P.value[it]=null},Ot=(Je,it)=>{U.value[it]=Je;const mt=hn(Je,pe.value).locale(f.value);mt.isValid()&&(it==="min"?(Fe.value=!0,p.value=(p.value||h.value).hour(mt.hour()).minute(mt.minute()).second(mt.second())):(Ue.value=!0,m.value=(m.value||g.value).hour(mt.hour()).minute(mt.minute()).second(mt.second()),g.value=m.value))},Zt=(Je,it)=>{U.value[it]=null,it==="min"?(h.value=p.value,Fe.value=!1,(!m.value||m.value.isBefore(p.value))&&(m.value=p.value)):(g.value=m.value,Ue.value=!1,m.value&&m.value.isBefore(p.value)&&(p.value=m.value))},Wt=(Je,it,mt)=>{U.value.min||(Je&&(h.value=Je,p.value=(p.value||h.value).hour(Je.hour()).minute(Je.minute()).second(Je.second())),mt||(Fe.value=it),(!m.value||m.value.isBefore(p.value))&&(m.value=p.value,g.value=Je))},dt=(Je,it,mt)=>{U.value.max||(Je&&(g.value=Je,m.value=(m.value||g.value).hour(Je.hour()).minute(Je.minute()).second(Je.second())),mt||(Ue.value=it),m.value&&m.value.isBefore(p.value)&&(p.value=m.value))},Le=()=>{h.value=WL(b(d),{lang:b(f),unit:"month",unlinkPanels:n.unlinkPanels})[0],g.value=h.value.add(1,"month"),m.value=void 0,p.value=void 0,t("pick",null)},Mt=Je=>ct(Je)?Je.map(it=>it.format(u.value)):Je.format(u.value),je=Je=>m8(Je,u.value,f.value,o);function Ye(Je,it){if(n.unlinkPanels&&it){const mt=(Je==null?void 0:Je.year())||0,_t=(Je==null?void 0:Je.month())||0,Qt=it.year(),Vn=it.month();g.value=mt===Qt&&_t===Vn?it.add(1,eO):it}else g.value=h.value.add(1,eO),it&&(g.value=g.value.hour(it.hour()).minute(it.minute()).second(it.second()))}return t("set-picker-option",["isValidValue",re]),t("set-picker-option",["parseUserInput",je]),t("set-picker-option",["formatToString",Mt]),t("set-picker-option",["handleClear",Le]),(Je,it)=>(I(),j("div",{class:ee([b(y).b(),b(_).b(),{"has-sidebar":Je.$slots.sidebar||b(Be),"has-time":b(Ft)}])},[w("div",{class:ee(b(y).e("body-wrapper"))},[Ne(Je.$slots,"sidebar",{class:ee(b(y).e("sidebar"))}),b(Be)?(I(),j("div",{key:0,class:ee(b(y).e("sidebar"))},[(I(!0),j(tt,null,wt(b(c),(mt,_t)=>(I(),j("button",{key:_t,type:"button",class:ee(b(y).e("shortcut")),onClick:Qt=>b(E)(mt)},se(mt.text),11,["onClick"]))),128))],2)):be("v-if",!0),w("div",{class:ee(b(y).e("body"))},[b(Ft)?(I(),j("div",{key:0,class:ee(b(_).e("time-header"))},[w("span",{class:ee(b(_).e("editors-wrap"))},[w("span",{class:ee(b(_).e("time-picker-wrap"))},[D(b(fo),{size:"small",disabled:b(v).selecting,placeholder:b(T)("el.datepicker.startDate"),class:ee(b(_).e("editor")),"model-value":b(ke),"validate-event":!1,onInput:mt=>Te(mt,"min"),onChange:mt=>Ge(mt,"min")},null,8,["disabled","placeholder","class","model-value","onInput","onChange"])],2),rn((I(),j("span",{class:ee(b(_).e("time-picker-wrap"))},[D(b(fo),{size:"small",class:ee(b(_).e("editor")),disabled:b(v).selecting,placeholder:b(T)("el.datepicker.startTime"),"model-value":b(le),"validate-event":!1,onFocus:mt=>Fe.value=!0,onInput:mt=>Ot(mt,"min"),onChange:mt=>Zt(mt,"min")},null,8,["class","disabled","placeholder","model-value","onFocus","onInput","onChange"]),D(b(KM),{visible:Fe.value,format:b(pe),"datetime-role":"start","parsed-value":h.value,onPick:Wt},null,8,["visible","format","parsed-value"])],2)),[[b(Fg),Se]])],2),w("span",null,[D(b(Tt),null,{default:A(()=>[D(b(_i))]),_:1})]),w("span",{class:ee([b(_).e("editors-wrap"),"is-right"])},[w("span",{class:ee(b(_).e("time-picker-wrap"))},[D(b(fo),{size:"small",class:ee(b(_).e("editor")),disabled:b(v).selecting,placeholder:b(T)("el.datepicker.endDate"),"model-value":b(ae),readonly:!b(p),"validate-event":!1,onInput:mt=>Te(mt,"max"),onChange:mt=>Ge(mt,"max")},null,8,["class","disabled","placeholder","model-value","readonly","onInput","onChange"])],2),rn((I(),j("span",{class:ee(b(_).e("time-picker-wrap"))},[D(b(fo),{size:"small",class:ee(b(_).e("editor")),disabled:b(v).selecting,placeholder:b(T)("el.datepicker.endTime"),"model-value":b(q),readonly:!b(p),"validate-event":!1,onFocus:mt=>b(p)&&(Ue.value=!0),onInput:mt=>Ot(mt,"max"),onChange:mt=>Zt(mt,"max")},null,8,["class","disabled","placeholder","model-value","readonly","onFocus","onInput","onChange"]),D(b(KM),{"datetime-role":"end",visible:Ue.value,format:b(pe),"parsed-value":g.value,onPick:dt},null,8,["visible","format","parsed-value"])],2)),[[b(Fg),We]])],2)],2)):be("v-if",!0),w("div",{class:ee([[b(y).e("content"),b(_).e("content")],"is-left"])},[w("div",{class:ee(b(_).e("header"))},[w("button",{type:"button",class:ee([b(y).e("icon-btn"),"d-arrow-left"]),"aria-label":b(T)("el.datepicker.prevYear"),onClick:ue},[Ne(Je.$slots,"prev-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(kg))]),_:1})])],10,["aria-label"]),rn(w("button",{type:"button",class:ee([b(y).e("icon-btn"),"arrow-left"]),"aria-label":b(T)("el.datepicker.prevMonth"),onClick:_e},[Ne(Je.$slots,"prev-month",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(uf))]),_:1})])],10,["aria-label"]),[[Pn,b(F)==="date"]]),Je.unlinkPanels?(I(),j("button",{key:0,type:"button",disabled:!b(at),class:ee([[b(y).e("icon-btn"),{"is-disabled":!b(at)}],"d-arrow-right"]),"aria-label":b(T)("el.datepicker.nextYear"),onClick:Ee},[Ne(Je.$slots,"next-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(Ag))]),_:1})])],10,["disabled","aria-label"])):be("v-if",!0),Je.unlinkPanels&&b(F)==="date"?(I(),j("button",{key:1,type:"button",disabled:!b(ze),class:ee([[b(y).e("icon-btn"),{"is-disabled":!b(ze)}],"arrow-right"]),"aria-label":b(T)("el.datepicker.nextMonth"),onClick:ye},[Ne(Je.$slots,"next-month",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(_i))]),_:1})])],10,["disabled","aria-label"])):be("v-if",!0),w("div",null,[w("span",{role:"button",class:ee(b(_).e("header-label")),"aria-live":"polite",tabindex:"0",onKeydown:qn(mt=>b(B)("year"),["enter"]),onClick:mt=>b(B)("year")},se(b(Y)),43,["onKeydown","onClick"]),rn(w("span",{role:"button","aria-live":"polite",tabindex:"0",class:ee([b(_).e("header-label"),{active:b(F)==="month"}]),onKeydown:qn(mt=>b(B)("month"),["enter"]),onClick:mt=>b(B)("month")},se(b(T)(`el.datepicker.month${h.value.month()+1}`)),43,["onKeydown","onClick"]),[[Pn,b(F)==="date"]])])],2),b(F)==="date"?(I(),Oe(HY,{key:0,ref_key:"leftCurrentViewRef",ref:R,"selection-mode":"range",date:h.value,"min-date":b(p),"max-date":b(m),"range-state":b(v),"disabled-date":b(a),"cell-class-name":b(i),onChangerange:b(C),onPick:He,onSelect:b(k)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])):be("v-if",!0),b(F)==="year"?(I(),Oe(zD,{key:1,ref_key:"leftCurrentViewRef",ref:R,"selection-mode":"year",date:h.value,"disabled-date":b(a),"parsed-value":Je.parsedValue,onPick:b(J)},null,8,["date","disabled-date","parsed-value","onPick"])):be("v-if",!0),b(F)==="month"?(I(),Oe(VD,{key:2,ref_key:"leftCurrentViewRef",ref:R,"selection-mode":"month",date:h.value,"parsed-value":Je.parsedValue,"disabled-date":b(a),onPick:b(ie)},null,8,["date","parsed-value","disabled-date","onPick"])):be("v-if",!0)],2),w("div",{class:ee([[b(y).e("content"),b(_).e("content")],"is-right"])},[w("div",{class:ee(b(_).e("header"))},[Je.unlinkPanels?(I(),j("button",{key:0,type:"button",disabled:!b(at),class:ee([[b(y).e("icon-btn"),{"is-disabled":!b(at)}],"d-arrow-left"]),"aria-label":b(T)("el.datepicker.prevYear"),onClick:ve},[Ne(Je.$slots,"prev-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(kg))]),_:1})])],10,["disabled","aria-label"])):be("v-if",!0),Je.unlinkPanels&&b(H)==="date"?(I(),j("button",{key:1,type:"button",disabled:!b(ze),class:ee([[b(y).e("icon-btn"),{"is-disabled":!b(ze)}],"arrow-left"]),"aria-label":b(T)("el.datepicker.prevMonth"),onClick:Ce},[Ne(Je.$slots,"prev-month",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(uf))]),_:1})])],10,["disabled","aria-label"])):be("v-if",!0),w("button",{type:"button","aria-label":b(T)("el.datepicker.nextYear"),class:ee([b(y).e("icon-btn"),"d-arrow-right"]),onClick:Pe},[Ne(Je.$slots,"next-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(Ag))]),_:1})])],10,["aria-label"]),rn(w("button",{type:"button",class:ee([b(y).e("icon-btn"),"arrow-right"]),"aria-label":b(T)("el.datepicker.nextMonth"),onClick:Ae},[Ne(Je.$slots,"next-month",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(_i))]),_:1})])],10,["aria-label"]),[[Pn,b(H)==="date"]]),w("div",null,[w("span",{role:"button",class:ee(b(_).e("header-label")),"aria-live":"polite",tabindex:"0",onKeydown:qn(mt=>b(W)("year"),["enter"]),onClick:mt=>b(W)("year")},se(b($)),43,["onKeydown","onClick"]),rn(w("span",{role:"button","aria-live":"polite",tabindex:"0",class:ee([b(_).e("header-label"),{active:b(H)==="month"}]),onKeydown:qn(mt=>b(W)("month"),["enter"]),onClick:mt=>b(W)("month")},se(b(T)(`el.datepicker.month${g.value.month()+1}`)),43,["onKeydown","onClick"]),[[Pn,b(H)==="date"]])])],2),b(H)==="date"?(I(),Oe(HY,{key:0,ref_key:"rightCurrentViewRef",ref:z,"selection-mode":"range",date:g.value,"min-date":b(p),"max-date":b(m),"range-state":b(v),"disabled-date":b(a),"cell-class-name":b(i),onChangerange:b(C),onPick:He,onSelect:b(k)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])):be("v-if",!0),b(H)==="year"?(I(),Oe(zD,{key:1,ref_key:"rightCurrentViewRef",ref:z,"selection-mode":"year",date:g.value,"disabled-date":b(a),"parsed-value":Je.parsedValue,onPick:b(oe)},null,8,["date","disabled-date","parsed-value","onPick"])):be("v-if",!0),b(H)==="month"?(I(),Oe(VD,{key:2,ref_key:"rightCurrentViewRef",ref:z,"selection-mode":"month",date:g.value,"parsed-value":Je.parsedValue,"disabled-date":b(a),onPick:b(Z)},null,8,["date","parsed-value","disabled-date","onPick"])):be("v-if",!0)],2)],2)],2),b(Ft)?(I(),j("div",{key:0,class:ee(b(y).e("footer"))},[b(l)?(I(),Oe(b(Br),{key:0,text:"",size:"small",class:ee(b(y).e("link-btn")),onClick:Le},{default:A(()=>[ce(se(b(T)("el.datepicker.clear")),1)]),_:1},8,["class"])):be("v-if",!0),D(b(Br),{plain:"",size:"small",class:ee(b(y).e("link-btn")),disabled:b(bt),onClick:mt=>b(S)(!1)},{default:A(()=>[ce(se(b(T)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled","onClick"])],2)):be("v-if",!0)],2))}});var fgt=vt(dgt,[["__file","panel-date-range.vue"]]);const hgt=ht({...kre}),pgt=["pick","set-picker-option","calendar-change"],ggt=({unlinkPanels:e,leftDate:t,rightDate:n})=>{const{t:r}=Un(),o=()=>{t.value=t.value.subtract(1,"year"),e.value||(n.value=n.value.subtract(1,"year"))},a=()=>{e.value||(t.value=t.value.add(1,"year")),n.value=n.value.add(1,"year")},i=()=>{t.value=t.value.add(1,"year")},s=()=>{n.value=n.value.subtract(1,"year")},l=K(()=>`${t.value.year()} ${r("el.datepicker.year")}`),u=K(()=>`${n.value.year()} ${r("el.datepicker.year")}`),c=K(()=>t.value.year()),d=K(()=>n.value.year()===t.value.year()?t.value.year()+1:n.value.year());return{leftPrevYear:o,rightNextYear:a,leftNextYear:i,rightPrevYear:s,leftLabel:l,rightLabel:u,leftYear:c,rightYear:d}},tO="year",vgt=ne({name:"DatePickerMonthRange"}),mgt=ne({...vgt,props:hgt,emits:pgt,setup(e,{emit:t}){const n=e,{lang:r}=Un(),o=kt(qg),a=kt(_T),{shortcuts:i,disabledDate:s}=o.props,l=tr(o.props,"format"),u=tr(o.props,"defaultValue"),c=X(hn().locale(r.value)),d=X(hn().locale(r.value).add(1,tO)),{minDate:f,maxDate:h,rangeState:g,ppNs:p,drpNs:m,handleChangeRange:v,handleRangeConfirm:y,handleShortcutClick:_,onSelect:C,onReset:S}=Ore(n,{defaultValue:u,leftDate:c,rightDate:d,unit:tO,onParsedValueChanged:Y}),E=K(()=>!!i.length),{leftPrevYear:k,rightNextYear:O,leftNextYear:T,rightPrevYear:P,leftLabel:U,rightLabel:F,leftYear:H,rightYear:R}=ggt({unlinkPanels:tr(n,"unlinkPanels"),leftDate:c,rightDate:d}),z=K(()=>n.unlinkPanels&&R.value>H.value+1),M=($,B=!0)=>{const W=$.minDate,J=$.maxDate;h.value===J&&f.value===W||(t("calendar-change",[W.toDate(),J&&J.toDate()]),h.value=J,f.value=W,B&&y())},N=()=>{c.value=WL(b(u),{lang:b(r),unit:"year",unlinkPanels:n.unlinkPanels})[0],d.value=c.value.add(1,"year"),t("pick",null)},L=$=>ct($)?$.map(B=>B.format(l.value)):$.format(l.value),V=$=>m8($,l.value,r.value,a);function Y($,B){if(n.unlinkPanels&&B){const W=($==null?void 0:$.year())||0,J=B.year();d.value=W===J?B.add(1,tO):B}else d.value=c.value.add(1,tO)}return Ze(()=>n.visible,$=>{!$&&g.value.selecting&&(S(n.parsedValue),C(!1))}),t("set-picker-option",["isValidValue",UD]),t("set-picker-option",["formatToString",L]),t("set-picker-option",["parseUserInput",V]),t("set-picker-option",["handleClear",N]),($,B)=>(I(),j("div",{class:ee([b(p).b(),b(m).b(),{"has-sidebar":!!$.$slots.sidebar||b(E)}])},[w("div",{class:ee(b(p).e("body-wrapper"))},[Ne($.$slots,"sidebar",{class:ee(b(p).e("sidebar"))}),b(E)?(I(),j("div",{key:0,class:ee(b(p).e("sidebar"))},[(I(!0),j(tt,null,wt(b(i),(W,J)=>(I(),j("button",{key:J,type:"button",class:ee(b(p).e("shortcut")),onClick:oe=>b(_)(W)},se(W.text),11,["onClick"]))),128))],2)):be("v-if",!0),w("div",{class:ee(b(p).e("body"))},[w("div",{class:ee([[b(p).e("content"),b(m).e("content")],"is-left"])},[w("div",{class:ee(b(m).e("header"))},[w("button",{type:"button",class:ee([b(p).e("icon-btn"),"d-arrow-left"]),onClick:b(k)},[Ne($.$slots,"prev-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(kg))]),_:1})])],10,["onClick"]),$.unlinkPanels?(I(),j("button",{key:0,type:"button",disabled:!b(z),class:ee([[b(p).e("icon-btn"),{[b(p).is("disabled")]:!b(z)}],"d-arrow-right"]),onClick:b(T)},[Ne($.$slots,"next-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(Ag))]),_:1})])],10,["disabled","onClick"])):be("v-if",!0),w("div",null,se(b(U)),1)],2),D(VD,{"selection-mode":"range",date:c.value,"min-date":b(f),"max-date":b(h),"range-state":b(g),"disabled-date":b(s),onChangerange:b(v),onPick:M,onSelect:b(C)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2),w("div",{class:ee([[b(p).e("content"),b(m).e("content")],"is-right"])},[w("div",{class:ee(b(m).e("header"))},[$.unlinkPanels?(I(),j("button",{key:0,type:"button",disabled:!b(z),class:ee([[b(p).e("icon-btn"),{"is-disabled":!b(z)}],"d-arrow-left"]),onClick:b(P)},[Ne($.$slots,"prev-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(kg))]),_:1})])],10,["disabled","onClick"])):be("v-if",!0),w("button",{type:"button",class:ee([b(p).e("icon-btn"),"d-arrow-right"]),onClick:b(O)},[Ne($.$slots,"next-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(Ag))]),_:1})])],10,["onClick"]),w("div",null,se(b(F)),1)],2),D(VD,{"selection-mode":"range",date:d.value,"min-date":b(f),"max-date":b(h),"range-state":b(g),"disabled-date":b(s),onChangerange:b(v),onPick:M,onSelect:b(C)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2)],2)],2)],2))}});var ygt=vt(mgt,[["__file","panel-month-range.vue"]]);const bgt=ht({...kre}),_gt=["pick","set-picker-option","calendar-change"],wgt=({unlinkPanels:e,leftDate:t,rightDate:n})=>{const r=()=>{t.value=t.value.subtract(10,"year"),e.value||(n.value=n.value.subtract(10,"year"))},o=()=>{e.value||(t.value=t.value.add(10,"year")),n.value=n.value.add(10,"year")},a=()=>{t.value=t.value.add(10,"year")},i=()=>{n.value=n.value.subtract(10,"year")},s=K(()=>{const d=Math.floor(t.value.year()/10)*10;return`${d}-${d+9}`}),l=K(()=>{const d=Math.floor(n.value.year()/10)*10;return`${d}-${d+9}`}),u=K(()=>Math.floor(t.value.year()/10)*10+9),c=K(()=>Math.floor(n.value.year()/10)*10);return{leftPrevYear:r,rightNextYear:o,leftNextYear:a,rightPrevYear:i,leftLabel:s,rightLabel:l,leftYear:u,rightYear:c}},J_=10,sx="year",Cgt=ne({name:"DatePickerYearRange"}),xgt=ne({...Cgt,props:bgt,emits:_gt,setup(e,{emit:t}){const n=e,{lang:r}=Un(),o=X(hn().locale(r.value)),a=X(hn().locale(r.value).add(J_,sx)),i=kt(_T),s=kt(qg),{shortcuts:l,disabledDate:u}=s.props,c=tr(s.props,"format"),d=tr(s.props,"defaultValue"),{minDate:f,maxDate:h,rangeState:g,ppNs:p,drpNs:m,handleChangeRange:v,handleRangeConfirm:y,handleShortcutClick:_,onSelect:C,onReset:S}=Ore(n,{defaultValue:d,leftDate:o,rightDate:a,step:J_,unit:sx,onParsedValueChanged:J}),{leftPrevYear:E,rightNextYear:k,leftNextYear:O,rightPrevYear:T,leftLabel:P,rightLabel:U,leftYear:F,rightYear:H}=wgt({unlinkPanels:tr(n,"unlinkPanels"),leftDate:o,rightDate:a}),R=K(()=>!!l.length),z=K(()=>[p.b(),m.b(),{"has-sidebar":!!La().sidebar||R.value}]),M=K(()=>({content:[p.e("content"),m.e("content"),"is-left"],arrowLeftBtn:[p.e("icon-btn"),"d-arrow-left"],arrowRightBtn:[p.e("icon-btn"),{[p.is("disabled")]:!L.value},"d-arrow-right"]})),N=K(()=>({content:[p.e("content"),m.e("content"),"is-right"],arrowLeftBtn:[p.e("icon-btn"),{"is-disabled":!L.value},"d-arrow-left"],arrowRightBtn:[p.e("icon-btn"),"d-arrow-right"]})),L=K(()=>n.unlinkPanels&&H.value>F.value+1),V=(oe,ie=!0)=>{const Z=oe.minDate,de=oe.maxDate;h.value===de&&f.value===Z||(t("calendar-change",[Z.toDate(),de&&de.toDate()]),h.value=de,f.value=Z,ie&&y())},Y=oe=>m8(oe,c.value,r.value,i),$=oe=>ct(oe)?oe.map(ie=>ie.format(c.value)):oe.format(c.value),B=oe=>UD(oe)&&(u?!u(oe[0].toDate())&&!u(oe[1].toDate()):!0),W=()=>{const oe=WL(b(d),{lang:b(r),step:J_,unit:sx,unlinkPanels:n.unlinkPanels});o.value=oe[0],a.value=oe[1],t("pick",null)};function J(oe,ie){if(n.unlinkPanels&&ie){const Z=(oe==null?void 0:oe.year())||0,de=ie.year();a.value=Z+J_>de?ie.add(J_,sx):ie}else a.value=o.value.add(J_,sx)}return Ze(()=>n.visible,oe=>{!oe&&g.value.selecting&&(S(n.parsedValue),C(!1))}),t("set-picker-option",["isValidValue",B]),t("set-picker-option",["parseUserInput",Y]),t("set-picker-option",["formatToString",$]),t("set-picker-option",["handleClear",W]),(oe,ie)=>(I(),j("div",{class:ee(b(z))},[w("div",{class:ee(b(p).e("body-wrapper"))},[Ne(oe.$slots,"sidebar",{class:ee(b(p).e("sidebar"))}),b(R)?(I(),j("div",{key:0,class:ee(b(p).e("sidebar"))},[(I(!0),j(tt,null,wt(b(l),(Z,de)=>(I(),j("button",{key:de,type:"button",class:ee(b(p).e("shortcut")),onClick:we=>b(_)(Z)},se(Z.text),11,["onClick"]))),128))],2)):be("v-if",!0),w("div",{class:ee(b(p).e("body"))},[w("div",{class:ee(b(M).content)},[w("div",{class:ee(b(m).e("header"))},[w("button",{type:"button",class:ee(b(M).arrowLeftBtn),onClick:b(E)},[Ne(oe.$slots,"prev-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(kg))]),_:1})])],10,["onClick"]),oe.unlinkPanels?(I(),j("button",{key:0,type:"button",disabled:!b(L),class:ee(b(M).arrowRightBtn),onClick:b(O)},[Ne(oe.$slots,"next-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(Ag))]),_:1})])],10,["disabled","onClick"])):be("v-if",!0),w("div",null,se(b(P)),1)],2),D(zD,{"selection-mode":"range",date:o.value,"min-date":b(f),"max-date":b(h),"range-state":b(g),"disabled-date":b(u),onChangerange:b(v),onPick:V,onSelect:b(C)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2),w("div",{class:ee(b(N).content)},[w("div",{class:ee(b(m).e("header"))},[oe.unlinkPanels?(I(),j("button",{key:0,type:"button",disabled:!b(L),class:ee(b(N).arrowLeftBtn),onClick:b(T)},[Ne(oe.$slots,"prev-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(kg))]),_:1})])],10,["disabled","onClick"])):be("v-if",!0),w("button",{type:"button",class:ee(b(N).arrowRightBtn),onClick:b(k)},[Ne(oe.$slots,"next-year",{},()=>[D(b(Tt),null,{default:A(()=>[D(b(Ag))]),_:1})])],10,["onClick"]),w("div",null,se(b(U)),1)],2),D(zD,{"selection-mode":"range",date:a.value,"min-date":b(f),"max-date":b(h),"range-state":b(g),"disabled-date":b(u),onChangerange:b(v),onPick:V,onSelect:b(C)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2)],2)],2)],2))}});var Sgt=vt(xgt,[["__file","panel-year-range.vue"]]);const Dgt=function(e){switch(e){case"daterange":case"datetimerange":return fgt;case"monthrange":return ygt;case"yearrange":return Sgt;default:return sgt}};hn.extend(fSe);hn.extend(ypt);hn.extend(Cre);hn.extend(_pt);hn.extend(Cpt);hn.extend(Spt);hn.extend(Ept);hn.extend(Apt);var Egt=ne({name:"ElDatePicker",install:null,props:qpt,emits:[en],setup(e,{expose:t,emit:n,slots:r}){const o=nt("picker-panel"),a=K(()=>!e.format);Fn(_T,a),Fn(xre,Bn(tr(e,"popperOptions"))),Fn(Dre,{slots:r,pickerNs:o});const i=X();t({focus:()=>{var u;(u=i.value)==null||u.focus()},blur:()=>{var u;(u=i.value)==null||u.blur()},handleOpen:()=>{var u;(u=i.value)==null||u.handleOpen()},handleClose:()=>{var u;(u=i.value)==null||u.handleClose()}});const l=u=>{n(en,u)};return()=>{var u;const c=(u=e.format)!=null?u:Tpt[e.type]||W4,d=Dgt(e.type);return D(WSe,Dn(e,{format:c,type:e.type,ref:i,"onUpdate:modelValue":l}),{default:f=>D(d,f,{"prev-month":r["prev-month"],"next-month":r["next-month"],"prev-year":r["prev-year"],"next-year":r["next-year"]}),"range-separator":r["range-separator"]})}}});const qL=dn(Egt),Fre=Symbol("elDescriptions");var lx=ne({name:"ElDescriptionsCell",props:{cell:{type:Object},tag:{type:String,default:"td"},type:{type:String}},setup(){return{descriptions:kt(Fre,{})}},render(){var e;const t=jdt(this.cell),n=(((e=this.cell)==null?void 0:e.dirs)||[]).map(v=>{const{dir:y,arg:_,modifiers:C,value:S}=v;return[y,S,_,C]}),{border:r,direction:o}=this.descriptions,a=o==="vertical",i=()=>{var v,y,_;return((_=(y=(v=this.cell)==null?void 0:v.children)==null?void 0:y.label)==null?void 0:_.call(y))||t.label},s=()=>{var v,y,_;return(_=(y=(v=this.cell)==null?void 0:v.children)==null?void 0:y.default)==null?void 0:_.call(y)},l=t.span,u=t.rowspan,c=t.align?`is-${t.align}`:"",d=t.labelAlign?`is-${t.labelAlign}`:c,f=t.className,h=t.labelClassName,g=this.type==="label"&&(t.labelWidth||this.descriptions.labelWidth)||t.width,p={width:Io(g),minWidth:Io(t.minWidth)},m=nt("descriptions");switch(this.type){case"label":return rn(Vt(this.tag,{style:p,class:[m.e("cell"),m.e("label"),m.is("bordered-label",r),m.is("vertical-label",a),d,h],colSpan:a?l:1,rowspan:a?1:u},i()),n);case"content":return rn(Vt(this.tag,{style:p,class:[m.e("cell"),m.e("content"),m.is("bordered-content",r),m.is("vertical-content",a),c,f],colSpan:a?l:l*2-1,rowspan:a?u*2-1:u},s()),n);default:{const v=i(),y={},_=Io(t.labelWidth||this.descriptions.labelWidth);return _&&(y.width=_,y.display="inline-block"),rn(Vt("td",{style:p,class:[m.e("cell"),c],colSpan:l,rowspan:u},[ni(v)?void 0:Vt("span",{style:y,class:[m.e("label"),h]},v),Vt("span",{class:[m.e("content"),f]},s())]),n)}}}});const kgt=ht({row:{type:$e(Array),default:()=>[]}}),Agt=ne({name:"ElDescriptionsRow"}),Tgt=ne({...Agt,props:kgt,setup(e){const t=kt(Fre,{});return(n,r)=>b(t).direction==="vertical"?(I(),j(tt,{key:0},[w("tr",null,[(I(!0),j(tt,null,wt(n.row,(o,a)=>(I(),Oe(b(lx),{key:`tr1-${a}`,cell:o,tag:"th",type:"label"},null,8,["cell"]))),128))]),w("tr",null,[(I(!0),j(tt,null,wt(n.row,(o,a)=>(I(),Oe(b(lx),{key:`tr2-${a}`,cell:o,tag:"td",type:"content"},null,8,["cell"]))),128))])],64)):(I(),j("tr",{key:1},[(I(!0),j(tt,null,wt(n.row,(o,a)=>(I(),j(tt,{key:`tr3-${a}`},[b(t).border?(I(),j(tt,{key:0},[D(b(lx),{cell:o,tag:"td",type:"label"},null,8,["cell"]),D(b(lx),{cell:o,tag:"td",type:"content"},null,8,["cell"])],64)):(I(),Oe(b(lx),{key:1,cell:o,tag:"td",type:"both"},null,8,["cell"]))],64))),128))]))}});var Ogt=vt(Tgt,[["__file","descriptions-row.vue"]]);const Fgt=ht({border:Boolean,column:{type:Number,default:3},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},size:Aa,title:{type:String,default:""},extra:{type:String,default:""},labelWidth:{type:[String,Number],default:""}}),ZSe="ElDescriptionsItem",Igt=ne({name:"ElDescriptions"}),Mgt=ne({...Igt,props:Fgt,setup(e){const t=e,n=nt("descriptions"),r=ma(),o=La();Fn(Fre,t);const a=K(()=>[n.b(),n.m(r.value)]),i=(l,u,c,d=!1)=>(l.props||(l.props={}),u>c&&(l.props.span=c),d&&(l.props.span=u),l),s=()=>{if(!o.default)return[];const l=mh(o.default()).filter(g=>{var p;return((p=g==null?void 0:g.type)==null?void 0:p.name)===ZSe}),u=[];let c=[],d=t.column,f=0;const h=[];return l.forEach((g,p)=>{var m,v,y;const _=((m=g.props)==null?void 0:m.span)||1,C=((v=g.props)==null?void 0:v.rowspan)||1,S=u.length;if(h[S]||(h[S]=0),C>1)for(let E=1;E0&&(d-=h[S],h[S]=0),pd?d:_),p===l.length-1){const E=t.column-f%t.column;c.push(i(g,E,d,!0)),u.push(c);return}_(I(),j("div",{class:ee(b(a))},[l.title||l.extra||l.$slots.title||l.$slots.extra?(I(),j("div",{key:0,class:ee(b(n).e("header"))},[w("div",{class:ee(b(n).e("title"))},[Ne(l.$slots,"title",{},()=>[ce(se(l.title),1)])],2),w("div",{class:ee(b(n).e("extra"))},[Ne(l.$slots,"extra",{},()=>[ce(se(l.extra),1)])],2)],2)):be("v-if",!0),w("div",{class:ee(b(n).e("body"))},[w("table",{class:ee([b(n).e("table"),b(n).is("bordered",l.border)])},[w("tbody",null,[(I(!0),j(tt,null,wt(s(),(c,d)=>(I(),Oe(Ogt,{key:d,row:c},null,8,["row"]))),128))])],2)],2)],2))}});var Pgt=vt(Mgt,[["__file","description.vue"]]);const Phe=["left","center","right"],$gt=ht({label:{type:String,default:""},span:{type:Number,default:1},rowspan:{type:Number,default:1},width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},labelWidth:{type:[String,Number],default:""},align:{type:String,values:Phe,default:"left"},labelAlign:{type:String,values:Phe},className:{type:String,default:""},labelClassName:{type:String,default:""}}),QSe=ne({name:ZSe,props:$gt}),Bgt=dn(Pgt,{DescriptionsItem:QSe}),Rgt=vo(QSe),Ire=e=>{if(!e)return{onClick:fr,onMousedown:fr,onMouseup:fr};let t=!1,n=!1;return{onClick:i=>{t&&n&&e(i),t=n=!1},onMousedown:i=>{t=i.target===i.currentTarget},onMouseup:i=>{n=i.target===i.currentTarget}}},Ngt=ht({mask:{type:Boolean,default:!0},customMaskEvent:Boolean,overlayClass:{type:$e([String,Array,Object])},zIndex:{type:$e([String,Number])}}),Lgt={click:e=>e instanceof MouseEvent},Ugt="overlay";var Vgt=ne({name:"ElOverlay",props:Ngt,emits:Lgt,setup(e,{slots:t,emit:n}){const r=nt(Ugt),o=l=>{n("click",l)},{onClick:a,onMousedown:i,onMouseup:s}=Ire(e.customMaskEvent?void 0:o);return()=>e.mask?D("div",{class:[r.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:a,onMousedown:i,onMouseup:s},[Ne(t,"default")],Lc.STYLE|Lc.CLASS|Lc.PROPS,["onClick","onMouseup","onMousedown"]):Vt("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[Ne(t,"default")])}});const Mre=Vgt,eDe=Symbol("dialogInjectionKey"),tDe=ht({center:Boolean,alignCenter:Boolean,closeIcon:{type:mr},draggable:Boolean,overflow:Boolean,fullscreen:Boolean,headerClass:String,bodyClass:String,footerClass:String,showClose:{type:Boolean,default:!0},title:{type:String,default:""},ariaLevel:{type:String,default:"2"}}),zgt={close:()=>!0},nDe=(e,t,n,r)=>{const o={offsetX:0,offsetY:0},a=(d,f)=>{if(e.value){const{offsetX:h,offsetY:g}=o,p=e.value.getBoundingClientRect(),m=p.left,v=p.top,y=p.width,_=p.height,C=document.documentElement.clientWidth,S=document.documentElement.clientHeight,E=-m+h,k=-v+g,O=C-m-y+h,T=S-v-(_{const f=d.clientX,h=d.clientY,{offsetX:g,offsetY:p}=o,m=y=>{const _=g+y.clientX-f,C=p+y.clientY-h;a(_,C)},v=()=>{document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",v)};document.addEventListener("mousemove",m),document.addEventListener("mouseup",v)},s=()=>{t.value&&e.value&&(t.value.addEventListener("mousedown",i),window.addEventListener("resize",c))},l=()=>{t.value&&e.value&&(t.value.removeEventListener("mousedown",i),window.removeEventListener("resize",c))},u=()=>{o.offsetX=0,o.offsetY=0,e.value&&(e.value.style.transform="")},c=()=>{const{offsetX:d,offsetY:f}=o;a(d,f)};return Kt(()=>{Wi(()=>{n.value?s():l()})}),Ar(()=>{l()}),{resetPosition:u,updatePosition:c}},KL=(...e)=>t=>{e.forEach(n=>{Rt(n)?n(t):n.value=t})},jgt=ne({name:"ElDialogContent"}),Hgt=ne({...jgt,props:tDe,emits:zgt,setup(e,{expose:t}){const n=e,{t:r}=Un(),{Close:o}=S5e,{dialogRef:a,headerRef:i,bodyId:s,ns:l,style:u}=kt(eDe),{focusTrapRef:c}=kt(ire),d=K(()=>[l.b(),l.is("fullscreen",n.fullscreen),l.is("draggable",n.draggable),l.is("align-center",n.alignCenter),{[l.m("center")]:n.center}]),f=KL(c,a),h=K(()=>n.draggable),g=K(()=>n.overflow),{resetPosition:p,updatePosition:m}=nDe(a,i,h,g);return t({resetPosition:p,updatePosition:m}),(v,y)=>(I(),j("div",{ref:b(f),class:ee(b(d)),style:Nt(b(u)),tabindex:"-1"},[w("header",{ref_key:"headerRef",ref:i,class:ee([b(l).e("header"),v.headerClass,{"show-close":v.showClose}])},[Ne(v.$slots,"header",{},()=>[w("span",{role:"heading","aria-level":v.ariaLevel,class:ee(b(l).e("title"))},se(v.title),11,["aria-level"])]),v.showClose?(I(),j("button",{key:0,"aria-label":b(r)("el.dialog.close"),class:ee(b(l).e("headerbtn")),type:"button",onClick:_=>v.$emit("close")},[D(b(Tt),{class:ee(b(l).e("close"))},{default:A(()=>[(I(),Oe(_n(v.closeIcon||b(o))))]),_:1},8,["class"])],10,["aria-label","onClick"])):be("v-if",!0)],2),w("div",{id:b(s),class:ee([b(l).e("body"),v.bodyClass])},[Ne(v.$slots,"default")],10,["id"]),v.$slots.footer?(I(),j("footer",{key:0,class:ee([b(l).e("footer"),v.footerClass])},[Ne(v.$slots,"footer")],2)):be("v-if",!0)],6))}});var Wgt=vt(Hgt,[["__file","dialog-content.vue"]]);const rDe=ht({...tDe,appendToBody:Boolean,appendTo:{type:LL.to.type,default:"body"},beforeClose:{type:$e(Function)},destroyOnClose:Boolean,closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:Boolean,modalClass:String,headerClass:String,bodyClass:String,footerClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:Boolean,headerAriaLevel:{type:String,default:"2"}}),oDe={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[en]:e=>hr(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},Pre=(e,t={})=>{kr(e)||oa("[useLockscreen]","You need to pass a ref param to this function");const n=t.ns||nt("popup"),r=K(()=>n.bm("parent","hidden"));if(!Nn||jl(document.body,r.value))return;let o=0,a=!1,i="0";const s=()=>{setTimeout(()=>{typeof document>"u"||a&&document&&(document.body.style.width=i,Hs(document.body,r.value))},200)};Ze(e,l=>{if(!l){s();return}a=!jl(document.body,r.value),a&&(i=document.body.style.width,Yc(document.body,r.value)),o=Yxe(n.namespace.value);const u=document.documentElement.clientHeight0&&(u||c==="scroll")&&a&&(document.body.style.width=`calc(100% - ${o}px)`)}),one(()=>s())},aDe=(e,t)=>{var n;const o=bn().emit,{nextZIndex:a}=gC();let i="";const s=Gi(),l=Gi(),u=X(!1),c=X(!1),d=X(!1),f=X((n=e.zIndex)!=null?n:a());let h,g;const p=uT("namespace",MS),m=K(()=>{const z={},M=`--${p.value}-dialog`;return e.fullscreen||(e.top&&(z[`${M}-margin-top`]=e.top),e.width&&(z[`${M}-width`]=Io(e.width))),z}),v=K(()=>e.alignCenter?{display:"flex"}:{});function y(){o("opened")}function _(){o("closed"),o(en,!1),e.destroyOnClose&&(d.value=!1)}function C(){o("close")}function S(){g==null||g(),h==null||h(),e.openDelay&&e.openDelay>0?{stop:h}=jb(()=>T(),e.openDelay):T()}function E(){h==null||h(),g==null||g(),e.closeDelay&&e.closeDelay>0?{stop:g}=jb(()=>P(),e.closeDelay):P()}function k(){function z(M){M||(c.value=!0,u.value=!1)}e.beforeClose?e.beforeClose(z):E()}function O(){e.closeOnClickModal&&k()}function T(){Nn&&(u.value=!0)}function P(){u.value=!1}function U(){o("openAutoFocus")}function F(){o("closeAutoFocus")}function H(z){var M;((M=z.detail)==null?void 0:M.focusReason)==="pointer"&&z.preventDefault()}e.lockScroll&&Pre(u);function R(){e.closeOnPressEscape&&k()}return Ze(()=>e.zIndex,()=>{var z;f.value=(z=e.zIndex)!=null?z:a()}),Ze(()=>e.modelValue,z=>{var M;z?(c.value=!1,S(),d.value=!0,f.value=(M=e.zIndex)!=null?M:a(),It(()=>{o("open"),t.value&&(t.value.parentElement.scrollTop=0,t.value.parentElement.scrollLeft=0,t.value.scrollTop=0)})):u.value&&E()}),Ze(()=>e.fullscreen,z=>{t.value&&(z?(i=t.value.style.transform,t.value.style.transform=""):t.value.style.transform=i)}),Kt(()=>{e.modelValue&&(u.value=!0,d.value=!0,S())}),{afterEnter:y,afterLeave:_,beforeLeave:C,handleClose:k,onModalClick:O,close:E,doClose:P,onOpenAutoFocus:U,onCloseAutoFocus:F,onCloseRequested:R,onFocusoutPrevented:H,titleId:s,bodyId:l,closed:c,style:m,overlayDialogStyle:v,rendered:d,visible:u,zIndex:f}},qgt=ne({name:"ElDialog",inheritAttrs:!1}),Kgt=ne({...qgt,props:rDe,emits:oDe,setup(e,{expose:t}){const n=e,r=La();mg({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},K(()=>!!r.title));const o=nt("dialog"),a=X(),i=X(),s=X(),{visible:l,titleId:u,bodyId:c,style:d,overlayDialogStyle:f,rendered:h,zIndex:g,afterEnter:p,afterLeave:m,beforeLeave:v,handleClose:y,onModalClick:_,onOpenAutoFocus:C,onCloseAutoFocus:S,onCloseRequested:E,onFocusoutPrevented:k}=aDe(n,a);Fn(eDe,{dialogRef:a,headerRef:i,bodyId:c,ns:o,rendered:h,style:d});const O=Ire(_),T=K(()=>n.draggable&&!n.fullscreen);return t({visible:l,dialogContentRef:s,resetPosition:()=>{var U;(U=s.value)==null||U.resetPosition()},handleClose:y}),(U,F)=>(I(),Oe(b(bC),{to:U.appendTo,disabled:U.appendTo!=="body"?!1:!U.appendToBody},{default:A(()=>[D(xi,{name:"dialog-fade",onAfterEnter:b(p),onAfterLeave:b(m),onBeforeLeave:b(v),persisted:""},{default:A(()=>[rn(D(b(Mre),{"custom-mask-event":"",mask:U.modal,"overlay-class":U.modalClass,"z-index":b(g)},{default:A(()=>[w("div",{role:"dialog","aria-modal":"true","aria-label":U.title||void 0,"aria-labelledby":U.title?void 0:b(u),"aria-describedby":b(c),class:ee(`${b(o).namespace.value}-overlay-dialog`),style:Nt(b(f)),onClick:b(O).onClick,onMousedown:b(O).onMousedown,onMouseup:b(O).onMouseup},[D(b(yC),{loop:"",trapped:b(l),"focus-start-el":"container",onFocusAfterTrapped:b(C),onFocusAfterReleased:b(S),onFocusoutPrevented:b(k),onReleaseRequested:b(E)},{default:A(()=>[b(h)?(I(),Oe(Wgt,Dn({key:0,ref_key:"dialogContentRef",ref:s},U.$attrs,{center:U.center,"align-center":U.alignCenter,"close-icon":U.closeIcon,draggable:b(T),overflow:U.overflow,fullscreen:U.fullscreen,"header-class":U.headerClass,"body-class":U.bodyClass,"footer-class":U.footerClass,"show-close":U.showClose,title:U.title,"aria-level":U.headerAriaLevel,onClose:b(y)}),eu({header:A(()=>[U.$slots.title?Ne(U.$slots,"title",{key:1}):Ne(U.$slots,"header",{key:0,close:b(y),titleId:b(u),titleClass:b(o).e("title")})]),default:A(()=>[Ne(U.$slots,"default")]),_:2},[U.$slots.footer?{name:"footer",fn:A(()=>[Ne(U.$slots,"footer")])}:void 0]),1040,["center","align-center","close-icon","draggable","overflow","fullscreen","header-class","body-class","footer-class","show-close","title","aria-level","onClose"])):be("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,["aria-label","aria-labelledby","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["mask","overlay-class","z-index"]),[[Pn,b(l)]])]),_:3},8,["onAfterEnter","onAfterLeave","onBeforeLeave"])]),_:3},8,["to","disabled"]))}});var Ggt=vt(Kgt,[["__file","dialog.vue"]]);const Js=dn(Ggt),Ygt=ht({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:$e(String),default:"solid"}}),Xgt=ne({name:"ElDivider"}),Jgt=ne({...Xgt,props:Ygt,setup(e){const t=e,n=nt("divider"),r=K(()=>n.cssVar({"border-style":t.borderStyle}));return(o,a)=>(I(),j("div",{class:ee([b(n).b(),b(n).m(o.direction)]),style:Nt(b(r)),role:"separator"},[o.$slots.default&&o.direction!=="vertical"?(I(),j("div",{key:0,class:ee([b(n).e("text"),b(n).is(o.contentPosition)])},[Ne(o.$slots,"default")],2)):be("v-if",!0)],6))}});var Zgt=vt(Jgt,[["__file","divider.vue"]]);const $re=dn(Zgt),Qgt=ht({...rDe,direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0},headerAriaLevel:{type:String,default:"2"}}),e0t=oDe,t0t=ne({name:"ElDrawer",inheritAttrs:!1}),n0t=ne({...t0t,props:Qgt,emits:e0t,setup(e,{expose:t}){const n=e,r=La();mg({scope:"el-drawer",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/drawer.html#slots"},K(()=>!!r.title));const o=X(),a=X(),i=nt("drawer"),{t:s}=Un(),{afterEnter:l,afterLeave:u,beforeLeave:c,visible:d,rendered:f,titleId:h,bodyId:g,zIndex:p,onModalClick:m,onOpenAutoFocus:v,onCloseAutoFocus:y,onFocusoutPrevented:_,onCloseRequested:C,handleClose:S}=aDe(n,o),E=K(()=>n.direction==="rtl"||n.direction==="ltr"),k=K(()=>Io(n.size));return t({handleClose:S,afterEnter:l,afterLeave:u}),(O,T)=>(I(),Oe(b(bC),{to:O.appendTo,disabled:O.appendTo!=="body"?!1:!O.appendToBody},{default:A(()=>[D(xi,{name:b(i).b("fade"),onAfterEnter:b(l),onAfterLeave:b(u),onBeforeLeave:b(c),persisted:""},{default:A(()=>[rn(D(b(Mre),{mask:O.modal,"overlay-class":O.modalClass,"z-index":b(p),onClick:b(m)},{default:A(()=>[D(b(yC),{loop:"",trapped:b(d),"focus-trap-el":o.value,"focus-start-el":a.value,onFocusAfterTrapped:b(v),onFocusAfterReleased:b(y),onFocusoutPrevented:b(_),onReleaseRequested:b(C)},{default:A(()=>[w("div",Dn({ref_key:"drawerRef",ref:o,"aria-modal":"true","aria-label":O.title||void 0,"aria-labelledby":O.title?void 0:b(h),"aria-describedby":b(g)},O.$attrs,{class:[b(i).b(),O.direction,b(d)&&"open"],style:b(E)?"width: "+b(k):"height: "+b(k),role:"dialog",onClick:zt(()=>{},["stop"])}),[w("span",{ref_key:"focusStartRef",ref:a,class:ee(b(i).e("sr-focus")),tabindex:"-1"},null,2),O.withHeader?(I(),j("header",{key:0,class:ee([b(i).e("header"),O.headerClass])},[O.$slots.title?Ne(O.$slots,"title",{key:1},()=>[be(" DEPRECATED SLOT ")]):Ne(O.$slots,"header",{key:0,close:b(S),titleId:b(h),titleClass:b(i).e("title")},()=>[O.$slots.title?be("v-if",!0):(I(),j("span",{key:0,id:b(h),role:"heading","aria-level":O.headerAriaLevel,class:ee(b(i).e("title"))},se(O.title),11,["id","aria-level"]))]),O.showClose?(I(),j("button",{key:2,"aria-label":b(s)("el.drawer.close"),class:ee(b(i).e("close-btn")),type:"button",onClick:b(S)},[D(b(Tt),{class:ee(b(i).e("close"))},{default:A(()=>[D(b(Gs))]),_:1},8,["class"])],10,["aria-label","onClick"])):be("v-if",!0)],2)):be("v-if",!0),b(f)?(I(),j("div",{key:1,id:b(g),class:ee([b(i).e("body"),O.bodyClass])},[Ne(O.$slots,"default")],10,["id"])):be("v-if",!0),O.$slots.footer?(I(),j("div",{key:2,class:ee([b(i).e("footer"),O.footerClass])},[Ne(O.$slots,"footer")],2)):be("v-if",!0)],16,["aria-label","aria-labelledby","aria-describedby","onClick"])]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])]),_:3},8,["mask","overlay-class","z-index","onClick"]),[[Pn,b(d)]])]),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])]),_:3},8,["to","disabled"]))}});var r0t=vt(n0t,[["__file","drawer.vue"]]);const o0t=dn(r0t),a0t=ne({inheritAttrs:!1});function i0t(e,t,n,r,o,a){return Ne(e.$slots,"default")}var s0t=vt(a0t,[["render",i0t],["__file","collection.vue"]]);const l0t=ne({name:"ElCollectionItem",inheritAttrs:!1});function u0t(e,t,n,r,o,a){return Ne(e.$slots,"default")}var c0t=vt(l0t,[["render",u0t],["__file","collection-item.vue"]]);const iDe="data-el-collection-item",sDe=e=>{const t=`El${e}Collection`,n=`${t}Item`,r=Symbol(t),o=Symbol(n),a={...s0t,name:t,setup(){const s=X(),l=new Map;Fn(r,{itemMap:l,getItems:()=>{const c=b(s);if(!c)return[];const d=Array.from(c.querySelectorAll(`[${iDe}]`));return[...l.values()].sort((h,g)=>d.indexOf(h.ref)-d.indexOf(g.ref))},collectionRef:s})}},i={...c0t,name:n,setup(s,{attrs:l}){const u=X(),c=kt(r,void 0);Fn(o,{collectionItemRef:u}),Kt(()=>{const d=b(u);d&&c.itemMap.set(d,{ref:d,...l})}),Ar(()=>{const d=b(u);c.itemMap.delete(d)})}};return{COLLECTION_INJECTION_KEY:r,COLLECTION_ITEM_INJECTION_KEY:o,ElCollection:a,ElCollectionItem:i}},d0t=ht({style:{type:$e([String,Array,Object])},currentTabId:{type:$e(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:$e(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:f0t,ElCollectionItem:h0t,COLLECTION_INJECTION_KEY:Bre,COLLECTION_ITEM_INJECTION_KEY:p0t}=sDe("RovingFocusGroup"),Rre=Symbol("elRovingFocusGroup"),lDe=Symbol("elRovingFocusGroupItem"),g0t={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},v0t=(e,t)=>{if(t!=="rtl")return e;switch(e){case St.right:return St.left;case St.left:return St.right;default:return e}},m0t=(e,t,n)=>{const r=v0t(e.code,n);if(!(t==="vertical"&&[St.left,St.right].includes(r))&&!(t==="horizontal"&&[St.up,St.down].includes(r)))return g0t[r]},y0t=(e,t)=>e.map((n,r)=>e[(r+t)%e.length]),Nre=e=>{const{activeElement:t}=document;for(const n of e)if(n===t||(n.focus(),t!==document.activeElement))return},$he="currentTabIdChange",Bhe="rovingFocusGroup.entryFocus",b0t={bubbles:!1,cancelable:!0},_0t=ne({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:d0t,emits:[$he,"entryFocus"],setup(e,{emit:t}){var n;const r=X((n=e.currentTabId||e.defaultCurrentTabId)!=null?n:null),o=X(!1),a=X(!1),i=X(),{getItems:s}=kt(Bre,void 0),l=K(()=>[{outline:"none"},e.style]),u=p=>{t($he,p)},c=()=>{o.value=!0},d=Uo(p=>{var m;(m=e.onMousedown)==null||m.call(e,p)},()=>{a.value=!0}),f=Uo(p=>{var m;(m=e.onFocus)==null||m.call(e,p)},p=>{const m=!b(a),{target:v,currentTarget:y}=p;if(v===y&&m&&!b(o)){const _=new Event(Bhe,b0t);if(y==null||y.dispatchEvent(_),!_.defaultPrevented){const C=s().filter(T=>T.focusable),S=C.find(T=>T.active),E=C.find(T=>T.id===b(r)),O=[S,E,...C].filter(Boolean).map(T=>T.ref);Nre(O)}}a.value=!1}),h=Uo(p=>{var m;(m=e.onBlur)==null||m.call(e,p)},()=>{o.value=!1}),g=(...p)=>{t("entryFocus",...p)};Fn(Rre,{currentTabbedId:lC(r),loop:tr(e,"loop"),tabIndex:K(()=>b(o)?-1:0),rovingFocusGroupRef:i,rovingFocusGroupRootStyle:l,orientation:tr(e,"orientation"),dir:tr(e,"dir"),onItemFocus:u,onItemShiftTab:c,onBlur:h,onFocus:f,onMousedown:d}),Ze(()=>e.currentTabId,p=>{r.value=p??null}),xr(i,Bhe,g)}});function w0t(e,t,n,r,o,a){return Ne(e.$slots,"default")}var C0t=vt(_0t,[["render",w0t],["__file","roving-focus-group-impl.vue"]]);const x0t=ne({name:"ElRovingFocusGroup",components:{ElFocusGroupCollection:f0t,ElRovingFocusGroupImpl:C0t}});function S0t(e,t,n,r,o,a){const i=yn("el-roving-focus-group-impl"),s=yn("el-focus-group-collection");return I(),Oe(s,null,{default:A(()=>[D(i,Hu(Mh(e.$attrs)),{default:A(()=>[Ne(e.$slots,"default")]),_:3},16)]),_:3})}var D0t=vt(x0t,[["render",S0t],["__file","roving-focus-group.vue"]]);const qF=ht({trigger:T3.trigger,triggerKeys:{type:$e(Array),default:()=>[St.enter,St.numpadEnter,St.space,St.down]},effect:{...Qo.effect,default:"light"},type:{type:$e(String)},placement:{type:$e(String),default:"bottom"},popperOptions:{type:$e(Object),default:()=>({})},id:String,size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},loop:{type:Boolean,default:!0},showTimeout:{type:Number,default:150},hideTimeout:{type:Number,default:150},tabindex:{type:$e([Number,String]),default:0},maxHeight:{type:$e([Number,String]),default:""},popperClass:{type:String,default:""},disabled:Boolean,role:{type:String,values:F5e,default:"menu"},buttonProps:{type:$e(Object)},teleported:Qo.teleported,persistent:{type:Boolean,default:!0}}),uDe=ht({command:{type:[Object,String,Number],default:()=>({})},disabled:Boolean,divided:Boolean,textValue:String,icon:{type:mr}}),E0t=ht({onKeydown:{type:$e(Function)}}),k0t=[St.down,St.pageDown,St.home],cDe=[St.up,St.pageUp,St.end],A0t=[...k0t,...cDe],{ElCollection:T0t,ElCollectionItem:O0t,COLLECTION_INJECTION_KEY:F0t,COLLECTION_ITEM_INJECTION_KEY:I0t}=sDe("Dropdown"),GL=Symbol("elDropdown"),dDe="elDropdown",{ButtonGroup:M0t}=Br,P0t=ne({name:"ElDropdown",components:{ElButton:Br,ElButtonGroup:M0t,ElScrollbar:id,ElDropdownCollection:T0t,ElTooltip:Yi,ElRovingFocusGroup:D0t,ElOnlyChild:$5e,ElIcon:Tt,ArrowDown:lc},props:qF,emits:["visible-change","click","command"],setup(e,{emit:t}){const n=bn(),r=nt("dropdown"),{t:o}=Un(),a=X(),i=X(),s=X(),l=X(),u=X(null),c=X(null),d=X(!1),f=K(()=>({maxHeight:Io(e.maxHeight)})),h=K(()=>[r.m(C.value)]),g=K(()=>Vs(e.trigger)),p=Gi().value,m=K(()=>e.id||p);Ze([a,g],([M,N],[L])=>{var V,Y,$;(V=L==null?void 0:L.$el)!=null&&V.removeEventListener&&L.$el.removeEventListener("pointerenter",E),(Y=M==null?void 0:M.$el)!=null&&Y.removeEventListener&&M.$el.removeEventListener("pointerenter",E),($=M==null?void 0:M.$el)!=null&&$.addEventListener&&N.includes("hover")&&M.$el.addEventListener("pointerenter",E)},{immediate:!0}),Ar(()=>{var M,N;(N=(M=a.value)==null?void 0:M.$el)!=null&&N.removeEventListener&&a.value.$el.removeEventListener("pointerenter",E)});function v(){y()}function y(){var M;(M=s.value)==null||M.onClose()}function _(){var M;(M=s.value)==null||M.onOpen()}const C=ma();function S(...M){t("command",...M)}function E(){var M,N;(N=(M=a.value)==null?void 0:M.$el)==null||N.focus()}function k(){}function O(){const M=b(l);g.value.includes("hover")&&(M==null||M.focus()),c.value=null}function T(M){c.value=M}function P(M){d.value||(M.preventDefault(),M.stopImmediatePropagation())}function U(){t("visible-change",!0)}function F(M){var N;(M==null?void 0:M.type)==="keydown"&&((N=l.value)==null||N.focus())}function H(){t("visible-change",!1)}return Fn(GL,{contentRef:l,role:K(()=>e.role),triggerId:m,isUsingKeyboard:d,onItemEnter:k,onItemLeave:O}),Fn(dDe,{instance:n,dropdownSize:C,handleClick:v,commandHandler:S,trigger:tr(e,"trigger"),hideOnClick:tr(e,"hideOnClick")}),{t:o,ns:r,scrollbar:u,wrapStyle:f,dropdownTriggerKls:h,dropdownSize:C,triggerId:m,currentTabId:c,handleCurrentTabIdChange:T,handlerMainButtonClick:M=>{t("click",M)},handleEntryFocus:P,handleClose:y,handleOpen:_,handleBeforeShowTooltip:U,handleShowTooltip:F,handleBeforeHideTooltip:H,onFocusAfterTrapped:M=>{var N,L;M.preventDefault(),(L=(N=l.value)==null?void 0:N.focus)==null||L.call(N,{preventScroll:!0})},popperRef:s,contentRef:l,triggeringElementRef:a,referenceElementRef:i}}});function $0t(e,t,n,r,o,a){var i;const s=yn("el-dropdown-collection"),l=yn("el-roving-focus-group"),u=yn("el-scrollbar"),c=yn("el-only-child"),d=yn("el-tooltip"),f=yn("el-button"),h=yn("arrow-down"),g=yn("el-icon"),p=yn("el-button-group");return I(),j("div",{class:ee([e.ns.b(),e.ns.is("disabled",e.disabled)])},[D(d,{ref:"popperRef",role:e.role,effect:e.effect,"fallback-placements":["bottom","top"],"popper-options":e.popperOptions,"gpu-acceleration":!1,"hide-after":e.trigger==="hover"?e.hideTimeout:0,"manual-mode":!0,placement:e.placement,"popper-class":[e.ns.e("popper"),e.popperClass],"reference-element":(i=e.referenceElementRef)==null?void 0:i.$el,trigger:e.trigger,"trigger-keys":e.triggerKeys,"trigger-target-el":e.contentRef,"show-after":e.trigger==="hover"?e.showTimeout:0,"stop-popper-mouse-event":!1,"virtual-ref":e.triggeringElementRef,"virtual-triggering":e.splitButton,disabled:e.disabled,transition:`${e.ns.namespace.value}-zoom-in-top`,teleported:e.teleported,pure:"",persistent:e.persistent,onBeforeShow:e.handleBeforeShowTooltip,onShow:e.handleShowTooltip,onBeforeHide:e.handleBeforeHideTooltip},eu({content:A(()=>[D(u,{ref:"scrollbar","wrap-style":e.wrapStyle,tag:"div","view-class":e.ns.e("list")},{default:A(()=>[D(l,{loop:e.loop,"current-tab-id":e.currentTabId,orientation:"horizontal",onCurrentTabIdChange:e.handleCurrentTabIdChange,onEntryFocus:e.handleEntryFocus},{default:A(()=>[D(s,null,{default:A(()=>[Ne(e.$slots,"dropdown")]),_:3})]),_:3},8,["loop","current-tab-id","onCurrentTabIdChange","onEntryFocus"])]),_:3},8,["wrap-style","view-class"])]),_:2},[e.splitButton?void 0:{name:"default",fn:A(()=>[D(c,{id:e.triggerId,ref:"triggeringElementRef",role:"button",tabindex:e.tabindex},{default:A(()=>[Ne(e.$slots,"default")]),_:3},8,["id","tabindex"])])}]),1032,["role","effect","popper-options","hide-after","placement","popper-class","reference-element","trigger","trigger-keys","trigger-target-el","show-after","virtual-ref","virtual-triggering","disabled","transition","teleported","persistent","onBeforeShow","onShow","onBeforeHide"]),e.splitButton?(I(),Oe(p,{key:0},{default:A(()=>[D(f,Dn({ref:"referenceElementRef"},e.buttonProps,{size:e.dropdownSize,type:e.type,disabled:e.disabled,tabindex:e.tabindex,onClick:e.handlerMainButtonClick}),{default:A(()=>[Ne(e.$slots,"default")]),_:3},16,["size","type","disabled","tabindex","onClick"]),D(f,Dn({id:e.triggerId,ref:"triggeringElementRef"},e.buttonProps,{role:"button",size:e.dropdownSize,type:e.type,class:e.ns.e("caret-button"),disabled:e.disabled,tabindex:e.tabindex,"aria-label":e.t("el.dropdown.toggleDropdown")}),{default:A(()=>[D(g,{class:ee(e.ns.e("icon"))},{default:A(()=>[D(h)]),_:1},8,["class"])]),_:1},16,["id","size","type","class","disabled","tabindex","aria-label"])]),_:3})):be("v-if",!0)],2)}var B0t=vt(P0t,[["render",$0t],["__file","dropdown.vue"]]);const R0t=ne({components:{ElRovingFocusCollectionItem:h0t},props:{focusable:{type:Boolean,default:!0},active:{type:Boolean,default:!1}},emits:["mousedown","focus","keydown"],setup(e,{emit:t}){const{currentTabbedId:n,loop:r,onItemFocus:o,onItemShiftTab:a}=kt(Rre,void 0),{getItems:i}=kt(Bre,void 0),s=Gi(),l=X(),u=Uo(h=>{t("mousedown",h)},h=>{e.focusable?o(b(s)):h.preventDefault()}),c=Uo(h=>{t("focus",h)},()=>{o(b(s))}),d=Uo(h=>{t("keydown",h)},h=>{const{code:g,shiftKey:p,target:m,currentTarget:v}=h;if(g===St.tab&&p){a();return}if(m!==v)return;const y=m0t(h);if(y){h.preventDefault();let C=i().filter(S=>S.focusable).map(S=>S.ref);switch(y){case"last":{C.reverse();break}case"prev":case"next":{y==="prev"&&C.reverse();const S=C.indexOf(v);C=r.value?y0t(C,S+1):C.slice(S+1);break}}It(()=>{Nre(C)})}}),f=K(()=>n.value===b(s));return Fn(lDe,{rovingFocusGroupItemRef:l,tabIndex:K(()=>b(f)?0:-1),handleMousedown:u,handleFocus:c,handleKeydown:d}),{id:s,handleKeydown:d,handleFocus:c,handleMousedown:u}}});function N0t(e,t,n,r,o,a){const i=yn("el-roving-focus-collection-item");return I(),Oe(i,{id:e.id,focusable:e.focusable,active:e.active},{default:A(()=>[Ne(e.$slots,"default")]),_:3},8,["id","focusable","active"])}var L0t=vt(R0t,[["render",N0t],["__file","roving-focus-item.vue"]]);const U0t=ne({name:"DropdownItemImpl",components:{ElIcon:Tt},props:uDe,emits:["pointermove","pointerleave","click","clickimpl"],setup(e,{emit:t}){const n=nt("dropdown"),{role:r}=kt(GL,void 0),{collectionItemRef:o}=kt(I0t,void 0),{collectionItemRef:a}=kt(p0t,void 0),{rovingFocusGroupItemRef:i,tabIndex:s,handleFocus:l,handleKeydown:u,handleMousedown:c}=kt(lDe,void 0),d=KL(o,a,i),f=K(()=>r.value==="menu"?"menuitem":r.value==="navigation"?"link":"button"),h=Uo(g=>{if([St.enter,St.numpadEnter,St.space].includes(g.code))return g.preventDefault(),g.stopImmediatePropagation(),t("clickimpl",g),!0},u);return{ns:n,itemRef:d,dataset:{[iDe]:""},role:f,tabIndex:s,handleFocus:l,handleKeydown:h,handleMousedown:c}}});function V0t(e,t,n,r,o,a){const i=yn("el-icon");return I(),j(tt,null,[e.divided?(I(),j("li",{key:0,role:"separator",class:ee(e.ns.bem("menu","item","divided"))},null,2)):be("v-if",!0),w("li",Dn({ref:e.itemRef},{...e.dataset,...e.$attrs},{"aria-disabled":e.disabled,class:[e.ns.be("menu","item"),e.ns.is("disabled",e.disabled)],tabindex:e.tabIndex,role:e.role,onClick:s=>e.$emit("clickimpl",s),onFocus:e.handleFocus,onKeydown:zt(e.handleKeydown,["self"]),onMousedown:e.handleMousedown,onPointermove:s=>e.$emit("pointermove",s),onPointerleave:s=>e.$emit("pointerleave",s)}),[e.icon?(I(),Oe(i,{key:0},{default:A(()=>[(I(),Oe(_n(e.icon)))]),_:1})):be("v-if",!0),Ne(e.$slots,"default")],16,["aria-disabled","tabindex","role","onClick","onFocus","onKeydown","onMousedown","onPointermove","onPointerleave"])],64)}var z0t=vt(U0t,[["render",V0t],["__file","dropdown-item-impl.vue"]]);const fDe=()=>{const e=kt(dDe,{}),t=K(()=>e==null?void 0:e.dropdownSize);return{elDropdown:e,_elDropdownSize:t}},j0t=ne({name:"ElDropdownItem",components:{ElDropdownCollectionItem:O0t,ElRovingFocusItem:L0t,ElDropdownItemImpl:z0t},inheritAttrs:!1,props:uDe,emits:["pointermove","pointerleave","click"],setup(e,{emit:t,attrs:n}){const{elDropdown:r}=fDe(),o=bn(),a=X(null),i=K(()=>{var h,g;return(g=(h=b(a))==null?void 0:h.textContent)!=null?g:""}),{onItemEnter:s,onItemLeave:l}=kt(GL,void 0),u=Uo(h=>(t("pointermove",h),h.defaultPrevented),vhe(h=>{if(e.disabled){l(h);return}const g=h.currentTarget;g===document.activeElement||g.contains(document.activeElement)||(s(h),h.defaultPrevented||g==null||g.focus())})),c=Uo(h=>(t("pointerleave",h),h.defaultPrevented),vhe(l)),d=Uo(h=>{if(!e.disabled)return t("click",h),h.type!=="keydown"&&h.defaultPrevented},h=>{var g,p,m;if(e.disabled){h.stopImmediatePropagation();return}(g=r==null?void 0:r.hideOnClick)!=null&&g.value&&((p=r.handleClick)==null||p.call(r)),(m=r.commandHandler)==null||m.call(r,e.command,o,h)}),f=K(()=>({...e,...n}));return{handleClick:d,handlePointerMove:u,handlePointerLeave:c,textContent:i,propsAndAttrs:f}}});function H0t(e,t,n,r,o,a){var i;const s=yn("el-dropdown-item-impl"),l=yn("el-roving-focus-item"),u=yn("el-dropdown-collection-item");return I(),Oe(u,{disabled:e.disabled,"text-value":(i=e.textValue)!=null?i:e.textContent},{default:A(()=>[D(l,{focusable:!e.disabled},{default:A(()=>[D(s,Dn(e.propsAndAttrs,{onPointerleave:e.handlePointerLeave,onPointermove:e.handlePointerMove,onClickimpl:e.handleClick}),{default:A(()=>[Ne(e.$slots,"default")]),_:3},16,["onPointerleave","onPointermove","onClickimpl"])]),_:3},8,["focusable"])]),_:3},8,["disabled","text-value"])}var hDe=vt(j0t,[["render",H0t],["__file","dropdown-item.vue"]]);const W0t=ne({name:"ElDropdownMenu",props:E0t,setup(e){const t=nt("dropdown"),{_elDropdownSize:n}=fDe(),r=n.value,{focusTrapRef:o,onKeydown:a}=kt(ire,void 0),{contentRef:i,role:s,triggerId:l}=kt(GL,void 0),{collectionRef:u,getItems:c}=kt(F0t,void 0),{rovingFocusGroupRef:d,rovingFocusGroupRootStyle:f,tabIndex:h,onBlur:g,onFocus:p,onMousedown:m}=kt(Rre,void 0),{collectionRef:v}=kt(Bre,void 0),y=K(()=>[t.b("menu"),t.bm("menu",r==null?void 0:r.value)]),_=KL(i,u,o,d,v),C=Uo(E=>{var k;(k=e.onKeydown)==null||k.call(e,E)},E=>{const{currentTarget:k,code:O,target:T}=E;if(k.contains(T),St.tab===O&&E.stopImmediatePropagation(),E.preventDefault(),T!==b(i)||!A0t.includes(O))return;const U=c().filter(F=>!F.disabled).map(F=>F.ref);cDe.includes(O)&&U.reverse(),Nre(U)});return{size:r,rovingFocusGroupRootStyle:f,tabIndex:h,dropdownKls:y,role:s,triggerId:l,dropdownListWrapperRef:_,handleKeydown:E=>{C(E),a(E)},onBlur:g,onFocus:p,onMousedown:m}}});function q0t(e,t,n,r,o,a){return I(),j("ul",{ref:e.dropdownListWrapperRef,class:ee(e.dropdownKls),style:Nt(e.rovingFocusGroupRootStyle),tabindex:-1,role:e.role,"aria-labelledby":e.triggerId,onBlur:e.onBlur,onFocus:e.onFocus,onKeydown:zt(e.handleKeydown,["self"]),onMousedown:zt(e.onMousedown,["self"])},[Ne(e.$slots,"default")],46,["role","aria-labelledby","onBlur","onFocus","onKeydown","onMousedown"])}var pDe=vt(W0t,[["render",q0t],["__file","dropdown-menu.vue"]]);const o1=dn(B0t,{DropdownItem:hDe,DropdownMenu:pDe}),a1=vo(hDe),i1=vo(pDe),K0t=ne({name:"ImgEmpty"}),G0t=ne({...K0t,setup(e){const t=nt("empty"),n=Gi();return(r,o)=>(I(),j("svg",{viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[w("defs",null,[w("linearGradient",{id:`linearGradient-1-${b(n)}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},[w("stop",{"stop-color":`var(${b(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),w("stop",{"stop-color":`var(${b(t).cssVarBlockName("fill-color-4")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),w("linearGradient",{id:`linearGradient-2-${b(n)}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},[w("stop",{"stop-color":`var(${b(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),w("stop",{"stop-color":`var(${b(t).cssVarBlockName("fill-color-6")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),w("rect",{id:`path-3-${b(n)}`,x:"0",y:"0",width:"17",height:"36"},null,8,["id"])]),w("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[w("g",{transform:"translate(-1268.000000, -535.000000)"},[w("g",{transform:"translate(1268.000000, 535.000000)"},[w("path",{d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:`var(${b(t).cssVarBlockName("fill-color-3")})`},null,8,["fill"]),w("polygon",{fill:`var(${b(t).cssVarBlockName("fill-color-7")})`,transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"},null,8,["fill"]),w("g",{transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},[w("polygon",{fill:`var(${b(t).cssVarBlockName("fill-color-7")})`,transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"},null,8,["fill"]),w("polygon",{fill:`var(${b(t).cssVarBlockName("fill-color-5")})`,points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,8,["fill"]),w("rect",{fill:`url(#linearGradient-1-${b(n)})`,transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"},null,8,["fill"]),w("polygon",{fill:`var(${b(t).cssVarBlockName("fill-color-2")})`,transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"},null,8,["fill"])]),w("rect",{fill:`url(#linearGradient-2-${b(n)})`,x:"13",y:"45",width:"40",height:"36"},null,8,["fill"]),w("g",{transform:"translate(53.000000, 45.000000)"},[w("use",{fill:`var(${b(t).cssVarBlockName("fill-color-8")})`,transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${b(n)}`},null,8,["fill","xlink:href"]),w("polygon",{fill:`var(${b(t).cssVarBlockName("fill-color-9")})`,mask:`url(#mask-4-${b(n)})`,transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 7 16.5"},null,8,["fill","mask"])]),w("polygon",{fill:`var(${b(t).cssVarBlockName("fill-color-2")})`,transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"},null,8,["fill"])])])])]))}});var Y0t=vt(G0t,[["__file","img-empty.vue"]]);const X0t=ht({image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}}),J0t=ne({name:"ElEmpty"}),Z0t=ne({...J0t,props:X0t,setup(e){const t=e,{t:n}=Un(),r=nt("empty"),o=K(()=>t.description||n("el.table.emptyText")),a=K(()=>({width:Io(t.imageSize)}));return(i,s)=>(I(),j("div",{class:ee(b(r).b())},[w("div",{class:ee(b(r).e("image")),style:Nt(b(a))},[i.image?(I(),j("img",{key:0,src:i.image,ondragstart:"return false"},null,8,["src"])):Ne(i.$slots,"image",{key:1},()=>[D(Y0t)])],6),w("div",{class:ee(b(r).e("description"))},[i.$slots.description?Ne(i.$slots,"description",{key:0}):(I(),j("p",{key:1},se(b(o)),1))],2),i.$slots.default?(I(),j("div",{key:0,class:ee(b(r).e("bottom"))},[Ne(i.$slots,"default")],2)):be("v-if",!0)],2))}});var Q0t=vt(Z0t,[["__file","empty.vue"]]);const bf=dn(Q0t),evt=ht({size:{type:String,values:Gh},disabled:Boolean}),tvt=ht({...evt,model:Object,rules:{type:$e(Object)},labelPosition:{type:String,values:["left","right","top"],default:"right"},requireAsteriskPosition:{type:String,values:["left","right"],default:"left"},labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:Boolean,scrollToError:Boolean,scrollIntoViewOptions:{type:[Object,Boolean],default:!0}}),nvt={validate:(e,t,n)=>(ct(e)||$t(e))&&hr(t)&&$t(n)};function rvt(){const e=X([]),t=K(()=>{if(!e.value.length)return"0";const a=Math.max(...e.value);return a?`${a}px`:""});function n(a){const i=e.value.indexOf(a);return i===-1&&t.value,i}function r(a,i){if(a&&i){const s=n(i);e.value.splice(s,1,a)}else a&&e.value.push(a)}function o(a){const i=n(a);i>-1&&e.value.splice(i,1)}return{autoLabelWidth:t,registerLabelWidth:r,deregisterLabelWidth:o}}const nO=(e,t)=>{const n=Vs(t).map(r=>ct(r)?r.join("."):r);return n.length>0?e.filter(r=>r.propString&&n.includes(r.propString)):e},ovt="ElForm",avt=ne({name:ovt}),ivt=ne({...avt,props:tvt,emits:nvt,setup(e,{expose:t,emit:n}){const r=e,o=X(),a=Bn([]),i=ma(),s=nt("form"),l=K(()=>{const{labelPosition:C,inline:S}=r;return[s.b(),s.m(i.value||"default"),{[s.m(`label-${C}`)]:C,[s.m("inline")]:S}]}),u=C=>nO(a,[C])[0],c=C=>{a.push(C)},d=C=>{C.prop&&a.splice(a.indexOf(C),1)},f=(C=[])=>{r.model&&nO(a,C).forEach(S=>S.resetField())},h=(C=[])=>{nO(a,C).forEach(S=>S.clearValidate())},g=K(()=>!!r.model),p=C=>{if(a.length===0)return[];const S=nO(a,C);return S.length?S:[]},m=async C=>y(void 0,C),v=async(C=[])=>{if(!g.value)return!1;const S=p(C);if(S.length===0)return!0;let E={};for(const k of S)try{await k.validate(""),k.validateState==="error"&&k.resetField()}catch(O){E={...E,...O}}return Object.keys(E).length===0?!0:Promise.reject(E)},y=async(C=[],S)=>{let E=!1;const k=!Rt(S);try{return E=await v(C),E===!0&&await(S==null?void 0:S(E)),E}catch(O){if(O instanceof Error)throw O;const T=O;if(r.scrollToError&&o.value){const P=o.value.querySelector(`.${s.b()}-item.is-error`);P==null||P.scrollIntoView(r.scrollIntoViewOptions)}return!E&&await(S==null?void 0:S(!1,T)),k&&Promise.reject(T)}},_=C=>{var S;const E=u(C);E&&((S=E.$el)==null||S.scrollIntoView(r.scrollIntoViewOptions))};return Ze(()=>r.rules,()=>{r.validateOnRuleChange&&m().catch(C=>void 0)},{deep:!0,flush:"post"}),Fn(__,Bn({...Ra(r),emit:n,resetFields:f,clearValidate:h,validateField:y,getField:u,addField:c,removeField:d,...rvt()})),t({validate:m,validateField:y,resetFields:f,clearValidate:h,scrollToField:_,getField:u,fields:a}),(C,S)=>(I(),j("form",{ref_key:"formRef",ref:o,class:ee(b(l))},[Ne(C.$slots,"default")],2))}});var svt=vt(ivt,[["__file","form.vue"]]);function h2(){return h2=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function KF(e,t,n){return uvt()?KF=Reflect.construct.bind():KF=function(o,a,i){var s=[null];s.push.apply(s,a);var l=Function.bind.apply(o,s),u=new l;return i&&jD(u,i.prototype),u},KF.apply(null,arguments)}function cvt(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function qY(e){var t=typeof Map=="function"?new Map:void 0;return qY=function(r){if(r===null||!cvt(r))return r;if(typeof r!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(r))return t.get(r);t.set(r,o)}function o(){return KF(r,arguments,WY(this).constructor)}return o.prototype=Object.create(r.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),jD(o,r)},qY(e)}var dvt=/%[sdj%]/g,fvt=function(){};typeof process<"u"&&process.env;function KY(e){if(!e||!e.length)return null;var t={};return e.forEach(function(n){var r=n.field;t[r]=t[r]||[],t[r].push(n)}),t}function Gu(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=a)return s;switch(s){case"%s":return String(n[o++]);case"%d":return Number(n[o++]);case"%j":try{return JSON.stringify(n[o++])}catch{return"[Circular]"}break;default:return s}});return i}return e}function hvt(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function Di(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||hvt(t)&&typeof e=="string"&&!e)}function pvt(e,t,n){var r=[],o=0,a=e.length;function i(s){r.push.apply(r,s||[]),o++,o===a&&n(r)}e.forEach(function(s){t(s,i)})}function Rhe(e,t,n){var r=0,o=e.length;function a(i){if(i&&i.length){n(i);return}var s=r;r=r+1,s()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},V5={integer:function(t){return V5.number(t)&&parseInt(t,10)===t},float:function(t){return V5.number(t)&&!V5.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime=="function"&&typeof t.getMonth=="function"&&typeof t.getYear=="function"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t=="number"},object:function(t){return typeof t=="object"&&!V5.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(Vhe.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(_vt())},hex:function(t){return typeof t=="string"&&!!t.match(Vhe.hex)}},wvt=function(t,n,r,o,a){if(t.required&&n===void 0){gDe(t,n,r,o,a);return}var i=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=t.type;i.indexOf(s)>-1?V5[s](n)||o.push(Gu(a.messages.types[s],t.fullField,t.type)):s&&typeof n!==t.type&&o.push(Gu(a.messages.types[s],t.fullField,t.type))},Cvt=function(t,n,r,o,a){var i=typeof t.len=="number",s=typeof t.min=="number",l=typeof t.max=="number",u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=n,d=null,f=typeof n=="number",h=typeof n=="string",g=Array.isArray(n);if(f?d="number":h?d="string":g&&(d="array"),!d)return!1;g&&(c=n.length),h&&(c=n.replace(u,"_").length),i?c!==t.len&&o.push(Gu(a.messages[d].len,t.fullField,t.len)):s&&!l&&ct.max?o.push(Gu(a.messages[d].max,t.fullField,t.max)):s&&l&&(ct.max)&&o.push(Gu(a.messages[d].range,t.fullField,t.min,t.max))},Z_="enum",xvt=function(t,n,r,o,a){t[Z_]=Array.isArray(t[Z_])?t[Z_]:[],t[Z_].indexOf(n)===-1&&o.push(Gu(a.messages[Z_],t.fullField,t[Z_].join(", ")))},Svt=function(t,n,r,o,a){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(n)||o.push(Gu(a.messages.pattern.mismatch,t.fullField,n,t.pattern));else if(typeof t.pattern=="string"){var i=new RegExp(t.pattern);i.test(n)||o.push(Gu(a.messages.pattern.mismatch,t.fullField,n,t.pattern))}}},Mr={required:gDe,whitespace:bvt,type:wvt,range:Cvt,enum:xvt,pattern:Svt},Dvt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n,"string")&&!t.required)return r();Mr.required(t,n,o,i,a,"string"),Di(n,"string")||(Mr.type(t,n,o,i,a),Mr.range(t,n,o,i,a),Mr.pattern(t,n,o,i,a),t.whitespace===!0&&Mr.whitespace(t,n,o,i,a))}r(i)},Evt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n)&&!t.required)return r();Mr.required(t,n,o,i,a),n!==void 0&&Mr.type(t,n,o,i,a)}r(i)},kvt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(n===""&&(n=void 0),Di(n)&&!t.required)return r();Mr.required(t,n,o,i,a),n!==void 0&&(Mr.type(t,n,o,i,a),Mr.range(t,n,o,i,a))}r(i)},Avt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n)&&!t.required)return r();Mr.required(t,n,o,i,a),n!==void 0&&Mr.type(t,n,o,i,a)}r(i)},Tvt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n)&&!t.required)return r();Mr.required(t,n,o,i,a),Di(n)||Mr.type(t,n,o,i,a)}r(i)},Ovt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n)&&!t.required)return r();Mr.required(t,n,o,i,a),n!==void 0&&(Mr.type(t,n,o,i,a),Mr.range(t,n,o,i,a))}r(i)},Fvt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n)&&!t.required)return r();Mr.required(t,n,o,i,a),n!==void 0&&(Mr.type(t,n,o,i,a),Mr.range(t,n,o,i,a))}r(i)},Ivt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(n==null&&!t.required)return r();Mr.required(t,n,o,i,a,"array"),n!=null&&(Mr.type(t,n,o,i,a),Mr.range(t,n,o,i,a))}r(i)},Mvt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n)&&!t.required)return r();Mr.required(t,n,o,i,a),n!==void 0&&Mr.type(t,n,o,i,a)}r(i)},Pvt="enum",$vt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n)&&!t.required)return r();Mr.required(t,n,o,i,a),n!==void 0&&Mr[Pvt](t,n,o,i,a)}r(i)},Bvt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n,"string")&&!t.required)return r();Mr.required(t,n,o,i,a),Di(n,"string")||Mr.pattern(t,n,o,i,a)}r(i)},Rvt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n,"date")&&!t.required)return r();if(Mr.required(t,n,o,i,a),!Di(n,"date")){var l;n instanceof Date?l=n:l=new Date(n),Mr.type(t,l,o,i,a),l&&Mr.range(t,l.getTime(),o,i,a)}}r(i)},Nvt=function(t,n,r,o,a){var i=[],s=Array.isArray(n)?"array":typeof n;Mr.required(t,n,o,i,a,s),r(i)},nj=function(t,n,r,o,a){var i=t.type,s=[],l=t.required||!t.required&&o.hasOwnProperty(t.field);if(l){if(Di(n,i)&&!t.required)return r();Mr.required(t,n,o,s,a,i),Di(n,i)||Mr.type(t,n,o,s,a)}r(s)},Lvt=function(t,n,r,o,a){var i=[],s=t.required||!t.required&&o.hasOwnProperty(t.field);if(s){if(Di(n)&&!t.required)return r();Mr.required(t,n,o,i,a)}r(i)},LS={string:Dvt,method:Evt,number:kvt,boolean:Avt,regexp:Tvt,integer:Ovt,float:Fvt,array:Ivt,object:Mvt,enum:$vt,pattern:Bvt,date:Rvt,url:nj,hex:nj,email:nj,required:Nvt,any:Lvt};function GY(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var YY=GY(),wT=function(){function e(n){this.rules=null,this._messages=YY,this.define(n)}var t=e.prototype;return t.define=function(r){var o=this;if(!r)throw new Error("Cannot configure a schema with no rules");if(typeof r!="object"||Array.isArray(r))throw new Error("Rules must be an object");this.rules={},Object.keys(r).forEach(function(a){var i=r[a];o.rules[a]=Array.isArray(i)?i:[i]})},t.messages=function(r){return r&&(this._messages=Uhe(GY(),r)),this._messages},t.validate=function(r,o,a){var i=this;o===void 0&&(o={}),a===void 0&&(a=function(){});var s=r,l=o,u=a;if(typeof l=="function"&&(u=l,l={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,s),Promise.resolve(s);function c(p){var m=[],v={};function y(C){if(Array.isArray(C)){var S;m=(S=m).concat.apply(S,C)}else m.push(C)}for(var _=0;_");const o=nt("form"),a=X(),i=X(0),s=()=>{var c;if((c=a.value)!=null&&c.firstElementChild){const d=window.getComputedStyle(a.value.firstElementChild).width;return Math.ceil(Number.parseFloat(d))}else return 0},l=(c="update")=>{It(()=>{t.default&&e.isAutoWidth&&(c==="update"?i.value=s():c==="remove"&&(n==null||n.deregisterLabelWidth(i.value)))})},u=()=>l("update");return Kt(()=>{u()}),Ar(()=>{l("remove")}),gf(()=>u()),Ze(i,(c,d)=>{e.updateAll&&(n==null||n.registerLabelWidth(c,d))}),co(K(()=>{var c,d;return(d=(c=a.value)==null?void 0:c.firstElementChild)!=null?d:null}),u),()=>{var c,d;if(!t)return null;const{isAutoWidth:f}=e;if(f){const h=n==null?void 0:n.autoLabelWidth,g=r==null?void 0:r.hasLabel,p={};if(g&&h&&h!=="auto"){const m=Math.max(0,Number.parseInt(h,10)-i.value),y=(r.labelPosition||n.labelPosition)==="left"?"marginRight":"marginLeft";m&&(p[y]=`${m}px`)}return D("div",{ref:a,class:[o.be("item","label-wrap")],style:p},[(c=t.default)==null?void 0:c.call(t)])}else return D(tt,{ref:a},[(d=t.default)==null?void 0:d.call(t)])}}});const jvt=ne({name:"ElFormItem"}),Hvt=ne({...jvt,props:Vvt,setup(e,{expose:t}){const n=e,r=La(),o=kt(__,void 0),a=kt(Bh,void 0),i=ma(void 0,{formItem:!1}),s=nt("form-item"),l=Gi().value,u=X([]),c=X(""),d=rJe(c,100),f=X(""),h=X();let g,p=!1;const m=K(()=>n.labelPosition||(o==null?void 0:o.labelPosition)),v=K(()=>{if(m.value==="top")return{};const de=Io(n.labelWidth||(o==null?void 0:o.labelWidth)||"");return de?{width:de}:{}}),y=K(()=>{if(m.value==="top"||o!=null&&o.inline)return{};if(!n.label&&!n.labelWidth&&P)return{};const de=Io(n.labelWidth||(o==null?void 0:o.labelWidth)||"");return!n.label&&!r.label?{marginLeft:de}:{}}),_=K(()=>[s.b(),s.m(i.value),s.is("error",c.value==="error"),s.is("validating",c.value==="validating"),s.is("success",c.value==="success"),s.is("required",z.value||n.required),s.is("no-asterisk",o==null?void 0:o.hideRequiredAsterisk),(o==null?void 0:o.requireAsteriskPosition)==="right"?"asterisk-right":"asterisk-left",{[s.m("feedback")]:o==null?void 0:o.statusIcon,[s.m(`label-${m.value}`)]:m.value}]),C=K(()=>hr(n.inlineMessage)?n.inlineMessage:(o==null?void 0:o.inlineMessage)||!1),S=K(()=>[s.e("error"),{[s.em("error","inline")]:C.value}]),E=K(()=>n.prop?ct(n.prop)?n.prop.join("."):n.prop:""),k=K(()=>!!(n.label||r.label)),O=K(()=>{var de;return(de=n.for)!=null?de:u.value.length===1?u.value[0]:void 0}),T=K(()=>!O.value&&k.value),P=!!a,U=K(()=>{const de=o==null?void 0:o.model;if(!(!de||!n.prop))return $S(de,n.prop).value}),F=K(()=>{const{required:de}=n,we=[];n.rules&&we.push(...Vs(n.rules));const Be=o==null?void 0:o.rules;if(Be&&n.prop){const ke=$S(Be,n.prop).value;ke&&we.push(...Vs(ke))}if(de!==void 0){const ke=we.map((ae,le)=>[ae,le]).filter(([ae])=>Object.keys(ae).includes("required"));if(ke.length>0)for(const[ae,le]of ke)ae.required!==de&&(we[le]={...ae,required:de});else we.push({required:de})}return we}),H=K(()=>F.value.length>0),R=de=>F.value.filter(Be=>!Be.trigger||!de?!0:ct(Be.trigger)?Be.trigger.includes(de):Be.trigger===de).map(({trigger:Be,...ke})=>ke),z=K(()=>F.value.some(de=>de.required)),M=K(()=>{var de;return d.value==="error"&&n.showMessage&&((de=o==null?void 0:o.showMessage)!=null?de:!0)}),N=K(()=>`${n.label||""}${(o==null?void 0:o.labelSuffix)||""}`),L=de=>{c.value=de},V=de=>{var we,Be;const{errors:ke,fields:ae}=de;(!ke||!ae)&&console.error(de),L("error"),f.value=ke?(Be=(we=ke==null?void 0:ke[0])==null?void 0:we.message)!=null?Be:`${n.prop} is required`:"",o==null||o.emit("validate",n.prop,!1,f.value)},Y=()=>{L("success"),o==null||o.emit("validate",n.prop,!0,"")},$=async de=>{const we=E.value;return new wT({[we]:de}).validate({[we]:U.value},{firstFields:!0}).then(()=>(Y(),!0)).catch(ke=>(V(ke),Promise.reject(ke)))},B=async(de,we)=>{if(p||!n.prop)return!1;const Be=Rt(we);if(!H.value)return we==null||we(!1),!1;const ke=R(de);return ke.length===0?(we==null||we(!0),!0):(L("validating"),$(ke).then(()=>(we==null||we(!0),!0)).catch(ae=>{const{fields:le}=ae;return we==null||we(!1,le),Be?!1:Promise.reject(le)}))},W=()=>{L(""),f.value="",p=!1},J=async()=>{const de=o==null?void 0:o.model;if(!de||!n.prop)return;const we=$S(de,n.prop);p=!0,we.value=Dfe(g),await It(),W(),p=!1},oe=de=>{u.value.includes(de)||u.value.push(de)},ie=de=>{u.value=u.value.filter(we=>we!==de)};Ze(()=>n.error,de=>{f.value=de||"",L(de?"error":"")},{immediate:!0}),Ze(()=>n.validateStatus,de=>L(de||""));const Z=Bn({...Ra(n),$el:h,size:i,validateMessage:f,validateState:c,labelId:l,inputIds:u,isGroup:T,hasLabel:k,fieldValue:U,addInputId:oe,removeInputId:ie,resetField:J,clearValidate:W,validate:B,propString:E});return Fn(Bh,Z),Kt(()=>{n.prop&&(o==null||o.addField(Z),g=Dfe(U.value))}),Ar(()=>{o==null||o.removeField(Z)}),t({size:i,validateMessage:f,validateState:c,validate:B,clearValidate:W,resetField:J}),(de,we)=>{var Be;return I(),j("div",{ref_key:"formItemRef",ref:h,class:ee(b(_)),role:b(T)?"group":void 0,"aria-labelledby":b(T)?b(l):void 0},[D(b(zvt),{"is-auto-width":b(v).width==="auto","update-all":((Be=b(o))==null?void 0:Be.labelWidth)==="auto"},{default:A(()=>[b(k)?(I(),Oe(_n(b(O)?"label":"div"),{key:0,id:b(l),for:b(O),class:ee(b(s).e("label")),style:Nt(b(v))},{default:A(()=>[Ne(de.$slots,"label",{label:b(N)},()=>[ce(se(b(N)),1)])]),_:3},8,["id","for","class","style"])):be("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),w("div",{class:ee(b(s).e("content")),style:Nt(b(y))},[Ne(de.$slots,"default"),D(Cne,{name:`${b(s).namespace.value}-zoom-in-top`},{default:A(()=>[b(M)?Ne(de.$slots,"error",{key:0,error:f.value},()=>[w("div",{class:ee(b(S))},se(f.value),3)]):be("v-if",!0)]),_:3},8,["name"])],6)],10,["role","aria-labelledby"])}}});var vDe=vt(Hvt,[["__file","form-item.vue"]]);const Xh=dn(svt,{FormItem:vDe}),_f=vo(vDe),Wvt=ht({urlList:{type:$e(Array),default:()=>Eo([])},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},hideOnClickModal:Boolean,teleported:Boolean,closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2},minScale:{type:Number,default:.2},maxScale:{type:Number,default:7},showProgress:{type:Boolean,default:!1},crossorigin:{type:$e(String)}}),qvt={close:()=>!0,switch:e=>Lt(e),rotate:e=>Lt(e)},Kvt=ne({name:"ElImageViewer"}),Gvt=ne({...Kvt,props:Wvt,emits:qvt,setup(e,{expose:t,emit:n}){var r;const o=e,a={CONTAIN:{name:"contain",icon:Jd(l5e)},ORIGINAL:{name:"original",icon:Jd(b5e)}};let i,s="";const{t:l}=Un(),u=nt("image-viewer"),{nextZIndex:c}=gC(),d=X(),f=X([]),h=nne(),g=X(!0),p=X(o.initialIndex),m=Tr(a.CONTAIN),v=X({scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}),y=X((r=o.zIndex)!=null?r:c()),_=K(()=>{const{urlList:ie}=o;return ie.length<=1}),C=K(()=>p.value===0),S=K(()=>p.value===o.urlList.length-1),E=K(()=>o.urlList[p.value]),k=K(()=>[u.e("btn"),u.e("prev"),u.is("disabled",!o.infinite&&C.value)]),O=K(()=>[u.e("btn"),u.e("next"),u.is("disabled",!o.infinite&&S.value)]),T=K(()=>{const{scale:ie,deg:Z,offsetX:de,offsetY:we,enableTransition:Be}=v.value;let ke=de/ie,ae=we/ie;const le=Z*Math.PI/180,q=Math.cos(le),pe=Math.sin(le);ke=ke*q+ae*pe,ae=ae*q-de/ie*pe;const he={transform:`scale(${ie}) rotate(${Z}deg) translate(${ke}px, ${ae}px)`,transition:Be?"transform .3s":""};return m.value.name===a.CONTAIN.name&&(he.maxWidth=he.maxHeight="100%"),he}),P=K(()=>`${p.value+1} / ${o.urlList.length}`);function U(){H(),i==null||i(),document.body.style.overflow=s,n("close")}function F(){const ie=ub(de=>{switch(de.code){case St.esc:o.closeOnPressEscape&&U();break;case St.space:L();break;case St.left:Y();break;case St.up:B("zoomIn");break;case St.right:$();break;case St.down:B("zoomOut");break}}),Z=ub(de=>{const we=de.deltaY||de.deltaX;B(we<0?"zoomIn":"zoomOut",{zoomRate:o.zoomRate,enableTransition:!1})});h.run(()=>{xr(document,"keydown",ie),xr(document,"wheel",Z)})}function H(){h.stop()}function R(){g.value=!1}function z(ie){g.value=!1,ie.target.alt=l("el.image.error")}function M(ie){if(g.value||ie.button!==0||!d.value)return;v.value.enableTransition=!1;const{offsetX:Z,offsetY:de}=v.value,we=ie.pageX,Be=ie.pageY,ke=ub(le=>{v.value={...v.value,offsetX:Z+le.pageX-we,offsetY:de+le.pageY-Be}}),ae=xr(document,"mousemove",ke);xr(document,"mouseup",()=>{ae()}),ie.preventDefault()}function N(){v.value={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}function L(){if(g.value)return;const ie=c8(a),Z=Object.values(a),de=m.value.name,Be=(Z.findIndex(ke=>ke.name===de)+1)%ie.length;m.value=a[ie[Be]],N()}function V(ie){const Z=o.urlList.length;p.value=(ie+Z)%Z}function Y(){C.value&&!o.infinite||V(p.value-1)}function $(){S.value&&!o.infinite||V(p.value+1)}function B(ie,Z={}){if(g.value)return;const{minScale:de,maxScale:we}=o,{zoomRate:Be,rotateDeg:ke,enableTransition:ae}={zoomRate:o.zoomRate,rotateDeg:90,enableTransition:!0,...Z};switch(ie){case"zoomOut":v.value.scale>de&&(v.value.scale=Number.parseFloat((v.value.scale/Be).toFixed(3)));break;case"zoomIn":v.value.scale0)return ie.preventDefault(),!1}}return Ze(E,()=>{It(()=>{const ie=f.value[0];ie!=null&&ie.complete||(g.value=!0)})}),Ze(p,ie=>{N(),n("switch",ie)}),Kt(()=>{F(),i=xr("wheel",oe,{passive:!1}),s=document.body.style.overflow,document.body.style.overflow="hidden"}),t({setActiveItem:V}),(ie,Z)=>(I(),Oe(b(bC),{to:"body",disabled:!ie.teleported},{default:A(()=>[D(xi,{name:"viewer-fade",appear:""},{default:A(()=>[w("div",{ref_key:"wrapper",ref:d,tabindex:-1,class:ee(b(u).e("wrapper")),style:Nt({zIndex:y.value})},[D(b(yC),{loop:"",trapped:"","focus-trap-el":d.value,"focus-start-el":"container",onFocusoutPrevented:W,onReleaseRequested:J},{default:A(()=>[w("div",{class:ee(b(u).e("mask")),onClick:zt(de=>ie.hideOnClickModal&&U(),["self"])},null,10,["onClick"]),be(" CLOSE "),w("span",{class:ee([b(u).e("btn"),b(u).e("close")]),onClick:U},[D(b(Tt),null,{default:A(()=>[D(b(Gs))]),_:1})],2),be(" ARROW "),b(_)?be("v-if",!0):(I(),j(tt,{key:0},[w("span",{class:ee(b(k)),onClick:Y},[D(b(Tt),null,{default:A(()=>[D(b(uf))]),_:1})],2),w("span",{class:ee(b(O)),onClick:$},[D(b(Tt),null,{default:A(()=>[D(b(_i))]),_:1})],2)],64)),ie.$slots.progress||ie.showProgress?(I(),j("div",{key:1,class:ee([b(u).e("btn"),b(u).e("progress")])},[Ne(ie.$slots,"progress",{activeIndex:p.value,total:ie.urlList.length},()=>[ce(se(b(P)),1)])],2)):be("v-if",!0),be(" ACTIONS "),w("div",{class:ee([b(u).e("btn"),b(u).e("actions")])},[w("div",{class:ee(b(u).e("actions__inner"))},[Ne(ie.$slots,"toolbar",{actions:B,prev:Y,next:$,reset:L,activeIndex:p.value,setActiveItem:V},()=>[D(b(Tt),{onClick:de=>B("zoomOut")},{default:A(()=>[D(b(x5e))]),_:1},8,["onClick"]),D(b(Tt),{onClick:de=>B("zoomIn")},{default:A(()=>[D(b(Qne))]),_:1},8,["onClick"]),w("i",{class:ee(b(u).e("actions__divider"))},null,2),D(b(Tt),{onClick:L},{default:A(()=>[(I(),Oe(_n(b(m).icon)))]),_:1}),w("i",{class:ee(b(u).e("actions__divider"))},null,2),D(b(Tt),{onClick:de=>B("anticlockwise")},{default:A(()=>[D(b(Gne))]),_:1},8,["onClick"]),D(b(Tt),{onClick:de=>B("clockwise")},{default:A(()=>[D(b(y5e))]),_:1},8,["onClick"])])],2)],2),be(" CANVAS "),w("div",{class:ee(b(u).e("canvas"))},[(I(!0),j(tt,null,wt(ie.urlList,(de,we)=>(I(),j(tt,{key:we},[we===p.value?(I(),j("img",{key:0,ref_for:!0,ref:Be=>f.value[we]=Be,src:de,style:Nt(b(T)),class:ee(b(u).e("img")),crossorigin:ie.crossorigin,onLoad:R,onError:z,onMousedown:M},null,46,["src","crossorigin"])):be("v-if",!0)],64))),128))],2),Ne(ie.$slots,"default")]),_:3},8,["focus-trap-el"])],6)]),_:3})]),_:3},8,["disabled"]))}});var Yvt=vt(Gvt,[["__file","image-viewer.vue"]]);const mDe=dn(Yvt),Xvt=ht({hideOnClickModal:Boolean,src:{type:String,default:""},fit:{type:String,values:["","contain","cover","fill","none","scale-down"],default:""},loading:{type:String,values:["eager","lazy"]},lazy:Boolean,scrollContainer:{type:$e([String,Object])},previewSrcList:{type:$e(Array),default:()=>Eo([])},previewTeleported:Boolean,zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2},minScale:{type:Number,default:.2},maxScale:{type:Number,default:7},showProgress:{type:Boolean,default:!1},crossorigin:{type:$e(String)}}),Jvt={load:e=>e instanceof Event,error:e=>e instanceof Event,switch:e=>Lt(e),close:()=>!0,show:()=>!0},Zvt=ne({name:"ElImage",inheritAttrs:!1}),Qvt=ne({...Zvt,props:Xvt,emits:Jvt,setup(e,{expose:t,emit:n}){const r=e,{t:o}=Un(),a=nt("image"),i=Ug(),s=K(()=>PD(Object.entries(i).filter(([M])=>/^(data-|on[A-Z])/i.test(M)||["id","style"].includes(M)))),l=gT({excludeListeners:!0,excludeKeys:K(()=>Object.keys(s.value))}),u=X(),c=X(!1),d=X(!0),f=X(!1),h=X(),g=X(),p=Nn&&"loading"in HTMLImageElement.prototype;let m;const v=K(()=>[a.e("inner"),_.value&&a.e("preview"),d.value&&a.is("loading")]),y=K(()=>{const{fit:M}=r;return Nn&&M?{objectFit:M}:{}}),_=K(()=>{const{previewSrcList:M}=r;return ct(M)&&M.length>0}),C=K(()=>{const{previewSrcList:M,initialIndex:N}=r;let L=N;return N>M.length-1&&(L=0),L}),S=K(()=>r.loading==="eager"?!1:!p&&r.loading==="lazy"||r.lazy),E=()=>{Nn&&(d.value=!0,c.value=!1,u.value=r.src)};function k(M){d.value=!1,c.value=!1,n("load",M)}function O(M){d.value=!1,c.value=!0,n("error",M)}function T(){Tht(h.value,g.value)&&(E(),F())}const P=$xe(T,200,!0);async function U(){var M;if(!Nn)return;await It();const{scrollContainer:N}=r;_l(N)?g.value=N:$t(N)&&N!==""?g.value=(M=document.querySelector(N))!=null?M:void 0:h.value&&(g.value=Hne(h.value)),g.value&&(m=xr(g,"scroll",P),setTimeout(()=>T(),100))}function F(){!Nn||!g.value||!P||(m==null||m(),g.value=void 0)}function H(){_.value&&(f.value=!0,n("show"))}function R(){f.value=!1,n("close")}function z(M){n("switch",M)}return Ze(()=>r.src,()=>{S.value?(d.value=!0,c.value=!1,F(),U()):E()}),Kt(()=>{S.value?U():E()}),t({showPreview:H}),(M,N)=>(I(),j("div",Dn({ref_key:"container",ref:h},b(s),{class:[b(a).b(),M.$attrs.class]}),[c.value?Ne(M.$slots,"error",{key:0},()=>[w("div",{class:ee(b(a).e("error"))},se(b(o)("el.image.error")),3)]):(I(),j(tt,{key:1},[u.value!==void 0?(I(),j("img",Dn({key:0},b(l),{src:u.value,loading:M.loading,style:b(y),class:b(v),crossorigin:M.crossorigin,onClick:H,onLoad:k,onError:O}),null,16,["src","loading","crossorigin"])):be("v-if",!0),d.value?(I(),j("div",{key:1,class:ee(b(a).e("wrapper"))},[Ne(M.$slots,"placeholder",{},()=>[w("div",{class:ee(b(a).e("placeholder"))},null,2)])],2)):be("v-if",!0)],64)),b(_)?(I(),j(tt,{key:2},[f.value?(I(),Oe(b(mDe),{key:0,"z-index":M.zIndex,"initial-index":b(C),infinite:M.infinite,"zoom-rate":M.zoomRate,"min-scale":M.minScale,"max-scale":M.maxScale,"show-progress":M.showProgress,"url-list":M.previewSrcList,crossorigin:M.crossorigin,"hide-on-click-modal":M.hideOnClickModal,teleported:M.previewTeleported,"close-on-press-escape":M.closeOnPressEscape,onClose:R,onSwitch:z},eu({toolbar:A(L=>[Ne(M.$slots,"toolbar",Hu(Mh(L)))]),default:A(()=>[M.$slots.viewer?(I(),j("div",{key:0},[Ne(M.$slots,"viewer")])):be("v-if",!0)]),_:2},[M.$slots.progress?{name:"progress",fn:A(L=>[Ne(M.$slots,"progress",Hu(Mh(L)))])}:void 0]),1032,["z-index","initial-index","infinite","zoom-rate","min-scale","max-scale","show-progress","url-list","crossorigin","hide-on-click-modal","teleported","close-on-press-escape"])):be("v-if",!0)],64)):be("v-if",!0)],16))}});var emt=vt(Qvt,[["__file","image.vue"]]);const tmt=dn(emt),nmt=ht({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:{type:[Number,null]},readonly:Boolean,disabled:Boolean,size:Aa,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},valueOnClear:{type:[String,Number,null],validator:e=>e===null||Lt(e)||["min","max"].includes(e),default:null},name:String,placeholder:String,precision:{type:Number,validator:e=>e>=0&&e===Number.parseInt(`${e}`,10)},validateEvent:{type:Boolean,default:!0},...ts(["ariaLabel"])}),rmt={[En]:(e,t)=>t!==e,blur:e=>e instanceof FocusEvent,focus:e=>e instanceof FocusEvent,[Ea]:e=>Lt(e)||ni(e),[en]:e=>Lt(e)||ni(e)},omt=ne({name:"ElInputNumber"}),amt=ne({...omt,props:nmt,emits:rmt,setup(e,{expose:t,emit:n}){const r=e,{t:o}=Un(),a=nt("input-number"),i=X(),s=Bn({currentValue:r.modelValue,userInput:null}),{formItem:l}=ws(),u=K(()=>Lt(r.modelValue)&&r.modelValue<=r.min),c=K(()=>Lt(r.modelValue)&&r.modelValue>=r.max),d=K(()=>{const z=v(r.step);return Ln(r.precision)?Math.max(v(r.modelValue),z):(z>r.precision,r.precision)}),f=K(()=>r.controls&&r.controlsPosition==="right"),h=ma(),g=ns(),p=K(()=>{if(s.userInput!==null)return s.userInput;let z=s.currentValue;if(ni(z))return"";if(Lt(z)){if(Number.isNaN(z))return"";Ln(r.precision)||(z=z.toFixed(r.precision))}return z}),m=(z,M)=>{if(Ln(M)&&(M=d.value),M===0)return Math.round(z);let N=String(z);const L=N.indexOf(".");if(L===-1||!N.replace(".","").split("")[L+M])return z;const $=N.length;return N.charAt($-1)==="5"&&(N=`${N.slice(0,Math.max(0,$-1))}6`),Number.parseFloat(Number(N).toFixed(M))},v=z=>{if(ni(z))return 0;const M=z.toString(),N=M.indexOf(".");let L=0;return N!==-1&&(L=M.length-N-1),L},y=(z,M=1)=>Lt(z)?m(z+r.step*M):s.currentValue,_=()=>{if(r.readonly||g.value||c.value)return;const z=Number(p.value)||0,M=y(z);E(M),n(Ea,s.currentValue),H()},C=()=>{if(r.readonly||g.value||u.value)return;const z=Number(p.value)||0,M=y(z,-1);E(M),n(Ea,s.currentValue),H()},S=(z,M)=>{const{max:N,min:L,step:V,precision:Y,stepStrictly:$,valueOnClear:B}=r;NN||WN?N:L,M&&n(en,W)),W},E=(z,M=!0)=>{var N;const L=s.currentValue,V=S(z);if(!M){n(en,V);return}L===V&&z||(s.userInput=null,n(en,V),L!==V&&n(En,V,L),r.validateEvent&&((N=l==null?void 0:l.validate)==null||N.call(l,"change").catch(Y=>void 0)),s.currentValue=V)},k=z=>{s.userInput=z;const M=z===""?null:Number(z);n(Ea,M),E(M,!1)},O=z=>{const M=z!==""?Number(z):"";(Lt(M)&&!Number.isNaN(M)||z==="")&&E(M),H(),s.userInput=null},T=()=>{var z,M;(M=(z=i.value)==null?void 0:z.focus)==null||M.call(z)},P=()=>{var z,M;(M=(z=i.value)==null?void 0:z.blur)==null||M.call(z)},U=z=>{n("focus",z)},F=z=>{var M,N;s.userInput=null,s.currentValue===null&&((M=i.value)!=null&&M.input)&&(i.value.input.value=""),n("blur",z),r.validateEvent&&((N=l==null?void 0:l.validate)==null||N.call(l,"blur").catch(L=>void 0))},H=()=>{s.currentValue!==r.modelValue&&(s.currentValue=r.modelValue)},R=z=>{document.activeElement===z.target&&z.preventDefault()};return Ze(()=>r.modelValue,(z,M)=>{const N=S(z,!0);s.userInput===null&&N!==M&&(s.currentValue=N)},{immediate:!0}),Kt(()=>{var z;const{min:M,max:N,modelValue:L}=r,V=(z=i.value)==null?void 0:z.input;if(V.setAttribute("role","spinbutton"),Number.isFinite(N)?V.setAttribute("aria-valuemax",String(N)):V.removeAttribute("aria-valuemax"),Number.isFinite(M)?V.setAttribute("aria-valuemin",String(M)):V.removeAttribute("aria-valuemin"),V.setAttribute("aria-valuenow",s.currentValue||s.currentValue===0?String(s.currentValue):""),V.setAttribute("aria-disabled",String(g.value)),!Lt(L)&&L!=null){let Y=Number(L);Number.isNaN(Y)&&(Y=null),n(en,Y)}V.addEventListener("wheel",R,{passive:!1})}),gf(()=>{var z,M;const N=(z=i.value)==null?void 0:z.input;N==null||N.setAttribute("aria-valuenow",`${(M=s.currentValue)!=null?M:""}`)}),t({focus:T,blur:P}),(z,M)=>(I(),j("div",{class:ee([b(a).b(),b(a).m(b(h)),b(a).is("disabled",b(g)),b(a).is("without-controls",!z.controls),b(a).is("controls-right",b(f))]),onDragstart:zt(()=>{},["prevent"])},[z.controls?rn((I(),j("span",{key:0,role:"button","aria-label":b(o)("el.inputNumber.decrease"),class:ee([b(a).e("decrease"),b(a).is("disabled",b(u))]),onKeydown:qn(C,["enter"])},[Ne(z.$slots,"decrease-icon",{},()=>[D(b(Tt),null,{default:A(()=>[b(f)?(I(),Oe(b(lc),{key:0})):(I(),Oe(b(h5e),{key:1}))]),_:1})])],42,["aria-label","onKeydown"])),[[b(qM),C]]):be("v-if",!0),z.controls?rn((I(),j("span",{key:1,role:"button","aria-label":b(o)("el.inputNumber.increase"),class:ee([b(a).e("increase"),b(a).is("disabled",b(c))]),onKeydown:qn(_,["enter"])},[Ne(z.$slots,"increase-icon",{},()=>[D(b(Tt),null,{default:A(()=>[b(f)?(I(),Oe(b(mC),{key:0})):(I(),Oe(b(ea),{key:1}))]),_:1})])],42,["aria-label","onKeydown"])),[[b(qM),_]]):be("v-if",!0),D(b(fo),{id:z.id,ref_key:"input",ref:i,type:"number",step:z.step,"model-value":b(p),placeholder:z.placeholder,readonly:z.readonly,disabled:b(g),size:b(h),max:z.max,min:z.min,name:z.name,"aria-label":z.ariaLabel,"validate-event":!1,onKeydown:[qn(zt(_,["prevent"]),["up"]),qn(zt(C,["prevent"]),["down"])],onBlur:F,onFocus:U,onInput:k,onChange:O},eu({_:2},[z.$slots.prefix?{name:"prefix",fn:A(()=>[Ne(z.$slots,"prefix")])}:void 0,z.$slots.suffix?{name:"suffix",fn:A(()=>[Ne(z.$slots,"suffix")])}:void 0]),1032,["id","step","model-value","placeholder","readonly","disabled","size","max","min","name","aria-label","onKeydown"])],42,["onDragstart"]))}});var imt=vt(amt,[["__file","input-number.vue"]]);const Kg=dn(imt),smt=ht({modelValue:{type:$e(Array)},max:Number,tagType:{...Og.type,default:"info"},tagEffect:Og.effect,trigger:{type:$e(String),default:St.enter},draggable:{type:Boolean,default:!1},delimiter:{type:[String,RegExp],default:""},size:Aa,clearable:Boolean,disabled:{type:Boolean,default:void 0},validateEvent:{type:Boolean,default:!0},readonly:Boolean,autofocus:Boolean,id:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},placeholder:String,autocomplete:{type:String,default:"off"},saveOnBlur:{type:Boolean,default:!0},ariaLabel:String}),lmt={[en]:e=>ct(e)||Ln(e),[En]:e=>ct(e)||Ln(e),[Ea]:e=>$t(e),"add-tag":e=>$t(e),"remove-tag":e=>$t(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0};function umt({props:e,emit:t,formItem:n}){const r=ns(),o=ma(),a=Tr(),i=X(),s=K(()=>["small"].includes(o.value)?"small":"default"),l=K(()=>{var T;return(T=e.modelValue)!=null&&T.length?void 0:e.placeholder}),u=K(()=>!(e.readonly||r.value)),c=K(()=>{var T,P;return Ln(e.max)?!1:((P=(T=e.modelValue)==null?void 0:T.length)!=null?P:0)>=e.max}),d=T=>{var P,U;if(c.value){i.value=void 0;return}if(!S.value){if(e.delimiter){const F=(P=i.value)==null?void 0:P.replace(e.delimiter,"");(F==null?void 0:F.length)!==((U=i.value)==null?void 0:U.length)&&(i.value=F,h())}t(Ea,T.target.value)}},f=T=>{var P;if(!S.value)switch(T.code){case e.trigger:T.preventDefault(),T.stopPropagation(),h();break;case St.numpadEnter:e.trigger===St.enter&&(T.preventDefault(),T.stopPropagation(),h());break;case St.backspace:!i.value&&((P=e.modelValue)!=null&&P.length)&&(T.preventDefault(),T.stopPropagation(),g(e.modelValue.length-1));break}},h=()=>{var T,P;const U=(T=i.value)==null?void 0:T.trim();if(!U||c.value)return;const F=[...(P=e.modelValue)!=null?P:[],U];t(en,F),t(En,F),t("add-tag",U),i.value=void 0},g=T=>{var P;const U=((P=e.modelValue)!=null?P:[]).slice(),[F]=U.splice(T,1);t(en,U),t(En,U),t("remove-tag",F)},p=()=>{i.value=void 0,t(en,void 0),t(En,void 0),t("clear")},m=(T,P,U)=>{var F;const H=((F=e.modelValue)!=null?F:[]).slice(),[R]=H.splice(T,1),z=P>T&&U==="before"?-1:P{var T;(T=a.value)==null||T.focus()},y=()=>{var T;(T=a.value)==null||T.blur()},{wrapperRef:_,isFocused:C}=t1(a,{beforeFocus(){return r.value},afterBlur(){var T;e.saveOnBlur?h():i.value=void 0,e.validateEvent&&((T=n==null?void 0:n.validate)==null||T.call(n,"blur").catch(P=>void 0))}}),{isComposing:S,handleCompositionStart:E,handleCompositionUpdate:k,handleCompositionEnd:O}=vT({afterComposition:d});return Ze(()=>e.modelValue,()=>{var T;e.validateEvent&&((T=n==null?void 0:n.validate)==null||T.call(n,En).catch(P=>void 0))}),{inputRef:a,wrapperRef:_,isFocused:C,isComposing:S,inputValue:i,size:o,tagSize:s,placeholder:l,closable:u,disabled:r,inputLimit:c,handleDragged:m,handleInput:d,handleKeydown:f,handleAddTag:h,handleRemoveTag:g,handleClear:p,handleCompositionStart:E,handleCompositionUpdate:k,handleCompositionEnd:O,focus:v,blur:y}}function cmt(){const e=X(!1);return{hovering:e,handleMouseEnter:()=>{e.value=!0},handleMouseLeave:()=>{e.value=!1}}}function Lre(){const e=Tr(),t=X(0),n=11,r=K(()=>({minWidth:`${Math.max(t.value,n)}px`}));return co(e,()=>{var a,i;t.value=(i=(a=e.value)==null?void 0:a.getBoundingClientRect().width)!=null?i:0}),{calculatorRef:e,calculatorWidth:t,inputStyle:r}}function dmt({wrapperRef:e,handleDragged:t,afterDragged:n}){const r=nt("input-tag"),o=Tr(),a=X(!1);let i,s,l,u;function c(g){return`.${r.e("inner")} .${r.namespace.value}-tag:nth-child(${g+1})`}function d(g,p){i=p,s=e.value.querySelector(c(p)),s&&(s.style.opacity="0.5"),g.dataTransfer.effectAllowed="move"}function f(g,p){if(l=p,g.preventDefault(),g.dataTransfer.dropEffect="move",Ln(i)||i===p){a.value=!1;return}const m=e.value.querySelector(c(p)).getBoundingClientRect(),v=i+1!==p,y=i-1!==p,_=g.clientX-m.left,C=v?y?.5:1:-1,S=y?v?.5:0:1;_<=m.width*C?u="before":_>m.width*S?u="after":u=void 0;const E=e.value.querySelector(`.${r.e("inner")}`),k=E.getBoundingClientRect(),O=Number.parseFloat(lg(E,"gap"))/2,T=m.top-k.top;let P=-9999;if(u==="before")P=Math.max(m.left-k.left-O,Math.floor(-O/2));else if(u==="after"){const U=m.right-k.left;P=U+(k.width===U?Math.floor(O/2):O)}Gxe(o.value,{top:`${T}px`,left:`${P}px`}),a.value=!!u}function h(g){g.preventDefault(),s&&(s.style.opacity=""),u&&!Ln(i)&&!Ln(l)&&i!==l&&t(i,l,u),a.value=!1,i=void 0,s=null,l=void 0,u=void 0,n==null||n()}return{dropIndicatorRef:o,showDropIndicator:a,handleDragStart:d,handleDragOver:f,handleDragEnd:h}}function fmt({props:e,isFocused:t,hovering:n,disabled:r,inputValue:o,size:a,validateState:i,validateIcon:s,needStatusIcon:l}){const u=Ug(),c=La(),d=nt("input-tag"),f=nt("input"),h=K(()=>[d.b(),d.is("focused",t.value),d.is("hovering",n.value),d.is("disabled",r.value),d.m(a.value),d.e("wrapper"),u.class]),g=K(()=>[u.style]),p=K(()=>{var y,_;return[d.e("inner"),d.is("draggable",e.draggable),d.is("left-space",!((y=e.modelValue)!=null&&y.length)&&!c.prefix),d.is("right-space",!((_=e.modelValue)!=null&&_.length)&&!v.value)]}),m=K(()=>{var y;return e.clearable&&!r.value&&!e.readonly&&(((y=e.modelValue)==null?void 0:y.length)||o.value)&&(t.value||n.value)}),v=K(()=>c.suffix||m.value||i.value&&s.value&&l.value);return{ns:d,nsInput:f,containerKls:h,containerStyle:g,innerKls:p,showClear:m,showSuffix:v}}const hmt=ne({name:"ElInputTag",inheritAttrs:!1}),pmt=ne({...hmt,props:smt,emits:lmt,setup(e,{expose:t,emit:n}){const r=e,o=gT(),a=La(),{form:i,formItem:s}=ws(),{inputId:l}=vd(r,{formItemContext:s}),u=K(()=>{var ae;return(ae=i==null?void 0:i.statusIcon)!=null?ae:!1}),c=K(()=>(s==null?void 0:s.validateState)||""),d=K(()=>c.value&&$L[c.value]),{inputRef:f,wrapperRef:h,isFocused:g,inputValue:p,size:m,tagSize:v,placeholder:y,closable:_,disabled:C,handleDragged:S,handleInput:E,handleKeydown:k,handleRemoveTag:O,handleClear:T,handleCompositionStart:P,handleCompositionUpdate:U,handleCompositionEnd:F,focus:H,blur:R}=umt({props:r,emit:n,formItem:s}),{hovering:z,handleMouseEnter:M,handleMouseLeave:N}=cmt(),{calculatorRef:L,inputStyle:V}=Lre(),{dropIndicatorRef:Y,showDropIndicator:$,handleDragStart:B,handleDragOver:W,handleDragEnd:J}=dmt({wrapperRef:h,handleDragged:S,afterDragged:H}),{ns:oe,nsInput:ie,containerKls:Z,containerStyle:de,innerKls:we,showClear:Be,showSuffix:ke}=fmt({props:r,hovering:z,isFocused:g,inputValue:p,disabled:C,size:m,validateState:c,validateIcon:d,needStatusIcon:u});return t({focus:H,blur:R}),(ae,le)=>(I(),j("div",{ref_key:"wrapperRef",ref:h,class:ee(b(Z)),style:Nt(b(de)),onMouseenter:b(M),onMouseleave:b(N)},[b(a).prefix?(I(),j("div",{key:0,class:ee(b(oe).e("prefix"))},[Ne(ae.$slots,"prefix")],2)):be("v-if",!0),w("div",{class:ee(b(we))},[(I(!0),j(tt,null,wt(ae.modelValue,(q,pe)=>(I(),Oe(b(Si),{key:pe,size:b(v),closable:b(_),type:ae.tagType,effect:ae.tagEffect,draggable:b(_)&&ae.draggable,"disable-transitions":"",onClose:he=>b(O)(pe),onDragstart:he=>b(B)(he,pe),onDragover:he=>b(W)(he,pe),onDragend:b(J),onDrop:zt(()=>{},["stop"])},{default:A(()=>[Ne(ae.$slots,"tag",{value:q,index:pe},()=>[ce(se(q),1)])]),_:2},1032,["size","closable","type","effect","draggable","onClose","onDragstart","onDragover","onDragend","onDrop"]))),128)),w("div",{class:ee(b(oe).e("input-wrapper"))},[rn(w("input",Dn({id:b(l),ref_key:"inputRef",ref:f,"onUpdate:modelValue":q=>kr(p)?p.value=q:null},b(o),{type:"text",minlength:ae.minlength,maxlength:ae.maxlength,disabled:b(C),readonly:ae.readonly,autocomplete:ae.autocomplete,tabindex:ae.tabindex,placeholder:b(y),autofocus:ae.autofocus,ariaLabel:ae.ariaLabel,class:b(oe).e("input"),style:b(V),onCompositionstart:b(P),onCompositionupdate:b(U),onCompositionend:b(F),onInput:b(E),onKeydown:b(k)}),null,16,["id","onUpdate:modelValue","minlength","maxlength","disabled","readonly","autocomplete","tabindex","placeholder","autofocus","ariaLabel","onCompositionstart","onCompositionupdate","onCompositionend","onInput","onKeydown"]),[[mL,b(p)]]),w("span",{ref_key:"calculatorRef",ref:L,"aria-hidden":"true",class:ee(b(oe).e("input-calculator")),textContent:se(b(p))},null,10,["textContent"])],2),rn(w("div",{ref_key:"dropIndicatorRef",ref:Y,class:ee(b(oe).e("drop-indicator"))},null,2),[[Pn,b($)]])],2),b(ke)?(I(),j("div",{key:1,class:ee(b(oe).e("suffix"))},[Ne(ae.$slots,"suffix"),b(Be)?(I(),Oe(b(Tt),{key:0,class:ee([b(oe).e("icon"),b(oe).e("clear")]),onMousedown:zt(b(fr),["prevent"]),onClick:b(T)},{default:A(()=>[D(b(Yh))]),_:1},8,["class","onMousedown","onClick"])):be("v-if",!0),b(c)&&b(d)&&b(u)?(I(),Oe(b(Tt),{key:1,class:ee([b(ie).e("icon"),b(ie).e("validateIcon"),b(ie).is("loading",b(c)==="validating")])},{default:A(()=>[(I(),Oe(_n(b(d))))]),_:1},8,["class"])):be("v-if",!0)],2)):be("v-if",!0)],46,["onMouseenter","onMouseleave"]))}});var gmt=vt(pmt,[["__file","input-tag.vue"]]);const vmt=dn(gmt),mmt=ht({type:{type:String,values:["primary","success","warning","info","danger","default"],default:void 0},underline:{type:[Boolean,String],values:[!0,!1,"always","never","hover"],default:void 0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:mr}}),ymt={click:e=>e instanceof MouseEvent},bmt=ne({name:"ElLink"}),_mt=ne({...bmt,props:mmt,emits:ymt,setup(e,{emit:t}){const n=e,r=uT("link");mg({scope:"el-link",from:"The underline option (boolean)",replacement:"'always' | 'hover' | 'never'",version:"3.0.0",ref:"https://element-plus.org/en-US/component/link.html#underline"},K(()=>hr(n.underline)));const o=nt("link"),a=K(()=>{var l,u,c;return[o.b(),o.m((c=(u=n.type)!=null?u:(l=r.value)==null?void 0:l.type)!=null?c:"default"),o.is("disabled",n.disabled),o.is("underline",i.value==="always"),o.is("hover-underline",i.value==="hover"&&!n.disabled)]}),i=K(()=>{var l,u,c;return hr(n.underline)?n.underline?"hover":"never":(c=(u=n.underline)!=null?u:(l=r.value)==null?void 0:l.underline)!=null?c:"hover"});function s(l){n.disabled||t("click",l)}return(l,u)=>(I(),j("a",{class:ee(b(a)),href:l.disabled||!l.href?void 0:l.href,target:l.disabled||!l.href?void 0:l.target,onClick:s},[l.icon?(I(),Oe(b(Tt),{key:0},{default:A(()=>[(I(),Oe(_n(l.icon)))]),_:1})):be("v-if",!0),l.$slots.default?(I(),j("span",{key:1,class:ee(b(o).e("inner"))},[Ne(l.$slots,"default")],2)):be("v-if",!0),l.$slots.icon?Ne(l.$slots,"icon",{key:2}):be("v-if",!0)],10,["href","target"]))}});var wmt=vt(_mt,[["__file","link.vue"]]);const Cmt=dn(wmt);let xmt=class{constructor(t,n){this.parent=t,this.domNode=n,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(t){t===this.subMenuItems.length?t=0:t<0&&(t=this.subMenuItems.length-1),this.subMenuItems[t].focus(),this.subIndex=t}addListeners(){const t=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,n=>{n.addEventListener("keydown",r=>{let o=!1;switch(r.code){case St.down:{this.gotoSubIndex(this.subIndex+1),o=!0;break}case St.up:{this.gotoSubIndex(this.subIndex-1),o=!0;break}case St.tab:{jF(t,"mouseleave");break}case St.enter:case St.numpadEnter:case St.space:{o=!0,r.currentTarget.click();break}}return o&&(r.preventDefault(),r.stopPropagation()),!1})})}},Smt=class{constructor(t,n){this.domNode=t,this.submenu=null,this.submenu=null,this.init(n)}init(t){this.domNode.setAttribute("tabindex","0");const n=this.domNode.querySelector(`.${t}-menu`);n&&(this.submenu=new xmt(this,n)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",t=>{let n=!1;switch(t.code){case St.down:{jF(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case St.up:{jF(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case St.tab:{jF(t.currentTarget,"mouseleave");break}case St.enter:case St.numpadEnter:case St.space:{n=!0,t.currentTarget.click();break}}n&&t.preventDefault()})}},Dmt=class{constructor(t,n){this.domNode=t,this.init(n)}init(t){const n=this.domNode.childNodes;Array.from(n).forEach(r=>{r.nodeType===1&&new Smt(r,t)})}};const Emt=ne({name:"ElMenuCollapseTransition"}),kmt=ne({...Emt,setup(e){const t=nt("menu"),n={onBeforeEnter:r=>r.style.opacity="0.2",onEnter(r,o){Yc(r,`${t.namespace.value}-opacity-transition`),r.style.opacity="1",o()},onAfterEnter(r){Hs(r,`${t.namespace.value}-opacity-transition`),r.style.opacity=""},onBeforeLeave(r){r.dataset||(r.dataset={}),jl(r,t.m("collapse"))?(Hs(r,t.m("collapse")),r.dataset.oldOverflow=r.style.overflow,r.dataset.scrollWidth=r.clientWidth.toString(),Yc(r,t.m("collapse"))):(Yc(r,t.m("collapse")),r.dataset.oldOverflow=r.style.overflow,r.dataset.scrollWidth=r.clientWidth.toString(),Hs(r,t.m("collapse"))),r.style.width=`${r.scrollWidth}px`,r.style.overflow="hidden"},onLeave(r){Yc(r,"horizontal-collapse-transition"),r.style.width=`${r.dataset.scrollWidth}px`}};return(r,o)=>(I(),Oe(xi,Dn({mode:"out-in"},b(n)),{default:A(()=>[Ne(r.$slots,"default")]),_:3},16))}});var Amt=vt(kmt,[["__file","menu-collapse-transition.vue"]]);function yDe(e,t){const n=K(()=>{let o=e.parent;const a=[t.value];for(;o.type.name!=="ElMenu";)o.props.index&&a.unshift(o.props.index),o=o.parent;return a});return{parentMenu:K(()=>{let o=e.parent;for(;o&&!["ElMenu","ElSubMenu"].includes(o.type.name);)o=o.parent;return o}),indexPath:n}}function Tmt(e){return K(()=>{const n=e.backgroundColor;return n?new u3(n).shade(20).toString():""})}const bDe=(e,t)=>{const n=nt("menu");return K(()=>n.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":Tmt(e).value||"","active-color":e.activeTextColor||"",level:`${t}`}))},Ure="rootMenu",XM="subMenu:",Omt=ht({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:mr},expandOpenIcon:{type:mr},collapseCloseIcon:{type:mr},collapseOpenIcon:{type:mr}}),rj="ElSubMenu";var Vre=ne({name:rj,props:Omt,setup(e,{slots:t,expose:n}){const r=bn(),{indexPath:o,parentMenu:a}=yDe(r,K(()=>e.index)),i=nt("menu"),s=nt("sub-menu"),l=kt(Ure);l||oa(rj,"can not inject root menu");const u=kt(`${XM}${a.value.uid}`);u||oa(rj,"can not inject sub menu");const c=X({}),d=X({});let f;const h=X(!1),g=X(),p=X(),m=K(()=>O.value==="horizontal"&&y.value?"bottom-start":"right-start"),v=K(()=>O.value==="horizontal"&&y.value||O.value==="vertical"&&!l.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?E.value?e.expandOpenIcon:e.expandCloseIcon:lc:e.collapseCloseIcon&&e.collapseOpenIcon?E.value?e.collapseOpenIcon:e.collapseCloseIcon:_i),y=K(()=>u.level===0),_=K(()=>{const $=e.teleported;return Ln($)?y.value:$}),C=K(()=>l.props.collapse?`${i.namespace.value}-zoom-in-left`:`${i.namespace.value}-zoom-in-top`),S=K(()=>O.value==="horizontal"&&y.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),E=K(()=>l.openedMenus.includes(e.index)),k=K(()=>[...Object.values(c.value),...Object.values(d.value)].some(({active:$})=>$)),O=K(()=>l.props.mode),T=K(()=>l.props.persistent),P=Bn({index:e.index,indexPath:o,active:k}),U=bDe(l.props,u.level+1),F=K(()=>{var $;return($=e.popperOffset)!=null?$:l.props.popperOffset}),H=K(()=>{var $;return($=e.popperClass)!=null?$:l.props.popperClass}),R=K(()=>{var $;return($=e.showTimeout)!=null?$:l.props.showTimeout}),z=K(()=>{var $;return($=e.hideTimeout)!=null?$:l.props.hideTimeout}),M=()=>{var $,B,W;return(W=(B=($=p.value)==null?void 0:$.popperRef)==null?void 0:B.popperInstanceRef)==null?void 0:W.destroy()},N=$=>{$||M()},L=()=>{l.props.menuTrigger==="hover"&&l.props.mode==="horizontal"||l.props.collapse&&l.props.mode==="vertical"||e.disabled||l.handleSubMenuClick({index:e.index,indexPath:o.value,active:k.value})},V=($,B=R.value)=>{var W;if($.type!=="focus"){if(l.props.menuTrigger==="click"&&l.props.mode==="horizontal"||!l.props.collapse&&l.props.mode==="vertical"||e.disabled){u.mouseInChild.value=!0;return}u.mouseInChild.value=!0,f==null||f(),{stop:f}=jb(()=>{l.openMenu(e.index,o.value)},B),_.value&&((W=a.value.vnode.el)==null||W.dispatchEvent(new MouseEvent("mouseenter")))}},Y=($=!1)=>{var B;if(l.props.menuTrigger==="click"&&l.props.mode==="horizontal"||!l.props.collapse&&l.props.mode==="vertical"){u.mouseInChild.value=!1;return}f==null||f(),u.mouseInChild.value=!1,{stop:f}=jb(()=>!h.value&&l.closeMenu(e.index,o.value),z.value),_.value&&$&&((B=u.handleMouseleave)==null||B.call(u,!0))};Ze(()=>l.props.collapse,$=>N(!!$));{const $=W=>{d.value[W.index]=W},B=W=>{delete d.value[W.index]};Fn(`${XM}${r.uid}`,{addSubMenu:$,removeSubMenu:B,handleMouseleave:Y,mouseInChild:h,level:u.level+1})}return n({opened:E}),Kt(()=>{l.addSubMenu(P),u.addSubMenu(P)}),Ar(()=>{u.removeSubMenu(P),l.removeSubMenu(P)}),()=>{var $;const B=[($=t.title)==null?void 0:$.call(t),Vt(Tt,{class:s.e("icon-arrow"),style:{transform:E.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&l.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>$t(v.value)?Vt(r.appContext.components[v.value]):Vt(v.value)})],W=l.isMenuPopup?Vt(Yi,{ref:p,visible:E.value,effect:"light",pure:!0,offset:F.value,showArrow:!1,persistent:T.value,popperClass:H.value,placement:m.value,teleported:_.value,fallbackPlacements:S.value,transition:C.value,gpuAcceleration:!1},{content:()=>{var J;return Vt("div",{class:[i.m(O.value),i.m("popup-container"),H.value],onMouseenter:oe=>V(oe,100),onMouseleave:()=>Y(!0),onFocus:oe=>V(oe,100)},[Vt("ul",{class:[i.b(),i.m("popup"),i.m(`popup-${m.value}`)],style:U.value},[(J=t.default)==null?void 0:J.call(t)])])},default:()=>Vt("div",{class:s.e("title"),onClick:L},B)}):Vt(tt,{},[Vt("div",{class:s.e("title"),ref:g,onClick:L},B),Vt(zL,{},{default:()=>{var J;return rn(Vt("ul",{role:"menu",class:[i.b(),i.m("inline")],style:U.value},[(J=t.default)==null?void 0:J.call(t)]),[[Pn,E.value]])}})]);return Vt("li",{class:[s.b(),s.is("active",k.value),s.is("opened",E.value),s.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:E.value,onMouseenter:V,onMouseleave:()=>Y(),onFocus:V},[W])}}});const Fmt=ht({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:$e(Array),default:()=>Eo([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:mr,default:()=>p5e},popperEffect:{type:$e(String),default:"dark"},popperClass:String,showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},persistent:{type:Boolean,default:!0}}),oj=e=>ct(e)&&e.every(t=>$t(t)),Imt={close:(e,t)=>$t(e)&&oj(t),open:(e,t)=>$t(e)&&oj(t),select:(e,t,n,r)=>$t(e)&&oj(t)&&vn(n)&&(Ln(r)||r instanceof Promise)};var Mmt=ne({name:"ElMenu",props:Fmt,emits:Imt,setup(e,{emit:t,slots:n,expose:r}){const o=bn(),a=o.appContext.config.globalProperties.$router,i=X(),s=nt("menu"),l=nt("sub-menu"),u=X(-1),c=X(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),d=X(e.defaultActive),f=X({}),h=X({}),g=K(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),p=()=>{const z=d.value&&f.value[d.value];if(!z||e.mode==="horizontal"||e.collapse)return;z.indexPath.forEach(N=>{const L=h.value[N];L&&m(N,L.indexPath)})},m=(z,M)=>{c.value.includes(z)||(e.uniqueOpened&&(c.value=c.value.filter(N=>M.includes(N))),c.value.push(z),t("open",z,M))},v=z=>{const M=c.value.indexOf(z);M!==-1&&c.value.splice(M,1)},y=(z,M)=>{v(z),t("close",z,M)},_=({index:z,indexPath:M})=>{c.value.includes(z)?y(z,M):m(z,M)},C=z=>{(e.mode==="horizontal"||e.collapse)&&(c.value=[]);const{index:M,indexPath:N}=z;if(!(ni(M)||ni(N)))if(e.router&&a){const L=z.route||M,V=a.push(L).then(Y=>(Y||(d.value=M),Y));t("select",M,N,{index:M,indexPath:N,route:L},V)}else d.value=M,t("select",M,N,{index:M,indexPath:N})},S=z=>{var M;const N=f.value,L=N[z]||d.value&&N[d.value]||N[e.defaultActive];d.value=(M=L==null?void 0:L.index)!=null?M:z},E=z=>{const M=getComputedStyle(z),N=Number.parseInt(M.marginLeft,10),L=Number.parseInt(M.marginRight,10);return z.offsetWidth+N+L||0},k=()=>{var z,M;if(!i.value)return-1;const N=Array.from((M=(z=i.value)==null?void 0:z.childNodes)!=null?M:[]).filter(oe=>oe.nodeName!=="#text"||oe.nodeValue),L=64,V=getComputedStyle(i.value),Y=Number.parseInt(V.paddingLeft,10),$=Number.parseInt(V.paddingRight,10),B=i.value.clientWidth-Y-$;let W=0,J=0;return N.forEach((oe,ie)=>{oe.nodeName!=="#comment"&&(W+=E(oe),W<=B-L&&(J=ie+1))}),J===N.length?-1:J},O=z=>h.value[z].indexPath,T=(z,M=33.34)=>{let N;return()=>{N&&clearTimeout(N),N=setTimeout(()=>{z()},M)}};let P=!0;const U=()=>{if(u.value===k())return;const z=()=>{u.value=-1,It(()=>{u.value=k()})};P?z():T(z)(),P=!1};Ze(()=>e.defaultActive,z=>{f.value[z]||(d.value=""),S(z)}),Ze(()=>e.collapse,z=>{z&&(c.value=[])}),Ze(f.value,p);let F;Wi(()=>{e.mode==="horizontal"&&e.ellipsis?F=co(i,U).stop:F==null||F()});const H=X(!1);{const z=V=>{h.value[V.index]=V},M=V=>{delete h.value[V.index]};Fn(Ure,Bn({props:e,openedMenus:c,items:f,subMenus:h,activeIndex:d,isMenuPopup:g,addMenuItem:V=>{f.value[V.index]=V},removeMenuItem:V=>{delete f.value[V.index]},addSubMenu:z,removeSubMenu:M,openMenu:m,closeMenu:y,handleMenuItemClick:C,handleSubMenuClick:_})),Fn(`${XM}${o.uid}`,{addSubMenu:z,removeSubMenu:M,mouseInChild:H,level:0})}Kt(()=>{e.mode==="horizontal"&&new Dmt(o.vnode.el,s.namespace.value)}),r({open:M=>{const{indexPath:N}=h.value[M];N.forEach(L=>m(L,N))},close:v,updateActiveIndex:S,handleResize:U});const R=bDe(e,0);return()=>{var z,M;let N=(M=(z=n.default)==null?void 0:z.call(n))!=null?M:[];const L=[];if(e.mode==="horizontal"&&i.value){const $=mh(N),B=u.value===-1?$:$.slice(0,u.value),W=u.value===-1?[]:$.slice(u.value);W!=null&&W.length&&e.ellipsis&&(N=B,L.push(Vt(Vre,{index:"sub-menu-more",class:l.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>Vt(Tt,{class:l.e("icon-more")},{default:()=>Vt(e.ellipsisIcon)}),default:()=>W})))}const V=e.closeOnClickOutside?[[Fg,()=>{c.value.length&&(H.value||(c.value.forEach($=>t("close",$,O($))),c.value=[]))}]]:[],Y=rn(Vt("ul",{key:String(e.collapse),role:"menubar",ref:i,style:R.value,class:{[s.b()]:!0,[s.m(e.mode)]:!0,[s.m("collapse")]:e.collapse}},[...N,...L]),V);return e.collapseTransition&&e.mode==="vertical"?Vt(Amt,()=>Y):Y}}});const Pmt=ht({index:{type:$e([String,null]),default:null},route:{type:$e([String,Object])},disabled:Boolean}),$mt={click:e=>$t(e.index)&&ct(e.indexPath)},XY="ElMenuItem",Bmt=ne({name:XY}),Rmt=ne({...Bmt,props:Pmt,emits:$mt,setup(e,{expose:t,emit:n}){const r=e;ql(r.index)&&void 0;const o=bn(),a=kt(Ure),i=nt("menu"),s=nt("menu-item");a||oa(XY,"can not inject root menu");const{parentMenu:l,indexPath:u}=yDe(o,tr(r,"index")),c=kt(`${XM}${l.value.uid}`);c||oa(XY,"can not inject sub menu");const d=K(()=>r.index===a.activeIndex),f=Bn({index:r.index,indexPath:u,active:d}),h=()=>{r.disabled||(a.handleMenuItemClick({index:r.index,indexPath:u.value,route:r.route}),n("click",f))};return Kt(()=>{c.addSubMenu(f),a.addMenuItem(f)}),Ar(()=>{c.removeSubMenu(f),a.removeMenuItem(f)}),t({parentMenu:l,rootMenu:a,active:d,nsMenu:i,nsMenuItem:s,handleClick:h}),(g,p)=>(I(),j("li",{class:ee([b(s).b(),b(s).is("active",b(d)),b(s).is("disabled",g.disabled)]),role:"menuitem",tabindex:"-1",onClick:h},[b(l).type.name==="ElMenu"&&b(a).props.collapse&&g.$slots.title?(I(),Oe(b(Yi),{key:0,effect:b(a).props.popperEffect,placement:"right","fallback-placements":["left"],persistent:b(a).props.persistent},{content:A(()=>[Ne(g.$slots,"title")]),default:A(()=>[w("div",{class:ee(b(i).be("tooltip","trigger"))},[Ne(g.$slots,"default")],2)]),_:3},8,["effect","persistent"])):(I(),j(tt,{key:1},[Ne(g.$slots,"default"),Ne(g.$slots,"title")],64))],2))}});var _De=vt(Rmt,[["__file","menu-item.vue"]]);const Nmt={title:String},Lmt=ne({name:"ElMenuItemGroup"}),Umt=ne({...Lmt,props:Nmt,setup(e){const t=nt("menu-item-group");return(n,r)=>(I(),j("li",{class:ee(b(t).b())},[w("div",{class:ee(b(t).e("title"))},[n.$slots.title?Ne(n.$slots,"title",{key:1}):(I(),j(tt,{key:0},[ce(se(n.title),1)],64))],2),w("ul",null,[Ne(n.$slots,"default")])],2))}});var wDe=vt(Umt,[["__file","menu-item-group.vue"]]);const CDe=dn(Mmt,{MenuItem:_De,MenuItemGroup:wDe,SubMenu:Vre}),xDe=vo(_De),Vmt=vo(wDe),zmt=vo(Vre),jmt=ht({icon:{type:mr,default:()=>t5e},title:String,content:{type:String,default:""}}),Hmt={back:()=>!0},Wmt=ne({name:"ElPageHeader"}),qmt=ne({...Wmt,props:jmt,emits:Hmt,setup(e,{emit:t}){const{t:n}=Un(),r=nt("page-header");function o(){t("back")}return(a,i)=>(I(),j("div",{class:ee([b(r).b(),{[b(r).m("has-breadcrumb")]:!!a.$slots.breadcrumb,[b(r).m("has-extra")]:!!a.$slots.extra,[b(r).is("contentful")]:!!a.$slots.default}])},[a.$slots.breadcrumb?(I(),j("div",{key:0,class:ee(b(r).e("breadcrumb"))},[Ne(a.$slots,"breadcrumb")],2)):be("v-if",!0),w("div",{class:ee(b(r).e("header"))},[w("div",{class:ee(b(r).e("left"))},[w("div",{class:ee(b(r).e("back")),role:"button",tabindex:"0",onClick:o},[a.icon||a.$slots.icon?(I(),j("div",{key:0,"aria-label":a.title||b(n)("el.pageHeader.title"),class:ee(b(r).e("icon"))},[Ne(a.$slots,"icon",{},()=>[a.icon?(I(),Oe(b(Tt),{key:0},{default:A(()=>[(I(),Oe(_n(a.icon)))]),_:1})):be("v-if",!0)])],10,["aria-label"])):be("v-if",!0),w("div",{class:ee(b(r).e("title"))},[Ne(a.$slots,"title",{},()=>[ce(se(a.title||b(n)("el.pageHeader.title")),1)])],2)],2),D(b($re),{direction:"vertical"}),w("div",{class:ee(b(r).e("content"))},[Ne(a.$slots,"content",{},()=>[ce(se(a.content),1)])],2)],2),a.$slots.extra?(I(),j("div",{key:0,class:ee(b(r).e("extra"))},[Ne(a.$slots,"extra")],2)):be("v-if",!0)],2),a.$slots.default?(I(),j("div",{key:1,class:ee(b(r).e("main"))},[Ne(a.$slots,"default")],2)):be("v-if",!0)],2))}});var Kmt=vt(qmt,[["__file","page-header.vue"]]);const Gmt=dn(Kmt),SDe=Symbol("elPaginationKey"),Ymt=ht({disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String},prevIcon:{type:mr}}),Xmt={click:e=>e instanceof MouseEvent},Jmt=ne({name:"ElPaginationPrev"}),Zmt=ne({...Jmt,props:Ymt,emits:Xmt,setup(e){const t=e,{t:n}=Un(),r=K(()=>t.disabled||t.currentPage<=1);return(o,a)=>(I(),j("button",{type:"button",class:"btn-prev",disabled:b(r),"aria-label":o.prevText||b(n)("el.pagination.prev"),"aria-disabled":b(r),onClick:i=>o.$emit("click",i)},[o.prevText?(I(),j("span",{key:0},se(o.prevText),1)):(I(),Oe(b(Tt),{key:1},{default:A(()=>[(I(),Oe(_n(o.prevIcon)))]),_:1}))],8,["disabled","aria-label","aria-disabled","onClick"]))}});var Qmt=vt(Zmt,[["__file","prev.vue"]]);const e1t=ht({disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String},nextIcon:{type:mr}}),t1t=ne({name:"ElPaginationNext"}),n1t=ne({...t1t,props:e1t,emits:["click"],setup(e){const t=e,{t:n}=Un(),r=K(()=>t.disabled||t.currentPage===t.pageCount||t.pageCount===0);return(o,a)=>(I(),j("button",{type:"button",class:"btn-next",disabled:b(r),"aria-label":o.nextText||b(n)("el.pagination.next"),"aria-disabled":b(r),onClick:i=>o.$emit("click",i)},[o.nextText?(I(),j("span",{key:0},se(o.nextText),1)):(I(),Oe(b(Tt),{key:1},{default:A(()=>[(I(),Oe(_n(o.nextIcon)))]),_:1}))],8,["disabled","aria-label","aria-disabled","onClick"]))}});var r1t=vt(n1t,[["__file","next.vue"]]);const DDe=Symbol("ElSelectGroup"),wC=Symbol("ElSelect"),JY="ElOption",o1t=ht({value:{type:[String,Number,Boolean,Object],required:!0},label:{type:[String,Number]},created:Boolean,disabled:Boolean});function a1t(e,t){const n=kt(wC);n||oa(JY,"usage: ");const r=kt(DDe,{disabled:!1}),o=K(()=>c(Vs(n.props.modelValue),e.value)),a=K(()=>{var h;if(n.props.multiple){const g=Vs((h=n.props.modelValue)!=null?h:[]);return!o.value&&g.length>=n.props.multipleLimit&&n.props.multipleLimit>0}else return!1}),i=K(()=>{var h;return(h=e.label)!=null?h:vn(e.value)?"":e.value}),s=K(()=>e.value||e.label||""),l=K(()=>e.disabled||t.groupDisabled||a.value),u=bn(),c=(h=[],g)=>{if(vn(e.value)){const p=n.props.valueKey;return h&&h.some(m=>Cr(na(m,p))===na(g,p))}else return h&&h.includes(g)},d=()=>{!e.disabled&&!r.disabled&&(n.states.hoveringIndex=n.optionsArray.indexOf(u.proxy))},f=h=>{const g=new RegExp(_re(h),"i");t.visible=g.test(String(i.value))||e.created};return Ze(()=>i.value,()=>{!e.created&&!n.props.remote&&n.setSelected()}),Ze(()=>e.value,(h,g)=>{const{remote:p,valueKey:m}=n.props;if((p?h!==g:!mi(h,g))&&(n.onOptionDestroy(g,u.proxy),n.onOptionCreate(u.proxy)),!e.created&&!p){if(m&&vn(h)&&vn(g)&&h[m]===g[m])return;n.setSelected()}}),Ze(()=>r.disabled,()=>{t.groupDisabled=r.disabled},{immediate:!0}),{select:n,currentLabel:i,currentValue:s,itemSelected:o,isDisabled:l,hoverItem:d,updateOption:f}}const i1t=ne({name:JY,componentName:JY,props:o1t,setup(e){const t=nt("select"),n=Gi(),r=K(()=>[t.be("dropdown","item"),t.is("disabled",b(s)),t.is("selected",b(i)),t.is("hovering",b(f))]),o=Bn({index:-1,groupDisabled:!1,visible:!0,hover:!1}),{currentLabel:a,itemSelected:i,isDisabled:s,select:l,hoverItem:u,updateOption:c}=a1t(e,o),{visible:d,hover:f}=Ra(o),h=bn().proxy;l.onOptionCreate(h),Ar(()=>{const p=h.value,{selected:m}=l.states,v=m.some(y=>y.value===h.value);It(()=>{l.states.cachedOptions.get(p)===h&&!v&&l.states.cachedOptions.delete(p)}),l.onOptionDestroy(p,h)});function g(){s.value||l.handleOptionSelect(h)}return{ns:t,id:n,containerKls:r,currentLabel:a,itemSelected:i,isDisabled:s,select:l,visible:d,hover:f,states:o,hoverItem:u,updateOption:c,selectOptionClick:g}}});function s1t(e,t){return rn((I(),j("li",{id:e.id,class:ee(e.containerKls),role:"option","aria-disabled":e.isDisabled||void 0,"aria-selected":e.itemSelected,onMousemove:e.hoverItem,onClick:zt(e.selectOptionClick,["stop"])},[Ne(e.$slots,"default",{},()=>[w("span",null,se(e.currentLabel),1)])],42,["id","aria-disabled","aria-selected","onMousemove","onClick"])),[[Pn,e.visible]])}var zre=vt(i1t,[["render",s1t],["__file","option.vue"]]);const l1t=ne({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const e=kt(wC),t=nt("select"),n=K(()=>e.props.popperClass),r=K(()=>e.props.multiple),o=K(()=>e.props.fitInputWidth),a=X("");function i(){var s;a.value=`${(s=e.selectRef)==null?void 0:s.offsetWidth}px`}return Kt(()=>{i(),co(e.selectRef,i)}),{ns:t,minWidth:a,popperClass:n,isMultiple:r,isFitInputWidth:o}}});function u1t(e,t,n,r,o,a){return I(),j("div",{class:ee([e.ns.b("dropdown"),e.ns.is("multiple",e.isMultiple),e.popperClass]),style:Nt({[e.isFitInputWidth?"width":"minWidth"]:e.minWidth})},[e.$slots.header?(I(),j("div",{key:0,class:ee(e.ns.be("dropdown","header"))},[Ne(e.$slots,"header")],2)):be("v-if",!0),Ne(e.$slots,"default"),e.$slots.footer?(I(),j("div",{key:1,class:ee(e.ns.be("dropdown","footer"))},[Ne(e.$slots,"footer")],2)):be("v-if",!0)],6)}var c1t=vt(l1t,[["render",u1t],["__file","select-dropdown.vue"]]);const d1t=(e,t)=>{const{t:n}=Un(),r=Gi(),o=nt("select"),a=nt("input"),i=Bn({inputValue:"",options:new Map,cachedOptions:new Map,optionValues:[],selected:[],selectionWidth:0,collapseItemWidth:0,selectedLabel:"",hoveringIndex:-1,previousQuery:null,inputHovering:!1,menuVisibleOnFocus:!1,isBeforeHide:!1}),s=X(),l=X(),u=X(),c=X(),d=X(),f=X(),h=X(),g=X(),p=X(),m=X(),v=X(),{isComposing:y,handleCompositionStart:_,handleCompositionUpdate:C,handleCompositionEnd:S}=vT({afterComposition:ut=>bt(ut)}),{wrapperRef:E,isFocused:k,handleBlur:O}=t1(d,{beforeFocus(){return M.value},afterFocus(){e.automaticDropdown&&!T.value&&(T.value=!0,i.menuVisibleOnFocus=!0)},beforeBlur(ut){var ft,zn;return((ft=u.value)==null?void 0:ft.isFocusInsideContent(ut))||((zn=c.value)==null?void 0:zn.isFocusInsideContent(ut))},afterBlur(){var ut;T.value=!1,i.menuVisibleOnFocus=!1,e.validateEvent&&((ut=F==null?void 0:F.validate)==null||ut.call(F,"blur").catch(ft=>void 0))}}),T=X(!1),P=X(),{form:U,formItem:F}=ws(),{inputId:H}=vd(e,{formItemContext:F}),{valueOnClear:R,isEmptyValue:z}=TL(e),M=K(()=>e.disabled||(U==null?void 0:U.disabled)),N=K(()=>ct(e.modelValue)?e.modelValue.length>0:!z(e.modelValue)),L=K(()=>{var ut;return(ut=U==null?void 0:U.statusIcon)!=null?ut:!1}),V=K(()=>e.clearable&&!M.value&&i.inputHovering&&N.value),Y=K(()=>e.remote&&e.filterable&&!e.remoteShowSuffix?"":e.suffixIcon),$=K(()=>o.is("reverse",!!(Y.value&&T.value))),B=K(()=>(F==null?void 0:F.validateState)||""),W=K(()=>B.value&&$L[B.value]),J=K(()=>e.remote?300:0),oe=K(()=>e.remote&&!i.inputValue&&i.options.size===0),ie=K(()=>e.loading?e.loadingText||n("el.select.loading"):e.filterable&&i.inputValue&&i.options.size>0&&Z.value===0?e.noMatchText||n("el.select.noMatch"):i.options.size===0?e.noDataText||n("el.select.noData"):null),Z=K(()=>de.value.filter(ut=>ut.visible).length),de=K(()=>{const ut=Array.from(i.options.values()),ft=[];return i.optionValues.forEach(zn=>{const Qe=ut.findIndex(gt=>gt.value===zn);Qe>-1&&ft.push(ut[Qe])}),ft.length>=ut.length?ft:ut}),we=K(()=>Array.from(i.cachedOptions.values())),Be=K(()=>{const ut=de.value.filter(ft=>!ft.created).some(ft=>ft.currentLabel===i.inputValue);return e.filterable&&e.allowCreate&&i.inputValue!==""&&!ut}),ke=()=>{e.filterable&&Rt(e.filterMethod)||e.filterable&&e.remote&&Rt(e.remoteMethod)||de.value.forEach(ut=>{var ft;(ft=ut.updateOption)==null||ft.call(ut,i.inputValue)})},ae=ma(),le=K(()=>["small"].includes(ae.value)?"small":"default"),q=K({get(){return T.value&&!oe.value},set(ut){T.value=ut}}),pe=K(()=>{if(e.multiple&&!Ln(e.modelValue))return Vs(e.modelValue).length===0&&!i.inputValue;const ut=ct(e.modelValue)?e.modelValue[0]:e.modelValue;return e.filterable||Ln(ut)?!i.inputValue:!0}),he=K(()=>{var ut;const ft=(ut=e.placeholder)!=null?ut:n("el.select.placeholder");return e.multiple||!N.value?ft:i.selectedLabel}),re=K(()=>LM?null:"mouseenter");Ze(()=>e.modelValue,(ut,ft)=>{e.multiple&&e.filterable&&!e.reserveKeyword&&(i.inputValue="",ue("")),Pe(),!mi(ut,ft)&&e.validateEvent&&(F==null||F.validate("change").catch(zn=>void 0))},{flush:"post",deep:!0}),Ze(()=>T.value,ut=>{ut?ue(i.inputValue):(i.inputValue="",i.previousQuery=null,i.isBeforeHide=!0),t("visible-change",ut)}),Ze(()=>i.options.entries(),()=>{Nn&&(Pe(),e.defaultFirstOption&&(e.filterable||e.remote)&&Z.value&&_e())},{flush:"post"}),Ze([()=>i.hoveringIndex,de],([ut])=>{Lt(ut)&&ut>-1?P.value=de.value[ut]||{}:P.value={},de.value.forEach(ft=>{ft.hover=P.value===ft})}),Wi(()=>{i.isBeforeHide||ke()});const ue=ut=>{i.previousQuery===ut||y.value||(i.previousQuery=ut,e.filterable&&Rt(e.filterMethod)?e.filterMethod(ut):e.filterable&&e.remote&&Rt(e.remoteMethod)&&e.remoteMethod(ut),e.defaultFirstOption&&(e.filterable||e.remote)&&Z.value?It(_e):It(Ee))},_e=()=>{const ut=de.value.filter(gt=>gt.visible&&!gt.disabled&&!gt.states.groupDisabled),ft=ut.find(gt=>gt.created),zn=ut[0],Qe=de.value.map(gt=>gt.value);i.hoveringIndex=Te(Qe,ft||zn)},Pe=()=>{if(e.multiple)i.selectedLabel="";else{const ft=ct(e.modelValue)?e.modelValue[0]:e.modelValue,zn=Ae(ft);i.selectedLabel=zn.currentLabel,i.selected=[zn];return}const ut=[];Ln(e.modelValue)||Vs(e.modelValue).forEach(ft=>{ut.push(Ae(ft))}),i.selected=ut},Ae=ut=>{let ft;const zn=bD(ut);for(let Ht=i.cachedOptions.size-1;Ht>=0;Ht--){const fn=we.value[Ht];if(zn?na(fn.value,e.valueKey)===na(ut,e.valueKey):fn.value===ut){ft={value:ut,currentLabel:fn.currentLabel,get isDisabled(){return fn.isDisabled}};break}}if(ft)return ft;const Qe=zn?ut.label:ut??"";return{value:ut,currentLabel:Qe}},Ee=()=>{i.hoveringIndex=de.value.findIndex(ut=>i.selected.some(ft=>_t(ft)===_t(ut)))},ye=()=>{i.selectionWidth=Number.parseFloat(window.getComputedStyle(l.value).width)},ve=()=>{i.collapseItemWidth=m.value.getBoundingClientRect().width},Ce=()=>{var ut,ft;(ft=(ut=u.value)==null?void 0:ut.updatePopper)==null||ft.call(ut)},ze=()=>{var ut,ft;(ft=(ut=c.value)==null?void 0:ut.updatePopper)==null||ft.call(ut)},at=()=>{i.inputValue.length>0&&!T.value&&(T.value=!0),ue(i.inputValue)},bt=ut=>{if(i.inputValue=ut.target.value,e.remote)Ft();else return at()},Ft=tu(()=>{at()},J.value),Dt=ut=>{mi(e.modelValue,ut)||t(En,ut)},He=ut=>Fxe(ut,ft=>{const zn=i.cachedOptions.get(ft);return zn&&!zn.disabled&&!zn.states.groupDisabled}),Fe=ut=>{if(e.multiple&&ut.code!==St.delete&&ut.target.value.length<=0){const ft=Vs(e.modelValue).slice(),zn=He(ft);if(zn<0)return;const Qe=ft[zn];ft.splice(zn,1),t(en,ft),Dt(ft),t("remove-tag",Qe)}},Ue=(ut,ft)=>{const zn=i.selected.indexOf(ft);if(zn>-1&&!M.value){const Qe=Vs(e.modelValue).slice();Qe.splice(zn,1),t(en,Qe),Dt(Qe),t("remove-tag",ft.value)}ut.stopPropagation(),Le()},Se=ut=>{ut.stopPropagation();const ft=e.multiple?[]:R.value;if(e.multiple)for(const zn of i.selected)zn.isDisabled&&ft.push(zn.value);t(en,ft),Dt(ft),i.hoveringIndex=-1,T.value=!1,t("clear"),Le()},We=ut=>{var ft;if(e.multiple){const zn=Vs((ft=e.modelValue)!=null?ft:[]).slice(),Qe=Te(zn,ut);Qe>-1?zn.splice(Qe,1):(e.multipleLimit<=0||zn.length{Ge(ut)})},Te=(ut,ft)=>Ln(ft)?-1:vn(ft.value)?ut.findIndex(zn=>mi(na(zn,e.valueKey),_t(ft))):ut.indexOf(ft.value),Ge=ut=>{var ft,zn,Qe,gt,Ht;const fn=ct(ut)?ut[0]:ut;let or=null;if(fn!=null&&fn.value){const Sn=de.value.filter(et=>et.value===fn.value);Sn.length>0&&(or=Sn[0].$el)}if(u.value&&or){const Sn=(gt=(Qe=(zn=(ft=u.value)==null?void 0:ft.popperRef)==null?void 0:zn.contentRef)==null?void 0:Qe.querySelector)==null?void 0:gt.call(Qe,`.${o.be("dropdown","wrap")}`);Sn&&Wne(Sn,or)}(Ht=v.value)==null||Ht.handleScroll()},Ot=ut=>{i.options.set(ut.value,ut),i.cachedOptions.set(ut.value,ut)},Zt=(ut,ft)=>{i.options.get(ut)===ft&&i.options.delete(ut)},Wt=K(()=>{var ut,ft;return(ft=(ut=u.value)==null?void 0:ut.popperRef)==null?void 0:ft.contentRef}),dt=()=>{i.isBeforeHide=!1,It(()=>{var ut;(ut=v.value)==null||ut.update(),Ge(i.selected)})},Le=()=>{var ut;(ut=d.value)==null||ut.focus()},Mt=()=>{var ut;if(T.value){T.value=!1,It(()=>{var ft;return(ft=d.value)==null?void 0:ft.blur()});return}(ut=d.value)==null||ut.blur()},je=ut=>{Se(ut)},Ye=ut=>{if(T.value=!1,k.value){const ft=new FocusEvent("focus",ut);It(()=>O(ft))}},Je=()=>{i.inputValue.length>0?i.inputValue="":T.value=!1},it=()=>{M.value||(LM&&(i.inputHovering=!0),i.menuVisibleOnFocus?i.menuVisibleOnFocus=!1:T.value=!T.value)},mt=()=>{if(!T.value)it();else{const ut=de.value[i.hoveringIndex];ut&&!ut.isDisabled&&We(ut)}},_t=ut=>vn(ut.value)?na(ut.value,e.valueKey):ut.value,Qt=K(()=>de.value.filter(ut=>ut.visible).every(ut=>ut.isDisabled)),Vn=K(()=>e.multiple?e.collapseTags?i.selected.slice(0,e.maxCollapseTags):i.selected:[]),Hr=K(()=>e.multiple?e.collapseTags?i.selected.slice(e.maxCollapseTags):[]:[]),Kn=ut=>{if(!T.value){T.value=!0;return}if(!(i.options.size===0||Z.value===0||y.value)&&!Qt.value){ut==="next"?(i.hoveringIndex++,i.hoveringIndex===i.options.size&&(i.hoveringIndex=0)):ut==="prev"&&(i.hoveringIndex--,i.hoveringIndex<0&&(i.hoveringIndex=i.options.size-1));const ft=de.value[i.hoveringIndex];(ft.isDisabled||!ft.visible)&&Kn(ut),It(()=>Ge(P.value))}},Yo=()=>{if(!l.value)return 0;const ut=window.getComputedStyle(l.value);return Number.parseFloat(ut.gap||"6px")},jt=K(()=>{const ut=Yo();return{maxWidth:`${m.value&&e.maxCollapseTags===1?i.selectionWidth-i.collapseItemWidth-ut:i.selectionWidth}px`}}),Po=K(()=>({maxWidth:`${i.selectionWidth}px`})),Wr=ut=>{t("popup-scroll",ut)};return co(l,ye),co(g,Ce),co(E,Ce),co(p,ze),co(m,ve),Kt(()=>{Pe()}),{inputId:H,contentId:r,nsSelect:o,nsInput:a,states:i,isFocused:k,expanded:T,optionsArray:de,hoverOption:P,selectSize:ae,filteredOptionsCount:Z,updateTooltip:Ce,updateTagTooltip:ze,debouncedOnInputChange:Ft,onInput:bt,deletePrevTag:Fe,deleteTag:Ue,deleteSelected:Se,handleOptionSelect:We,scrollToOption:Ge,hasModelValue:N,shouldShowPlaceholder:pe,currentPlaceholder:he,mouseEnterEventName:re,needStatusIcon:L,showClose:V,iconComponent:Y,iconReverse:$,validateState:B,validateIcon:W,showNewOption:Be,updateOptions:ke,collapseTagSize:le,setSelected:Pe,selectDisabled:M,emptyText:ie,handleCompositionStart:_,handleCompositionUpdate:C,handleCompositionEnd:S,onOptionCreate:Ot,onOptionDestroy:Zt,handleMenuEnter:dt,focus:Le,blur:Mt,handleClearClick:je,handleClickOutside:Ye,handleEsc:Je,toggleMenu:it,selectOption:mt,getValueKey:_t,navigateOptions:Kn,dropdownMenuVisible:q,showTagList:Vn,collapseTagList:Hr,popupScroll:Wr,tagStyle:jt,collapseTagStyle:Po,popperRef:Wt,inputRef:d,tooltipRef:u,tagTooltipRef:c,prefixRef:f,suffixRef:h,selectRef:s,wrapperRef:E,selectionRef:l,scrollbarRef:v,menuRef:g,tagMenuRef:p,collapseItemRef:m}};var f1t=ne({name:"ElOptions",setup(e,{slots:t}){const n=kt(wC);let r=[];return()=>{var o,a;const i=(o=t.default)==null?void 0:o.call(t),s=[];function l(u){ct(u)&&u.forEach(c=>{var d,f,h,g;const p=(d=(c==null?void 0:c.type)||{})==null?void 0:d.name;p==="ElOptionGroup"?l(!$t(c.children)&&!ct(c.children)&&Rt((f=c.children)==null?void 0:f.default)?(h=c.children)==null?void 0:h.default():c.children):p==="ElOption"?s.push((g=c.props)==null?void 0:g.value):ct(c.children)&&l(c.children)})}return i.length&&l((a=i[0])==null?void 0:a.children),mi(s,r)||(r=s,n&&(n.states.optionValues=s)),i}}});const h1t=ht({name:String,id:String,modelValue:{type:$e([Array,String,Number,Boolean,Object]),default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:Aa,effect:{type:$e(String),default:"light"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},popperOptions:{type:$e(Object),default:()=>({})},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},teleported:Qo.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:mr,default:Yh},fitInputWidth:Boolean,suffixIcon:{type:mr,default:lc},tagType:{...Og.type,default:"info"},tagEffect:{...Og.effect,default:"light"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:Boolean,showArrow:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:$e(String),values:Hg,default:"bottom-start"},fallbackPlacements:{type:$e(Array),default:["bottom-start","top-start","right","left"]},tabindex:{type:[String,Number],default:0},appendTo:Qo.appendTo,...vC,...ts(["ariaLabel"])});en+"",En+"",T5e.scroll;const jhe="ElSelect",p1t=ne({name:jhe,componentName:jhe,components:{ElSelectMenu:c1t,ElOption:zre,ElOptions:f1t,ElTag:Si,ElScrollbar:id,ElTooltip:Yi,ElIcon:Tt},directives:{ClickOutside:Fg},props:h1t,emits:[en,En,"remove-tag","clear","visible-change","focus","blur","popup-scroll"],setup(e,{emit:t,slots:n}){const r=bn();r.appContext.config.warnHandler=(...f)=>{!f[0]||f[0].includes('Slot "default" invoked outside of the render function')||console.warn(...f)};const o=K(()=>{const{modelValue:f,multiple:h}=e,g=h?[]:void 0;return ct(f)?h?f:g:h?g:f}),a=Bn({...Ra(e),modelValue:o}),i=d1t(a,t),{calculatorRef:s,inputStyle:l}=Lre(),u=f=>f.reduce((h,g)=>(h.push(g),g.children&&g.children.length>0&&h.push(...u(g.children)),h),[]),c=f=>{mh(f||[]).forEach(g=>{var p;if(vn(g)&&(g.type.name==="ElOption"||g.type.name==="ElTree")){const m=g.type.name;if(m==="ElTree"){const v=((p=g.props)==null?void 0:p.data)||[];u(v).forEach(_=>{_.currentLabel=_.label||(vn(_.value)?"":_.value),i.onOptionCreate(_)})}else if(m==="ElOption"){const v={...g.props};v.currentLabel=v.label||(vn(v.value)?"":v.value),i.onOptionCreate(v)}}})};Ze(()=>{var f;return(f=n.default)==null?void 0:f.call(n)},f=>{e.persistent||c(f)},{immediate:!0}),Fn(wC,Bn({props:a,states:i.states,selectRef:i.selectRef,optionsArray:i.optionsArray,setSelected:i.setSelected,handleOptionSelect:i.handleOptionSelect,onOptionCreate:i.onOptionCreate,onOptionDestroy:i.onOptionDestroy}));const d=K(()=>e.multiple?i.states.selected.map(f=>f.currentLabel):i.states.selectedLabel);return{...i,modelValue:o,selectedLabel:d,calculatorRef:s,inputStyle:l}}});function g1t(e,t){const n=yn("el-tag"),r=yn("el-tooltip"),o=yn("el-icon"),a=yn("el-option"),i=yn("el-options"),s=yn("el-scrollbar"),l=yn("el-select-menu"),u=pL("click-outside");return rn((I(),j("div",{ref:"selectRef",class:ee([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),[SS(e.mouseEnterEventName)]:c=>e.states.inputHovering=!0,onMouseleave:c=>e.states.inputHovering=!1},[D(r,{ref:"tooltipRef",visible:e.dropdownMenuVisible,placement:e.placement,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"popper-options":e.popperOptions,"fallback-placements":e.fallbackPlacements,effect:e.effect,pure:"",trigger:"click",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:e.persistent,"append-to":e.appendTo,"show-arrow":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:c=>e.states.isBeforeHide=!1},{default:A(()=>{var c;return[w("div",{ref:"wrapperRef",class:ee([e.nsSelect.e("wrapper"),e.nsSelect.is("focused",e.isFocused),e.nsSelect.is("hovering",e.states.inputHovering),e.nsSelect.is("filterable",e.filterable),e.nsSelect.is("disabled",e.selectDisabled)]),onClick:zt(e.toggleMenu,["prevent"])},[e.$slots.prefix?(I(),j("div",{key:0,ref:"prefixRef",class:ee(e.nsSelect.e("prefix"))},[Ne(e.$slots,"prefix")],2)):be("v-if",!0),w("div",{ref:"selectionRef",class:ee([e.nsSelect.e("selection"),e.nsSelect.is("near",e.multiple&&!e.$slots.prefix&&!!e.states.selected.length)])},[e.multiple?Ne(e.$slots,"tag",{key:0},()=>[(I(!0),j(tt,null,wt(e.showTagList,d=>(I(),j("div",{key:e.getValueKey(d),class:ee(e.nsSelect.e("selected-item"))},[D(n,{closable:!e.selectDisabled&&!d.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Nt(e.tagStyle),onClose:f=>e.deleteTag(f,d)},{default:A(()=>[w("span",{class:ee(e.nsSelect.e("tags-text"))},[Ne(e.$slots,"label",{label:d.currentLabel,value:d.value},()=>[ce(se(d.currentLabel),1)])],2)]),_:2},1032,["closable","size","type","effect","style","onClose"])],2))),128)),e.collapseTags&&e.states.selected.length>e.maxCollapseTags?(I(),Oe(r,{key:0,ref:"tagTooltipRef",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom",teleported:e.teleported},{default:A(()=>[w("div",{ref:"collapseItemRef",class:ee(e.nsSelect.e("selected-item"))},[D(n,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Nt(e.collapseTagStyle)},{default:A(()=>[w("span",{class:ee(e.nsSelect.e("tags-text"))}," + "+se(e.states.selected.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect","style"])],2)]),content:A(()=>[w("div",{ref:"tagMenuRef",class:ee(e.nsSelect.e("selection"))},[(I(!0),j(tt,null,wt(e.collapseTagList,d=>(I(),j("div",{key:e.getValueKey(d),class:ee(e.nsSelect.e("selected-item"))},[D(n,{class:"in-tooltip",closable:!e.selectDisabled&&!d.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:f=>e.deleteTag(f,d)},{default:A(()=>[w("span",{class:ee(e.nsSelect.e("tags-text"))},[Ne(e.$slots,"label",{label:d.currentLabel,value:d.value},()=>[ce(se(d.currentLabel),1)])],2)]),_:2},1032,["closable","size","type","effect","onClose"])],2))),128))],2)]),_:3},8,["disabled","effect","teleported"])):be("v-if",!0)]):be("v-if",!0),w("div",{class:ee([e.nsSelect.e("selected-item"),e.nsSelect.e("input-wrapper"),e.nsSelect.is("hidden",!e.filterable)])},[rn(w("input",{id:e.inputId,ref:"inputRef","onUpdate:modelValue":d=>e.states.inputValue=d,type:"text",name:e.name,class:ee([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,autocomplete:e.autocomplete,style:Nt(e.inputStyle),tabindex:e.tabindex,role:"combobox",readonly:!e.filterable,spellcheck:"false","aria-activedescendant":((c=e.hoverOption)==null?void 0:c.id)||"","aria-controls":e.contentId,"aria-expanded":e.dropdownMenuVisible,"aria-label":e.ariaLabel,"aria-autocomplete":"none","aria-haspopup":"listbox",onKeydown:[qn(zt(d=>e.navigateOptions("next"),["stop","prevent"]),["down"]),qn(zt(d=>e.navigateOptions("prev"),["stop","prevent"]),["up"]),qn(zt(e.handleEsc,["stop","prevent"]),["esc"]),qn(zt(e.selectOption,["stop","prevent"]),["enter"]),qn(zt(e.deletePrevTag,["stop"]),["delete"])],onCompositionstart:e.handleCompositionStart,onCompositionupdate:e.handleCompositionUpdate,onCompositionend:e.handleCompositionEnd,onInput:e.onInput,onClick:zt(e.toggleMenu,["stop"])},null,46,["id","onUpdate:modelValue","name","disabled","autocomplete","tabindex","readonly","aria-activedescendant","aria-controls","aria-expanded","aria-label","onKeydown","onCompositionstart","onCompositionupdate","onCompositionend","onInput","onClick"]),[[mL,e.states.inputValue]]),e.filterable?(I(),j("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:ee(e.nsSelect.e("input-calculator")),textContent:se(e.states.inputValue)},null,10,["textContent"])):be("v-if",!0)],2),e.shouldShowPlaceholder?(I(),j("div",{key:1,class:ee([e.nsSelect.e("selected-item"),e.nsSelect.e("placeholder"),e.nsSelect.is("transparent",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?Ne(e.$slots,"label",{key:0,label:e.currentPlaceholder,value:e.modelValue},()=>[w("span",null,se(e.currentPlaceholder),1)]):(I(),j("span",{key:1},se(e.currentPlaceholder),1))],2)):be("v-if",!0)],2),w("div",{ref:"suffixRef",class:ee(e.nsSelect.e("suffix"))},[e.iconComponent&&!e.showClose?(I(),Oe(o,{key:0,class:ee([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.iconReverse])},{default:A(()=>[(I(),Oe(_n(e.iconComponent)))]),_:1},8,["class"])):be("v-if",!0),e.showClose&&e.clearIcon?(I(),Oe(o,{key:1,class:ee([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.nsSelect.e("clear")]),onClick:e.handleClearClick},{default:A(()=>[(I(),Oe(_n(e.clearIcon)))]),_:1},8,["class","onClick"])):be("v-if",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?(I(),Oe(o,{key:2,class:ee([e.nsInput.e("icon"),e.nsInput.e("validateIcon"),e.nsInput.is("loading",e.validateState==="validating")])},{default:A(()=>[(I(),Oe(_n(e.validateIcon)))]),_:1},8,["class"])):be("v-if",!0)],2)],10,["onClick"])]}),content:A(()=>[D(l,{ref:"menuRef"},{default:A(()=>[e.$slots.header?(I(),j("div",{key:0,class:ee(e.nsSelect.be("dropdown","header")),onClick:zt(()=>{},["stop"])},[Ne(e.$slots,"header")],10,["onClick"])):be("v-if",!0),rn(D(s,{id:e.contentId,ref:"scrollbarRef",tag:"ul","wrap-class":e.nsSelect.be("dropdown","wrap"),"view-class":e.nsSelect.be("dropdown","list"),class:ee([e.nsSelect.is("empty",e.filteredOptionsCount===0)]),role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical",onScroll:e.popupScroll},{default:A(()=>[e.showNewOption?(I(),Oe(a,{key:0,value:e.states.inputValue,created:!0},null,8,["value"])):be("v-if",!0),D(i,null,{default:A(()=>[Ne(e.$slots,"default")]),_:3})]),_:3},8,["id","wrap-class","view-class","class","aria-label","onScroll"]),[[Pn,e.states.options.size>0&&!e.loading]]),e.$slots.loading&&e.loading?(I(),j("div",{key:1,class:ee(e.nsSelect.be("dropdown","loading"))},[Ne(e.$slots,"loading")],2)):e.loading||e.filteredOptionsCount===0?(I(),j("div",{key:2,class:ee(e.nsSelect.be("dropdown","empty"))},[Ne(e.$slots,"empty",{},()=>[w("span",null,se(e.emptyText),1)])],2)):be("v-if",!0),e.$slots.footer?(I(),j("div",{key:3,class:ee(e.nsSelect.be("dropdown","footer")),onClick:zt(()=>{},["stop"])},[Ne(e.$slots,"footer")],10,["onClick"])):be("v-if",!0)]),_:3},512)]),_:3},8,["visible","placement","teleported","popper-class","popper-options","fallback-placements","effect","transition","persistent","append-to","show-arrow","offset","onBeforeShow","onHide"])],16,["onMouseleave"])),[[u,e.handleClickOutside,e.popperRef]])}var v1t=vt(p1t,[["render",g1t],["__file","select.vue"]]);const m1t=ne({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:Boolean},setup(e){const t=nt("select"),n=X(),r=bn(),o=X([]);Fn(DDe,Bn({...Ra(e)}));const a=K(()=>o.value.some(u=>u.visible===!0)),i=u=>{var c;return u.type.name==="ElOption"&&!!((c=u.component)!=null&&c.proxy)},s=u=>{const c=Vs(u),d=[];return c.forEach(f=>{var h;jr(f)&&(i(f)?d.push(f.component.proxy):ct(f.children)&&f.children.length?d.push(...s(f.children)):(h=f.component)!=null&&h.subTree&&d.push(...s(f.component.subTree)))}),d},l=()=>{o.value=s(r.subTree)};return Kt(()=>{l()}),Rxe(n,l,{attributes:!0,subtree:!0,childList:!0}),{groupRef:n,visible:a,ns:t}}});function y1t(e,t,n,r,o,a){return rn((I(),j("ul",{ref:"groupRef",class:ee(e.ns.be("group","wrap"))},[w("li",{class:ee(e.ns.be("group","title"))},se(e.label),3),w("li",null,[w("ul",{class:ee(e.ns.b("group"))},[Ne(e.$slots,"default")],2)])],2)),[[Pn,e.visible]])}var EDe=vt(m1t,[["render",y1t],["__file","option-group.vue"]]);const ii=dn(v1t,{Option:zre,OptionGroup:EDe}),bs=vo(zre),kDe=vo(EDe),jre=()=>kt(SDe,{}),b1t=ht({pageSize:{type:Number,required:!0},pageSizes:{type:$e(Array),default:()=>Eo([10,20,30,40,50,100])},popperClass:{type:String},disabled:Boolean,teleported:Boolean,size:{type:String,values:Gh},appendSizeTo:String}),_1t=ne({name:"ElPaginationSizes"}),w1t=ne({..._1t,props:b1t,emits:["page-size-change"],setup(e,{emit:t}){const n=e,{t:r}=Un(),o=nt("pagination"),a=jre(),i=X(n.pageSize);Ze(()=>n.pageSizes,(u,c)=>{if(!mi(u,c)&&ct(u)){const d=u.includes(n.pageSize)?n.pageSize:n.pageSizes[0];t("page-size-change",d)}}),Ze(()=>n.pageSize,u=>{i.value=u});const s=K(()=>n.pageSizes);function l(u){var c;u!==i.value&&(i.value=u,(c=a.handleSizeChange)==null||c.call(a,Number(u)))}return(u,c)=>(I(),j("span",{class:ee(b(o).e("sizes"))},[D(b(ii),{"model-value":i.value,disabled:u.disabled,"popper-class":u.popperClass,size:u.size,teleported:u.teleported,"validate-event":!1,"append-to":u.appendSizeTo,onChange:l},{default:A(()=>[(I(!0),j(tt,null,wt(b(s),d=>(I(),Oe(b(bs),{key:d,value:d,label:d+b(r)("el.pagination.pagesize")},null,8,["value","label"]))),128))]),_:1},8,["model-value","disabled","popper-class","size","teleported","append-to"])],2))}});var C1t=vt(w1t,[["__file","sizes.vue"]]);const x1t=ht({size:{type:String,values:Gh}}),S1t=ne({name:"ElPaginationJumper"}),D1t=ne({...S1t,props:x1t,setup(e){const{t}=Un(),n=nt("pagination"),{pageCount:r,disabled:o,currentPage:a,changeEvent:i}=jre(),s=X(),l=K(()=>{var d;return(d=s.value)!=null?d:a==null?void 0:a.value});function u(d){s.value=d?+d:""}function c(d){d=Math.trunc(+d),i==null||i(d),s.value=void 0}return(d,f)=>(I(),j("span",{class:ee(b(n).e("jump")),disabled:b(o)},[w("span",{class:ee([b(n).e("goto")])},se(b(t)("el.pagination.goto")),3),D(b(fo),{size:d.size,class:ee([b(n).e("editor"),b(n).is("in-pagination")]),min:1,max:b(r),disabled:b(o),"model-value":b(l),"validate-event":!1,"aria-label":b(t)("el.pagination.page"),type:"number","onUpdate:modelValue":u,onChange:c},null,8,["size","class","max","disabled","model-value","aria-label"]),w("span",{class:ee([b(n).e("classifier")])},se(b(t)("el.pagination.pageClassifier")),3)],10,["disabled"]))}});var E1t=vt(D1t,[["__file","jumper.vue"]]);const k1t=ht({total:{type:Number,default:1e3}}),A1t=ne({name:"ElPaginationTotal"}),T1t=ne({...A1t,props:k1t,setup(e){const{t}=Un(),n=nt("pagination"),{disabled:r}=jre();return(o,a)=>(I(),j("span",{class:ee(b(n).e("total")),disabled:b(r)},se(b(t)("el.pagination.total",{total:o.total})),11,["disabled"]))}});var O1t=vt(T1t,[["__file","total.vue"]]);const F1t=ht({currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean}),I1t=ne({name:"ElPaginationPager"}),M1t=ne({...I1t,props:F1t,emits:[En],setup(e,{emit:t}){const n=e,r=nt("pager"),o=nt("icon"),{t:a}=Un(),i=X(!1),s=X(!1),l=X(!1),u=X(!1),c=X(!1),d=X(!1),f=K(()=>{const C=n.pagerCount,S=(C-1)/2,E=Number(n.currentPage),k=Number(n.pageCount);let O=!1,T=!1;k>C&&(E>C-S&&(O=!0),E["more","btn-quickprev",o.b(),r.is("disabled",n.disabled)]),g=K(()=>["more","btn-quicknext",o.b(),r.is("disabled",n.disabled)]),p=K(()=>n.disabled?-1:0);Wi(()=>{const C=(n.pagerCount-1)/2;i.value=!1,s.value=!1,n.pageCount>n.pagerCount&&(n.currentPage>n.pagerCount-C&&(i.value=!0),n.currentPagek&&(E=k)),E!==O&&t(En,E)}return(C,S)=>(I(),j("ul",{class:ee(b(r).b()),onClick:_,onKeyup:qn(y,["enter"])},[C.pageCount>0?(I(),j("li",{key:0,class:ee([[b(r).is("active",C.currentPage===1),b(r).is("disabled",C.disabled)],"number"]),"aria-current":C.currentPage===1,"aria-label":b(a)("el.pagination.currentPage",{pager:1}),tabindex:b(p)}," 1 ",10,["aria-current","aria-label","tabindex"])):be("v-if",!0),i.value?(I(),j("li",{key:1,class:ee(b(h)),tabindex:b(p),"aria-label":b(a)("el.pagination.prevPages",{pager:C.pagerCount-2}),onMouseenter:E=>m(!0),onMouseleave:E=>l.value=!1,onFocus:E=>v(!0),onBlur:E=>c.value=!1},[(l.value||c.value)&&!C.disabled?(I(),Oe(b(kg),{key:0})):(I(),Oe(b(Ku),{key:1}))],42,["tabindex","aria-label","onMouseenter","onMouseleave","onFocus","onBlur"])):be("v-if",!0),(I(!0),j(tt,null,wt(b(f),E=>(I(),j("li",{key:E,class:ee([[b(r).is("active",C.currentPage===E),b(r).is("disabled",C.disabled)],"number"]),"aria-current":C.currentPage===E,"aria-label":b(a)("el.pagination.currentPage",{pager:E}),tabindex:b(p)},se(E),11,["aria-current","aria-label","tabindex"]))),128)),s.value?(I(),j("li",{key:2,class:ee(b(g)),tabindex:b(p),"aria-label":b(a)("el.pagination.nextPages",{pager:C.pagerCount-2}),onMouseenter:E=>m(),onMouseleave:E=>u.value=!1,onFocus:E=>v(),onBlur:E=>d.value=!1},[(u.value||d.value)&&!C.disabled?(I(),Oe(b(Ag),{key:0})):(I(),Oe(b(Ku),{key:1}))],42,["tabindex","aria-label","onMouseenter","onMouseleave","onFocus","onBlur"])):be("v-if",!0),C.pageCount>1?(I(),j("li",{key:3,class:ee([[b(r).is("active",C.currentPage===C.pageCount),b(r).is("disabled",C.disabled)],"number"]),"aria-current":C.currentPage===C.pageCount,"aria-label":b(a)("el.pagination.currentPage",{pager:C.pageCount}),tabindex:b(p)},se(C.pageCount),11,["aria-current","aria-label","tabindex"])):be("v-if",!0)],42,["onKeyup"]))}});var P1t=vt(M1t,[["__file","pager.vue"]]);const rl=e=>typeof e!="number",$1t=ht({pageSize:Number,defaultPageSize:Number,total:Number,pageCount:Number,pagerCount:{type:Number,validator:e=>Lt(e)&&Math.trunc(e)===e&&e>4&&e<22&&e%2===1,default:7},currentPage:Number,defaultCurrentPage:Number,layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:$e(Array),default:()=>Eo([10,20,30,40,50,100])},popperClass:{type:String,default:""},prevText:{type:String,default:""},prevIcon:{type:mr,default:()=>uf},nextText:{type:String,default:""},nextIcon:{type:mr,default:()=>_i},teleported:{type:Boolean,default:!0},small:Boolean,size:Aa,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean,appendSizeTo:String}),B1t={"update:current-page":e=>Lt(e),"update:page-size":e=>Lt(e),"size-change":e=>Lt(e),change:(e,t)=>Lt(e)&&Lt(t),"current-change":e=>Lt(e),"prev-click":e=>Lt(e),"next-click":e=>Lt(e)},Hhe="ElPagination";var R1t=ne({name:Hhe,props:$1t,emits:B1t,setup(e,{emit:t,slots:n}){const{t:r}=Un(),o=nt("pagination"),a=bn().vnode.props||{},i=Hxe(),s=K(()=>{var S;return e.small?"small":(S=e.size)!=null?S:i.value});mg({from:"small",replacement:"size",version:"3.0.0",scope:"el-pagination",ref:"https://element-plus.org/zh-CN/component/pagination.html"},K(()=>!!e.small));const l="onUpdate:currentPage"in a||"onUpdate:current-page"in a||"onCurrentChange"in a,u="onUpdate:pageSize"in a||"onUpdate:page-size"in a||"onSizeChange"in a,c=K(()=>{if(rl(e.total)&&rl(e.pageCount)||!rl(e.currentPage)&&!l)return!1;if(e.layout.includes("sizes")){if(rl(e.pageCount)){if(!rl(e.total)&&!rl(e.pageSize)&&!u)return!1}else if(!u)return!1}return!0}),d=X(rl(e.defaultPageSize)?10:e.defaultPageSize),f=X(rl(e.defaultCurrentPage)?1:e.defaultCurrentPage),h=K({get(){return rl(e.pageSize)?d.value:e.pageSize},set(S){rl(e.pageSize)&&(d.value=S),u&&(t("update:page-size",S),t("size-change",S))}}),g=K(()=>{let S=0;return rl(e.pageCount)?rl(e.total)||(S=Math.max(1,Math.ceil(e.total/h.value))):S=e.pageCount,S}),p=K({get(){return rl(e.currentPage)?f.value:e.currentPage},set(S){let E=S;S<1?E=1:S>g.value&&(E=g.value),rl(e.currentPage)&&(f.value=E),l&&(t("update:current-page",E),t("current-change",E))}});Ze(g,S=>{p.value>S&&(p.value=S)}),Ze([p,h],S=>{t(En,...S)},{flush:"post"});function m(S){p.value=S}function v(S){h.value=S;const E=g.value;p.value>E&&(p.value=E)}function y(){e.disabled||(p.value-=1,t("prev-click",p.value))}function _(){e.disabled||(p.value+=1,t("next-click",p.value))}function C(S,E){S&&(S.props||(S.props={}),S.props.class=[S.props.class,E].join(" "))}return Fn(SDe,{pageCount:g,disabled:K(()=>e.disabled),currentPage:p,changeEvent:m,handleSizeChange:v}),()=>{var S,E;if(!c.value)return r("el.pagination.deprecationWarning"),null;if(!e.layout||e.hideOnSinglePage&&g.value<=1)return null;const k=[],O=[],T=Vt("div",{class:o.e("rightwrapper")},O),P={prev:Vt(Qmt,{disabled:e.disabled,currentPage:p.value,prevText:e.prevText,prevIcon:e.prevIcon,onClick:y}),jumper:Vt(E1t,{size:s.value}),pager:Vt(P1t,{currentPage:p.value,pageCount:g.value,pagerCount:e.pagerCount,onChange:m,disabled:e.disabled}),next:Vt(r1t,{disabled:e.disabled,currentPage:p.value,pageCount:g.value,nextText:e.nextText,nextIcon:e.nextIcon,onClick:_}),sizes:Vt(C1t,{pageSize:h.value,pageSizes:e.pageSizes,popperClass:e.popperClass,disabled:e.disabled,teleported:e.teleported,size:s.value,appendSizeTo:e.appendSizeTo}),slot:(E=(S=n==null?void 0:n.default)==null?void 0:S.call(n))!=null?E:null,total:Vt(O1t,{total:rl(e.total)?0:e.total})},U=e.layout.split(",").map(H=>H.trim());let F=!1;return U.forEach(H=>{if(H==="->"){F=!0;return}F?O.push(P[H]):k.push(P[H])}),C(k[0],o.is("first")),C(k[k.length-1],o.is("last")),F&&O.length>0&&(C(O[0],o.is("first")),C(O[O.length-1],o.is("last")),k.push(T)),Vt("div",{class:[o.b(),o.is("background",e.background),o.m(s.value)]},k)}}});const ADe=dn(R1t),N1t=ht({title:String,confirmButtonText:String,cancelButtonText:String,confirmButtonType:{type:String,values:MY,default:"primary"},cancelButtonType:{type:String,values:MY,default:"text"},icon:{type:mr,default:()=>v5e},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1},hideAfter:{type:Number,default:200},teleported:Qo.teleported,persistent:Qo.persistent,width:{type:[String,Number],default:150}}),L1t={confirm:e=>e instanceof MouseEvent,cancel:e=>e instanceof MouseEvent},U1t=ne({name:"ElPopconfirm"}),V1t=ne({...U1t,props:N1t,emits:L1t,setup(e,{emit:t}){const n=e,{t:r}=Un(),o=nt("popconfirm"),a=X(),i=()=>{var f,h;(h=(f=a.value)==null?void 0:f.onClose)==null||h.call(f)},s=K(()=>({width:Io(n.width)})),l=f=>{t("confirm",f),i()},u=f=>{t("cancel",f),i()},c=K(()=>n.confirmButtonText||r("el.popconfirm.confirmButtonText")),d=K(()=>n.cancelButtonText||r("el.popconfirm.cancelButtonText"));return(f,h)=>(I(),Oe(b(Yi),Dn({ref_key:"tooltipRef",ref:a,trigger:"click",effect:"light"},f.$attrs,{"popper-class":`${b(o).namespace.value}-popover`,"popper-style":b(s),teleported:f.teleported,"fallback-placements":["bottom","top","right","left"],"hide-after":f.hideAfter,persistent:f.persistent}),{content:A(()=>[w("div",{class:ee(b(o).b())},[w("div",{class:ee(b(o).e("main"))},[!f.hideIcon&&f.icon?(I(),Oe(b(Tt),{key:0,class:ee(b(o).e("icon")),style:Nt({color:f.iconColor})},{default:A(()=>[(I(),Oe(_n(f.icon)))]),_:1},8,["class","style"])):be("v-if",!0),ce(" "+se(f.title),1)],2),w("div",{class:ee(b(o).e("action"))},[Ne(f.$slots,"actions",{confirm:l,cancel:u},()=>[D(b(Br),{size:"small",type:f.cancelButtonType==="text"?"":f.cancelButtonType,text:f.cancelButtonType==="text",onClick:u},{default:A(()=>[ce(se(b(d)),1)]),_:1},8,["type","text"]),D(b(Br),{size:"small",type:f.confirmButtonType==="text"?"":f.confirmButtonType,text:f.confirmButtonType==="text",onClick:l},{default:A(()=>[ce(se(b(c)),1)]),_:1},8,["type","text"])])],2)],2)]),default:A(()=>[f.$slots.reference?Ne(f.$slots,"reference",{key:0}):be("v-if",!0)]),_:3},16,["popper-class","popper-style","teleported","hide-after","persistent"]))}});var z1t=vt(V1t,[["__file","popconfirm.vue"]]);const j1t=dn(z1t),H1t=ht({trigger:T3.trigger,triggerKeys:T3.triggerKeys,placement:qF.placement,disabled:T3.disabled,visible:Qo.visible,transition:Qo.transition,popperOptions:qF.popperOptions,tabindex:qF.tabindex,content:Qo.content,popperStyle:Qo.popperStyle,popperClass:Qo.popperClass,enterable:{...Qo.enterable,default:!0},effect:{...Qo.effect,default:"light"},teleported:Qo.teleported,appendTo:Qo.appendTo,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),W1t={"update:visible":e=>hr(e),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},q1t="onUpdate:visible",K1t=ne({name:"ElPopover"}),G1t=ne({...K1t,props:H1t,emits:W1t,setup(e,{expose:t,emit:n}){const r=e,o=K(()=>r[q1t]),a=nt("popover"),i=X(),s=K(()=>{var m;return(m=b(i))==null?void 0:m.popperRef}),l=K(()=>[{width:Io(r.width)},r.popperStyle]),u=K(()=>[a.b(),r.popperClass,{[a.m("plain")]:!!r.content}]),c=K(()=>r.transition===`${a.namespace.value}-fade-in-linear`),d=()=>{var m;(m=i.value)==null||m.hide()},f=()=>{n("before-enter")},h=()=>{n("before-leave")},g=()=>{n("after-enter")},p=()=>{n("update:visible",!1),n("after-leave")};return t({popperRef:s,hide:d}),(m,v)=>(I(),Oe(b(Yi),Dn({ref_key:"tooltipRef",ref:i},m.$attrs,{trigger:m.trigger,"trigger-keys":m.triggerKeys,placement:m.placement,disabled:m.disabled,visible:m.visible,transition:m.transition,"popper-options":m.popperOptions,tabindex:m.tabindex,content:m.content,offset:m.offset,"show-after":m.showAfter,"hide-after":m.hideAfter,"auto-close":m.autoClose,"show-arrow":m.showArrow,"aria-label":m.title,effect:m.effect,enterable:m.enterable,"popper-class":b(u),"popper-style":b(l),teleported:m.teleported,"append-to":m.appendTo,persistent:m.persistent,"gpu-acceleration":b(c),"onUpdate:visible":b(o),onBeforeShow:f,onBeforeHide:h,onShow:g,onHide:p}),{content:A(()=>[m.title?(I(),j("div",{key:0,class:ee(b(a).e("title")),role:"title"},se(m.title),3)):be("v-if",!0),Ne(m.$slots,"default",{},()=>[ce(se(m.content),1)])]),default:A(()=>[m.$slots.reference?Ne(m.$slots,"reference",{key:0}):be("v-if",!0)]),_:3},16,["trigger","trigger-keys","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","append-to","persistent","gpu-acceleration","onUpdate:visible"]))}});var Y1t=vt(G1t,[["__file","popover.vue"]]);const Whe=(e,t)=>{const n=t.arg||t.value,r=n==null?void 0:n.popperRef;r&&(r.triggerRef=e)};var X1t={mounted(e,t){Whe(e,t)},updated(e,t){Whe(e,t)}};const J1t="popover",TDe=VJe(X1t,J1t),Z1t=dn(Y1t,{directive:TDe}),Q1t=ht({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:e=>e>=0&&e<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:Boolean,duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:$e(String),default:"round"},textInside:Boolean,width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:$e([String,Array,Function]),default:""},striped:Boolean,stripedFlow:Boolean,format:{type:$e(Function),default:e=>`${e}%`}}),e2t=ne({name:"ElProgress"}),t2t=ne({...e2t,props:Q1t,setup(e){const t=e,n={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},r=nt("progress"),o=K(()=>{const _={width:`${t.percentage}%`,animationDuration:`${t.duration}s`},C=y(t.percentage);return C.includes("gradient")?_.background=C:_.backgroundColor=C,_}),a=K(()=>(t.strokeWidth/t.width*100).toFixed(1)),i=K(()=>["circle","dashboard"].includes(t.type)?Number.parseInt(`${50-Number.parseFloat(a.value)/2}`,10):0),s=K(()=>{const _=i.value,C=t.type==="dashboard";return` + M 50 50 + m 0 ${C?"":"-"}${_} + a ${_} ${_} 0 1 1 0 ${C?"-":""}${_*2} + a ${_} ${_} 0 1 1 0 ${C?"":"-"}${_*2} + `}),l=K(()=>2*Math.PI*i.value),u=K(()=>t.type==="dashboard"?.75:1),c=K(()=>`${-1*l.value*(1-u.value)/2}px`),d=K(()=>({strokeDasharray:`${l.value*u.value}px, ${l.value}px`,strokeDashoffset:c.value})),f=K(()=>({strokeDasharray:`${l.value*u.value*(t.percentage/100)}px, ${l.value}px`,strokeDashoffset:c.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),h=K(()=>{let _;return t.color?_=y(t.percentage):_=n[t.status]||n.default,_}),g=K(()=>t.status==="warning"?hT:t.type==="line"?t.status==="success"?cT:Yh:t.status==="success"?Za:Gs),p=K(()=>t.type==="line"?12+t.strokeWidth*.4:t.width*.111111+2),m=K(()=>t.format(t.percentage));function v(_){const C=100/_.length;return _.map((E,k)=>$t(E)?{color:E,percentage:(k+1)*C}:E).sort((E,k)=>E.percentage-k.percentage)}const y=_=>{var C;const{color:S}=t;if(Rt(S))return S(_);if($t(S))return S;{const E=v(S);for(const k of E)if(k.percentage>_)return k.color;return(C=E[E.length-1])==null?void 0:C.color}};return(_,C)=>(I(),j("div",{class:ee([b(r).b(),b(r).m(_.type),b(r).is(_.status),{[b(r).m("without-text")]:!_.showText,[b(r).m("text-inside")]:_.textInside}]),role:"progressbar","aria-valuenow":_.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[_.type==="line"?(I(),j("div",{key:0,class:ee(b(r).b("bar"))},[w("div",{class:ee(b(r).be("bar","outer")),style:Nt({height:`${_.strokeWidth}px`})},[w("div",{class:ee([b(r).be("bar","inner"),{[b(r).bem("bar","inner","indeterminate")]:_.indeterminate},{[b(r).bem("bar","inner","striped")]:_.striped},{[b(r).bem("bar","inner","striped-flow")]:_.stripedFlow}]),style:Nt(b(o))},[(_.showText||_.$slots.default)&&_.textInside?(I(),j("div",{key:0,class:ee(b(r).be("bar","innerText"))},[Ne(_.$slots,"default",{percentage:_.percentage},()=>[w("span",null,se(b(m)),1)])],2)):be("v-if",!0)],6)],6)],2)):(I(),j("div",{key:1,class:ee(b(r).b("circle")),style:Nt({height:`${_.width}px`,width:`${_.width}px`})},[(I(),j("svg",{viewBox:"0 0 100 100"},[w("path",{class:ee(b(r).be("circle","track")),d:b(s),stroke:`var(${b(r).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":_.strokeLinecap,"stroke-width":b(a),fill:"none",style:Nt(b(d))},null,14,["d","stroke","stroke-linecap","stroke-width"]),w("path",{class:ee(b(r).be("circle","path")),d:b(s),stroke:b(h),fill:"none",opacity:_.percentage?1:0,"stroke-linecap":_.strokeLinecap,"stroke-width":b(a),style:Nt(b(f))},null,14,["d","stroke","opacity","stroke-linecap","stroke-width"])]))],6)),(_.showText||_.$slots.default)&&!_.textInside?(I(),j("div",{key:2,class:ee(b(r).e("text")),style:Nt({fontSize:`${b(p)}px`})},[Ne(_.$slots,"default",{percentage:_.percentage},()=>[_.status?(I(),Oe(b(Tt),{key:1},{default:A(()=>[(I(),Oe(_n(b(g))))]),_:1})):(I(),j("span",{key:0},se(b(m)),1))])],6)):be("v-if",!0)],10,["aria-valuenow"]))}});var n2t=vt(t2t,[["__file","progress.vue"]]);const C_=dn(n2t),r2t=ht({modelValue:{type:Number,default:0},id:{type:String,default:void 0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:$e([Array,Object]),default:()=>Eo(["","",""])},voidColor:{type:String,default:""},disabledVoidColor:{type:String,default:""},icons:{type:$e([Array,Object]),default:()=>[U5,U5,U5]},voidIcon:{type:mr,default:()=>Ld},disabledVoidIcon:{type:mr,default:()=>U5},disabled:Boolean,allowHalf:Boolean,showText:Boolean,showScore:Boolean,textColor:{type:String,default:""},texts:{type:$e(Array),default:()=>Eo(["Extremely bad","Disappointed","Fair","Satisfied","Surprise"])},scoreTemplate:{type:String,default:"{value}"},size:Aa,clearable:Boolean,...ts(["ariaLabel"])}),o2t={[En]:e=>Lt(e),[en]:e=>Lt(e)},a2t=ne({name:"ElRate"}),i2t=ne({...a2t,props:r2t,emits:o2t,setup(e,{expose:t,emit:n}){const r=e;function o(M,N){const L=$=>vn($),V=Object.keys(N).map($=>+$).filter($=>{const B=N[$];return(L(B)?B.excluded:!1)?M<$:M<=$}).sort(($,B)=>$-B),Y=N[V[0]];return L(Y)&&Y.value||Y}const a=kt(__,void 0),i=kt(Bh,void 0),s=ma(),l=nt("rate"),{inputId:u,isLabeledByFormItem:c}=vd(r,{formItemContext:i}),d=X(r.modelValue),f=X(-1),h=X(!0),g=K(()=>[l.b(),l.m(s.value)]),p=K(()=>r.disabled||(a==null?void 0:a.disabled)),m=K(()=>l.cssVarBlock({"void-color":r.voidColor,"disabled-void-color":r.disabledVoidColor,"fill-color":C.value})),v=K(()=>{let M="";return r.showScore?M=r.scoreTemplate.replace(/\{\s*value\s*\}/,p.value?`${r.modelValue}`:`${d.value}`):r.showText&&(M=r.texts[Math.ceil(d.value)-1]),M}),y=K(()=>r.modelValue*100-Math.floor(r.modelValue)*100),_=K(()=>ct(r.colors)?{[r.lowThreshold]:r.colors[0],[r.highThreshold]:{value:r.colors[1],excluded:!0},[r.max]:r.colors[2]}:r.colors),C=K(()=>{const M=o(d.value,_.value);return vn(M)?"":M}),S=K(()=>{let M="";return p.value?M=`${y.value}%`:r.allowHalf&&(M="50%"),{color:C.value,width:M}}),E=K(()=>{let M=ct(r.icons)?[...r.icons]:{...r.icons};return M=Jd(M),ct(M)?{[r.lowThreshold]:M[0],[r.highThreshold]:{value:M[1],excluded:!0},[r.max]:M[2]}:M}),k=K(()=>o(r.modelValue,E.value)),O=K(()=>p.value?$t(r.disabledVoidIcon)?r.disabledVoidIcon:Jd(r.disabledVoidIcon):$t(r.voidIcon)?r.voidIcon:Jd(r.voidIcon)),T=K(()=>o(d.value,E.value));function P(M){const N=p.value&&y.value>0&&M-1r.modelValue,L=r.allowHalf&&h.value&&M-.5<=d.value&&M>d.value;return N||L}function U(M){r.clearable&&M===r.modelValue&&(M=0),n(en,M),r.modelValue!==M&&n(En,M)}function F(M){p.value||(r.allowHalf&&h.value?U(d.value):U(M))}function H(M){if(p.value)return;let N=d.value;const L=M.code;return L===St.up||L===St.right?(r.allowHalf?N+=.5:N+=1,M.stopPropagation(),M.preventDefault()):(L===St.left||L===St.down)&&(r.allowHalf?N-=.5:N-=1,M.stopPropagation(),M.preventDefault()),N=N<0?0:N,N=N>r.max?r.max:N,n(en,N),n(En,N),N}function R(M,N){if(!p.value){if(r.allowHalf&&N){let L=N.target;jl(L,l.e("item"))&&(L=L.querySelector(`.${l.e("icon")}`)),(L.clientWidth===0||jl(L,l.e("decimal")))&&(L=L.parentNode),h.value=N.offsetX*2<=L.clientWidth,d.value=h.value?M-.5:M}else d.value=M;f.value=M}}function z(){p.value||(r.allowHalf&&(h.value=r.modelValue!==Math.floor(r.modelValue)),d.value=r.modelValue,f.value=-1)}return Ze(()=>r.modelValue,M=>{d.value=M,h.value=r.modelValue!==Math.floor(r.modelValue)}),r.modelValue||n(en,0),t({setCurrentValue:R,resetCurrentValue:z}),(M,N)=>{var L;return I(),j("div",{id:b(u),class:ee([b(g),b(l).is("disabled",b(p))]),role:"slider","aria-label":b(c)?void 0:M.ariaLabel||"rating","aria-labelledby":b(c)?(L=b(i))==null?void 0:L.labelId:void 0,"aria-valuenow":d.value,"aria-valuetext":b(v)||void 0,"aria-valuemin":"0","aria-valuemax":M.max,tabindex:"0",style:Nt(b(m)),onKeydown:H},[(I(!0),j(tt,null,wt(M.max,(V,Y)=>(I(),j("span",{key:Y,class:ee(b(l).e("item")),onMousemove:$=>R(V,$),onMouseleave:z,onClick:$=>F(V)},[D(b(Tt),{class:ee([b(l).e("icon"),{hover:f.value===V},b(l).is("active",V<=d.value)])},{default:A(()=>[P(V)?be("v-if",!0):(I(),j(tt,{key:0},[rn((I(),Oe(_n(b(T)),null,null,512)),[[Pn,V<=d.value]]),rn((I(),Oe(_n(b(O)),null,null,512)),[[Pn,!(V<=d.value)]])],64)),P(V)?(I(),j(tt,{key:1},[(I(),Oe(_n(b(O)),{class:ee([b(l).em("decimal","box")])},null,8,["class"])),D(b(Tt),{style:Nt(b(S)),class:ee([b(l).e("icon"),b(l).e("decimal")])},{default:A(()=>[(I(),Oe(_n(b(k))))]),_:1},8,["style","class"])],64)):be("v-if",!0)]),_:2},1032,["class"])],42,["onMousemove","onClick"]))),128)),M.showText||M.showScore?(I(),j("span",{key:0,class:ee(b(l).e("text")),style:Nt({color:M.textColor})},se(b(v)),7)):be("v-if",!0)],46,["id","aria-label","aria-labelledby","aria-valuenow","aria-valuetext","aria-valuemax"])}}});var s2t=vt(i2t,[["__file","rate.vue"]]);const l2t=dn(s2t),t2={primary:"icon-primary",success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},qhe={[t2.primary]:Wd,[t2.success]:o5e,[t2.warning]:hT,[t2.error]:IL,[t2.info]:Wd},u2t=ht({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{type:String,values:["primary","success","warning","info","error"],default:"info"}}),c2t=ne({name:"ElResult"}),d2t=ne({...c2t,props:u2t,setup(e){const t=e,n=nt("result"),r=K(()=>{const o=t.icon,a=o&&t2[o]?t2[o]:"icon-info",i=qhe[a]||qhe["icon-info"];return{class:a,component:i}});return(o,a)=>(I(),j("div",{class:ee(b(n).b())},[w("div",{class:ee(b(n).e("icon"))},[Ne(o.$slots,"icon",{},()=>[b(r).component?(I(),Oe(_n(b(r).component),{key:0,class:ee(b(r).class)},null,8,["class"])):be("v-if",!0)])],2),o.title||o.$slots.title?(I(),j("div",{key:0,class:ee(b(n).e("title"))},[Ne(o.$slots,"title",{},()=>[w("p",null,se(o.title),1)])],2)):be("v-if",!0),o.subTitle||o.$slots["sub-title"]?(I(),j("div",{key:1,class:ee(b(n).e("subtitle"))},[Ne(o.$slots,"sub-title",{},()=>[w("p",null,se(o.subTitle),1)])],2)):be("v-if",!0),o.$slots.extra?(I(),j("div",{key:2,class:ee(b(n).e("extra"))},[Ne(o.$slots,"extra")],2)):be("v-if",!0)],2))}});var f2t=vt(d2t,[["__file","result.vue"]]);const h2t=dn(f2t),p2t=["start","center","end","space-around","space-between","space-evenly"],g2t=["top","middle","bottom"],v2t=ht({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:p2t,default:"start"},align:{type:String,values:g2t}}),m2t=ne({name:"ElRow"}),y2t=ne({...m2t,props:v2t,setup(e){const t=e,n=nt("row"),r=K(()=>t.gutter);Fn(ASe,{gutter:r});const o=K(()=>{const i={};return t.gutter&&(i.marginRight=i.marginLeft=`-${t.gutter/2}px`),i}),a=K(()=>[n.b(),n.is(`justify-${t.justify}`,t.justify!=="start"),n.is(`align-${t.align}`,!!t.align)]);return(i,s)=>(I(),Oe(_n(i.tag),{class:ee(b(a)),style:Nt(b(o))},{default:A(()=>[Ne(i.$slots,"default")]),_:3},8,["class","style"]))}});var b2t=vt(y2t,[["__file","row.vue"]]);const s1=dn(b2t),_2t=ne({props:{item:{type:Object,required:!0},style:{type:Object},height:Number},setup(){return{ns:nt("select")}}});function w2t(e,t,n,r,o,a){return I(),j("div",{class:ee(e.ns.be("group","title")),style:Nt({...e.style,lineHeight:`${e.height}px`})},se(e.item.label),7)}var C2t=vt(_2t,[["render",w2t],["__file","group-item.vue"]]);function x2t(e,{emit:t}){return{hoverItem:()=>{e.disabled||t("hover",e.index)},selectOptionClick:()=>{e.disabled||t("select",e.item,e.index)}}}const ODe={label:"label",value:"value",disabled:"disabled",options:"options"};function YL(e){const t=K(()=>({...ODe,...e.props}));return{aliasProps:t,getLabel:i=>na(i,t.value.label),getValue:i=>na(i,t.value.value),getDisabled:i=>na(i,t.value.disabled),getOptions:i=>na(i,t.value.options)}}const S2t=ht({allowCreate:Boolean,autocomplete:{type:$e(String),default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:mr,default:Yh},effect:{type:$e(String),default:"light"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},defaultFirstOption:Boolean,disabled:Boolean,estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:Function,height:{type:Number,default:274},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,modelValue:{type:$e([Array,String,Number,Boolean,Object])},multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:Function,reserveKeyword:{type:Boolean,default:!0},options:{type:$e(Array),required:!0},placeholder:{type:String},teleported:Qo.teleported,persistent:{type:Boolean,default:!0},popperClass:{type:String,default:""},popperOptions:{type:$e(Object),default:()=>({})},remote:Boolean,size:Aa,props:{type:$e(Object),default:()=>ODe},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:Boolean,validateEvent:{type:Boolean,default:!0},offset:{type:Number,default:12},showArrow:{type:Boolean,default:!0},placement:{type:$e(String),values:Hg,default:"bottom-start"},fallbackPlacements:{type:$e(Array),default:["bottom-start","top-start","right","left"]},tagType:{...Og.type,default:"info"},tagEffect:{...Og.effect,default:"light"},tabindex:{type:[String,Number],default:0},appendTo:Qo.appendTo,fitInputWidth:{type:[Boolean,Number],default:!0,validator(e){return hr(e)||Lt(e)}},suffixIcon:{type:mr,default:lc},...vC,...ts(["ariaLabel"])}),D2t=ht({data:Array,disabled:Boolean,hovering:Boolean,item:{type:$e(Object),required:!0},index:Number,style:Object,selected:Boolean,created:Boolean}),E2t={[en]:e=>!0,[En]:e=>!0,"remove-tag":e=>!0,"visible-change":e=>!0,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0},k2t={hover:e=>Lt(e),select:(e,t)=>!0},Hre=Symbol("ElSelectV2Injection"),A2t=ne({props:D2t,emits:k2t,setup(e,{emit:t}){const n=kt(Hre),r=nt("select"),{hoverItem:o,selectOptionClick:a}=x2t(e,{emit:t}),{getLabel:i}=YL(n.props);return{ns:r,hoverItem:o,selectOptionClick:a,getLabel:i}}});function T2t(e,t,n,r,o,a){return I(),j("li",{"aria-selected":e.selected,style:Nt(e.style),class:ee([e.ns.be("dropdown","item"),e.ns.is("selected",e.selected),e.ns.is("disabled",e.disabled),e.ns.is("created",e.created),e.ns.is("hovering",e.hovering)]),onMousemove:e.hoverItem,onClick:zt(e.selectOptionClick,["stop"])},[Ne(e.$slots,"default",{item:e.item,index:e.index,disabled:e.disabled},()=>[w("span",null,se(e.getLabel(e.item)),1)])],46,["aria-selected","onMousemove","onClick"])}var O2t=vt(A2t,[["render",T2t],["__file","option-item.vue"]]),Khe=Number.isNaN||function(t){return typeof t=="number"&&t!==t};function F2t(e,t){return!!(e===t||Khe(e)&&Khe(t))}function I2t(e,t){if(e.length!==t.length)return!1;for(var n=0;n{const t=bn().proxy.$props;return K(()=>{const n=(r,o,a)=>({});return t.perfMode?DL(n):M2t(n)})},ZY=50,JM="itemRendered",ZM="scroll",c3="forward",QM="backward",Xc="auto",XL="smart",HD="start",yh="center",WD="end",y8="horizontal",Wre="vertical",P2t="ltr",O3="rtl",qD="negative",qre="positive-ascending",Kre="positive-descending",$2t={[y8]:"left",[Wre]:"top"},B2t=20,R2t={[y8]:"deltaX",[Wre]:"deltaY"},N2t=({atEndEdge:e,atStartEdge:t,layout:n},r)=>{let o,a=0;const i=l=>l<0&&t.value||l>0&&e.value;return{hasReachedEdge:i,onWheel:l=>{Hb(o);const u=l[R2t[n.value]];i(a)&&i(a+u)||(a+=u,tre()||l.preventDefault(),o=$m(()=>{r(a),a=0}))}}},QY=mf({type:$e([Number,Function]),required:!0}),eX=mf({type:Number}),tX=mf({type:Number,default:2}),L2t=mf({type:String,values:["ltr","rtl"],default:"ltr"}),nX=mf({type:Number,default:0}),eP=mf({type:Number,required:!0}),IDe=mf({type:String,values:["horizontal","vertical"],default:Wre}),MDe=ht({className:{type:String,default:""},containerElement:{type:$e([String,Object]),default:"div"},data:{type:$e(Array),default:()=>Eo([])},direction:L2t,height:{type:[String,Number],required:!0},innerElement:{type:[String,Object],default:"div"},style:{type:$e([Object,String,Array])},useIsScrolling:{type:Boolean,default:!1},width:{type:[Number,String],required:!1},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:{type:Boolean,default:!1}}),PDe=ht({cache:tX,estimatedItemSize:eX,layout:IDe,initScrollOffset:nX,total:eP,itemSize:QY,...MDe}),rX={type:Number,default:6},$De={type:Number,default:0},BDe={type:Number,default:2},hb=ht({columnCache:tX,columnWidth:QY,estimatedColumnWidth:eX,estimatedRowHeight:eX,initScrollLeft:nX,initScrollTop:nX,itemKey:{type:$e(Function),default:({columnIndex:e,rowIndex:t})=>`${t}:${e}`},rowCache:tX,rowHeight:QY,totalColumn:eP,totalRow:eP,hScrollbarSize:rX,vScrollbarSize:rX,scrollbarStartGap:$De,scrollbarEndGap:BDe,role:String,...MDe}),RDe=ht({alwaysOn:Boolean,class:String,layout:IDe,total:eP,ratio:{type:Number,required:!0},clientSize:{type:Number,required:!0},scrollFrom:{type:Number,required:!0},scrollbarSize:rX,startGap:$De,endGap:BDe,visible:Boolean}),p2=(e,t)=>ee===P2t||e===O3||e===y8,Ghe=e=>e===O3;let Q_=null;function tP(e=!1){if(Q_===null||e){const t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";const r=document.createElement("div"),o=r.style;return o.width="100px",o.height="100px",t.appendChild(r),document.body.appendChild(t),t.scrollLeft>0?Q_=Kre:(t.scrollLeft=1,t.scrollLeft===0?Q_=qD:Q_=qre),document.body.removeChild(t),Q_}return Q_}function U2t({move:e,size:t,bar:n},r){const o={},a=`translate${n.axis}(${e}px)`;return o[n.size]=t,o.transform=a,r==="horizontal"?o.height="100%":o.width="100%",o}const oX=ne({name:"ElVirtualScrollBar",props:RDe,emits:["scroll","start-move","stop-move"],setup(e,{emit:t}){const n=K(()=>e.startGap+e.endGap),r=nt("virtual-scrollbar"),o=nt("scrollbar"),a=X(),i=X();let s=null,l=null;const u=Bn({isDragging:!1,traveled:0}),c=K(()=>A5e[e.layout]),d=K(()=>e.clientSize-b(n)),f=K(()=>({position:"absolute",width:`${y8===e.layout?d.value:e.scrollbarSize}px`,height:`${y8===e.layout?e.scrollbarSize:d.value}px`,[$2t[e.layout]]:"2px",right:"2px",bottom:"2px",borderRadius:"4px"})),h=K(()=>{const E=e.ratio;if(E>=100)return Number.POSITIVE_INFINITY;if(E>=50)return E*d.value/100;const k=d.value/3;return Math.floor(Math.min(Math.max(E*d.value,B2t),k))}),g=K(()=>{if(!Number.isFinite(h.value))return{display:"none"};const E=`${h.value}px`;return U2t({bar:c.value,size:E,move:u.traveled},e.layout)}),p=K(()=>Math.ceil(e.clientSize-h.value-b(n))),m=()=>{window.addEventListener("mousemove",C),window.addEventListener("mouseup",_);const E=b(i);E&&(l=document.onselectstart,document.onselectstart=()=>!1,E.addEventListener("touchmove",C,{passive:!0}),E.addEventListener("touchend",_))},v=()=>{window.removeEventListener("mousemove",C),window.removeEventListener("mouseup",_),document.onselectstart=l,l=null;const E=b(i);E&&(E.removeEventListener("touchmove",C),E.removeEventListener("touchend",_))},y=E=>{E.stopImmediatePropagation(),!(E.ctrlKey||[1,2].includes(E.button))&&(u.isDragging=!0,u[c.value.axis]=E.currentTarget[c.value.offset]-(E[c.value.client]-E.currentTarget.getBoundingClientRect()[c.value.direction]),t("start-move"),m())},_=()=>{u.isDragging=!1,u[c.value.axis]=0,t("stop-move"),v()},C=E=>{const{isDragging:k}=u;if(!k||!i.value||!a.value)return;const O=u[c.value.axis];if(!O)return;Hb(s);const T=(a.value.getBoundingClientRect()[c.value.direction]-E[c.value.client])*-1,P=i.value[c.value.offset]-O,U=T-P;s=$m(()=>{u.traveled=Math.max(0,Math.min(U,p.value)),t("scroll",U,p.value)})},S=E=>{const k=Math.abs(E.target.getBoundingClientRect()[c.value.direction]-E[c.value.client]),O=i.value[c.value.offset]/2,T=k-O;u.traveled=Math.max(0,Math.min(T,p.value)),t("scroll",T,p.value)};return Ze(()=>e.scrollFrom,E=>{u.isDragging||(u.traveled=Math.ceil(E*p.value))}),Ar(()=>{v()}),()=>Vt("div",{role:"presentation",ref:a,class:[r.b(),e.class,(e.alwaysOn||u.isDragging)&&"always-on"],style:f.value,onMousedown:zt(S,["stop","prevent"]),onTouchstartPrevent:y},Vt("div",{ref:i,class:o.e("thumb"),style:g.value,onMousedown:y},[]))}}),NDe=({name:e,getOffset:t,getItemSize:n,getItemOffset:r,getEstimatedTotalSize:o,getStartIndexForOffset:a,getStopIndexForStartIndex:i,initCache:s,clearCache:l,validateProps:u})=>ne({name:e??"ElVirtualList",props:PDe,emits:[JM,ZM],setup(c,{emit:d,expose:f}){u(c);const h=bn(),g=nt("vl"),p=X(s(c,h)),m=FDe(),v=X(),y=X(),_=X(),C=X({isScrolling:!1,scrollDir:"forward",scrollOffset:Lt(c.initScrollOffset)?c.initScrollOffset:0,updateRequested:!1,isScrollbarDragging:!1,scrollbarAlwaysOn:c.scrollbarAlwaysOn}),S=K(()=>{const{total:W,cache:J}=c,{isScrolling:oe,scrollDir:ie,scrollOffset:Z}=b(C);if(W===0)return[0,0,0,0];const de=a(c,Z,b(p)),we=i(c,de,Z,b(p)),Be=!oe||ie===QM?Math.max(1,J):1,ke=!oe||ie===c3?Math.max(1,J):1;return[Math.max(0,de-Be),Math.max(0,Math.min(W-1,we+ke)),de,we]}),E=K(()=>o(c,b(p))),k=K(()=>KD(c.layout)),O=K(()=>[{position:"relative",[`overflow-${k.value?"x":"y"}`]:"scroll",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:c.direction,height:Lt(c.height)?`${c.height}px`:c.height,width:Lt(c.width)?`${c.width}px`:c.width},c.style]),T=K(()=>{const W=b(E),J=b(k);return{height:J?"100%":`${W}px`,pointerEvents:b(C).isScrolling?"none":void 0,width:J?`${W}px`:"100%"}}),P=K(()=>k.value?c.width:c.height),{onWheel:U}=N2t({atStartEdge:K(()=>C.value.scrollOffset<=0),atEndEdge:K(()=>C.value.scrollOffset>=E.value),layout:K(()=>c.layout)},W=>{var J,oe;(oe=(J=_.value).onMouseUp)==null||oe.call(J),N(Math.min(C.value.scrollOffset+W,E.value-P.value))});xr(v,"wheel",U,{passive:!1});const F=()=>{const{total:W}=c;if(W>0){const[Z,de,we,Be]=b(S);d(JM,Z,de,we,Be)}const{scrollDir:J,scrollOffset:oe,updateRequested:ie}=b(C);d(ZM,J,oe,ie)},H=W=>{const{clientHeight:J,scrollHeight:oe,scrollTop:ie}=W.currentTarget,Z=b(C);if(Z.scrollOffset===ie)return;const de=Math.max(0,Math.min(ie,oe-J));C.value={...Z,isScrolling:!0,scrollDir:p2(Z.scrollOffset,de),scrollOffset:de,updateRequested:!1},It(Y)},R=W=>{const{clientWidth:J,scrollLeft:oe,scrollWidth:ie}=W.currentTarget,Z=b(C);if(Z.scrollOffset===oe)return;const{direction:de}=c;let we=oe;if(de===O3)switch(tP()){case qD:{we=-oe;break}case Kre:{we=ie-J-oe;break}}we=Math.max(0,Math.min(we,ie-J)),C.value={...Z,isScrolling:!0,scrollDir:p2(Z.scrollOffset,we),scrollOffset:we,updateRequested:!1},It(Y)},z=W=>{b(k)?R(W):H(W),F()},M=(W,J)=>{const oe=(E.value-P.value)/J*W;N(Math.min(E.value-P.value,oe))},N=W=>{W=Math.max(W,0),W!==b(C).scrollOffset&&(C.value={...b(C),scrollOffset:W,scrollDir:p2(b(C).scrollOffset,W),updateRequested:!0},It(Y))},L=(W,J=Xc)=>{const{scrollOffset:oe}=b(C);W=Math.max(0,Math.min(W,c.total-1)),N(t(c,W,J,oe,b(p)))},V=W=>{const{direction:J,itemSize:oe,layout:ie}=c,Z=m.value(l&&oe,l&&ie,l&&J);let de;if(Gn(Z,String(W)))de=Z[W];else{const we=r(c,W,b(p)),Be=n(c,W,b(p)),ke=b(k),ae=J===O3,le=ke?we:0;Z[W]=de={position:"absolute",left:ae?void 0:`${le}px`,right:ae?`${le}px`:void 0,top:ke?0:`${we}px`,height:ke?"100%":`${Be}px`,width:ke?`${Be}px`:"100%"}}return de},Y=()=>{C.value.isScrolling=!1,It(()=>{m.value(-1,null,null)})},$=()=>{const W=v.value;W&&(W.scrollTop=0)};Kt(()=>{if(!Nn)return;const{initScrollOffset:W}=c,J=b(v);Lt(W)&&J&&(b(k)?J.scrollLeft=W:J.scrollTop=W),F()}),gf(()=>{const{direction:W,layout:J}=c,{scrollOffset:oe,updateRequested:ie}=b(C),Z=b(v);if(ie&&Z)if(J===y8)if(W===O3)switch(tP()){case qD:{Z.scrollLeft=-oe;break}case qre:{Z.scrollLeft=oe;break}default:{const{clientWidth:de,scrollWidth:we}=Z;Z.scrollLeft=we-de-oe;break}}else Z.scrollLeft=oe;else Z.scrollTop=oe}),dL(()=>{b(v).scrollTop=b(C).scrollOffset});const B={ns:g,clientSize:P,estimatedTotalSize:E,windowStyle:O,windowRef:v,innerRef:y,innerStyle:T,itemsToRender:S,scrollbarRef:_,states:C,getItemStyle:V,onScroll:z,onScrollbarScroll:M,onWheel:U,scrollTo:N,scrollToItem:L,resetScrollTop:$};return f({windowRef:v,innerRef:y,getItemStyleCache:m,scrollTo:N,scrollToItem:L,resetScrollTop:$,states:C}),B},render(c){var d;const{$slots:f,className:h,clientSize:g,containerElement:p,data:m,getItemStyle:v,innerElement:y,itemsToRender:_,innerStyle:C,layout:S,total:E,onScroll:k,onScrollbarScroll:O,states:T,useIsScrolling:P,windowStyle:U,ns:F}=c,[H,R]=_,z=_n(p),M=_n(y),N=[];if(E>0)for(let $=H;$<=R;$++)N.push(Vt(tt,{key:$},(d=f.default)==null?void 0:d.call(f,{data:m,index:$,isScrolling:P?T.isScrolling:void 0,style:v($)})));const L=[Vt(M,{style:C,ref:"innerRef"},$t(M)?N:{default:()=>N})],V=Vt(oX,{ref:"scrollbarRef",clientSize:g,layout:S,onScroll:O,ratio:g*100/this.estimatedTotalSize,scrollFrom:T.scrollOffset/(this.estimatedTotalSize-g),total:E}),Y=Vt(z,{class:[F.e("window"),h],style:U,onScroll:k,ref:"windowRef",key:0},$t(z)?[L]:{default:()=>[L]});return Vt("div",{key:0,class:[F.e("wrapper"),T.scrollbarAlwaysOn?"always-on":""]},[Y,V])}}),LDe=NDe({name:"ElFixedSizeList",getItemOffset:({itemSize:e},t)=>t*e,getItemSize:({itemSize:e})=>e,getEstimatedTotalSize:({total:e,itemSize:t})=>t*e,getOffset:({height:e,total:t,itemSize:n,layout:r,width:o},a,i,s)=>{const l=KD(r)?o:e,u=Math.max(0,t*n-l),c=Math.min(u,a*n),d=Math.max(0,(a+1)*n-l);switch(i===XL&&(s>=d-l&&s<=c+l?i=Xc:i=yh),i){case HD:return c;case WD:return d;case yh:{const f=Math.round(d+(c-d)/2);return fu+Math.floor(l/2)?u:f}case Xc:default:return s>=d&&s<=c?s:sMath.max(0,Math.min(e-1,Math.floor(n/t))),getStopIndexForStartIndex:({height:e,total:t,itemSize:n,layout:r,width:o},a,i)=>{const s=a*n,l=KD(r)?o:e,u=Math.ceil((l+i-s)/n);return Math.max(0,Math.min(t-1,a+u-1))},initCache(){},clearCache:!0,validateProps(){}}),d3=(e,t,n)=>{const{itemSize:r}=e,{items:o,lastVisitedIndex:a}=n;if(t>a){let i=0;if(a>=0){const s=o[a];i=s.offset+s.size}for(let s=a+1;s<=t;s++){const l=r(s);o[s]={offset:i,size:l},i+=l}n.lastVisitedIndex=t}return o[t]},V2t=(e,t,n)=>{const{items:r,lastVisitedIndex:o}=t;return(o>0?r[o].offset:0)>=n?UDe(e,t,0,o,n):z2t(e,t,Math.max(0,o),n)},UDe=(e,t,n,r,o)=>{for(;n<=r;){const a=n+Math.floor((r-n)/2),i=d3(e,a,t).offset;if(i===o)return a;io&&(r=a-1)}return Math.max(0,n-1)},z2t=(e,t,n,r)=>{const{total:o}=e;let a=1;for(;n{let o=0;if(r>=e&&(r=e-1),r>=0){const s=t[r];o=s.offset+s.size}const i=(e-r-1)*n;return o+i},j2t=NDe({name:"ElDynamicSizeList",getItemOffset:(e,t,n)=>d3(e,t,n).offset,getItemSize:(e,t,{items:n})=>n[t].size,getEstimatedTotalSize:Yhe,getOffset:(e,t,n,r,o)=>{const{height:a,layout:i,width:s}=e,l=KD(i)?s:a,u=d3(e,t,o),c=Yhe(e,o),d=Math.max(0,Math.min(c-l,u.offset)),f=Math.max(0,u.offset-l+u.size);switch(n===XL&&(r>=f-l&&r<=d+l?n=Xc:n=yh),n){case HD:return d;case WD:return f;case yh:return Math.round(f+(d-f)/2);case Xc:default:return r>=f&&r<=d?r:rV2t(e,n,t),getStopIndexForStartIndex:(e,t,n,r)=>{const{height:o,total:a,layout:i,width:s}=e,l=KD(i)?s:o,u=d3(e,t,r),c=n+l;let d=u.offset+u.size,f=t;for(;f{var a,i;n.lastVisitedIndex=Math.min(n.lastVisitedIndex,r-1),(a=t.exposed)==null||a.getItemStyleCache(-1),o&&((i=t.proxy)==null||i.$forceUpdate())},n},clearCache:!1,validateProps:({itemSize:e})=>{}}),H2t={loading:Boolean,data:{type:Array,required:!0},hoveringIndex:Number,width:Number};var W2t=ne({name:"ElSelectDropdown",props:H2t,setup(e,{slots:t,expose:n}){const r=kt(Hre),o=nt("select"),{getLabel:a,getValue:i,getDisabled:s}=YL(r.props),l=X([]),u=X(),c=K(()=>e.data.length);Ze(()=>c.value,()=>{var U,F;(F=(U=r.tooltipRef.value)==null?void 0:U.updatePopper)==null||F.call(U)});const d=K(()=>Ln(r.props.estimatedOptionHeight)),f=K(()=>d.value?{itemSize:r.props.itemHeight}:{estimatedSize:r.props.estimatedOptionHeight,itemSize:U=>l.value[U]}),h=(U=[],F)=>{const{props:{valueKey:H}}=r;return vn(F)?U&&U.some(R=>Cr(na(R,H))===na(F,H)):U.includes(F)},g=(U,F)=>{if(vn(F)){const{valueKey:H}=r.props;return na(U,H)===na(F,H)}else return U===F},p=(U,F)=>r.props.multiple?h(U,i(F)):g(U,i(F)),m=(U,F)=>{const{disabled:H,multiple:R,multipleLimit:z}=r.props;return H||!F&&(R?z>0&&U.length>=z:!1)},v=U=>e.hoveringIndex===U;n({listRef:u,isSized:d,isItemDisabled:m,isItemHovering:v,isItemSelected:p,scrollToItem:U=>{const F=u.value;F&&F.scrollToItem(U)},resetScrollTop:()=>{const U=u.value;U&&U.resetScrollTop()}});const S=U=>{const{index:F,data:H,style:R}=U,z=b(d),{itemSize:M,estimatedSize:N}=b(f),{modelValue:L}=r.props,{onSelect:V,onHover:Y}=r,$=H[F];if($.type==="Group")return D(C2t,{item:$,style:R,height:z?M:N},null);const B=p(L,$),W=m(L,B),J=v(F);return D(O2t,Dn(U,{selected:B,disabled:s($)||W,created:!!$.created,hovering:J,item:$,onSelect:V,onHover:Y}),{default:oe=>{var ie;return((ie=t.default)==null?void 0:ie.call(t,oe))||D("span",null,[a($)])}})},{onKeyboardNavigate:E,onKeyboardSelect:k}=r,O=()=>{E("forward")},T=()=>{E("backward")},P=U=>{const{code:F}=U,{tab:H,esc:R,down:z,up:M,enter:N,numpadEnter:L}=St;switch([R,z,M,N,L].includes(F)&&(U.preventDefault(),U.stopPropagation()),F){case H:case R:break;case z:O();break;case M:T();break;case N:case L:k();break}};return()=>{var U,F,H,R;const{data:z,width:M}=e,{height:N,multiple:L,scrollbarAlwaysOn:V}=r.props,Y=K(()=>LM?!0:V),$=b(d)?LDe:j2t;return D("div",{class:[o.b("dropdown"),o.is("multiple",L)],style:{width:`${M}px`}},[(U=t.header)==null?void 0:U.call(t),((F=t.loading)==null?void 0:F.call(t))||((H=t.empty)==null?void 0:H.call(t))||D($,Dn({ref:u},b(f),{className:o.be("dropdown","list"),scrollbarAlwaysOn:Y.value,data:z,height:N,width:M,total:z.length,onKeydown:P}),{default:B=>D(S,B,null)}),(R=t.footer)==null?void 0:R.call(t)])}}});function q2t(e,t){const{aliasProps:n,getLabel:r,getValue:o}=YL(e),a=X(0),i=X(),s=K(()=>e.allowCreate&&e.filterable);function l(h){const g=p=>r(p)===h;return e.options&&e.options.some(g)||t.createdOptions.some(g)}function u(h){s.value&&(e.multiple&&h.created?a.value++:i.value=h)}function c(h){if(s.value)if(h&&h.length>0){if(l(h))return;const g={[n.value.value]:h,[n.value.label]:h,created:!0,[n.value.disabled]:!1};t.createdOptions.length>=a.value?t.createdOptions[a.value]=g:t.createdOptions.push(g)}else if(e.multiple)t.createdOptions.length=a.value;else{const g=i.value;t.createdOptions.length=0,g&&g.created&&t.createdOptions.push(g)}}function d(h){if(!s.value||!h||!h.created||h.created&&e.reserveKeyword&&t.inputValue===r(h))return;const g=t.createdOptions.findIndex(p=>o(p)===o(h));~g&&(t.createdOptions.splice(g,1),a.value--)}function f(){s.value&&(t.createdOptions.length=0,a.value=0)}return{createNewOption:c,removeNewOption:d,selectNewOption:u,clearAllNewOption:f}}const K2t=(e,t)=>{const{t:n}=Un(),r=nt("select"),o=nt("input"),{form:a,formItem:i}=ws(),{inputId:s}=vd(e,{formItemContext:i}),{aliasProps:l,getLabel:u,getValue:c,getDisabled:d,getOptions:f}=YL(e),{valueOnClear:h,isEmptyValue:g}=TL(e),p=Bn({inputValue:"",cachedOptions:[],createdOptions:[],hoveringIndex:-1,inputHovering:!1,selectionWidth:0,collapseItemWidth:0,previousQuery:null,previousValue:void 0,selectedLabel:"",menuVisibleOnFocus:!1,isBeforeHide:!1}),m=X(-1),v=X(),y=X(),_=X(),C=X(),S=X(),E=X(),k=X(),O=X(),T=X(),P=X(),{isComposing:U,handleCompositionStart:F,handleCompositionEnd:H,handleCompositionUpdate:R}=vT({afterComposition:Ve=>gt(Ve)}),{wrapperRef:z,isFocused:M,handleBlur:N}=t1(S,{beforeFocus(){return B.value},afterFocus(){e.automaticDropdown&&!$.value&&($.value=!0,p.menuVisibleOnFocus=!0)},beforeBlur(Ve){var Re,fe;return((Re=_.value)==null?void 0:Re.isFocusInsideContent(Ve))||((fe=C.value)==null?void 0:fe.isFocusInsideContent(Ve))},afterBlur(){var Ve;$.value=!1,p.menuVisibleOnFocus=!1,e.validateEvent&&((Ve=i==null?void 0:i.validate)==null||Ve.call(i,"blur").catch(Re=>void 0))}}),L=K(()=>le("")),V=K(()=>e.loading?!1:e.options.length>0||p.createdOptions.length>0),Y=X([]),$=X(!1),B=K(()=>e.disabled||(a==null?void 0:a.disabled)),W=K(()=>{var Ve;return(Ve=a==null?void 0:a.statusIcon)!=null?Ve:!1}),J=K(()=>{const Ve=Y.value.length*e.itemHeight;return Ve>e.height?e.height:Ve}),oe=K(()=>e.multiple?ct(e.modelValue)&&e.modelValue.length>0:!g(e.modelValue)),ie=K(()=>e.clearable&&!B.value&&p.inputHovering&&oe.value),Z=K(()=>e.remote&&e.filterable?"":e.suffixIcon),de=K(()=>Z.value&&r.is("reverse",$.value)),we=K(()=>(i==null?void 0:i.validateState)||""),Be=K(()=>{if(we.value)return $L[we.value]}),ke=K(()=>e.remote?300:0),ae=K(()=>e.loading?e.loadingText||n("el.select.loading"):e.remote&&!p.inputValue&&!V.value?!1:e.filterable&&p.inputValue&&V.value&&Y.value.length===0?e.noMatchText||n("el.select.noMatch"):V.value?null:e.noDataText||n("el.select.noData")),le=Ve=>{const Re=new RegExp(_re(Ve),"i"),fe=e.filterable&&Rt(e.filterMethod),Ct=e.filterable&&e.remote&&Rt(e.remoteMethod),Yt=Pt=>fe||Ct?!0:Ve?Re.test(u(Pt)||""):!0;return e.loading?[]:[...p.createdOptions,...e.options].reduce((Pt,qt)=>{const an=f(qt);if(ct(an)){const kn=an.filter(Yt);kn.length>0&&Pt.push({label:u(qt),type:"Group"},...kn)}else(e.remote||Yt(qt))&&Pt.push(qt);return Pt},[])},q=()=>{Y.value=le(p.inputValue)},pe=K(()=>{const Ve=new Map;return L.value.forEach((Re,fe)=>{Ve.set(je(c(Re)),{option:Re,index:fe})}),Ve}),he=K(()=>{const Ve=new Map;return Y.value.forEach((Re,fe)=>{Ve.set(je(c(Re)),{option:Re,index:fe})}),Ve}),re=K(()=>Y.value.every(Ve=>d(Ve))),ue=ma(),_e=K(()=>ue.value==="small"?"small":"default"),Pe=()=>{var Ve;if(Lt(e.fitInputWidth)){m.value=e.fitInputWidth;return}const Re=((Ve=v.value)==null?void 0:Ve.offsetWidth)||200;!e.fitInputWidth&&V.value?It(()=>{m.value=Math.max(Re,Ae())}):m.value=Re},Ae=()=>{var Ve,Re;const Ct=document.createElement("canvas").getContext("2d"),Yt=r.be("dropdown","item"),qt=(((Re=(Ve=O.value)==null?void 0:Ve.listRef)==null?void 0:Re.innerRef)||document).querySelector(`.${Yt}`);if(qt===null||Ct===null)return 0;const an=getComputedStyle(qt),kn=Number.parseFloat(an.paddingLeft)+Number.parseFloat(an.paddingRight);return Ct.font=`bold ${an.font.replace(new RegExp(`\\b${an.fontWeight}\\b`),"")}`,Y.value.reduce((mo,ui)=>{const Mn=Ct.measureText(u(ui));return Math.max(Mn.width,mo)},0)+kn},Ee=()=>{if(!y.value)return 0;const Ve=window.getComputedStyle(y.value);return Number.parseFloat(Ve.gap||"6px")},ye=K(()=>{const Ve=Ee();return{maxWidth:`${P.value&&e.maxCollapseTags===1?p.selectionWidth-p.collapseItemWidth-Ve:p.selectionWidth}px`}}),ve=K(()=>({maxWidth:`${p.selectionWidth}px`})),Ce=K(()=>ct(e.modelValue)?e.modelValue.length===0&&!p.inputValue:e.filterable?!p.inputValue:!0),ze=K(()=>{var Ve;const Re=(Ve=e.placeholder)!=null?Ve:n("el.select.placeholder");return e.multiple||!oe.value?Re:p.selectedLabel}),at=K(()=>{var Ve,Re;return(Re=(Ve=_.value)==null?void 0:Ve.popperRef)==null?void 0:Re.contentRef}),bt=K(()=>{if(e.multiple){const Ve=e.modelValue.length;if(e.modelValue.length>0&&he.value.has(e.modelValue[Ve-1])){const{index:Re}=he.value.get(e.modelValue[Ve-1]);return Re}}else if(!g(e.modelValue)&&he.value.has(e.modelValue)){const{index:Ve}=he.value.get(e.modelValue);return Ve}return-1}),Ft=K({get(){return $.value&&ae.value!==!1},set(Ve){$.value=Ve}}),Dt=K(()=>e.multiple?e.collapseTags?p.cachedOptions.slice(0,e.maxCollapseTags):p.cachedOptions:[]),He=K(()=>e.multiple?e.collapseTags?p.cachedOptions.slice(e.maxCollapseTags):[]:[]),{createNewOption:Fe,removeNewOption:Ue,selectNewOption:Se,clearAllNewOption:We}=q2t(e,p),Te=()=>{B.value||(p.menuVisibleOnFocus?p.menuVisibleOnFocus=!1:$.value=!$.value)},Ge=()=>{p.inputValue.length>0&&!$.value&&($.value=!0),Fe(p.inputValue),It(()=>{Zt(p.inputValue)})},Ot=tu(Ge,ke.value),Zt=Ve=>{p.previousQuery===Ve||U.value||(p.previousQuery=Ve,e.filterable&&Rt(e.filterMethod)?e.filterMethod(Ve):e.filterable&&e.remote&&Rt(e.remoteMethod)&&e.remoteMethod(Ve),e.defaultFirstOption&&(e.filterable||e.remote)&&Y.value.length?It(Wt):It(Qe))},Wt=()=>{const Ve=Y.value.filter(Ct=>!Ct.disabled&&Ct.type!=="Group"),Re=Ve.find(Ct=>Ct.created),fe=Ve[0];p.hoveringIndex=Mt(Y.value,Re||fe)},dt=Ve=>{mi(e.modelValue,Ve)||t(En,Ve)},Le=Ve=>{t(en,Ve),dt(Ve),p.previousValue=e.multiple?String(Ve):Ve,It(()=>{if(e.multiple&&ct(e.modelValue)){const Re=p.cachedOptions.slice(),fe=e.modelValue.map(Ct=>Sn(Ct,Re));mi(p.cachedOptions,fe)||(p.cachedOptions=fe)}else et(!0)})},Mt=(Ve=[],Re)=>{if(!vn(Re))return Ve.indexOf(Re);const fe=e.valueKey;let Ct=-1;return Ve.some((Yt,Pt)=>na(Yt,fe)===na(Re,fe)?(Ct=Pt,!0):!1),Ct},je=Ve=>vn(Ve)?na(Ve,e.valueKey):Ve,Ye=()=>{Pe()},Je=()=>{p.selectionWidth=Number.parseFloat(window.getComputedStyle(y.value).width)},it=()=>{p.collapseItemWidth=P.value.getBoundingClientRect().width},mt=()=>{var Ve,Re;(Re=(Ve=_.value)==null?void 0:Ve.updatePopper)==null||Re.call(Ve)},_t=()=>{var Ve,Re;(Re=(Ve=C.value)==null?void 0:Ve.updatePopper)==null||Re.call(Ve)},Qt=Ve=>{if(e.multiple){let Re=e.modelValue.slice();const fe=Mt(Re,c(Ve));fe>-1?(Re=[...Re.slice(0,fe),...Re.slice(fe+1)],p.cachedOptions.splice(fe,1),Ue(Ve)):(e.multipleLimit<=0||Re.length{let fe=e.modelValue.slice();const Ct=Mt(fe,c(Re));Ct>-1&&!B.value&&(fe=[...e.modelValue.slice(0,Ct),...e.modelValue.slice(Ct+1)],p.cachedOptions.splice(Ct,1),Le(fe),t("remove-tag",c(Re)),Ue(Re)),Ve.stopPropagation(),Hr()},Hr=()=>{var Ve;(Ve=S.value)==null||Ve.focus()},Kn=()=>{var Ve;if($.value){$.value=!1,It(()=>{var Re;return(Re=S.value)==null?void 0:Re.blur()});return}(Ve=S.value)==null||Ve.blur()},Yo=()=>{p.inputValue.length>0?p.inputValue="":$.value=!1},jt=Ve=>Fxe(Ve,Re=>!p.cachedOptions.some(fe=>c(fe)===Re&&d(fe))),Po=Ve=>{if(e.multiple&&Ve.code!==St.delete&&p.inputValue.length===0){Ve.preventDefault();const Re=e.modelValue.slice(),fe=jt(Re);if(fe<0)return;const Ct=Re[fe];Re.splice(fe,1);const Yt=p.cachedOptions[fe];p.cachedOptions.splice(fe,1),Ue(Yt),Le(Re),t("remove-tag",Ct)}},Wr=()=>{let Ve;ct(e.modelValue)?Ve=[]:Ve=h.value,p.selectedLabel="",$.value=!1,Le(Ve),t("clear"),We(),Hr()},ut=(Ve,Re=void 0)=>{const fe=Y.value;if(!["forward","backward"].includes(Ve)||B.value||fe.length<=0||re.value||U.value)return;if(!$.value)return Te();Ln(Re)&&(Re=p.hoveringIndex);let Ct=-1;Ve==="forward"?(Ct=Re+1,Ct>=fe.length&&(Ct=0)):Ve==="backward"&&(Ct=Re-1,(Ct<0||Ct>=fe.length)&&(Ct=fe.length-1));const Yt=fe[Ct];if(d(Yt)||Yt.type==="Group")return ut(Ve,Ct);p.hoveringIndex=Ct,or(Ct)},ft=()=>{if($.value)~p.hoveringIndex&&Y.value[p.hoveringIndex]&&Qt(Y.value[p.hoveringIndex]);else return Te()},zn=Ve=>{p.hoveringIndex=Ve??-1},Qe=()=>{e.multiple?p.hoveringIndex=Y.value.findIndex(Ve=>e.modelValue.some(Re=>je(Re)===je(c(Ve)))):p.hoveringIndex=Y.value.findIndex(Ve=>je(c(Ve))===je(e.modelValue))},gt=Ve=>{if(p.inputValue=Ve.target.value,e.remote)Ot();else return Ge()},Ht=Ve=>{if($.value=!1,M.value){const Re=new FocusEvent("focus",Ve);N(Re)}},fn=()=>(p.isBeforeHide=!1,It(()=>{~bt.value&&or(p.hoveringIndex)})),or=Ve=>{O.value.scrollToItem(Ve)},Sn=(Ve,Re)=>{const fe=je(Ve);if(pe.value.has(fe)){const{option:Ct}=pe.value.get(fe);return Ct}if(Re&&Re.length){const Ct=Re.find(Yt=>je(c(Yt))===fe);if(Ct)return Ct}return{[l.value.value]:Ve,[l.value.label]:Ve}},et=(Ve=!1)=>{if(e.multiple)if(e.modelValue.length>0){const Re=p.cachedOptions.slice();p.cachedOptions.length=0,p.previousValue=e.modelValue.toString();for(const fe of e.modelValue){const Ct=Sn(fe,Re);p.cachedOptions.push(Ct)}}else p.cachedOptions=[],p.previousValue=void 0;else if(oe.value){p.previousValue=e.modelValue;const Re=Y.value,fe=Re.findIndex(Ct=>je(c(Ct))===je(e.modelValue));~fe?p.selectedLabel=u(Re[fe]):(!p.selectedLabel||Ve)&&(p.selectedLabel=je(e.modelValue))}else p.selectedLabel="",p.previousValue=void 0;We(),Pe()};return Ze(()=>e.fitInputWidth,()=>{Pe()}),Ze($,Ve=>{Ve?(e.persistent||Pe(),Zt("")):(p.inputValue="",p.previousQuery=null,p.isBeforeHide=!0,Fe("")),t("visible-change",Ve)}),Ze(()=>e.modelValue,(Ve,Re)=>{var fe;(!Ve||ct(Ve)&&Ve.length===0||e.multiple&&!mi(Ve.toString(),p.previousValue)||!e.multiple&&je(Ve)!==je(p.previousValue))&&et(!0),!mi(Ve,Re)&&e.validateEvent&&((fe=i==null?void 0:i.validate)==null||fe.call(i,"change").catch(Yt=>void 0))},{deep:!0}),Ze(()=>e.options,()=>{const Ve=S.value;(!Ve||Ve&&document.activeElement!==Ve)&&et()},{deep:!0,flush:"post"}),Ze(()=>Y.value,()=>(Pe(),O.value&&It(O.value.resetScrollTop))),Wi(()=>{p.isBeforeHide||q()}),Wi(()=>{const{valueKey:Ve,options:Re}=e,fe=new Map;for(const Ct of Re){const Yt=c(Ct);let Pt=Yt;if(vn(Pt)&&(Pt=na(Yt,Ve)),fe.get(Pt))break;fe.set(Pt,!0)}}),Kt(()=>{et()}),co(v,Ye),co(y,Je),co(O,mt),co(z,mt),co(T,_t),co(P,it),{inputId:s,collapseTagSize:_e,currentPlaceholder:ze,expanded:$,emptyText:ae,popupHeight:J,debounce:ke,allOptions:L,filteredOptions:Y,iconComponent:Z,iconReverse:de,tagStyle:ye,collapseTagStyle:ve,popperSize:m,dropdownMenuVisible:Ft,hasModelValue:oe,shouldShowPlaceholder:Ce,selectDisabled:B,selectSize:ue,needStatusIcon:W,showClearBtn:ie,states:p,isFocused:M,nsSelect:r,nsInput:o,inputRef:S,menuRef:O,tagMenuRef:T,tooltipRef:_,tagTooltipRef:C,selectRef:v,wrapperRef:z,selectionRef:y,prefixRef:E,suffixRef:k,collapseItemRef:P,popperRef:at,validateState:we,validateIcon:Be,showTagList:Dt,collapseTagList:He,debouncedOnInputChange:Ot,deleteTag:Vn,getLabel:u,getValue:c,getDisabled:d,getValueKey:je,handleClear:Wr,handleClickOutside:Ht,handleDel:Po,handleEsc:Yo,focus:Hr,blur:Kn,handleMenuEnter:fn,handleResize:Ye,resetSelectionWidth:Je,updateTooltip:mt,updateTagTooltip:_t,updateOptions:q,toggleMenu:Te,scrollTo:or,onInput:gt,onKeyboardNavigate:ut,onKeyboardSelect:ft,onSelect:Qt,onHover:zn,handleCompositionStart:F,handleCompositionEnd:H,handleCompositionUpdate:R}},G2t=ne({name:"ElSelectV2",components:{ElSelectMenu:W2t,ElTag:Si,ElTooltip:Yi,ElIcon:Tt},directives:{ClickOutside:Fg},props:S2t,emits:E2t,setup(e,{emit:t}){const n=K(()=>{const{modelValue:s,multiple:l}=e,u=l?[]:void 0;return ct(s)?l?s:u:l?u:s}),r=K2t(Bn({...Ra(e),modelValue:n}),t),{calculatorRef:o,inputStyle:a}=Lre();Fn(Hre,{props:Bn({...Ra(e),height:r.popupHeight,modelValue:n}),expanded:r.expanded,tooltipRef:r.tooltipRef,onSelect:r.onSelect,onHover:r.onHover,onKeyboardNavigate:r.onKeyboardNavigate,onKeyboardSelect:r.onKeyboardSelect});const i=K(()=>e.multiple?r.states.cachedOptions.map(s=>s.label):r.states.selectedLabel);return{...r,modelValue:n,selectedLabel:i,calculatorRef:o,inputStyle:a}}});function Y2t(e,t,n,r,o,a){const i=yn("el-tag"),s=yn("el-tooltip"),l=yn("el-icon"),u=yn("el-select-menu"),c=pL("click-outside");return rn((I(),j("div",{ref:"selectRef",class:ee([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),onMouseenter:d=>e.states.inputHovering=!0,onMouseleave:d=>e.states.inputHovering=!1},[D(s,{ref:"tooltipRef",visible:e.dropdownMenuVisible,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"popper-options":e.popperOptions,"fallback-placements":e.fallbackPlacements,effect:e.effect,placement:e.placement,pure:"",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,trigger:"click",persistent:e.persistent,"append-to":e.appendTo,"show-arrow":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:d=>e.states.isBeforeHide=!1},{default:A(()=>[w("div",{ref:"wrapperRef",class:ee([e.nsSelect.e("wrapper"),e.nsSelect.is("focused",e.isFocused),e.nsSelect.is("hovering",e.states.inputHovering),e.nsSelect.is("filterable",e.filterable),e.nsSelect.is("disabled",e.selectDisabled)]),onClick:zt(e.toggleMenu,["prevent"])},[e.$slots.prefix?(I(),j("div",{key:0,ref:"prefixRef",class:ee(e.nsSelect.e("prefix"))},[Ne(e.$slots,"prefix")],2)):be("v-if",!0),w("div",{ref:"selectionRef",class:ee([e.nsSelect.e("selection"),e.nsSelect.is("near",e.multiple&&!e.$slots.prefix&&!!e.modelValue.length)])},[e.multiple?Ne(e.$slots,"tag",{key:0},()=>[(I(!0),j(tt,null,wt(e.showTagList,d=>(I(),j("div",{key:e.getValueKey(e.getValue(d)),class:ee(e.nsSelect.e("selected-item"))},[D(i,{closable:!e.selectDisabled&&!e.getDisabled(d),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Nt(e.tagStyle),onClose:f=>e.deleteTag(f,d)},{default:A(()=>[w("span",{class:ee(e.nsSelect.e("tags-text"))},[Ne(e.$slots,"label",{label:e.getLabel(d),value:e.getValue(d)},()=>[ce(se(e.getLabel(d)),1)])],2)]),_:2},1032,["closable","size","type","effect","style","onClose"])],2))),128)),e.collapseTags&&e.modelValue.length>e.maxCollapseTags?(I(),Oe(s,{key:0,ref:"tagTooltipRef",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom",teleported:e.teleported},{default:A(()=>[w("div",{ref:"collapseItemRef",class:ee(e.nsSelect.e("selected-item"))},[D(i,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,style:Nt(e.collapseTagStyle),"disable-transitions":""},{default:A(()=>[w("span",{class:ee(e.nsSelect.e("tags-text"))}," + "+se(e.modelValue.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect","style"])],2)]),content:A(()=>[w("div",{ref:"tagMenuRef",class:ee(e.nsSelect.e("selection"))},[(I(!0),j(tt,null,wt(e.collapseTagList,d=>(I(),j("div",{key:e.getValueKey(e.getValue(d)),class:ee(e.nsSelect.e("selected-item"))},[D(i,{class:"in-tooltip",closable:!e.selectDisabled&&!e.getDisabled(d),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:f=>e.deleteTag(f,d)},{default:A(()=>[w("span",{class:ee(e.nsSelect.e("tags-text"))},[Ne(e.$slots,"label",{label:e.getLabel(d),value:e.getValue(d)},()=>[ce(se(e.getLabel(d)),1)])],2)]),_:2},1032,["closable","size","type","effect","onClose"])],2))),128))],2)]),_:3},8,["disabled","effect","teleported"])):be("v-if",!0)]):be("v-if",!0),w("div",{class:ee([e.nsSelect.e("selected-item"),e.nsSelect.e("input-wrapper"),e.nsSelect.is("hidden",!e.filterable)])},[rn(w("input",{id:e.inputId,ref:"inputRef","onUpdate:modelValue":d=>e.states.inputValue=d,style:Nt(e.inputStyle),autocomplete:e.autocomplete,tabindex:e.tabindex,"aria-autocomplete":"list","aria-haspopup":"listbox",autocapitalize:"off","aria-expanded":e.expanded,"aria-label":e.ariaLabel,class:ee([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,role:"combobox",readonly:!e.filterable,spellcheck:"false",type:"text",name:e.name,onInput:e.onInput,onCompositionstart:e.handleCompositionStart,onCompositionupdate:e.handleCompositionUpdate,onCompositionend:e.handleCompositionEnd,onKeydown:[qn(zt(d=>e.onKeyboardNavigate("backward"),["stop","prevent"]),["up"]),qn(zt(d=>e.onKeyboardNavigate("forward"),["stop","prevent"]),["down"]),qn(zt(e.onKeyboardSelect,["stop","prevent"]),["enter"]),qn(zt(e.handleEsc,["stop","prevent"]),["esc"]),qn(zt(e.handleDel,["stop"]),["delete"])],onClick:zt(e.toggleMenu,["stop"])},null,46,["id","onUpdate:modelValue","autocomplete","tabindex","aria-expanded","aria-label","disabled","readonly","name","onInput","onCompositionstart","onCompositionupdate","onCompositionend","onKeydown","onClick"]),[[mL,e.states.inputValue]]),e.filterable?(I(),j("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:ee(e.nsSelect.e("input-calculator")),textContent:se(e.states.inputValue)},null,10,["textContent"])):be("v-if",!0)],2),e.shouldShowPlaceholder?(I(),j("div",{key:1,class:ee([e.nsSelect.e("selected-item"),e.nsSelect.e("placeholder"),e.nsSelect.is("transparent",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?Ne(e.$slots,"label",{key:0,label:e.currentPlaceholder,value:e.modelValue},()=>[w("span",null,se(e.currentPlaceholder),1)]):(I(),j("span",{key:1},se(e.currentPlaceholder),1))],2)):be("v-if",!0)],2),w("div",{ref:"suffixRef",class:ee(e.nsSelect.e("suffix"))},[e.iconComponent?rn((I(),Oe(l,{key:0,class:ee([e.nsSelect.e("caret"),e.nsInput.e("icon"),e.iconReverse])},{default:A(()=>[(I(),Oe(_n(e.iconComponent)))]),_:1},8,["class"])),[[Pn,!e.showClearBtn]]):be("v-if",!0),e.showClearBtn&&e.clearIcon?(I(),Oe(l,{key:1,class:ee([e.nsSelect.e("caret"),e.nsInput.e("icon"),e.nsSelect.e("clear")]),onClick:zt(e.handleClear,["prevent","stop"])},{default:A(()=>[(I(),Oe(_n(e.clearIcon)))]),_:1},8,["class","onClick"])):be("v-if",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?(I(),Oe(l,{key:2,class:ee([e.nsInput.e("icon"),e.nsInput.e("validateIcon"),e.nsInput.is("loading",e.validateState==="validating")])},{default:A(()=>[(I(),Oe(_n(e.validateIcon)))]),_:1},8,["class"])):be("v-if",!0)],2)],10,["onClick"])]),content:A(()=>[D(u,{ref:"menuRef",data:e.filteredOptions,width:e.popperSize,"hovering-index":e.states.hoveringIndex,"scrollbar-always-on":e.scrollbarAlwaysOn},eu({default:A(d=>[Ne(e.$slots,"default",Hu(Mh(d)))]),_:2},[e.$slots.header?{name:"header",fn:A(()=>[w("div",{class:ee(e.nsSelect.be("dropdown","header"))},[Ne(e.$slots,"header")],2)])}:void 0,e.$slots.loading&&e.loading?{name:"loading",fn:A(()=>[w("div",{class:ee(e.nsSelect.be("dropdown","loading"))},[Ne(e.$slots,"loading")],2)])}:e.loading||e.filteredOptions.length===0?{name:"empty",fn:A(()=>[w("div",{class:ee(e.nsSelect.be("dropdown","empty"))},[Ne(e.$slots,"empty",{},()=>[w("span",null,se(e.emptyText),1)])],2)])}:void 0,e.$slots.footer?{name:"footer",fn:A(()=>[w("div",{class:ee(e.nsSelect.be("dropdown","footer"))},[Ne(e.$slots,"footer")],2)])}:void 0]),1032,["data","width","hovering-index","scrollbar-always-on"])]),_:3},8,["visible","teleported","popper-class","popper-options","fallback-placements","effect","placement","transition","persistent","append-to","show-arrow","offset","onBeforeShow","onHide"])],42,["onMouseenter","onMouseleave"])),[[c,e.handleClickOutside,e.popperRef]])}var X2t=vt(G2t,[["render",Y2t],["__file","select.vue"]]);const J2t=dn(X2t),Z2t=ht({animated:{type:Boolean,default:!1},count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:$e([Number,Object])}}),Q2t=ht({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}}),eyt=ne({name:"ElSkeletonItem"}),tyt=ne({...eyt,props:Q2t,setup(e){const t=nt("skeleton");return(n,r)=>(I(),j("div",{class:ee([b(t).e("item"),b(t).e(n.variant)])},[n.variant==="image"?(I(),Oe(b(g5e),{key:0})):be("v-if",!0)],2))}});var nP=vt(tyt,[["__file","skeleton-item.vue"]]);const nyt=(e,t=0)=>{if(t===0)return e;const n=vn(t)&&!!t.initVal,r=X(n);let o=null;const a=s=>{if(Ln(s)){r.value=e.value;return}o&&clearTimeout(o),o=setTimeout(()=>{r.value=e.value},s)},i=s=>{s==="leading"?Lt(t)?a(t):a(t.leading):vn(t)?a(t.trailing):r.value=!1};return Kt(()=>i("leading")),Ze(()=>e.value,s=>{i(s?"leading":"trailing")}),r},ryt=ne({name:"ElSkeleton"}),oyt=ne({...ryt,props:Z2t,setup(e,{expose:t}){const n=e,r=nt("skeleton"),o=nyt(tr(n,"loading"),n.throttle);return t({uiLoading:o}),(a,i)=>b(o)?(I(),j("div",Dn({key:0,class:[b(r).b(),b(r).is("animated",a.animated)]},a.$attrs),[(I(!0),j(tt,null,wt(a.count,s=>(I(),j(tt,{key:s},[b(o)?Ne(a.$slots,"template",{key:s},()=>[D(nP,{class:ee(b(r).is("first")),variant:"p"},null,8,["class"]),(I(!0),j(tt,null,wt(a.rows,l=>(I(),Oe(nP,{key:l,class:ee([b(r).e("paragraph"),b(r).is("last",l===a.rows&&a.rows>1)]),variant:"p"},null,8,["class"]))),128))]):be("v-if",!0)],64))),128))],16)):Ne(a.$slots,"default",Hu(Dn({key:1},a.$attrs)))}});var ayt=vt(oyt,[["__file","skeleton.vue"]]);const iyt=dn(ayt,{SkeletonItem:nP}),syt=vo(nP),VDe=Symbol("sliderContextKey"),lyt=ht({modelValue:{type:$e([Number,Array]),default:0},id:{type:String,default:void 0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},showInput:Boolean,showInputControls:{type:Boolean,default:!0},size:Aa,inputSize:Aa,showStops:Boolean,showTooltip:{type:Boolean,default:!0},formatTooltip:{type:$e(Function),default:void 0},disabled:Boolean,range:Boolean,vertical:Boolean,height:String,debounce:{type:Number,default:300},rangeStartLabel:{type:String,default:void 0},rangeEndLabel:{type:String,default:void 0},formatValueText:{type:$e(Function),default:void 0},tooltipClass:{type:String,default:void 0},placement:{type:String,values:Hg,default:"top"},marks:{type:$e(Object)},validateEvent:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},...ts(["ariaLabel"])}),aj=e=>Lt(e)||ct(e)&&e.every(Lt),uyt={[en]:aj,[Ea]:aj,[En]:aj},cyt=ht({modelValue:{type:Number,default:0},vertical:Boolean,tooltipClass:String,placement:{type:String,values:Hg,default:"top"}}),dyt={[en]:e=>Lt(e)},fyt=(e,t,n)=>{const r=X(),o=X(!1),a=K(()=>t.value instanceof Function),i=K(()=>a.value&&t.value(e.modelValue)||e.modelValue),s=tu(()=>{n.value&&(o.value=!0)},50),l=tu(()=>{n.value&&(o.value=!1)},50);return{tooltip:r,tooltipVisible:o,formatValue:i,displayTooltip:s,hideTooltip:l}},hyt=(e,t,n)=>{const{disabled:r,min:o,max:a,step:i,showTooltip:s,persistent:l,precision:u,sliderSize:c,formatTooltip:d,emitChange:f,resetSize:h,updateDragging:g}=kt(VDe),{tooltip:p,tooltipVisible:m,formatValue:v,displayTooltip:y,hideTooltip:_}=fyt(e,d,s),C=X(),S=K(()=>`${(e.modelValue-o.value)/(a.value-o.value)*100}%`),E=K(()=>e.vertical?{bottom:S.value}:{left:S.value}),k=()=>{t.hovering=!0,y()},O=()=>{t.hovering=!1,t.dragging||_()},T=W=>{r.value||(W.preventDefault(),V(W),window.addEventListener("mousemove",Y),window.addEventListener("touchmove",Y),window.addEventListener("mouseup",$),window.addEventListener("touchend",$),window.addEventListener("contextmenu",$),C.value.focus())},P=W=>{r.value||(t.newPosition=Number.parseFloat(S.value)+W/(a.value-o.value)*100,B(t.newPosition),f())},U=()=>{P(-i.value)},F=()=>{P(i.value)},H=()=>{P(-i.value*4)},R=()=>{P(i.value*4)},z=()=>{r.value||(B(0),f())},M=()=>{r.value||(B(100),f())},N=W=>{let J=!0;switch(W.code){case St.left:case St.down:U();break;case St.right:case St.up:F();break;case St.home:z();break;case St.end:M();break;case St.pageDown:H();break;case St.pageUp:R();break;default:J=!1;break}J&&W.preventDefault()},L=W=>{let J,oe;return W.type.startsWith("touch")?(oe=W.touches[0].clientY,J=W.touches[0].clientX):(oe=W.clientY,J=W.clientX),{clientX:J,clientY:oe}},V=W=>{t.dragging=!0,t.isClick=!0;const{clientX:J,clientY:oe}=L(W);e.vertical?t.startY=oe:t.startX=J,t.startPosition=Number.parseFloat(S.value),t.newPosition=t.startPosition},Y=W=>{if(t.dragging){t.isClick=!1,y(),h();let J;const{clientX:oe,clientY:ie}=L(W);e.vertical?(t.currentY=ie,J=(t.startY-t.currentY)/c.value*100):(t.currentX=oe,J=(t.currentX-t.startX)/c.value*100),t.newPosition=t.startPosition+J,B(t.newPosition)}},$=()=>{t.dragging&&(setTimeout(()=>{t.dragging=!1,t.hovering||_(),t.isClick||B(t.newPosition),f()},0),window.removeEventListener("mousemove",Y),window.removeEventListener("touchmove",Y),window.removeEventListener("mouseup",$),window.removeEventListener("touchend",$),window.removeEventListener("contextmenu",$))},B=async W=>{if(W===null||Number.isNaN(+W))return;W<0?W=0:W>100&&(W=100);const J=100/((a.value-o.value)/i.value);let ie=Math.round(W/J)*J*(a.value-o.value)*.01+o.value;ie=Number.parseFloat(ie.toFixed(u.value)),ie!==e.modelValue&&n(en,ie),!t.dragging&&e.modelValue!==t.oldValue&&(t.oldValue=e.modelValue),await It(),t.dragging&&y(),p.value.updatePopper()};return Ze(()=>t.dragging,W=>{g(W)}),xr(C,"touchstart",T,{passive:!1}),{disabled:r,button:C,tooltip:p,tooltipVisible:m,showTooltip:s,persistent:l,wrapperStyle:E,formatValue:v,handleMouseEnter:k,handleMouseLeave:O,onButtonDown:T,onKeyDown:N,setPosition:B}},pyt=ne({name:"ElSliderButton"}),gyt=ne({...pyt,props:cyt,emits:dyt,setup(e,{expose:t,emit:n}){const r=e,o=nt("slider"),a=Bn({hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:0,oldValue:r.modelValue}),i=K(()=>c.value?d.value:!1),{disabled:s,button:l,tooltip:u,showTooltip:c,persistent:d,tooltipVisible:f,wrapperStyle:h,formatValue:g,handleMouseEnter:p,handleMouseLeave:m,onButtonDown:v,onKeyDown:y,setPosition:_}=hyt(r,a,n),{hovering:C,dragging:S}=Ra(a);return t({onButtonDown:v,onKeyDown:y,setPosition:_,hovering:C,dragging:S}),(E,k)=>(I(),j("div",{ref_key:"button",ref:l,class:ee([b(o).e("button-wrapper"),{hover:b(C),dragging:b(S)}]),style:Nt(b(h)),tabindex:b(s)?-1:0,onMouseenter:b(p),onMouseleave:b(m),onMousedown:b(v),onFocus:b(p),onBlur:b(m),onKeydown:b(y)},[D(b(Yi),{ref_key:"tooltip",ref:u,visible:b(f),placement:E.placement,"fallback-placements":["top","bottom","right","left"],"stop-popper-mouse-event":!1,"popper-class":E.tooltipClass,disabled:!b(c),persistent:b(i)},{content:A(()=>[w("span",null,se(b(g)),1)]),default:A(()=>[w("div",{class:ee([b(o).e("button"),{hover:b(C),dragging:b(S)}])},null,2)]),_:1},8,["visible","placement","popper-class","disabled","persistent"])],46,["tabindex","onMouseenter","onMouseleave","onMousedown","onFocus","onBlur","onKeydown"]))}});var Xhe=vt(gyt,[["__file","button.vue"]]);const vyt=ht({mark:{type:$e([String,Object]),default:void 0}});var myt=ne({name:"ElSliderMarker",props:vyt,setup(e){const t=nt("slider"),n=K(()=>$t(e.mark)?e.mark:e.mark.label),r=K(()=>$t(e.mark)?void 0:e.mark.style);return()=>Vt("div",{class:t.e("marks-text"),style:r.value},n.value)}});const yyt=(e,t,n)=>{const{form:r,formItem:o}=ws(),a=Tr(),i=X(),s=X(),l={firstButton:i,secondButton:s},u=K(()=>e.disabled||(r==null?void 0:r.disabled)||!1),c=K(()=>Math.min(t.firstValue,t.secondValue)),d=K(()=>Math.max(t.firstValue,t.secondValue)),f=K(()=>e.range?`${100*(d.value-c.value)/(e.max-e.min)}%`:`${100*(t.firstValue-e.min)/(e.max-e.min)}%`),h=K(()=>e.range?`${100*(c.value-e.min)/(e.max-e.min)}%`:"0%"),g=K(()=>e.vertical?{height:e.height}:{}),p=K(()=>e.vertical?{height:f.value,bottom:h.value}:{width:f.value,left:h.value}),m=()=>{a.value&&(t.sliderSize=a.value[`client${e.vertical?"Height":"Width"}`])},v=F=>{const H=e.min+F*(e.max-e.min)/100;if(!e.range)return i;let R;return Math.abs(c.value-H)t.secondValue?"firstButton":"secondButton",l[R]},y=F=>{const H=v(F);return H.value.setPosition(F),H},_=F=>{t.firstValue=F??e.min,S(e.range?[c.value,d.value]:F??e.min)},C=F=>{t.secondValue=F,e.range&&S([c.value,d.value])},S=F=>{n(en,F),n(Ea,F)},E=async()=>{await It(),n(En,e.range?[c.value,d.value]:e.modelValue)},k=F=>{var H,R,z,M,N,L;if(u.value||t.dragging)return;m();let V=0;if(e.vertical){const Y=(z=(R=(H=F.touches)==null?void 0:H.item(0))==null?void 0:R.clientY)!=null?z:F.clientY;V=(a.value.getBoundingClientRect().bottom-Y)/t.sliderSize*100}else{const Y=(L=(N=(M=F.touches)==null?void 0:M.item(0))==null?void 0:N.clientX)!=null?L:F.clientX,$=a.value.getBoundingClientRect().left;V=(Y-$)/t.sliderSize*100}if(!(V<0||V>100))return y(V)};return{elFormItem:o,slider:a,firstButton:i,secondButton:s,sliderDisabled:u,minValue:c,maxValue:d,runwayStyle:g,barStyle:p,resetSize:m,setPosition:y,emitChange:E,onSliderWrapperPrevent:F=>{var H,R;((H=l.firstButton.value)!=null&&H.dragging||(R=l.secondButton.value)!=null&&R.dragging)&&F.preventDefault()},onSliderClick:F=>{k(F)&&E()},onSliderDown:async F=>{const H=k(F);H&&(await It(),H.value.onButtonDown(F))},onSliderMarkerDown:F=>{if(u.value||t.dragging)return;y(F)&&E()},setFirstValue:_,setSecondValue:C}},byt=(e,t,n,r)=>({stops:K(()=>{if(!e.showStops||e.min>e.max)return[];if(e.step===0)return[];const i=(e.max-e.min)/e.step,s=100*e.step/(e.max-e.min),l=Array.from({length:i-1}).map((u,c)=>(c+1)*s);return e.range?l.filter(u=>u<100*(n.value-e.min)/(e.max-e.min)||u>100*(r.value-e.min)/(e.max-e.min)):l.filter(u=>u>100*(t.firstValue-e.min)/(e.max-e.min))}),getStopStyle:i=>e.vertical?{bottom:`${i}%`}:{left:`${i}%`}}),_yt=e=>K(()=>e.marks?Object.keys(e.marks).map(Number.parseFloat).sort((n,r)=>n-r).filter(n=>n<=e.max&&n>=e.min).map(n=>({point:n,position:(n-e.min)*100/(e.max-e.min),mark:e.marks[n]})):[]),wyt=(e,t,n,r,o,a)=>{const i=u=>{o(en,u),o(Ea,u)},s=()=>e.range?![n.value,r.value].every((u,c)=>u===t.oldValue[c]):e.modelValue!==t.oldValue,l=()=>{var u,c;e.min>e.max&&oa("Slider","min should not be greater than max.");const d=e.modelValue;e.range&&ct(d)?d[1]e.max?i([e.max,e.max]):d[0]e.max?i([d[0],e.max]):(t.firstValue=d[0],t.secondValue=d[1],s()&&(e.validateEvent&&((u=a==null?void 0:a.validate)==null||u.call(a,"change").catch(f=>void 0)),t.oldValue=d.slice())):!e.range&&Lt(d)&&!Number.isNaN(d)&&(de.max?i(e.max):(t.firstValue=d,s()&&(e.validateEvent&&((c=a==null?void 0:a.validate)==null||c.call(a,"change").catch(f=>void 0)),t.oldValue=d)))};l(),Ze(()=>t.dragging,u=>{u||l()}),Ze(()=>e.modelValue,(u,c)=>{t.dragging||ct(u)&&ct(c)&&u.every((d,f)=>d===c[f])&&t.firstValue===u[0]&&t.secondValue===u[1]||l()},{deep:!0}),Ze(()=>[e.min,e.max],()=>{l()})},Cyt=(e,t,n)=>{const r=X();return Kt(async()=>{e.range?(ct(e.modelValue)?(t.firstValue=Math.max(e.min,e.modelValue[0]),t.secondValue=Math.min(e.max,e.modelValue[1])):(t.firstValue=e.min,t.secondValue=e.max),t.oldValue=[t.firstValue,t.secondValue]):(!Lt(e.modelValue)||Number.isNaN(e.modelValue)?t.firstValue=e.min:t.firstValue=Math.min(e.max,Math.max(e.min,e.modelValue)),t.oldValue=t.firstValue),xr(window,"resize",n),await It(),n()}),{sliderWrapper:r}},xyt=ne({name:"ElSlider"}),Syt=ne({...xyt,props:lyt,emits:uyt,setup(e,{expose:t,emit:n}){const r=e,o=nt("slider"),{t:a}=Un(),i=Bn({firstValue:0,secondValue:0,oldValue:0,dragging:!1,sliderSize:1}),{elFormItem:s,slider:l,firstButton:u,secondButton:c,sliderDisabled:d,minValue:f,maxValue:h,runwayStyle:g,barStyle:p,resetSize:m,emitChange:v,onSliderWrapperPrevent:y,onSliderClick:_,onSliderDown:C,onSliderMarkerDown:S,setFirstValue:E,setSecondValue:k}=yyt(r,i,n),{stops:O,getStopStyle:T}=byt(r,i,f,h),{inputId:P,isLabeledByFormItem:U}=vd(r,{formItemContext:s}),F=ma(),H=K(()=>r.inputSize||F.value),R=K(()=>r.ariaLabel||a("el.slider.defaultLabel",{min:r.min,max:r.max})),z=K(()=>r.range?r.rangeStartLabel||a("el.slider.defaultRangeStartLabel"):R.value),M=K(()=>r.formatValueText?r.formatValueText(W.value):`${W.value}`),N=K(()=>r.rangeEndLabel||a("el.slider.defaultRangeEndLabel")),L=K(()=>r.formatValueText?r.formatValueText(J.value):`${J.value}`),V=K(()=>[o.b(),o.m(F.value),o.is("vertical",r.vertical),{[o.m("with-input")]:r.showInput}]),Y=_yt(r);wyt(r,i,f,h,n,s);const $=K(()=>{const Z=[r.min,r.max,r.step].map(de=>{const we=`${de}`.split(".")[1];return we?we.length:0});return Math.max.apply(null,Z)}),{sliderWrapper:B}=Cyt(r,i,m),{firstValue:W,secondValue:J,sliderSize:oe}=Ra(i),ie=Z=>{i.dragging=Z};return xr(B,"touchstart",y,{passive:!1}),xr(B,"touchmove",y,{passive:!1}),Fn(VDe,{...Ra(r),sliderSize:oe,disabled:d,precision:$,emitChange:v,resetSize:m,updateDragging:ie}),t({onSliderClick:_}),(Z,de)=>{var we,Be;return I(),j("div",{id:Z.range?b(P):void 0,ref_key:"sliderWrapper",ref:B,class:ee(b(V)),role:Z.range?"group":void 0,"aria-label":Z.range&&!b(U)?b(R):void 0,"aria-labelledby":Z.range&&b(U)?(we=b(s))==null?void 0:we.labelId:void 0},[w("div",{ref_key:"slider",ref:l,class:ee([b(o).e("runway"),{"show-input":Z.showInput&&!Z.range},b(o).is("disabled",b(d))]),style:Nt(b(g)),onMousedown:b(C),onTouchstartPassive:b(C)},[w("div",{class:ee(b(o).e("bar")),style:Nt(b(p))},null,6),D(Xhe,{id:Z.range?void 0:b(P),ref_key:"firstButton",ref:u,"model-value":b(W),vertical:Z.vertical,"tooltip-class":Z.tooltipClass,placement:Z.placement,role:"slider","aria-label":Z.range||!b(U)?b(z):void 0,"aria-labelledby":!Z.range&&b(U)?(Be=b(s))==null?void 0:Be.labelId:void 0,"aria-valuemin":Z.min,"aria-valuemax":Z.range?b(J):Z.max,"aria-valuenow":b(W),"aria-valuetext":b(M),"aria-orientation":Z.vertical?"vertical":"horizontal","aria-disabled":b(d),"onUpdate:modelValue":b(E)},null,8,["id","model-value","vertical","tooltip-class","placement","aria-label","aria-labelledby","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"]),Z.range?(I(),Oe(Xhe,{key:0,ref_key:"secondButton",ref:c,"model-value":b(J),vertical:Z.vertical,"tooltip-class":Z.tooltipClass,placement:Z.placement,role:"slider","aria-label":b(N),"aria-valuemin":b(W),"aria-valuemax":Z.max,"aria-valuenow":b(J),"aria-valuetext":b(L),"aria-orientation":Z.vertical?"vertical":"horizontal","aria-disabled":b(d),"onUpdate:modelValue":b(k)},null,8,["model-value","vertical","tooltip-class","placement","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"])):be("v-if",!0),Z.showStops?(I(),j("div",{key:1},[(I(!0),j(tt,null,wt(b(O),(ke,ae)=>(I(),j("div",{key:ae,class:ee(b(o).e("stop")),style:Nt(b(T)(ke))},null,6))),128))])):be("v-if",!0),b(Y).length>0?(I(),j(tt,{key:2},[w("div",null,[(I(!0),j(tt,null,wt(b(Y),(ke,ae)=>(I(),j("div",{key:ae,style:Nt(b(T)(ke.position)),class:ee([b(o).e("stop"),b(o).e("marks-stop")])},null,6))),128))]),w("div",{class:ee(b(o).e("marks"))},[(I(!0),j(tt,null,wt(b(Y),(ke,ae)=>(I(),Oe(b(myt),{key:ae,mark:ke.mark,style:Nt(b(T)(ke.position)),onMousedown:zt(le=>b(S)(ke.position),["stop"])},null,8,["mark","style","onMousedown"]))),128))],2)],64)):be("v-if",!0)],46,["onMousedown","onTouchstartPassive"]),Z.showInput&&!Z.range?(I(),Oe(b(Kg),{key:0,ref:"input","model-value":b(W),class:ee(b(o).e("input")),step:Z.step,disabled:b(d),controls:Z.showInputControls,min:Z.min,max:Z.max,precision:b($),debounce:Z.debounce,size:b(H),"onUpdate:modelValue":b(E),onChange:b(v)},null,8,["model-value","class","step","disabled","controls","min","max","precision","debounce","size","onUpdate:modelValue","onChange"])):be("v-if",!0)],10,["id","role","aria-label","aria-labelledby"])}}});var Dyt=vt(Syt,[["__file","slider.vue"]]);const CT=dn(Dyt),Eyt=ht({prefixCls:{type:String}}),Jhe=ne({name:"ElSpaceItem",props:Eyt,setup(e,{slots:t}){const n=nt("space"),r=K(()=>`${e.prefixCls||n.b()}__item`);return()=>Vt("div",{class:r.value},Ne(t,"default"))}}),Zhe={small:8,default:12,large:16};function kyt(e){const t=nt("space"),n=K(()=>[t.b(),t.m(e.direction),e.class]),r=X(0),o=X(0),a=K(()=>{const s=e.wrap||e.fill?{flexWrap:"wrap"}:{},l={alignItems:e.alignment},u={rowGap:`${o.value}px`,columnGap:`${r.value}px`};return[s,l,u,e.style]}),i=K(()=>e.fill?{flexGrow:1,minWidth:`${e.fillRatio}%`}:{});return Wi(()=>{const{size:s="small",wrap:l,direction:u,fill:c}=e;if(ct(s)){const[d=0,f=0]=s;r.value=d,o.value=f}else{let d;Lt(s)?d=s:d=Zhe[s||"small"]||Zhe.small,(l||c)&&u==="horizontal"?r.value=o.value=d:u==="horizontal"?(r.value=d,o.value=0):(o.value=d,r.value=0)}}),{classes:n,containerStyle:a,itemStyle:i}}const Ayt=ht({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},class:{type:$e([String,Object,Array]),default:""},style:{type:$e([String,Array,Object]),default:""},alignment:{type:$e(String),default:"center"},prefixCls:{type:String},spacer:{type:$e([Object,String,Number,Array]),default:null,validator:e=>jr(e)||Lt(e)||$t(e)},wrap:Boolean,fill:Boolean,fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:Gh,validator:e=>Lt(e)||ct(e)&&e.length===2&&e.every(Lt)}}),Tyt=ne({name:"ElSpace",props:Ayt,setup(e,{slots:t}){const{classes:n,containerStyle:r,itemStyle:o}=kyt(e);function a(i,s="",l=[]){const{prefixCls:u}=e;return i.forEach((c,d)=>{RY(c)?ct(c.children)&&c.children.forEach((f,h)=>{RY(f)&&ct(f.children)?a(f.children,`${s+h}-`,l):jr(f)&&(f==null?void 0:f.type)===da?l.push(f):l.push(D(Jhe,{style:o.value,prefixCls:u,key:`nested-${s+h}`},{default:()=>[f]},Lc.PROPS|Lc.STYLE,["style","prefixCls"]))}):zdt(c)?l.push(D(Jhe,{style:o.value,prefixCls:u,key:`LoopKey${s+d}`},{default:()=>[c]},Lc.PROPS|Lc.STYLE,["style","prefixCls"])):jr(c)&&c.type===da&&l.push(c)}),l}return()=>{var i;const{spacer:s,direction:l}=e,u=Ne(t,"default",{key:0},()=>[]);if(((i=u.children)!=null?i:[]).length===0)return null;if(ct(u.children)){let c=a(u.children);if(s){const d=c.length-1;c=c.reduce((f,h,g)=>{const p=[...f,h];return g!==d&&p.push(D("span",{style:[o.value,l==="vertical"?"width: 100%":null],key:g},[jr(s)?s:ce(s,Lc.TEXT)],Lc.STYLE)),p},[])}return D("div",{class:n.value,style:r.value},c,Lc.STYLE|Lc.CLASS)}return u.children}}}),Oyt=dn(Tyt),Fyt=ht({decimalSeparator:{type:String,default:"."},groupSeparator:{type:String,default:","},precision:{type:Number,default:0},formatter:Function,value:{type:$e([Number,Object]),default:0},prefix:String,suffix:String,title:String,valueStyle:{type:$e([String,Object,Array])}}),Iyt=ne({name:"ElStatistic"}),Myt=ne({...Iyt,props:Fyt,setup(e,{expose:t}){const n=e,r=nt("statistic"),o=K(()=>{const{value:a,formatter:i,precision:s,decimalSeparator:l,groupSeparator:u}=n;if(Rt(i))return i(a);if(!Lt(a)||Number.isNaN(a))return a;let[c,d=""]=String(a).split(".");return d=d.padEnd(s,"0").slice(0,s>0?s:0),c=c.replace(/\B(?=(\d{3})+(?!\d))/g,u),[c,d].join(d?l:"")});return t({displayValue:o}),(a,i)=>(I(),j("div",{class:ee(b(r).b())},[a.$slots.title||a.title?(I(),j("div",{key:0,class:ee(b(r).e("head"))},[Ne(a.$slots,"title",{},()=>[ce(se(a.title),1)])],2)):be("v-if",!0),w("div",{class:ee(b(r).e("content"))},[a.$slots.prefix||a.prefix?(I(),j("div",{key:0,class:ee(b(r).e("prefix"))},[Ne(a.$slots,"prefix",{},()=>[w("span",null,se(a.prefix),1)])],2)):be("v-if",!0),w("span",{class:ee(b(r).e("number")),style:Nt(a.valueStyle)},se(b(o)),7),a.$slots.suffix||a.suffix?(I(),j("div",{key:1,class:ee(b(r).e("suffix"))},[Ne(a.$slots,"suffix",{},()=>[w("span",null,se(a.suffix),1)])],2)):be("v-if",!0)],2)],2))}});var Pyt=vt(Myt,[["__file","statistic.vue"]]);const zDe=dn(Pyt),$yt=ht({format:{type:String,default:"HH:mm:ss"},prefix:String,suffix:String,title:String,value:{type:$e([Number,Object]),default:0},valueStyle:{type:$e([String,Object,Array])}}),Byt={finish:()=>!0,[En]:e=>Lt(e)},Ryt=[["Y",1e3*60*60*24*365],["M",1e3*60*60*24*30],["D",1e3*60*60*24],["H",1e3*60*60],["m",1e3*60],["s",1e3],["S",1]],Qhe=e=>Lt(e)?new Date(e).getTime():e.valueOf(),epe=(e,t)=>{let n=e;const r=/\[([^\]]*)]/g;return Ryt.reduce((a,[i,s])=>{const l=new RegExp(`${i}+(?![^\\[\\]]*\\])`,"g");if(l.test(a)){const u=Math.floor(n/s);return n-=u*s,a.replace(l,c=>String(u).padStart(c.length,"0"))}return a},t).replace(r,"$1")},Nyt=ne({name:"ElCountdown"}),Lyt=ne({...Nyt,props:$yt,emits:Byt,setup(e,{expose:t,emit:n}){const r=e;let o;const a=X(0),i=K(()=>epe(a.value,r.format)),s=c=>epe(c,r.format),l=()=>{o&&(Hb(o),o=void 0)},u=()=>{const c=Qhe(r.value),d=()=>{let f=c-Date.now();n(En,f),f<=0?(f=0,l(),n("finish")):o=$m(d),a.value=f};o=$m(d)};return Kt(()=>{a.value=Qhe(r.value)-Date.now(),Ze(()=>[r.value,r.format],()=>{l(),u()},{immediate:!0})}),Ar(()=>{l()}),t({displayValue:i}),(c,d)=>(I(),Oe(b(zDe),{value:a.value,title:c.title,prefix:c.prefix,suffix:c.suffix,"value-style":c.valueStyle,formatter:s},eu({_:2},[wt(c.$slots,(f,h)=>({name:h,fn:A(()=>[Ne(c.$slots,h)])}))]),1032,["value","title","prefix","suffix","value-style"]))}});var Uyt=vt(Lyt,[["__file","countdown.vue"]]);const Vyt=dn(Uyt),zyt=ht({space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",values:["horizontal","vertical"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:["wait","process","finish","error","success"],default:"finish"},processStatus:{type:String,values:["wait","process","finish","error","success"],default:"process"}}),jyt={[En]:(e,t)=>[e,t].every(Lt)},jDe="ElSteps",Hyt=ne({name:"ElSteps"}),Wyt=ne({...Hyt,props:zyt,emits:jyt,setup(e,{emit:t}){const n=e,r=nt("steps"),{children:o,addChild:a,removeChild:i}=UL(bn(),"ElStep");return Ze(o,()=>{o.value.forEach((s,l)=>{s.setIndex(l)})}),Fn(jDe,{props:n,steps:o,addStep:a,removeStep:i}),Ze(()=>n.active,(s,l)=>{t(En,s,l)}),(s,l)=>(I(),j("div",{class:ee([b(r).b(),b(r).m(s.simple?"simple":s.direction)])},[Ne(s.$slots,"default")],2))}});var qyt=vt(Wyt,[["__file","steps.vue"]]);const Kyt=ht({title:{type:String,default:""},icon:{type:mr},description:{type:String,default:""},status:{type:String,values:["","wait","process","finish","error","success"],default:""}}),Gyt=ne({name:"ElStep"}),Yyt=ne({...Gyt,props:Kyt,setup(e){const t=e,n=nt("step"),r=X(-1),o=X({}),a=X(""),i=kt(jDe),s=bn();Kt(()=>{Ze([()=>i.props.active,()=>i.props.processStatus,()=>i.props.finishStatus],([E])=>{C(E)},{immediate:!0})}),Ar(()=>{i.removeStep(S.uid)});const l=K(()=>t.status||a.value),u=K(()=>{const E=i.steps.value[r.value-1];return E?E.currentStatus:"wait"}),c=K(()=>i.props.alignCenter),d=K(()=>i.props.direction==="vertical"),f=K(()=>i.props.simple),h=K(()=>i.steps.value.length),g=K(()=>{var E;return((E=i.steps.value[h.value-1])==null?void 0:E.uid)===(s==null?void 0:s.uid)}),p=K(()=>f.value?"":i.props.space),m=K(()=>[n.b(),n.is(f.value?"simple":i.props.direction),n.is("flex",g.value&&!p.value&&!c.value),n.is("center",c.value&&!d.value&&!f.value)]),v=K(()=>{const E={flexBasis:Lt(p.value)?`${p.value}px`:p.value?p.value:`${100/(h.value-(c.value?0:1))}%`};return d.value||g.value&&(E.maxWidth=`${100/h.value}%`),E}),y=E=>{r.value=E},_=E=>{const k=E==="wait",O={transitionDelay:`${k?"-":""}${150*r.value}ms`},T=E===i.props.processStatus||k?0:100;O.borderWidth=T&&!f.value?"1px":0,O[i.props.direction==="vertical"?"height":"width"]=`${T}%`,o.value=O},C=E=>{E>r.value?a.value=i.props.finishStatus:E===r.value&&u.value!=="error"?a.value=i.props.processStatus:a.value="wait";const k=i.steps.value[r.value-1];k&&k.calcProgress(a.value)},S=Bn({uid:s.uid,currentStatus:l,setIndex:y,calcProgress:_});return i.addStep(S),(E,k)=>(I(),j("div",{style:Nt(b(v)),class:ee(b(m))},[be(" icon & line "),w("div",{class:ee([b(n).e("head"),b(n).is(b(l))])},[b(f)?be("v-if",!0):(I(),j("div",{key:0,class:ee(b(n).e("line"))},[w("i",{class:ee(b(n).e("line-inner")),style:Nt(o.value)},null,6)],2)),w("div",{class:ee([b(n).e("icon"),b(n).is(E.icon||E.$slots.icon?"icon":"text")])},[Ne(E.$slots,"icon",{},()=>[E.icon?(I(),Oe(b(Tt),{key:0,class:ee(b(n).e("icon-inner"))},{default:A(()=>[(I(),Oe(_n(E.icon)))]),_:1},8,["class"])):b(l)==="success"?(I(),Oe(b(Tt),{key:1,class:ee([b(n).e("icon-inner"),b(n).is("status")])},{default:A(()=>[D(b(Za))]),_:1},8,["class"])):b(l)==="error"?(I(),Oe(b(Tt),{key:2,class:ee([b(n).e("icon-inner"),b(n).is("status")])},{default:A(()=>[D(b(Gs))]),_:1},8,["class"])):b(f)?be("v-if",!0):(I(),j("div",{key:3,class:ee(b(n).e("icon-inner"))},se(r.value+1),3))])],2)],2),be(" title & description "),w("div",{class:ee(b(n).e("main"))},[w("div",{class:ee([b(n).e("title"),b(n).is(b(l))])},[Ne(E.$slots,"title",{},()=>[ce(se(E.title),1)])],2),b(f)?(I(),j("div",{key:0,class:ee(b(n).e("arrow"))},null,2)):(I(),j("div",{key:1,class:ee([b(n).e("description"),b(n).is(b(l))])},[Ne(E.$slots,"description",{},()=>[ce(se(E.description),1)])],2))],2)],6))}});var HDe=vt(Yyt,[["__file","item.vue"]]);const Xyt=dn(qyt,{Step:HDe}),Jyt=vo(HDe),WDe=e=>["",...Gh].includes(e),Zyt=ht({modelValue:{type:[Boolean,String,Number],default:!1},disabled:Boolean,loading:Boolean,size:{type:String,validator:WDe},width:{type:[String,Number],default:""},inlinePrompt:Boolean,inactiveActionIcon:{type:mr},activeActionIcon:{type:mr},activeIcon:{type:mr},inactiveIcon:{type:mr},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:$e(Function)},id:String,tabindex:{type:[String,Number]},...ts(["ariaLabel"])}),Qyt={[en]:e=>hr(e)||$t(e)||Lt(e),[En]:e=>hr(e)||$t(e)||Lt(e),[Ea]:e=>hr(e)||$t(e)||Lt(e)},qDe="ElSwitch",ebt=ne({name:qDe}),tbt=ne({...ebt,props:Zyt,emits:Qyt,setup(e,{expose:t,emit:n}){const r=e,{formItem:o}=ws(),a=ma(),i=nt("switch"),{inputId:s}=vd(r,{formItemContext:o}),l=ns(K(()=>r.loading)),u=X(r.modelValue!==!1),c=X(),d=X(),f=K(()=>[i.b(),i.m(a.value),i.is("disabled",l.value),i.is("checked",v.value)]),h=K(()=>[i.e("label"),i.em("label","left"),i.is("active",!v.value)]),g=K(()=>[i.e("label"),i.em("label","right"),i.is("active",v.value)]),p=K(()=>({width:Io(r.width)}));Ze(()=>r.modelValue,()=>{u.value=!0});const m=K(()=>u.value?r.modelValue:!1),v=K(()=>m.value===r.activeValue);[r.activeValue,r.inactiveValue].includes(m.value)||(n(en,r.inactiveValue),n(En,r.inactiveValue),n(Ea,r.inactiveValue)),Ze(v,S=>{var E;c.value.checked=S,r.validateEvent&&((E=o==null?void 0:o.validate)==null||E.call(o,"change").catch(k=>void 0))});const y=()=>{const S=v.value?r.inactiveValue:r.activeValue;n(en,S),n(En,S),n(Ea,S),It(()=>{c.value.checked=v.value})},_=()=>{if(l.value)return;const{beforeChange:S}=r;if(!S){y();return}const E=S();[Ub(E),hr(E)].includes(!0)||oa(qDe,"beforeChange must return type `Promise` or `boolean`"),Ub(E)?E.then(O=>{O&&y()}).catch(O=>{}):E&&y()},C=()=>{var S,E;(E=(S=c.value)==null?void 0:S.focus)==null||E.call(S)};return Kt(()=>{c.value.checked=v.value}),t({focus:C,checked:v}),(S,E)=>(I(),j("div",{class:ee(b(f)),onClick:zt(_,["prevent"])},[w("input",{id:b(s),ref_key:"input",ref:c,class:ee(b(i).e("input")),type:"checkbox",role:"switch","aria-checked":b(v),"aria-disabled":b(l),"aria-label":S.ariaLabel,name:S.name,"true-value":S.activeValue,"false-value":S.inactiveValue,disabled:b(l),tabindex:S.tabindex,onChange:y,onKeydown:qn(_,["enter"])},null,42,["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex","onKeydown"]),!S.inlinePrompt&&(S.inactiveIcon||S.inactiveText)?(I(),j("span",{key:0,class:ee(b(h))},[S.inactiveIcon?(I(),Oe(b(Tt),{key:0},{default:A(()=>[(I(),Oe(_n(S.inactiveIcon)))]),_:1})):be("v-if",!0),!S.inactiveIcon&&S.inactiveText?(I(),j("span",{key:1,"aria-hidden":b(v)},se(S.inactiveText),9,["aria-hidden"])):be("v-if",!0)],2)):be("v-if",!0),w("span",{ref_key:"core",ref:d,class:ee(b(i).e("core")),style:Nt(b(p))},[S.inlinePrompt?(I(),j("div",{key:0,class:ee(b(i).e("inner"))},[S.activeIcon||S.inactiveIcon?(I(),Oe(b(Tt),{key:0,class:ee(b(i).is("icon"))},{default:A(()=>[(I(),Oe(_n(b(v)?S.activeIcon:S.inactiveIcon)))]),_:1},8,["class"])):S.activeText||S.inactiveText?(I(),j("span",{key:1,class:ee(b(i).is("text")),"aria-hidden":!b(v)},se(b(v)?S.activeText:S.inactiveText),11,["aria-hidden"])):be("v-if",!0)],2)):be("v-if",!0),w("div",{class:ee(b(i).e("action"))},[S.loading?(I(),Oe(b(Tt),{key:0,class:ee(b(i).is("loading"))},{default:A(()=>[D(b(Kl))]),_:1},8,["class"])):b(v)?Ne(S.$slots,"active-action",{key:1},()=>[S.activeActionIcon?(I(),Oe(b(Tt),{key:0},{default:A(()=>[(I(),Oe(_n(S.activeActionIcon)))]),_:1})):be("v-if",!0)]):b(v)?be("v-if",!0):Ne(S.$slots,"inactive-action",{key:2},()=>[S.inactiveActionIcon?(I(),Oe(b(Tt),{key:0},{default:A(()=>[(I(),Oe(_n(S.inactiveActionIcon)))]),_:1})):be("v-if",!0)])],2)],6),!S.inlinePrompt&&(S.activeIcon||S.activeText)?(I(),j("span",{key:1,class:ee(b(g))},[S.activeIcon?(I(),Oe(b(Tt),{key:0},{default:A(()=>[(I(),Oe(_n(S.activeIcon)))]),_:1})):be("v-if",!0),!S.activeIcon&&S.activeText?(I(),j("span",{key:1,"aria-hidden":!b(v)},se(S.activeText),9,["aria-hidden"])):be("v-if",!0)],2)):be("v-if",!0)],10,["onClick"]))}});var nbt=vt(tbt,[["__file","switch.vue"]]);const rbt=dn(nbt),ij=function(e){var t;return(t=e.target)==null?void 0:t.closest("td")},obt=function(e,t,n,r,o){if(!t&&!r&&(!o||ct(o)&&!o.length))return e;$t(n)?n=n==="descending"?-1:1:n=n&&n<0?-1:1;const a=r?null:function(s,l){return o?(ct(o)||(o=[o]),o.map(u=>$t(u)?na(s,u):u(s,l,e))):(t!=="$key"&&vn(s)&&"$value"in s&&(s=s.$value),[vn(s)?na(s,t):s])},i=function(s,l){if(r)return r(s.value,l.value);for(let u=0,c=s.key.length;ul.key[u])return 1}return 0};return e.map((s,l)=>({value:s,index:l,key:a?a(s,l):null})).sort((s,l)=>{let u=i(s,l);return u||(u=s.index-l.index),u*+n}).map(s=>s.value)},KDe=function(e,t){let n=null;return e.columns.forEach(r=>{r.id===t&&(n=r)}),n},abt=function(e,t){let n=null;for(let r=0;r{if(!e)throw new Error("Row is required when get row identity");if($t(t)){if(!t.includes("."))return`${e[t]}`;const n=t.split(".");let r=e;for(const o of n)r=r[o];return`${r}`}else if(Rt(t))return t.call(null,e)},F3=function(e,t,n=!1,r="children"){const o=e||[],a={};return o.forEach((i,s)=>{if(a[zs(i,t)]={row:i,index:s},n){const l=i[r];ct(l)&&Object.assign(a,F3(l,t,!0,r))}}),a};function ibt(e,t){const n={};let r;for(r in e)n[r]=e[r];for(r in t)if(Gn(t,r)){const o=t[r];Ln(o)||(n[r]=o)}return n}function Gre(e){return e===""||Ln(e)||(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function GDe(e){return e===""||Ln(e)||(e=Gre(e),Number.isNaN(e)&&(e=80)),e}function sbt(e){return Lt(e)?e:$t(e)?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function lbt(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,n)=>(...r)=>t(n(...r)))}function rP(e,t,n,r,o,a){let i=a??0,s=!1;const l=e.indexOf(t),u=l!==-1,c=o==null?void 0:o.call(null,t,i),d=h=>{h==="add"?e.push(t):e.splice(l,1),s=!0},f=h=>{let g=0;const p=(r==null?void 0:r.children)&&h[r.children];return p&&ct(p)&&(g+=p.length,p.forEach(m=>{g+=f(m)})),g};return(!o||c)&&(hr(n)?n&&!u?d("add"):!n&&u&&d("remove"):d(u?"remove":"add")),!(r!=null&&r.checkStrictly)&&(r!=null&&r.children)&&ct(t[r.children])&&t[r.children].forEach(h=>{const g=rP(e,h,n??!u,r,o,i+1);i+=f(h)+1,g&&(s=g)}),s}function ubt(e,t,n="children",r="hasChildren"){const o=i=>!(ct(i)&&i.length);function a(i,s,l){t(i,s,l),s.forEach(u=>{if(u[r]){t(u,null,l+1);return}const c=u[n];o(c)||a(u,c,l+1)})}e.forEach(i=>{if(i[r]){t(i,null,0);return}const s=i[n];o(s)||a(i,s,0)})}const cbt=(e,t,n,r)=>{const o={strategy:"fixed",...e.popperOptions},a=Rt(r.tooltipFormatter)?r.tooltipFormatter({row:n,column:r,cellValue:$S(n,r.property).value}):void 0;return jr(a)?{slotContent:a,content:null,...e,popperOptions:o}:{slotContent:null,content:a??t,...e,popperOptions:o}};let Ml=null;function dbt(e,t,n,r,o,a){const i=cbt(e,t,n,r),s={...i,slotContent:void 0};if((Ml==null?void 0:Ml.trigger)===o){const h=Ml.vm.component;Ixe(h.props,s),i.slotContent&&(h.slots.content=()=>[i.slotContent]);return}Ml==null||Ml();const l=a==null?void 0:a.refs.tableWrapper,u=l==null?void 0:l.dataset.prefix,c=D(Yi,{virtualTriggering:!0,virtualRef:o,appendTo:l,placement:"top",transition:"none",offset:0,hideAfter:0,...s},i.slotContent?{content:()=>i.slotContent}:void 0);c.appContext={...a.appContext,...a};const d=document.createElement("div");Mm(c,d),c.component.exposed.onOpen();const f=l==null?void 0:l.querySelector(`.${u}-scrollbar__wrap`);Ml=()=>{Mm(null,d),f==null||f.removeEventListener("scroll",Ml),Ml=null},Ml.trigger=o,Ml.vm=c,f==null||f.addEventListener("scroll",Ml)}function YDe(e){return e.children?yXe(e.children,YDe):[e]}function npe(e,t){return e+t.colSpan}const XDe=(e,t,n,r)=>{let o=0,a=e;const i=n.states.columns.value;if(r){const l=YDe(r[e]);o=i.slice(0,i.indexOf(l[0])).reduce(npe,0),a=o+l.reduce(npe,0)-1}else o=e;let s;switch(t){case"left":a=i.length-n.states.rightFixedLeafColumnsLength.value&&(s="right");break;default:a=i.length-n.states.rightFixedLeafColumnsLength.value&&(s="right")}return s?{direction:s,start:o,after:a}:{}},Yre=(e,t,n,r,o,a=0)=>{const i=[],{direction:s,start:l,after:u}=XDe(t,n,r,o);if(s){const c=s==="left";i.push(`${e}-fixed-column--${s}`),c&&u+a===r.states.fixedLeafColumnsLength.value-1?i.push("is-last-column"):!c&&l-a===r.states.columns.value.length-r.states.rightFixedLeafColumnsLength.value&&i.push("is-first-column")}return i};function rpe(e,t){return e+(sT(t.realWidth)||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const Xre=(e,t,n,r)=>{const{direction:o,start:a=0,after:i=0}=XDe(e,t,n,r);if(!o)return;const s={},l=o==="left",u=n.states.columns.value;return l?s.left=u.slice(0,a).reduce(rpe,0):s.right=u.slice(i+1).reverse().reduce(rpe,0),s},b8=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};function fbt(e){const t=bn(),n=X(!1),r=X([]);return{updateExpandRows:()=>{const l=e.data.value||[],u=e.rowKey.value;if(n.value)r.value=l.slice();else if(u){const c=F3(r.value,u);r.value=l.reduce((d,f)=>{const h=zs(f,u);return c[h]&&d.push(f),d},[])}else r.value=[]},toggleRowExpansion:(l,u)=>{rP(r.value,l,u)&&t.emit("expand-change",l,r.value.slice())},setExpandRowKeys:l=>{t.store.assertRowKey();const u=e.data.value||[],c=e.rowKey.value,d=F3(u,c);r.value=l.reduce((f,h)=>{const g=d[h];return g&&f.push(g.row),f},[])},isRowExpanded:l=>{const u=e.rowKey.value;return u?!!F3(r.value,u)[zs(l,u)]:r.value.includes(l)},states:{expandRows:r,defaultExpandAll:n}}}function hbt(e){const t=bn(),n=X(null),r=X(null),o=u=>{t.store.assertRowKey(),n.value=u,i(u)},a=()=>{n.value=null},i=u=>{const{data:c,rowKey:d}=e;let f=null;d.value&&(f=(b(c)||[]).find(h=>zs(h,d.value)===u)),r.value=f,t.emit("current-change",r.value,null)};return{setCurrentRowKey:o,restoreCurrentRowKey:a,setCurrentRowByKey:i,updateCurrentRow:u=>{const c=r.value;if(u&&u!==c){r.value=u,t.emit("current-change",r.value,c);return}!u&&c&&(r.value=null,t.emit("current-change",null,c))},updateCurrentRowData:()=>{const u=e.rowKey.value,c=e.data.value||[],d=r.value;if(!c.includes(d)&&d){if(u){const f=zs(d,u);i(f)}else r.value=null;sT(r.value)&&t.emit("current-change",null,d)}else n.value&&(i(n.value),a())},states:{_currentRowKey:n,currentRow:r}}}function pbt(e){const t=X([]),n=X({}),r=X(16),o=X(!1),a=X({}),i=X("hasChildren"),s=X("children"),l=X(!1),u=bn(),c=K(()=>{if(!e.rowKey.value)return{};const C=e.data.value||[];return f(C)}),d=K(()=>{const C=e.rowKey.value,S=Object.keys(a.value),E={};return S.length&&S.forEach(k=>{if(a.value[k].length){const O={children:[]};a.value[k].forEach(T=>{const P=zs(T,C);O.children.push(P),T[i.value]&&!E[P]&&(E[P]={children:[]})}),E[k]=O}}),E}),f=C=>{const S=e.rowKey.value,E={};return ubt(C,(k,O,T)=>{const P=zs(k,S);ct(O)?E[P]={children:O.map(U=>zs(U,S)),level:T}:o.value&&(E[P]={children:[],lazy:!0,level:T})},s.value,i.value),E},h=(C=!1,S=(E=>(E=u.store)==null?void 0:E.states.defaultExpandAll.value)())=>{var E;const k=c.value,O=d.value,T=Object.keys(k),P={};if(T.length){const U=b(n),F=[],H=(z,M)=>{if(C)return t.value?S||t.value.includes(M):!!(S||z!=null&&z.expanded);{const N=S||t.value&&t.value.includes(M);return!!(z!=null&&z.expanded||N)}};T.forEach(z=>{const M=U[z],N={...k[z]};if(N.expanded=H(M,z),N.lazy){const{loaded:L=!1,loading:V=!1}=M||{};N.loaded=!!L,N.loading=!!V,F.push(z)}P[z]=N});const R=Object.keys(O);o.value&&R.length&&F.length&&R.forEach(z=>{const M=U[z],N=O[z].children;if(F.includes(z)){if(P[z].children.length!==0)throw new Error("[ElTable]children must be an empty array.");P[z].children=N}else{const{loaded:L=!1,loading:V=!1}=M||{};P[z]={lazy:!0,loaded:!!L,loading:!!V,expanded:H(M,z),children:N,level:""}}})}n.value=P,(E=u.store)==null||E.updateTableScrollY()};Ze(()=>t.value,()=>{h(!0)}),Ze(()=>c.value,()=>{h()}),Ze(()=>d.value,()=>{h()});const g=C=>{t.value=C,h()},p=C=>o.value&&C&&"loaded"in C&&!C.loaded,m=(C,S)=>{u.store.assertRowKey();const E=e.rowKey.value,k=zs(C,E),O=k&&n.value[k];if(k&&O&&"expanded"in O){const T=O.expanded;S=Ln(S)?!O.expanded:S,n.value[k].expanded=S,T!==S&&u.emit("expand-change",C,S),p(O)&&y(C,k,O),u.store.updateTableScrollY()}},v=C=>{u.store.assertRowKey();const S=e.rowKey.value,E=zs(C,S),k=n.value[E];p(k)?y(C,E,k):m(C,void 0)},y=(C,S,E)=>{const{load:k}=u.props;k&&!n.value[S].loaded&&(n.value[S].loading=!0,k(C,E,O=>{if(!ct(O))throw new TypeError("[ElTable] data must be an array");n.value[S].loading=!1,n.value[S].loaded=!0,n.value[S].expanded=!0,O.length&&(a.value[S]=O),u.emit("expand-change",C,!0)}))};return{loadData:y,loadOrToggle:v,toggleTreeExpansion:m,updateTreeExpandKeys:g,updateTreeData:h,updateKeyChildren:(C,S)=>{const{lazy:E,rowKey:k}=u.props;if(E){if(!k)throw new Error("[Table] rowKey is required in updateKeyChild");a.value[C]&&(a.value[C]=S)}},normalize:f,states:{expandRowKeys:t,treeData:n,indent:r,lazy:o,lazyTreeNodeMap:a,lazyColumnIdentifier:i,childrenColumnName:s,checkStrictly:l}}}const gbt=(e,t)=>{const n=t.sortingColumn;return!n||$t(n.sortable)?e:obt(e,t.sortProp,t.sortOrder,n.sortMethod,n.sortBy)},GF=e=>{const t=[];return e.forEach(n=>{n.children&&n.children.length>0?t.push.apply(t,GF(n.children)):t.push(n)}),t};function vbt(){var e;const t=bn(),{size:n}=Ra((e=t.proxy)==null?void 0:e.$props),r=X(null),o=X([]),a=X([]),i=X(!1),s=X([]),l=X([]),u=X([]),c=X([]),d=X([]),f=X([]),h=X([]),g=X([]),p=[],m=X(0),v=X(0),y=X(0),_=X(!1),C=X([]),S=X(!1),E=X(!1),k=X(null),O=X({}),T=X(null),P=X(null),U=X(null),F=X(null),H=X(null),R=K(()=>r.value?F3(C.value,r.value):void 0);Ze(o,()=>{var Fe;t.state&&(L(!1),t.props.tableLayout==="auto"&&((Fe=t.refs.tableHeaderRef)==null||Fe.updateFixedColumnStyle()))},{deep:!0});const z=()=>{if(!r.value)throw new Error("[ElTable] prop row-key is required")},M=Fe=>{var Ue;(Ue=Fe.children)==null||Ue.forEach(Se=>{Se.fixed=Fe.fixed,M(Se)})},N=()=>{s.value.forEach(Ot=>{M(Ot)}),c.value=s.value.filter(Ot=>[!0,"left"].includes(Ot.fixed));const Fe=s.value.find(Ot=>Ot.type==="selection");let Ue;Fe&&Fe.fixed!=="right"&&!c.value.includes(Fe)&&s.value.indexOf(Fe)===0&&c.value.length&&(c.value.unshift(Fe),Ue=!0),d.value=s.value.filter(Ot=>Ot.fixed==="right");const Se=s.value.filter(Ot=>(Ue?Ot.type!=="selection":!0)&&!Ot.fixed);l.value=[].concat(c.value).concat(Se).concat(d.value);const We=GF(Se),Te=GF(c.value),Ge=GF(d.value);m.value=We.length,v.value=Te.length,y.value=Ge.length,u.value=[].concat(Te).concat(We).concat(Ge),i.value=c.value.length>0||d.value.length>0},L=(Fe,Ue=!1)=>{Fe&&N(),Ue?t.state.doLayout():t.state.debouncedUpdateLayout()},V=Fe=>R.value?!!R.value[zs(Fe,r.value)]:C.value.includes(Fe),Y=()=>{_.value=!1;const Fe=C.value;C.value=[],Fe.length&&t.emit("selection-change",[])},$=()=>{var Fe,Ue;let Se;if(r.value){Se=[];const We=(Ue=(Fe=t==null?void 0:t.store)==null?void 0:Fe.states)==null?void 0:Ue.childrenColumnName.value,Te=F3(o.value,r.value,!0,We);for(const Ge in R.value)Gn(R.value,Ge)&&!Te[Ge]&&Se.push(R.value[Ge].row)}else Se=C.value.filter(We=>!o.value.includes(We));if(Se.length){const We=C.value.filter(Te=>!Se.includes(Te));C.value=We,t.emit("selection-change",We.slice())}},B=()=>(C.value||[]).slice(),W=(Fe,Ue,Se=!0,We=!1)=>{var Te,Ge,Ot,Zt;const Wt={children:(Ge=(Te=t==null?void 0:t.store)==null?void 0:Te.states)==null?void 0:Ge.childrenColumnName.value,checkStrictly:(Zt=(Ot=t==null?void 0:t.store)==null?void 0:Ot.states)==null?void 0:Zt.checkStrictly.value};if(rP(C.value,Fe,Ue,Wt,We?void 0:k.value,o.value.indexOf(Fe))){const Le=(C.value||[]).slice();Se&&t.emit("select",Le,Fe),t.emit("selection-change",Le)}},J=()=>{var Fe,Ue;const Se=E.value?!_.value:!(_.value||C.value.length);_.value=Se;let We=!1,Te=0;const Ge=(Ue=(Fe=t==null?void 0:t.store)==null?void 0:Fe.states)==null?void 0:Ue.rowKey.value,{childrenColumnName:Ot}=t.store.states,Zt={children:Ot.value,checkStrictly:!1};o.value.forEach((Wt,dt)=>{const Le=dt+Te;rP(C.value,Wt,Se,Zt,k.value,Le)&&(We=!0),Te+=Z(zs(Wt,Ge))}),We&&t.emit("selection-change",C.value?C.value.slice():[]),t.emit("select-all",(C.value||[]).slice())},oe=()=>{o.value.forEach(Fe=>{const Ue=zs(Fe,r.value),Se=R.value[Ue];Se&&(C.value[Se.index]=Fe)})},ie=()=>{var Fe;if(((Fe=o.value)==null?void 0:Fe.length)===0){_.value=!1;return}const{childrenColumnName:Ue}=t.store.states;let Se=0,We=0;const Te=Ot=>{var Zt;for(const Wt of Ot){const dt=k.value&&k.value.call(null,Wt,Se);if(V(Wt))We++;else if(!k.value||dt)return!1;if(Se++,(Zt=Wt[Ue.value])!=null&&Zt.length&&!Te(Wt[Ue.value]))return!1}return!0},Ge=Te(o.value||[]);_.value=We===0?!1:Ge},Z=Fe=>{var Ue;if(!t||!t.store)return 0;const{treeData:Se}=t.store.states;let We=0;const Te=(Ue=Se.value[Fe])==null?void 0:Ue.children;return Te&&(We+=Te.length,Te.forEach(Ge=>{We+=Z(Ge)})),We},de=(Fe,Ue)=>{ct(Fe)||(Fe=[Fe]);const Se={};return Fe.forEach(We=>{O.value[We.id]=Ue,Se[We.columnKey||We.id]=Ue}),Se},we=(Fe,Ue,Se)=>{P.value&&P.value!==Fe&&(P.value.order=null),P.value=Fe,U.value=Ue,F.value=Se},Be=()=>{let Fe=b(a);Object.keys(O.value).forEach(Ue=>{const Se=O.value[Ue];if(!Se||Se.length===0)return;const We=KDe({columns:u.value},Ue);We&&We.filterMethod&&(Fe=Fe.filter(Te=>Se.some(Ge=>We.filterMethod.call(null,Ge,Te,We))))}),T.value=Fe},ke=()=>{o.value=gbt(T.value,{sortingColumn:P.value,sortProp:U.value,sortOrder:F.value})},ae=(Fe=void 0)=>{Fe&&Fe.filter||Be(),ke()},le=Fe=>{const{tableHeaderRef:Ue}=t.refs;if(!Ue)return;const Se=Object.assign({},Ue.filterPanels),We=Object.keys(Se);if(We.length)if($t(Fe)&&(Fe=[Fe]),ct(Fe)){const Te=Fe.map(Ge=>abt({columns:u.value},Ge));We.forEach(Ge=>{const Ot=Te.find(Zt=>Zt.id===Ge);Ot&&(Ot.filteredValue=[])}),t.store.commit("filterChange",{column:Te,values:[],silent:!0,multi:!0})}else We.forEach(Te=>{const Ge=u.value.find(Ot=>Ot.id===Te);Ge&&(Ge.filteredValue=[])}),O.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},q=()=>{P.value&&(we(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:pe,toggleRowExpansion:he,updateExpandRows:re,states:ue,isRowExpanded:_e}=fbt({data:o,rowKey:r}),{updateTreeExpandKeys:Pe,toggleTreeExpansion:Ae,updateTreeData:Ee,updateKeyChildren:ye,loadOrToggle:ve,states:Ce}=pbt({data:o,rowKey:r}),{updateCurrentRowData:ze,updateCurrentRow:at,setCurrentRowKey:bt,states:Ft}=hbt({data:o,rowKey:r});return{assertRowKey:z,updateColumns:N,scheduleLayout:L,isSelected:V,clearSelection:Y,cleanSelection:$,getSelectionRows:B,toggleRowSelection:W,_toggleAllSelection:J,toggleAllSelection:null,updateSelectionByRowKey:oe,updateAllSelected:ie,updateFilters:de,updateCurrentRow:at,updateSort:we,execFilter:Be,execSort:ke,execQuery:ae,clearFilter:le,clearSort:q,toggleRowExpansion:he,setExpandRowKeysAdapter:Fe=>{pe(Fe),Pe(Fe)},setCurrentRowKey:bt,toggleRowExpansionAdapter:(Fe,Ue)=>{u.value.some(({type:We})=>We==="expand")?he(Fe,Ue):Ae(Fe,Ue)},isRowExpanded:_e,updateExpandRows:re,updateCurrentRowData:ze,loadOrToggle:ve,updateTreeData:Ee,updateKeyChildren:ye,states:{tableSize:n,rowKey:r,data:o,_data:a,isComplex:i,_columns:s,originColumns:l,columns:u,fixedColumns:c,rightFixedColumns:d,leafColumns:f,fixedLeafColumns:h,rightFixedLeafColumns:g,updateOrderFns:p,leafColumnsLength:m,fixedLeafColumnsLength:v,rightFixedLeafColumnsLength:y,isAllSelected:_,selection:C,reserveSelection:S,selectOnIndeterminate:E,selectable:k,filters:O,filteredData:T,sortingColumn:P,sortProp:U,sortOrder:F,hoverRow:H,...ue,...Ce,...Ft}}}function aX(e,t){return e.map(n=>{var r;return n.id===t.id?t:((r=n.children)!=null&&r.length&&(n.children=aX(n.children,t)),n)})}function iX(e){e.forEach(t=>{var n,r;t.no=(n=t.getColumnIndex)==null?void 0:n.call(t),(r=t.children)!=null&&r.length&&iX(t.children)}),e.sort((t,n)=>t.no-n.no)}function mbt(){const e=bn(),t=vbt();return{ns:nt("table"),...t,mutations:{setData(i,s){const l=b(i._data)!==s;i.data.value=s,i._data.value=s,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),b(i.reserveSelection)?(e.store.assertRowKey(),e.store.updateSelectionByRowKey()):l?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(i,s,l,u){const c=b(i._columns);let d=[];l?(l&&!l.children&&(l.children=[]),l.children.push(s),d=aX(c,l)):(c.push(s),d=c),iX(d),i._columns.value=d,i.updateOrderFns.push(u),s.type==="selection"&&(i.selectable.value=s.selectable,i.reserveSelection.value=s.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(i,s){var l;((l=s.getColumnIndex)==null?void 0:l.call(s))!==s.no&&(iX(i._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(i,s,l,u){const c=b(i._columns)||[];if(l)l.children.splice(l.children.findIndex(f=>f.id===s.id),1),It(()=>{var f;((f=l.children)==null?void 0:f.length)===0&&delete l.children}),i._columns.value=aX(c,l);else{const f=c.indexOf(s);f>-1&&(c.splice(f,1),i._columns.value=c)}const d=i.updateOrderFns.indexOf(u);d>-1&&i.updateOrderFns.splice(d,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(i,s){const{prop:l,order:u,init:c}=s;if(l){const d=b(i.columns).find(f=>f.property===l);d&&(d.order=u,e.store.updateSort(d,l,u),e.store.commit("changeSortCondition",{init:c}))}},changeSortCondition(i,s){const{sortingColumn:l,sortProp:u,sortOrder:c}=i,d=b(l),f=b(u),h=b(c);sT(h)&&(i.sortingColumn.value=null,i.sortProp.value=null);const g={filter:!0};e.store.execQuery(g),(!s||!(s.silent||s.init))&&e.emit("sort-change",{column:d,prop:f,order:h}),e.store.updateTableScrollY()},filterChange(i,s){const{column:l,values:u,silent:c}=s,d=e.store.updateFilters(l,u);e.store.execQuery(),c||e.emit("filter-change",d),e.store.updateTableScrollY()},toggleAllSelection(){e.store.toggleAllSelection()},rowSelectedChanged(i,s){e.store.toggleRowSelection(s),e.store.updateAllSelected()},setHoverRow(i,s){i.hoverRow.value=s},setCurrentRow(i,s){e.store.updateCurrentRow(s)}},commit:function(i,...s){const l=e.store.mutations;if(l[i])l[i].apply(e,[e.store.states].concat(s));else throw new Error(`Action not found: ${i}`)},updateTableScrollY:function(){It(()=>e.layout.updateScrollY.apply(e.layout))}}}const US={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"},"treeProps.checkStrictly":{key:"checkStrictly",default:!1}};function ybt(e,t){if(!e)throw new Error("Table is required.");const n=mbt();return n.toggleAllSelection=tu(n._toggleAllSelection,10),Object.keys(US).forEach(r=>{JDe(ZDe(t,r),r,n)}),bbt(n,t),n}function bbt(e,t){Object.keys(US).forEach(n=>{Ze(()=>ZDe(t,n),r=>{JDe(r,n,e)})})}function JDe(e,t,n){let r=e,o=US[t];vn(US[t])&&(o=o.key,r=r||US[t].default),n.states[o].value=r}function ZDe(e,t){if(t.includes(".")){const n=t.split(".");let r=e;return n.forEach(o=>{r=r[o]}),r}else return e[t]}class _bt{constructor(t){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=X(null),this.scrollX=X(!1),this.scrollY=X(!1),this.bodyWidth=X(null),this.fixedWidth=X(null),this.rightFixedWidth=X(null),this.gutterWidth=0;for(const n in t)Gn(t,n)&&(kr(this[n])?this[n].value=t[n]:this[n]=t[n]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){const t=this.height.value;if(sT(t))return!1;const n=this.table.refs.scrollBarRef;if(this.table.vnode.el&&(n!=null&&n.wrapRef)){let r=!0;const o=this.scrollY.value;return r=n.wrapRef.scrollHeight>n.wrapRef.clientHeight,this.scrollY.value=r,o!==r}return!1}setHeight(t,n="height"){if(!Nn)return;const r=this.table.vnode.el;if(t=sbt(t),this.height.value=Number(t),!r&&(t||t===0))return It(()=>this.setHeight(t,n));Lt(t)?(r.style[n]=`${t}px`,this.updateElsHeight()):$t(t)&&(r.style[n]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,"max-height")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(r=>{r.isColumnGroup?t.push.apply(t,r.columns):t.push(r)}),t}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(t){if(!t)return!0;let n=t;for(;n.tagName!=="DIV";){if(getComputedStyle(n).display==="none")return!0;n=n.parentElement}return!1}updateColumnsWidth(){if(!Nn)return;const t=this.fit,n=this.table.vnode.el.clientWidth;let r=0;const o=this.getFlattenColumns(),a=o.filter(l=>!Lt(l.width));if(o.forEach(l=>{Lt(l.width)&&l.realWidth&&(l.realWidth=null)}),a.length>0&&t){if(o.forEach(l=>{r+=Number(l.width||l.minWidth||80)}),r<=n){this.scrollX.value=!1;const l=n-r;if(a.length===1)a[0].realWidth=Number(a[0].minWidth||80)+l;else{const u=a.reduce((f,h)=>f+Number(h.minWidth||80),0),c=l/u;let d=0;a.forEach((f,h)=>{if(h===0)return;const g=Math.floor(Number(f.minWidth||80)*c);d+=g,f.realWidth=Number(f.minWidth||80)+g}),a[0].realWidth=Number(a[0].minWidth||80)+l-d}}else this.scrollX.value=!0,a.forEach(l=>{l.realWidth=Number(l.minWidth)});this.bodyWidth.value=Math.max(r,n),this.table.state.resizeState.value.width=this.bodyWidth.value}else o.forEach(l=>{!l.width&&!l.minWidth?l.realWidth=80:l.realWidth=Number(l.width||l.minWidth),r+=l.realWidth}),this.scrollX.value=r>n,this.bodyWidth.value=r;const i=this.store.states.fixedColumns.value;if(i.length>0){let l=0;i.forEach(u=>{l+=Number(u.realWidth||u.width)}),this.fixedWidth.value=l}const s=this.store.states.rightFixedColumns.value;if(s.length>0){let l=0;s.forEach(u=>{l+=Number(u.realWidth||u.width)}),this.rightFixedWidth.value=l}this.notifyObservers("columns")}addObserver(t){this.observers.push(t)}removeObserver(t){const n=this.observers.indexOf(t);n!==-1&&this.observers.splice(n,1)}notifyObservers(t){this.observers.forEach(r=>{var o,a;switch(t){case"columns":(o=r.state)==null||o.onColumnsChange(this);break;case"scrollable":(a=r.state)==null||a.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}const{CheckboxGroup:wbt}=Xi,Cbt=ne({name:"ElTableFilterPanel",components:{ElCheckbox:Xi,ElCheckboxGroup:wbt,ElScrollbar:id,ElTooltip:Yi,ElIcon:Tt,ArrowDown:lc,ArrowUp:mC},directives:{ClickOutside:Fg},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function},appendTo:Qo.appendTo},setup(e){const t=bn(),{t:n}=Un(),r=nt("table-filter"),o=t==null?void 0:t.parent;o.filterPanels.value[e.column.id]||(o.filterPanels.value[e.column.id]=t);const a=X(!1),i=X(null),s=K(()=>e.column&&e.column.filters),l=K(()=>e.column.filterClassName?`${r.b()} ${e.column.filterClassName}`:r.b()),u=K({get:()=>{var S;return(((S=e.column)==null?void 0:S.filteredValue)||[])[0]},set:S=>{c.value&&(ql(S)?c.value.splice(0,1):c.value.splice(0,1,S))}}),c=K({get(){return e.column?e.column.filteredValue||[]:[]},set(S){e.column&&e.upDataColumn("filteredValue",S)}}),d=K(()=>e.column?e.column.filterMultiple:!0),f=S=>S.value===u.value,h=()=>{a.value=!1},g=S=>{S.stopPropagation(),a.value=!a.value},p=()=>{a.value=!1},m=()=>{_(c.value),h()},v=()=>{c.value=[],_(c.value),h()},y=S=>{u.value=S,ql(S)?_([]):_(c.value),h()},_=S=>{e.store.commit("filterChange",{column:e.column,values:S}),e.store.updateAllSelected()};Ze(a,S=>{e.column&&e.upDataColumn("filterOpened",S)},{immediate:!0});const C=K(()=>{var S,E;return(E=(S=i.value)==null?void 0:S.popperRef)==null?void 0:E.contentRef});return{tooltipVisible:a,multiple:d,filterClassName:l,filteredValue:c,filterValue:u,filters:s,handleConfirm:m,handleReset:v,handleSelect:y,isPropAbsent:ql,isActive:f,t:n,ns:r,showFilterPanel:g,hideFilterPanel:p,popperPaneRef:C,tooltip:i}}});function xbt(e,t,n,r,o,a){const i=yn("el-checkbox"),s=yn("el-checkbox-group"),l=yn("el-scrollbar"),u=yn("arrow-up"),c=yn("arrow-down"),d=yn("el-icon"),f=yn("el-tooltip"),h=pL("click-outside");return I(),Oe(f,{ref:"tooltip",visible:e.tooltipVisible,offset:0,placement:e.placement,"show-arrow":!1,"stop-popper-mouse-event":!1,teleported:"",effect:"light",pure:"","popper-class":e.filterClassName,persistent:"","append-to":e.appendTo},{content:A(()=>[e.multiple?(I(),j("div",{key:0},[w("div",{class:ee(e.ns.e("content"))},[D(l,{"wrap-class":e.ns.e("wrap")},{default:A(()=>[D(s,{modelValue:e.filteredValue,"onUpdate:modelValue":g=>e.filteredValue=g,class:ee(e.ns.e("checkbox-group"))},{default:A(()=>[(I(!0),j(tt,null,wt(e.filters,g=>(I(),Oe(i,{key:g.value,value:g.value},{default:A(()=>[ce(se(g.text),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","class"])]),_:1},8,["wrap-class"])],2),w("div",{class:ee(e.ns.e("bottom"))},[w("button",{class:ee({[e.ns.is("disabled")]:e.filteredValue.length===0}),disabled:e.filteredValue.length===0,type:"button",onClick:e.handleConfirm},se(e.t("el.table.confirmFilter")),11,["disabled","onClick"]),w("button",{type:"button",onClick:e.handleReset},se(e.t("el.table.resetFilter")),9,["onClick"])],2)])):(I(),j("ul",{key:1,class:ee(e.ns.e("list"))},[w("li",{class:ee([e.ns.e("list-item"),{[e.ns.is("active")]:e.isPropAbsent(e.filterValue)}]),onClick:g=>e.handleSelect(null)},se(e.t("el.table.clearFilter")),11,["onClick"]),(I(!0),j(tt,null,wt(e.filters,g=>(I(),j("li",{key:g.value,class:ee([e.ns.e("list-item"),e.ns.is("active",e.isActive(g))]),label:g.value,onClick:p=>e.handleSelect(g.value)},se(g.text),11,["label","onClick"]))),128))],2))]),default:A(()=>[rn((I(),j("span",{class:ee([`${e.ns.namespace.value}-table__column-filter-trigger`,`${e.ns.namespace.value}-none-outline`]),onClick:e.showFilterPanel},[D(d,null,{default:A(()=>[Ne(e.$slots,"filter-icon",{},()=>[e.column.filterOpened?(I(),Oe(u,{key:0})):(I(),Oe(c,{key:1}))])]),_:3})],10,["onClick"])),[[h,e.hideFilterPanel,e.popperPaneRef]])]),_:3},8,["visible","placement","popper-class","append-to"])}var Sbt=vt(Cbt,[["render",xbt],["__file","filter-panel.vue"]]);function Jre(e){const t=bn();hL(()=>{n.value.addObserver(t)}),Kt(()=>{r(n.value),o(n.value)}),gf(()=>{r(n.value),o(n.value)}),gd(()=>{n.value.removeObserver(t)});const n=K(()=>{const a=e.layout;if(!a)throw new Error("Can not find table layout.");return a}),r=a=>{var i;const s=((i=e.vnode.el)==null?void 0:i.querySelectorAll("colgroup > col"))||[];if(!s.length)return;const l=a.getFlattenColumns(),u={};l.forEach(c=>{u[c.id]=c});for(let c=0,d=s.length;c{var i,s;const l=((i=e.vnode.el)==null?void 0:i.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let c=0,d=l.length;c{p.stopPropagation()},a=(p,m)=>{!m.filters&&m.sortable?g(p,m,!1):m.filterable&&!m.sortable&&o(p),r==null||r.emit("header-click",m,p)},i=(p,m)=>{r==null||r.emit("header-contextmenu",m,p)},s=X(null),l=X(!1),u=X({}),c=(p,m)=>{if(Nn&&!(m.children&&m.children.length>0)&&s.value&&e.border){l.value=!0;const v=r;t("set-drag-visible",!0);const _=(v==null?void 0:v.vnode.el).getBoundingClientRect().left,C=n.vnode.el.querySelector(`th.${m.id}`),S=C.getBoundingClientRect(),E=S.left-_+30;Yc(C,"noclick"),u.value={startMouseLeft:p.clientX,startLeft:S.right-_,startColumnLeft:S.left-_,tableLeft:_};const k=v==null?void 0:v.refs.resizeProxy;k.style.left=`${u.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const O=P=>{const U=P.clientX-u.value.startMouseLeft,F=u.value.startLeft+U;k.style.left=`${Math.max(E,F)}px`},T=()=>{if(l.value){const{startColumnLeft:P,startLeft:U}=u.value,H=Number.parseInt(k.style.left,10)-P;m.width=m.realWidth=H,v==null||v.emit("header-dragend",m.width,U-P,m,p),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",l.value=!1,s.value=null,u.value={},t("set-drag-visible",!1)}document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",T),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{Hs(C,"noclick")},0)};document.addEventListener("mousemove",O),document.addEventListener("mouseup",T)}},d=(p,m)=>{var v;if(m.children&&m.children.length>0)return;const y=p.target;if(!_l(y))return;const _=y==null?void 0:y.closest("th");if(!(!m||!m.resizable||!_)&&!l.value&&e.border){const C=_.getBoundingClientRect(),S=document.body.style,E=((v=_.parentNode)==null?void 0:v.lastElementChild)===_,k=e.allowDragLastColumn||!E;C.width>12&&C.right-p.clientX<8&&k?(S.cursor="col-resize",jl(_,"is-sortable")&&(_.style.cursor="col-resize"),s.value=m):l.value||(S.cursor="",jl(_,"is-sortable")&&(_.style.cursor="pointer"),s.value=null)}},f=()=>{Nn&&(document.body.style.cursor="")},h=({order:p,sortOrders:m})=>{if(p==="")return m[0];const v=m.indexOf(p||null);return m[v>m.length-2?0:v+1]},g=(p,m,v)=>{var y;p.stopPropagation();const _=m.order===v?null:v||h(m),C=(y=p.target)==null?void 0:y.closest("th");if(C&&jl(C,"noclick")){Hs(C,"noclick");return}if(!m.sortable)return;const S=p.currentTarget;if(["ascending","descending"].some(P=>jl(S,P)&&!m.sortOrders.includes(P)))return;const E=e.store.states;let k=E.sortProp.value,O;const T=E.sortingColumn.value;(T!==m||T===m&&sT(T.order))&&(T&&(T.order=null),E.sortingColumn.value=m,k=m.property),_?O=m.order=_:O=m.order=null,E.sortProp.value=k,E.sortOrder.value=O,r==null||r.store.commit("changeSortCondition")};return{handleHeaderClick:a,handleHeaderContextMenu:i,handleMouseDown:c,handleMouseMove:d,handleMouseOut:f,handleSortClick:g,handleFilterClick:o}}function Ebt(e){const t=kt(wf),n=nt("table");return{getHeaderRowStyle:s=>{const l=t==null?void 0:t.props.headerRowStyle;return Rt(l)?l.call(null,{rowIndex:s}):l},getHeaderRowClass:s=>{const l=[],u=t==null?void 0:t.props.headerRowClassName;return $t(u)?l.push(u):Rt(u)&&l.push(u.call(null,{rowIndex:s})),l.join(" ")},getHeaderCellStyle:(s,l,u,c)=>{var d;let f=(d=t==null?void 0:t.props.headerCellStyle)!=null?d:{};Rt(f)&&(f=f.call(null,{rowIndex:s,columnIndex:l,row:u,column:c}));const h=Xre(l,c.fixed,e.store,u);return b8(h,"left"),b8(h,"right"),Object.assign({},f,h)},getHeaderCellClass:(s,l,u,c)=>{const d=Yre(n.b(),l,c.fixed,e.store,u),f=[c.id,c.order,c.headerAlign,c.className,c.labelClassName,...d];c.children||f.push("is-leaf"),c.sortable&&f.push("is-sortable");const h=t==null?void 0:t.props.headerCellClassName;return $t(h)?f.push(h):Rt(h)&&f.push(h.call(null,{rowIndex:s,columnIndex:l,row:u,column:c})),f.push(n.e("cell")),f.filter(g=>!!g).join(" ")}}}const QDe=e=>{const t=[];return e.forEach(n=>{n.children?(t.push(n),t.push.apply(t,QDe(n.children))):t.push(n)}),t},eEe=e=>{let t=1;const n=(a,i)=>{if(i&&(a.level=i.level+1,t{n(l,a),s+=l.colSpan}),a.colSpan=s}else a.colSpan=1};e.forEach(a=>{a.level=1,n(a,void 0)});const r=[];for(let a=0;a{a.children?(a.rowSpan=1,a.children.forEach(i=>i.isSubColumn=!0)):a.rowSpan=t-a.level+1,r[a.level-1].push(a)}),r};function kbt(e){const t=kt(wf),n=K(()=>eEe(e.store.states.originColumns.value));return{isGroup:K(()=>{const a=n.value.length>1;return a&&t&&(t.state.isGroup.value=!0),a}),toggleAllSelection:a=>{a.stopPropagation(),t==null||t.store.commit("toggleAllSelection")},columnRows:n}}var Abt=ne({name:"ElTableHeader",components:{ElCheckbox:Xi},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})},appendFilterPanelTo:{type:String},allowDragLastColumn:{type:Boolean}},setup(e,{emit:t}){const n=bn(),r=kt(wf),o=nt("table"),a=X({}),{onColumnsChange:i,onScrollableChange:s}=Jre(r),l=(r==null?void 0:r.props.tableLayout)==="auto",u=Bn(new Map),c=X(),d=()=>{setTimeout(()=>{u.size>0&&(u.forEach((P,U)=>{const F=c.value.querySelector(`.${U.replace(/\s/g,".")}`);if(F){const H=F.getBoundingClientRect().width;P.width=H}}),u.clear())})};Ze(u,d),Kt(async()=>{await It(),await It();const{prop:P,order:U}=e.defaultSort;r==null||r.store.commit("sort",{prop:P,order:U,init:!0}),d()});const{handleHeaderClick:f,handleHeaderContextMenu:h,handleMouseDown:g,handleMouseMove:p,handleMouseOut:m,handleSortClick:v,handleFilterClick:y}=Dbt(e,t),{getHeaderRowStyle:_,getHeaderRowClass:C,getHeaderCellStyle:S,getHeaderCellClass:E}=Ebt(e),{isGroup:k,toggleAllSelection:O,columnRows:T}=kbt(e);return n.state={onColumnsChange:i,onScrollableChange:s},n.filterPanels=a,{ns:o,filterPanels:a,onColumnsChange:i,onScrollableChange:s,columnRows:T,getHeaderRowClass:C,getHeaderRowStyle:_,getHeaderCellClass:E,getHeaderCellStyle:S,handleHeaderClick:f,handleHeaderContextMenu:h,handleMouseDown:g,handleMouseMove:p,handleMouseOut:m,handleSortClick:v,handleFilterClick:y,isGroup:k,toggleAllSelection:O,saveIndexSelection:u,isTableLayoutAuto:l,theadRef:c,updateFixedColumnStyle:d}},render(){const{ns:e,isGroup:t,columnRows:n,getHeaderCellStyle:r,getHeaderCellClass:o,getHeaderRowClass:a,getHeaderRowStyle:i,handleHeaderClick:s,handleHeaderContextMenu:l,handleMouseDown:u,handleMouseMove:c,handleSortClick:d,handleMouseOut:f,store:h,$parent:g,saveIndexSelection:p,isTableLayoutAuto:m}=this;let v=1;return Vt("thead",{ref:"theadRef",class:{[e.is("group")]:t}},n.map((y,_)=>Vt("tr",{class:a(_),key:_,style:i(_)},y.map((C,S)=>{C.rowSpan>v&&(v=C.rowSpan);const E=o(_,S,y,C);return m&&C.fixed&&p.set(E,C),Vt("th",{class:E,colspan:C.colSpan,key:`${C.id}-thead`,rowspan:C.rowSpan,style:r(_,S,y,C),onClick:k=>{k.currentTarget.classList.contains("noclick")||s(k,C)},onContextmenu:k=>l(k,C),onMousedown:k=>u(k,C),onMousemove:k=>c(k,C),onMouseout:f},[Vt("div",{class:["cell",C.filteredValue&&C.filteredValue.length>0?"highlight":""]},[C.renderHeader?C.renderHeader({column:C,$index:S,store:h,_self:g}):C.label,C.sortable&&Vt("span",{onClick:k=>d(k,C),class:"caret-wrapper"},[Vt("i",{onClick:k=>d(k,C,"ascending"),class:"sort-caret ascending"}),Vt("i",{onClick:k=>d(k,C,"descending"),class:"sort-caret descending"})]),C.filterable&&Vt(Sbt,{store:h,placement:C.filterPlacement||"bottom-start",appendTo:g.appendFilterPanelTo,column:C,upDataColumn:(k,O)=>{C[k]=O}},{"filter-icon":()=>C.renderFilterIcon?C.renderFilterIcon({filterOpened:C.filterOpened}):null})])])}))))}});function sj(e,t,n=.03){return e-t>n}function Tbt(e){const t=kt(wf),n=X(""),r=X(Vt("div")),o=(g,p,m)=>{var v;const y=t,_=ij(g);let C;const S=(v=y==null?void 0:y.vnode.el)==null?void 0:v.dataset.prefix;_&&(C=tpe({columns:e.store.states.columns.value},_,S),C&&(y==null||y.emit(`cell-${m}`,p,C,_,g))),y==null||y.emit(`row-${m}`,p,C,g)},a=(g,p)=>{o(g,p,"dblclick")},i=(g,p)=>{e.store.commit("setCurrentRow",p),o(g,p,"click")},s=(g,p)=>{o(g,p,"contextmenu")},l=tu(g=>{e.store.commit("setHoverRow",g)},30),u=tu(()=>{e.store.commit("setHoverRow",null)},30),c=g=>{const p=window.getComputedStyle(g,null),m=Number.parseInt(p.paddingLeft,10)||0,v=Number.parseInt(p.paddingRight,10)||0,y=Number.parseInt(p.paddingTop,10)||0,_=Number.parseInt(p.paddingBottom,10)||0;return{left:m,right:v,top:y,bottom:_}},d=(g,p,m)=>{let v=p.target.parentNode;for(;g>1&&(v=v==null?void 0:v.nextSibling,!(!v||v.nodeName!=="TR"));)m(v,"hover-row hover-fixed-row"),g--};return{handleDoubleClick:a,handleClick:i,handleContextMenu:s,handleMouseEnter:l,handleMouseLeave:u,handleCellMouseEnter:(g,p,m)=>{var v,y,_;const C=t,S=ij(g),E=(v=C==null?void 0:C.vnode.el)==null?void 0:v.dataset.prefix;let k;if(S){k=tpe({columns:e.store.states.columns.value},S,E),S.rowSpan>1&&d(S.rowSpan,g,Yc);const Y=C.hoverState={cell:S,column:k,row:p};C==null||C.emit("cell-mouse-enter",Y.row,Y.column,Y.cell,g)}if(!m)return;const O=g.target.querySelector(".cell");if(!(jl(O,`${E}-tooltip`)&&O.childNodes.length))return;const T=document.createRange();T.setStart(O,0),T.setEnd(O,O.childNodes.length);const{width:P,height:U}=T.getBoundingClientRect(),{width:F,height:H}=O.getBoundingClientRect(),{top:R,left:z,right:M,bottom:N}=c(O),L=z+M,V=R+N;sj(P+L,F)||sj(U+V,H)||sj(O.scrollWidth,F)?dbt(m,S.innerText||S.textContent,p,k,S,C):((y=Ml)==null?void 0:y.trigger)===S&&((_=Ml)==null||_())},handleCellMouseLeave:g=>{const p=ij(g);if(!p)return;p.rowSpan>1&&d(p.rowSpan,g,Hs);const m=t==null?void 0:t.hoverState;t==null||t.emit("cell-mouse-leave",m==null?void 0:m.row,m==null?void 0:m.column,m==null?void 0:m.cell,g)},tooltipContent:n,tooltipTrigger:r}}function Obt(e){const t=kt(wf),n=nt("table");return{getRowStyle:(u,c)=>{const d=t==null?void 0:t.props.rowStyle;return Rt(d)?d.call(null,{row:u,rowIndex:c}):d||null},getRowClass:(u,c)=>{const d=[n.e("row")];t!=null&&t.props.highlightCurrentRow&&u===e.store.states.currentRow.value&&d.push("current-row"),e.stripe&&c%2===1&&d.push(n.em("row","striped"));const f=t==null?void 0:t.props.rowClassName;return $t(f)?d.push(f):Rt(f)&&d.push(f.call(null,{row:u,rowIndex:c})),d},getCellStyle:(u,c,d,f)=>{const h=t==null?void 0:t.props.cellStyle;let g=h??{};Rt(h)&&(g=h.call(null,{rowIndex:u,columnIndex:c,row:d,column:f}));const p=Xre(c,e==null?void 0:e.fixed,e.store);return b8(p,"left"),b8(p,"right"),Object.assign({},g,p)},getCellClass:(u,c,d,f,h)=>{const g=Yre(n.b(),c,e==null?void 0:e.fixed,e.store,void 0,h),p=[f.id,f.align,f.className,...g],m=t==null?void 0:t.props.cellClassName;return $t(m)?p.push(m):Rt(m)&&p.push(m.call(null,{rowIndex:u,columnIndex:c,row:d,column:f})),p.push(n.e("cell")),p.filter(v=>!!v).join(" ")},getSpan:(u,c,d,f)=>{let h=1,g=1;const p=t==null?void 0:t.props.spanMethod;if(Rt(p)){const m=p({row:u,column:c,rowIndex:d,columnIndex:f});ct(m)?(h=m[0],g=m[1]):vn(m)&&(h=m.rowspan,g=m.colspan)}return{rowspan:h,colspan:g}},getColspanRealWidth:(u,c,d)=>{if(c<1)return u[d].realWidth;const f=u.map(({realWidth:h,width:g})=>h||g).slice(d,d+c);return Number(f.reduce((h,g)=>Number(h)+Number(g),-1))}}}const Fbt=ne({name:"TableTdWrapper"}),Ibt=ne({...Fbt,props:{colspan:{type:Number,default:1},rowspan:{type:Number,default:1}},setup(e){return(t,n)=>(I(),j("td",{colspan:e.colspan,rowspan:e.rowspan},[Ne(t.$slots,"default")],8,["colspan","rowspan"]))}});var Mbt=vt(Ibt,[["__file","td-wrapper.vue"]]);function Pbt(e){const t=kt(wf),n=nt("table"),{handleDoubleClick:r,handleClick:o,handleContextMenu:a,handleMouseEnter:i,handleMouseLeave:s,handleCellMouseEnter:l,handleCellMouseLeave:u,tooltipContent:c,tooltipTrigger:d}=Tbt(e),{getRowStyle:f,getRowClass:h,getCellStyle:g,getCellClass:p,getSpan:m,getColspanRealWidth:v}=Obt(e),y=K(()=>e.store.states.columns.value.findIndex(({type:k})=>k==="default")),_=(k,O)=>{const T=t.props.rowKey;return T?zs(k,T):O},C=(k,O,T,P=!1)=>{const{tooltipEffect:U,tooltipOptions:F,store:H}=e,{indent:R,columns:z}=H.states,M=h(k,O);let N=!0;return T&&(M.push(n.em("row",`level-${T.level}`)),N=T.display),Vt("tr",{style:[N?null:{display:"none"},f(k,O)],class:M,key:_(k,O),onDblclick:V=>r(V,k),onClick:V=>o(V,k),onContextmenu:V=>a(V,k),onMouseenter:()=>i(O),onMouseleave:s},z.value.map((V,Y)=>{const{rowspan:$,colspan:B}=m(k,V,O,Y);if(!$||!B)return null;const W=Object.assign({},V);W.realWidth=v(z.value,B,Y);const J={store:e.store,_self:e.context||t,column:W,row:k,$index:O,cellIndex:Y,expanded:P};Y===y.value&&T&&(J.treeNode={indent:T.level*R.value,level:T.level},hr(T.expanded)&&(J.treeNode.expanded=T.expanded,"loading"in T&&(J.treeNode.loading=T.loading),"noLazyChildren"in T&&(J.treeNode.noLazyChildren=T.noLazyChildren)));const oe=`${_(k,O)},${Y}`,ie=W.columnKey||W.rawColumnKey||"",Z=V.showOverflowTooltip&&Ixe({effect:U},F,V.showOverflowTooltip);return Vt(Mbt,{style:g(O,Y,k,V),class:p(O,Y,k,V,B-1),key:`${ie}${oe}`,rowspan:$,colspan:B,onMouseenter:de=>l(de,k,Z),onMouseleave:u},{default:()=>S(Y,V,J)})}))},S=(k,O,T)=>O.renderCell(T);return{wrappedRowRender:(k,O)=>{const T=e.store,{isRowExpanded:P,assertRowKey:U}=T,{treeData:F,lazyTreeNodeMap:H,childrenColumnName:R,rowKey:z}=T.states,M=T.states.columns.value;if(M.some(({type:L})=>L==="expand")){const L=P(k),V=C(k,O,void 0,L),Y=t.renderExpanded;if(!Y)return console.error("[Element Error]renderExpanded is required."),V;const $=[[V]];return(t.props.preserveExpandedContent||L)&&$[0].push(Vt("tr",{key:`expanded-row__${V.key}`,style:{display:L?"":"none"}},[Vt("td",{colspan:M.length,class:`${n.e("cell")} ${n.e("expanded-cell")}`},[Y({row:k,$index:O,store:T,expanded:L})])])),$}else if(Object.keys(F.value).length){U();const L=zs(k,z.value);let V=F.value[L],Y=null;V&&(Y={expanded:V.expanded,level:V.level,display:!0},hr(V.lazy)&&(hr(V.loaded)&&V.loaded&&(Y.noLazyChildren=!(V.children&&V.children.length)),Y.loading=V.loading));const $=[C(k,O,Y)];if(V){let B=0;const W=(oe,ie)=>{oe&&oe.length&&ie&&oe.forEach(Z=>{const de={display:ie.display&&ie.expanded,level:ie.level+1,expanded:!1,noLazyChildren:!1,loading:!1},we=zs(Z,z.value);if(ql(we))throw new Error("For nested data item, row-key is required.");if(V={...F.value[we]},V&&(de.expanded=V.expanded,V.level=V.level||de.level,V.display=!!(V.expanded&&de.display),hr(V.lazy)&&(hr(V.loaded)&&V.loaded&&(de.noLazyChildren=!(V.children&&V.children.length)),de.loading=V.loading)),B++,$.push(C(Z,O+B,de)),V){const Be=H.value[we]||Z[R.value];W(Be,V)}})};V.display=!0;const J=H.value[L]||k[R.value];W(J,V)}return $}else return C(k,O,void 0)},tooltipContent:c,tooltipTrigger:d}}const $bt={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var Bbt=ne({name:"ElTableBody",props:$bt,setup(e){const t=bn(),n=kt(wf),r=nt("table"),{wrappedRowRender:o,tooltipContent:a,tooltipTrigger:i}=Pbt(e),{onColumnsChange:s,onScrollableChange:l}=Jre(n),u=[];return Ze(e.store.states.hoverRow,(c,d)=>{var f;const h=t==null?void 0:t.vnode.el,g=Array.from((h==null?void 0:h.children)||[]).filter(v=>v==null?void 0:v.classList.contains(`${r.e("row")}`));let p=c;const m=(f=g[p])==null?void 0:f.childNodes;if(m!=null&&m.length){let v=0;Array.from(m).reduce((_,C,S)=>{var E,k;return((E=m[S])==null?void 0:E.colSpan)>1&&(v=(k=m[S])==null?void 0:k.colSpan),C.nodeName!=="TD"&&v===0&&_.push(S),v>0&&v--,_},[]).forEach(_=>{var C;for(p=c;p>0;){const S=(C=g[p-1])==null?void 0:C.childNodes;if(S[_]&&S[_].nodeName==="TD"&&S[_].rowSpan>1){Yc(S[_],"hover-cell"),u.push(S[_]);break}p--}})}else u.forEach(v=>Hs(v,"hover-cell")),u.length=0;!e.store.states.isComplex.value||!Nn||$m(()=>{const v=g[d],y=g[c];v&&!v.classList.contains("hover-fixed-row")&&Hs(v,"hover-row"),y&&Yc(y,"hover-row")})}),gd(()=>{var c;(c=Ml)==null||c()}),{ns:r,onColumnsChange:s,onScrollableChange:l,wrappedRowRender:o,tooltipContent:a,tooltipTrigger:i}},render(){const{wrappedRowRender:e,store:t}=this,n=t.states.data.value||[];return Vt("tbody",{tabIndex:-1},[n.reduce((r,o)=>r.concat(e(o,r.length)),[])])}});function Rbt(){var e;const t=kt(wf),n=t==null?void 0:t.store,r=K(()=>{var l;return(l=n==null?void 0:n.states.fixedLeafColumnsLength.value)!=null?l:0}),o=K(()=>{var l;return(l=n==null?void 0:n.states.rightFixedColumns.value.length)!=null?l:0}),a=K(()=>{var l;return(l=n==null?void 0:n.states.columns.value.length)!=null?l:0}),i=K(()=>{var l;return(l=n==null?void 0:n.states.fixedColumns.value.length)!=null?l:0}),s=K(()=>{var l;return(l=n==null?void 0:n.states.rightFixedColumns.value.length)!=null?l:0});return{leftFixedLeafCount:r,rightFixedLeafCount:o,columnsCount:a,leftFixedCount:i,rightFixedCount:s,columns:(e=n==null?void 0:n.states.columns)!=null?e:[]}}function Nbt(e){const{columns:t}=Rbt(),n=nt("table");return{getCellClasses:(a,i)=>{const s=a[i],l=[n.e("cell"),s.id,s.align,s.labelClassName,...Yre(n.b(),i,s.fixed,e.store)];return s.className&&l.push(s.className),s.children||l.push(n.is("leaf")),l},getCellStyles:(a,i)=>{const s=Xre(i,a.fixed,e.store);return b8(s,"left"),b8(s,"right"),s},columns:t}}var Lbt=ne({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const t=kt(wf),n=nt("table"),{getCellClasses:r,getCellStyles:o,columns:a}=Nbt(e),{onScrollableChange:i,onColumnsChange:s}=Jre(t);return{ns:n,onScrollableChange:i,onColumnsChange:s,getCellClasses:r,getCellStyles:o,columns:a}},render(){const{columns:e,getCellStyles:t,getCellClasses:n,summaryMethod:r,sumText:o}=this,a=this.store.states.data.value;let i=[];return r?i=r({columns:e,data:a}):e.forEach((s,l)=>{if(l===0){i[l]=o;return}const u=a.map(h=>Number(h[s.property])),c=[];let d=!0;u.forEach(h=>{if(!Number.isNaN(+h)){d=!1;const g=`${h}`.split(".")[1];c.push(g?g.length:0)}});const f=Math.max.apply(null,c);d?i[l]="":i[l]=u.reduce((h,g)=>{const p=Number(g);return Number.isNaN(+p)?h:Number.parseFloat((h+g).toFixed(Math.min(f,20)))},0)}),Vt(Vt("tfoot",[Vt("tr",{},[...e.map((s,l)=>Vt("td",{key:l,colspan:s.colSpan,rowspan:s.rowSpan,class:n(e,l),style:t(s,l)},[Vt("div",{class:["cell",s.labelClassName]},[i[l]])]))])]))}});function Ubt(e){return{setCurrentRow:d=>{e.commit("setCurrentRow",d)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(d,f,h=!0)=>{e.toggleRowSelection(d,f,!1,h),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:d=>{e.clearFilter(d)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(d,f)=>{e.toggleRowExpansionAdapter(d,f)},clearSort:()=>{e.clearSort()},sort:(d,f)=>{e.commit("sort",{prop:d,order:f})},updateKeyChildren:(d,f)=>{e.updateKeyChildren(d,f)}}}function Vbt(e,t,n,r){const o=X(!1),a=X(null),i=X(!1),s=L=>{i.value=L},l=X({width:null,height:null,headerHeight:null}),u=X(!1),c={display:"inline-block",verticalAlign:"middle"},d=X(),f=X(0),h=X(0),g=X(0),p=X(0),m=X(0);Wi(()=>{t.setHeight(e.height)}),Wi(()=>{t.setMaxHeight(e.maxHeight)}),Ze(()=>[e.currentRowKey,n.states.rowKey],([L,V])=>{!b(V)||!b(L)||n.setCurrentRowKey(`${L}`)},{immediate:!0}),Ze(()=>e.data,L=>{r.store.commit("setData",L)},{immediate:!0,deep:!0}),Wi(()=>{e.expandRowKeys&&n.setExpandRowKeysAdapter(e.expandRowKeys)});const v=()=>{r.store.commit("setHoverRow",null),r.hoverState&&(r.hoverState=null)},y=(L,V)=>{const{pixelX:Y,pixelY:$}=V;Math.abs(Y)>=Math.abs($)&&(r.refs.bodyWrapper.scrollLeft+=V.pixelX/5)},_=K(()=>e.height||e.maxHeight||n.states.fixedColumns.value.length>0||n.states.rightFixedColumns.value.length>0),C=K(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),S=()=>{_.value&&t.updateElsHeight(),t.updateColumnsWidth(),!(typeof window>"u")&&requestAnimationFrame(T)};Kt(async()=>{await It(),n.updateColumns(),P(),requestAnimationFrame(S);const L=r.vnode.el,V=r.refs.headerWrapper;e.flexible&&L&&L.parentElement&&(L.parentElement.style.minWidth="0"),l.value={width:d.value=L.offsetWidth,height:L.offsetHeight,headerHeight:e.showHeader&&V?V.offsetHeight:null},n.states.columns.value.forEach(Y=>{Y.filteredValue&&Y.filteredValue.length&&r.store.commit("filterChange",{column:Y,values:Y.filteredValue,silent:!0})}),r.$ready=!0});const E=(L,V)=>{if(!L)return;const Y=Array.from(L.classList).filter($=>!$.startsWith("is-scrolling-"));Y.push(t.scrollX.value?V:"is-scrolling-none"),L.className=Y.join(" ")},k=L=>{const{tableWrapper:V}=r.refs;E(V,L)},O=L=>{const{tableWrapper:V}=r.refs;return!!(V&&V.classList.contains(L))},T=function(){if(!r.refs.scrollBarRef)return;if(!t.scrollX.value){const oe="is-scrolling-none";O(oe)||k(oe);return}const L=r.refs.scrollBarRef.wrapRef;if(!L)return;const{scrollLeft:V,offsetWidth:Y,scrollWidth:$}=L,{headerWrapper:B,footerWrapper:W}=r.refs;B&&(B.scrollLeft=V),W&&(W.scrollLeft=V);const J=$-Y-1;V>=J?k("is-scrolling-right"):k(V===0?"is-scrolling-left":"is-scrolling-middle")},P=()=>{r.refs.scrollBarRef&&(r.refs.scrollBarRef.wrapRef&&xr(r.refs.scrollBarRef.wrapRef,"scroll",T,{passive:!0}),e.fit?co(r.vnode.el,U):xr(window,"resize",U),co(r.refs.bodyWrapper,()=>{var L,V;U(),(V=(L=r.refs)==null?void 0:L.scrollBarRef)==null||V.update()}))},U=()=>{var L,V,Y,$;const B=r.vnode.el;if(!r.$ready||!B)return;let W=!1;const{width:J,height:oe,headerHeight:ie}=l.value,Z=d.value=B.offsetWidth;J!==Z&&(W=!0);const de=B.offsetHeight;(e.height||_.value)&&oe!==de&&(W=!0);const we=e.tableLayout==="fixed"?r.refs.headerWrapper:(L=r.refs.tableHeaderRef)==null?void 0:L.$el;e.showHeader&&(we==null?void 0:we.offsetHeight)!==ie&&(W=!0),f.value=((V=r.refs.tableWrapper)==null?void 0:V.scrollHeight)||0,g.value=(we==null?void 0:we.scrollHeight)||0,p.value=((Y=r.refs.footerWrapper)==null?void 0:Y.offsetHeight)||0,m.value=(($=r.refs.appendWrapper)==null?void 0:$.offsetHeight)||0,h.value=f.value-g.value-p.value-m.value,W&&(l.value={width:Z,height:de,headerHeight:e.showHeader&&(we==null?void 0:we.offsetHeight)||0},S())},F=ma(),H=K(()=>{const{bodyWidth:L,scrollY:V,gutterWidth:Y}=t;return L.value?`${L.value-(V.value?Y:0)}px`:""}),R=K(()=>e.maxHeight?"fixed":e.tableLayout),z=K(()=>{if(e.data&&e.data.length)return null;let L="100%";e.height&&h.value&&(L=`${h.value}px`);const V=d.value;return{width:V?`${V}px`:"",height:L}}),M=K(()=>e.height?{height:"100%"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${g.value+p.value}px)`}:{maxHeight:`${e.maxHeight-g.value-p.value}px`}:{});return{isHidden:o,renderExpanded:a,setDragVisible:s,isGroup:u,handleMouseLeave:v,handleHeaderFooterMousewheel:y,tableSize:F,emptyBlockStyle:z,handleFixedMousewheel:(L,V)=>{const Y=r.refs.bodyWrapper;if(Math.abs(V.spinY)>0){const $=Y.scrollTop;V.pixelY<0&&$!==0&&L.preventDefault(),V.pixelY>0&&Y.scrollHeight-Y.clientHeight>$&&L.preventDefault(),Y.scrollTop+=Math.ceil(V.pixelY/5)}else Y.scrollLeft+=Math.ceil(V.pixelX/5)},resizeProxyVisible:i,bodyWidth:H,resizeState:l,doLayout:S,tableBodyStyles:C,tableLayout:R,scrollbarViewStyle:c,scrollbarStyle:M}}function zbt(e){const t=X(),n=()=>{const o=e.vnode.el.querySelector(".hidden-columns"),a={childList:!0,subtree:!0},i=e.store.states.updateOrderFns;t.value=new MutationObserver(()=>{i.forEach(s=>s())}),t.value.observe(o,a)};Kt(()=>{n()}),gd(()=>{var r;(r=t.value)==null||r.disconnect()})}var jbt={data:{type:Array,default:()=>[]},size:Aa,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children",checkStrictly:!1})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:Boolean,flexible:Boolean,showOverflowTooltip:[Boolean,Object],tooltipFormatter:Function,appendFilterPanelTo:String,scrollbarTabindex:{type:[Number,String],default:void 0},allowDragLastColumn:{type:Boolean,default:!0},preserveExpandedContent:{type:Boolean,default:!1}};function tEe(e){const t=e.tableLayout==="auto";let n=e.columns||[];t&&n.every(({width:o})=>Ln(o))&&(n=[]);const r=o=>{const a={key:`${e.tableLayout}_${o.id}`,style:{},name:void 0};return t?a.style={width:`${o.width}px`}:a.name=o.id,a};return Vt("colgroup",{},n.map(o=>Vt("col",r(o))))}tEe.props=["columns","tableLayout"];const Hbt=()=>{const e=X(),t=(a,i)=>{const s=e.value;s&&s.scrollTo(a,i)},n=(a,i)=>{const s=e.value;s&&Lt(i)&&["Top","Left"].includes(a)&&s[`setScroll${a}`](i)};return{scrollBarRef:e,scrollTo:t,setScrollTop:a=>n("Top",a),setScrollLeft:a=>n("Left",a)}};var ope=!1,n2,sX,lX,YF,XF,nEe,JF,uX,cX,dX,rEe,fX,hX,oEe,aEe;function Ol(){if(!ope){ope=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),n=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(fX=/\b(iPhone|iP[ao]d)/.exec(e),hX=/\b(iP[ao]d)/.exec(e),dX=/Android/i.exec(e),oEe=/FBAN\/\w+;/i.exec(e),aEe=/Mobile/i.exec(e),rEe=!!/Win64/.exec(e),t){n2=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,n2&&document&&document.documentMode&&(n2=document.documentMode);var r=/(?:Trident\/(\d+.\d+))/.exec(e);nEe=r?parseFloat(r[1])+4:n2,sX=t[2]?parseFloat(t[2]):NaN,lX=t[3]?parseFloat(t[3]):NaN,YF=t[4]?parseFloat(t[4]):NaN,YF?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),XF=t&&t[1]?parseFloat(t[1]):NaN):XF=NaN}else n2=sX=lX=XF=YF=NaN;if(n){if(n[1]){var o=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);JF=o?parseFloat(o[1].replace("_",".")):!0}else JF=!1;uX=!!n[2],cX=!!n[3]}else JF=uX=cX=!1}}var pX={ie:function(){return Ol()||n2},ieCompatibilityMode:function(){return Ol()||nEe>n2},ie64:function(){return pX.ie()&&rEe},firefox:function(){return Ol()||sX},opera:function(){return Ol()||lX},webkit:function(){return Ol()||YF},safari:function(){return pX.webkit()},chrome:function(){return Ol()||XF},windows:function(){return Ol()||uX},osx:function(){return Ol()||JF},linux:function(){return Ol()||cX},iphone:function(){return Ol()||fX},mobile:function(){return Ol()||fX||hX||dX||aEe},nativeApp:function(){return Ol()||oEe},android:function(){return Ol()||dX},ipad:function(){return Ol()||hX}},Wbt=pX,oO=!!(typeof window<"u"&&window.document&&window.document.createElement),qbt={canUseDOM:oO,canUseWorkers:typeof Worker<"u",canUseEventListeners:oO&&!!(window.addEventListener||window.attachEvent),canUseViewport:oO&&!!window.screen,isInWorker:!oO},iEe=qbt,sEe;iEe.canUseDOM&&(sEe=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function Kbt(e,t){if(!iEe.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var o=document.createElement("div");o.setAttribute(n,"return;"),r=typeof o[n]=="function"}return!r&&sEe&&e==="wheel"&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var Gbt=Kbt,ape=10,ipe=40,spe=800;function lEe(e){var t=0,n=0,r=0,o=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*ape,o=n*ape,"deltaY"in e&&(o=e.deltaY),"deltaX"in e&&(r=e.deltaX),(r||o)&&e.deltaMode&&(e.deltaMode==1?(r*=ipe,o*=ipe):(r*=spe,o*=spe)),r&&!t&&(t=r<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:o}}lEe.getEventType=function(){return Wbt.firefox()?"DOMMouseScroll":Gbt("wheel")?"wheel":"mousewheel"};var Ybt=lEe;/** +* Checks if an event is supported in the current execution environment. +* +* NOTE: This will not work correctly for non-generic events such as `change`, +* `reset`, `load`, `error`, and `select`. +* +* Borrows from Modernizr. +* +* @param {string} eventNameSuffix Event name, e.g. "click". +* @param {?boolean} capture Check if the capture phase is supported. +* @return {boolean} True if the event is supported. +* @internal +* @license Modernizr 3.0.0pre (Custom Build) | MIT +*/const Xbt=function(e,t){if(e&&e.addEventListener){const n=function(r){const o=Ybt(r);t&&Reflect.apply(t,this,[r,o])};e.addEventListener("wheel",n,{passive:!0})}},Jbt={beforeMount(e,t){Xbt(e,t.value)}};let Zbt=1;const Qbt=ne({name:"ElTable",directives:{Mousewheel:Jbt},components:{TableHeader:Abt,TableBody:Bbt,TableFooter:Lbt,ElScrollbar:id,hColgroup:tEe},props:jbt,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change","scroll"],setup(e){const{t}=Un(),n=nt("table"),r=bn();Fn(wf,r);const o=ybt(r,e);r.store=o;const a=new _bt({store:r.store,table:r,fit:e.fit,showHeader:e.showHeader});r.layout=a;const i=K(()=>(o.states.data.value||[]).length===0),{setCurrentRow:s,getSelectionRows:l,toggleRowSelection:u,clearSelection:c,clearFilter:d,toggleAllSelection:f,toggleRowExpansion:h,clearSort:g,sort:p,updateKeyChildren:m}=Ubt(o),{isHidden:v,renderExpanded:y,setDragVisible:_,isGroup:C,handleMouseLeave:S,handleHeaderFooterMousewheel:E,tableSize:k,emptyBlockStyle:O,handleFixedMousewheel:T,resizeProxyVisible:P,bodyWidth:U,resizeState:F,doLayout:H,tableBodyStyles:R,tableLayout:z,scrollbarViewStyle:M,scrollbarStyle:N}=Vbt(e,a,o,r),{scrollBarRef:L,scrollTo:V,setScrollLeft:Y,setScrollTop:$}=Hbt(),B=tu(H,50),W=`${n.namespace.value}-table_${Zbt++}`;r.tableId=W,r.state={isGroup:C,resizeState:F,doLayout:H,debouncedUpdateLayout:B};const J=K(()=>{var Z;return(Z=e.sumText)!=null?Z:t("el.table.sumText")}),oe=K(()=>{var Z;return(Z=e.emptyText)!=null?Z:t("el.table.emptyText")}),ie=K(()=>eEe(o.states.originColumns.value)[0]);return zbt(r),Ar(()=>{B.cancel()}),{ns:n,layout:a,store:o,columns:ie,handleHeaderFooterMousewheel:E,handleMouseLeave:S,tableId:W,tableSize:k,isHidden:v,isEmpty:i,renderExpanded:y,resizeProxyVisible:P,resizeState:F,isGroup:C,bodyWidth:U,tableBodyStyles:R,emptyBlockStyle:O,debouncedUpdateLayout:B,handleFixedMousewheel:T,setCurrentRow:s,getSelectionRows:l,toggleRowSelection:u,clearSelection:c,clearFilter:d,toggleAllSelection:f,toggleRowExpansion:h,clearSort:g,doLayout:H,sort:p,updateKeyChildren:m,t,setDragVisible:_,context:r,computedSumText:J,computedEmptyText:oe,tableLayout:z,scrollbarViewStyle:M,scrollbarStyle:N,scrollBarRef:L,scrollTo:V,setScrollLeft:Y,setScrollTop:$,allowDragLastColumn:e.allowDragLastColumn}}});function e_t(e,t,n,r,o,a){const i=yn("hColgroup"),s=yn("table-header"),l=yn("table-body"),u=yn("table-footer"),c=yn("el-scrollbar"),d=pL("mousewheel");return I(),j("div",{ref:"tableWrapper",class:ee([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:Nt(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:e.handleMouseLeave},[w("div",{class:ee(e.ns.e("inner-wrapper"))},[w("div",{ref:"hiddenColumns",class:"hidden-columns"},[Ne(e.$slots,"default")],512),e.showHeader&&e.tableLayout==="fixed"?rn((I(),j("div",{key:0,ref:"headerWrapper",class:ee(e.ns.e("header-wrapper"))},[w("table",{ref:"tableHeader",class:ee(e.ns.e("header")),style:Nt(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[D(i,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),D(s,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,"allow-drag-last-column":e.allowDragLastColumn,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","append-filter-panel-to","allow-drag-last-column","onSetDragVisible"])],6)],2)),[[d,e.handleHeaderFooterMousewheel]]):be("v-if",!0),w("div",{ref:"bodyWrapper",class:ee(e.ns.e("body-wrapper"))},[D(c,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn,tabindex:e.scrollbarTabindex,onScroll:f=>e.$emit("scroll",f)},{default:A(()=>[w("table",{ref:"tableBody",class:ee(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:Nt({width:e.bodyWidth,tableLayout:e.tableLayout})},[D(i,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&e.tableLayout==="auto"?(I(),Oe(s,{key:0,ref:"tableHeaderRef",class:ee(e.ns.e("body-header")),border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,onSetDragVisible:e.setDragVisible},null,8,["class","border","default-sort","store","append-filter-panel-to","onSetDragVisible"])):be("v-if",!0),D(l,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"tooltip-options":e.tooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&e.tableLayout==="auto"?(I(),Oe(u,{key:1,class:ee(e.ns.e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):be("v-if",!0)],6),e.isEmpty?(I(),j("div",{key:0,ref:"emptyBlock",style:Nt(e.emptyBlockStyle),class:ee(e.ns.e("empty-block"))},[w("span",{class:ee(e.ns.e("empty-text"))},[Ne(e.$slots,"empty",{},()=>[ce(se(e.computedEmptyText),1)])],2)],6)):be("v-if",!0),e.$slots.append?(I(),j("div",{key:1,ref:"appendWrapper",class:ee(e.ns.e("append-wrapper"))},[Ne(e.$slots,"append")],2)):be("v-if",!0)]),_:3},8,["view-style","wrap-style","always","tabindex","onScroll"])],2),e.showSummary&&e.tableLayout==="fixed"?rn((I(),j("div",{key:1,ref:"footerWrapper",class:ee(e.ns.e("footer-wrapper"))},[w("table",{class:ee(e.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:Nt(e.tableBodyStyles)},[D(i,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),D(u,{border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[Pn,!e.isEmpty],[d,e.handleHeaderFooterMousewheel]]):be("v-if",!0),e.border||e.isGroup?(I(),j("div",{key:2,class:ee(e.ns.e("border-left-patch"))},null,2)):be("v-if",!0)],2),rn(w("div",{ref:"resizeProxy",class:ee(e.ns.e("column-resize-proxy"))},null,2),[[Pn,e.resizeProxyVisible]])],46,["data-prefix","onMouseleave"])}var t_t=vt(Qbt,[["render",e_t],["__file","table.vue"]]);const n_t={selection:"table-column--selection",expand:"table__expand-column"},r_t={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},o_t=e=>n_t[e]||"",a_t={selection:{renderHeader({store:e,column:t}){function n(){return e.states.data.value&&e.states.data.value.length===0}return Vt(Xi,{disabled:n(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":e.toggleAllSelection,modelValue:e.states.isAllSelected.value,ariaLabel:t.label})},renderCell({row:e,column:t,store:n,$index:r}){return Vt(Xi,{disabled:t.selectable?!t.selectable.call(null,e,r):!1,size:n.states.tableSize.value,onChange:()=>{n.commit("rowSelectedChanged",e)},onClick:o=>o.stopPropagation(),modelValue:n.isSelected(e),ariaLabel:t.label})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let n=t+1;const r=e.index;return Lt(r)?n=t+r:Rt(r)&&(n=r(t)),Vt("div",{},[n])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({column:e,row:t,store:n,expanded:r}){const{ns:o}=n,a=[o.e("expand-icon")];return!e.renderExpand&&r&&a.push(o.em("expand-icon","expanded")),Vt("div",{class:a,onClick:function(s){s.stopPropagation(),n.toggleRowExpansion(t)}},{default:()=>e.renderExpand?[e.renderExpand({expanded:r})]:[Vt(Tt,null,{default:()=>[Vt(_i)]})]})},sortable:!1,resizable:!1}};function i_t({row:e,column:t,$index:n}){var r;const o=t.property,a=o&&$S(e,o).value;return t&&t.formatter?t.formatter(e,t,a,n):((r=a==null?void 0:a.toString)==null?void 0:r.call(a))||""}function s_t({row:e,treeNode:t,store:n},r=!1){const{ns:o}=n;if(!t)return r?[Vt("span",{class:o.e("placeholder")})]:null;const a=[],i=function(s){s.stopPropagation(),!t.loading&&n.loadOrToggle(e)};if(t.indent&&a.push(Vt("span",{class:o.e("indent"),style:{"padding-left":`${t.indent}px`}})),hr(t.expanded)&&!t.noLazyChildren){const s=[o.e("expand-icon"),t.expanded?o.em("expand-icon","expanded"):""];let l=_i;t.loading&&(l=Kl),a.push(Vt("div",{class:s,onClick:i},{default:()=>[Vt(Tt,{class:{[o.is("loading")]:t.loading}},{default:()=>[Vt(l)]})]}))}else a.push(Vt("span",{class:o.e("placeholder")}));return a}function lpe(e,t){return e.reduce((n,r)=>(n[r]=r,n),t)}function l_t(e,t){const n=bn();return{registerComplexWatchers:()=>{const a=["fixed"],i={realWidth:"width",realMinWidth:"minWidth"},s=lpe(a,i);Object.keys(s).forEach(l=>{const u=i[l];Gn(t,u)&&Ze(()=>t[u],c=>{let d=c;u==="width"&&l==="realWidth"&&(d=Gre(c)),u==="minWidth"&&l==="realMinWidth"&&(d=GDe(c)),n.columnConfig.value[u]=d,n.columnConfig.value[l]=d;const f=u==="fixed";e.value.store.scheduleLayout(f)})})},registerNormalWatchers:()=>{const a=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip","tooltipFormatter"],i={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},s=lpe(a,i);Object.keys(s).forEach(l=>{const u=i[l];Gn(t,u)&&Ze(()=>t[u],c=>{n.columnConfig.value[l]=c})})}}}function u_t(e,t,n){const r=bn(),o=X(""),a=X(!1),i=X(),s=X(),l=nt("table");Wi(()=>{i.value=e.align?`is-${e.align}`:null,i.value}),Wi(()=>{s.value=e.headerAlign?`is-${e.headerAlign}`:i.value,s.value});const u=K(()=>{let C=r.vnode.vParent||r.parent;for(;C&&!C.tableId&&!C.columnId;)C=C.vnode.vParent||C.parent;return C}),c=K(()=>{const{store:C}=r.parent;if(!C)return!1;const{treeData:S}=C.states,E=S.value;return E&&Object.keys(E).length>0}),d=X(Gre(e.width)),f=X(GDe(e.minWidth)),h=C=>(d.value&&(C.width=d.value),f.value&&(C.minWidth=f.value),!d.value&&f.value&&(C.width=void 0),C.minWidth||(C.minWidth=80),C.realWidth=Number(Ln(C.width)?C.minWidth:C.width),C),g=C=>{const S=C.type,E=a_t[S]||{};Object.keys(E).forEach(O=>{const T=E[O];O!=="className"&&!Ln(T)&&(C[O]=T)});const k=o_t(S);if(k){const O=`${b(l.namespace)}-${k}`;C.className=C.className?`${C.className} ${O}`:O}return C},p=C=>{ct(C)?C.forEach(E=>S(E)):S(C);function S(E){var k;((k=E==null?void 0:E.type)==null?void 0:k.name)==="ElTableColumn"&&(E.vParent=r)}};return{columnId:o,realAlign:i,isSubColumn:a,realHeaderAlign:s,columnOrTableParent:u,setColumnWidth:h,setColumnForcedProps:g,setColumnRenders:C=>{e.renderHeader||C.type!=="selection"&&(C.renderHeader=E=>(r.columnConfig.value.label,Ne(t,"header",E,()=>[C.label]))),t["filter-icon"]&&(C.renderFilterIcon=E=>Ne(t,"filter-icon",E)),t.expand&&(C.renderExpand=E=>Ne(t,"expand",E));let S=C.renderCell;return C.type==="expand"?(C.renderCell=E=>Vt("div",{class:"cell"},[S(E)]),n.value.renderExpanded=E=>t.default?t.default(E):t.default):(S=S||i_t,C.renderCell=E=>{let k=null;if(t.default){const H=t.default(E);k=H.some(R=>R.type!==da)?H:S(E)}else k=S(E);const{columns:O}=n.value.store.states,T=O.value.findIndex(H=>H.type==="default"),P=c.value&&E.cellIndex===T,U=s_t(E,P),F={class:"cell",style:{}};return C.showOverflowTooltip&&(F.class=`${F.class} ${b(l.namespace)}-tooltip`,F.style={width:`${(E.column.realWidth||Number(E.column.width))-1}px`}),p(k),Vt("div",F,[U,k])}),C},getPropsData:(...C)=>C.reduce((S,E)=>(ct(E)&&E.forEach(k=>{S[k]=e[k]}),S),{}),getColumnElIndex:(C,S)=>Array.prototype.indexOf.call(C,S),updateColumnOrder:()=>{n.value.store.commit("updateColumnOrder",r.columnConfig.value)}}}var c_t={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},tooltipFormatter:Function,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}};let d_t=1;var uEe=ne({name:"ElTableColumn",components:{ElCheckbox:Xi},props:c_t,setup(e,{slots:t}){const n=bn(),r=X({}),o=K(()=>{let _=n.parent;for(;_&&!_.tableId;)_=_.parent;return _}),{registerNormalWatchers:a,registerComplexWatchers:i}=l_t(o,e),{columnId:s,isSubColumn:l,realHeaderAlign:u,columnOrTableParent:c,setColumnWidth:d,setColumnForcedProps:f,setColumnRenders:h,getPropsData:g,getColumnElIndex:p,realAlign:m,updateColumnOrder:v}=u_t(e,t,o),y=c.value;s.value=`${y.tableId||y.columnId}_column_${d_t++}`,hL(()=>{l.value=o.value!==y;const _=e.type||"default",C=e.sortable===""?!0:e.sortable,S=_==="selection"?!1:Ln(e.showOverflowTooltip)?y.props.showOverflowTooltip:e.showOverflowTooltip,E=Ln(e.tooltipFormatter)?y.props.tooltipFormatter:e.tooltipFormatter,k={...r_t[_],id:s.value,type:_,property:e.prop||e.property,align:m,headerAlign:u,showOverflowTooltip:S,tooltipFormatter:E,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:C,index:e.index,rawColumnKey:n.vnode.key};let F=g(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"]);F=ibt(k,F),F=lbt(h,d,f)(F),r.value=F,a(),i()}),Kt(()=>{var _;const C=c.value,S=l.value?C.vnode.el.children:(_=C.refs.hiddenColumns)==null?void 0:_.children,E=()=>p(S||[],n.vnode.el);r.value.getColumnIndex=E,E()>-1&&o.value.store.commit("insertColumn",r.value,l.value?C.columnConfig.value:null,v)}),Ar(()=>{const _=r.value.getColumnIndex;(_?_():-1)>-1&&o.value.store.commit("removeColumn",r.value,l.value?y.columnConfig.value:null,v)}),n.columnId=s.value,n.columnConfig=r},render(){var e,t,n;try{const r=(t=(e=this.$slots).default)==null?void 0:t.call(e,{row:{},column:{},$index:-1}),o=[];if(ct(r))for(const i of r)((n=i.type)==null?void 0:n.name)==="ElTableColumn"||i.shapeFlag&2?o.push(i):i.type===tt&&ct(i.children)&&i.children.forEach(s=>{(s==null?void 0:s.patchFlag)!==1024&&!$t(s==null?void 0:s.children)&&o.push(s)});return Vt("div",o)}catch{return Vt("div",[])}}});const cEe=dn(t_t,{TableColumn:uEe}),dEe=vo(uEe);var GD=(e=>(e.ASC="asc",e.DESC="desc",e))(GD||{}),YD=(e=>(e.CENTER="center",e.RIGHT="right",e))(YD||{}),fEe=(e=>(e.LEFT="left",e.RIGHT="right",e))(fEe||{});const gX={asc:"desc",desc:"asc"},XD=Symbol("placeholder"),f_t=(e,t,n)=>{var r;const o={flexGrow:0,flexShrink:0,...n?{}:{flexGrow:e.flexGrow||0,flexShrink:e.flexShrink||1}};n||(o.flexShrink=1);const a={...(r=e.style)!=null?r:{},...o,flexBasis:"auto",width:e.width};return t||(e.maxWidth&&(a.maxWidth=e.maxWidth),e.minWidth&&(a.minWidth=e.minWidth)),a};function h_t(e,t,n){const r=K(()=>b(t).map((m,v)=>{var y,_;return{...m,key:(_=(y=m.key)!=null?y:m.dataKey)!=null?_:v}})),o=K(()=>b(r).filter(m=>!m.hidden)),a=K(()=>b(o).filter(m=>m.fixed==="left"||m.fixed===!0)),i=K(()=>b(o).filter(m=>m.fixed==="right")),s=K(()=>b(o).filter(m=>!m.fixed)),l=K(()=>{const m=[];return b(a).forEach(v=>{m.push({...v,placeholderSign:XD})}),b(s).forEach(v=>{m.push(v)}),b(i).forEach(v=>{m.push({...v,placeholderSign:XD})}),m}),u=K(()=>b(a).length||b(i).length),c=K(()=>b(r).reduce((m,v)=>(m[v.key]=f_t(v,b(n),e.fixed),m),{})),d=K(()=>b(o).reduce((m,v)=>m+v.width,0)),f=m=>b(r).find(v=>v.key===m),h=m=>b(c)[m],g=(m,v)=>{m.width=v};function p(m){var v;const{key:y}=m.currentTarget.dataset;if(!y)return;const{sortState:_,sortBy:C}=e;let S=GD.ASC;vn(_)?S=gX[_[y]]:S=gX[C.order],(v=e.onColumnSort)==null||v.call(e,{column:f(y),key:y,order:S})}return{columns:r,columnsStyles:c,columnsTotalWidth:d,fixedColumnsOnLeft:a,fixedColumnsOnRight:i,hasFixedColumns:u,mainColumns:l,normalColumns:s,visibleColumns:o,getColumn:f,getColumnStyle:h,updateColumnWidth:g,onColumnSorted:p}}const p_t=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,onMaybeEndReached:o})=>{const a=X({scrollLeft:0,scrollTop:0});function i(h){var g,p,m;const{scrollTop:v}=h;(g=t.value)==null||g.scrollTo(h),(p=n.value)==null||p.scrollToTop(v),(m=r.value)==null||m.scrollToTop(v)}function s(h){a.value=h,i(h)}function l(h){a.value.scrollTop=h,i(b(a))}function u(h){var g,p;a.value.scrollLeft=h,(p=(g=t.value)==null?void 0:g.scrollTo)==null||p.call(g,b(a))}function c(h){var g;s(h),(g=e.onScroll)==null||g.call(e,h)}function d({scrollTop:h}){const{scrollTop:g}=b(a);h!==g&&l(h)}function f(h,g="auto"){var p;(p=t.value)==null||p.scrollToRow(h,g)}return Ze(()=>b(a).scrollTop,(h,g)=>{h>g&&o()}),{scrollPos:a,scrollTo:s,scrollToLeft:u,scrollToTop:l,scrollToRow:f,onScroll:c,onVerticalScroll:d}},g_t=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,tableInstance:o,ns:a,isScrolling:i})=>{const s=bn(),{emit:l}=s,u=Tr(!1),c=X(e.defaultExpandedRowKeys||[]),d=X(-1),f=Tr(null),h=X({}),g=X({}),p=Tr({}),m=Tr({}),v=Tr({}),y=K(()=>Lt(e.estimatedRowHeight));function _(P){var U;(U=e.onRowsRendered)==null||U.call(e,P),P.rowCacheEnd>b(d)&&(d.value=P.rowCacheEnd)}function C({hovered:P,rowKey:U}){if(i.value)return;o.vnode.el.querySelectorAll(`[rowkey="${String(U)}"]`).forEach(R=>{P?R.classList.add(a.is("hovered")):R.classList.remove(a.is("hovered"))})}function S({expanded:P,rowData:U,rowIndex:F,rowKey:H}){var R,z;const M=[...b(c)],N=M.indexOf(H);P?N===-1&&M.push(H):N>-1&&M.splice(N,1),c.value=M,l("update:expandedRowKeys",M),(R=e.onRowExpand)==null||R.call(e,{expanded:P,rowData:U,rowIndex:F,rowKey:H}),(z=e.onExpandedRowsChange)==null||z.call(e,M)}const E=tu(()=>{var P,U,F,H;u.value=!0,h.value={...b(h),...b(g)},k(b(f),!1),g.value={},f.value=null,(P=t.value)==null||P.forceUpdate(),(U=n.value)==null||U.forceUpdate(),(F=r.value)==null||F.forceUpdate(),(H=s.proxy)==null||H.$forceUpdate(),u.value=!1},0);function k(P,U=!1){b(y)&&[t,n,r].forEach(F=>{const H=b(F);H&&H.resetAfterRowIndex(P,U)})}function O(P,U,F){const H=b(f);(H===null||H>F)&&(f.value=F),g.value[P]=U}function T({rowKey:P,height:U,rowIndex:F},H){H?H===fEe.RIGHT?v.value[P]=U:p.value[P]=U:m.value[P]=U;const R=Math.max(...[p,v,m].map(z=>z.value[P]||0));b(h)[P]!==R&&(O(P,R,F),E())}return{expandedRowKeys:c,lastRenderedRowIndex:d,isDynamic:y,isResetting:u,rowHeights:h,resetAfterIndex:k,onRowExpanded:S,onRowHovered:C,onRowsRendered:_,onRowHeightChange:T}},v_t=(e,{expandedRowKeys:t,lastRenderedRowIndex:n,resetAfterIndex:r})=>{const o=X({}),a=K(()=>{const s={},{data:l,rowKey:u}=e,c=b(t);if(!c||!c.length)return l;const d=[],f=new Set;c.forEach(g=>f.add(g));let h=l.slice();for(h.forEach(g=>s[g[u]]=0);h.length>0;){const g=h.shift();d.push(g),f.has(g[u])&&ct(g.children)&&g.children.length>0&&(h=[...g.children,...h],g.children.forEach(p=>s[p[u]]=s[g[u]]+1))}return o.value=s,d}),i=K(()=>{const{data:s,expandColumnKey:l}=e;return l?b(a):s});return Ze(i,(s,l)=>{s!==l&&(n.value=-1,r(0,!0))}),{data:i,depthMap:o}},m_t=(e,t)=>e+t,ZF=e=>ct(e)?e.reduce(m_t,0):e,Wb=(e,t,n={})=>Rt(e)?e(t):e??n,Xv=e=>(["width","maxWidth","minWidth","height"].forEach(t=>{e[t]=Io(e[t])}),e),hEe=e=>jr(e)?t=>Vt(e,t):e,y_t=(e,{columnsTotalWidth:t,rowsHeight:n,fixedColumnsOnLeft:r,fixedColumnsOnRight:o})=>{const a=K(()=>{const{fixed:v,width:y,vScrollbarSize:_}=e,C=y-_;return v?Math.max(Math.round(b(t)),C):C}),i=K(()=>{const{height:v=0,maxHeight:y=0,footerHeight:_,hScrollbarSize:C}=e;if(y>0){const S=b(f),E=b(n),O=b(d)+S+E+C;return Math.min(O,y-_)}return v-_}),s=K(()=>{const{maxHeight:v}=e,y=b(i);if(Lt(v)&&v>0)return y;const _=b(n)+b(d)+b(f);return Math.min(y,_)}),l=v=>v.width,u=K(()=>ZF(b(r).map(l))),c=K(()=>ZF(b(o).map(l))),d=K(()=>ZF(e.headerHeight)),f=K(()=>{var v;return(((v=e.fixedData)==null?void 0:v.length)||0)*e.rowHeight}),h=K(()=>b(i)-b(d)-b(f)),g=K(()=>{const{style:v={},height:y,width:_}=e;return Xv({...v,height:y,width:_})}),p=K(()=>Xv({height:e.footerHeight})),m=K(()=>({top:Io(b(d)),bottom:Io(e.footerHeight),width:Io(e.width)}));return{bodyWidth:a,fixedTableHeight:s,mainTableHeight:i,leftTableWidth:u,rightTableWidth:c,windowHeight:h,footerHeight:p,emptyStyle:m,rootStyle:g,headerHeight:d}};function b_t(e){const t=X(),n=X(),r=X(),{columns:o,columnsStyles:a,columnsTotalWidth:i,fixedColumnsOnLeft:s,fixedColumnsOnRight:l,hasFixedColumns:u,mainColumns:c,onColumnSorted:d}=h_t(e,tr(e,"columns"),tr(e,"fixed")),{scrollTo:f,scrollToLeft:h,scrollToTop:g,scrollToRow:p,onScroll:m,onVerticalScroll:v,scrollPos:y}=p_t(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,onMaybeEndReached:le}),_=nt("table-v2"),C=bn(),S=Tr(!1),{expandedRowKeys:E,lastRenderedRowIndex:k,isDynamic:O,isResetting:T,rowHeights:P,resetAfterIndex:U,onRowExpanded:F,onRowHeightChange:H,onRowHovered:R,onRowsRendered:z}=g_t(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,tableInstance:C,ns:_,isScrolling:S}),{data:M,depthMap:N}=v_t(e,{expandedRowKeys:E,lastRenderedRowIndex:k,resetAfterIndex:U}),L=K(()=>{const{estimatedRowHeight:q,rowHeight:pe}=e,he=b(M);return Lt(q)?Object.values(b(P)).reduce((re,ue)=>re+ue,0):he.length*pe}),{bodyWidth:V,fixedTableHeight:Y,mainTableHeight:$,leftTableWidth:B,rightTableWidth:W,windowHeight:J,footerHeight:oe,emptyStyle:ie,rootStyle:Z,headerHeight:de}=y_t(e,{columnsTotalWidth:i,fixedColumnsOnLeft:s,fixedColumnsOnRight:l,rowsHeight:L}),we=X(),Be=K(()=>{const q=b(M).length===0;return ct(e.fixedData)?e.fixedData.length===0&&q:q});function ke(q){const{estimatedRowHeight:pe,rowHeight:he,rowKey:re}=e;return pe?b(P)[b(M)[q][re]]||pe:he}const ae=X(!1);function le(){const{onEndReached:q}=e;if(!q)return;const{scrollTop:pe}=b(y),he=b(L),re=b(J),ue=he-(pe+re)+e.hScrollbarSize;!ae.value&&b(k)>=0&&he<=pe+b($)-b(de)?(ae.value=!0,q(ue)):ae.value=!1}return Ze(()=>b(L),()=>ae.value=!1),Ze(()=>e.expandedRowKeys,q=>E.value=q,{deep:!0}),{columns:o,containerRef:we,mainTableRef:t,leftTableRef:n,rightTableRef:r,isDynamic:O,isResetting:T,isScrolling:S,hasFixedColumns:u,columnsStyles:a,columnsTotalWidth:i,data:M,expandedRowKeys:E,depthMap:N,fixedColumnsOnLeft:s,fixedColumnsOnRight:l,mainColumns:c,bodyWidth:V,emptyStyle:ie,rootStyle:Z,footerHeight:oe,mainTableHeight:$,fixedTableHeight:Y,leftTableWidth:B,rightTableWidth:W,showEmpty:Be,getRowHeight:ke,onColumnSorted:d,onRowHovered:R,onRowExpanded:F,onRowsRendered:z,onRowHeightChange:H,scrollTo:f,scrollToLeft:h,scrollToTop:g,scrollToRow:p,onScroll:m,onVerticalScroll:v}}const Zre=Symbol("tableV2"),pEe="tableV2GridScrollLeft",gEe=String,xT={type:$e(Array),required:!0},Qre={type:$e(Array)},vEe={...Qre,required:!0},__t=String,upe={type:$e(Array),default:()=>Eo([])},r2={type:Number,required:!0},mEe={type:$e([String,Number,Symbol]),default:"id"},cpe={type:$e(Object)},g2=ht({class:String,columns:xT,columnsStyles:{type:$e(Object),required:!0},depth:Number,expandColumnKey:__t,estimatedRowHeight:{...hb.estimatedRowHeight,default:void 0},isScrolling:Boolean,onRowExpand:{type:$e(Function)},onRowHover:{type:$e(Function)},onRowHeightChange:{type:$e(Function)},rowData:{type:$e(Object),required:!0},rowEventHandlers:{type:$e(Object)},rowIndex:{type:Number,required:!0},rowKey:mEe,style:{type:$e(Object)}}),lj={type:Number,required:!0},eoe=ht({class:String,columns:xT,fixedHeaderData:{type:$e(Array)},headerData:{type:$e(Array),required:!0},headerHeight:{type:$e([Number,Array]),default:50},rowWidth:lj,rowHeight:{type:Number,default:50},height:lj,width:lj}),QF=ht({columns:xT,data:vEe,fixedData:Qre,estimatedRowHeight:g2.estimatedRowHeight,width:r2,height:r2,headerWidth:r2,headerHeight:eoe.headerHeight,bodyWidth:r2,rowHeight:r2,cache:PDe.cache,useIsScrolling:Boolean,scrollbarAlwaysOn:hb.scrollbarAlwaysOn,scrollbarStartGap:hb.scrollbarStartGap,scrollbarEndGap:hb.scrollbarEndGap,class:gEe,style:cpe,containerStyle:cpe,getRowHeight:{type:$e(Function),required:!0},rowKey:g2.rowKey,onRowsRendered:{type:$e(Function)},onScroll:{type:$e(Function)}}),w_t=ht({cache:QF.cache,estimatedRowHeight:g2.estimatedRowHeight,rowKey:mEe,headerClass:{type:$e([String,Function])},headerProps:{type:$e([Object,Function])},headerCellProps:{type:$e([Object,Function])},headerHeight:eoe.headerHeight,footerHeight:{type:Number,default:0},rowClass:{type:$e([String,Function])},rowProps:{type:$e([Object,Function])},rowHeight:{type:Number,default:50},cellProps:{type:$e([Object,Function])},columns:xT,data:vEe,dataGetter:{type:$e(Function)},fixedData:Qre,expandColumnKey:g2.expandColumnKey,expandedRowKeys:upe,defaultExpandedRowKeys:upe,class:gEe,fixed:Boolean,style:{type:$e(Object)},width:r2,height:r2,maxHeight:Number,useIsScrolling:Boolean,indentSize:{type:Number,default:12},iconSize:{type:Number,default:12},hScrollbarSize:hb.hScrollbarSize,vScrollbarSize:hb.vScrollbarSize,scrollbarAlwaysOn:RDe.alwaysOn,sortBy:{type:$e(Object),default:()=>({})},sortState:{type:$e(Object),default:void 0},onColumnSort:{type:$e(Function)},onExpandedRowsChange:{type:$e(Function)},onEndReached:{type:$e(Function)},onRowExpand:g2.onRowExpand,onScroll:QF.onScroll,onRowsRendered:QF.onRowsRendered,rowEventHandlers:g2.rowEventHandlers}),C_t="ElTableV2Header",x_t=ne({name:C_t,props:eoe,setup(e,{slots:t,expose:n}){const r=nt("table-v2"),o=kt(pEe),a=X(),i=K(()=>Xv({width:e.width,height:e.height})),s=K(()=>Xv({width:e.rowWidth,height:e.height})),l=K(()=>Vs(b(e.headerHeight))),u=f=>{const h=b(a);It(()=>{h!=null&&h.scroll&&h.scroll({left:f})})},c=()=>{const f=r.e("fixed-header-row"),{columns:h,fixedHeaderData:g,rowHeight:p}=e;return g==null?void 0:g.map((m,v)=>{var y;const _=Xv({height:p,width:"100%"});return(y=t.fixed)==null?void 0:y.call(t,{class:f,columns:h,rowData:m,rowIndex:-(v+1),style:_})})},d=()=>{const f=r.e("dynamic-header-row"),{columns:h}=e;return b(l).map((g,p)=>{var m;const v=Xv({width:"100%",height:g});return(m=t.dynamic)==null?void 0:m.call(t,{class:f,columns:h,headerIndex:p,style:v})})};return gf(()=>{o!=null&&o.value&&u(o.value)}),n({scrollToLeft:u}),()=>{if(!(e.height<=0))return D("div",{ref:a,class:e.class,style:b(i),role:"rowgroup"},[D("div",{style:b(s),class:r.e("header")},[d(),c()])])}}});var S_t=x_t;const D_t=({atXEndEdge:e,atXStartEdge:t,atYEndEdge:n,atYStartEdge:r},o)=>{let a=null,i=0,s=0;const l=(c,d)=>{const f=c<=0&&t.value||c>=0&&e.value,h=d<=0&&r.value||d>=0&&n.value;return f&&h};return{hasReachedEdge:l,onWheel:c=>{Hb(a);let d=c.deltaX,f=c.deltaY;Math.abs(d)>Math.abs(f)?f=0:d=0,c.shiftKey&&f!==0&&(d=f,f=0),!(l(i,s)&&l(i+d,s+f))&&(i+=d,s+=f,c.preventDefault(),a=$m(()=>{o(i,s),i=0,s=0}))}}},yEe=({name:e,clearCache:t,getColumnPosition:n,getColumnStartIndexForOffset:r,getColumnStopIndexForStartIndex:o,getEstimatedTotalHeight:a,getEstimatedTotalWidth:i,getColumnOffset:s,getRowOffset:l,getRowPosition:u,getRowStartIndexForOffset:c,getRowStopIndexForStartIndex:d,initCache:f,injectToInstance:h,validateProps:g})=>ne({name:e??"ElVirtualList",props:hb,emits:[JM,ZM],setup(p,{emit:m,expose:v,slots:y}){const _=nt("vl");g(p);const C=bn(),S=X(f(p,C));h==null||h(C,S);const E=X(),k=X(),O=X(),T=X(null),P=X({isScrolling:!1,scrollLeft:Lt(p.initScrollLeft)?p.initScrollLeft:0,scrollTop:Lt(p.initScrollTop)?p.initScrollTop:0,updateRequested:!1,xAxisScrollDir:c3,yAxisScrollDir:c3}),U=FDe(),F=K(()=>Number.parseInt(`${p.height}`,10)),H=K(()=>Number.parseInt(`${p.width}`,10)),R=K(()=>{const{totalColumn:re,totalRow:ue,columnCache:_e}=p,{isScrolling:Pe,xAxisScrollDir:Ae,scrollLeft:Ee}=b(P);if(re===0||ue===0)return[0,0,0,0];const ye=r(p,Ee,b(S)),ve=o(p,ye,Ee,b(S)),Ce=!Pe||Ae===QM?Math.max(1,_e):1,ze=!Pe||Ae===c3?Math.max(1,_e):1;return[Math.max(0,ye-Ce),Math.max(0,Math.min(re-1,ve+ze)),ye,ve]}),z=K(()=>{const{totalColumn:re,totalRow:ue,rowCache:_e}=p,{isScrolling:Pe,yAxisScrollDir:Ae,scrollTop:Ee}=b(P);if(re===0||ue===0)return[0,0,0,0];const ye=c(p,Ee,b(S)),ve=d(p,ye,Ee,b(S)),Ce=!Pe||Ae===QM?Math.max(1,_e):1,ze=!Pe||Ae===c3?Math.max(1,_e):1;return[Math.max(0,ye-Ce),Math.max(0,Math.min(ue-1,ve+ze)),ye,ve]}),M=K(()=>a(p,b(S))),N=K(()=>i(p,b(S))),L=K(()=>{var re;return[{position:"relative",overflow:"hidden",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:p.direction,height:Lt(p.height)?`${p.height}px`:p.height,width:Lt(p.width)?`${p.width}px`:p.width},(re=p.style)!=null?re:{}]}),V=K(()=>{const re=`${b(N)}px`;return{height:`${b(M)}px`,pointerEvents:b(P).isScrolling?"none":void 0,width:re}}),Y=()=>{const{totalColumn:re,totalRow:ue}=p;if(re>0&&ue>0){const[ve,Ce,ze,at]=b(R),[bt,Ft,Dt,He]=b(z);m(JM,{columnCacheStart:ve,columnCacheEnd:Ce,rowCacheStart:bt,rowCacheEnd:Ft,columnVisibleStart:ze,columnVisibleEnd:at,rowVisibleStart:Dt,rowVisibleEnd:He})}const{scrollLeft:_e,scrollTop:Pe,updateRequested:Ae,xAxisScrollDir:Ee,yAxisScrollDir:ye}=b(P);m(ZM,{xAxisScrollDir:Ee,scrollLeft:_e,yAxisScrollDir:ye,scrollTop:Pe,updateRequested:Ae})},$=re=>{const{clientHeight:ue,clientWidth:_e,scrollHeight:Pe,scrollLeft:Ae,scrollTop:Ee,scrollWidth:ye}=re.currentTarget,ve=b(P);if(ve.scrollTop===Ee&&ve.scrollLeft===Ae)return;let Ce=Ae;if(Ghe(p.direction))switch(tP()){case qD:Ce=-Ae;break;case Kre:Ce=ye-_e-Ae;break}P.value={...ve,isScrolling:!0,scrollLeft:Ce,scrollTop:Math.max(0,Math.min(Ee,Pe-ue)),updateRequested:!0,xAxisScrollDir:p2(ve.scrollLeft,Ce),yAxisScrollDir:p2(ve.scrollTop,Ee)},It(()=>de()),we(),Y()},B=(re,ue)=>{const _e=b(F),Pe=(M.value-_e)/ue*re;oe({scrollTop:Math.min(M.value-_e,Pe)})},W=(re,ue)=>{const _e=b(H),Pe=(N.value-_e)/ue*re;oe({scrollLeft:Math.min(N.value-_e,Pe)})},{onWheel:J}=D_t({atXStartEdge:K(()=>P.value.scrollLeft<=0),atXEndEdge:K(()=>P.value.scrollLeft>=N.value-b(H)),atYStartEdge:K(()=>P.value.scrollTop<=0),atYEndEdge:K(()=>P.value.scrollTop>=M.value-b(F))},(re,ue)=>{var _e,Pe,Ae,Ee;(Pe=(_e=k.value)==null?void 0:_e.onMouseUp)==null||Pe.call(_e),(Ee=(Ae=O.value)==null?void 0:Ae.onMouseUp)==null||Ee.call(Ae);const ye=b(H),ve=b(F);oe({scrollLeft:Math.min(P.value.scrollLeft+re,N.value-ye),scrollTop:Math.min(P.value.scrollTop+ue,M.value-ve)})});xr(E,"wheel",J,{passive:!1});const oe=({scrollLeft:re=P.value.scrollLeft,scrollTop:ue=P.value.scrollTop})=>{re=Math.max(re,0),ue=Math.max(ue,0);const _e=b(P);ue===_e.scrollTop&&re===_e.scrollLeft||(P.value={..._e,xAxisScrollDir:p2(_e.scrollLeft,re),yAxisScrollDir:p2(_e.scrollTop,ue),scrollLeft:re,scrollTop:ue,updateRequested:!0},It(()=>de()),we(),Y())},ie=(re=0,ue=0,_e=Xc)=>{const Pe=b(P);ue=Math.max(0,Math.min(ue,p.totalColumn-1)),re=Math.max(0,Math.min(re,p.totalRow-1));const Ae=Yxe(_.namespace.value),Ee=b(S),ye=a(p,Ee),ve=i(p,Ee);oe({scrollLeft:s(p,ue,_e,Pe.scrollLeft,Ee,ve>p.width?Ae:0),scrollTop:l(p,re,_e,Pe.scrollTop,Ee,ye>p.height?Ae:0)})},Z=(re,ue)=>{const{columnWidth:_e,direction:Pe,rowHeight:Ae}=p,Ee=U.value(t&&_e,t&&Ae,t&&Pe),ye=`${re},${ue}`;if(Gn(Ee,ye))return Ee[ye];{const[,ve]=n(p,ue,b(S)),Ce=b(S),ze=Ghe(Pe),[at,bt]=u(p,re,Ce),[Ft]=n(p,ue,Ce);return Ee[ye]={position:"absolute",left:ze?void 0:`${ve}px`,right:ze?`${ve}px`:void 0,top:`${bt}px`,height:`${at}px`,width:`${Ft}px`},Ee[ye]}},de=()=>{P.value.isScrolling=!1,It(()=>{U.value(-1,null,null)})};Kt(()=>{if(!Nn)return;const{initScrollLeft:re,initScrollTop:ue}=p,_e=b(E);_e&&(Lt(re)&&(_e.scrollLeft=re),Lt(ue)&&(_e.scrollTop=ue)),Y()});const we=()=>{const{direction:re}=p,{scrollLeft:ue,scrollTop:_e,updateRequested:Pe}=b(P),Ae=b(E);if(Pe&&Ae){if(re===O3)switch(tP()){case qD:{Ae.scrollLeft=-ue;break}case qre:{Ae.scrollLeft=ue;break}default:{const{clientWidth:Ee,scrollWidth:ye}=Ae;Ae.scrollLeft=ye-Ee-ue;break}}else Ae.scrollLeft=Math.max(0,ue);Ae.scrollTop=Math.max(0,_e)}},{resetAfterColumnIndex:Be,resetAfterRowIndex:ke,resetAfter:ae}=C.proxy;v({windowRef:E,innerRef:T,getItemStyleCache:U,scrollTo:oe,scrollToItem:ie,states:P,resetAfterColumnIndex:Be,resetAfterRowIndex:ke,resetAfter:ae});const le=()=>{const{scrollbarAlwaysOn:re,scrollbarStartGap:ue,scrollbarEndGap:_e,totalColumn:Pe,totalRow:Ae}=p,Ee=b(H),ye=b(F),ve=b(N),Ce=b(M),{scrollLeft:ze,scrollTop:at}=b(P),bt=Vt(oX,{ref:k,alwaysOn:re,startGap:ue,endGap:_e,class:_.e("horizontal"),clientSize:Ee,layout:"horizontal",onScroll:W,ratio:Ee*100/ve,scrollFrom:ze/(ve-Ee),total:Ae,visible:!0}),Ft=Vt(oX,{ref:O,alwaysOn:re,startGap:ue,endGap:_e,class:_.e("vertical"),clientSize:ye,layout:"vertical",onScroll:B,ratio:ye*100/Ce,scrollFrom:at/(Ce-ye),total:Pe,visible:!0});return{horizontalScrollbar:bt,verticalScrollbar:Ft}},q=()=>{var re;const[ue,_e]=b(R),[Pe,Ae]=b(z),{data:Ee,totalColumn:ye,totalRow:ve,useIsScrolling:Ce,itemKey:ze}=p,at=[];if(ve>0&&ye>0)for(let bt=Pe;bt<=Ae;bt++)for(let Ft=ue;Ft<=_e;Ft++){const Dt=ze({columnIndex:Ft,data:Ee,rowIndex:bt});at.push(Vt(tt,{key:Dt},(re=y.default)==null?void 0:re.call(y,{columnIndex:Ft,data:Ee,isScrolling:Ce?b(P).isScrolling:void 0,style:Z(bt,Ft),rowIndex:bt})))}return at},pe=()=>{const re=_n(p.innerElement),ue=q();return[Vt(re,{style:b(V),ref:T},$t(re)?ue:{default:()=>ue})]};return()=>{const re=_n(p.containerElement),{horizontalScrollbar:ue,verticalScrollbar:_e}=le(),Pe=pe();return Vt("div",{key:0,class:_.e("wrapper"),role:p.role},[Vt(re,{class:p.className,style:b(L),onScroll:$,ref:E},$t(re)?Pe:{default:()=>Pe}),ue,_e])}}}),{max:oP,min:bEe,floor:_Ee}=Math,E_t={column:"columnWidth",row:"rowHeight"},vX={column:"lastVisitedColumnIndex",row:"lastVisitedRowIndex"},wp=(e,t,n,r)=>{const[o,a,i]=[n[r],e[E_t[r]],n[vX[r]]];if(t>i){let s=0;if(i>=0){const l=o[i];s=l.offset+l.size}for(let l=i+1;l<=t;l++){const u=a(l);o[l]={offset:s,size:u},s+=u}n[vX[r]]=t}return o[t]},wEe=(e,t,n,r,o,a)=>{for(;n<=r;){const i=n+_Ee((r-n)/2),s=wp(e,i,t,a).offset;if(s===o)return i;s{const a=o==="column"?e.totalColumn:e.totalRow;let i=1;for(;n{const[o,a]=[t[r],t[vX[r]]];return(a>0?o[a].offset:0)>=n?wEe(e,t,0,a,n,r):k_t(e,t,oP(0,a),n,r)},CEe=({totalRow:e},{estimatedRowHeight:t,lastVisitedRowIndex:n,row:r})=>{let o=0;if(n>=e&&(n=e-1),n>=0){const s=r[n];o=s.offset+s.size}const i=(e-n-1)*t;return o+i},xEe=({totalColumn:e},{column:t,estimatedColumnWidth:n,lastVisitedColumnIndex:r})=>{let o=0;if(r>e&&(r=e-1),r>=0){const s=t[r];o=s.offset+s.size}const i=(e-r-1)*n;return o+i},A_t={column:xEe,row:CEe},fpe=(e,t,n,r,o,a,i)=>{const[s,l]=[a==="row"?e.height:e.width,A_t[a]],u=wp(e,t,o,a),c=l(e,o),d=oP(0,bEe(c-s,u.offset)),f=oP(0,u.offset-s+i+u.size);switch(n===XL&&(r>=f-s&&r<=d+s?n=Xc:n=yh),n){case HD:return d;case WD:return f;case yh:return Math.round(f+(d-f)/2);case Xc:default:return r>=f&&r<=d?r:f>d||r{const r=wp(e,t,n,"column");return[r.size,r.offset]},getRowPosition:(e,t,n)=>{const r=wp(e,t,n,"row");return[r.size,r.offset]},getColumnOffset:(e,t,n,r,o,a)=>fpe(e,t,n,r,o,"column",a),getRowOffset:(e,t,n,r,o,a)=>fpe(e,t,n,r,o,"row",a),getColumnStartIndexForOffset:(e,t,n)=>dpe(e,n,t,"column"),getColumnStopIndexForStartIndex:(e,t,n,r)=>{const o=wp(e,t,r,"column"),a=n+e.width;let i=o.offset+o.size,s=t;for(;sdpe(e,n,t,"row"),getRowStopIndexForStartIndex:(e,t,n,r)=>{const{totalRow:o,height:a}=e,i=wp(e,t,r,"row"),s=n+a;let l=i.size+i.offset,u=t;for(;u{const n=({columnIndex:a,rowIndex:i},s)=>{var l,u;s=Ln(s)?!0:s,Lt(a)&&(t.value.lastVisitedColumnIndex=Math.min(t.value.lastVisitedColumnIndex,a-1)),Lt(i)&&(t.value.lastVisitedRowIndex=Math.min(t.value.lastVisitedRowIndex,i-1)),(l=e.exposed)==null||l.getItemStyleCache.value(-1,null,null),s&&((u=e.proxy)==null||u.$forceUpdate())},r=(a,i)=>{n({columnIndex:a},i)},o=(a,i)=>{n({rowIndex:a},i)};Object.assign(e.proxy,{resetAfterColumnIndex:r,resetAfterRowIndex:o,resetAfter:n})},initCache:({estimatedColumnWidth:e=ZY,estimatedRowHeight:t=ZY})=>({column:{},estimatedColumnWidth:e,estimatedRowHeight:t,lastVisitedColumnIndex:-1,lastVisitedRowIndex:-1,row:{}}),clearCache:!1,validateProps:({columnWidth:e,rowHeight:t})=>{}}),O_t=yEe({name:"ElFixedSizeGrid",getColumnPosition:({columnWidth:e},t)=>[e,t*e],getRowPosition:({rowHeight:e},t)=>[e,t*e],getEstimatedTotalHeight:({totalRow:e,rowHeight:t})=>t*e,getEstimatedTotalWidth:({totalColumn:e,columnWidth:t})=>t*e,getColumnOffset:({totalColumn:e,columnWidth:t,width:n},r,o,a,i,s)=>{n=Number(n);const l=Math.max(0,e*t-n),u=Math.min(l,r*t),c=Math.max(0,r*t-n+s+t);switch(o==="smart"&&(a>=c-n&&a<=u+n?o=Xc:o=yh),o){case HD:return u;case WD:return c;case yh:{const d=Math.round(c+(u-c)/2);return dl+Math.floor(n/2)?l:d}case Xc:default:return a>=c&&a<=u?a:c>u||a{t=Number(t);const l=Math.max(0,n*e-t),u=Math.min(l,r*e),c=Math.max(0,r*e-t+s+e);switch(o===XL&&(a>=c-t&&a<=u+t?o=Xc:o=yh),o){case HD:return u;case WD:return c;case yh:{const d=Math.round(c+(u-c)/2);return dl+Math.floor(t/2)?l:d}case Xc:default:return a>=c&&a<=u?a:c>u||aMath.max(0,Math.min(t-1,Math.floor(n/e))),getColumnStopIndexForStartIndex:({columnWidth:e,totalColumn:t,width:n},r,o)=>{const a=r*e,i=Math.ceil((n+o-a)/e);return Math.max(0,Math.min(t-1,r+i-1))},getRowStartIndexForOffset:({rowHeight:e,totalRow:t},n)=>Math.max(0,Math.min(t-1,Math.floor(n/e))),getRowStopIndexForStartIndex:({rowHeight:e,totalRow:t,height:n},r,o)=>{const a=r*e,i=Math.ceil((n+o-a)/e);return Math.max(0,Math.min(t-1,r+i-1))},initCache:()=>{},clearCache:!0,validateProps:({columnWidth:e,rowHeight:t})=>{}}),F_t="ElTableV2Grid",I_t=e=>{const t=X(),n=X(),r=X(0),o=K(()=>{const{data:m,rowHeight:v,estimatedRowHeight:y}=e;if(!y)return m.length*v}),a=K(()=>{const{fixedData:m,rowHeight:v}=e;return((m==null?void 0:m.length)||0)*v}),i=K(()=>ZF(e.headerHeight)),s=K(()=>{const{height:m}=e;return Math.max(0,m-b(i)-b(a))}),l=K(()=>b(i)+b(a)>0),u=({data:m,rowIndex:v})=>m[v][e.rowKey];function c({rowCacheStart:m,rowCacheEnd:v,rowVisibleStart:y,rowVisibleEnd:_}){var C;(C=e.onRowsRendered)==null||C.call(e,{rowCacheStart:m,rowCacheEnd:v,rowVisibleStart:y,rowVisibleEnd:_})}function d(m,v){var y;(y=n.value)==null||y.resetAfterRowIndex(m,v)}function f(m,v){const y=b(t),_=b(n);vn(m)?(y==null||y.scrollToLeft(m.scrollLeft),r.value=m.scrollLeft,_==null||_.scrollTo(m)):(y==null||y.scrollToLeft(m),r.value=m,_==null||_.scrollTo({scrollLeft:m,scrollTop:v}))}function h(m){var v;(v=b(n))==null||v.scrollTo({scrollTop:m})}function g(m,v){var y;(y=b(n))==null||y.scrollToItem(m,1,v)}function p(){var m,v;(m=b(n))==null||m.$forceUpdate(),(v=b(t))==null||v.$forceUpdate()}return Ze(()=>e.bodyWidth,()=>{var m;Lt(e.estimatedRowHeight)&&((m=n.value)==null||m.resetAfter({columnIndex:0},!1))}),{bodyRef:n,forceUpdate:p,fixedRowHeight:a,gridHeight:s,hasHeader:l,headerHeight:i,headerRef:t,totalHeight:o,itemKey:u,onItemRendered:c,resetAfterRowIndex:d,scrollTo:f,scrollToTop:h,scrollToRow:g,scrollLeft:r}},M_t=ne({name:F_t,props:QF,setup(e,{slots:t,expose:n}){const{ns:r}=kt(Zre),{bodyRef:o,fixedRowHeight:a,gridHeight:i,hasHeader:s,headerRef:l,headerHeight:u,totalHeight:c,forceUpdate:d,itemKey:f,onItemRendered:h,resetAfterRowIndex:g,scrollTo:p,scrollToTop:m,scrollToRow:v,scrollLeft:y}=I_t(e);Fn(pEe,y),dL(async()=>{var C;await It();const S=(C=o.value)==null?void 0:C.states.scrollTop;S&&m(Math.round(S)+1)}),n({forceUpdate:d,totalHeight:c,scrollTo:p,scrollToTop:m,scrollToRow:v,resetAfterRowIndex:g});const _=()=>e.bodyWidth;return()=>{const{cache:C,columns:S,data:E,fixedData:k,useIsScrolling:O,scrollbarAlwaysOn:T,scrollbarEndGap:P,scrollbarStartGap:U,style:F,rowHeight:H,bodyWidth:R,estimatedRowHeight:z,headerWidth:M,height:N,width:L,getRowHeight:V,onScroll:Y}=e,$=Lt(z),B=$?T_t:O_t,W=b(u);return D("div",{role:"table",class:[r.e("table"),e.class],style:F},[D(B,{ref:o,data:E,useIsScrolling:O,itemKey:f,columnCache:0,columnWidth:$?_:R,totalColumn:1,totalRow:E.length,rowCache:C,rowHeight:$?V:H,width:L,height:b(i),class:r.e("body"),role:"rowgroup",scrollbarStartGap:U,scrollbarEndGap:P,scrollbarAlwaysOn:T,onScroll:Y,onItemRendered:h,perfMode:!1},{default:J=>{var oe;const ie=E[J.rowIndex];return(oe=t.row)==null?void 0:oe.call(t,{...J,columns:S,rowData:ie})}}),b(s)&&D(S_t,{ref:l,class:r.e("header-wrapper"),columns:S,headerData:E,headerHeight:e.headerHeight,fixedHeaderData:k,rowWidth:M,rowHeight:H,width:L,height:Math.min(W+b(a),N)},{dynamic:t.header,fixed:t.row})])}}});var toe=M_t;function P_t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!jr(e)}const $_t=(e,{slots:t})=>{const{mainTableRef:n,...r}=e;return D(toe,Dn({ref:n},r),P_t(t)?t:{default:()=>[t]})};var B_t=$_t;function R_t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!jr(e)}const N_t=(e,{slots:t})=>{if(!e.columns.length)return;const{leftTableRef:n,...r}=e;return D(toe,Dn({ref:n},r),R_t(t)?t:{default:()=>[t]})};var L_t=N_t;function U_t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!jr(e)}const V_t=(e,{slots:t})=>{if(!e.columns.length)return;const{rightTableRef:n,...r}=e;return D(toe,Dn({ref:n},r),U_t(t)?t:{default:()=>[t]})};var z_t=V_t;const j_t=e=>{const{isScrolling:t}=kt(Zre),n=X(!1),r=X(),o=K(()=>Lt(e.estimatedRowHeight)&&e.rowIndex>=0),a=(l=!1)=>{const u=b(r);if(!u)return;const{columns:c,onRowHeightChange:d,rowKey:f,rowIndex:h,style:g}=e,{height:p}=u.getBoundingClientRect();n.value=!0,It(()=>{if(l||p!==Number.parseInt(g.height)){const m=c[0],v=(m==null?void 0:m.placeholderSign)===XD;d==null||d({rowKey:f,height:p,rowIndex:h},m&&!v&&m.fixed)}})},i=K(()=>{const{rowData:l,rowIndex:u,rowKey:c,onRowHover:d}=e,f=e.rowEventHandlers||{},h={};return Object.entries(f).forEach(([g,p])=>{Rt(p)&&(h[g]=m=>{p({event:m,rowData:l,rowIndex:u,rowKey:c})})}),d&&[{name:"onMouseleave",hovered:!1},{name:"onMouseenter",hovered:!0}].forEach(({name:g,hovered:p})=>{const m=h[g];h[g]=v=>{d({event:v,hovered:p,rowData:l,rowIndex:u,rowKey:c}),m==null||m(v)}}),h}),s=l=>{const{onRowExpand:u,rowData:c,rowIndex:d,rowKey:f}=e;u==null||u({expanded:l,rowData:c,rowIndex:d,rowKey:f})};return Kt(()=>{b(o)&&a(!0)}),{isScrolling:t,measurable:o,measured:n,rowRef:r,eventHandlers:i,onExpand:s}},H_t="ElTableV2TableRow",W_t=ne({name:H_t,props:g2,setup(e,{expose:t,slots:n,attrs:r}){const{eventHandlers:o,isScrolling:a,measurable:i,measured:s,rowRef:l,onExpand:u}=j_t(e);return t({onExpand:u}),()=>{const{columns:c,columnsStyles:d,expandColumnKey:f,depth:h,rowData:g,rowIndex:p,style:m}=e;let v=c.map((y,_)=>{const C=ct(g.children)&&g.children.length>0&&y.key===f;return n.cell({column:y,columns:c,columnIndex:_,depth:h,style:d[y.key],rowData:g,rowIndex:p,isScrolling:b(a),expandIconProps:C?{rowData:g,rowIndex:p,onExpand:u}:void 0})});if(n.row&&(v=n.row({cells:v.map(y=>ct(y)&&y.length===1?y[0]:y),style:m,columns:c,depth:h,rowData:g,rowIndex:p,isScrolling:b(a)})),b(i)){const{height:y,..._}=m||{},C=b(s);return D("div",Dn({ref:l,class:e.class,style:C?m:_,role:"row"},r,b(o)),[v])}return D("div",Dn(r,{ref:l,class:e.class,style:m,role:"row"},b(o)),[v])}}});var q_t=W_t;function K_t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!jr(e)}const G_t=(e,{slots:t})=>{const{columns:n,columnsStyles:r,depthMap:o,expandColumnKey:a,expandedRowKeys:i,estimatedRowHeight:s,hasFixedColumns:l,rowData:u,rowIndex:c,style:d,isScrolling:f,rowProps:h,rowClass:g,rowKey:p,rowEventHandlers:m,ns:v,onRowHovered:y,onRowExpanded:_}=e,C=Wb(g,{columns:n,rowData:u,rowIndex:c},""),S=Wb(h,{columns:n,rowData:u,rowIndex:c}),E=u[p],k=o[E]||0,O=!!a,T=c<0,P=[v.e("row"),C,{[v.e(`row-depth-${k}`)]:O&&c>=0,[v.is("expanded")]:O&&i.includes(E),[v.is("fixed")]:!k&&T,[v.is("customized")]:!!t.row}],U=l?y:void 0,F={...S,columns:n,columnsStyles:r,class:P,depth:k,expandColumnKey:a,estimatedRowHeight:T?void 0:s,isScrolling:f,rowIndex:c,rowData:u,rowKey:E,rowEventHandlers:m,style:d};return D(q_t,Dn(F,{onRowExpand:_,onMouseenter:z=>{U==null||U({hovered:!0,rowKey:E,event:z,rowData:u,rowIndex:c})},onMouseleave:z=>{U==null||U({hovered:!1,rowKey:E,event:z,rowData:u,rowIndex:c})},rowkey:E}),K_t(t)?t:{default:()=>[t]})};var Y_t=G_t;const noe=(e,{slots:t})=>{var n;const{cellData:r,style:o}=e,a=((n=r==null?void 0:r.toString)==null?void 0:n.call(r))||"",i=Ne(t,"default",e,()=>[a]);return D("div",{class:e.class,title:a,style:o},[i])};noe.displayName="ElTableV2Cell";noe.inheritAttrs=!1;var X_t=noe;const J_t=e=>{const{expanded:t,expandable:n,onExpand:r,style:o,size:a}=e,i={onClick:n?()=>r(!t):void 0,class:e.class};return D(Tt,Dn(i,{size:a,style:o}),{default:()=>[D(_i,null,null)]})};var Z_t=J_t;const SEe=({columns:e,column:t,columnIndex:n,depth:r,expandIconProps:o,isScrolling:a,rowData:i,rowIndex:s,style:l,expandedRowKeys:u,ns:c,cellProps:d,expandColumnKey:f,indentSize:h,iconSize:g,rowKey:p},{slots:m})=>{const v=Xv(l);if(t.placeholderSign===XD)return D("div",{class:c.em("row-cell","placeholder"),style:v},null);const{cellRenderer:y,dataKey:_,dataGetter:C}=t,S=Rt(C)?C({columns:e,column:t,columnIndex:n,rowData:i,rowIndex:s}):na(i,_??""),E=Wb(d,{cellData:S,columns:e,column:t,columnIndex:n,rowIndex:s,rowData:i}),k={class:c.e("cell-text"),columns:e,column:t,columnIndex:n,cellData:S,isScrolling:a,rowData:i,rowIndex:s},O=hEe(y),T=O?O(k):Ne(m,"default",k,()=>[D(X_t,k,null)]),P=[c.e("row-cell"),t.class,t.align===YD.CENTER&&c.is("align-center"),t.align===YD.RIGHT&&c.is("align-right")],U=s>=0&&f&&t.key===f,F=s>=0&&u.includes(i[p]);let H;const R=`margin-inline-start: ${r*h}px;`;return U&&(vn(o)?H=D(Z_t,Dn(o,{class:[c.e("expand-icon"),c.is("expanded",F)],size:g,expanded:F,style:R,expandable:!0}),null):H=D("div",{style:[R,`width: ${g}px; height: ${g}px;`].join(" ")},null)),D("div",Dn({class:P,style:v},E,{role:"cell"}),[H,T])};SEe.inheritAttrs=!1;var hpe=SEe;const Q_t=ht({class:String,columns:xT,columnsStyles:{type:$e(Object),required:!0},headerIndex:Number,style:{type:$e(Object)}}),e4t=ne({name:"ElTableV2HeaderRow",props:Q_t,setup(e,{slots:t}){return()=>{const{columns:n,columnsStyles:r,headerIndex:o,style:a}=e;let i=n.map((s,l)=>t.cell({columns:n,column:s,columnIndex:l,headerIndex:o,style:r[s.key]}));return t.header&&(i=t.header({cells:i.map(s=>ct(s)&&s.length===1?s[0]:s),columns:n,headerIndex:o})),D("div",{class:e.class,style:a,role:"row"},[i])}}});var t4t=e4t;function n4t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!jr(e)}const r4t=({columns:e,columnsStyles:t,headerIndex:n,style:r,headerClass:o,headerProps:a,ns:i},{slots:s})=>{const l={columns:e,headerIndex:n},u=[i.e("header-row"),Wb(o,l,""),{[i.is("customized")]:!!s.header}],c={...Wb(a,l),columnsStyles:t,class:u,columns:e,headerIndex:n,style:r};return D(t4t,c,n4t(s)?s:{default:()=>[s]})};var o4t=r4t;const roe=(e,{slots:t})=>Ne(t,"default",e,()=>{var n,r;return[D("div",{class:e.class,title:(n=e.column)==null?void 0:n.title},[(r=e.column)==null?void 0:r.title])]});roe.displayName="ElTableV2HeaderCell";roe.inheritAttrs=!1;var a4t=roe;const i4t=e=>{const{sortOrder:t}=e;return D(Tt,{size:14,class:e.class},{default:()=>[t===GD.ASC?D(w5e,null,null):D(_5e,null,null)]})};var s4t=i4t;const l4t=(e,{slots:t})=>{const{column:n,ns:r,style:o,onColumnSorted:a}=e,i=Xv(o);if(n.placeholderSign===XD)return D("div",{class:r.em("header-row-cell","placeholder"),style:i},null);const{headerCellRenderer:s,headerClass:l,sortable:u}=n,c={...e,class:r.e("header-cell-text")},d=hEe(s),f=d?d(c):Ne(t,"default",c,()=>[D(a4t,c,null)]),{sortBy:h,sortState:g,headerCellProps:p}=e;let m,v;if(g){const C=g[n.key];m=!!gX[C],v=m?C:GD.ASC}else m=n.key===h.key,v=m?h.order:GD.ASC;const y=[r.e("header-cell"),Wb(l,e,""),n.align===YD.CENTER&&r.is("align-center"),n.align===YD.RIGHT&&r.is("align-right"),u&&r.is("sortable")],_={...Wb(p,e),onClick:n.sortable?a:void 0,class:y,style:i,"data-key":n.key};return D("div",Dn(_,{role:"columnheader"}),[f,u&&D(s4t,{class:[r.e("sort-icon"),m&&r.is("sorting")],sortOrder:v},null)])};var ppe=l4t;const DEe=(e,{slots:t})=>{var n;return D("div",{class:e.class,style:e.style},[(n=t.default)==null?void 0:n.call(t)])};DEe.displayName="ElTableV2Footer";var u4t=DEe;const EEe=(e,{slots:t})=>{const n=Ne(t,"default",{},()=>[D(bf,null,null)]);return D("div",{class:e.class,style:e.style},[n])};EEe.displayName="ElTableV2Empty";var c4t=EEe;const kEe=(e,{slots:t})=>{var n;return D("div",{class:e.class,style:e.style},[(n=t.default)==null?void 0:n.call(t)])};kEe.displayName="ElTableV2Overlay";var d4t=kEe;function ux(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!jr(e)}const f4t="ElTableV2",h4t=ne({name:f4t,props:w_t,setup(e,{slots:t,expose:n}){const r=nt("table-v2"),{columnsStyles:o,fixedColumnsOnLeft:a,fixedColumnsOnRight:i,mainColumns:s,mainTableHeight:l,fixedTableHeight:u,leftTableWidth:c,rightTableWidth:d,data:f,depthMap:h,expandedRowKeys:g,hasFixedColumns:p,mainTableRef:m,leftTableRef:v,rightTableRef:y,isDynamic:_,isResetting:C,isScrolling:S,bodyWidth:E,emptyStyle:k,rootStyle:O,footerHeight:T,showEmpty:P,scrollTo:U,scrollToLeft:F,scrollToTop:H,scrollToRow:R,getRowHeight:z,onColumnSorted:M,onRowHeightChange:N,onRowHovered:L,onRowExpanded:V,onRowsRendered:Y,onScroll:$,onVerticalScroll:B}=b_t(e);return n({scrollTo:U,scrollToLeft:F,scrollToTop:H,scrollToRow:R}),Fn(Zre,{ns:r,isResetting:C,isScrolling:S}),()=>{const{cache:W,cellProps:J,estimatedRowHeight:oe,expandColumnKey:ie,fixedData:Z,headerHeight:de,headerClass:we,headerProps:Be,headerCellProps:ke,sortBy:ae,sortState:le,rowHeight:q,rowClass:pe,rowEventHandlers:he,rowKey:re,rowProps:ue,scrollbarAlwaysOn:_e,indentSize:Pe,iconSize:Ae,useIsScrolling:Ee,vScrollbarSize:ye,width:ve}=e,Ce=b(f),ze={cache:W,class:r.e("main"),columns:b(s),data:Ce,fixedData:Z,estimatedRowHeight:oe,bodyWidth:b(E),headerHeight:de,headerWidth:b(E),height:b(l),mainTableRef:m,rowKey:re,rowHeight:q,scrollbarAlwaysOn:_e,scrollbarStartGap:2,scrollbarEndGap:ye,useIsScrolling:Ee,width:ve,getRowHeight:z,onRowsRendered:Y,onScroll:$},at=b(c),bt=b(u),Ft={cache:W,class:r.e("left"),columns:b(a),data:Ce,fixedData:Z,estimatedRowHeight:oe,leftTableRef:v,rowHeight:q,bodyWidth:at,headerWidth:at,headerHeight:de,height:bt,rowKey:re,scrollbarAlwaysOn:_e,scrollbarStartGap:2,scrollbarEndGap:ye,useIsScrolling:Ee,width:at,getRowHeight:z,onScroll:B},Dt=b(d),He={cache:W,class:r.e("right"),columns:b(i),data:Ce,fixedData:Z,estimatedRowHeight:oe,rightTableRef:y,rowHeight:q,bodyWidth:Dt,headerWidth:Dt,headerHeight:de,height:bt,rowKey:re,scrollbarAlwaysOn:_e,scrollbarStartGap:2,scrollbarEndGap:ye,width:Dt,style:`--${b(r.namespace)}-table-scrollbar-size: ${ye}px`,useIsScrolling:Ee,getRowHeight:z,onScroll:B},Fe=b(o),Ue={ns:r,depthMap:b(h),columnsStyles:Fe,expandColumnKey:ie,expandedRowKeys:b(g),estimatedRowHeight:oe,hasFixedColumns:b(p),rowProps:ue,rowClass:pe,rowKey:re,rowEventHandlers:he,onRowHovered:L,onRowExpanded:V,onRowHeightChange:N},Se={cellProps:J,expandColumnKey:ie,indentSize:Pe,iconSize:Ae,rowKey:re,expandedRowKeys:b(g),ns:r},We={ns:r,headerClass:we,headerProps:Be,columnsStyles:Fe},Te={ns:r,sortBy:ae,sortState:le,headerCellProps:ke,onColumnSorted:M},Ge={row:Wt=>D(Y_t,Dn(Wt,Ue),{row:t.row,cell:dt=>{let Le;return t.cell?D(hpe,Dn(dt,Se,{style:Fe[dt.column.key]}),ux(Le=t.cell(dt))?Le:{default:()=>[Le]}):D(hpe,Dn(dt,Se,{style:Fe[dt.column.key]}),null)}}),header:Wt=>D(o4t,Dn(Wt,We),{header:t.header,cell:dt=>{let Le;return t["header-cell"]?D(ppe,Dn(dt,Te,{style:Fe[dt.column.key]}),ux(Le=t["header-cell"](dt))?Le:{default:()=>[Le]}):D(ppe,Dn(dt,Te,{style:Fe[dt.column.key]}),null)}})},Ot=[e.class,r.b(),r.e("root"),{[r.is("dynamic")]:b(_)}],Zt={class:r.e("footer"),style:b(T)};return D("div",{class:Ot,style:b(O)},[D(B_t,ze,ux(Ge)?Ge:{default:()=>[Ge]}),D(L_t,Ft,ux(Ge)?Ge:{default:()=>[Ge]}),D(z_t,He,ux(Ge)?Ge:{default:()=>[Ge]}),t.footer&&D(u4t,Zt,{default:t.footer}),b(P)&&D(c4t,{class:r.e("empty"),style:b(k)},{default:t.empty}),t.overlay&&D(d4t,{class:r.e("overlay")},{default:t.overlay})])}}});var p4t=h4t;const g4t=ht({disableWidth:Boolean,disableHeight:Boolean,onResize:{type:$e(Function)}}),v4t=e=>{const t=X(),n=X(0),r=X(0);let o;return Kt(()=>{o=co(t,([a])=>{const{width:i,height:s}=a.contentRect,{paddingLeft:l,paddingRight:u,paddingTop:c,paddingBottom:d}=getComputedStyle(a.target),f=Number.parseInt(l)||0,h=Number.parseInt(u)||0,g=Number.parseInt(c)||0,p=Number.parseInt(d)||0;n.value=i-f-h,r.value=s-g-p}).stop}),Ar(()=>{o==null||o()}),Ze([n,r],([a,i])=>{var s;(s=e.onResize)==null||s.call(e,{width:a,height:i})}),{sizer:t,width:n,height:r}},m4t=ne({name:"ElAutoResizer",props:g4t,setup(e,{slots:t}){const n=nt("auto-resizer"),{height:r,width:o,sizer:a}=v4t(e),i={width:"100%",height:"100%"};return()=>{var s;return D("div",{ref:a,class:n.b(),style:i},[(s=t.default)==null?void 0:s.call(t,{height:r.value,width:o.value})])}}});var y4t=m4t;const b4t=dn(p4t),_4t=dn(y4t),JL=Symbol("tabsRootContextKey"),w4t=ht({tabs:{type:$e(Array),default:()=>Eo([])}}),AEe="ElTabBar",C4t=ne({name:AEe}),x4t=ne({...C4t,props:w4t,setup(e,{expose:t}){const n=e,r=bn(),o=kt(JL);o||oa(AEe,"");const a=nt("tabs"),i=X(),s=X(),l=()=>{let h=0,g=0;const p=["top","bottom"].includes(o.props.tabPosition)?"width":"height",m=p==="width"?"x":"y",v=m==="x"?"left":"top";return n.tabs.every(y=>{var _,C;const S=(C=(_=r.parent)==null?void 0:_.refs)==null?void 0:C[`tab-${y.uid}`];if(!S)return!1;if(!y.active)return!0;h=S[`offset${fh(v)}`],g=S[`client${fh(p)}`];const E=window.getComputedStyle(S);return p==="width"&&(g-=Number.parseFloat(E.paddingLeft)+Number.parseFloat(E.paddingRight),h+=Number.parseFloat(E.paddingLeft)),!1}),{[p]:`${g}px`,transform:`translate${fh(m)}(${h}px)`}},u=()=>s.value=l(),c=[],d=()=>{var h;c.forEach(p=>p.stop()),c.length=0;const g=(h=r.parent)==null?void 0:h.refs;if(g){for(const p in g)if(p.startsWith("tab-")){const m=g[p];m&&c.push(co(m,u))}}};Ze(()=>n.tabs,async()=>{await It(),u(),d()},{immediate:!0});const f=co(i,()=>u());return Ar(()=>{c.forEach(h=>h.stop()),c.length=0,f.stop()}),t({ref:i,update:u}),(h,g)=>(I(),j("div",{ref_key:"barRef",ref:i,class:ee([b(a).e("active-bar"),b(a).is(b(o).props.tabPosition)]),style:Nt(s.value)},null,6))}});var S4t=vt(x4t,[["__file","tab-bar.vue"]]);const D4t=ht({panes:{type:$e(Array),default:()=>Eo([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),E4t={tabClick:(e,t,n)=>n instanceof Event,tabRemove:(e,t)=>t instanceof Event},gpe="ElTabNav",k4t=ne({name:gpe,props:D4t,emits:E4t,setup(e,{expose:t,emit:n}){const r=kt(JL);r||oa(gpe,"");const o=nt("tabs"),a=lJe(),i=wJe(),s=X(),l=X(),u=X(),c=X(),d=X(!1),f=X(0),h=X(!1),g=X(!0),p=K(()=>["top","bottom"].includes(r.props.tabPosition)?"width":"height"),m=K(()=>({transform:`translate${p.value==="width"?"X":"Y"}(-${f.value}px)`})),v=()=>{if(!s.value)return;const O=s.value[`offset${fh(p.value)}`],T=f.value;if(!T)return;const P=T>O?T-O:0;f.value=P},y=()=>{if(!s.value||!l.value)return;const O=l.value[`offset${fh(p.value)}`],T=s.value[`offset${fh(p.value)}`],P=f.value;if(O-P<=T)return;const U=O-P>T*2?P+T:O-T;f.value=U},_=async()=>{const O=l.value;if(!d.value||!u.value||!s.value||!O)return;await It();const T=u.value.querySelector(".is-active");if(!T)return;const P=s.value,U=["top","bottom"].includes(r.props.tabPosition),F=T.getBoundingClientRect(),H=P.getBoundingClientRect(),R=U?O.offsetWidth-H.width:O.offsetHeight-H.height,z=f.value;let M=z;U?(F.leftH.right&&(M=z+F.right-H.right)):(F.topH.bottom&&(M=z+(F.bottom-H.bottom))),M=Math.max(M,0),f.value=Math.min(M,R)},C=()=>{var O;if(!l.value||!s.value)return;e.stretch&&((O=c.value)==null||O.update());const T=l.value[`offset${fh(p.value)}`],P=s.value[`offset${fh(p.value)}`],U=f.value;P0&&(f.value=0))},S=O=>{let T=0;switch(O.code){case St.left:case St.up:T=-1;break;case St.right:case St.down:T=1;break;default:return}const P=Array.from(O.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)"));let F=P.indexOf(O.target)+T;F<0?F=P.length-1:F>=P.length&&(F=0),P[F].focus({preventScroll:!0}),P[F].click(),E()},E=()=>{g.value&&(h.value=!0)},k=()=>h.value=!1;return Ze(a,O=>{O==="hidden"?g.value=!1:O==="visible"&&setTimeout(()=>g.value=!0,50)}),Ze(i,O=>{O?setTimeout(()=>g.value=!0,50):g.value=!1}),co(u,C),Kt(()=>setTimeout(()=>_(),0)),gf(()=>C()),t({scrollToActiveTab:_,removeFocus:k,tabListRef:l,tabBarRef:c}),()=>{const O=d.value?[D("span",{class:[o.e("nav-prev"),o.is("disabled",!d.value.prev)],onClick:v},[D(Tt,null,{default:()=>[D(uf,null,null)]})]),D("span",{class:[o.e("nav-next"),o.is("disabled",!d.value.next)],onClick:y},[D(Tt,null,{default:()=>[D(_i,null,null)]})])]:null,T=e.panes.map((P,U)=>{var F,H,R,z;const M=P.uid,N=P.props.disabled,L=(H=(F=P.props.name)!=null?F:P.index)!=null?H:`${U}`,V=!N&&(P.isClosable||e.editable);P.index=`${U}`;const Y=V?D(Tt,{class:"is-icon-close",onClick:W=>n("tabRemove",P,W)},{default:()=>[D(Gs,null,null)]}):null,$=((z=(R=P.slots).label)==null?void 0:z.call(R))||P.props.label,B=!N&&P.active?0:-1;return D("div",{ref:`tab-${M}`,class:[o.e("item"),o.is(r.props.tabPosition),o.is("active",P.active),o.is("disabled",N),o.is("closable",V),o.is("focus",h.value)],id:`tab-${L}`,key:`tab-${M}`,"aria-controls":`pane-${L}`,role:"tab","aria-selected":P.active,tabindex:B,onFocus:()=>E(),onBlur:()=>k(),onClick:W=>{k(),n("tabClick",P,L,W)},onKeydown:W=>{V&&(W.code===St.delete||W.code===St.backspace)&&n("tabRemove",P,W)}},[$,Y])});return D("div",{ref:u,class:[o.e("nav-wrap"),o.is("scrollable",!!d.value),o.is(r.props.tabPosition)]},[O,D("div",{class:o.e("nav-scroll"),ref:s},[D("div",{class:[o.e("nav"),o.is(r.props.tabPosition),o.is("stretch",e.stretch&&["top","bottom"].includes(r.props.tabPosition))],ref:l,style:m.value,role:"tablist",onKeydown:S},[e.type?null:D(S4t,{ref:c,tabs:[...e.panes]},null),T])])])}}}),A4t=ht({type:{type:String,values:["card","border-card",""],default:""},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:$e(Function),default:()=>!0},stretch:Boolean}),uj=e=>$t(e)||Lt(e),T4t={[en]:e=>uj(e),tabClick:(e,t)=>t instanceof Event,tabChange:e=>uj(e),edit:(e,t)=>["remove","add"].includes(t),tabRemove:e=>uj(e),tabAdd:()=>!0},O4t=ne({name:"ElTabs",props:A4t,emits:T4t,setup(e,{emit:t,slots:n,expose:r}){var o;const a=nt("tabs"),i=K(()=>["left","right"].includes(e.tabPosition)),{children:s,addChild:l,removeChild:u}=UL(bn(),"ElTabPane"),c=X(),d=X((o=e.modelValue)!=null?o:"0"),f=async(v,y=!1)=>{var _,C;if(!(d.value===v||Ln(v)))try{let S;if(e.beforeLeave){const E=e.beforeLeave(v,d.value);S=E instanceof Promise?await E:E}else S=!0;S!==!1&&(d.value=v,y&&(t(en,v),t("tabChange",v)),(C=(_=c.value)==null?void 0:_.removeFocus)==null||C.call(_))}catch{}},h=(v,y,_)=>{v.props.disabled||(t("tabClick",v,_),f(y,!0))},g=(v,y)=>{v.props.disabled||Ln(v.props.name)||(y.stopPropagation(),t("edit",v.props.name,"remove"),t("tabRemove",v.props.name))},p=()=>{t("edit",void 0,"add"),t("tabAdd")};Ze(()=>e.modelValue,v=>f(v)),Ze(d,async()=>{var v;await It(),(v=c.value)==null||v.scrollToActiveTab()}),Fn(JL,{props:e,currentName:d,registerPane:v=>{s.value.push(v)},sortPane:l,unregisterPane:u}),r({currentName:d,tabNavRef:c});const m=({render:v})=>v();return()=>{const v=n["add-icon"],y=e.editable||e.addable?D("div",{class:[a.e("new-tab"),i.value&&a.e("new-tab-vertical")],tabindex:"0",onClick:p,onKeydown:S=>{[St.enter,St.numpadEnter].includes(S.code)&&p()}},[v?Ne(n,"add-icon"):D(Tt,{class:a.is("icon-plus")},{default:()=>[D(ea,null,null)]})]):null,_=D("div",{class:[a.e("header"),i.value&&a.e("header-vertical"),a.is(e.tabPosition)]},[D(m,{render:()=>{const S=s.value.some(E=>E.slots.label);return D(k4t,{ref:c,currentName:d.value,editable:e.editable,type:e.type,panes:s.value,stretch:e.stretch,onTabClick:h,onTabRemove:g},{$stable:!S})}},null),y]),C=D("div",{class:a.e("content")},[Ne(n,"default")]);return D("div",{class:[a.b(),a.m(e.tabPosition),{[a.m("card")]:e.type==="card",[a.m("border-card")]:e.type==="border-card"}]},[C,_])}}});var F4t=O4t;const I4t=ht({label:{type:String,default:""},name:{type:[String,Number]},closable:Boolean,disabled:Boolean,lazy:Boolean}),TEe="ElTabPane",M4t=ne({name:TEe}),P4t=ne({...M4t,props:I4t,setup(e){const t=e,n=bn(),r=La(),o=kt(JL);o||oa(TEe,"usage: ");const a=nt("tab-pane"),i=X(),s=K(()=>t.closable||o.props.closable),l=NM(()=>{var h;return o.currentName.value===((h=t.name)!=null?h:i.value)}),u=X(l.value),c=K(()=>{var h;return(h=t.name)!=null?h:i.value}),d=NM(()=>!t.lazy||u.value||l.value);Ze(l,h=>{h&&(u.value=!0)});const f=Bn({uid:n.uid,slots:r,props:t,paneName:c,active:l,index:i,isClosable:s});return o.registerPane(f),Kt(()=>{o.sortPane(f)}),gd(()=>{o.unregisterPane(f.uid)}),(h,g)=>b(d)?rn((I(),j("div",{key:0,id:`pane-${b(c)}`,class:ee(b(a).b()),role:"tabpanel","aria-hidden":!b(l),"aria-labelledby":`tab-${b(c)}`},[Ne(h.$slots,"default")],10,["id","aria-hidden","aria-labelledby"])),[[Pn,b(l)]]):be("v-if",!0)}});var OEe=vt(P4t,[["__file","tab-pane.vue"]]);const l1=dn(F4t,{TabPane:OEe}),u1=vo(OEe),$4t=ht({type:{type:String,values:["primary","success","info","warning","danger",""],default:""},size:{type:String,values:Gh,default:""},truncated:Boolean,lineClamp:{type:[String,Number]},tag:{type:String,default:"span"}}),B4t=ne({name:"ElText"}),R4t=ne({...B4t,props:$4t,setup(e){const t=e,n=X(),r=ma(),o=nt("text"),a=K(()=>[o.b(),o.m(t.type),o.m(r.value),o.is("truncated",t.truncated),o.is("line-clamp",!Ln(t.lineClamp))]),i=()=>{var s,l,u,c,d,f,h;if(Ug().title)return;let p=!1;const m=((s=n.value)==null?void 0:s.textContent)||"";if(t.truncated){const v=(l=n.value)==null?void 0:l.offsetWidth,y=(u=n.value)==null?void 0:u.scrollWidth;v&&y&&y>v&&(p=!0)}else if(!Ln(t.lineClamp)){const v=(c=n.value)==null?void 0:c.offsetHeight,y=(d=n.value)==null?void 0:d.scrollHeight;v&&y&&y>v&&(p=!0)}p?(f=n.value)==null||f.setAttribute("title",m):(h=n.value)==null||h.removeAttribute("title")};return Kt(i),gf(i),(s,l)=>(I(),Oe(_n(s.tag),{ref_key:"textRef",ref:n,class:ee(b(a)),style:Nt({"-webkit-line-clamp":s.lineClamp})},{default:A(()=>[Ne(s.$slots,"default")]),_:3},8,["class","style"]))}});var N4t=vt(R4t,[["__file","text.vue"]]);const ooe=dn(N4t),L4t=ht({format:{type:String,default:"HH:mm"},modelValue:String,disabled:Boolean,editable:{type:Boolean,default:!0},effect:{type:$e(String),default:"light"},clearable:{type:Boolean,default:!0},size:Aa,placeholder:String,start:{type:String,default:"09:00"},end:{type:String,default:"18:00"},step:{type:String,default:"00:30"},minTime:String,maxTime:String,includeEndTime:{type:Boolean,default:!1},name:String,prefixIcon:{type:$e([String,Object]),default:()=>$D},clearIcon:{type:$e([String,Object]),default:()=>Yh},...vC}),ug=e=>{const t=(e||"").split(":");if(t.length>=2){let n=Number.parseInt(t[0],10);const r=Number.parseInt(t[1],10),o=e.toUpperCase();return o.includes("AM")&&n===12?n=0:o.includes("PM")&&n!==12&&(n+=12),{hours:n,minutes:r}}return null},cj=(e,t)=>{const n=ug(e);if(!n)return-1;const r=ug(t);if(!r)return-1;const o=n.minutes+n.hours*60,a=r.minutes+r.hours*60;return o===a?0:o>a?1:-1},vpe=e=>`${e}`.padStart(2,"0"),q4=e=>`${vpe(e.hours)}:${vpe(e.minutes)}`,U4t=(e,t)=>{const n=ug(e);if(!n)return"";const r=ug(t);if(!r)return"";const o={hours:n.hours,minutes:n.minutes};return o.minutes+=r.minutes,o.hours+=r.hours,o.hours+=Math.floor(o.minutes/60),o.minutes=o.minutes%60,q4(o)},V4t=ne({name:"ElTimeSelect"}),z4t=ne({...V4t,props:L4t,emits:[En,"blur","focus","clear",en],setup(e,{expose:t}){const n=e;hn.extend(Cre);const{Option:r}=ii,o=nt("input"),a=X(),i=ns(),{lang:s}=Un(),l=K(()=>n.modelValue),u=K(()=>{const v=ug(n.start);return v?q4(v):null}),c=K(()=>{const v=ug(n.end);return v?q4(v):null}),d=K(()=>{const v=ug(n.step);return v?q4(v):null}),f=K(()=>{const v=ug(n.minTime||"");return v?q4(v):null}),h=K(()=>{const v=ug(n.maxTime||"");return v?q4(v):null}),g=K(()=>{var v;const y=[],_=(C,S)=>{y.push({value:C,disabled:cj(S,f.value||"-1:-1")<=0||cj(S,h.value||"100:100")>=0})};if(n.start&&n.end&&n.step){let C=u.value,S;for(;C&&c.value&&cj(C,c.value)<=0;)S=hn(C,"HH:mm").locale(s.value).format(n.format),_(S,C),C=U4t(C,d.value);if(n.includeEndTime&&c.value&&((v=y[y.length-1])==null?void 0:v.value)!==c.value){const E=hn(c.value,"HH:mm").locale(s.value).format(n.format);_(E,c.value)}}return y});return t({blur:()=>{var v,y;(y=(v=a.value)==null?void 0:v.blur)==null||y.call(v)},focus:()=>{var v,y;(y=(v=a.value)==null?void 0:v.focus)==null||y.call(v)}}),(v,y)=>(I(),Oe(b(ii),{ref_key:"select",ref:a,"model-value":b(l),disabled:b(i),clearable:v.clearable,"clear-icon":v.clearIcon,size:v.size,effect:v.effect,placeholder:v.placeholder,"default-first-option":"",filterable:v.editable,"empty-values":v.emptyValues,"value-on-clear":v.valueOnClear,"onUpdate:modelValue":_=>v.$emit(b(en),_),onChange:_=>v.$emit(b(En),_),onBlur:_=>v.$emit("blur",_),onFocus:_=>v.$emit("focus",_),onClear:()=>v.$emit("clear")},{prefix:A(()=>[v.prefixIcon?(I(),Oe(b(Tt),{key:0,class:ee(b(o).e("prefix-icon"))},{default:A(()=>[(I(),Oe(_n(v.prefixIcon)))]),_:1},8,["class"])):be("v-if",!0)]),default:A(()=>[(I(!0),j(tt,null,wt(b(g),_=>(I(),Oe(b(r),{key:_.value,label:_.value,value:_.value,disabled:_.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["model-value","disabled","clearable","clear-icon","size","effect","placeholder","filterable","empty-values","value-on-clear","onUpdate:modelValue","onChange","onBlur","onFocus","onClear"]))}});var j4t=vt(z4t,[["__file","time-select.vue"]]);const H4t=dn(j4t),W4t="timeline",q4t=ne({name:"ElTimeline",setup(e,{slots:t}){const n=nt("timeline");return Fn(W4t,t),()=>Vt("ul",{class:[n.b()]},[Ne(t,"default")])}}),K4t=ht({timestamp:{type:String,default:""},hideTimestamp:Boolean,center:Boolean,placement:{type:String,values:["top","bottom"],default:"bottom"},type:{type:String,values:["primary","success","warning","danger","info"],default:""},color:{type:String,default:""},size:{type:String,values:["normal","large"],default:"normal"},icon:{type:mr},hollow:Boolean}),G4t=ne({name:"ElTimelineItem"}),Y4t=ne({...G4t,props:K4t,setup(e){const t=e,n=nt("timeline-item"),r=K(()=>[n.e("node"),n.em("node",t.size||""),n.em("node",t.type||""),n.is("hollow",t.hollow)]);return(o,a)=>(I(),j("li",{class:ee([b(n).b(),{[b(n).e("center")]:o.center}])},[w("div",{class:ee(b(n).e("tail"))},null,2),o.$slots.dot?be("v-if",!0):(I(),j("div",{key:0,class:ee(b(r)),style:Nt({backgroundColor:o.color})},[o.icon?(I(),Oe(b(Tt),{key:0,class:ee(b(n).e("icon"))},{default:A(()=>[(I(),Oe(_n(o.icon)))]),_:1},8,["class"])):be("v-if",!0)],6)),o.$slots.dot?(I(),j("div",{key:1,class:ee(b(n).e("dot"))},[Ne(o.$slots,"dot")],2)):be("v-if",!0),w("div",{class:ee(b(n).e("wrapper"))},[!o.hideTimestamp&&o.placement==="top"?(I(),j("div",{key:0,class:ee([b(n).e("timestamp"),b(n).is("top")])},se(o.timestamp),3)):be("v-if",!0),w("div",{class:ee(b(n).e("content"))},[Ne(o.$slots,"default")],2),!o.hideTimestamp&&o.placement==="bottom"?(I(),j("div",{key:1,class:ee([b(n).e("timestamp"),b(n).is("bottom")])},se(o.timestamp),3)):be("v-if",!0)],2)],2))}});var FEe=vt(Y4t,[["__file","timeline-item.vue"]]);const X4t=dn(q4t,{TimelineItem:FEe}),J4t=vo(FEe),IEe=ht({nowrap:Boolean});var MEe=(e=>(e.top="top",e.bottom="bottom",e.left="left",e.right="right",e))(MEe||{});const Z4t=Object.values(MEe),aoe=ht({width:{type:Number,default:10},height:{type:Number,default:10},style:{type:$e(Object),default:null}}),Q4t=ht({side:{type:$e(String),values:Z4t,required:!0}}),e3t=["absolute","fixed"],t3t=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],ioe=ht({arrowPadding:{type:$e(Number),default:5},effect:{type:$e(String),default:"light"},contentClass:String,placement:{type:$e(String),values:t3t,default:"bottom"},reference:{type:$e(Object),default:null},offset:{type:Number,default:8},strategy:{type:$e(String),values:e3t,default:"absolute"},showArrow:Boolean,...ts(["ariaLabel"])}),soe=ht({delayDuration:{type:Number,default:300},defaultOpen:Boolean,open:{type:Boolean,default:void 0},onOpenChange:{type:$e(Function)},"onUpdate:open":{type:$e(Function)}}),e4={type:$e(Function)},loe=ht({onBlur:e4,onClick:e4,onFocus:e4,onMouseDown:e4,onMouseEnter:e4,onMouseLeave:e4}),n3t=ht({...soe,...aoe,...loe,...ioe,alwaysOn:Boolean,fullTransition:Boolean,transitionProps:{type:$e(Object),default:null},teleported:Boolean,to:{type:$e([String,Object]),default:"body"}}),ZL=Symbol("tooltipV2"),PEe=Symbol("tooltipV2Content"),dj="tooltip_v2.open",r3t=ne({name:"ElTooltipV2Root"}),o3t=ne({...r3t,props:soe,setup(e,{expose:t}){const n=e,r=X(n.defaultOpen),o=X(null),a=K({get:()=>ql(n.open)?r.value:n.open,set:m=>{var v;r.value=m,(v=n["onUpdate:open"])==null||v.call(n,m)}}),i=K(()=>Lt(n.delayDuration)&&n.delayDuration>0),{start:s,stop:l}=jb(()=>{a.value=!0},K(()=>n.delayDuration),{immediate:!1}),u=nt("tooltip-v2"),c=Gi(),d=()=>{l(),a.value=!0},f=()=>{b(i)?s():d()},h=d,g=()=>{l(),a.value=!1};return Ze(a,m=>{var v;m&&(document.dispatchEvent(new CustomEvent(dj)),h()),(v=n.onOpenChange)==null||v.call(n,m)}),Kt(()=>{document.addEventListener(dj,g)}),Ar(()=>{l(),document.removeEventListener(dj,g)}),Fn(ZL,{contentId:c,triggerRef:o,ns:u,onClose:g,onDelayOpen:f,onOpen:h}),t({onOpen:h,onClose:g}),(m,v)=>Ne(m.$slots,"default",{open:b(a)})}});var a3t=vt(o3t,[["__file","root.vue"]]);const i3t=ne({name:"ElTooltipV2Arrow"}),s3t=ne({...i3t,props:{...aoe,...Q4t},setup(e){const t=e,{ns:n}=kt(ZL),{arrowRef:r}=kt(PEe),o=K(()=>{const{style:a,width:i,height:s}=t,l=n.namespace.value;return{[`--${l}-tooltip-v2-arrow-width`]:`${i}px`,[`--${l}-tooltip-v2-arrow-height`]:`${s}px`,[`--${l}-tooltip-v2-arrow-border-width`]:`${i/2}px`,[`--${l}-tooltip-v2-arrow-cover-width`]:i/2-1,...a||{}}});return(a,i)=>(I(),j("span",{ref_key:"arrowRef",ref:r,style:Nt(b(o)),class:ee(b(n).e("arrow"))},null,6))}});var mpe=vt(s3t,[["__file","arrow.vue"]]);const _8=Math.min,pb=Math.max,aP=Math.round,aO=Math.floor,kh=e=>({x:e,y:e}),l3t={left:"right",right:"left",bottom:"top",top:"bottom"},u3t={start:"end",end:"start"};function mX(e,t,n){return pb(e,_8(t,n))}function ST(e,t){return typeof e=="function"?e(t):e}function qb(e){return e.split("-")[0]}function DT(e){return e.split("-")[1]}function $Ee(e){return e==="x"?"y":"x"}function uoe(e){return e==="y"?"height":"width"}function Jv(e){return["top","bottom"].includes(qb(e))?"y":"x"}function coe(e){return $Ee(Jv(e))}function c3t(e,t,n){n===void 0&&(n=!1);const r=DT(e),o=coe(e),a=uoe(o);let i=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[a]>t.floating[a]&&(i=iP(i)),[i,iP(i)]}function d3t(e){const t=iP(e);return[yX(e),t,yX(t)]}function yX(e){return e.replace(/start|end/g,t=>u3t[t])}function f3t(e,t,n){const r=["left","right"],o=["right","left"],a=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?a:i;default:return[]}}function h3t(e,t,n,r){const o=DT(e);let a=f3t(qb(e),n==="start",r);return o&&(a=a.map(i=>i+"-"+o),t&&(a=a.concat(a.map(yX)))),a}function iP(e){return e.replace(/left|right|bottom|top/g,t=>l3t[t])}function p3t(e){return{top:0,right:0,bottom:0,left:0,...e}}function BEe(e){return typeof e!="number"?p3t(e):{top:e,right:e,bottom:e,left:e}}function sP(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function ype(e,t,n){let{reference:r,floating:o}=e;const a=Jv(t),i=coe(t),s=uoe(i),l=qb(t),u=a==="y",c=r.x+r.width/2-o.width/2,d=r.y+r.height/2-o.height/2,f=r[s]/2-o[s]/2;let h;switch(l){case"top":h={x:c,y:r.y-o.height};break;case"bottom":h={x:c,y:r.y+r.height};break;case"right":h={x:r.x+r.width,y:d};break;case"left":h={x:r.x-o.width,y:d};break;default:h={x:r.x,y:r.y}}switch(DT(t)){case"start":h[i]-=f*(n&&u?-1:1);break;case"end":h[i]+=f*(n&&u?-1:1);break}return h}const g3t=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:i}=n,s=a.filter(Boolean),l=await(i.isRTL==null?void 0:i.isRTL(t));let u=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:c,y:d}=ype(u,r,l),f=r,h={},g=0;for(let p=0;p({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:i,elements:s,middlewareData:l}=t,{element:u,padding:c=0}=ST(e,t)||{};if(u==null)return{};const d=BEe(c),f={x:n,y:r},h=coe(o),g=uoe(h),p=await i.getDimensions(u),m=h==="y",v=m?"top":"left",y=m?"bottom":"right",_=m?"clientHeight":"clientWidth",C=a.reference[g]+a.reference[h]-f[h]-a.floating[g],S=f[h]-a.reference[h],E=await(i.getOffsetParent==null?void 0:i.getOffsetParent(u));let k=E?E[_]:0;(!k||!await(i.isElement==null?void 0:i.isElement(E)))&&(k=s.floating[_]||a.floating[g]);const O=C/2-S/2,T=k/2-p[g]/2-1,P=_8(d[v],T),U=_8(d[y],T),F=P,H=k-p[g]-U,R=k/2-p[g]/2+O,z=mX(F,R,H),M=!l.arrow&&DT(o)!=null&&R!==z&&a.reference[g]/2-(RR<=0)){var U,F;const R=(((U=a.flip)==null?void 0:U.index)||0)+1,z=k[R];if(z&&(!(d==="alignment"?y!==Jv(z):!1)||P.every(L=>L.overflows[0]>0&&Jv(L.placement)===y)))return{data:{index:R,overflows:P},reset:{placement:z}};let M=(F=P.filter(N=>N.overflows[0]<=0).sort((N,L)=>N.overflows[1]-L.overflows[1])[0])==null?void 0:F.placement;if(!M)switch(h){case"bestFit":{var H;const N=(H=P.filter(L=>{if(E){const V=Jv(L.placement);return V===y||V==="y"}return!0}).map(L=>[L.placement,L.overflows.filter(V=>V>0).reduce((V,Y)=>V+Y,0)]).sort((L,V)=>L[1]-V[1])[0])==null?void 0:H[0];N&&(M=N);break}case"initialPlacement":M=s;break}if(o!==M)return{reset:{placement:M}}}return{}}}};async function y3t(e,t){const{placement:n,platform:r,elements:o}=e,a=await(r.isRTL==null?void 0:r.isRTL(o.floating)),i=qb(n),s=DT(n),l=Jv(n)==="y",u=["left","top"].includes(i)?-1:1,c=a&&l?-1:1,d=ST(t,e);let{mainAxis:f,crossAxis:h,alignmentAxis:g}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof g=="number"&&(h=s==="end"?g*-1:g),l?{x:h*c,y:f*u}:{x:f*u,y:h*c}}const b3t=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:a,placement:i,middlewareData:s}=t,l=await y3t(t,e);return i===((n=s.offset)==null?void 0:n.placement)&&(r=s.arrow)!=null&&r.alignmentOffset?{}:{x:o+l.x,y:a+l.y,data:{...l,placement:i}}}}},_3t=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:i=!1,limiter:s={fn:m=>{let{x:v,y}=m;return{x:v,y}}},...l}=ST(e,t),u={x:n,y:r},c=await doe(t,l),d=Jv(qb(o)),f=$Ee(d);let h=u[f],g=u[d];if(a){const m=f==="y"?"top":"left",v=f==="y"?"bottom":"right",y=h+c[m],_=h-c[v];h=mX(y,h,_)}if(i){const m=d==="y"?"top":"left",v=d==="y"?"bottom":"right",y=g+c[m],_=g-c[v];g=mX(y,g,_)}const p=s.fn({...t,[f]:h,[d]:g});return{...p,data:{x:p.x-n,y:p.y-r,enabled:{[f]:a,[d]:i}}}}}};function QL(){return typeof window<"u"}function CC(e){return REe(e)?(e.nodeName||"").toLowerCase():"#document"}function Ju(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Jh(e){var t;return(t=(REe(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function REe(e){return QL()?e instanceof Node||e instanceof Ju(e).Node:!1}function cf(e){return QL()?e instanceof Element||e instanceof Ju(e).Element:!1}function Nh(e){return QL()?e instanceof HTMLElement||e instanceof Ju(e).HTMLElement:!1}function bpe(e){return!QL()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Ju(e).ShadowRoot}function ET(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=df(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function w3t(e){return["table","td","th"].includes(CC(e))}function eU(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch{return!1}})}function foe(e){const t=hoe(),n=cf(e)?df(e):e;return["transform","translate","scale","rotate","perspective"].some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function C3t(e){let t=Nm(e);for(;Nh(t)&&!w8(t);){if(foe(t))return t;if(eU(t))return null;t=Nm(t)}return null}function hoe(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function w8(e){return["html","body","#document"].includes(CC(e))}function df(e){return Ju(e).getComputedStyle(e)}function tU(e){return cf(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Nm(e){if(CC(e)==="html")return e;const t=e.assignedSlot||e.parentNode||bpe(e)&&e.host||Jh(e);return bpe(t)?t.host:t}function NEe(e){const t=Nm(e);return w8(t)?e.ownerDocument?e.ownerDocument.body:e.body:Nh(t)&&ET(t)?t:NEe(t)}function JD(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=NEe(e),a=o===((r=e.ownerDocument)==null?void 0:r.body),i=Ju(o);if(a){const s=bX(i);return t.concat(i,i.visualViewport||[],ET(o)?o:[],s&&n?JD(s):[])}return t.concat(o,JD(o,[],n))}function bX(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function LEe(e){const t=df(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Nh(e),a=o?e.offsetWidth:n,i=o?e.offsetHeight:r,s=aP(n)!==a||aP(r)!==i;return s&&(n=a,r=i),{width:n,height:r,$:s}}function poe(e){return cf(e)?e:e.contextElement}function I3(e){const t=poe(e);if(!Nh(t))return kh(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:a}=LEe(t);let i=(a?aP(n.width):n.width)/r,s=(a?aP(n.height):n.height)/o;return(!i||!Number.isFinite(i))&&(i=1),(!s||!Number.isFinite(s))&&(s=1),{x:i,y:s}}const x3t=kh(0);function UEe(e){const t=Ju(e);return!hoe()||!t.visualViewport?x3t:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function S3t(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Ju(e)?!1:t}function Kb(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),a=poe(e);let i=kh(1);t&&(r?cf(r)&&(i=I3(r)):i=I3(e));const s=S3t(a,n,r)?UEe(a):kh(0);let l=(o.left+s.x)/i.x,u=(o.top+s.y)/i.y,c=o.width/i.x,d=o.height/i.y;if(a){const f=Ju(a),h=r&&cf(r)?Ju(r):r;let g=f,p=bX(g);for(;p&&r&&h!==g;){const m=I3(p),v=p.getBoundingClientRect(),y=df(p),_=v.left+(p.clientLeft+parseFloat(y.paddingLeft))*m.x,C=v.top+(p.clientTop+parseFloat(y.paddingTop))*m.y;l*=m.x,u*=m.y,c*=m.x,d*=m.y,l+=_,u+=C,g=Ju(p),p=bX(g)}}return sP({width:c,height:d,x:l,y:u})}function goe(e,t){const n=tU(e).scrollLeft;return t?t.left+n:Kb(Jh(e)).left+n}function VEe(e,t,n){n===void 0&&(n=!1);const r=e.getBoundingClientRect(),o=r.left+t.scrollLeft-(n?0:goe(e,r)),a=r.top+t.scrollTop;return{x:o,y:a}}function D3t(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const a=o==="fixed",i=Jh(r),s=t?eU(t.floating):!1;if(r===i||s&&a)return n;let l={scrollLeft:0,scrollTop:0},u=kh(1);const c=kh(0),d=Nh(r);if((d||!d&&!a)&&((CC(r)!=="body"||ET(i))&&(l=tU(r)),Nh(r))){const h=Kb(r);u=I3(r),c.x=h.x+r.clientLeft,c.y=h.y+r.clientTop}const f=i&&!d&&!a?VEe(i,l,!0):kh(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+c.x+f.x,y:n.y*u.y-l.scrollTop*u.y+c.y+f.y}}function E3t(e){return Array.from(e.getClientRects())}function k3t(e){const t=Jh(e),n=tU(e),r=e.ownerDocument.body,o=pb(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=pb(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-n.scrollLeft+goe(e);const s=-n.scrollTop;return df(r).direction==="rtl"&&(i+=pb(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:i,y:s}}function A3t(e,t){const n=Ju(e),r=Jh(e),o=n.visualViewport;let a=r.clientWidth,i=r.clientHeight,s=0,l=0;if(o){a=o.width,i=o.height;const u=hoe();(!u||u&&t==="fixed")&&(s=o.offsetLeft,l=o.offsetTop)}return{width:a,height:i,x:s,y:l}}function T3t(e,t){const n=Kb(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=Nh(e)?I3(e):kh(1),i=e.clientWidth*a.x,s=e.clientHeight*a.y,l=o*a.x,u=r*a.y;return{width:i,height:s,x:l,y:u}}function _pe(e,t,n){let r;if(t==="viewport")r=A3t(e,n);else if(t==="document")r=k3t(Jh(e));else if(cf(t))r=T3t(t,n);else{const o=UEe(e);r={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return sP(r)}function zEe(e,t){const n=Nm(e);return n===t||!cf(n)||w8(n)?!1:df(n).position==="fixed"||zEe(n,t)}function O3t(e,t){const n=t.get(e);if(n)return n;let r=JD(e,[],!1).filter(s=>cf(s)&&CC(s)!=="body"),o=null;const a=df(e).position==="fixed";let i=a?Nm(e):e;for(;cf(i)&&!w8(i);){const s=df(i),l=foe(i);!l&&s.position==="fixed"&&(o=null),(a?!l&&!o:!l&&s.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||ET(i)&&!l&&zEe(e,i))?r=r.filter(c=>c!==i):o=s,i=Nm(i)}return t.set(e,r),r}function F3t(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const i=[...n==="clippingAncestors"?eU(t)?[]:O3t(t,this._c):[].concat(n),r],s=i[0],l=i.reduce((u,c)=>{const d=_pe(t,c,o);return u.top=pb(d.top,u.top),u.right=_8(d.right,u.right),u.bottom=_8(d.bottom,u.bottom),u.left=pb(d.left,u.left),u},_pe(t,s,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function I3t(e){const{width:t,height:n}=LEe(e);return{width:t,height:n}}function M3t(e,t,n){const r=Nh(t),o=Jh(t),a=n==="fixed",i=Kb(e,!0,a,t);let s={scrollLeft:0,scrollTop:0};const l=kh(0);function u(){l.x=goe(o)}if(r||!r&&!a)if((CC(t)!=="body"||ET(o))&&(s=tU(t)),r){const h=Kb(t,!0,a,t);l.x=h.x+t.clientLeft,l.y=h.y+t.clientTop}else o&&u();a&&!r&&o&&u();const c=o&&!r&&!a?VEe(o,s):kh(0),d=i.left+s.scrollLeft-l.x-c.x,f=i.top+s.scrollTop-l.y-c.y;return{x:d,y:f,width:i.width,height:i.height}}function fj(e){return df(e).position==="static"}function wpe(e,t){if(!Nh(e)||df(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return Jh(e)===n&&(n=n.ownerDocument.body),n}function jEe(e,t){const n=Ju(e);if(eU(e))return n;if(!Nh(e)){let o=Nm(e);for(;o&&!w8(o);){if(cf(o)&&!fj(o))return o;o=Nm(o)}return n}let r=wpe(e,t);for(;r&&w3t(r)&&fj(r);)r=wpe(r,t);return r&&w8(r)&&fj(r)&&!foe(r)?n:r||C3t(e)||n}const P3t=async function(e){const t=this.getOffsetParent||jEe,n=this.getDimensions,r=await n(e.floating);return{reference:M3t(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function $3t(e){return df(e).direction==="rtl"}const B3t={convertOffsetParentRelativeRectToViewportRelativeRect:D3t,getDocumentElement:Jh,getClippingRect:F3t,getOffsetParent:jEe,getElementRects:P3t,getClientRects:E3t,getDimensions:I3t,getScale:I3,isElement:cf,isRTL:$3t};function HEe(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function R3t(e,t){let n=null,r;const o=Jh(e);function a(){var s;clearTimeout(r),(s=n)==null||s.disconnect(),n=null}function i(s,l){s===void 0&&(s=!1),l===void 0&&(l=1),a();const u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:h}=u;if(s||t(),!f||!h)return;const g=aO(d),p=aO(o.clientWidth-(c+f)),m=aO(o.clientHeight-(d+h)),v=aO(c),_={rootMargin:-g+"px "+-p+"px "+-m+"px "+-v+"px",threshold:pb(0,_8(1,l))||1};let C=!0;function S(E){const k=E[0].intersectionRatio;if(k!==l){if(!C)return i();k?i(!1,k):r=setTimeout(()=>{i(!1,1e-7)},1e3)}k===1&&!HEe(u,e.getBoundingClientRect())&&i(),C=!1}try{n=new IntersectionObserver(S,{..._,root:o.ownerDocument})}catch{n=new IntersectionObserver(S,_)}n.observe(e)}return i(!0),a}function N3t(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:l=!1}=r,u=poe(e),c=o||a?[...u?JD(u):[],...JD(t)]:[];c.forEach(v=>{o&&v.addEventListener("scroll",n,{passive:!0}),a&&v.addEventListener("resize",n)});const d=u&&s?R3t(u,n):null;let f=-1,h=null;i&&(h=new ResizeObserver(v=>{let[y]=v;y&&y.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var _;(_=h)==null||_.observe(t)})),n()}),u&&!l&&h.observe(u),h.observe(t));let g,p=l?Kb(e):null;l&&m();function m(){const v=Kb(e);p&&!HEe(p,v)&&n(),p=v,g=requestAnimationFrame(m)}return n(),()=>{var v;c.forEach(y=>{o&&y.removeEventListener("scroll",n),a&&y.removeEventListener("resize",n)}),d==null||d(),(v=h)==null||v.disconnect(),h=null,l&&cancelAnimationFrame(g)}}const L3t=doe,WEe=b3t,U3t=_3t,V3t=m3t,qEe=v3t,KEe=(e,t,n)=>{const r=new Map,o={platform:B3t,...n},a={...o.platform,_c:r};return g3t(e,t,{...o,platform:a})},z3t=ht({style:{type:$e([String,Object,Array]),default:()=>({})}}),j3t=ne({name:"ElVisuallyHidden"}),H3t=ne({...j3t,props:z3t,setup(e){const t=e,n=K(()=>[t.style,{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}]);return(r,o)=>(I(),j("span",Dn(r.$attrs,{style:b(n)}),[Ne(r.$slots,"default")],16))}});var W3t=vt(H3t,[["__file","visual-hidden.vue"]]);ht({});const q3t=e=>{if(!Nn)return;if(!e)return e;const t=ji(e);return t||(kr(e)?t:e)},K3t=({middleware:e,placement:t,strategy:n})=>{const r=X(),o=X(),a=X(),i=X(),s=X({}),l={x:a,y:i,placement:t,strategy:n,middlewareData:s},u=async()=>{if(!Nn)return;const c=q3t(r),d=ji(o);if(!c||!d)return;const f=await KEe(c,d,{placement:b(t),strategy:b(n),middleware:b(e)});c8(l).forEach(h=>{l[h].value=f[h]})};return Kt(()=>{Wi(()=>{u()})}),{...l,update:u,referenceRef:r,contentRef:o}},G3t=({arrowRef:e,padding:t})=>({name:"arrow",options:{element:e,padding:t},fn(n){const r=b(e);return r?qEe({element:r,padding:t}).fn(n):{}}}),Y3t=ne({name:"ElTooltipV2Content"}),X3t=ne({...Y3t,props:{...ioe,...IEe},setup(e){const t=e,{triggerRef:n,contentId:r}=kt(ZL),o=X(t.placement),a=X(t.strategy),i=X(null),{referenceRef:s,contentRef:l,middlewareData:u,x:c,y:d,update:f}=K3t({placement:o,strategy:a,middleware:K(()=>{const _=[WEe(t.offset)];return t.showArrow&&_.push(G3t({arrowRef:i})),_})}),h=gC().nextZIndex(),g=nt("tooltip-v2"),p=K(()=>o.value.split("-")[0]),m=K(()=>({position:b(a),top:`${b(d)||0}px`,left:`${b(c)||0}px`,zIndex:h})),v=K(()=>{if(!t.showArrow)return{};const{arrow:_}=b(u);return{[`--${g.namespace.value}-tooltip-v2-arrow-x`]:`${_==null?void 0:_.x}px`||"",[`--${g.namespace.value}-tooltip-v2-arrow-y`]:`${_==null?void 0:_.y}px`||""}}),y=K(()=>[g.e("content"),g.is("dark",t.effect==="dark"),g.is(b(a)),t.contentClass]);return Ze(i,()=>f()),Ze(()=>t.placement,_=>o.value=_),Kt(()=>{Ze(()=>t.reference||n.value,_=>{s.value=_||void 0},{immediate:!0})}),Fn(PEe,{arrowRef:i}),(_,C)=>(I(),j("div",{ref_key:"contentRef",ref:l,style:Nt(b(m)),"data-tooltip-v2-root":""},[_.nowrap?be("v-if",!0):(I(),j("div",{key:0,"data-side":b(p),class:ee(b(y))},[Ne(_.$slots,"default",{contentStyle:b(m),contentClass:b(y)}),D(b(W3t),{id:b(r),role:"tooltip"},{default:A(()=>[_.ariaLabel?(I(),j(tt,{key:0},[ce(se(_.ariaLabel),1)],64)):Ne(_.$slots,"default",{key:1})]),_:3},8,["id"]),Ne(_.$slots,"arrow",{style:Nt(b(v)),side:b(p)})],10,["data-side"]))],4))}});var Cpe=vt(X3t,[["__file","content.vue"]]);const J3t=ht({setRef:{type:$e(Function),required:!0},onlyChild:Boolean});var Z3t=ne({props:J3t,setup(e,{slots:t}){const n=X(),r=KL(n,o=>{o?e.setRef(o.nextElementSibling):e.setRef(null)});return()=>{var o;const[a]=((o=t.default)==null?void 0:o.call(t))||[],i=e.onlyChild?Hdt(a.children):a.children;return D(tt,{ref:r},[i])}}});const Q3t=ne({name:"ElTooltipV2Trigger"}),ewt=ne({...Q3t,props:{...IEe,...loe},setup(e){const t=e,{onClose:n,onOpen:r,onDelayOpen:o,triggerRef:a,contentId:i}=kt(ZL);let s=!1;const l=y=>{a.value=y},u=()=>{s=!1},c=Uo(t.onMouseEnter,o),d=Uo(t.onMouseLeave,n),f=Uo(t.onMouseDown,()=>{n(),s=!0,document.addEventListener("mouseup",u,{once:!0})}),h=Uo(t.onFocus,()=>{s||r()}),g=Uo(t.onBlur,n),p=Uo(t.onClick,y=>{y.detail===0&&n()}),m={blur:g,click:p,focus:h,mousedown:f,mouseenter:c,mouseleave:d},v=(y,_,C)=>{y&&Object.entries(_).forEach(([S,E])=>{y[C](S,E)})};return Ze(a,(y,_)=>{v(y,m,"addEventListener"),v(_,m,"removeEventListener"),y&&y.setAttribute("aria-describedby",i.value)}),Ar(()=>{v(a.value,m,"removeEventListener"),document.removeEventListener("mouseup",u)}),(y,_)=>y.nowrap?(I(),Oe(b(Z3t),{key:0,"set-ref":l,"only-child":""},{default:A(()=>[Ne(y.$slots,"default")]),_:3})):(I(),j("button",Dn({key:1,ref_key:"triggerRef",ref:a},y.$attrs),[Ne(y.$slots,"default")],16))}});var twt=vt(ewt,[["__file","trigger.vue"]]);const nwt=ne({name:"ElTooltipV2"}),rwt=ne({...nwt,props:n3t,setup(e){const n=Ra(e),r=Bn(Hd(n,Object.keys(aoe))),o=Bn(Hd(n,Object.keys(ioe))),a=Bn(Hd(n,Object.keys(soe))),i=Bn(Hd(n,Object.keys(loe)));return(s,l)=>(I(),Oe(a3t,Hu(Mh(a)),{default:A(({open:u})=>[D(twt,Dn(i,{nowrap:""}),{default:A(()=>[Ne(s.$slots,"trigger")]),_:3},16),D(b(bC),{to:s.to,disabled:!s.teleported},{default:A(()=>[s.fullTransition?(I(),Oe(xi,Hu(Dn({key:0},s.transitionProps)),{default:A(()=>[s.alwaysOn||u?(I(),Oe(Cpe,Hu(Dn({key:0},o)),{arrow:A(({style:c,side:d})=>[s.showArrow?(I(),Oe(mpe,Dn({key:0},r,{style:c,side:d}),null,16,["style","side"])):be("v-if",!0)]),default:A(()=>[Ne(s.$slots,"default")]),_:3},16)):be("v-if",!0)]),_:2},1040)):(I(),j(tt,{key:1},[s.alwaysOn||u?(I(),Oe(Cpe,Hu(Dn({key:0},o)),{arrow:A(({style:c,side:d})=>[s.showArrow?(I(),Oe(mpe,Dn({key:0},r,{style:c,side:d}),null,16,["style","side"])):be("v-if",!0)]),default:A(()=>[Ne(s.$slots,"default")]),_:3},16)):be("v-if",!0)],64))]),_:2},1032,["to","disabled"])]),_:3},16))}});var owt=vt(rwt,[["__file","tooltip.vue"]]);const awt=dn(owt),GEe="left-check-change",YEe="right-check-change",K4=ht({data:{type:$e(Array),default:()=>[]},titles:{type:$e(Array),default:()=>[]},buttonTexts:{type:$e(Array),default:()=>[]},filterPlaceholder:String,filterMethod:{type:$e(Function)},leftDefaultChecked:{type:$e(Array),default:()=>[]},rightDefaultChecked:{type:$e(Array),default:()=>[]},renderContent:{type:$e(Function)},modelValue:{type:$e(Array),default:()=>[]},format:{type:$e(Object),default:()=>({})},filterable:Boolean,props:{type:$e(Object),default:()=>Eo({label:"label",key:"key",disabled:"disabled"})},targetOrder:{type:String,values:["original","push","unshift"],default:"original"},validateEvent:{type:Boolean,default:!0}}),_X=(e,t)=>[e,t].every(ct)||ct(e)&&ni(t),iwt={[En]:(e,t,n)=>[e,n].every(ct)&&["left","right"].includes(t),[en]:e=>ct(e),[GEe]:_X,[YEe]:_X},wX="checked-change",swt=ht({data:K4.data,optionRender:{type:$e(Function)},placeholder:String,title:String,filterable:Boolean,format:K4.format,filterMethod:K4.filterMethod,defaultChecked:K4.leftDefaultChecked,props:K4.props}),lwt={[wX]:_X},kT=e=>{const t={label:"label",key:"key",disabled:"disabled"};return K(()=>({...t,...e.props}))},uwt=(e,t,n)=>{const r=kT(e),o=K(()=>e.data.filter(c=>Rt(e.filterMethod)?e.filterMethod(t.query,c):String(c[r.value.label]||c[r.value.key]).toLowerCase().includes(t.query.toLowerCase()))),a=K(()=>o.value.filter(c=>!c[r.value.disabled])),i=K(()=>{const c=t.checked.length,d=e.data.length,{noChecked:f,hasChecked:h}=e.format;return f&&h?c>0?h.replace(/\${checked}/g,c.toString()).replace(/\${total}/g,d.toString()):f.replace(/\${total}/g,d.toString()):`${c}/${d}`}),s=K(()=>{const c=t.checked.length;return c>0&&c{const c=a.value.map(d=>d[r.value.key]);t.allChecked=c.length>0&&c.every(d=>t.checked.includes(d))},u=c=>{t.checked=c?a.value.map(d=>d[r.value.key]):[]};return Ze(()=>t.checked,(c,d)=>{if(l(),t.checkChangeByUser){const f=c.concat(d).filter(h=>!c.includes(h)||!d.includes(h));n(wX,c,f)}else n(wX,c),t.checkChangeByUser=!0}),Ze(a,()=>{l()}),Ze(()=>e.data,()=>{const c=[],d=o.value.map(f=>f[r.value.key]);t.checked.forEach(f=>{d.includes(f)&&c.push(f)}),t.checkChangeByUser=!1,t.checked=c}),Ze(()=>e.defaultChecked,(c,d)=>{if(d&&c.length===d.length&&c.every(g=>d.includes(g)))return;const f=[],h=a.value.map(g=>g[r.value.key]);c.forEach(g=>{h.includes(g)&&f.push(g)}),t.checkChangeByUser=!1,t.checked=f},{immediate:!0}),{filteredData:o,checkableData:a,checkedSummary:i,isIndeterminate:s,updateAllChecked:l,handleAllCheckedChange:u}},cwt=ne({name:"ElTransferPanel"}),dwt=ne({...cwt,props:swt,emits:lwt,setup(e,{expose:t,emit:n}){const r=e,o=La(),a=({option:_})=>_,{t:i}=Un(),s=nt("transfer"),l=Bn({checked:[],allChecked:!1,query:"",checkChangeByUser:!0}),u=kT(r),{filteredData:c,checkedSummary:d,isIndeterminate:f,handleAllCheckedChange:h}=uwt(r,l,n),g=K(()=>!Vu(l.query)&&Vu(c.value)),p=K(()=>!Vu(o.default()[0].children)),{checked:m,allChecked:v,query:y}=Ra(l);return t({query:y}),(_,C)=>(I(),j("div",{class:ee(b(s).b("panel"))},[w("p",{class:ee(b(s).be("panel","header"))},[D(b(Xi),{modelValue:b(v),"onUpdate:modelValue":S=>kr(v)?v.value=S:null,indeterminate:b(f),"validate-event":!1,onChange:b(h)},{default:A(()=>[ce(se(_.title)+" ",1),w("span",null,se(b(d)),1)]),_:1},8,["modelValue","onUpdate:modelValue","indeterminate","onChange"])],2),w("div",{class:ee([b(s).be("panel","body"),b(s).is("with-footer",b(p))])},[_.filterable?(I(),Oe(b(fo),{key:0,modelValue:b(y),"onUpdate:modelValue":S=>kr(y)?y.value=S:null,class:ee(b(s).be("panel","filter")),size:"default",placeholder:_.placeholder,"prefix-icon":b(dT),clearable:"","validate-event":!1},null,8,["modelValue","onUpdate:modelValue","class","placeholder","prefix-icon"])):be("v-if",!0),rn(D(b(yre),{modelValue:b(m),"onUpdate:modelValue":S=>kr(m)?m.value=S:null,"validate-event":!1,class:ee([b(s).is("filterable",_.filterable),b(s).be("panel","list")])},{default:A(()=>[(I(!0),j(tt,null,wt(b(c),S=>(I(),Oe(b(Xi),{key:S[b(u).key],class:ee(b(s).be("panel","item")),value:S[b(u).key],disabled:S[b(u).disabled],"validate-event":!1},{default:A(()=>{var E;return[D(a,{option:(E=_.optionRender)==null?void 0:E.call(_,S)},null,8,["option"])]}),_:2},1032,["class","value","disabled"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","class"]),[[Pn,!b(g)&&!b(Vu)(_.data)]]),rn(w("div",{class:ee(b(s).be("panel","empty"))},[Ne(_.$slots,"empty",{},()=>[ce(se(b(g)?b(i)("el.transfer.noMatch"):b(i)("el.transfer.noData")),1)])],2),[[Pn,b(g)||b(Vu)(_.data)]])],2),b(p)?(I(),j("p",{key:0,class:ee(b(s).be("panel","footer"))},[Ne(_.$slots,"default")],2)):be("v-if",!0)],2))}});var xpe=vt(dwt,[["__file","transfer-panel.vue"]]);const fwt=e=>{const t=kT(e),n=K(()=>e.data.reduce((a,i)=>(a[i[t.value.key]]=i)&&a,{})),r=K(()=>e.data.filter(a=>!e.modelValue.includes(a[t.value.key]))),o=K(()=>e.targetOrder==="original"?e.data.filter(a=>e.modelValue.includes(a[t.value.key])):e.modelValue.reduce((a,i)=>{const s=n.value[i];return s&&a.push(s),a},[]));return{sourceData:r,targetData:o}},hwt=(e,t,n)=>{const r=kT(e),o=(s,l,u)=>{n(en,s),n(En,s,l,u)};return{addToLeft:()=>{const s=e.modelValue.slice();t.rightChecked.forEach(l=>{const u=s.indexOf(l);u>-1&&s.splice(u,1)}),o(s,"left",t.rightChecked)},addToRight:()=>{let s=e.modelValue.slice();const l=e.data.filter(u=>{const c=u[r.value.key];return t.leftChecked.includes(c)&&!e.modelValue.includes(c)}).map(u=>u[r.value.key]);s=e.targetOrder==="unshift"?l.concat(s):s.concat(l),e.targetOrder==="original"&&(s=e.data.filter(u=>s.includes(u[r.value.key])).map(u=>u[r.value.key])),o(s,"right",t.leftChecked)}}},pwt=(e,t)=>({onSourceCheckedChange:(o,a)=>{e.leftChecked=o,a&&t(GEe,o,a)},onTargetCheckedChange:(o,a)=>{e.rightChecked=o,a&&t(YEe,o,a)}}),gwt=ne({name:"ElTransfer"}),vwt=ne({...gwt,props:K4,emits:iwt,setup(e,{expose:t,emit:n}){const r=e,o=La(),{t:a}=Un(),i=nt("transfer"),{formItem:s}=ws(),l=Bn({leftChecked:[],rightChecked:[]}),u=kT(r),{sourceData:c,targetData:d}=fwt(r),{onSourceCheckedChange:f,onTargetCheckedChange:h}=pwt(l,n),{addToLeft:g,addToRight:p}=hwt(r,l,n),m=X(),v=X(),y=O=>{switch(O){case"left":m.value.query="";break;case"right":v.value.query="";break}},_=K(()=>r.buttonTexts.length===2),C=K(()=>r.titles[0]||a("el.transfer.titles.0")),S=K(()=>r.titles[1]||a("el.transfer.titles.1")),E=K(()=>r.filterPlaceholder||a("el.transfer.filterPlaceholder"));Ze(()=>r.modelValue,()=>{var O;r.validateEvent&&((O=s==null?void 0:s.validate)==null||O.call(s,"change").catch(T=>void 0))});const k=K(()=>O=>{var T;if(r.renderContent)return r.renderContent(Vt,O);const P=(((T=o.default)==null?void 0:T.call(o,{option:O}))||[]).filter(U=>U.type!==da);return P.length?P:Vt("span",O[u.value.label]||O[u.value.key])});return t({clearQuery:y,leftPanel:m,rightPanel:v}),(O,T)=>(I(),j("div",{class:ee(b(i).b())},[D(xpe,{ref_key:"leftPanel",ref:m,data:b(c),"option-render":b(k),placeholder:b(E),title:b(C),filterable:O.filterable,format:O.format,"filter-method":O.filterMethod,"default-checked":O.leftDefaultChecked,props:r.props,onCheckedChange:b(f)},{empty:A(()=>[Ne(O.$slots,"left-empty")]),default:A(()=>[Ne(O.$slots,"left-footer")]),_:3},8,["data","option-render","placeholder","title","filterable","format","filter-method","default-checked","props","onCheckedChange"]),w("div",{class:ee(b(i).e("buttons"))},[D(b(Br),{type:"primary",class:ee([b(i).e("button"),b(i).is("with-texts",b(_))]),disabled:b(Vu)(l.rightChecked),onClick:b(g)},{default:A(()=>[D(b(Tt),null,{default:A(()=>[D(b(uf))]),_:1}),b(Ln)(O.buttonTexts[0])?be("v-if",!0):(I(),j("span",{key:0},se(O.buttonTexts[0]),1))]),_:1},8,["class","disabled","onClick"]),D(b(Br),{type:"primary",class:ee([b(i).e("button"),b(i).is("with-texts",b(_))]),disabled:b(Vu)(l.leftChecked),onClick:b(p)},{default:A(()=>[b(Ln)(O.buttonTexts[1])?be("v-if",!0):(I(),j("span",{key:0},se(O.buttonTexts[1]),1)),D(b(Tt),null,{default:A(()=>[D(b(_i))]),_:1})]),_:1},8,["class","disabled","onClick"])],2),D(xpe,{ref_key:"rightPanel",ref:v,data:b(d),"option-render":b(k),placeholder:b(E),filterable:O.filterable,format:O.format,"filter-method":O.filterMethod,title:b(S),"default-checked":O.rightDefaultChecked,props:r.props,onCheckedChange:b(h)},{empty:A(()=>[Ne(O.$slots,"right-empty")]),default:A(()=>[Ne(O.$slots,"right-footer")]),_:3},8,["data","option-render","placeholder","filterable","format","filter-method","title","default-checked","props","onCheckedChange"])],2))}});var mwt=vt(vwt,[["__file","transfer.vue"]]);const ywt=dn(mwt),M3="$treeNodeId",Spe=function(e,t){!t||t[M3]||Object.defineProperty(t,M3,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},voe=(e,t)=>t==null?void 0:t[e||M3],CX=(e,t,n)=>{const r=e.value.currentNode;n();const o=e.value.currentNode;r!==o&&t("current-change",o?o.data:null,o)},xX=e=>{let t=!0,n=!0,r=!0;for(let o=0,a=e.length;o0&&t.lazy&&t.defaultExpandAll&&!this.isLeafByUser&&this.expand(),ct(this.data)||Spe(this,this.data),!this.data)return;const r=t.defaultExpandedKeys,o=t.key;o&&r&&r.includes(this.key)&&this.expand(null,t.autoExpandParent),o&&t.currentNodeKey!==void 0&&this.key===t.currentNodeKey&&(t.currentNode=this,t.currentNode.isCurrent=!0),t.lazy&&t._initDefaultCheckedNode(this),this.updateLeafState(),this.parent&&(this.level===1||this.parent.expanded===!0)&&(this.canFocus=!0)}setData(t){ct(t)||Spe(this,t),this.data=t,this.childNodes=[];let n;this.level===0&&ct(this.data)?n=this.data:n=iO(this,"children")||[];for(let r=0,o=n.length;r-1)return t.childNodes[n+1]}return null}get previousSibling(){const t=this.parent;if(t){const n=t.childNodes.indexOf(this);if(n>-1)return n>0?t.childNodes[n-1]:null}return null}contains(t,n=!0){return(this.childNodes||[]).some(r=>r===t||n&&r.contains(t))}remove(){const t=this.parent;t&&t.removeChild(this)}insertChild(t,n,r){if(!t)throw new Error("InsertChild error: child is required.");if(!(t instanceof eI)){if(!r){const o=this.getChildren(!0);o.includes(t.data)||(Ln(n)||n<0?o.push(t.data):o.splice(n,0,t.data))}Object.assign(t,{parent:this,store:this.store}),t=Bn(new eI(t)),t instanceof eI&&t.initialize()}t.level=this.level+1,Ln(n)||n<0?this.childNodes.push(t):this.childNodes.splice(n,0,t),this.updateLeafState()}insertBefore(t,n){let r;n&&(r=this.childNodes.indexOf(n)),this.insertChild(t,r)}insertAfter(t,n){let r;n&&(r=this.childNodes.indexOf(n),r!==-1&&(r+=1)),this.insertChild(t,r)}removeChild(t){const n=this.getChildren()||[],r=n.indexOf(t.data);r>-1&&n.splice(r,1);const o=this.childNodes.indexOf(t);o>-1&&(this.store&&this.store.deregisterNode(t),t.parent=null,this.childNodes.splice(o,1)),this.updateLeafState()}removeChildByData(t){let n=null;for(let r=0;r{if(n){let o=this.parent;for(;o.level>0;)o.expanded=!0,o=o.parent}this.expanded=!0,t&&t(),this.childNodes.forEach(o=>{o.canFocus=!0})};this.shouldLoadData()?this.loadData(o=>{ct(o)&&(this.checked?this.setChecked(!0,!0):this.store.checkStrictly||z5(this),r())}):r()}doCreateChildren(t,n={}){t.forEach(r=>{this.insertChild(Object.assign({data:r},n),void 0,!0)})}collapse(){this.expanded=!1,this.childNodes.forEach(t=>{t.canFocus=!1})}shouldLoadData(){return this.store.lazy===!0&&this.store.load&&!this.loaded}updateLeafState(){if(this.store.lazy===!0&&this.loaded!==!0&&typeof this.isLeafByUser<"u"){this.isLeaf=this.isLeafByUser;return}const t=this.childNodes;if(!this.store.lazy||this.store.lazy===!0&&this.loaded===!0){this.isLeaf=!t||t.length===0;return}this.isLeaf=!1}setChecked(t,n,r,o){if(this.indeterminate=t==="half",this.checked=t===!0,this.store.checkStrictly)return;if(!(this.shouldLoadData()&&!this.store.checkDescendants)){const{all:i,allWithoutDisable:s}=xX(this.childNodes);!this.isLeaf&&!i&&s&&(this.checked=!1,t=!1);const l=()=>{if(n){const u=this.childNodes;for(let f=0,h=u.length;f{l(),z5(this)},{checked:t!==!1});return}else l()}const a=this.parent;!a||a.level===0||r||z5(a)}getChildren(t=!1){if(this.level===0)return this.data;const n=this.data;if(!n)return null;const r=this.store.props;let o="children";return r&&(o=r.children||"children"),Ln(n[o])&&(n[o]=null),t&&!n[o]&&(n[o]=[]),n[o]}updateChildren(){const t=this.getChildren()||[],n=this.childNodes.map(a=>a.data),r={},o=[];t.forEach((a,i)=>{const s=a[M3];!!s&&n.findIndex(u=>u[M3]===s)>=0?r[s]={index:i,data:a}:o.push({index:i,data:a})}),this.store.lazy||n.forEach(a=>{r[a[M3]]||this.removeChildByData(a)}),o.forEach(({index:a,data:i})=>{this.insertChild({data:i},a)}),this.updateLeafState()}loadData(t,n={}){if(this.store.lazy===!0&&this.store.load&&!this.loaded&&(!this.loading||Object.keys(n).length)){this.loading=!0;const r=a=>{this.childNodes=[],this.doCreateChildren(a,n),this.loaded=!0,this.loading=!1,this.updateLeafState(),t&&t.call(this,a)},o=()=>{this.loading=!1};this.store.load(this,r,o)}else t&&t.call(this)}eachNode(t){const n=[this];for(;n.length;){const r=n.shift();n.unshift(...r.childNodes),t(r)}}reInitChecked(){this.store.checkStrictly||z5(this)}};class _wt{constructor(t){this.currentNode=null,this.currentNodeKey=null;for(const n in t)Gn(t,n)&&(this[n]=t[n]);this.nodesMap={}}initialize(){if(this.root=new SX({data:this.data,store:this}),this.root.initialize(),this.lazy&&this.load){const t=this.load;t(this.root,n=>{this.root.doCreateChildren(n),this._initDefaultCheckedNodes()})}else this._initDefaultCheckedNodes()}filter(t){const n=this.filterNodeMethod,r=this.lazy,o=async function(a){const i=a.root?a.root.childNodes:a.childNodes;for(const[s,l]of i.entries())l.visible=n.call(l,t,l.data,l),s%80===0&&s>0&&await It(),await o(l);if(!a.visible&&i.length){let s=!0;s=!i.some(l=>l.visible),a.root?a.root.visible=s===!1:a.visible=s===!1}t&&a.visible&&!a.isLeaf&&(!r||a.loaded)&&a.expand()};o(this)}setData(t){t!==this.root.data?(this.nodesMap={},this.root.setData(t),this._initDefaultCheckedNodes(),this.setCurrentNodeKey(this.currentNodeKey)):this.root.updateChildren()}getNode(t){if(t instanceof SX)return t;const n=vn(t)?voe(this.key,t):t;return this.nodesMap[n]||null}insertBefore(t,n){const r=this.getNode(n);r.parent.insertBefore({data:t},r)}insertAfter(t,n){const r=this.getNode(n);r.parent.insertAfter({data:t},r)}remove(t){const n=this.getNode(t);n&&n.parent&&(n===this.currentNode&&(this.currentNode=null),n.parent.removeChild(n))}append(t,n){const r=ql(n)?this.root:this.getNode(n);r&&r.insertChild({data:t})}_initDefaultCheckedNodes(){const t=this.defaultCheckedKeys||[],n=this.nodesMap;t.forEach(r=>{const o=n[r];o&&o.setChecked(!0,!this.checkStrictly)})}_initDefaultCheckedNode(t){(this.defaultCheckedKeys||[]).includes(t.key)&&t.setChecked(!0,!this.checkStrictly)}setDefaultCheckedKey(t){t!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=t,this._initDefaultCheckedNodes())}registerNode(t){const n=this.key;!t||!t.data||(n?t.key!==void 0&&(this.nodesMap[t.key]=t):this.nodesMap[t.id]=t)}deregisterNode(t){!this.key||!t||!t.data||(t.childNodes.forEach(r=>{this.deregisterNode(r)}),delete this.nodesMap[t.key])}getCheckedNodes(t=!1,n=!1){const r=[],o=function(a){(a.root?a.root.childNodes:a.childNodes).forEach(s=>{(s.checked||n&&s.indeterminate)&&(!t||t&&s.isLeaf)&&r.push(s.data),o(s)})};return o(this),r}getCheckedKeys(t=!1){return this.getCheckedNodes(t).map(n=>(n||{})[this.key])}getHalfCheckedNodes(){const t=[],n=function(r){(r.root?r.root.childNodes:r.childNodes).forEach(a=>{a.indeterminate&&t.push(a.data),n(a)})};return n(this),t}getHalfCheckedKeys(){return this.getHalfCheckedNodes().map(t=>(t||{})[this.key])}_getAllNodes(){const t=[],n=this.nodesMap;for(const r in n)Gn(n,r)&&t.push(n[r]);return t}updateChildren(t,n){const r=this.nodesMap[t];if(!r)return;const o=r.childNodes;for(let a=o.length-1;a>=0;a--){const i=o[a];this.remove(i.data)}for(let a=0,i=n.length;al.level-u.level),a=Object.create(null),i=Object.keys(r);o.forEach(l=>l.setChecked(!1,!1));const s=l=>{l.childNodes.forEach(u=>{var c;a[u.data[t]]=!0,(c=u.childNodes)!=null&&c.length&&s(u)})};for(let l=0,u=o.length;l{m.isLeaf||m.setChecked(!1,!1),h(m)})};h(c)}}}setCheckedNodes(t,n=!1){const r=this.key,o={};t.forEach(a=>{o[(a||{})[r]]=!0}),this._setCheckedKeys(r,n,o)}setCheckedKeys(t,n=!1){this.defaultCheckedKeys=t;const r=this.key,o={};t.forEach(a=>{o[a]=!0}),this._setCheckedKeys(r,n,o)}setDefaultExpandedKeys(t){t=t||[],this.defaultExpandedKeys=t,t.forEach(n=>{const r=this.getNode(n);r&&r.expand(null,this.autoExpandParent)})}setChecked(t,n,r){const o=this.getNode(t);o&&o.setChecked(!!n,r)}getCurrentNode(){return this.currentNode}setCurrentNode(t){const n=this.currentNode;n&&(n.isCurrent=!1),this.currentNode=t,this.currentNode.isCurrent=!0}setUserCurrentNode(t,n=!0){const r=t[this.key],o=this.nodesMap[r];this.setCurrentNode(o),n&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0)}setCurrentNodeKey(t,n=!0){if(this.currentNodeKey=t,ql(t)){this.currentNode&&(this.currentNode.isCurrent=!1),this.currentNode=null;return}const r=this.getNode(t);r&&(this.setCurrentNode(r),n&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0))}}const moe="RootTree",XEe="NodeInstance",Dpe="TreeNodeMap",wwt=ne({name:"ElTreeNodeContent",props:{node:{type:Object,required:!0},renderContent:Function},setup(e){const t=nt("tree"),n=kt(XEe),r=kt(moe);return()=>{const o=e.node,{data:a,store:i}=o;return e.renderContent?e.renderContent(Vt,{_self:n,node:o,data:a,store:i}):Ne(r.ctx.slots,"default",{node:o,data:a},()=>[Vt(ooe,{tag:"span",truncated:!0,class:t.be("node","label")},()=>[o.label])])}}});var Cwt=vt(wwt,[["__file","tree-node-content.vue"]]);function JEe(e){const t=kt(Dpe,null),n={treeNodeExpand:r=>{e.node!==r&&e.node.collapse()},children:[]};return t&&t.children.push(n),Fn(Dpe,n),{broadcastExpanded:r=>{if(e.accordion)for(const o of n.children)o.treeNodeExpand(r)}}}const ZEe=Symbol("dragEvents");function xwt({props:e,ctx:t,el$:n,dropIndicator$:r,store:o}){const a=nt("tree"),i=X({showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0,dropType:null});return Fn(ZEe,{treeNodeDragStart:({event:c,treeNode:d})=>{if(Rt(e.allowDrag)&&!e.allowDrag(d.node))return c.preventDefault(),!1;c.dataTransfer.effectAllowed="move";try{c.dataTransfer.setData("text/plain","")}catch{}i.value.draggingNode=d,t.emit("node-drag-start",d.node,c)},treeNodeDragOver:({event:c,treeNode:d})=>{const f=d,h=i.value.dropNode;h&&h.node.id!==f.node.id&&Hs(h.$el,a.is("drop-inner"));const g=i.value.draggingNode;if(!g||!f)return;let p=!0,m=!0,v=!0,y=!0;Rt(e.allowDrop)&&(p=e.allowDrop(g.node,f.node,"prev"),y=m=e.allowDrop(g.node,f.node,"inner"),v=e.allowDrop(g.node,f.node,"next")),c.dataTransfer.dropEffect=m||p||v?"move":"none",(p||m||v)&&(h==null?void 0:h.node.id)!==f.node.id&&(h&&t.emit("node-drag-leave",g.node,h.node,c),t.emit("node-drag-enter",g.node,f.node,c)),p||m||v?i.value.dropNode=f:i.value.dropNode=null,f.node.nextSibling===g.node&&(v=!1),f.node.previousSibling===g.node&&(p=!1),f.node.contains(g.node,!1)&&(m=!1),(g.node===f.node||g.node.contains(f.node))&&(p=!1,m=!1,v=!1);const _=f.$el.querySelector(`.${a.be("node","content")}`).getBoundingClientRect(),C=n.value.getBoundingClientRect();let S;const E=p?m?.25:v?.45:1:-1,k=v?m?.75:p?.55:0:1;let O=-9999;const T=c.clientY-_.top;T<_.height*E?S="before":T>_.height*k?S="after":m?S="inner":S="none";const P=f.$el.querySelector(`.${a.be("node","expand-icon")}`).getBoundingClientRect(),U=r.value;S==="before"?O=P.top-C.top:S==="after"&&(O=P.bottom-C.top),U.style.top=`${O}px`,U.style.left=`${P.right-C.left}px`,S==="inner"?Yc(f.$el,a.is("drop-inner")):Hs(f.$el,a.is("drop-inner")),i.value.showDropIndicator=S==="before"||S==="after",i.value.allowDrop=i.value.showDropIndicator||y,i.value.dropType=S,t.emit("node-drag-over",g.node,f.node,c)},treeNodeDragEnd:c=>{const{draggingNode:d,dropType:f,dropNode:h}=i.value;if(c.preventDefault(),c.dataTransfer&&(c.dataTransfer.dropEffect="move"),d&&h){const g={data:d.node.data};f!=="none"&&d.node.remove(),f==="before"?h.node.parent.insertBefore(g,h.node):f==="after"?h.node.parent.insertAfter(g,h.node):f==="inner"&&h.node.insertChild(g),f!=="none"&&(o.value.registerNode(g),o.value.key&&d.node.eachNode(p=>{var m;(m=o.value.nodesMap[p.data[o.value.key]])==null||m.setChecked(p.checked,!o.value.checkStrictly)})),Hs(h.$el,a.is("drop-inner")),t.emit("node-drag-end",d.node,h.node,f,c),f!=="none"&&t.emit("node-drop",d.node,h.node,f,c)}d&&!h&&t.emit("node-drag-end",d.node,null,f,c),i.value.showDropIndicator=!1,i.value.draggingNode=null,i.value.dropNode=null,i.value.allowDrop=!0}}),{dragState:i}}const Swt=ne({name:"ElTreeNode",components:{ElCollapseTransition:zL,ElCheckbox:Xi,NodeContent:Cwt,ElIcon:Tt,Loading:Kl},props:{node:{type:SX,default:()=>({})},props:{type:Object,default:()=>({})},accordion:Boolean,renderContent:Function,renderAfterExpand:Boolean,showCheckbox:{type:Boolean,default:!1}},emits:["node-expand"],setup(e,t){const n=nt("tree"),{broadcastExpanded:r}=JEe(e),o=kt(moe),a=X(!1),i=X(!1),s=X(),l=X(),u=X(),c=kt(ZEe),d=bn();Fn(XEe,d),e.node.expanded&&(a.value=!0,i.value=!0);const f=o.props.props.children||"children";Ze(()=>{var T;const P=(T=e.node.data)==null?void 0:T[f];return P&&[...P]},()=>{e.node.updateChildren()}),Ze(()=>e.node.indeterminate,T=>{p(e.node.checked,T)}),Ze(()=>e.node.checked,T=>{p(T,e.node.indeterminate)}),Ze(()=>e.node.childNodes.length,()=>e.node.reInitChecked()),Ze(()=>e.node.expanded,T=>{It(()=>a.value=T),T&&(i.value=!0)});const h=T=>voe(o.props.nodeKey,T.data),g=T=>{const P=e.props.class;if(!P)return{};let U;if(Rt(P)){const{data:F}=T;U=P(F,T)}else U=P;return $t(U)?{[U]:!0}:U},p=(T,P)=>{(s.value!==T||l.value!==P)&&o.ctx.emit("check-change",e.node.data,T,P),s.value=T,l.value=P},m=T=>{CX(o.store,o.ctx.emit,()=>{var P;if((P=o==null?void 0:o.props)==null?void 0:P.nodeKey){const F=h(e.node);o.store.value.setCurrentNodeKey(F)}else o.store.value.setCurrentNode(e.node)}),o.currentNode.value=e.node,o.props.expandOnClickNode&&y(),(o.props.checkOnClickNode||e.node.isLeaf&&o.props.checkOnClickLeaf&&e.showCheckbox)&&!e.node.disabled&&_(!e.node.checked),o.ctx.emit("node-click",e.node.data,e.node,d,T)},v=T=>{var P;(P=o.instance.vnode.props)!=null&&P.onNodeContextmenu&&(T.stopPropagation(),T.preventDefault()),o.ctx.emit("node-contextmenu",T,e.node.data,e.node,d)},y=()=>{e.node.isLeaf||(a.value?(o.ctx.emit("node-collapse",e.node.data,e.node,d),e.node.collapse()):e.node.expand(()=>{t.emit("node-expand",e.node.data,e.node,d)}))},_=T=>{e.node.setChecked(T,!(o!=null&&o.props.checkStrictly)),It(()=>{const P=o.store.value;o.ctx.emit("check",e.node.data,{checkedNodes:P.getCheckedNodes(),checkedKeys:P.getCheckedKeys(),halfCheckedNodes:P.getHalfCheckedNodes(),halfCheckedKeys:P.getHalfCheckedKeys()})})};return{ns:n,node$:u,tree:o,expanded:a,childNodeRendered:i,oldChecked:s,oldIndeterminate:l,getNodeKey:h,getNodeClass:g,handleSelectChange:p,handleClick:m,handleContextMenu:v,handleExpandIconClick:y,handleCheckChange:_,handleChildNodeExpand:(T,P,U)=>{r(P),o.ctx.emit("node-expand",T,P,U)},handleDragStart:T=>{o.props.draggable&&c.treeNodeDragStart({event:T,treeNode:e})},handleDragOver:T=>{T.preventDefault(),o.props.draggable&&c.treeNodeDragOver({event:T,treeNode:{$el:u.value,node:e.node}})},handleDrop:T=>{T.preventDefault()},handleDragEnd:T=>{o.props.draggable&&c.treeNodeDragEnd(T)},CaretRight:qne}}});function Dwt(e,t,n,r,o,a){const i=yn("el-icon"),s=yn("el-checkbox"),l=yn("loading"),u=yn("node-content"),c=yn("el-tree-node"),d=yn("el-collapse-transition");return rn((I(),j("div",{ref:"node$",class:ee([e.ns.b("node"),e.ns.is("expanded",e.expanded),e.ns.is("current",e.node.isCurrent),e.ns.is("hidden",!e.node.visible),e.ns.is("focusable",!e.node.disabled),e.ns.is("checked",!e.node.disabled&&e.node.checked),e.getNodeClass(e.node)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.node.disabled,"aria-checked":e.node.checked,draggable:e.tree.props.draggable,"data-key":e.getNodeKey(e.node),onClick:zt(e.handleClick,["stop"]),onContextmenu:e.handleContextMenu,onDragstart:zt(e.handleDragStart,["stop"]),onDragover:zt(e.handleDragOver,["stop"]),onDragend:zt(e.handleDragEnd,["stop"]),onDrop:zt(e.handleDrop,["stop"])},[w("div",{class:ee(e.ns.be("node","content")),style:Nt({paddingLeft:(e.node.level-1)*e.tree.props.indent+"px"})},[e.tree.props.icon||e.CaretRight?(I(),Oe(i,{key:0,class:ee([e.ns.be("node","expand-icon"),e.ns.is("leaf",e.node.isLeaf),{expanded:!e.node.isLeaf&&e.expanded}]),onClick:zt(e.handleExpandIconClick,["stop"])},{default:A(()=>[(I(),Oe(_n(e.tree.props.icon||e.CaretRight)))]),_:1},8,["class","onClick"])):be("v-if",!0),e.showCheckbox?(I(),Oe(s,{key:1,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:!!e.node.disabled,onClick:zt(()=>{},["stop"]),onChange:e.handleCheckChange},null,8,["model-value","indeterminate","disabled","onClick","onChange"])):be("v-if",!0),e.node.loading?(I(),Oe(i,{key:2,class:ee([e.ns.be("node","loading-icon"),e.ns.is("loading")])},{default:A(()=>[D(l)]),_:1},8,["class"])):be("v-if",!0),D(u,{node:e.node,"render-content":e.renderContent},null,8,["node","render-content"])],6),D(d,null,{default:A(()=>[!e.renderAfterExpand||e.childNodeRendered?rn((I(),j("div",{key:0,class:ee(e.ns.be("node","children")),role:"group","aria-expanded":e.expanded,onClick:zt(()=>{},["stop"])},[(I(!0),j(tt,null,wt(e.node.childNodes,f=>(I(),Oe(c,{key:e.getNodeKey(f),"render-content":e.renderContent,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,node:f,accordion:e.accordion,props:e.props,onNodeExpand:e.handleChildNodeExpand},null,8,["render-content","render-after-expand","show-checkbox","node","accordion","props","onNodeExpand"]))),128))],10,["aria-expanded","onClick"])),[[Pn,e.expanded]]):be("v-if",!0)]),_:1})],42,["aria-expanded","aria-disabled","aria-checked","draggable","data-key","onClick","onContextmenu","onDragstart","onDragover","onDragend","onDrop"])),[[Pn,e.node.visible]])}var Ewt=vt(Swt,[["render",Dwt],["__file","tree-node.vue"]]);function kwt({el$:e},t){const n=nt("tree");Kt(()=>{o()}),gf(()=>{Array.from(e.value.querySelectorAll("input[type=checkbox]")).forEach(i=>{i.setAttribute("tabindex","-1")})}),xr(e,"keydown",a=>{const i=a.target;if(!i.className.includes(n.b("node")))return;const s=a.code,l=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`)),u=l.indexOf(i);let c;if([St.up,St.down].includes(s)){if(a.preventDefault(),s===St.up){c=u===-1?0:u!==0?u-1:l.length-1;const f=c;for(;!t.value.getNode(l[c].dataset.key).canFocus;){if(c--,c===f){c=-1;break}c<0&&(c=l.length-1)}}else{c=u===-1?0:u=l.length&&(c=0)}}c!==-1&&l[c].focus()}[St.left,St.right].includes(s)&&(a.preventDefault(),i.click());const d=i.querySelector('[type="checkbox"]');[St.enter,St.numpadEnter,St.space].includes(s)&&d&&(a.preventDefault(),d.click())});const o=()=>{var a;const i=Array.from(e.value.querySelectorAll(`.${n.is("focusable")}[role=treeitem]`));Array.from(e.value.querySelectorAll("input[type=checkbox]")).forEach(u=>{u.setAttribute("tabindex","-1")});const l=e.value.querySelectorAll(`.${n.is("checked")}[role=treeitem]`);if(l.length){l[0].setAttribute("tabindex","0");return}(a=i[0])==null||a.setAttribute("tabindex","0")}}const Awt=ne({name:"ElTree",components:{ElTreeNode:Ewt},props:{data:{type:Array,default:()=>[]},emptyText:{type:String},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkOnClickLeaf:{type:Boolean,default:!0},checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{type:Object,default:()=>({children:"children",label:"label",disabled:"disabled"})},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},icon:{type:mr}},emits:["check-change","current-change","node-click","node-contextmenu","node-collapse","node-expand","check","node-drag-start","node-drag-end","node-drop","node-drag-leave","node-drag-enter","node-drag-over"],setup(e,t){const{t:n}=Un(),r=nt("tree"),o=kt(wC,null),a=X(new _wt({key:e.nodeKey,data:e.data,lazy:e.lazy,props:e.props,load:e.load,currentNodeKey:e.currentNodeKey,checkStrictly:e.checkStrictly,checkDescendants:e.checkDescendants,defaultCheckedKeys:e.defaultCheckedKeys,defaultExpandedKeys:e.defaultExpandedKeys,autoExpandParent:e.autoExpandParent,defaultExpandAll:e.defaultExpandAll,filterNodeMethod:e.filterNodeMethod}));a.value.initialize();const i=X(a.value.root),s=X(null),l=X(null),u=X(null),{broadcastExpanded:c}=JEe(e),{dragState:d}=xwt({props:e,ctx:t,el$:l,dropIndicator$:u,store:a});kwt({el$:l},a);const f=K(()=>{const{childNodes:L}=i.value,V=o?o.hasFilteredOptions!==0:!1;return(!L||L.length===0||L.every(({visible:Y})=>!Y))&&!V});Ze(()=>e.currentNodeKey,L=>{a.value.setCurrentNodeKey(L)}),Ze(()=>e.defaultCheckedKeys,L=>{a.value.setDefaultCheckedKey(L)}),Ze(()=>e.defaultExpandedKeys,L=>{a.value.setDefaultExpandedKeys(L)}),Ze(()=>e.data,L=>{a.value.setData(L)},{deep:!0}),Ze(()=>e.checkStrictly,L=>{a.value.checkStrictly=L});const h=L=>{if(!e.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");a.value.filter(L)},g=L=>voe(e.nodeKey,L.data),p=L=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");const V=a.value.getNode(L);if(!V)return[];const Y=[V.data];let $=V.parent;for(;$&&$!==i.value;)Y.push($.data),$=$.parent;return Y.reverse()},m=(L,V)=>a.value.getCheckedNodes(L,V),v=L=>a.value.getCheckedKeys(L),y=()=>{const L=a.value.getCurrentNode();return L?L.data:null},_=()=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");const L=y();return L?L[e.nodeKey]:null},C=(L,V)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");a.value.setCheckedNodes(L,V)},S=(L,V)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");a.value.setCheckedKeys(L,V)},E=(L,V,Y)=>{a.value.setChecked(L,V,Y)},k=()=>a.value.getHalfCheckedNodes(),O=()=>a.value.getHalfCheckedKeys(),T=(L,V=!0)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");CX(a,t.emit,()=>{c(L),a.value.setUserCurrentNode(L,V)})},P=(L,V=!0)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");CX(a,t.emit,()=>{c(),a.value.setCurrentNodeKey(L,V)})},U=L=>a.value.getNode(L),F=L=>{a.value.remove(L)},H=(L,V)=>{a.value.append(L,V)},R=(L,V)=>{a.value.insertBefore(L,V)},z=(L,V)=>{a.value.insertAfter(L,V)},M=(L,V,Y)=>{c(V),t.emit("node-expand",L,V,Y)},N=(L,V)=>{if(!e.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");a.value.updateChildren(L,V)};return Fn(moe,{ctx:t,props:e,store:a,root:i,currentNode:s,instance:bn()}),Fn(Bh,void 0),{ns:r,store:a,root:i,currentNode:s,dragState:d,el$:l,dropIndicator$:u,isEmpty:f,filter:h,getNodeKey:g,getNodePath:p,getCheckedNodes:m,getCheckedKeys:v,getCurrentNode:y,getCurrentKey:_,setCheckedNodes:C,setCheckedKeys:S,setChecked:E,getHalfCheckedNodes:k,getHalfCheckedKeys:O,setCurrentNode:T,setCurrentKey:P,t:n,getNode:U,remove:F,append:H,insertBefore:R,insertAfter:z,handleNodeExpand:M,updateKeyChildren:N}}});function Twt(e,t,n,r,o,a){const i=yn("el-tree-node");return I(),j("div",{ref:"el$",class:ee([e.ns.b(),e.ns.is("dragging",!!e.dragState.draggingNode),e.ns.is("drop-not-allow",!e.dragState.allowDrop),e.ns.is("drop-inner",e.dragState.dropType==="inner"),{[e.ns.m("highlight-current")]:e.highlightCurrent}]),role:"tree"},[(I(!0),j(tt,null,wt(e.root.childNodes,s=>(I(),Oe(i,{key:e.getNodeKey(s),node:s,props:e.props,accordion:e.accordion,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent,onNodeExpand:e.handleNodeExpand},null,8,["node","props","accordion","render-after-expand","show-checkbox","render-content","onNodeExpand"]))),128)),e.isEmpty?(I(),j("div",{key:0,class:ee(e.ns.e("empty-block"))},[Ne(e.$slots,"empty",{},()=>{var s;return[w("span",{class:ee(e.ns.e("empty-text"))},se((s=e.emptyText)!=null?s:e.t("el.tree.emptyText")),3)]})],2)):be("v-if",!0),rn(w("div",{ref:"dropIndicator$",class:ee(e.ns.e("drop-indicator"))},null,2),[[Pn,e.dragState.showDropIndicator]])],2)}var Owt=vt(Awt,[["render",Twt],["__file","tree.vue"]]);const lP=dn(Owt),Fwt=(e,{attrs:t,emit:n},{select:r,tree:o,key:a})=>{const i=nt("tree-select");return Ze(()=>e.data,()=>{e.filterable&&It(()=>{var l,u;(u=o.value)==null||u.filter((l=r.value)==null?void 0:l.states.inputValue)})},{flush:"post"}),{...Hd(Ra(e),Object.keys(ii.props)),...t,class:K(()=>t.class),style:K(()=>t.style),"onUpdate:modelValue":l=>n(en,l),valueKey:a,popperClass:K(()=>{const l=[i.e("popper")];return e.popperClass&&l.push(e.popperClass),l.join(" ")}),filterMethod:(l="")=>{var u;e.filterMethod?e.filterMethod(l):e.remoteMethod?e.remoteMethod(l):(u=o.value)==null||u.filter(l)}}},Iwt=ne({extends:bs,setup(e,t){const n=bs.setup(e,t);delete n.selectOptionClick;const r=bn().proxy;return It(()=>{n.select.states.cachedOptions.get(r.value)||n.select.onOptionCreate(r)}),Ze(()=>t.attrs.visible,o=>{It(()=>{n.states.visible=o})},{immediate:!0}),n},methods:{selectOptionClick(){this.$el.parentElement.click()}}});function DX(e){return e||e===0}function yoe(e){return ct(e)&&e.length}function t4(e){return ct(e)?e:DX(e)?[e]:[]}function tI(e,t,n,r,o){for(let a=0;a{Ze([()=>e.modelValue,a],()=>{e.showCheckbox&&It(()=>{const f=a.value;f&&!mi(f.getCheckedKeys(),t4(e.modelValue))&&f.setCheckedKeys(t4(e.modelValue))})},{immediate:!0,deep:!0});const s=K(()=>({value:i.value,label:"label",children:"children",disabled:"disabled",isLeaf:"isLeaf",...e.props})),l=(f,h)=>{var g;const p=s.value[f];return Rt(p)?p(h,(g=a.value)==null?void 0:g.getNode(l("value",h))):h[p]},u=t4(e.modelValue).map(f=>tI(e.data||[],h=>l("value",h)===f,h=>l("children",h),(h,g,p,m)=>m&&l("value",m))).filter(f=>DX(f)),c=K(()=>{if(!e.renderAfterExpand&&!e.lazy)return[];const f=[];return nI(e.data.concat(e.cacheData),h=>{const g=l("value",h);f.push({value:g,currentLabel:l("label",h),isDisabled:l("disabled",h)})},h=>l("children",h)),f}),d=()=>{var f;return(f=a.value)==null?void 0:f.getCheckedKeys().filter(h=>{var g;const p=(g=a.value)==null?void 0:g.getNode(h);return!ni(p)&&Vu(p.childNodes)})};return{...Hd(Ra(e),Object.keys(lP.props)),...t,nodeKey:i,expandOnClickNode:K(()=>!e.checkStrictly&&e.expandOnClickNode),defaultExpandedKeys:K(()=>e.defaultExpandedKeys?e.defaultExpandedKeys.concat(u):u),renderContent:(f,{node:h,data:g,store:p})=>f(Iwt,{value:l("value",g),label:l("label",g),disabled:l("disabled",g),visible:h.visible},e.renderContent?()=>e.renderContent(f,{node:h,data:g,store:p}):n.default?()=>n.default({node:h,data:g,store:p}):void 0),filterNodeMethod:(f,h,g)=>e.filterNodeMethod?e.filterNodeMethod(f,h,g):f?new RegExp(_re(f),"i").test(l("label",h)||""):!0,onNodeClick:(f,h,g)=>{var p,m,v,y;if((p=t.onNodeClick)==null||p.call(t,f,h,g),!(e.showCheckbox&&e.checkOnClickNode)){if(!e.showCheckbox&&(e.checkStrictly||h.isLeaf)){if(!l("disabled",f)){const _=(m=o.value)==null?void 0:m.states.options.get(l("value",f));(v=o.value)==null||v.handleOptionSelect(_)}}else e.expandOnClickNode&&g.proxy.handleExpandIconClick();(y=o.value)==null||y.focus()}},onCheck:(f,h)=>{var g;if(!e.showCheckbox)return;const p=l("value",f),m={};nI([a.value.store.root],C=>m[C.key]=C,C=>C.childNodes);const v=h.checkedKeys,y=e.multiple?t4(e.modelValue).filter(C=>!(C in m)&&!v.includes(C)):[],_=y.concat(v);if(e.checkStrictly)r(en,e.multiple?_:_.includes(p)?p:void 0);else if(e.multiple){const C=d();r(en,y.concat(C))}else{const C=tI([f],k=>!yoe(l("children",k))&&!l("disabled",k),k=>l("children",k)),S=C?l("value",C):void 0,E=DX(e.modelValue)&&!!tI([f],k=>l("value",k)===e.modelValue,k=>l("children",k));r(en,S===e.modelValue||E?void 0:S)}It(()=>{var C;const S=t4(e.modelValue);a.value.setCheckedKeys(S),(C=t.onCheck)==null||C.call(t,f,{checkedKeys:a.value.getCheckedKeys(),checkedNodes:a.value.getCheckedNodes(),halfCheckedKeys:a.value.getHalfCheckedKeys(),halfCheckedNodes:a.value.getHalfCheckedNodes()})}),(g=o.value)==null||g.focus()},onNodeExpand:(f,h,g)=>{var p;(p=t.onNodeExpand)==null||p.call(t,f,h,g),It(()=>{if(!e.checkStrictly&&e.lazy&&e.multiple&&h.checked){const m={},v=a.value.getCheckedKeys();nI([a.value.store.root],C=>m[C.key]=C,C=>C.childNodes);const y=t4(e.modelValue).filter(C=>!(C in m)&&!v.includes(C)),_=d();r(en,y.concat(_))}})},cacheOptions:c}};var Pwt=ne({props:{data:{type:Array,default:()=>[]}},setup(e){const t=kt(wC);return Ze(()=>e.data,()=>{var n;e.data.forEach(o=>{t.states.cachedOptions.has(o.value)||t.states.cachedOptions.set(o.value,o)});const r=((n=t.selectRef)==null?void 0:n.querySelectorAll("input"))||[];Nn&&!Array.from(r).includes(document.activeElement)&&t.setSelected()},{flush:"post",immediate:!0}),()=>{}}});const $wt=ne({name:"ElTreeSelect",inheritAttrs:!1,props:{...ii.props,...lP.props,cacheData:{type:Array,default:()=>[]}},setup(e,t){const{slots:n,expose:r}=t,o=X(),a=X(),i=K(()=>e.nodeKey||e.valueKey||"value"),s=Fwt(e,t,{select:o,tree:a,key:i}),{cacheOptions:l,...u}=Mwt(e,t,{select:o,tree:a,key:i}),c=Bn({});return r(c),Kt(()=>{Object.assign(c,{...Hd(a.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"]),...Hd(o.value,["focus","blur","selectedLabel"])})}),()=>Vt(ii,Bn({...s,ref:d=>o.value=d}),{...n,default:()=>[Vt(Pwt,{data:l.value}),Vt(lP,Bn({...u,ref:d=>a.value=d}))]})}});var Bwt=vt($wt,[["__file","tree-select.vue"]]);const Rwt=dn(Bwt),boe=Symbol(),Nwt={key:-1,level:-1,data:{}};var j5=(e=>(e.KEY="id",e.LABEL="label",e.CHILDREN="children",e.DISABLED="disabled",e.CLASS="",e))(j5||{}),EX=(e=>(e.ADD="add",e.DELETE="delete",e))(EX||{});const QEe={type:Number,default:26},Lwt=ht({data:{type:$e(Array),default:()=>Eo([])},emptyText:{type:String},height:{type:Number,default:200},props:{type:$e(Object),default:()=>Eo({children:"children",label:"label",disabled:"disabled",value:"id",class:""})},highlightCurrent:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},defaultCheckedKeys:{type:$e(Array),default:()=>Eo([])},checkStrictly:{type:Boolean,default:!1},defaultExpandedKeys:{type:$e(Array),default:()=>Eo([])},indent:{type:Number,default:16},itemSize:QEe,icon:{type:mr},expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!1},checkOnClickLeaf:{type:Boolean,default:!0},currentNodeKey:{type:$e([String,Number])},accordion:{type:Boolean,default:!1},filterMethod:{type:$e(Function)},perfMode:{type:Boolean,default:!0}}),Uwt=ht({node:{type:$e(Object),default:()=>Eo(Nwt)},expanded:{type:Boolean,default:!1},checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},current:{type:Boolean,default:!1},hiddenExpandIcon:{type:Boolean,default:!1},itemSize:QEe}),Vwt=ht({node:{type:$e(Object),required:!0}}),eke="node-click",tke="node-drop",nke="node-expand",rke="node-collapse",oke="current-change",ake="check",ike="check-change",ske="node-contextmenu",zwt={[eke]:(e,t,n)=>e&&t&&n,[tke]:(e,t,n)=>e&&t&&n,[nke]:(e,t)=>e&&t,[rke]:(e,t)=>e&&t,[oke]:(e,t)=>e&&t,[ake]:(e,t)=>e&&t,[ike]:(e,t)=>e&&hr(t),[ske]:(e,t,n)=>e&&t&&n},jwt={click:(e,t)=>!!(e&&t),drop:(e,t)=>!!(e&&t),toggle:e=>!!e,check:(e,t)=>e&&hr(t)};function Hwt(e,t){const n=X(new Set),r=X(new Set),{emit:o}=bn();Ze([()=>t.value,()=>e.defaultCheckedKeys],()=>It(()=>{y(e.defaultCheckedKeys)}),{immediate:!0});const a=()=>{if(!t.value||!e.showCheckbox||e.checkStrictly)return;const{levelTreeNodeMap:_,maxLevel:C}=t.value,S=n.value,E=new Set;for(let k=C-1;k>=1;--k){const O=_.get(k);O&&O.forEach(T=>{const P=T.children;if(P){let U=!0,F=!1;for(const H of P){const R=H.key;if(S.has(R))F=!0;else if(E.has(R)){U=!1,F=!0;break}else U=!1}U?S.add(T.key):F?(E.add(T.key),S.delete(T.key)):(S.delete(T.key),E.delete(T.key))}})}r.value=E},i=_=>n.value.has(_.key),s=_=>r.value.has(_.key),l=(_,C,S=!0,E=!0)=>{const k=n.value,O=(T,P)=>{k[P?EX.ADD:EX.DELETE](T.key);const U=T.children;!e.checkStrictly&&U&&U.forEach(F=>{F.disabled||O(F,P)})};O(_,C),E&&a(),S&&u(_,C)},u=(_,C)=>{const{checkedNodes:S,checkedKeys:E}=g(),{halfCheckedNodes:k,halfCheckedKeys:O}=p();o(ake,_.data,{checkedKeys:E,checkedNodes:S,halfCheckedKeys:O,halfCheckedNodes:k}),o(ike,_.data,C)};function c(_=!1){return g(_).checkedKeys}function d(_=!1){return g(_).checkedNodes}function f(){return p().halfCheckedKeys}function h(){return p().halfCheckedNodes}function g(_=!1){const C=[],S=[];if(t!=null&&t.value&&e.showCheckbox){const{treeNodeMap:E}=t.value;n.value.forEach(k=>{const O=E.get(k);O&&(!_||_&&O.isLeaf)&&(S.push(k),C.push(O.data))})}return{checkedKeys:S,checkedNodes:C}}function p(){const _=[],C=[];if(t!=null&&t.value&&e.showCheckbox){const{treeNodeMap:S}=t.value;r.value.forEach(E=>{const k=S.get(E);k&&(C.push(E),_.push(k.data))})}return{halfCheckedNodes:_,halfCheckedKeys:C}}function m(_){n.value.clear(),r.value.clear(),It(()=>{y(_)})}function v(_,C){if(t!=null&&t.value&&e.showCheckbox){const S=t.value.treeNodeMap.get(_);S&&l(S,C,!1)}}function y(_){if(t!=null&&t.value){const{treeNodeMap:C}=t.value;if(e.showCheckbox&&C&&(_==null?void 0:_.length)>0){for(const S of _){const E=C.get(S);E&&!i(E)&&l(E,!0,!1,!1)}a()}}}return{updateCheckedKeys:a,toggleCheckbox:l,isChecked:i,isIndeterminate:s,getCheckedKeys:c,getCheckedNodes:d,getHalfCheckedKeys:f,getHalfCheckedNodes:h,setChecked:v,setCheckedKeys:m}}function Wwt(e,t){const n=X(new Set([])),r=X(new Set([])),o=K(()=>Rt(e.filterMethod));function a(s){var l;if(!o.value)return;const u=new Set,c=r.value,d=n.value,f=[],h=((l=t.value)==null?void 0:l.treeNodes)||[],g=e.filterMethod;d.clear();function p(m){m.forEach(v=>{f.push(v),g!=null&&g(s,v.data,v)?f.forEach(_=>{u.add(_.key)}):v.isLeaf&&d.add(v.key);const y=v.children;if(y&&p(y),!v.isLeaf){if(!u.has(v.key))d.add(v.key);else if(y){let _=!0;for(const C of y)if(!d.has(C.key)){_=!1;break}_?c.add(v.key):c.delete(v.key)}}f.pop()})}return p(h),u}function i(s){return r.value.has(s.key)}return{hiddenExpandIconKeySet:r,hiddenNodeKeySet:n,doFilter:a,isForceHiddenExpandIcon:i}}function qwt(e,t){const n=X(new Set(e.defaultExpandedKeys)),r=X(),o=Tr(),a=X(),{isIndeterminate:i,isChecked:s,toggleCheckbox:l,getCheckedKeys:u,getCheckedNodes:c,getHalfCheckedKeys:d,getHalfCheckedNodes:f,setChecked:h,setCheckedKeys:g}=Hwt(e,o),{doFilter:p,hiddenNodeKeySet:m,isForceHiddenExpandIcon:v}=Wwt(e,o),y=K(()=>{var ae;return((ae=e.props)==null?void 0:ae.value)||j5.KEY}),_=K(()=>{var ae;return((ae=e.props)==null?void 0:ae.children)||j5.CHILDREN}),C=K(()=>{var ae;return((ae=e.props)==null?void 0:ae.disabled)||j5.DISABLED}),S=K(()=>{var ae;return((ae=e.props)==null?void 0:ae.label)||j5.LABEL}),E=K(()=>{var ae;const le=n.value,q=m.value,pe=[],he=((ae=o.value)==null?void 0:ae.treeNodes)||[],re=[];for(let ue=he.length-1;ue>=0;--ue)re.push(he[ue]);for(;re.length;){const ue=re.pop();if(!q.has(ue.key)&&(pe.push(ue),ue.children&&le.has(ue.key)))for(let _e=ue.children.length-1;_e>=0;--_e)re.push(ue.children[_e])}return pe}),k=K(()=>E.value.length>0);function O(ae){const le=new Map,q=new Map;let pe=1;function he(ue,_e=1,Pe=void 0){var Ae;const Ee=[];for(const ye of ue){const ve=U(ye),Ce={level:_e,key:ve,data:ye};Ce.label=H(ye),Ce.parent=Pe;const ze=P(ye);Ce.disabled=F(ye),Ce.isLeaf=!ze||ze.length===0,ze&&ze.length&&(Ce.children=he(ze,_e+1,Ce)),Ee.push(Ce),le.set(ve,Ce),q.has(_e)||q.set(_e,[]),(Ae=q.get(_e))==null||Ae.push(Ce)}return _e>pe&&(pe=_e),Ee}const re=he(ae);return{treeNodeMap:le,levelTreeNodeMap:q,maxLevel:pe,treeNodes:re}}function T(ae){const le=p(ae);le&&(n.value=le)}function P(ae){return ae[_.value]}function U(ae){return ae?ae[y.value]:""}function F(ae){return ae[C.value]}function H(ae){return ae[S.value]}function R(ae){n.value.has(ae.key)?$(ae):Y(ae)}function z(ae){const le=new Set,q=o.value.treeNodeMap;ae.forEach(pe=>{let he=q.get(pe);for(;he&&!le.has(he.key);)le.add(he.key),he=he.parent}),n.value=le}function M(ae,le){t(eke,ae.data,ae,le),L(ae),e.expandOnClickNode&&R(ae),e.showCheckbox&&(e.checkOnClickNode||ae.isLeaf&&e.checkOnClickLeaf)&&!ae.disabled&&l(ae,!s(ae),!0)}function N(ae,le){t(tke,ae.data,ae,le)}function L(ae){J(ae)||(r.value=ae.key,t(oke,ae.data,ae))}function V(ae,le){l(ae,le)}function Y(ae){const le=n.value;if(o.value&&e.accordion){const{treeNodeMap:q}=o.value;le.forEach(pe=>{const he=q.get(pe);ae&&ae.level===(he==null?void 0:he.level)&&le.delete(pe)})}le.add(ae.key),t(nke,ae.data,ae)}function $(ae){n.value.delete(ae.key),t(rke,ae.data,ae)}function B(ae){return n.value.has(ae.key)}function W(ae){return!!ae.disabled}function J(ae){const le=r.value;return le!==void 0&&le===ae.key}function oe(){var ae,le;if(r.value)return(le=(ae=o.value)==null?void 0:ae.treeNodeMap.get(r.value))==null?void 0:le.data}function ie(){return r.value}function Z(ae){r.value=ae}function de(ae){o.value=O(ae)}function we(ae){var le;const q=vn(ae)?U(ae):ae;return(le=o.value)==null?void 0:le.treeNodeMap.get(q)}function Be(ae,le="auto"){const q=we(ae);q&&a.value&&a.value.scrollToItem(E.value.indexOf(q),le)}function ke(ae){var le;(le=a.value)==null||le.scrollTo(ae)}return Ze(()=>e.currentNodeKey,ae=>{r.value=ae},{immediate:!0}),Ze(()=>e.data,ae=>{de(ae)},{immediate:!0}),{tree:o,flattenTree:E,isNotEmpty:k,listRef:a,getKey:U,getChildren:P,toggleExpand:R,toggleCheckbox:l,isExpanded:B,isChecked:s,isIndeterminate:i,isDisabled:W,isCurrent:J,isForceHiddenExpandIcon:v,handleNodeClick:M,handleNodeDrop:N,handleNodeCheck:V,getCurrentNode:oe,getCurrentKey:ie,setCurrentKey:Z,getCheckedKeys:u,getCheckedNodes:c,getHalfCheckedKeys:d,getHalfCheckedNodes:f,setChecked:h,setCheckedKeys:g,filter:T,setData:de,getNode:we,expandNode:Y,collapseNode:$,setExpandedKeys:z,scrollToNode:Be,scrollTo:ke}}var Kwt=ne({name:"ElTreeNodeContent",props:Vwt,setup(e){const t=kt(boe),n=nt("tree");return()=>{const r=e.node,{data:o}=r;return t!=null&&t.ctx.slots.default?t.ctx.slots.default({node:r,data:o}):Vt(ooe,{tag:"span",truncated:!0,class:n.be("node","label")},()=>[r==null?void 0:r.label])}}});const Gwt=ne({name:"ElTreeNode"}),Ywt=ne({...Gwt,props:Uwt,emits:jwt,setup(e,{emit:t}){const n=e,r=kt(boe),o=nt("tree"),a=K(()=>{var h;return(h=r==null?void 0:r.props.indent)!=null?h:16}),i=K(()=>{var h;return(h=r==null?void 0:r.props.icon)!=null?h:qne}),s=h=>{const g=r==null?void 0:r.props.props.class;if(!g)return{};let p;if(Rt(g)){const{data:m}=h;p=g(m,h)}else p=g;return $t(p)?{[p]:!0}:p},l=h=>{t("click",n.node,h)},u=h=>{t("drop",n.node,h)},c=()=>{t("toggle",n.node)},d=h=>{t("check",n.node,h)},f=h=>{var g,p,m,v;(m=(p=(g=r==null?void 0:r.instance)==null?void 0:g.vnode)==null?void 0:p.props)!=null&&m.onNodeContextmenu&&(h.stopPropagation(),h.preventDefault()),r==null||r.ctx.emit(ske,h,(v=n.node)==null?void 0:v.data,n.node)};return(h,g)=>{var p,m,v;return I(),j("div",{ref:"node$",class:ee([b(o).b("node"),b(o).is("expanded",h.expanded),b(o).is("current",h.current),b(o).is("focusable",!h.disabled),b(o).is("checked",!h.disabled&&h.checked),s(h.node)]),role:"treeitem",tabindex:"-1","aria-expanded":h.expanded,"aria-disabled":h.disabled,"aria-checked":h.checked,"data-key":(p=h.node)==null?void 0:p.key,onClick:zt(l,["stop"]),onContextmenu:f,onDragover:zt(()=>{},["prevent"]),onDragenter:zt(()=>{},["prevent"]),onDrop:zt(u,["stop"])},[w("div",{class:ee(b(o).be("node","content")),style:Nt({paddingLeft:`${(h.node.level-1)*b(a)}px`,height:h.itemSize+"px"})},[b(i)?(I(),Oe(b(Tt),{key:0,class:ee([b(o).is("leaf",!!((m=h.node)!=null&&m.isLeaf)),b(o).is("hidden",h.hiddenExpandIcon),{expanded:!((v=h.node)!=null&&v.isLeaf)&&h.expanded},b(o).be("node","expand-icon")]),onClick:zt(c,["stop"])},{default:A(()=>[(I(),Oe(_n(b(i))))]),_:1},8,["class","onClick"])):be("v-if",!0),h.showCheckbox?(I(),Oe(b(Xi),{key:1,"model-value":h.checked,indeterminate:h.indeterminate,disabled:h.disabled,onChange:d,onClick:zt(()=>{},["stop"])},null,8,["model-value","indeterminate","disabled","onClick"])):be("v-if",!0),D(b(Kwt),{node:h.node},null,8,["node"])],6)],42,["aria-expanded","aria-disabled","aria-checked","data-key","onClick","onDragover","onDragenter","onDrop"])}}});var Xwt=vt(Ywt,[["__file","tree-node.vue"]]);const Jwt=ne({name:"ElTreeV2"}),Zwt=ne({...Jwt,props:Lwt,emits:zwt,setup(e,{expose:t,emit:n}){const r=e,o=La(),a=K(()=>r.itemSize);Fn(boe,{ctx:{emit:n,slots:o},props:r,instance:bn()}),Fn(Bh,void 0);const{t:i}=Un(),s=nt("tree"),{flattenTree:l,isNotEmpty:u,listRef:c,toggleExpand:d,isExpanded:f,isIndeterminate:h,isChecked:g,isDisabled:p,isCurrent:m,isForceHiddenExpandIcon:v,handleNodeClick:y,handleNodeDrop:_,handleNodeCheck:C,toggleCheckbox:S,getCurrentNode:E,getCurrentKey:k,setCurrentKey:O,getCheckedKeys:T,getCheckedNodes:P,getHalfCheckedKeys:U,getHalfCheckedNodes:F,setChecked:H,setCheckedKeys:R,filter:z,setData:M,getNode:N,expandNode:L,collapseNode:V,setExpandedKeys:Y,scrollToNode:$,scrollTo:B}=qwt(r,n);return t({toggleCheckbox:S,getCurrentNode:E,getCurrentKey:k,setCurrentKey:O,getCheckedKeys:T,getCheckedNodes:P,getHalfCheckedKeys:U,getHalfCheckedNodes:F,setChecked:H,setCheckedKeys:R,filter:z,setData:M,getNode:N,expandNode:L,collapseNode:V,setExpandedKeys:Y,scrollToNode:$,scrollTo:B}),(W,J)=>(I(),j("div",{class:ee([b(s).b(),{[b(s).m("highlight-current")]:W.highlightCurrent}]),role:"tree"},[b(u)?(I(),Oe(b(LDe),{key:0,ref_key:"listRef",ref:c,"class-name":b(s).b("virtual-list"),data:b(l),total:b(l).length,height:W.height,"item-size":b(a),"perf-mode":W.perfMode},{default:A(({data:oe,index:ie,style:Z})=>[(I(),Oe(Xwt,{key:oe[ie].key,style:Nt(Z),node:oe[ie],expanded:b(f)(oe[ie]),"show-checkbox":W.showCheckbox,checked:b(g)(oe[ie]),indeterminate:b(h)(oe[ie]),"item-size":b(a),disabled:b(p)(oe[ie]),current:b(m)(oe[ie]),"hidden-expand-icon":b(v)(oe[ie]),onClick:b(y),onToggle:b(d),onCheck:b(C),onDrop:b(_)},null,8,["style","node","expanded","show-checkbox","checked","indeterminate","item-size","disabled","current","hidden-expand-icon","onClick","onToggle","onCheck","onDrop"]))]),_:1},8,["class-name","data","total","height","item-size","perf-mode"])):(I(),j("div",{key:1,class:ee(b(s).e("empty-block"))},[Ne(W.$slots,"empty",{},()=>{var oe;return[w("span",{class:ee(b(s).e("empty-text"))},se((oe=W.emptyText)!=null?oe:b(i)("el.tree.emptyText")),3)]})],2))],2))}});var Qwt=vt(Zwt,[["__file","tree.vue"]]);const e6t=dn(Qwt),lke=Symbol("uploadContextKey"),t6t="ElUpload";class n6t extends Error{constructor(t,n,r,o){super(t),this.name="UploadAjaxError",this.status=n,this.method=r,this.url=o}}function Epe(e,t,n){let r;return n.response?r=`${n.response.error||n.response}`:n.responseText?r=`${n.responseText}`:r=`fail to ${t.method} ${e} ${n.status}`,new n6t(r,n.status,t.method,e)}function r6t(e){const t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch{return t}}const o6t=e=>{typeof XMLHttpRequest>"u"&&oa(t6t,"XMLHttpRequest is undefined");const t=new XMLHttpRequest,n=e.action;t.upload&&t.upload.addEventListener("progress",a=>{const i=a;i.percent=a.total>0?a.loaded/a.total*100:0,e.onProgress(i)});const r=new FormData;if(e.data)for(const[a,i]of Object.entries(e.data))ct(i)&&i.length?r.append(a,...i):r.append(a,i);r.append(e.filename,e.file,e.file.name),t.addEventListener("error",()=>{e.onError(Epe(n,e,t))}),t.addEventListener("load",()=>{if(t.status<200||t.status>=300)return e.onError(Epe(n,e,t));e.onSuccess(r6t(t))}),t.open(e.method,n,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);const o=e.headers||{};if(o instanceof Headers)o.forEach((a,i)=>t.setRequestHeader(i,a));else for(const[a,i]of Object.entries(o))ni(i)||t.setRequestHeader(a,String(i));return t.send(r),t},uke=["text","picture","picture-card"];let a6t=1;const kX=()=>Date.now()+a6t++,cke=ht({action:{type:String,default:"#"},headers:{type:$e(Object)},method:{type:String,default:"post"},data:{type:$e([Object,Function,Promise]),default:()=>Eo({})},multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},fileList:{type:$e(Array),default:()=>Eo([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:uke,default:"text"},httpRequest:{type:$e(Function),default:o6t},disabled:Boolean,limit:Number}),i6t=ht({...cke,beforeUpload:{type:$e(Function),default:fr},beforeRemove:{type:$e(Function)},onRemove:{type:$e(Function),default:fr},onChange:{type:$e(Function),default:fr},onPreview:{type:$e(Function),default:fr},onSuccess:{type:$e(Function),default:fr},onProgress:{type:$e(Function),default:fr},onError:{type:$e(Function),default:fr},onExceed:{type:$e(Function),default:fr},crossorigin:{type:$e(String)}}),s6t=ht({files:{type:$e(Array),default:()=>Eo([])},disabled:{type:Boolean,default:!1},handlePreview:{type:$e(Function),default:fr},listType:{type:String,values:uke,default:"text"},crossorigin:{type:$e(String)}}),l6t={remove:e=>!!e},u6t=ne({name:"ElUploadList"}),c6t=ne({...u6t,props:s6t,emits:l6t,setup(e,{emit:t}){const n=e,{t:r}=Un(),o=nt("upload"),a=nt("icon"),i=nt("list"),s=ns(),l=X(!1),u=K(()=>[o.b("list"),o.bm("list",n.listType),o.is("disabled",n.disabled)]),c=d=>{t("remove",d)};return(d,f)=>(I(),Oe(Cne,{tag:"ul",class:ee(b(u)),name:b(i).b()},{default:A(()=>[(I(!0),j(tt,null,wt(d.files,(h,g)=>(I(),j("li",{key:h.uid||h.name,class:ee([b(o).be("list","item"),b(o).is(h.status),{focusing:l.value}]),tabindex:"0",onKeydown:qn(p=>!b(s)&&c(h),["delete"]),onFocus:p=>l.value=!0,onBlur:p=>l.value=!1,onClick:p=>l.value=!1},[Ne(d.$slots,"default",{file:h,index:g},()=>[d.listType==="picture"||h.status!=="uploading"&&d.listType==="picture-card"?(I(),j("img",{key:0,class:ee(b(o).be("list","item-thumbnail")),src:h.url,crossorigin:d.crossorigin,alt:""},null,10,["src","crossorigin"])):be("v-if",!0),h.status==="uploading"||d.listType!=="picture-card"?(I(),j("div",{key:1,class:ee(b(o).be("list","item-info"))},[w("a",{class:ee(b(o).be("list","item-name")),onClick:zt(p=>d.handlePreview(h),["prevent"])},[D(b(Tt),{class:ee(b(a).m("document"))},{default:A(()=>[D(b(Yu))]),_:1},8,["class"]),w("span",{class:ee(b(o).be("list","item-file-name")),title:h.name},se(h.name),11,["title"])],10,["onClick"]),h.status==="uploading"?(I(),Oe(b(C_),{key:0,type:d.listType==="picture-card"?"circle":"line","stroke-width":d.listType==="picture-card"?6:2,percentage:Number(h.percentage),style:Nt(d.listType==="picture-card"?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):be("v-if",!0)],2)):be("v-if",!0),w("label",{class:ee(b(o).be("list","item-status-label"))},[d.listType==="text"?(I(),Oe(b(Tt),{key:0,class:ee([b(a).m("upload-success"),b(a).m("circle-check")])},{default:A(()=>[D(b(cT))]),_:1},8,["class"])):["picture-card","picture"].includes(d.listType)?(I(),Oe(b(Tt),{key:1,class:ee([b(a).m("upload-success"),b(a).m("check")])},{default:A(()=>[D(b(Za))]),_:1},8,["class"])):be("v-if",!0)],2),b(s)?be("v-if",!0):(I(),Oe(b(Tt),{key:2,class:ee(b(a).m("close")),onClick:p=>c(h)},{default:A(()=>[D(b(Gs))]),_:2},1032,["class","onClick"])),be(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),be(" This is a bug which needs to be fixed "),be(" TODO: Fix the incorrect navigation interaction "),b(s)?be("v-if",!0):(I(),j("i",{key:3,class:ee(b(a).m("close-tip"))},se(b(r)("el.upload.deleteTip")),3)),d.listType==="picture-card"?(I(),j("span",{key:4,class:ee(b(o).be("list","item-actions"))},[w("span",{class:ee(b(o).be("list","item-preview")),onClick:p=>d.handlePreview(h)},[D(b(Tt),{class:ee(b(a).m("zoom-in"))},{default:A(()=>[D(b(Qne))]),_:1},8,["class"])],10,["onClick"]),b(s)?be("v-if",!0):(I(),j("span",{key:0,class:ee(b(o).be("list","item-delete")),onClick:p=>c(h)},[D(b(Tt),{class:ee(b(a).m("delete"))},{default:A(()=>[D(b(Ws))]),_:1},8,["class"])],10,["onClick"]))],2)):be("v-if",!0)])],42,["onKeydown","onFocus","onBlur","onClick"]))),128)),Ne(d.$slots,"append")]),_:3},8,["class","name"]))}});var kpe=vt(c6t,[["__file","upload-list.vue"]]);const d6t=ht({disabled:{type:Boolean,default:!1}}),f6t={file:e=>ct(e)},dke="ElUploadDrag",h6t=ne({name:dke}),p6t=ne({...h6t,props:d6t,emits:f6t,setup(e,{emit:t}){kt(lke)||oa(dke,"usage: ");const r=nt("upload"),o=X(!1),a=ns(),i=l=>{if(a.value)return;o.value=!1,l.stopPropagation();const u=Array.from(l.dataTransfer.files),c=l.dataTransfer.items||[];u.forEach((d,f)=>{var h;const g=c[f],p=(h=g==null?void 0:g.webkitGetAsEntry)==null?void 0:h.call(g);p&&(d.isDirectory=p.isDirectory)}),t("file",u)},s=()=>{a.value||(o.value=!0)};return(l,u)=>(I(),j("div",{class:ee([b(r).b("dragger"),b(r).is("dragover",o.value)]),onDrop:zt(i,["prevent"]),onDragover:zt(s,["prevent"]),onDragleave:zt(c=>o.value=!1,["prevent"])},[Ne(l.$slots,"default")],42,["onDrop","onDragover","onDragleave"]))}});var g6t=vt(p6t,[["__file","upload-dragger.vue"]]);const v6t=ht({...cke,beforeUpload:{type:$e(Function),default:fr},onRemove:{type:$e(Function),default:fr},onStart:{type:$e(Function),default:fr},onSuccess:{type:$e(Function),default:fr},onProgress:{type:$e(Function),default:fr},onError:{type:$e(Function),default:fr},onExceed:{type:$e(Function),default:fr}}),m6t=ne({name:"ElUploadContent",inheritAttrs:!1}),y6t=ne({...m6t,props:v6t,setup(e,{expose:t}){const n=e,r=nt("upload"),o=ns(),a=Tr({}),i=Tr(),s=p=>{if(p.length===0)return;const{autoUpload:m,limit:v,fileList:y,multiple:_,onStart:C,onExceed:S}=n;if(v&&y.length+p.length>v){S(p,y);return}_||(p=p.slice(0,1));for(const E of p){const k=E;k.uid=kX(),C(k),m&&l(k)}},l=async p=>{if(i.value.value="",!n.beforeUpload)return c(p);let m,v={};try{const _=n.data,C=n.beforeUpload(p);v=bD(n.data)?RM(n.data):n.data,m=await C,bD(n.data)&&mi(_,v)&&(v=RM(n.data))}catch{m=!1}if(m===!1){n.onRemove(p);return}let y=p;m instanceof Blob&&(m instanceof File?y=m:y=new File([m],p.name,{type:p.type})),c(Object.assign(y,{uid:p.uid}),v)},u=async(p,m)=>Rt(p)?p(m):p,c=async(p,m)=>{const{headers:v,data:y,method:_,withCredentials:C,name:S,action:E,onProgress:k,onSuccess:O,onError:T,httpRequest:P}=n;try{m=await u(m??y,p)}catch{n.onRemove(p);return}const{uid:U}=p,F={headers:v||{},withCredentials:C,file:p,data:m,method:_,filename:S,action:E,onProgress:R=>{k(R,p)},onSuccess:R=>{O(R,p),delete a.value[U]},onError:R=>{T(R,p),delete a.value[U]}},H=P(F);a.value[U]=H,H instanceof Promise&&H.then(F.onSuccess,F.onError)},d=p=>{const m=p.target.files;m&&s(Array.from(m))},f=()=>{o.value||(i.value.value="",i.value.click())},h=()=>{f()};return t({abort:p=>{qxe(a.value).filter(p?([v])=>String(p.uid)===v:()=>!0).forEach(([v,y])=>{y instanceof XMLHttpRequest&&y.abort(),delete a.value[v]})},upload:l}),(p,m)=>(I(),j("div",{class:ee([b(r).b(),b(r).m(p.listType),b(r).is("drag",p.drag),b(r).is("disabled",b(o))]),tabindex:b(o)?"-1":"0",onClick:f,onKeydown:qn(zt(h,["self"]),["enter","space"])},[p.drag?(I(),Oe(g6t,{key:0,disabled:b(o),onFile:s},{default:A(()=>[Ne(p.$slots,"default")]),_:3},8,["disabled"])):Ne(p.$slots,"default",{key:1}),w("input",{ref_key:"inputRef",ref:i,class:ee(b(r).e("input")),name:p.name,disabled:b(o),multiple:p.multiple,accept:p.accept,type:"file",onChange:d,onClick:zt(()=>{},["stop"])},null,42,["name","disabled","multiple","accept","onClick"])],42,["tabindex","onKeydown"]))}});var Ape=vt(y6t,[["__file","upload-content.vue"]]);const Tpe="ElUpload",Ope=e=>{var t;(t=e.url)!=null&&t.startsWith("blob:")&&URL.revokeObjectURL(e.url)},b6t=(e,t)=>{const n=Nxe(e,"fileList",void 0,{passive:!0}),r=h=>n.value.find(g=>g.uid===h.uid);function o(h){var g;(g=t.value)==null||g.abort(h)}function a(h=["ready","uploading","success","fail"]){n.value=n.value.filter(g=>!h.includes(g.status))}function i(h){n.value=n.value.filter(g=>g.uid!==h.uid)}const s=(h,g)=>{const p=r(g);p&&(console.error(h),p.status="fail",i(p),e.onError(h,p,n.value),e.onChange(p,n.value))},l=(h,g)=>{const p=r(g);p&&(e.onProgress(h,p,n.value),p.status="uploading",p.percentage=Math.round(h.percent))},u=(h,g)=>{const p=r(g);p&&(p.status="success",p.response=h,e.onSuccess(h,p,n.value),e.onChange(p,n.value))},c=h=>{ni(h.uid)&&(h.uid=kX());const g={name:h.name,percentage:0,status:"ready",size:h.size,raw:h,uid:h.uid};if(e.listType==="picture-card"||e.listType==="picture")try{g.url=URL.createObjectURL(h)}catch(p){p.message,e.onError(p,g,n.value)}n.value=[...n.value,g],e.onChange(g,n.value)},d=async h=>{const g=h instanceof File?r(h):h;g||oa(Tpe,"file to be removed not found");const p=m=>{o(m),i(m),e.onRemove(m,n.value),Ope(m)};e.beforeRemove?await e.beforeRemove(g,n.value)!==!1&&p(g):p(g)};function f(){n.value.filter(({status:h})=>h==="ready").forEach(({raw:h})=>{var g;return h&&((g=t.value)==null?void 0:g.upload(h))})}return Ze(()=>e.listType,h=>{h!=="picture-card"&&h!=="picture"||(n.value=n.value.map(g=>{const{raw:p,url:m}=g;if(!m&&p)try{g.url=URL.createObjectURL(p)}catch(v){e.onError(v,g,n.value)}return g}))}),Ze(n,h=>{for(const g of h)g.uid||(g.uid=kX()),g.status||(g.status="success")},{immediate:!0,deep:!0}),{uploadFiles:n,abort:o,clearFiles:a,handleError:s,handleProgress:l,handleStart:c,handleSuccess:u,handleRemove:d,submit:f,revokeFileObjectURL:Ope}},_6t=ne({name:"ElUpload"}),w6t=ne({..._6t,props:i6t,setup(e,{expose:t}){const n=e,r=ns(),o=Tr(),{abort:a,submit:i,clearFiles:s,uploadFiles:l,handleStart:u,handleError:c,handleRemove:d,handleSuccess:f,handleProgress:h,revokeFileObjectURL:g}=b6t(n,o),p=K(()=>n.listType==="picture-card"),m=K(()=>({...n,fileList:l.value,onStart:u,onProgress:h,onSuccess:f,onError:c,onRemove:d}));return Ar(()=>{l.value.forEach(g)}),Fn(lke,{accept:tr(n,"accept")}),t({abort:a,submit:i,clearFiles:s,handleStart:u,handleRemove:d}),(v,y)=>(I(),j("div",null,[b(p)&&v.showFileList?(I(),Oe(kpe,{key:0,disabled:b(r),"list-type":v.listType,files:b(l),crossorigin:v.crossorigin,"handle-preview":v.onPreview,onRemove:b(d)},eu({append:A(()=>[D(Ape,Dn({ref_key:"uploadRef",ref:o},b(m)),{default:A(()=>[v.$slots.trigger?Ne(v.$slots,"trigger",{key:0}):be("v-if",!0),!v.$slots.trigger&&v.$slots.default?Ne(v.$slots,"default",{key:1}):be("v-if",!0)]),_:3},16)]),_:2},[v.$slots.file?{name:"default",fn:A(({file:_,index:C})=>[Ne(v.$slots,"file",{file:_,index:C})])}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):be("v-if",!0),!b(p)||b(p)&&!v.showFileList?(I(),Oe(Ape,Dn({key:1,ref_key:"uploadRef",ref:o},b(m)),{default:A(()=>[v.$slots.trigger?Ne(v.$slots,"trigger",{key:0}):be("v-if",!0),!v.$slots.trigger&&v.$slots.default?Ne(v.$slots,"default",{key:1}):be("v-if",!0)]),_:3},16)):be("v-if",!0),v.$slots.trigger?Ne(v.$slots,"default",{key:2}):be("v-if",!0),Ne(v.$slots,"tip"),!b(p)&&v.showFileList?(I(),Oe(kpe,{key:3,disabled:b(r),"list-type":v.listType,files:b(l),crossorigin:v.crossorigin,"handle-preview":v.onPreview,onRemove:b(d)},eu({_:2},[v.$slots.file?{name:"default",fn:A(({file:_,index:C})=>[Ne(v.$slots,"file",{file:_,index:C})])}:void 0]),1032,["disabled","list-type","files","crossorigin","handle-preview","onRemove"])):be("v-if",!0)]))}});var C6t=vt(w6t,[["__file","upload.vue"]]);const AT=dn(C6t),x6t=ht({zIndex:{type:Number,default:9},rotate:{type:Number,default:-22},width:Number,height:Number,image:String,content:{type:$e([String,Array]),default:"Element Plus"},font:{type:$e(Object)},gap:{type:$e(Array),default:()=>[100,100]},offset:{type:$e(Array)}});function S6t(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}function D6t(e){return Object.keys(e).map(t=>`${S6t(t)}: ${e[t]};`).join(" ")}function E6t(){return window.devicePixelRatio||1}const k6t=(e,t)=>{let n=!1;return e.removedNodes.length&&t&&(n=Array.from(e.removedNodes).includes(t)),e.type==="attributes"&&e.target===t&&(n=!0),n},fke=3;function hj(e,t,n=1){const r=document.createElement("canvas"),o=r.getContext("2d"),a=e*n,i=t*n;return r.setAttribute("width",`${a}px`),r.setAttribute("height",`${i}px`),o.save(),[o,r,a,i]}function A6t(){function e(t,n,r,o,a,i,s,l){const[u,c,d,f]=hj(o,a,r);if(t instanceof HTMLImageElement)u.drawImage(t,0,0,d,f);else{const{color:$,fontSize:B,fontStyle:W,fontWeight:J,fontFamily:oe,textAlign:ie,textBaseline:Z}=i,de=Number(B)*r;u.font=`${W} normal ${J} ${de}px/${a}px ${oe}`,u.fillStyle=$,u.textAlign=ie,u.textBaseline=Z;const we=ct(t)?t:[t];we==null||we.forEach((Be,ke)=>{u.fillText(Be??"",d/2,ke*(de+fke*r))})}const h=Math.PI/180*Number(n),g=Math.max(o,a),[p,m,v]=hj(g,g,r);p.translate(v/2,v/2),p.rotate(h),d>0&&f>0&&p.drawImage(c,-d/2,-f/2);function y($,B){const W=$*Math.cos(h)-B*Math.sin(h),J=$*Math.sin(h)+B*Math.cos(h);return[W,J]}let _=0,C=0,S=0,E=0;const k=d/2,O=f/2;[[0-k,0-O],[0+k,0-O],[0+k,0+O],[0-k,0+O]].forEach(([$,B])=>{const[W,J]=y($,B);_=Math.min(_,W),C=Math.max(C,W),S=Math.min(S,J),E=Math.max(E,J)});const P=_+v/2,U=S+v/2,F=C-_,H=E-S,R=s*r,z=l*r,M=(F+R)*2,N=H+z,[L,V]=hj(M,N);function Y($=0,B=0){L.drawImage(m,P,U,F,H,$,B,F,H)}return Y(),Y(F+R,-H/2-z/2),Y(F+R,+H/2+z/2),[V.toDataURL(),M/r,N/r]}return e}const T6t=ne({name:"ElWatermark"}),O6t=ne({...T6t,props:x6t,setup(e){const t=e,n={position:"relative"},r=K(()=>{var P,U;return(U=(P=t.font)==null?void 0:P.color)!=null?U:"rgba(0,0,0,.15)"}),o=K(()=>{var P,U;return(U=(P=t.font)==null?void 0:P.fontSize)!=null?U:16}),a=K(()=>{var P,U;return(U=(P=t.font)==null?void 0:P.fontWeight)!=null?U:"normal"}),i=K(()=>{var P,U;return(U=(P=t.font)==null?void 0:P.fontStyle)!=null?U:"normal"}),s=K(()=>{var P,U;return(U=(P=t.font)==null?void 0:P.fontFamily)!=null?U:"sans-serif"}),l=K(()=>{var P,U;return(U=(P=t.font)==null?void 0:P.textAlign)!=null?U:"center"}),u=K(()=>{var P,U;return(U=(P=t.font)==null?void 0:P.textBaseline)!=null?U:"hanging"}),c=K(()=>t.gap[0]),d=K(()=>t.gap[1]),f=K(()=>c.value/2),h=K(()=>d.value/2),g=K(()=>{var P,U;return(U=(P=t.offset)==null?void 0:P[0])!=null?U:f.value}),p=K(()=>{var P,U;return(U=(P=t.offset)==null?void 0:P[1])!=null?U:h.value}),m=()=>{const P={zIndex:t.zIndex,position:"absolute",left:0,top:0,width:"100%",height:"100%",pointerEvents:"none",backgroundRepeat:"repeat"};let U=g.value-f.value,F=p.value-h.value;return U>0&&(P.left=`${U}px`,P.width=`calc(100% - ${U}px)`,U=0),F>0&&(P.top=`${F}px`,P.height=`calc(100% - ${F}px)`,F=0),P.backgroundPosition=`${U}px ${F}px`,P},v=Tr(null),y=Tr(),_=X(!1),C=()=>{y.value&&(y.value.remove(),y.value=void 0)},S=(P,U)=>{var F;v.value&&y.value&&(_.value=!0,y.value.setAttribute("style",D6t({...m(),backgroundImage:`url('${P}')`,backgroundSize:`${Math.floor(U)}px`})),(F=v.value)==null||F.append(y.value),setTimeout(()=>{_.value=!1}))},E=P=>{let U=120,F=64;const{image:H,content:R,width:z,height:M,rotate:N}=t;if(!H&&P.measureText){P.font=`${Number(o.value)}px ${s.value}`;const L=ct(R)?R:[R];let V=0,Y=0;L.forEach(W=>{const{width:J,fontBoundingBoxAscent:oe,fontBoundingBoxDescent:ie,actualBoundingBoxAscent:Z,actualBoundingBoxDescent:de}=P.measureText(W),we=Ln(oe)?Z+de:oe+ie;J>V&&(V=Math.ceil(J)),we>Y&&(Y=Math.ceil(we))}),U=V,F=Y*L.length+(L.length-1)*fke;const $=Math.PI/180*Number(N),B=Math.ceil(Math.abs(Math.sin($)*F)/2);U+=B}return[z??U,M??F]},k=A6t(),O=()=>{const U=document.createElement("canvas").getContext("2d"),F=t.image,H=t.content,R=t.rotate;if(U){y.value||(y.value=document.createElement("div"));const z=E6t(),[M,N]=E(U),L=V=>{const[Y,$]=k(V||"",R,z,M,N,{color:r.value,fontSize:o.value,fontStyle:i.value,fontWeight:a.value,fontFamily:s.value,textAlign:l.value,textBaseline:u.value},c.value,d.value);S(Y,$)};if(F){const V=new Image;V.onload=()=>{L(V)},V.onerror=()=>{L(H)},V.crossOrigin="anonymous",V.referrerPolicy="no-referrer",V.src=F}else L(H)}};return Kt(()=>{O()}),Ze(()=>t,()=>{O()},{deep:!0,flush:"post"}),Ar(()=>{C()}),Rxe(v,P=>{_.value||P.forEach(U=>{k6t(U,y.value)&&(C(),O())})},{attributes:!0,subtree:!0,childList:!0}),(P,U)=>(I(),j("div",{ref_key:"containerRef",ref:v,style:Nt([n])},[Ne(P.$slots,"default")],4))}});var F6t=vt(O6t,[["__file","watermark.vue"]]);const I6t=dn(F6t),M6t=ht({zIndex:{type:Number,default:1001},visible:Boolean,fill:{type:String,default:"rgba(0,0,0,0.5)"},pos:{type:$e(Object)},targetAreaClickable:{type:Boolean,default:!0}}),P6t=(e,t,n,r,o)=>{const a=X(null),i=()=>{let d;return $t(e.value)?d=document.querySelector(e.value):Rt(e.value)?d=e.value():d=e.value,d},s=()=>{const d=i();if(!d||!t.value){a.value=null;return}$6t(d)||d.scrollIntoView(o.value);const{left:f,top:h,width:g,height:p}=d.getBoundingClientRect();a.value={left:f,top:h,width:g,height:p,radius:0}};Kt(()=>{Ze([t,e],()=>{s()},{immediate:!0}),window.addEventListener("resize",s)}),Ar(()=>{window.removeEventListener("resize",s)});const l=d=>{var f;return(f=ct(n.value.offset)?n.value.offset[d]:n.value.offset)!=null?f:6},u=K(()=>{var d;if(!a.value)return a.value;const f=l(0),h=l(1),g=((d=n.value)==null?void 0:d.radius)||2;return{left:a.value.left-f,top:a.value.top-h,width:a.value.width+f*2,height:a.value.height+h*2,radius:g}}),c=K(()=>{const d=i();return!r.value||!d||!window.DOMRect?d||void 0:{getBoundingClientRect(){var f,h,g,p;return window.DOMRect.fromRect({width:((f=u.value)==null?void 0:f.width)||0,height:((h=u.value)==null?void 0:h.height)||0,x:((g=u.value)==null?void 0:g.left)||0,y:((p=u.value)==null?void 0:p.top)||0})}}});return{mergedPosInfo:u,triggerTarget:c}},nU=Symbol("ElTour");function $6t(e){const t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:r,right:o,bottom:a,left:i}=e.getBoundingClientRect();return r>=0&&i>=0&&o<=t&&a<=n}const B6t=(e,t,n,r,o,a,i,s)=>{const l=X(),u=X(),c=X({}),d={x:l,y:u,placement:r,strategy:o,middlewareData:c},f=K(()=>{const v=[WEe(b(a)),V3t(),U3t(),R6t()];return b(s)&&b(n)&&v.push(qEe({element:b(n)})),v}),h=async()=>{if(!Nn)return;const v=b(e),y=b(t);if(!v||!y)return;const _=await KEe(v,y,{placement:b(r),strategy:b(o),middleware:b(f)});c8(d).forEach(C=>{d[C].value=_[C]})},g=K(()=>{if(!b(e))return{position:"fixed",top:"50%",left:"50%",transform:"translate3d(-50%, -50%, 0)",maxWidth:"100vw",zIndex:b(i)};const{overflow:v}=b(c);return{position:b(o),zIndex:b(i),top:b(u)!=null?`${b(u)}px`:"",left:b(l)!=null?`${b(l)}px`:"",maxWidth:v!=null&&v.maxWidth?`${v==null?void 0:v.maxWidth}px`:""}}),p=K(()=>{if(!b(s))return{};const{arrow:v}=b(c);return{left:(v==null?void 0:v.x)!=null?`${v==null?void 0:v.x}px`:"",top:(v==null?void 0:v.y)!=null?`${v==null?void 0:v.y}px`:""}});let m;return Kt(()=>{const v=b(e),y=b(t);v&&y&&(m=N3t(v,y,h)),Wi(()=>{h()})}),Ar(()=>{m&&m()}),{update:h,contentStyle:g,arrowStyle:p}},R6t=()=>({name:"overflow",async fn(e){const t=await L3t(e);let n=0;return t.left>0&&(n=t.left),t.right>0&&(n=t.right),{data:{maxWidth:e.rects.floating.width-n}}}}),N6t=ne({name:"ElTourMask",inheritAttrs:!1}),L6t=ne({...N6t,props:M6t,setup(e){const t=e,{ns:n}=kt(nU),r=K(()=>{var s,l;return(l=(s=t.pos)==null?void 0:s.radius)!=null?l:2}),o=K(()=>{const s=r.value,l=`a${s},${s} 0 0 1`;return{topRight:`${l} ${s},${s}`,bottomRight:`${l} ${-s},${s}`,bottomLeft:`${l} ${-s},${-s}`,topLeft:`${l} ${s},${-s}`}}),a=K(()=>{const s=window.innerWidth,l=window.innerHeight,u=o.value,c=`M${s},0 L0,0 L0,${l} L${s},${l} L${s},0 Z`,d=r.value;return t.pos?`${c} M${t.pos.left+d},${t.pos.top} h${t.pos.width-d*2} ${u.topRight} v${t.pos.height-d*2} ${u.bottomRight} h${-t.pos.width+d*2} ${u.bottomLeft} v${-t.pos.height+d*2} ${u.topLeft} z`:c}),i=K(()=>({fill:t.fill,pointerEvents:"auto",cursor:"auto"}));return Pre(tr(t,"visible"),{ns:n}),(s,l)=>s.visible?(I(),j("div",Dn({key:0,class:b(n).e("mask"),style:{position:"fixed",left:0,right:0,top:0,bottom:0,zIndex:s.zIndex,pointerEvents:s.pos&&s.targetAreaClickable?"none":"auto"}},s.$attrs),[(I(),j("svg",{style:{width:"100%",height:"100%"}},[w("path",{class:ee(b(n).e("hollow")),style:Nt(b(i)),d:b(a)},null,14,["d"])]))],16)):be("v-if",!0)}});var U6t=vt(L6t,[["__file","mask.vue"]]);const V6t=["absolute","fixed"],z6t=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],_oe=ht({placement:{type:$e(String),values:z6t,default:"bottom"},reference:{type:$e(Object),default:null},strategy:{type:$e(String),values:V6t,default:"absolute"},offset:{type:Number,default:10},showArrow:Boolean,zIndex:{type:Number,default:2001}}),j6t={close:()=>!0},H6t=ne({name:"ElTourContent"}),W6t=ne({...H6t,props:_oe,emits:j6t,setup(e,{emit:t}){const n=e,r=X(n.placement),o=X(n.strategy),a=X(null),i=X(null);Ze(()=>n.placement,()=>{r.value=n.placement});const{contentStyle:s,arrowStyle:l}=B6t(tr(n,"reference"),a,i,r,o,tr(n,"offset"),tr(n,"zIndex"),tr(n,"showArrow")),u=K(()=>r.value.split("-")[0]),{ns:c}=kt(nU),d=()=>{t("close")},f=h=>{h.detail.focusReason==="pointer"&&h.preventDefault()};return(h,g)=>(I(),j("div",{ref_key:"contentRef",ref:a,style:Nt(b(s)),class:ee(b(c).e("content")),"data-side":b(u),tabindex:"-1"},[D(b(yC),{loop:"",trapped:"","focus-start-el":"container","focus-trap-el":a.value||void 0,onReleaseRequested:d,onFocusoutPrevented:f},{default:A(()=>[Ne(h.$slots,"default")]),_:3},8,["focus-trap-el"]),h.showArrow?(I(),j("span",{key:0,ref_key:"arrowRef",ref:i,style:Nt(b(l)),class:ee(b(c).e("arrow"))},null,6)):be("v-if",!0)],14,["data-side"]))}});var q6t=vt(W6t,[["__file","content.vue"]]),K6t=ne({name:"ElTourSteps",props:{current:{type:Number,default:0}},emits:["update-total"],setup(e,{slots:t,emit:n}){let r=0;return()=>{var o,a;const i=(o=t.default)==null?void 0:o.call(t),s=[];let l=0;function u(c){ct(c)&&c.forEach(d=>{var f;((f=(d==null?void 0:d.type)||{})==null?void 0:f.name)==="ElTourStep"&&(s.push(d),l+=1)})}return i.length&&u(mh((a=i[0])==null?void 0:a.children)),r!==l&&(r=l,n("update-total",l)),s.length?s[e.current]:null}}});const G6t=ht({modelValue:Boolean,current:{type:Number,default:0},showArrow:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeIcon:{type:mr},placement:_oe.placement,contentStyle:{type:$e([Object])},mask:{type:$e([Boolean,Object]),default:!0},gap:{type:$e(Object),default:()=>({offset:6,radius:2})},zIndex:{type:Number},scrollIntoViewOptions:{type:$e([Boolean,Object]),default:()=>({block:"center"})},type:{type:$e(String)},appendTo:{type:LL.to.type,default:"body"},closeOnPressEscape:{type:Boolean,default:!0},targetAreaClickable:{type:Boolean,default:!0}}),Y6t={[en]:e=>hr(e),"update:current":e=>Lt(e),close:e=>Lt(e),finish:()=>!0,change:e=>Lt(e)},X6t=ne({name:"ElTour"}),J6t=ne({...X6t,props:G6t,emits:Y6t,setup(e,{emit:t}){const n=e,r=nt("tour"),o=X(0),a=X(),i=Nxe(n,"current",t,{passive:!0}),s=K(()=>{var T;return(T=a.value)==null?void 0:T.target}),l=K(()=>[r.b(),m.value==="primary"?r.m("primary"):""]),u=K(()=>{var T;return((T=a.value)==null?void 0:T.placement)||n.placement}),c=K(()=>{var T,P;return(P=(T=a.value)==null?void 0:T.contentStyle)!=null?P:n.contentStyle}),d=K(()=>{var T,P;return(P=(T=a.value)==null?void 0:T.mask)!=null?P:n.mask}),f=K(()=>!!d.value&&n.modelValue),h=K(()=>hr(d.value)?void 0:d.value),g=K(()=>{var T,P;return!!s.value&&((P=(T=a.value)==null?void 0:T.showArrow)!=null?P:n.showArrow)}),p=K(()=>{var T,P;return(P=(T=a.value)==null?void 0:T.scrollIntoViewOptions)!=null?P:n.scrollIntoViewOptions}),m=K(()=>{var T,P;return(P=(T=a.value)==null?void 0:T.type)!=null?P:n.type}),{nextZIndex:v}=gC(),y=v(),_=K(()=>{var T;return(T=n.zIndex)!=null?T:y}),{mergedPosInfo:C,triggerTarget:S}=P6t(s,tr(n,"modelValue"),tr(n,"gap"),d,p);Ze(()=>n.modelValue,T=>{T||(i.value=0)});const E=()=>{n.closeOnPressEscape&&(t(en,!1),t("close",i.value))},k=T=>{o.value=T},O=La();return Fn(nU,{currentStep:a,current:i,total:o,showClose:tr(n,"showClose"),closeIcon:tr(n,"closeIcon"),mergedType:m,ns:r,slots:O,updateModelValue(T){t(en,T)},onClose(){t("close",i.value)},onFinish(){t("finish")},onChange(){t(En,i.value)}}),(T,P)=>(I(),j(tt,null,[D(b(bC),{to:T.appendTo},{default:A(()=>{var U,F;return[w("div",Dn({class:b(l)},T.$attrs),[D(U6t,{visible:b(f),fill:(U=b(h))==null?void 0:U.color,style:Nt((F=b(h))==null?void 0:F.style),pos:b(C),"z-index":b(_),"target-area-clickable":T.targetAreaClickable},null,8,["visible","fill","style","pos","z-index","target-area-clickable"]),T.modelValue?(I(),Oe(q6t,{key:b(i),reference:b(S),placement:b(u),"show-arrow":b(g),"z-index":b(_),style:Nt(b(c)),onClose:E},{default:A(()=>[D(b(K6t),{current:b(i),onUpdateTotal:k},{default:A(()=>[Ne(T.$slots,"default")]),_:3},8,["current"])]),_:3},8,["reference","placement","show-arrow","z-index","style"])):be("v-if",!0)],16)]}),_:3},8,["to"]),be(" just for IDE "),be("v-if",!0)],64))}});var Z6t=vt(J6t,[["__file","tour.vue"]]);const Q6t=ht({target:{type:$e([String,Object,Function])},title:String,description:String,showClose:{type:Boolean,default:void 0},closeIcon:{type:mr},showArrow:{type:Boolean,default:void 0},placement:_oe.placement,mask:{type:$e([Boolean,Object]),default:void 0},contentStyle:{type:$e([Object])},prevButtonProps:{type:$e(Object)},nextButtonProps:{type:$e(Object)},scrollIntoViewOptions:{type:$e([Boolean,Object]),default:void 0},type:{type:$e(String)}}),e8t={close:()=>!0},t8t=ne({name:"ElTourStep"}),n8t=ne({...t8t,props:Q6t,emits:e8t,setup(e,{emit:t}){const n=e,{Close:r}=S5e,{t:o}=Un(),{currentStep:a,current:i,total:s,showClose:l,closeIcon:u,mergedType:c,ns:d,slots:f,updateModelValue:h,onClose:g,onFinish:p,onChange:m}=kt(nU);Ze(n,O=>{a.value=O},{immediate:!0});const v=K(()=>{var O;return(O=n.showClose)!=null?O:l.value}),y=K(()=>{var O,T;return(T=(O=n.closeIcon)!=null?O:u.value)!=null?T:r}),_=O=>{if(O)return OXe(O,["children","onClick"])},C=()=>{var O,T;i.value-=1,(O=n.prevButtonProps)!=null&&O.onClick&&((T=n.prevButtonProps)==null||T.onClick()),m()},S=()=>{var O;i.value>=s.value-1?E():i.value+=1,(O=n.nextButtonProps)!=null&&O.onClick&&n.nextButtonProps.onClick(),m()},E=()=>{k(),p()},k=()=>{h(!1),g(),t("close")};return(O,T)=>(I(),j(tt,null,[b(v)?(I(),j("button",{key:0,"aria-label":"Close",class:ee(b(d).e("closebtn")),type:"button",onClick:k},[D(b(Tt),{class:ee(b(d).e("close"))},{default:A(()=>[(I(),Oe(_n(b(y))))]),_:1},8,["class"])],2)):be("v-if",!0),w("header",{class:ee([b(d).e("header"),{"show-close":b(l)}])},[Ne(O.$slots,"header",{},()=>[w("span",{role:"heading",class:ee(b(d).e("title"))},se(O.title),3)])],2),w("div",{class:ee(b(d).e("body"))},[Ne(O.$slots,"default",{},()=>[w("span",null,se(O.description),1)])],2),w("footer",{class:ee(b(d).e("footer"))},[w("div",{class:ee(b(d).b("indicators"))},[b(f).indicators?(I(),Oe(_n(b(f).indicators),{key:0,current:b(i),total:b(s)},null,8,["current","total"])):(I(!0),j(tt,{key:1},wt(b(s),(P,U)=>(I(),j("span",{key:P,class:ee([b(d).b("indicator"),U===b(i)?"is-active":""])},null,2))),128))],2),w("div",{class:ee(b(d).b("buttons"))},[b(i)>0?(I(),Oe(b(Br),Dn({key:0,size:"small",type:b(c)},_(O.prevButtonProps),{onClick:C}),{default:A(()=>{var P,U;return[ce(se((U=(P=O.prevButtonProps)==null?void 0:P.children)!=null?U:b(o)("el.tour.previous")),1)]}),_:1},16,["type"])):be("v-if",!0),b(i)<=b(s)-1?(I(),Oe(b(Br),Dn({key:1,size:"small",type:b(c)==="primary"?"default":"primary"},_(O.nextButtonProps),{onClick:S}),{default:A(()=>{var P,U;return[ce(se((U=(P=O.nextButtonProps)==null?void 0:P.children)!=null?U:b(i)===b(s)-1?b(o)("el.tour.finish"):b(o)("el.tour.next")),1)]}),_:1},16,["type"])):be("v-if",!0)],2)],2)],64))}});var hke=vt(n8t,[["__file","step.vue"]]);const r8t=dn(Z6t,{TourStep:hke}),o8t=vo(hke),a8t=ht({container:{type:$e([String,Object])},offset:{type:Number,default:0},bound:{type:Number,default:15},duration:{type:Number,default:300},marker:{type:Boolean,default:!0},type:{type:$e(String),default:"default"},direction:{type:$e(String),default:"vertical"},selectScrollTop:{type:Boolean,default:!1}}),i8t={change:e=>$t(e),click:(e,t)=>e instanceof MouseEvent&&($t(t)||Ln(t))},pke=Symbol("anchor"),sO=e=>{if(!Nn||e==="")return null;if($t(e))try{return document.querySelector(e)}catch{return null}return e};function s8t(e){let t=0;const n=(...r)=>{t&&Hb(t),t=$m(()=>{e(...r),t=0})};return n.cancel=()=>{Hb(t),t=0},n}const l8t=ne({name:"ElAnchor"}),u8t=ne({...l8t,props:a8t,emits:i8t,setup(e,{expose:t,emit:n}){const r=e,o=X(""),a=X(null),i=X(null),s=X(),l={};let u=!1,c=0;const d=nt("anchor"),f=K(()=>[d.b(),r.type==="underline"?d.m("underline"):"",d.m(r.direction)]),h=O=>{l[O.href]=O.el},g=O=>{delete l[O]},p=O=>{o.value!==O&&(o.value=O,n(En,O))};let m=null;const v=O=>{if(!s.value)return;const T=sO(O);if(!T)return;m&&m(),u=!0;const P=Wfe(T,s.value),U=VY(T,P),F=P.scrollHeight-P.clientHeight,H=Math.min(U-r.offset,F);m=RJe(s.value,c,H,r.duration,()=>{setTimeout(()=>{u=!1},20)})},y=O=>{O&&(p(O),v(O))},_=(O,T)=>{n("click",O,T),y(T)},C=s8t(()=>{s.value&&(c=qfe(s.value));const O=S();u||Ln(O)||p(O)}),S=()=>{if(!s.value)return;const O=qfe(s.value),T=[];for(const P of Object.keys(l)){const U=sO(P);if(!U)continue;const F=Wfe(U,s.value),H=VY(U,F);T.push({top:H-r.offset-r.bound,href:P})}T.sort((P,U)=>P.top-U.top);for(let P=0;PO))return U.href}},E=()=>{const O=sO(r.container);!O||AL(O)?s.value=window:s.value=O};xr(s,"scroll",C);const k=K(()=>{if(!a.value||!i.value||!o.value)return{};const O=l[o.value];if(!O)return{};const T=a.value.getBoundingClientRect(),P=i.value.getBoundingClientRect(),U=O.getBoundingClientRect();return r.direction==="horizontal"?{left:`${U.left-T.left}px`,width:`${U.width}px`,opacity:1}:{top:`${U.top-T.top+(U.height-P.height)/2}px`,opacity:1}});return Kt(()=>{E();const O=decodeURIComponent(window.location.hash);sO(O)?y(O):C()}),Ze(()=>r.container,()=>{E()}),Fn(pke,{ns:d,direction:r.direction,currentAnchor:o,addLink:h,removeLink:g,handleClick:_}),t({scrollTo:y}),(O,T)=>(I(),j("div",{ref_key:"anchorRef",ref:a,class:ee(b(f))},[O.marker?(I(),j("div",{key:0,ref_key:"markerRef",ref:i,class:ee(b(d).e("marker")),style:Nt(b(k))},null,6)):be("v-if",!0),w("div",{class:ee(b(d).e("list"))},[Ne(O.$slots,"default")],2)],2))}});var c8t=vt(u8t,[["__file","anchor.vue"]]);const d8t=ht({title:String,href:String}),f8t=ne({name:"ElAnchorLink"}),h8t=ne({...f8t,props:d8t,setup(e){const t=e,n=X(null),{ns:r,direction:o,currentAnchor:a,addLink:i,removeLink:s,handleClick:l}=kt(pke),u=K(()=>[r.e("link"),r.is("active",a.value===t.href)]),c=d=>{l(d,t.href)};return Ze(()=>t.href,(d,f)=>{It(()=>{f&&s(f),d&&i({href:d,el:n.value})})}),Kt(()=>{const{href:d}=t;d&&i({href:d,el:n.value})}),Ar(()=>{const{href:d}=t;d&&s(d)}),(d,f)=>(I(),j("div",{class:ee(b(r).e("item"))},[w("a",{ref_key:"linkRef",ref:n,class:ee(b(u)),href:d.href,onClick:c},[Ne(d.$slots,"default",{},()=>[ce(se(d.title),1)])],10,["href"]),d.$slots["sub-link"]&&b(o)==="vertical"?(I(),j("div",{key:0,class:ee(b(r).e("list"))},[Ne(d.$slots,"sub-link")],2)):be("v-if",!0)],2))}});var gke=vt(h8t,[["__file","anchor-link.vue"]]);const p8t=dn(c8t,{AnchorLink:gke}),g8t=vo(gke),vke={label:"label",value:"value",disabled:"disabled"},v8t=ht({direction:{type:$e(String),default:"horizontal"},options:{type:$e(Array),default:()=>[]},modelValue:{type:[String,Number,Boolean],default:void 0},props:{type:$e(Object),default:()=>vke},block:Boolean,size:Aa,disabled:Boolean,validateEvent:{type:Boolean,default:!0},id:String,name:String,...ts(["ariaLabel"])}),m8t={[en]:e=>$t(e)||Lt(e)||hr(e),[En]:e=>$t(e)||Lt(e)||hr(e)},y8t=ne({name:"ElSegmented"}),b8t=ne({...y8t,props:v8t,emits:m8t,setup(e,{emit:t}){const n=e,r=nt("segmented"),o=Gi(),a=ma(),i=ns(),{formItem:s}=ws(),{inputId:l,isLabeledByFormItem:u}=vd(n,{formItemContext:s}),c=X(null),d=aJe(),f=Bn({isInit:!1,width:0,height:0,translateX:0,translateY:0,focusVisible:!1}),h=P=>{const U=p(P);t(en,U),t(En,U)},g=K(()=>({...vke,...n.props})),p=P=>vn(P)?P[g.value.value]:P,m=P=>vn(P)?P[g.value.label]:P,v=P=>!!(i.value||vn(P)&&P[g.value.disabled]),y=P=>n.modelValue===p(P),_=P=>n.options.find(U=>p(U)===P),C=P=>[r.e("item"),r.is("selected",y(P)),r.is("disabled",v(P))],S=()=>{if(!c.value)return;const P=c.value.querySelector(".is-selected"),U=c.value.querySelector(".is-selected input");if(!P||!U){f.width=0,f.height=0,f.translateX=0,f.translateY=0,f.focusVisible=!1;return}const F=P.getBoundingClientRect();f.isInit=!0,n.direction==="vertical"?(f.height=F.height,f.translateY=P.offsetTop):(f.width=F.width,f.translateX=P.offsetLeft);try{f.focusVisible=U.matches(":focus-visible")}catch{}},E=K(()=>[r.b(),r.m(a.value),r.is("block",n.block)]),k=K(()=>({width:n.direction==="vertical"?"100%":`${f.width}px`,height:n.direction==="vertical"?`${f.height}px`:"100%",transform:n.direction==="vertical"?`translateY(${f.translateY}px)`:`translateX(${f.translateX}px)`,display:f.isInit?"block":"none"})),O=K(()=>[r.e("item-selected"),r.is("disabled",v(_(n.modelValue))),r.is("focus-visible",f.focusVisible)]),T=K(()=>n.name||o.value);return co(c,S),Ze(d,S),Ze(()=>n.modelValue,()=>{var P;S(),n.validateEvent&&((P=s==null?void 0:s.validate)==null||P.call(s,"change").catch(U=>void 0))},{flush:"post"}),(P,U)=>P.options.length?(I(),j("div",{key:0,id:b(l),ref_key:"segmentedRef",ref:c,class:ee(b(E)),role:"radiogroup","aria-label":b(u)?void 0:P.ariaLabel||"segmented","aria-labelledby":b(u)?b(s).labelId:void 0},[w("div",{class:ee([b(r).e("group"),b(r).m(n.direction)])},[w("div",{style:Nt(b(k)),class:ee(b(O))},null,6),(I(!0),j(tt,null,wt(P.options,(F,H)=>(I(),j("label",{key:H,class:ee(C(F))},[w("input",{class:ee(b(r).e("item-input")),type:"radio",name:b(T),disabled:v(F),checked:y(F),onChange:R=>h(F)},null,42,["name","disabled","checked","onChange"]),w("div",{class:ee(b(r).e("item-label"))},[Ne(P.$slots,"default",{item:F},()=>[ce(se(m(F)),1)])],2)],2))),128))],2)],10,["id","aria-label","aria-labelledby"])):be("v-if",!0)}});var _8t=vt(b8t,[["__file","segmented.vue"]]);const w8t=dn(_8t),C8t=(e,t)=>{const n=e.toLowerCase();return(t.label||t.value).toLowerCase().includes(n)},x8t=(e,t,n)=>{const{selectionEnd:r}=e;if(r===null)return;const o=e.value,a=Vs(t);let i=-1,s;for(let l=r-1;l>=0;--l){const u=o[l];if(u===n||u===` +`||u==="\r"){i=l;continue}if(a.includes(u)){const c=i===-1?r:i;s={pattern:o.slice(l+1,c),start:l+1,end:c,prefix:u,prefixIndex:l,splitIndex:i,selectionEnd:r};break}}return s},S8t=(e,t={debug:!1,useSelectionEnd:!1})=>{const n=e.selectionStart!==null?e.selectionStart:0,r=e.selectionEnd!==null?e.selectionEnd:0,o=t.useSelectionEnd?r:n,a=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];if(t.debug){const f=document.querySelector("#input-textarea-caret-position-mirror-div");f!=null&&f.parentNode&&f.parentNode.removeChild(f)}const i=document.createElement("div");i.id="input-textarea-caret-position-mirror-div",document.body.appendChild(i);const s=i.style,l=window.getComputedStyle(e),u=e.nodeName==="INPUT";s.whiteSpace=u?"nowrap":"pre-wrap",u||(s.wordWrap="break-word"),s.position="absolute",t.debug||(s.visibility="hidden"),a.forEach(f=>{if(u&&f==="lineHeight")if(l.boxSizing==="border-box"){const h=Number.parseInt(l.height),g=Number.parseInt(l.paddingTop)+Number.parseInt(l.paddingBottom)+Number.parseInt(l.borderTopWidth)+Number.parseInt(l.borderBottomWidth),p=g+Number.parseInt(l.lineHeight);h>p?s.lineHeight=`${h-g}px`:h===p?s.lineHeight=l.lineHeight:s.lineHeight="0"}else s.lineHeight=l.height;else s[f]=l[f]}),tre()?e.scrollHeight>Number.parseInt(l.height)&&(s.overflowY="scroll"):s.overflow="hidden",i.textContent=e.value.slice(0,Math.max(0,o)),u&&i.textContent&&(i.textContent=i.textContent.replace(/\s/g," "));const c=document.createElement("span");c.textContent=e.value.slice(Math.max(0,o))||".",c.style.position="relative",c.style.left=`${-e.scrollLeft}px`,c.style.top=`${-e.scrollTop}px`,i.appendChild(c);const d={top:c.offsetTop+Number.parseInt(l.borderTopWidth),left:c.offsetLeft+Number.parseInt(l.borderLeftWidth),height:Number.parseInt(l.fontSize)*1.5};return t.debug?c.style.backgroundColor="#aaa":document.body.removeChild(i),d.left>=e.clientWidth&&(d.left=e.clientWidth),d},D8t=ht({...nre,options:{type:$e(Array),default:()=>[]},prefix:{type:$e([String,Array]),default:"@",validator:e=>$t(e)?e.length===1:e.every(t=>$t(t)&&t.length===1)},split:{type:String,default:" ",validator:e=>e.length===1},filterOption:{type:$e([Boolean,Function]),default:()=>C8t,validator:e=>e===!1?!0:Rt(e)},placement:{type:$e(String),default:"bottom"},showArrow:Boolean,offset:{type:Number,default:0},whole:Boolean,checkIsWhole:{type:$e(Function)},modelValue:String,loading:Boolean,popperClass:{type:String,default:""},popperOptions:{type:$e(Object),default:()=>({})}}),E8t={[en]:e=>$t(e),input:e=>$t(e),search:(e,t)=>$t(e)&&$t(t),select:(e,t)=>$t(e.value)&&$t(t),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},k8t=ht({options:{type:$e(Array),default:()=>[]},loading:Boolean,disabled:Boolean,contentId:String,ariaLabel:String}),A8t={select:e=>$t(e.value)},T8t=ne({name:"ElMentionDropdown"}),O8t=ne({...T8t,props:k8t,emits:A8t,setup(e,{expose:t,emit:n}){const r=e,o=nt("mention"),{t:a}=Un(),i=X(-1),s=X(),l=X(),u=X(),c=(_,C)=>[o.be("dropdown","item"),o.is("hovering",i.value===C),o.is("disabled",_.disabled||r.disabled)],d=_=>{_.disabled||r.disabled||n("select",_)},f=_=>{i.value=_},h=K(()=>r.disabled||r.options.every(_=>_.disabled)),g=K(()=>r.options[i.value]),p=()=>{g.value&&n("select",g.value)},m=_=>{const{options:C}=r;if(C.length===0||h.value)return;_==="next"?(i.value++,i.value===C.length&&(i.value=0)):_==="prev"&&(i.value--,i.value<0&&(i.value=C.length-1));const S=C[i.value];if(S.disabled){m(_);return}It(()=>v(S))},v=_=>{var C,S,E,k;const{options:O}=r,T=O.findIndex(U=>U.value===_.value),P=(C=l.value)==null?void 0:C[T];if(P){const U=(E=(S=u.value)==null?void 0:S.querySelector)==null?void 0:E.call(S,`.${o.be("dropdown","wrap")}`);U&&Wne(U,P)}(k=s.value)==null||k.handleScroll()};return Ze(()=>r.options,()=>{h.value||r.options.length===0?i.value=-1:i.value=0},{immediate:!0}),t({hoveringIndex:i,navigateOptions:m,selectHoverOption:p,hoverOption:g}),(_,C)=>(I(),j("div",{ref_key:"dropdownRef",ref:u,class:ee(b(o).b("dropdown"))},[_.$slots.header?(I(),j("div",{key:0,class:ee(b(o).be("dropdown","header"))},[Ne(_.$slots,"header")],2)):be("v-if",!0),rn(D(b(id),{id:_.contentId,ref_key:"scrollbarRef",ref:s,tag:"ul","wrap-class":b(o).be("dropdown","wrap"),"view-class":b(o).be("dropdown","list"),role:"listbox","aria-label":_.ariaLabel,"aria-orientation":"vertical"},{default:A(()=>[(I(!0),j(tt,null,wt(_.options,(S,E)=>(I(),j("li",{id:`${_.contentId}-${E}`,ref_for:!0,ref_key:"optionRefs",ref:l,key:E,class:ee(c(S,E)),role:"option","aria-disabled":S.disabled||_.disabled||void 0,"aria-selected":i.value===E,onMousemove:k=>f(E),onClick:zt(k=>d(S),["stop"])},[Ne(_.$slots,"label",{item:S,index:E},()=>{var k;return[w("span",null,se((k=S.label)!=null?k:S.value),1)]})],42,["id","aria-disabled","aria-selected","onMousemove","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class","aria-label"]),[[Pn,_.options.length>0&&!_.loading]]),_.loading?(I(),j("div",{key:1,class:ee(b(o).be("dropdown","loading"))},[Ne(_.$slots,"loading",{},()=>[ce(se(b(a)("el.mention.loading")),1)])],2)):be("v-if",!0),_.$slots.footer?(I(),j("div",{key:2,class:ee(b(o).be("dropdown","footer"))},[Ne(_.$slots,"footer")],2)):be("v-if",!0)],2))}});var F8t=vt(O8t,[["__file","mention-dropdown.vue"]]);const I8t=ne({name:"ElMention",inheritAttrs:!1}),M8t=ne({...I8t,props:D8t,emits:E8t,setup(e,{expose:t,emit:n}){const r=e,o=K(()=>Hd(r,Object.keys(nre))),a=nt("mention"),i=ns(),s=Gi(),l=X(),u=X(),c=X(),d=X(!1),f=X(),h=X(),g=K(()=>r.showArrow?r.placement:`${r.placement}-start`),p=K(()=>r.showArrow?["bottom","top"]:["bottom-start","top-start"]),m=K(()=>{const{filterOption:F,options:H}=r;return!h.value||!F?H:H.filter(R=>F(h.value.pattern,R))}),v=K(()=>d.value&&(!!m.value.length||r.loading)),y=K(()=>{var F;return`${s.value}-${(F=c.value)==null?void 0:F.hoveringIndex}`}),_=F=>{n(en,F),n(Ea,F),T()},C=F=>{var H,R,z,M;if(!(!("code"in F)||(H=l.value)!=null&&H.isComposing))switch(F.code){case St.left:case St.right:T();break;case St.up:case St.down:if(!d.value)return;F.preventDefault(),(R=c.value)==null||R.navigateOptions(F.code===St.up?"prev":"next");break;case St.enter:case St.numpadEnter:if(!d.value)return;F.preventDefault(),(z=c.value)!=null&&z.hoverOption?(M=c.value)==null||M.selectHoverOption():d.value=!1;break;case St.esc:if(!d.value)return;F.preventDefault(),d.value=!1;break;case St.backspace:if(r.whole&&h.value){const{splitIndex:N,selectionEnd:L,pattern:V,prefixIndex:Y,prefix:$}=h.value,B=O();if(!B)return;const W=B.value,J=r.options.find(ie=>ie.value===V);if((Rt(r.checkIsWhole)?r.checkIsWhole(V,$):J)&&N!==-1&&N+1===L){F.preventDefault();const ie=W.slice(0,Y)+W.slice(N+1);n(en,ie),n(Ea,ie);const Z=Y;It(()=>{B.selectionStart=Z,B.selectionEnd=Z,U()})}}}},{wrapperRef:S}=t1(l,{beforeFocus(){return i.value},afterFocus(){T()},beforeBlur(F){var H;return(H=u.value)==null?void 0:H.isFocusInsideContent(F)},afterBlur(){d.value=!1}}),E=()=>{T()},k=F=>{if(!h.value)return;const H=O();if(!H)return;const R=H.value,{split:z}=r,M=R.slice(h.value.end),N=M.startsWith(z),L=`${F.value}${N?"":z}`,V=R.slice(0,h.value.start)+L+M;n(en,V),n(Ea,V),n("select",F,h.value.prefix);const Y=h.value.start+L.length+(N?1:0);It(()=>{H.selectionStart=Y,H.selectionEnd=Y,H.focus(),U()})},O=()=>{var F,H;return r.type==="textarea"?(F=l.value)==null?void 0:F.textarea:(H=l.value)==null?void 0:H.input},T=()=>{setTimeout(()=>{P(),U(),It(()=>{var F;return(F=u.value)==null?void 0:F.updatePopper()})},0)},P=()=>{const F=O();if(!F)return;const H=S8t(F),R=F.getBoundingClientRect(),z=l.value.$el.getBoundingClientRect();f.value={position:"absolute",width:0,height:`${H.height}px`,left:`${H.left+R.left-z.left}px`,top:`${H.top+R.top-z.top}px`}},U=()=>{const F=O();if(document.activeElement!==F){d.value=!1;return}const{prefix:H,split:R}=r;if(h.value=x8t(F,H,R),h.value&&h.value.splitIndex===-1){d.value=!0,n("search",h.value.pattern,h.value.prefix);return}d.value=!1};return t({input:l,tooltip:u,dropdownVisible:v}),(F,H)=>(I(),j("div",{ref_key:"wrapperRef",ref:S,class:ee(b(a).b())},[D(b(fo),Dn(Dn(b(o),F.$attrs),{ref_key:"elInputRef",ref:l,"model-value":F.modelValue,disabled:b(i),role:b(v)?"combobox":void 0,"aria-activedescendant":b(v)?b(y)||"":void 0,"aria-controls":b(v)?b(s):void 0,"aria-expanded":b(v)||void 0,"aria-label":F.ariaLabel,"aria-autocomplete":b(v)?"none":void 0,"aria-haspopup":b(v)?"listbox":void 0,onInput:_,onKeydown:C,onMousedown:E}),eu({_:2},[wt(F.$slots,(R,z)=>({name:z,fn:A(M=>[Ne(F.$slots,z,Hu(Mh(M)))])}))]),1040,["model-value","disabled","role","aria-activedescendant","aria-controls","aria-expanded","aria-label","aria-autocomplete","aria-haspopup"]),D(b(Yi),{ref_key:"tooltipRef",ref:u,visible:b(v),"popper-class":[b(a).e("popper"),F.popperClass],"popper-options":F.popperOptions,placement:b(g),"fallback-placements":b(p),effect:"light",pure:"",offset:F.offset,"show-arrow":F.showArrow},{default:A(()=>[w("div",{style:Nt(f.value)},null,4)]),content:A(()=>{var R;return[D(F8t,{ref_key:"dropdownRef",ref:c,options:b(m),disabled:b(i),loading:F.loading,"content-id":b(s),"aria-label":F.ariaLabel,onSelect:k,onClick:zt((R=l.value)==null?void 0:R.focus,["stop"])},eu({_:2},[wt(F.$slots,(z,M)=>({name:M,fn:A(N=>[Ne(F.$slots,M,Hu(Mh(N)))])}))]),1032,["options","disabled","loading","content-id","aria-label","onClick"])]}),_:3},8,["visible","popper-class","popper-options","placement","fallback-placements","offset","show-arrow"])],2))}});var P8t=vt(M8t,[["__file","mention.vue"]]);const $8t=dn(P8t),B8t=ht({layout:{type:String,default:"horizontal",values:["horizontal","vertical"]}}),mke=Symbol("splitterRootContextKey");function R8t(e){const t=X(),{width:n,height:r}=fJe(t),o=K(()=>e.value==="horizontal"?n.value:r.value);return{containerEl:t,containerSize:o}}function woe(e){return Number(e.slice(0,-1))/100}function Coe(e){return Number(e.slice(0,-2))}function xoe(e){return $t(e)&&e.endsWith("%")}function Soe(e){return $t(e)&&e.endsWith("px")}function N8t(e,t){const n=K(()=>e.value.map(s=>s.size)),r=K(()=>e.value.length),o=X([]);Ze([n,r,t],()=>{var s;let l=[],u=0;for(let d=0;dd+(f||0),0);if(c>1||!u){const d=1/c;l=l.map(f=>f===void 0?0:f*d)}else{const d=(1-c)/u;l=l.map(f=>f===void 0?d:f)}o.value=l});const a=s=>s*t.value,i=K(()=>o.value.map(a));return{percentSizes:o,pxSizes:i}}function L8t(e,t,n){const r=h=>h*t.value||0;function o(h,g){return xoe(h)?r(woe(h)):Soe(h)?Coe(h):h??g}const a=X(null);let i=[];const s=K(()=>e.value.map(h=>[h.min,h.max])),l=h=>{a.value={index:h,confirmed:!1},i=n.value},u=(h,g)=>{var p,m;let v=null;if((!a.value||!a.value.confirmed)&&g!==0){if(g>0)v=h,a.value={index:h,confirmed:!0};else for(let P=h;P>=0;P-=1)if(i[P]>0){v=P,a.value={index:P,confirmed:!0};break}}const y=(m=v??((p=a.value)==null?void 0:p.index))!=null?m:h,_=[...i],C=y+1,S=o(s.value[y][0],0),E=o(s.value[C][0],0),k=o(s.value[y][1],t.value||0),O=o(s.value[C][1],t.value||0);let T=g;_[y]+Tk&&(T=k-_[y]),_[C]-T>O&&(T=_[C]-O),_[y]+=T,_[C]-=T,e.value.forEach((P,U)=>{P.size=_[U]})},c=()=>{a.value=null,i=[]},d=[];return{onMoveStart:l,onMoving:u,onMoveEnd:c,movingIndex:a,onCollapse:(h,g)=>{const p=n.value,m=g==="start"?h:h+1,v=g==="start"?h+1:h,y=p[m],_=p[v];if(y!==0&&_!==0)p[m]=0,p[v]+=y,d[h]=y;else{const C=y+_,S=d[h],E=C-S;p[v]=S,p[m]=E}e.value.forEach((C,S)=>{C.size=p[S]})}}}const U8t=ne({name:"ElSplitter"}),V8t=ne({...U8t,props:B8t,emits:["resizeStart","resize","resizeEnd"],setup(e,{emit:t}){const n=e,r=nt("splitter"),{containerEl:o,containerSize:a}=R8t(tr(n,"layout")),{removeChild:i,children:s,addChild:l}=UL(bn(),"ElSplitterPanel");Ze(s,()=>{s.value.forEach((_,C)=>{_.setIndex(C)})});const{percentSizes:u,pxSizes:c}=N8t(s,a),{onMoveStart:d,onMoving:f,onMoveEnd:h,onCollapse:g,movingIndex:p}=L8t(s,a,c),m=_=>{d(_),t("resizeStart",_,c.value)},v=(_,C)=>{f(_,C),t("resize",_,c.value)},y=_=>{h(),t("resizeEnd",_,c.value)};return Fn(mke,Bn({panels:s,percentSizes:u,pxSizes:c,layout:n.layout,movingIndex:p,containerSize:a,onMoveStart:m,onMoving:v,onMoveEnd:y,onCollapse:g,registerPanel:_=>{s.value.push(_)},sortPanel:l,unregisterPanel:i})),(_,C)=>(I(),j("div",{ref_key:"containerEl",ref:o,class:ee([b(r).b(),b(r).e(_.layout)])},[Ne(_.$slots,"default"),be(" Prevent iframe touch events from breaking "),b(p)?(I(),j("div",{key:0,class:ee([b(r).e("mask"),b(r).e(`mask-${_.layout}`)])},null,2)):be("v-if",!0)],2))}});var z8t=vt(V8t,[["__file","splitter.vue"]]);function j8t(e){return e&&vn(e)?e:{start:!!e,end:!!e}}function Fpe(e,t,n,r){return!!(e!=null&&e.collapsible.end&&t>0||n!=null&&n.collapsible.start&&r===0&&t>0)}const H8t=ne({name:"ElSplitterBar"}),W8t=ne({...H8t,props:{index:{type:Number,required:!0},layout:{type:String,values:["horizontal","vertical"],default:"horizontal"},resizable:{type:Boolean,default:!0},startCollapsible:{type:Boolean},endCollapsible:{type:Boolean}},emits:["moveStart","moving","moveEnd","collapse"],setup(e,{emit:t}){const n=e,r=nt("splitter-bar"),o=K(()=>n.layout==="horizontal"),a=K(()=>o.value?{width:0}:{height:0}),i=K(()=>({width:o.value?"16px":"100%",height:o.value?"100%":"16px",cursor:o.value?"col-resize":"row-resize",touchAction:"none"})),s=K(()=>{const v=r.e("dragger");let y=o.value?`${v}-horizontal`:`${v}-vertical`;return l.value&&(y+=` ${v}-active`),y}),l=X(null),u=v=>{n.resizable&&(l.value=[v.pageX,v.pageY],t("moveStart",n.index),window.addEventListener("mouseup",h),window.addEventListener("mousemove",d))},c=v=>{if(n.resizable&&v.touches.length===1){v.preventDefault();const y=v.touches[0];l.value=[y.pageX,y.pageY],t("moveStart",n.index),window.addEventListener("touchend",g),window.addEventListener("touchmove",f)}},d=v=>{const{pageX:y,pageY:_}=v,C=y-l.value[0],S=_-l.value[1],E=o.value?C:S;t("moving",n.index,E)},f=v=>{if(v.touches.length===1){v.preventDefault();const y=v.touches[0],_=y.pageX-l.value[0],C=y.pageY-l.value[1],S=o.value?_:C;t("moving",n.index,S)}},h=()=>{l.value=null,window.removeEventListener("mouseup",h),window.removeEventListener("mousemove",d),t("moveEnd",n.index)},g=()=>{l.value=null,window.removeEventListener("touchend",g),window.removeEventListener("touchmove",f),t("moveEnd",n.index)},p=K(()=>o.value?uf:mC),m=K(()=>o.value?_i:lc);return(v,y)=>(I(),j("div",{class:ee([b(r).b()]),style:Nt(b(a))},[e.startCollapsible?(I(),j("div",{key:0,class:ee([b(r).e("collapse-icon"),b(r).e(`${e.layout}-collapse-icon-start`)]),onClick:_=>t("collapse",e.index,"start")},[Ne(v.$slots,"start-collapsible",{},()=>[(I(),Oe(_n(b(p)),{style:{width:"12px",height:"12px"}}))])],10,["onClick"])):be("v-if",!0),w("div",{class:ee([b(r).e("dragger"),b(s),e.resizable?"":b(r).e("disable")]),style:Nt(b(i)),onMousedown:u,onTouchstart:c},null,38),e.endCollapsible?(I(),j("div",{key:1,class:ee([b(r).e("collapse-icon"),b(r).e(`${e.layout}-collapse-icon-end`)]),onClick:_=>t("collapse",e.index,"end")},[Ne(v.$slots,"end-collapsible",{},()=>[(I(),Oe(_n(b(m)),{style:{width:"12px",height:"12px"}}))])],10,["onClick"])):be("v-if",!0)],6))}});var q8t=vt(W8t,[["__file","split-bar.vue"]]);const K8t=ht({min:{type:[String,Number]},max:{type:[String,Number]},size:{type:[String,Number]},resizable:{type:Boolean,default:!0},collapsible:{type:Boolean,default:!1}}),yke="ElSplitterPanel",G8t=ne({name:yke}),Y8t=ne({...G8t,props:K8t,emits:["update:size"],setup(e,{emit:t}){const n=e,r=nt("splitter-panel"),o=kt(mke);o||oa(yke,"usage: ");const{panels:a,layout:i,containerSize:s,pxSizes:l}=Ra(o),{registerPanel:u,sortPanel:c,unregisterPanel:d,onCollapse:f,onMoveEnd:h,onMoveStart:g,onMoving:p}=o,m=X(),v=bn().uid,y=X(0),_=K(()=>a.value[y.value]),C=z=>{y.value=z},S=K(()=>{var z;return _.value&&(z=l.value[y.value])!=null?z:0}),E=K(()=>{var z;return _.value&&(z=l.value[y.value+1])!=null?z:0}),k=K(()=>_.value?a.value[y.value+1]:null),O=K(()=>{var z;return k.value?n.resizable&&((z=k.value)==null?void 0:z.resizable)&&(S.value!==0||!n.min)&&(E.value!==0||!k.value.min):!1}),T=K(()=>_.value?y.value!==a.value.length-1:!1),P=K(()=>Fpe(_.value,S.value,k.value,E.value)),U=K(()=>Fpe(k.value,E.value,_.value,S.value));function F(z){return xoe(z)?woe(z)*s.value||0:Soe(z)?Coe(z):z??0}let H=!1;Ze(()=>n.size,()=>{if(_.value){const z=F(n.size),M=F(n.max),N=F(n.min),L=Math.min(Math.max(z,N||0),M||z);L!==z&&(H=!0,t("update:size",L)),_.value.size=L,It(()=>H=!1)}}),Ze(()=>{var z;return(z=_.value)==null?void 0:z.size},z=>{!H&&z!==n.size&&t("update:size",z)}),Ze(()=>n.resizable,z=>{_.value&&(_.value.resizable=z)});const R=Bn({el:m.value,uid:v,setIndex:C,...n,collapsible:j8t(n.collapsible)});return u(R),Kt(()=>{c(R)}),gd(()=>d==null?void 0:d(v)),(z,M)=>(I(),j(tt,null,[w("div",Dn({ref_key:"panelEl",ref:m,class:[b(r).b()],style:{flexBasis:`${b(S)}px`}},z.$attrs),[Ne(z.$slots,"default")],16),b(T)?(I(),Oe(q8t,{key:0,index:y.value,layout:b(i),resizable:b(O),"start-collapsible":b(P),"end-collapsible":b(U),onMoveStart:b(g),onMoving:b(p),onMoveEnd:b(h),onCollapse:b(f)},{"start-collapsible":A(()=>[Ne(z.$slots,"start-collapsible")]),"end-collapsible":A(()=>[Ne(z.$slots,"end-collapsible")]),_:3},8,["index","layout","resizable","start-collapsible","end-collapsible","onMoveStart","onMoving","onMoveEnd","onCollapse"])):be("v-if",!0)],64))}});var bke=vt(Y8t,[["__file","split-panel.vue"]]);const X8t=dn(z8t,{SplitPanel:bke}),J8t=vo(bke);var Z8t=[zJe,pT,mct,_4t,xct,Oct,nSe,zct,jct,Br,mre,Pdt,uc,tft,nft,tht,kSe,sht,Xi,vft,yre,r1,jL,HL,zL,Xht,Qht,dpt,fpt,hpt,ppt,gpt,qL,Bgt,Rgt,Js,$re,o0t,o1,a1,i1,bf,Xh,_f,Tt,tmt,mDe,fo,Kg,vmt,Cmt,CDe,xDe,Vmt,zmt,Gmt,ADe,j1t,Z1t,J5e,C_,VL,bT,w_,l2t,h2t,s1,id,ii,bs,kDe,J2t,iyt,syt,CT,Oyt,zDe,Vyt,Xyt,Jyt,rbt,cEe,dEe,b4t,l1,u1,Si,ooe,XSe,H4t,X4t,J4t,Yi,awt,ywt,lP,Rwt,e6t,AT,I6t,r8t,o8t,p8t,g8t,w8t,$8t,X8t,J8t];const Uc="ElInfiniteScroll",Q8t=50,eCt=200,tCt=0,nCt={delay:{type:Number,default:eCt},distance:{type:Number,default:tCt},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},Doe=(e,t)=>Object.entries(nCt).reduce((n,[r,o])=>{var a,i;const{type:s,default:l}=o,u=e.getAttribute(`infinite-scroll-${r}`);let c=(i=(a=t[u])!=null?a:u)!=null?i:l;return c=c==="false"?!1:c,c=s(c),n[r]=Number.isNaN(c)?l:c,n},{}),_ke=e=>{const{observer:t}=e[Uc];t&&(t.disconnect(),delete e[Uc].observer)},rCt=(e,t)=>{const{container:n,containerEl:r,instance:o,observer:a,lastScrollTop:i}=e[Uc],{disabled:s,distance:l}=Doe(e,o),{clientHeight:u,scrollHeight:c,scrollTop:d}=r,f=d-i;if(e[Uc].lastScrollTop=d,a||s||f<0)return;let h=!1;if(n===e)h=c-(u+d)<=l;else{const{clientTop:g,scrollHeight:p}=e,m=VY(e,r);h=d+u>=m+g+p-l}h&&t.call(o)};function pj(e,t){const{containerEl:n,instance:r}=e[Uc],{disabled:o}=Doe(e,r);o||n.clientHeight===0||(n.scrollHeight<=n.clientHeight?t.call(r):_ke(e))}const oCt={async mounted(e,t){const{instance:n,value:r}=t;Rt(r)||oa(Uc,"'v-infinite-scroll' binding value must be a function"),await It();const{delay:o,immediate:a}=Doe(e,n),i=Hne(e,!0),s=i===window?document.documentElement:i,l=ub(rCt.bind(null,e,r),o);if(i){if(e[Uc]={instance:n,container:i,containerEl:s,delay:o,cb:r,onScroll:l,lastScrollTop:s.scrollTop},a){const u=new MutationObserver(ub(pj.bind(null,e,r),Q8t));e[Uc].observer=u,u.observe(e,{childList:!0,subtree:!0}),pj(e,r)}i.addEventListener("scroll",l)}},unmounted(e){if(!e[Uc])return;const{container:t,onScroll:n}=e[Uc];t==null||t.removeEventListener("scroll",n),_ke(e)},async updated(e){if(!e[Uc])await It();else{const{containerEl:t,cb:n,observer:r}=e[Uc];t.clientHeight&&r&&pj(e,n)}}},AX=oCt;AX.install=e=>{e.directive("InfiniteScroll",AX)};const aCt=AX;function iCt(e,t){let n;const r=X(!1),o=Bn({...e,originalPosition:"",originalOverflow:"",visible:!1});function a(h){o.text=h}function i(){const h=o.parent,g=f.ns;if(!h.vLoadingAddClassList){let p=h.getAttribute("loading-number");p=Number.parseInt(p)-1,p?h.setAttribute("loading-number",p.toString()):(Hs(h,g.bm("parent","relative")),h.removeAttribute("loading-number")),Hs(h,g.bm("parent","hidden"))}s(),d.unmount()}function s(){var h,g;(g=(h=f.$el)==null?void 0:h.parentNode)==null||g.removeChild(f.$el)}function l(){var h;e.beforeClose&&!e.beforeClose()||(r.value=!0,clearTimeout(n),n=setTimeout(u,400),o.visible=!1,(h=e.closed)==null||h.call(e))}function u(){if(!r.value)return;const h=o.parent;r.value=!1,h.vLoadingAddClassList=void 0,i()}const d=ACe(ne({name:"ElLoading",setup(h,{expose:g}){const{ns:p,zIndex:m}=OL("loading");return g({ns:p,zIndex:m}),()=>{const v=o.spinner||o.svg,y=Vt("svg",{class:"circular",viewBox:o.svgViewBox?o.svgViewBox:"0 0 50 50",...v?{innerHTML:v}:{}},[Vt("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none"})]),_=o.text?Vt("p",{class:p.b("text")},[o.text]):void 0;return Vt(xi,{name:p.b("fade"),onAfterLeave:u},{default:A(()=>[rn(D("div",{style:{backgroundColor:o.background||""},class:[p.b("mask"),o.customClass,o.fullscreen?"is-fullscreen":""]},[Vt("div",{class:p.b("spinner")},[y,_])]),[[Pn,o.visible]])])})}}}));Object.assign(d._context,t??{});const f=d.mount(document.createElement("div"));return{...Ra(o),setText:a,removeElLoadingChild:s,close:l,handleAfterLeave:u,vm:f,get $el(){return f.$el}}}let lO;const P3=function(e={}){if(!Nn)return;const t=sCt(e);if(t.fullscreen&&lO)return lO;const n=iCt({...t,closed:()=>{var o;(o=t.closed)==null||o.call(t),t.fullscreen&&(lO=void 0)}},P3._context);lCt(t,t.parent,n),Ipe(t,t.parent,n),t.parent.vLoadingAddClassList=()=>Ipe(t,t.parent,n);let r=t.parent.getAttribute("loading-number");return r?r=`${Number.parseInt(r)+1}`:r="1",t.parent.setAttribute("loading-number",r),t.parent.appendChild(n.$el),It(()=>n.visible.value=t.visible),t.fullscreen&&(lO=n),n},sCt=e=>{var t,n,r,o;let a;return $t(e.target)?a=(t=document.querySelector(e.target))!=null?t:document.body:a=e.target||document.body,{parent:a===document.body||e.body?document.body:a,background:e.background||"",svg:e.svg||"",svgViewBox:e.svgViewBox||"",spinner:e.spinner||!1,text:e.text||"",fullscreen:a===document.body&&((n=e.fullscreen)!=null?n:!0),lock:(r=e.lock)!=null?r:!1,customClass:e.customClass||"",visible:(o=e.visible)!=null?o:!0,beforeClose:e.beforeClose,closed:e.closed,target:a}},lCt=async(e,t,n)=>{const{nextZIndex:r}=n.vm.zIndex||n.vm._.exposed.zIndex,o={};if(e.fullscreen)n.originalPosition.value=lg(document.body,"position"),n.originalOverflow.value=lg(document.body,"overflow"),o.zIndex=r();else if(e.parent===document.body){n.originalPosition.value=lg(document.body,"position"),await It();for(const a of["top","left"]){const i=a==="top"?"scrollTop":"scrollLeft";o[a]=`${e.target.getBoundingClientRect()[a]+document.body[i]+document.documentElement[i]-Number.parseInt(lg(document.body,`margin-${a}`),10)}px`}for(const a of["height","width"])o[a]=`${e.target.getBoundingClientRect()[a]}px`}else n.originalPosition.value=lg(t,"position");for(const[a,i]of Object.entries(o))n.$el.style[a]=i},Ipe=(e,t,n)=>{const r=n.vm.ns||n.vm._.exposed.ns;["absolute","fixed","sticky"].includes(n.originalPosition.value)?Hs(t,r.bm("parent","relative")):Yc(t,r.bm("parent","relative")),e.fullscreen&&e.lock?Yc(t,r.bm("parent","hidden")):Hs(t,r.bm("parent","hidden"))};P3._context=null;const rI=Symbol("ElLoading"),Mpe=(e,t)=>{var n,r,o,a;const i=t.instance,s=h=>vn(t.value)?t.value[h]:void 0,l=h=>{const g=$t(h)&&(i==null?void 0:i[h])||h;return g&&X(g)},u=h=>l(s(h)||e.getAttribute(`element-loading-${Ng(h)}`)),c=(n=s("fullscreen"))!=null?n:t.modifiers.fullscreen,d={text:u("text"),svg:u("svg"),svgViewBox:u("svgViewBox"),spinner:u("spinner"),background:u("background"),customClass:u("customClass"),fullscreen:c,target:(r=s("target"))!=null?r:c?void 0:e,body:(o=s("body"))!=null?o:t.modifiers.body,lock:(a=s("lock"))!=null?a:t.modifiers.lock},f=P3(d);f._context=VS._context,e[rI]={options:d,instance:f}},uCt=(e,t)=>{for(const n of Object.keys(t))kr(t[n])&&(t[n].value=e[n])},VS={mounted(e,t){t.value&&Mpe(e,t)},updated(e,t){const n=e[rI];t.oldValue!==t.value&&(t.value&&!t.oldValue?Mpe(e,t):t.value&&t.oldValue?vn(t.value)&&uCt(t.value,n.options):n==null||n.instance.close())},unmounted(e){var t;(t=e[rI])==null||t.instance.close(),e[rI]=null}};VS._context=null;const cCt={install(e){P3._context=e._context,VS._context=e._context,e.directive("loading",VS),e.config.globalProperties.$loading=P3},directive:VS,service:P3},wke=["primary","success","info","warning","error"],al=Eo({customClass:"",dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",plain:!1,offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:Nn?document.body:void 0}),dCt=ht({customClass:{type:String,default:al.customClass},dangerouslyUseHTMLString:{type:Boolean,default:al.dangerouslyUseHTMLString},duration:{type:Number,default:al.duration},icon:{type:mr,default:al.icon},id:{type:String,default:al.id},message:{type:$e([String,Object,Function]),default:al.message},onClose:{type:$e(Function),default:al.onClose},showClose:{type:Boolean,default:al.showClose},type:{type:String,values:wke,default:al.type},plain:{type:Boolean,default:al.plain},offset:{type:Number,default:al.offset},zIndex:{type:Number,default:al.zIndex},grouping:{type:Boolean,default:al.grouping},repeatNum:{type:Number,default:al.repeatNum}}),fCt={destroy:()=>!0},qd=une([]),hCt=e=>{const t=qd.findIndex(o=>o.id===e),n=qd[t];let r;return t>0&&(r=qd[t-1]),{current:n,prev:r}},pCt=e=>{const{prev:t}=hCt(e);return t?t.vm.exposed.bottom.value:0},gCt=(e,t)=>qd.findIndex(r=>r.id===e)>0?16:t,vCt=ne({name:"ElMessage"}),mCt=ne({...vCt,props:dCt,emits:fCt,setup(e,{expose:t,emit:n}){const r=e,{Close:o}=ere,a=X(!1),{ns:i,zIndex:s}=OL("message"),{currentZIndex:l,nextZIndex:u}=s,c=X(),d=X(!1),f=X(0);let h;const g=K(()=>r.type?r.type==="error"?"danger":r.type:"info"),p=K(()=>{const T=r.type;return{[i.bm("icon",T)]:T&&Rm[T]}}),m=K(()=>r.icon||Rm[r.type]||""),v=K(()=>pCt(r.id)),y=K(()=>gCt(r.id,r.offset)+v.value),_=K(()=>f.value+y.value),C=K(()=>({top:`${y.value}px`,zIndex:l.value}));function S(){r.duration!==0&&({stop:h}=jb(()=>{k()},r.duration))}function E(){h==null||h()}function k(){d.value=!1,It(()=>{var T;a.value||((T=r.onClose)==null||T.call(r),n("destroy"))})}function O({code:T}){T===St.esc&&k()}return Kt(()=>{S(),u(),d.value=!0}),Ze(()=>r.repeatNum,()=>{E(),S()}),xr(document,"keydown",O),co(c,()=>{f.value=c.value.getBoundingClientRect().height}),t({visible:d,bottom:_,close:k}),(T,P)=>(I(),Oe(xi,{name:b(i).b("fade"),onBeforeEnter:U=>a.value=!0,onBeforeLeave:T.onClose,onAfterLeave:U=>T.$emit("destroy"),persisted:""},{default:A(()=>[rn(w("div",{id:T.id,ref_key:"messageRef",ref:c,class:ee([b(i).b(),{[b(i).m(T.type)]:T.type},b(i).is("closable",T.showClose),b(i).is("plain",T.plain),T.customClass]),style:Nt(b(C)),role:"alert",onMouseenter:E,onMouseleave:S},[T.repeatNum>1?(I(),Oe(b(nSe),{key:0,value:T.repeatNum,type:b(g),class:ee(b(i).e("badge"))},null,8,["value","type","class"])):be("v-if",!0),b(m)?(I(),Oe(b(Tt),{key:1,class:ee([b(i).e("icon"),b(p)])},{default:A(()=>[(I(),Oe(_n(b(m))))]),_:1},8,["class"])):be("v-if",!0),Ne(T.$slots,"default",{},()=>[T.dangerouslyUseHTMLString?(I(),j(tt,{key:1},[be(" Caution here, message could've been compromised, never use user's input as message "),w("p",{class:ee(b(i).e("content")),innerHTML:T.message},null,10,["innerHTML"])],2112)):(I(),j("p",{key:0,class:ee(b(i).e("content"))},se(T.message),3))]),T.showClose?(I(),Oe(b(Tt),{key:2,class:ee(b(i).e("closeBtn")),onClick:zt(k,["stop"])},{default:A(()=>[D(b(o))]),_:1},8,["class","onClick"])):be("v-if",!0)],46,["id"]),[[Pn,d.value]])]),_:3},8,["name","onBeforeEnter","onBeforeLeave","onAfterLeave"]))}});var yCt=vt(mCt,[["__file","message.vue"]]);let bCt=1;const Cke=e=>{const t=!e||$t(e)||jr(e)||Rt(e)?{message:e}:e,n={...al,...t};if(!n.appendTo)n.appendTo=document.body;else if($t(n.appendTo)){let r=document.querySelector(n.appendTo);_l(r)||(r=document.body),n.appendTo=r}return hr(gu.grouping)&&!n.grouping&&(n.grouping=gu.grouping),Lt(gu.duration)&&n.duration===3e3&&(n.duration=gu.duration),Lt(gu.offset)&&n.offset===16&&(n.offset=gu.offset),hr(gu.showClose)&&!n.showClose&&(n.showClose=gu.showClose),hr(gu.plain)&&!n.plain&&(n.plain=gu.plain),n},_Ct=e=>{const t=qd.indexOf(e);if(t===-1)return;qd.splice(t,1);const{handler:n}=e;n.close()},wCt=({appendTo:e,...t},n)=>{const r=`message_${bCt++}`,o=t.onClose,a=document.createElement("div"),i={...t,id:r,onClose:()=>{o==null||o(),_Ct(c)},onDestroy:()=>{Mm(null,a)}},s=D(yCt,i,Rt(i.message)||jr(i.message)?{default:Rt(i.message)?i.message:()=>i.message}:null);s.appContext=n||C8._context,Mm(s,a),e.appendChild(a.firstElementChild);const l=s.component,c={id:r,vnode:s,vm:l,handler:{close:()=>{l.exposed.close()}},props:s.component.props};return c},C8=(e={},t)=>{if(!Nn)return{close:()=>{}};const n=Cke(e);if(n.grouping&&qd.length){const o=qd.find(({vnode:a})=>{var i;return((i=a.props)==null?void 0:i.message)===n.message});if(o)return o.props.repeatNum+=1,o.props.type=n.type,o.handler}if(Lt(gu.max)&&qd.length>=gu.max)return{close:()=>{}};const r=wCt(n,t);return qd.push(r),r.handler};wke.forEach(e=>{C8[e]=(t={},n)=>{const r=Cke(t);return C8({...r,type:e},n)}});function CCt(e){const t=[...qd];for(const n of t)(!e||e===n.props.type)&&n.handler.close()}C8.closeAll=CCt;C8._context=null;const Ie=Jxe(C8,"$message"),TX="_trap-focus-children",v2=[],Ppe=e=>{if(v2.length===0)return;const t=v2[v2.length-1][TX];if(t.length>0&&e.code===St.tab){if(t.length===1){e.preventDefault(),document.activeElement!==t[0]&&t[0].focus();return}const n=e.shiftKey,r=e.target===t[0],o=e.target===t[t.length-1];r&&n&&(e.preventDefault(),t[t.length-1].focus()),o&&!n&&(e.preventDefault(),t[0].focus())}},xCt={beforeMount(e){e[TX]=Xfe(e),v2.push(e),v2.length<=1&&document.addEventListener("keydown",Ppe)},updated(e){It(()=>{e[TX]=Xfe(e)})},unmounted(){v2.shift(),v2.length===0&&document.removeEventListener("keydown",Ppe)}},SCt=ne({name:"ElMessageBox",directives:{TrapFocus:xCt},components:{ElButton:Br,ElFocusTrap:yC,ElInput:fo,ElOverlay:Mre,ElIcon:Tt,...ere},inheritAttrs:!1,props:{buttonSize:{type:String,validator:WDe},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:{default:!1,type:Boolean},container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:t}){const{locale:n,zIndex:r,ns:o,size:a}=OL("message-box",K(()=>e.buttonSize)),{t:i}=n,{nextZIndex:s}=r,l=X(!1),u=Bn({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:Jd(Kl),cancelButtonLoadingIcon:Jd(Kl),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:s()}),c=K(()=>{const M=u.type;return{[o.bm("icon",M)]:M&&Rm[M]}}),d=Gi(),f=Gi(),h=K(()=>{const M=u.type;return u.icon||M&&Rm[M]||""}),g=K(()=>!!u.message),p=X(),m=X(),v=X(),y=X(),_=X(),C=K(()=>u.confirmButtonClass);Ze(()=>u.inputValue,async M=>{await It(),e.boxType==="prompt"&&M&&F()},{immediate:!0}),Ze(()=>l.value,M=>{var N,L;M&&(e.boxType!=="prompt"&&(u.autofocus?v.value=(L=(N=_.value)==null?void 0:N.$el)!=null?L:p.value:v.value=p.value),u.zIndex=s()),e.boxType==="prompt"&&(M?It().then(()=>{var V;y.value&&y.value.$el&&(u.autofocus?v.value=(V=H())!=null?V:p.value:v.value=p.value)}):(u.editorErrorMessage="",u.validateError=!1))});const S=K(()=>e.draggable),E=K(()=>e.overflow);nDe(p,m,S,E),Kt(async()=>{await It(),e.closeOnHashChange&&window.addEventListener("hashchange",k)}),Ar(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",k)});function k(){l.value&&(l.value=!1,It(()=>{u.action&&t("action",u.action)}))}const O=()=>{e.closeOnClickModal&&U(u.distinguishCancelAndClose?"close":"cancel")},T=Ire(O),P=M=>{if(u.inputType!=="textarea")return M.preventDefault(),U("confirm")},U=M=>{var N;e.boxType==="prompt"&&M==="confirm"&&!F()||(u.action=M,u.beforeClose?(N=u.beforeClose)==null||N.call(u,M,u,k):k())},F=()=>{if(e.boxType==="prompt"){const M=u.inputPattern;if(M&&!M.test(u.inputValue||""))return u.editorErrorMessage=u.inputErrorMessage||i("el.messagebox.error"),u.validateError=!0,!1;const N=u.inputValidator;if(Rt(N)){const L=N(u.inputValue);if(L===!1)return u.editorErrorMessage=u.inputErrorMessage||i("el.messagebox.error"),u.validateError=!0,!1;if($t(L))return u.editorErrorMessage=L,u.validateError=!0,!1}}return u.editorErrorMessage="",u.validateError=!1,!0},H=()=>{var M,N;const L=(M=y.value)==null?void 0:M.$refs;return(N=L==null?void 0:L.input)!=null?N:L==null?void 0:L.textarea},R=()=>{U("close")},z=()=>{e.closeOnPressEscape&&R()};return e.lockScroll&&Pre(l),{...Ra(u),ns:o,overlayEvent:T,visible:l,hasMessage:g,typeClass:c,contentId:d,inputId:f,btnSize:a,iconComponent:h,confirmButtonClasses:C,rootRef:p,focusStartRef:v,headerRef:m,inputRef:y,confirmRef:_,doClose:k,handleClose:R,onCloseRequested:z,handleWrapperClick:O,handleInputEnter:P,handleAction:U,t:i}}});function DCt(e,t,n,r,o,a){const i=yn("el-icon"),s=yn("el-input"),l=yn("el-button"),u=yn("el-focus-trap"),c=yn("el-overlay");return I(),Oe(xi,{name:"fade-in-linear",onAfterLeave:d=>e.$emit("vanish"),persisted:""},{default:A(()=>[rn(D(c,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:A(()=>[w("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:ee(`${e.ns.namespace.value}-overlay-message-box`),onClick:e.overlayEvent.onClick,onMousedown:e.overlayEvent.onMousedown,onMouseup:e.overlayEvent.onMouseup},[D(u,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:A(()=>[w("div",{ref:"rootRef",class:ee([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),{[e.ns.m("center")]:e.center}]),style:Nt(e.customStyle),tabindex:"-1",onClick:zt(()=>{},["stop"])},[e.title!==null&&e.title!==void 0?(I(),j("div",{key:0,ref:"headerRef",class:ee([e.ns.e("header"),{"show-close":e.showClose}])},[w("div",{class:ee(e.ns.e("title"))},[e.iconComponent&&e.center?(I(),Oe(i,{key:0,class:ee([e.ns.e("status"),e.typeClass])},{default:A(()=>[(I(),Oe(_n(e.iconComponent)))]),_:1},8,["class"])):be("v-if",!0),w("span",null,se(e.title),1)],2),e.showClose?(I(),j("button",{key:0,type:"button",class:ee(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:d=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),onKeydown:qn(zt(d=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"])},[D(i,{class:ee(e.ns.e("close"))},{default:A(()=>[(I(),Oe(_n(e.closeIcon||"close")))]),_:1},8,["class"])],42,["aria-label","onClick","onKeydown"])):be("v-if",!0)],2)):be("v-if",!0),w("div",{id:e.contentId,class:ee(e.ns.e("content"))},[w("div",{class:ee(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(I(),Oe(i,{key:0,class:ee([e.ns.e("status"),e.typeClass])},{default:A(()=>[(I(),Oe(_n(e.iconComponent)))]),_:1},8,["class"])):be("v-if",!0),e.hasMessage?(I(),j("div",{key:1,class:ee(e.ns.e("message"))},[Ne(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(I(),Oe(_n(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(I(),Oe(_n(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0},{default:A(()=>[ce(se(e.dangerouslyUseHTMLString?"":e.message),1)]),_:1},8,["for"]))])],2)):be("v-if",!0)],2),rn(w("div",{class:ee(e.ns.e("input"))},[D(s,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":d=>e.inputValue=d,type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:ee({invalid:e.validateError}),onKeydown:qn(e.handleInputEnter,["enter"])},null,8,["id","modelValue","onUpdate:modelValue","type","placeholder","aria-invalid","class","onKeydown"]),w("div",{class:ee(e.ns.e("errormsg")),style:Nt({visibility:e.editorErrorMessage?"visible":"hidden"})},se(e.editorErrorMessage),7)],2),[[Pn,e.showInput]])],10,["id"]),w("div",{class:ee(e.ns.e("btns"))},[e.showCancelButton?(I(),Oe(l,{key:0,loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:ee([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:d=>e.handleAction("cancel"),onKeydown:qn(zt(d=>e.handleAction("cancel"),["prevent"]),["enter"])},{default:A(()=>[ce(se(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","loading-icon","class","round","size","onClick","onKeydown"])):be("v-if",!0),rn(D(l,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:ee([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:d=>e.handleAction("confirm"),onKeydown:qn(zt(d=>e.handleAction("confirm"),["prevent"]),["enter"])},{default:A(()=>[ce(se(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","loading-icon","class","round","disabled","size","onClick","onKeydown"]),[[Pn,e.showConfirmButton]])],2)],14,["onClick"])]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,["aria-label","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["z-index","overlay-class","mask"]),[[Pn,e.visible]])]),_:3},8,["onAfterLeave"])}var ECt=vt(SCt,[["render",DCt],["__file","index.vue"]]);const ZD=new Map,kCt=e=>{let t=document.body;return e.appendTo&&($t(e.appendTo)&&(t=document.querySelector(e.appendTo)),_l(e.appendTo)&&(t=e.appendTo),_l(t)||(t=document.body)),t},ACt=(e,t,n=null)=>{const r=D(ECt,e,Rt(e.message)||jr(e.message)?{default:Rt(e.message)?e.message:()=>e.message}:null);return r.appContext=n,Mm(r,t),kCt(e).appendChild(t.firstElementChild),r.component},TCt=()=>document.createElement("div"),OCt=(e,t)=>{const n=TCt();e.onVanish=()=>{Mm(null,n),ZD.delete(o)},e.onAction=a=>{const i=ZD.get(o);let s;e.showInput?s={value:o.inputValue,action:a}:s=a,e.callback?e.callback(s,r.proxy):a==="cancel"||a==="close"?e.distinguishCancelAndClose&&a!=="cancel"?i.reject("close"):i.reject("cancel"):i.resolve(s)};const r=ACt(e,n,t),o=r.proxy;for(const a in e)Gn(e,a)&&!Gn(o.$props,a)&&(a==="closeIcon"&&vn(e[a])?o[a]=Jd(e[a]):o[a]=e[a]);return o.visible=!0,o};function xC(e,t=null){if(!Nn)return Promise.reject();let n;return $t(e)||jr(e)?e={message:e}:n=e.callback,new Promise((r,o)=>{const a=OCt(e,t??xC._context);ZD.set(a,{options:e,callback:n,resolve:r,reject:o})})}const FCt=["alert","confirm","prompt"],ICt={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};FCt.forEach(e=>{xC[e]=MCt(e)});function MCt(e){return(t,n,r,o)=>{let a="";return vn(n)?(r=n,a=""):Ln(n)?a="":a=n,xC(Object.assign({title:a,message:t,type:"",...ICt[e]},r,{boxType:e}),o)}}xC.close=()=>{ZD.forEach((e,t)=>{t.doClose()}),ZD.clear()};xC._context=null;const $0=xC;$0.install=e=>{$0._context=e._context,e.config.globalProperties.$msgbox=$0,e.config.globalProperties.$messageBox=$0,e.config.globalProperties.$alert=$0.alert,e.config.globalProperties.$confirm=$0.confirm,e.config.globalProperties.$prompt=$0.prompt};const uo=$0,xke=["primary","success","info","warning","error"],PCt=ht({customClass:{type:String,default:""},dangerouslyUseHTMLString:Boolean,duration:{type:Number,default:4500},icon:{type:mr},id:{type:String,default:""},message:{type:$e([String,Object,Function]),default:""},offset:{type:Number,default:0},onClick:{type:$e(Function),default:()=>{}},onClose:{type:$e(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...xke,""],default:""},zIndex:Number,closeIcon:{type:mr,default:Gs}}),$Ct={destroy:()=>!0},BCt=ne({name:"ElNotification"}),RCt=ne({...BCt,props:PCt,emits:$Ct,setup(e,{expose:t}){const n=e,{ns:r,zIndex:o}=OL("notification"),{nextZIndex:a,currentZIndex:i}=o,s=X(!1);let l;const u=K(()=>{const y=n.type;return y&&Rm[n.type]?r.m(y):""}),c=K(()=>n.type&&Rm[n.type]||n.icon),d=K(()=>n.position.endsWith("right")?"right":"left"),f=K(()=>n.position.startsWith("top")?"top":"bottom"),h=K(()=>{var y;return{[f.value]:`${n.offset}px`,zIndex:(y=n.zIndex)!=null?y:i.value}});function g(){n.duration>0&&({stop:l}=jb(()=>{s.value&&m()},n.duration))}function p(){l==null||l()}function m(){s.value=!1}function v({code:y}){y===St.delete||y===St.backspace?p():y===St.esc?s.value&&m():g()}return Kt(()=>{g(),a(),s.value=!0}),xr(document,"keydown",v),t({visible:s,close:m}),(y,_)=>(I(),Oe(xi,{name:b(r).b("fade"),onBeforeLeave:y.onClose,onAfterLeave:C=>y.$emit("destroy"),persisted:""},{default:A(()=>[rn(w("div",{id:y.id,class:ee([b(r).b(),y.customClass,b(d)]),style:Nt(b(h)),role:"alert",onMouseenter:p,onMouseleave:g,onClick:y.onClick},[b(c)?(I(),Oe(b(Tt),{key:0,class:ee([b(r).e("icon"),b(u)])},{default:A(()=>[(I(),Oe(_n(b(c))))]),_:1},8,["class"])):be("v-if",!0),w("div",{class:ee(b(r).e("group"))},[w("h2",{class:ee(b(r).e("title")),textContent:se(y.title)},null,10,["textContent"]),rn(w("div",{class:ee(b(r).e("content")),style:Nt(y.title?void 0:{margin:0})},[Ne(y.$slots,"default",{},()=>[y.dangerouslyUseHTMLString?(I(),j(tt,{key:1},[be(" Caution here, message could've been compromised, never use user's input as message "),w("p",{innerHTML:y.message},null,8,["innerHTML"])],2112)):(I(),j("p",{key:0},se(y.message),1))])],6),[[Pn,y.message]]),y.showClose?(I(),Oe(b(Tt),{key:0,class:ee(b(r).e("closeBtn")),onClick:zt(m,["stop"])},{default:A(()=>[(I(),Oe(_n(y.closeIcon)))]),_:1},8,["class","onClick"])):be("v-if",!0)],2)],46,["id","onClick"]),[[Pn,s.value]])]),_:3},8,["name","onBeforeLeave","onAfterLeave"]))}});var NCt=vt(RCt,[["__file","notification.vue"]]);const uP={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},OX=16;let LCt=1;const x8=function(e={},t){if(!Nn)return{close:()=>{}};($t(e)||jr(e))&&(e={message:e});const n=e.position||"top-right";let r=e.offset||0;uP[n].forEach(({vm:c})=>{var d;r+=(((d=c.el)==null?void 0:d.offsetHeight)||0)+OX}),r+=OX;const o=`notification_${LCt++}`,a=e.onClose,i={...e,offset:r,id:o,onClose:()=>{UCt(o,n,a)}};let s=document.body;_l(e.appendTo)?s=e.appendTo:$t(e.appendTo)&&(s=document.querySelector(e.appendTo)),_l(s)||(s=document.body);const l=document.createElement("div"),u=D(NCt,i,Rt(i.message)?i.message:jr(i.message)?()=>i.message:null);return u.appContext=Ln(t)?x8._context:t,u.props.onDestroy=()=>{Mm(null,l)},Mm(u,l),uP[n].push({vm:u}),s.appendChild(l.firstElementChild),{close:()=>{u.component.exposed.visible.value=!1}}};xke.forEach(e=>{x8[e]=(t={},n)=>(($t(t)||jr(t))&&(t={message:t}),x8({...t,type:e},n))});function UCt(e,t,n){const r=uP[t],o=r.findIndex(({vm:u})=>{var c;return((c=u.component)==null?void 0:c.props.id)===e});if(o===-1)return;const{vm:a}=r[o];if(!a)return;n==null||n(a);const i=a.el.offsetHeight,s=t.split("-")[0];r.splice(o,1);const l=r.length;if(!(l<1))for(let u=o;u{t.component.exposed.visible.value=!1})}x8.closeAll=VCt;x8._context=null;const zCt=Jxe(x8,"$notify");var jCt=[aCt,cCt,Ie,uo,zCt,TDe],HCt=IJe([...Z8t,...jCt]);const WCt={apiKey:"",baseURL:"",models:[],defaultModel:"",maxTokens:null,temperature:.7},qCt={enabled:!1,url:""},$pe={openai:WCt,proxy:qCt};class KCt{constructor(){this.initializeStorage()}initializeStorage(){localStorage.getItem("account_balance")||localStorage.setItem("account_balance","0.00"),localStorage.getItem("billing_records")||localStorage.setItem("billing_records",JSON.stringify([])),localStorage.getItem("token_usage_stats")||localStorage.setItem("token_usage_stats",JSON.stringify({totalInputTokens:0,totalOutputTokens:0,totalCost:0,lastResetDate:new Date().toISOString()}))}getModelPricing(){return{"gpt-4":{input:.21,output:.42},"gpt-4-turbo":{input:.07,output:.21},"gpt-3.5-turbo":{input:.0035,output:.0105},"claude-3-opus":{input:.105,output:.525},"claude-3-sonnet":{input:.021,output:.105},"claude-3-haiku":{input:.0014,output:.007},default:{input:.007,output:.014}}}calculateCost(t,n,r){const o=this.getModelPricing(),a=o[t]||o.default,i=n/1e3*a.input,s=r/1e3*a.output;return i+s}estimateTokens(t){if(!t)return 0;const n=(t.match(/[\u4e00-\u9fa5]/g)||[]).length,r=(t.match(/[a-zA-Z]+/g)||[]).length,o=t.length-n-r;return Math.ceil(n*1.5+r*1.3+o*.5)}getAccountBalance(){return parseFloat(localStorage.getItem("account_balance")||"0")}checkBalance(t){return this.getAccountBalance()>=t}deductBalance(t){const n=this.getAccountBalance(),r=Math.max(0,n-t);return localStorage.setItem("account_balance",r.toString()),r}addBalance(t){const r=this.getAccountBalance()+t;return localStorage.setItem("account_balance",r.toString()),r}recordAPICall(t){try{const n=this.getBillingRecords(),r=this.calculateCost(t.model,t.inputTokens,t.outputTokens),o={id:Date.now()+Math.random(),timestamp:new Date().toISOString(),type:t.type||"generation",model:t.model,content:t.content||"",response:t.response||"",inputTokens:t.inputTokens||0,outputTokens:t.outputTokens||0,totalTokens:(t.inputTokens||0)+(t.outputTokens||0),cost:r,status:t.status||"success"};return n.unshift(o),n.length>1e3&&n.splice(1e3),localStorage.setItem("billing_records",JSON.stringify(n)),this.deductBalance(r),this.updateUsageStats(t.inputTokens||0,t.outputTokens||0,r),console.log(`API调用记录:模型=${t.model}, 输入=${t.inputTokens}tokens, 输出=${t.outputTokens}tokens, 费用=¥${r.toFixed(4)}`),o}catch(n){return console.error("记录API调用失败:",n),null}}getBillingRecords(){try{const t=localStorage.getItem("billing_records");return t?JSON.parse(t):[]}catch(t){return console.error("获取计费记录失败:",t),[]}}updateUsageStats(t,n,r){try{const o=JSON.parse(localStorage.getItem("token_usage_stats")||"{}");o.totalInputTokens=(o.totalInputTokens||0)+t,o.totalOutputTokens=(o.totalOutputTokens||0)+n,o.totalCost=(o.totalCost||0)+r,o.lastUpdateDate=new Date().toISOString(),localStorage.setItem("token_usage_stats",JSON.stringify(o))}catch(o){console.error("更新使用统计失败:",o)}}getUsageStats(){try{const t=localStorage.getItem("token_usage_stats");return t?JSON.parse(t):{totalInputTokens:0,totalOutputTokens:0,totalCost:0,lastResetDate:new Date().toISOString()}}catch(t){return console.error("获取使用统计失败:",t),{totalInputTokens:0,totalOutputTokens:0,totalCost:0,lastResetDate:new Date().toISOString()}}}getTodayStats(){const t=this.getBillingRecords(),n=new Date().toDateString(),r=t.filter(o=>new Date(o.timestamp).toDateString()===n);return{tokenCount:r.reduce((o,a)=>o+a.totalTokens,0),cost:r.reduce((o,a)=>o+a.cost,0),requestCount:r.length}}getUsageTrend(t=7){const n=this.getBillingRecords(),r=[];for(let o=t-1;o>=0;o--){const a=new Date;a.setDate(a.getDate()-o);const i=a.toDateString(),s=n.filter(l=>new Date(l.timestamp).toDateString()===i);r.push({date:i,tokenCount:s.reduce((l,u)=>l+u.totalTokens,0),cost:s.reduce((l,u)=>l+u.cost,0),requestCount:s.length})}return r}cleanOldRecords(){try{const t=this.getBillingRecords(),n=new Date;n.setDate(n.getDate()-30);const r=t.filter(o=>new Date(o.timestamp)>n);localStorage.setItem("billing_records",JSON.stringify(r)),console.log(`清理了 ${t.length-r.length} 条过期记录`)}catch(t){console.error("清理过期记录失败:",t)}}exportBillingData(t="json"){const n=this.getBillingRecords(),r=this.getUsageStats(),o={exportTime:new Date().toISOString(),accountBalance:this.getAccountBalance(),usageStats:r,records:n};if(t==="json")return JSON.stringify(o,null,2);if(t==="csv"){let a=`timestamp,type,model,inputTokens,outputTokens,totalTokens,cost,status +`;return n.forEach(i=>{a+=`${i.timestamp},${i.type},${i.model},${i.inputTokens},${i.outputTokens},${i.totalTokens},${i.cost},${i.status} +`}),a}return o}}const pl=new KCt;class GCt{constructor(){this.config={...$pe.openai},this.proxyConfig=$pe.proxy,this.loadUserConfig()}loadUserConfig(){try{const t=localStorage.getItem("apiConfigType")||"official";let n=null;if(t==="official"){const r=localStorage.getItem("officialApiConfig");r&&(n=JSON.parse(r))}else{const r=localStorage.getItem("customApiConfig");r&&(n=JSON.parse(r))}if(!n){const r=localStorage.getItem("apiConfig");r&&(n=JSON.parse(r),t==="official"?localStorage.setItem("officialApiConfig",JSON.stringify(n)):localStorage.setItem("customApiConfig",JSON.stringify(n)),localStorage.setItem("apiConfigType",t))}n&&(this.config={...this.config,...n})}catch(t){console.error("加载用户API配置失败:",t)}}getConfig(){return this.config}updateConfig(t){this.config={...this.config,...t};try{(localStorage.getItem("apiConfigType")||"official")==="official"?localStorage.setItem("officialApiConfig",JSON.stringify(this.config)):localStorage.setItem("customApiConfig",JSON.stringify(this.config)),localStorage.setItem("apiConfig",JSON.stringify(this.config))}catch(n){console.error("保存API配置失败:",n)}}buildURL(t){return`${this.config.baseURL}${t}`}buildHeaders(){return{"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`}}async makeRequest(t,n={}){var i;const r=this.buildURL(t),a={method:"POST",headers:this.buildHeaders(),...n};try{const s=await fetch(r,a);if(!s.ok){const l=await s.json();throw new Error(`API请求失败: ${s.status} - ${((i=l.error)==null?void 0:i.message)||"未知错误"}`)}return await s.json()}catch(s){throw console.error("API请求错误:",s),s}}async generateText(t,n={}){var i,s;const r=n.model||this.config.selectedModel||this.config.defaultModel||"gpt-3.5-turbo",o=pl.estimateTokens(t),a={model:r,messages:[{role:"user",content:t}],max_tokens:n.maxTokens||this.config.maxTokens,temperature:n.temperature||this.config.temperature,stream:!1};try{const l=await this.makeRequest("/chat/completions",{body:JSON.stringify(a)}),u=((s=(i=l.choices[0])==null?void 0:i.message)==null?void 0:s.content)||"",c=l.usage;if(c)pl.recordAPICall({type:n.type||"generation",model:r,content:t,response:u,inputTokens:c.prompt_tokens||0,outputTokens:c.completion_tokens||0,status:"success"});else{const d=pl.estimateTokens(u);pl.recordAPICall({type:n.type||"generation",model:r,content:t,response:u,inputTokens:o,outputTokens:d,status:"success"})}return u}catch(l){throw pl.recordAPICall({type:n.type||"generation",model:r,content:t,response:"",inputTokens:o,outputTokens:0,status:"failed"}),l}}async generateTextStream(t,n={},r=null){var h,g,p,m,v,y,_,C,S;if(console.log("开始流式生成,prompt:",t.substring(0,100)+"..."),!this.config.apiKey||this.config.apiKey.trim()==="")throw new Error("API密钥未配置,请先在设置中配置API密钥");if(!this.config.baseURL||this.config.baseURL.trim()==="")throw new Error("API地址未配置,请先在设置中配置API地址");const o=n.model||this.config.selectedModel||this.config.defaultModel||"gpt-3.5-turbo";if(console.log("使用模型:",o),!t||typeof t!="string")throw new Error("无效的prompt参数");let a=t;try{a=t.replace(/[\u0000-\u001F\u007F-\u009F]/g,""),JSON.stringify({content:a}),console.log("Prompt清理完成,原长度:",t.length,"清理后长度:",a.length)}catch(E){throw console.error("Prompt清理失败:",E),new Error("提示词包含无法处理的字符,请检查输入内容")}const i=pl.estimateTokens(a),s=n.maxTokens||this.config.maxTokens||null;console.log("maxTokens配置检查:",{"options.maxTokens":n.maxTokens,"this.config.maxTokens":this.config.maxTokens,最终使用的maxTokens:s});const l={model:o,messages:[{role:"user",content:a}],max_tokens:s||void 0,temperature:n.temperature||this.config.temperature,stream:!0};console.log("请求体:",l);const u=this.buildURL("/chat/completions"),c=this.buildHeaders();let d="",f=!1;try{const E=await fetch(u,{method:"POST",headers:c,body:JSON.stringify(l),signal:AbortSignal.timeout(3e5)});if(console.log("API响应状态:",E.status),!E.ok){const M=await E.text();f=!0,console.error("API错误响应:",M);try{const N=JSON.parse(M);throw new Error(`API请求失败: ${E.status} - ${((h=N.error)==null?void 0:h.message)||"未知错误"}`)}catch{throw new Error(`API请求失败: ${E.status} - ${M}`)}}const k=E.body.getReader(),O=new TextDecoder;let T=!1,P="",U=0,F=Date.now(),H=null;const R=()=>{H&&clearTimeout(H),H=setTimeout(()=>{console.log("警告:30秒内没有接收到新数据,但流未结束")},3e4)};R();try{for(;!T;){const{done:M,value:N}=await k.read();if(M){console.log("读取完成,处理了",U,"个chunks,总内容长度:",d.length),H&&clearTimeout(H);break}const L=O.decode(N,{stream:!0});console.log("接收到原始chunk:",L.length,"字节"),F=Date.now(),R(),P+=L;const V=P.split(` +`);P=V.pop()||"";for(const Y of V){const $=Y.trim();if($.startsWith("data: ")){const B=$.slice(6).trim();if(B==="[DONE]"){console.log("收到[DONE]标记,流式生成完成,总内容长度:",d.length),T=!0;break}if(!B||B==="")continue;try{const W=JSON.parse(B),J=((m=(p=(g=W.choices)==null?void 0:g[0])==null?void 0:p.delta)==null?void 0:m.content)||"";if(J&&(d+=J,U++,console.log("接收到内容片段:",J.length,"字符,总长度:",d.length),r))try{r(J,d)}catch(oe){console.error("onChunk回调错误:",oe)}if((y=(v=W.choices)==null?void 0:v[0])!=null&&y.finish_reason){console.log("检测到结束标记:",W.choices[0].finish_reason),T=!0;break}if(W.error)throw console.error("API返回错误:",W.error),new Error(`API错误: ${W.error.message||"未知错误"}`)}catch(W){if(console.log("解析数据失败,原始数据长度:",B.length,"错误:",W.message),W.message.startsWith("API错误:"))throw W}}}}if(P.trim()&&!T){console.log("处理剩余缓冲区数据:",P.length,"字符");const M=P.trim();if(M.startsWith("data: ")){const N=M.slice(6).trim();if(N!=="[DONE]"&&N!=="")try{const V=((S=(C=(_=JSON.parse(N).choices)==null?void 0:_[0])==null?void 0:C.delta)==null?void 0:S.content)||"";V&&(d+=V,console.log("缓冲区内容片段:",V.length,"字符,总长度:",d.length),r&&r(V,d))}catch(L){console.log("缓冲区数据解析失败:",L.message)}}}console.log("流式生成最终完成,总处理chunks:",U,"最终内容长度:",d.length),H&&clearTimeout(H),d.length===0?console.warn("警告:流式生成完成但没有获得任何内容"):d.length<10&&console.warn("警告:生成的内容过短,可能被截断:",d)}catch(M){if(console.error("流式读取错误:",M),H&&clearTimeout(H),d.length>0&&(M.name==="AbortError"||M.message.includes("timeout")||M.message.includes("network")))console.log("网络问题导致流式中断,但已获得部分内容:",d.length,"字符"),Ie.warning("网络不稳定,已获得部分生成内容");else throw f=!0,M}finally{try{k.releaseLock()}catch(M){console.log("释放reader锁失败:",M.message)}}const z=pl.estimateTokens(d);return pl.recordAPICall({type:n.type||"generation",model:o,content:a,response:d,inputTokens:i,outputTokens:z,status:"success"}),d}catch(E){throw console.error("流式生成错误:",E),f&&pl.recordAPICall({type:n.type||"generation",model:o,content:a,response:d,inputTokens:i,outputTokens:pl.estimateTokens(d),status:"failed"}),E}}async generateOutline(t,n,r){const o=r?` +参考模板:${r.name} - ${r.description}`:"",a=n?` +关键词:${n}`:"",i=`请为以下主题生成一个详细的小说大纲: +主题:${t}${o}${a} + +要求: +1. 生成5-8个章节 +2. 每个章节用 ### 开头,后跟章节标题 +3. 每个章节下面写2-3句话描述该章节的主要内容 +4. 整体结构要完整,有开头、发展、高潮、结局 +5. 符合所选模板的风格特点 + +请直接输出大纲内容:`;return await this.generateTextStream(i,{},null)}async generateOutlineStream(t,n,r,o=null){const a=r?` +参考模板:${r.name} - ${r.description}`:"",i=n?` +关键词:${n}`:"",s=`请为以下主题生成一个详细的小说大纲: +主题:${t}${a}${i} + +要求: +1. 生成5-8个章节 +2. 每个章节用 ### 开头,后跟章节标题 +3. 每个章节下面写2-3句话描述该章节的主要内容 +4. 整体结构要完整,有开头、发展、高潮、结局 +5. 符合所选模板的风格特点 + +请直接输出大纲内容:`;return await this.generateTextStream(s,{},o)}async generateChapterContent(t,n,r="",o=null,a=[],i=[],s={}){const l=o?` +写作风格:${o.style} +写作提示:${o.writingTips}`:"",u=r?` +前文内容参考:${r.slice(-500)}`:"";let c="";(s.title||s.genre||s.intro||s.theme)&&(c+=` + +小说基本信息:`,s.title&&(c+=` +- 小说名称:${s.title}`),s.genre&&(c+=` +- 小说类型:${s.genre}`),s.theme&&(c+=` +- 小说主题:${s.theme}`),s.intro&&(c+=` +- 小说简介:${s.intro}`));let d="";a.length>0&&(d=` + +人物设定:`,a.forEach(g=>{d+=` +- ${g.name}:${g.description}`,g.traits&&g.traits.length>0&&(d+=` (特点:${g.traits.join("、")})`)}));let f="";i.length>0&&(f=` + +世界观设定:`,i.forEach(g=>{f+=` +- ${g.title}:${g.description}`}));const h=`请根据以下信息生成小说章节内容: +章节标题:${t} +章节大纲:${n}${c}${l}${u}${d}${f} + +要求: +1. 字数控制在800-1200字 +2. 内容要生动有趣,符合章节大纲 +3. 语言流畅,描写细腻 +4. 如果有前文内容,要保持连贯性 +5. 符合所选模板的风格特点 +6. 充分利用提供的人物设定和世界观设定 +7. 确保人物行为符合其性格特点 +8. 场景描写要符合世界观设定 +9. 内容要符合小说的整体类型、主题和设定 +10. 保持与小说简介和整体风格的一致性 + +请直接输出章节内容:`;return await this.generateTextStream(h,{},null)}async generateChapterContentStream(t,n,r="",o=null,a=[],i=[],s={},l=null){const u=o?` +写作风格:${o.style} +写作提示:${o.writingTips}`:"",c=r?` +前文内容参考:${r.slice(-500)}`:"";let d="";(s.title||s.genre||s.intro||s.theme)&&(d+=` + +小说基本信息:`,s.title&&(d+=` +- 小说名称:${s.title}`),s.genre&&(d+=` +- 小说类型:${s.genre}`),s.theme&&(d+=` +- 小说主题:${s.theme}`),s.intro&&(d+=` +- 小说简介:${s.intro}`));let f="";a.length>0&&(f=` + +人物设定:`,a.forEach(p=>{f+=` +- ${p.name}:${p.description}`,p.traits&&p.traits.length>0&&(f+=` (特点:${p.traits.join("、")})`)}));let h="";i.length>0&&(h=` + +世界观设定:`,i.forEach(p=>{h+=` +- ${p.title}:${p.description}`}));const g=`请根据以下信息生成小说章节内容: +章节标题:${t} +章节大纲:${n}${d}${u}${c}${f}${h} + +要求: +1. 字数控制在800-1200字 +2. 内容要生动有趣,符合章节大纲 +3. 语言流畅,描写细腻 +4. 如果有前文内容,要保持连贯性 +5. 符合所选模板的风格特点 +6. 充分利用提供的人物设定和世界观设定 +7. 确保人物行为符合其性格特点 +8. 场景描写要符合世界观设定 +9. 内容要符合小说的整体类型、主题和设定 +10. 保持与小说简介和整体风格的一致性 + +请直接输出章节内容:`;return await this.generateTextStream(g,{},l)}async chatWithAI(t,n=[]){var i,s;const r=[{role:"system",content:"你是一个专业的小说写作助手,擅长帮助用户进行创意写作、情节构思、人物塑造等。请用友好、专业的语气回答用户的问题。"},...n.map(l=>({role:l.isUser?"user":"assistant",content:l.content})),{role:"user",content:t}],o={model:this.config.selectedModel||this.config.defaultModel||"gpt-3.5-turbo",messages:r,max_tokens:this.config.maxTokens,temperature:.7};return((s=(i=(await this.makeRequest("/chat/completions",{body:JSON.stringify(o)})).choices[0])==null?void 0:i.message)==null?void 0:s.content)||""}async generateSummary(t,n={}){const{length:r="medium",type:o="keypoints"}=n;let a="";switch(r){case"short":a="请生成50-100字的简短摘要";break;case"medium":a="请生成100-200字的中等长度摘要";break;case"long":a="请生成200-300字的详细摘要";break}let i="";switch(o){case"keypoints":i="重点提取文章的关键要点和核心内容";break;case"plot":i="重点概括故事情节和主要事件";break;case"character":i="重点分析人物特点和关系";break;case"theme":i="重点阐述文章的主题思想和深层含义";break}const s=`${a},${i}。 + +文章内容: +${t}`;return await this.generateTextStream(s,{maxTokens:null,temperature:.3},null)}async getWritingAdvice(t){const n=`请对以下文章内容提供写作建议: + +${t} + +请从以下几个方面给出具体建议: +1. 语言表达 +2. 情节结构 +3. 人物塑造 +4. 描写技巧 +5. 整体改进方向 + +建议:`;return await this.generateTextStream(n,{maxTokens:null},null)}async generatePersonalizedContent(t,n){const o=`参考以下写作风格和内容: + +${n.map(a=>a.content).join(` + +`)} + +现在请根据上述风格,生成以下内容: +${t} + +要求: +1. 保持与参考内容相似的写作风格 +2. 语言表达要一致 +3. 内容要原创且符合要求 + +生成内容:`;return await this.generateTextStream(o,{},null)}async generateGeneralContent(t,n,r,o=500){const a=n?` +写作风格:${n.style} +写作提示:${n.writingTips}`:"",i=r?` +参考大纲:${r}`:"",l=`请根据以下信息生成小说内容:${t?` +关键词:${t}`:""}${a}${i} + +要求: +1. 字数控制在${o}字左右 +2. 内容要生动有趣,情节引人入胜 +3. 语言流畅,描写细腻 +4. 符合所选模板的风格特点 +5. 如果有大纲,要与大纲保持一致 + +请直接输出小说内容:`;return await this.generateTextStream(l,{},null)}async generateGeneralContentStream(t,n,r,o=500,a=null){const i=n?` +写作风格:${n.style} +写作提示:${n.writingTips}`:"",s=r?` +参考大纲:${r}`:"",u=`请根据以下信息生成小说内容:${t?` +关键词:${t}`:""}${i}${s} + +要求: +1. 字数控制在${o}字左右 +2. 内容要生动有趣,情节引人入胜 +3. 语言流畅,描写细腻 +4. 符合所选模板的风格特点 +5. 如果有大纲,要与大纲保持一致 + +请直接输出小说内容:`;return await this.generateTextStream(u,{},a)}getAvailableModels(){return this.config.models}async validateAPIKey(){try{const t=this.buildURL("/models"),n=this.buildHeaders();return(await fetch(t,{method:"GET",headers:n})).ok}catch(t){return console.error("API密钥验证失败:",t),!1}}async generateCharacter(t,n=""){const r=n?`角色类型:${n}`:"",o=`请根据主题"${t}"生成一个小说人物,${r} + +要求: +1. 提供人物的基本信息(姓名、年龄、职业等) +2. 详细的外貌描述 +3. 性格特点和行为习惯 +4. 背景故事和经历 +5. 人物的特殊技能或能力 +6. 与主题相关的特征 + +请以JSON格式返回: +{ + "name": "人物姓名", + "age": "年龄", + "occupation": "职业", + "appearance": "外貌描述", + "personality": "性格特点", + "background": "背景故事", + "skills": ["技能1", "技能2"], + "traits": ["特征1", "特征2", "特征3"] +}`;try{const a=await this.generateTextStream(o,{},null);return JSON.parse(a)}catch(a){throw console.error("生成人物失败:",a),a}}async generateWorldSetting(t,n=""){const r=n?`设定类型:${n}`:"",o=`请根据主题"${t}"生成一个小说世界观设定,${r} + +要求: +1. 设定的名称和概述 +2. 详细的背景描述 +3. 重要的规则或法则 +4. 地理环境或空间结构 +5. 历史背景或重要事件 +6. 与主题相关的特色元素 + +请以JSON格式返回: +{ + "title": "设定名称", + "overview": "概述", + "description": "详细描述", + "rules": ["规则1", "规则2"], + "geography": "地理环境", + "history": "历史背景", + "features": ["特色1", "特色2"] +}`;try{const a=await this.generateTextStream(o,{},null);return JSON.parse(a)}catch(a){throw console.error("生成世界观设定失败:",a),a}}async analyzeArticle(t){try{const n=`请对以下文章进行深度分析,并以JSON格式返回分析结果: + +文章内容: +${t} + +请分析以下方面: +1. 情感倾向(积极/消极/中性) +2. 文章标签(最多5个关键标签) +3. 文章分类(玄幻/都市/悬疑/科幻/历史/校园/武侠/其他) +4. 文章评分(0-100分,考虑文笔、情节、结构等) +5. 详细评价(包括优点、缺点、改进建议) + +返回格式: +{ + "sentiment": "积极/消极/中性", + "tags": ["标签1", "标签2", "标签3"], + "category": "分类", + "score": 85, + "evaluation": { + "strengths": ["优点1", "优点2"], + "weaknesses": ["缺点1", "缺点2"], + "suggestions": ["建议1", "建议2"] + }, + "summary": "整体评价总结" +}`,r={model:this.config.model,messages:[{role:"system",content:"你是一位专业的文学评论家和编辑,擅长分析各种类型的文章。请客观、专业地分析文章,给出建设性的评价和建议。"},{role:"user",content:n}],max_tokens:1e3,temperature:.3};console.log("发送文章分析请求:",r);const o=this.buildURL("/chat/completions"),a=this.buildHeaders(),i=await fetch(o,{method:"POST",headers:a,body:JSON.stringify(r)});if(!i.ok)throw new Error(`HTTP error! status: ${i.status}`);const s=await i.json();if(console.log("文章分析响应:",s),s.choices&&s.choices[0]&&s.choices[0].message){const l=s.choices[0].message.content.trim();try{const u=JSON.parse(l);return console.log("解析的分析结果:",u),u}catch(u){return console.error("解析AI分析结果失败:",u),{sentiment:"中性",tags:["AI分析"],category:"其他",score:70,evaluation:{strengths:["内容完整"],weaknesses:["AI分析解析失败"],suggestions:["请检查内容格式"]},summary:"AI分析暂时不可用,使用基础分析结果"}}}else throw new Error("AI响应格式错误")}catch(n){throw console.error("文章分析失败:",n),n}}}const Fr=new GCt,x_=Cje("novel",()=>{const e=X(""),t=X(""),n=X(""),r=X(!1),o=X([]),a=X(null),i=X(!1),s=X([]),l=X(""),u=X(!1),c=X([]),d=X(null),f=X(""),h=X(!1),g=X([]),p=X([]),m=X([]),v=X({apiKey:"",baseURL:"https://ai.91hub.vip/v1",selectedModel:"claude-4-sonnet",maxTokens:2e6,unlimitedTokens:!1,temperature:.7}),y=X({apiKey:"",baseURL:"https://api.openai.com/v1",selectedModel:"gpt-3.5-turbo",maxTokens:2e6,unlimitedTokens:!1,temperature:.7}),_=X("official"),C=X(!1),S=()=>_.value==="official"?v.value:y.value;(()=>{try{const je=localStorage.getItem("apiConfigType")||"official";_.value=je;const Ye=localStorage.getItem("officialApiConfig");if(Ye){const mt=JSON.parse(Ye);v.value={...v.value,...mt,baseURL:"https://ai.91hub.vip/v1"}}const Je=localStorage.getItem("customApiConfig");if(Je){const mt=JSON.parse(Je);y.value={...y.value,...mt}}const it=S();C.value=!!it.apiKey,Fr.updateConfig(it)}catch(je){console.error("初始化API配置失败:",je)}})();const k=X(""),O=X(!1),T=X(""),P=X(!1),U=X({wordCount:0,readingTime:0,sentiment:"",tags:[],category:"",score:0}),F=K(()=>e.value.replace(/<[^>]*>/g,"").length),H=K(()=>Math.ceil(F.value/200)),R=async je=>{e.value=je,await pe()},z=je=>{t.value=je},M=async()=>{t.value&&(!e.value||e.value==="


"?e.value=`

${t.value}

`:e.value+=`


${t.value}

`,await pe())},N=async()=>{e.value="",await pe()},L=je=>{n.value=je},V=je=>{r.value=je},Y=()=>{n.value="",o.value=[]},$=()=>{const je=n.value,Ye=/###\s*(.+?)\n([\s\S]*?)(?=###|$)/g,Je=[];let it,mt=1;for(;(it=Ye.exec(je))!==null;)Je.push({id:mt++,title:it[1].trim(),content:it[2].trim(),generatedText:"",isCompleted:!1});o.value=Je},B=je=>{a.value=je},W=(je,Ye)=>{const Je=o.value.find(it=>it.id===je);Je&&(Je.content=Ye)},J=(je,Ye)=>{const Je=o.value.find(it=>it.id===je);Je&&(Je.generatedText=Ye,Je.isCompleted=!0)},oe=je=>{i.value=je},ie=(je,Ye=!0)=>{const Je=()=>{const it=Date.now(),mt=Math.floor(Math.random()*1e4);return it+mt};s.value.push({id:Je(),content:je,isUser:Ye,timestamp:new Date().toLocaleTimeString()})},Z=je=>{l.value=je},de=je=>{u.value=je},we=()=>{s.value=[]},Be=je=>{d.value=je},ke=je=>{f.value=je},ae=je=>{h.value=je},le=je=>{const Ye=()=>{const Je=Date.now(),it=Math.floor(Math.random()*1e4);return Je+it};g.value.push({id:Ye(),content:je,createdAt:new Date().toISOString()})},q=je=>{const Ye=g.value.findIndex(Je=>Je.id===je);Ye>-1&&g.value.splice(Ye,1)},pe=async()=>{const je=e.value.replace(/<[^>]*>/g,"");if(U.value={wordCount:je.length,readingTime:Math.ceil(je.length/200),sentiment:Se(je),tags:We(je),category:Te(je),score:Ge(je)},C.value&&je.length>100)try{await he(je)}catch(Ye){console.log("AI分析失败,使用本地分析结果:",Ye.message)}},he=async je=>{try{const Ye=await Fr.analyzeArticle(je);U.value={...U.value,sentiment:Ye.sentiment||U.value.sentiment,tags:Ye.tags||U.value.tags,category:Ye.category||U.value.category,score:Ye.score||U.value.score,aiAnalysis:Ye}}catch(Ye){throw console.error("AI文章分析失败:",Ye),Ye}},re=(je,Ye=null)=>{(Ye||_.value)==="official"?v.value={...v.value,...je,baseURL:"https://ai.91hub.vip/v1"}:y.value={...y.value,...je};const it=S();Fr.updateConfig(it),C.value=!!it.apiKey},ue=je=>{_.value=je,localStorage.setItem("apiConfigType",je);const Ye=S();Fr.updateConfig(Ye),C.value=!!Ye.apiKey},_e=async()=>{try{const je=await Fr.validateAPIKey();return C.value=je,je}catch(je){return console.error("API密钥验证失败:",je),C.value=!1,!1}},Pe=async je=>{if(!C.value)throw new Error("请先配置API密钥");V(!0);try{const Ye=await Fr.generateOutline(je,f.value,d.value);return L(Ye),$(),Ye}catch(Ye){throw console.error("生成大纲失败:",Ye),Ye}finally{V(!1)}},Ae=async(je,Ye=null)=>{if(!C.value)throw new Error("请先配置API密钥");V(!0),L("");try{const Je=await Fr.generateOutlineStream(je,f.value,d.value,(it,mt)=>{L(mt),Ye&&Ye(it,mt)});return $(),Je}catch(Je){throw console.error("生成大纲失败:",Je),Je}finally{V(!1)}},Ee=async(je,Ye=null)=>{if(!C.value)throw new Error("请先配置API密钥");oe(!0);try{const Je=e.value.replace(/<[^>]*>/g,""),it=await Fr.generateChapterContent(je.title,je.content,Je,d.value,p.value,m.value,Ye||{});return J(je.id,it),z(it),it}catch(Je){throw console.error("生成章节内容失败:",Je),Je}finally{oe(!1)}},ye=async je=>{if(!C.value)throw new Error("请先配置API密钥");de(!0);try{const Ye=await Fr.chatWithAI(je,s.value);return ie(Ye,!1),Ye}catch(Ye){throw console.error("AI对话失败:",Ye),ie("抱歉,AI暂时无法回应,请稍后再试。",!1),Ye}finally{de(!1)}},ve=je=>{O.value=je},Ce=je=>{k.value=je},ze=async(je={})=>{if(!C.value)throw new Error("请先配置API密钥");if(!e.value)throw new Error("请先输入文章内容");O.value=!0;try{const Ye=e.value.replace(/<[^>]*>/g,""),Je=await Fr.generateSummary(Ye,je);return k.value=Je,Je}catch(Ye){throw console.error("生成摘要失败:",Ye),Ye}finally{O.value=!1}},at=async()=>{if(!C.value)throw new Error("请先配置API密钥");if(!e.value)throw new Error("请先输入文章内容");P.value=!0;try{const je=e.value.replace(/<[^>]*>/g,""),Ye=await Fr.getWritingAdvice(je);return T.value=Ye,Ye}catch(je){throw console.error("获取写作建议失败:",je),je}finally{P.value=!1}},bt=async je=>{if(!C.value)throw new Error("请先配置API密钥");if(g.value.length===0)throw new Error("请先添加语料库内容");ae(!0);try{const Ye=await Fr.generatePersonalizedContent(je,g.value);return z(Ye),Ye}catch(Ye){throw console.error("生成个性化内容失败:",Ye),Ye}finally{ae(!1)}},Ft=async(je,Ye,Je,it)=>{if(!C.value)throw new Error("请先配置API密钥");try{const mt=await Fr.generateGeneralContent(je,Ye,Je,it);return z(mt),mt}catch(mt){throw console.error("生成内容失败:",mt),mt}},Dt=async(je,Ye,Je,it,mt=null)=>{if(!C.value)throw new Error("请先配置API密钥");ae(!0),z("");try{const _t=await Fr.generateGeneralContentStream(je,Ye,Je,it,(Qt,Vn)=>{z(Vn),console.log("流式内容更新:",Qt),mt&&mt(Qt,Vn)});return console.log("流式生成完成:",_t),_t}catch(_t){throw console.error("生成内容失败:",_t),_t}finally{ae(!1)}},He=async je=>new Promise((Ye,Je)=>{const it=new FileReader;it.onload=mt=>{const _t=mt.target.result;le(_t),Ye(_t)},it.onerror=Je,it.readAsText(je)}),Fe=()=>{const je=JSON.stringify(g.value,null,2),Ye=new Blob([je],{type:"application/json"}),Je=URL.createObjectURL(Ye),it=document.createElement("a");it.href=Je,it.download="corpus.json",it.click(),URL.revokeObjectURL(Je)},Ue=async je=>new Promise((Ye,Je)=>{const it=new FileReader;it.onload=mt=>{try{const _t=JSON.parse(mt.target.result);g.value=_t,Ye(_t)}catch{Je(new Error("语料库文件格式错误"))}},it.onerror=Je,it.readAsText(je)}),Se=je=>{const Ye=["快乐","幸福","美好","成功","胜利","爱","喜欢"],Je=["悲伤","痛苦","失败","死亡","恐惧","愤怒","绝望"];let it=0,mt=0;return Ye.forEach(_t=>{it+=(je.match(new RegExp(_t,"g"))||[]).length}),Je.forEach(_t=>{mt+=(je.match(new RegExp(_t,"g"))||[]).length}),it>mt?"积极":mt>it?"消极":"中性"},We=je=>{const Ye=[];return(je.includes("修仙")||je.includes("仙人"))&&Ye.push("修仙"),(je.includes("爱情")||je.includes("恋人"))&&Ye.push("爱情"),(je.includes("悬疑")||je.includes("推理"))&&Ye.push("悬疑"),(je.includes("科幻")||je.includes("未来"))&&Ye.push("科幻"),(je.includes("古代")||je.includes("穿越"))&&Ye.push("古代"),Ye},Te=je=>je.includes("修仙")||je.includes("异世界")?"玄幻":je.includes("都市")||je.includes("现代")?"都市":je.includes("悬疑")||je.includes("推理")?"悬疑":je.includes("科幻")||je.includes("未来")?"科幻":je.includes("古代")||je.includes("历史")?"历史":"其他",Ge=je=>{let Ye=50;je.length>1e3&&(Ye+=10),je.length>3e3&&(Ye+=10),je.length>5e3&&(Ye+=10);const Je=je.split(` + +`).filter(mt=>mt.trim());return Je.length>3&&(Ye+=5),Je.length>6&&(Ye+=5),(je.match(/[""]/g)||[]).length>4&&(Ye+=5),Math.min(100,Ye)};return{currentNovel:e,generatedContent:t,outline:n,isGeneratingOutline:r,chapters:o,selectedChapter:a,isGeneratingChapter:i,aiChatHistory:s,currentChatInput:l,isAiChatting:u,templates:c,selectedTemplate:d,keywords:f,isGenerating:h,corpus:g,characters:p,worldSettings:m,articleStats:U,officialApiConfig:v,customApiConfig:y,currentConfigType:_,isApiConfigured:C,articleSummary:k,isGeneratingSummary:O,writingAdvice:T,isGeneratingAdvice:P,wordCount:F,readingTime:H,setCurrentNovel:R,setGeneratedContent:z,addToNovel:M,clearNovel:N,setOutline:L,setGeneratingOutline:V,clearOutline:Y,parseOutlineToChapters:$,setSelectedChapter:B,updateChapterContent:W,setChapterGenerated:J,setGeneratingChapter:oe,addChatMessage:ie,setChatInput:Z,setAiChatting:de,clearChatHistory:we,setTemplate:Be,setKeywords:ke,setGenerating:ae,addCorpus:le,removeCorpus:q,addCharacter:je=>{p.value.push({id:Date.now(),...je,traits:je.traitsInput?je.traitsInput.split(",").map(Ye=>Ye.trim()).filter(Ye=>Ye):[]})},removeCharacter:je=>{p.value=p.value.filter(Ye=>Ye.id!==je)},addWorldSetting:je=>{const Ye=()=>{const Je=Date.now(),it=Math.floor(Math.random()*1e4);return Je+it};m.value.push({id:Ye(),...je})},removeWorldSetting:je=>{m.value=m.value.filter(Ye=>Ye.id!==je)},updateWorldSetting:(je,Ye)=>{const Je=m.value.findIndex(it=>it.id===je);Je>-1&&(m.value[Je]={...m.value[Je],...Ye})},updateStats:pe,updateApiConfig:re,switchConfigType:ue,getCurrentApiConfig:S,validateApiKey:_e,generateOutlineWithAPI:Pe,generateOutlineWithAPIStream:Ae,generateChapterWithAPI:Ee,sendChatMessageWithAPI:ye,generateSummaryWithAPI:ze,getWritingAdviceWithAPI:at,generatePersonalizedContent:bt,generateContentWithAPI:Ft,generateContentWithAPIStream:Dt,addCorpusFromFile:He,exportCorpus:Fe,importCorpus:Ue,setGeneratingSummary:ve,setArticleSummary:Ce,generateContent:async(je,Ye=null)=>{if(!C.value)throw new Error("请先配置API");try{return h.value=!0,Ye?await Fr.generateTextStream(je,{type:"content_generation"},(it,mt)=>{Ye(it)}):await Fr.generateTextStream(je,{type:"content_generation"},null)}catch(Je){throw console.error("生成内容失败:",Je),Je}finally{h.value=!1}}}});const Cs=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},YCt={class:"api-config"},XCt={class:"card-header"},JCt={class:"config-type-selector"},ZCt={class:"config-main-content"},QCt={class:"config-tips-panel"},ext={key:0,class:"config-tips official-tips"},txt={class:"tips-content"},nxt={class:"purchase-info"},rxt={key:1,class:"config-tips custom-tips"},oxt={class:"config-form-panel"},axt={key:0,class:"official-config"},ixt={class:"model-option"},sxt={class:"model-name"},lxt={class:"model-price"},uxt={class:"model-description"},cxt={class:"max-tokens-control"},dxt={key:1,class:"custom-config"},fxt={style:{float:"right",color:"#8492a6","font-size":"12px"}},hxt={class:"custom-model-input"},pxt={key:0,class:"custom-models-list"},gxt={class:"max-tokens-control"},vxt={__name:"ApiConfig",setup(e){const t=x_(),n=X(!1),r=X(""),o=X([]),a=X("official"),i=Bn({apiKey:"",baseURL:"https://ai.91hub.vip/v1",selectedModel:"claude-4-sonnet",maxTokens:2e6,unlimitedTokens:!1,temperature:.7}),s=Bn({apiKey:"",baseURL:"https://api.openai.com/v1",selectedModel:"gpt-3.5-turbo",maxTokens:2e6,unlimitedTokens:!1,temperature:.7}),l=[{id:"claude-4-sonnet",name:"Claude-4 Sonnet",description:"最新一代Claude模型,擅长创意写作和长文本处理",price:"¥0.1/次"},{id:"claude-opus-4-20250514",name:"Claude Opus 4",description:"最强性能Claude模型,顶级创作能力",price:"¥0.5/次"},{id:"claude-3-7-sonnet-thinking",name:"Claude-3.7 Sonnet Thinking",description:"具备思维链的Claude模型,逻辑推理强",price:"¥0.2/次"},{id:"claude-3-7-sonnet-20250219",name:"Claude-3.7 Sonnet",description:"高性能版本,平衡性能与成本",price:"¥0.1/次"}],u=[{id:"deepseek-reasoner",name:"deepseek-r1",description:"deepseek-r1"},{id:"deepseek-chat",name:"deepseek-v3",description:"deepseek-v3"},{id:"claude-3.7-sonnet",name:"claude-3.7-sonnet",description:"claude-3.7-sonnet"},{id:"claude-4-sonnet",name:"claude-4-sonnet",description:"claude-4-sonnet"},{id:"gemini-2.5-pro-preview-05-06",name:"gemini-2.5-pro-preview-05-06",description:"gemini-2.5-pro-preview-05-06"}],c=K(()=>[...u,...o.value]),d=K(()=>t.isApiConfigured),f=U=>U<=.3?"保守":U<=.7?"平衡":"创新",h=()=>{window.open("https://item.taobao.com/item.htm?ft=t&id=938261705242","_blank")},g=U=>{a.value=U;const F=U==="official"?i:s;t.updateApiConfig(F,U),t.switchConfigType(U)},p=()=>{i.unlimitedTokens?i.maxTokens=null:i.maxTokens=2e6},m=async()=>{if(!i.apiKey){Ie.warning("请输入API密钥");return}i.baseURL="https://ai.91hub.vip/v1",n.value=!0;try{t.updateApiConfig(i,"official"),t.switchConfigType("official"),await t.validateApiKey()?(Ie.success("官方配置保存成功"),localStorage.setItem("officialApiConfig",JSON.stringify(i))):Ie.error("API密钥验证失败,请检查配置")}catch(U){Ie.error("配置保存失败:"+U.message)}finally{n.value=!1}},v=async()=>{if(!i.apiKey){Ie.warning("请先输入API密钥");return}i.baseURL="https://ai.91hub.vip/v1",n.value=!0;try{t.updateApiConfig(i,"official"),t.switchConfigType("official"),await t.validateApiKey()?Ie.success("官方配置连接测试成功"):Ie.error("连接测试失败")}catch(U){Ie.error("连接测试失败:"+U.message)}finally{n.value=!1}},y=()=>{s.unlimitedTokens?s.maxTokens=null:s.maxTokens=2e6},_=()=>{const U=r.value.trim();if(!U)return;if(c.value.some(H=>H.id===U)){Ie.warning("该模型已存在");return}o.value.push({id:U,name:U,description:"自定义模型"}),r.value="",Ie.success("自定义模型添加成功"),S()},C=U=>{const F=o.value.findIndex(H=>H.id===U);F>-1&&(o.value.splice(F,1),s.selectedModel===U&&(s.selectedModel="gpt-3.5-turbo"),Ie.success("自定义模型删除成功"),S())},S=()=>{localStorage.setItem("customModels",JSON.stringify(o.value))},E=()=>{const U=localStorage.getItem("customModels");if(U)try{o.value=JSON.parse(U)}catch(F){console.error("加载自定义模型失败:",F)}},k=async()=>{if(!s.apiKey){Ie.warning("请输入API密钥");return}n.value=!0;try{t.updateApiConfig(s,"custom"),t.switchConfigType("custom"),await t.validateApiKey()?(Ie.success("自定义配置保存成功"),localStorage.setItem("customApiConfig",JSON.stringify(s))):Ie.error("API密钥验证失败,请检查配置")}catch(U){Ie.error("配置保存失败:"+U.message)}finally{n.value=!1}},O=async()=>{if(!s.apiKey){Ie.warning("请先输入API密钥");return}n.value=!0;try{t.updateApiConfig(s,"custom"),t.switchConfigType("custom"),await t.validateApiKey()?Ie.success("自定义配置连接测试成功"):Ie.error("连接测试失败")}catch(U){Ie.error("连接测试失败:"+U.message)}finally{n.value=!1}},T=()=>{Object.assign(s,{apiKey:"",baseURL:"https://api.openai.com/v1",selectedModel:"gpt-3.5-turbo",maxTokens:2e6,unlimitedTokens:!1,temperature:.7}),localStorage.removeItem("customApiConfig"),Ie.success("自定义配置已重置")},P=()=>{const U=localStorage.getItem("apiConfigType")||"official";a.value=U;const F=localStorage.getItem("officialApiConfig");if(F)try{const z=JSON.parse(F);z.apiKey&&(i.apiKey=z.apiKey),z.selectedModel&&(i.selectedModel=z.selectedModel),z.maxTokens!==void 0&&(i.maxTokens=z.maxTokens),z.unlimitedTokens!==void 0?i.unlimitedTokens=z.unlimitedTokens:z.maxTokens===null&&(i.unlimitedTokens=!0),z.temperature!==void 0&&(i.temperature=z.temperature),i.baseURL="https://ai.91hub.vip/v1"}catch(z){console.error("加载官方配置失败:",z)}const H=localStorage.getItem("customApiConfig");if(H)try{const z=JSON.parse(H);z.unlimitedTokens===void 0&&(z.unlimitedTokens=z.maxTokens===null),Object.assign(s,z)}catch(z){console.error("加载自定义配置失败:",z)}const R=a.value==="official"?i:s;t.updateApiConfig(R,a.value),t.switchConfigType(a.value)};return Kt(()=>{E(),P()}),(U,F)=>{const H=Si,R=bT,z=w_,M=Br,N=pT,L=fo,V=_f,Y=bs,$=ii,B=Xi,W=Kg,J=CT,oe=Xh,ie=uc;return I(),j("div",YCt,[D(ie,{class:"config-card"},{header:A(()=>[w("div",XCt,[F[14]||(F[14]=w("span",null,"API配置",-1)),D(H,{type:d.value?"success":"danger",size:"small"},{default:A(()=>[ce(se(d.value?"已配置":"未配置"),1)]),_:1},8,["type"])])]),default:A(()=>[w("div",JCt,[D(z,{modelValue:a.value,"onUpdate:modelValue":F[0]||(F[0]=Z=>a.value=Z),onChange:g},{default:A(()=>[D(R,{label:"official"},{default:A(()=>F[15]||(F[15]=[ce("🏢 91写作官方API")])),_:1,__:[15]}),D(R,{label:"custom"},{default:A(()=>F[16]||(F[16]=[ce("⚙️ 自定义API配置")])),_:1,__:[16]})]),_:1},8,["modelValue"])]),w("div",ZCt,[w("div",QCt,[a.value==="official"?(I(),j("div",ext,[F[23]||(F[23]=w("h4",null,"🏢 官方默认配置",-1)),w("div",txt,[F[19]||(F[19]=w("p",null,[w("strong",null,"推荐新手使用"),ce(",不会自己获取API和配置大模型的用户可以选择91写作官方推出的,API,只需输入密钥即可。采用"),w("strong",null,"按次计费"),ce("模式,价格透明。")],-1)),F[20]||(F[20]=w("div",{class:"model-info"},[w("h5",null,"推荐模型:"),w("ul",null,[w("li",null,[w("strong",null,"Claude-4 Sonnet"),ce(" - ¥0.1/次(默认)")]),w("li",null,[w("strong",null,"Claude Opus 4"),ce(" - ¥0.5/次(顶级)")]),w("li",null,[w("strong",null,"Claude-3.7 Thinking"),ce(" - ¥0.2/次(推理)")]),w("li",null,[w("strong",null,"Claude-3.7 Sonnet"),ce(" - ¥0.1/次(经济)")])])],-1)),F[21]||(F[21]=w("div",{class:"usage-steps"},[w("h5",null,"使用步骤:"),w("ol",null,[w("li",null,"输入API密钥"),w("li",null,"选择模型(推荐Claude-4 Sonnet)"),w("li",null,"保存配置即可使用"),w("li",null,[w("strong",null,"问题交流QQ群:468734087")])])],-1)),F[22]||(F[22]=w("div",{class:"usage-steps"},[w("h5",null,"使用教程:"),w("ol",null,[w("li",null,[w("a",{href:"https://www.bilibili.com/video/BV1keKgzaER2",target:"_blank"},"API配置教程")]),w("li",null,[w("a",{href:"https://www.bilibili.com/video/BV1AYKgzAEne",target:"_blank"},"本地部署及线上部署教程")])])],-1)),w("div",nxt,[F[18]||(F[18]=w("p",null,"购买API密钥",-1)),D(M,{type:"primary",size:"small",onClick:h},{default:A(()=>F[17]||(F[17]=[ce(" 前往购买 ")])),_:1,__:[17]})])])])):(I(),j("div",rxt,F[24]||(F[24]=[w("h4",null,"⚙️ 自定义配置",-1),w("div",{class:"tips-content"},[w("p",null,[w("strong",null,"适合高级用户"),ce(",仅支持openai格式API。")]),w("div",{class:"params-info"},[w("h5",null,"参数说明:"),w("ul",null,[w("li",null,[w("strong",null,"API地址"),ce(" - 您的API服务地址")]),w("li",null,[w("strong",null,"API密钥"),ce(" - 身份验证密钥")]),w("li",null,[w("strong",null,"模型选择"),ce(" - 如果没有想要的模型,支持自定义模型")]),w("li",null,[w("strong",null,"Token限制"),ce(" - 控制生成长度")]),w("li",null,[w("strong",null,"创造性"),ce(" - 0保守,1创新")])])]),w("div",{class:"supported-apis"},[w("h5",null,"特殊说明:"),w("ul",null,[w("li",null,"openai格式api是大模型通用格式,支持所有大模型"),w("li",null,"支持本地部署大模型,如ollama、llmstudio等,自行学习怎么获取openai格式api")])]),w("div",{class:"usage-steps"},[w("h5",null,"使用教程:"),w("ol",null,[w("li",null,[w("a",{href:"https://www.bilibili.com/video/BV1keKgzaER2",target:"_blank"},"API配置教程")]),w("li",null,[w("a",{href:"https://www.bilibili.com/video/BV1AYKgzAEne",target:"_blank"},"本地部署及线上部署教程")])])]),w("div",{class:"tips-note"},[w("p",null,"💡 建议先测试连接再保存配置")])],-1)])))]),w("div",oxt,[a.value==="official"?(I(),j("div",axt,[D(N,{title:"官方默认配置",type:"info",closable:!1,"show-icon":""},{default:A(()=>F[25]||(F[25]=[ce(" 使用官方推荐的API服务,稳定可靠。 ")])),_:1}),D(oe,{model:i,"label-width":"80px",size:"small",class:"config-form"},{default:A(()=>[D(V,{label:"API密钥",required:""},{default:A(()=>[D(L,{modelValue:i.apiKey,"onUpdate:modelValue":F[1]||(F[1]=Z=>i.apiKey=Z),type:"password",placeholder:"请输入API密钥","show-password":"",clearable:""},null,8,["modelValue"])]),_:1}),D(V,{label:"API地址"},{default:A(()=>[D(L,{modelValue:i.baseURL,"onUpdate:modelValue":F[2]||(F[2]=Z=>i.baseURL=Z),placeholder:"官方API地址",disabled:!0},null,8,["modelValue"]),F[26]||(F[26]=w("div",{class:"form-tip"},"官方优化地址,无需修改",-1))]),_:1,__:[26]}),D(V,{label:"推荐模型"},{default:A(()=>[D($,{modelValue:i.selectedModel,"onUpdate:modelValue":F[3]||(F[3]=Z=>i.selectedModel=Z),placeholder:"选择推荐模型"},{default:A(()=>[(I(),j(tt,null,wt(l,Z=>D(Y,{key:Z.id,label:Z.name,value:Z.id},{default:A(()=>[w("div",ixt,[w("span",sxt,se(Z.name),1),w("span",lxt,se(Z.price),1)]),w("div",uxt,se(Z.description),1)]),_:2},1032,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1}),D(V,{label:"最大Token"},{default:A(()=>[w("div",cxt,[D(B,{modelValue:i.unlimitedTokens,"onUpdate:modelValue":F[4]||(F[4]=Z=>i.unlimitedTokens=Z),onChange:p},{default:A(()=>F[27]||(F[27]=[ce(" 无限制Token ")])),_:1,__:[27]},8,["modelValue"]),i.unlimitedTokens?be("",!0):(I(),Oe(W,{key:0,modelValue:i.maxTokens,"onUpdate:modelValue":F[5]||(F[5]=Z=>i.maxTokens=Z),min:1,max:1e7,step:1e3,style:{width:"100%"}},null,8,["modelValue"]))])]),_:1}),D(V,{label:"创造性"},{default:A(()=>[D(J,{modelValue:i.temperature,"onUpdate:modelValue":F[6]||(F[6]=Z=>i.temperature=Z),min:0,max:1,step:.1,"format-tooltip":f,"show-tooltip":""},null,8,["modelValue"])]),_:1}),D(V,null,{default:A(()=>[D(M,{type:"primary",onClick:m,loading:n.value},{default:A(()=>[ce(se(n.value?"验证中...":"保存配置"),1)]),_:1},8,["loading"]),D(M,{onClick:v,loading:n.value},{default:A(()=>F[28]||(F[28]=[ce(" 测试连接 ")])),_:1,__:[28]},8,["loading"])]),_:1})]),_:1},8,["model"])])):(I(),j("div",dxt,[D(N,{title:"自定义配置",type:"warning",closable:!1,"show-icon":""},{default:A(()=>F[29]||(F[29]=[ce(" 高级用户可自定义API地址和模型参数。 ")])),_:1}),D(oe,{model:s,"label-width":"80px",size:"small",class:"config-form"},{default:A(()=>[D(V,{label:"API密钥",required:""},{default:A(()=>[D(L,{modelValue:s.apiKey,"onUpdate:modelValue":F[7]||(F[7]=Z=>s.apiKey=Z),type:"password",placeholder:"请输入API密钥","show-password":"",clearable:""},null,8,["modelValue"])]),_:1}),D(V,{label:"API地址",required:""},{default:A(()=>[D(L,{modelValue:s.baseURL,"onUpdate:modelValue":F[8]||(F[8]=Z=>s.baseURL=Z),placeholder:"https://api.openai.com/v1",clearable:""},null,8,["modelValue"])]),_:1}),D(V,{label:"模型选择"},{default:A(()=>[D($,{modelValue:s.selectedModel,"onUpdate:modelValue":F[9]||(F[9]=Z=>s.selectedModel=Z),placeholder:"选择模型",filterable:"","allow-create":""},{default:A(()=>[(I(!0),j(tt,null,wt(c.value,Z=>(I(),Oe(Y,{key:Z.id,label:Z.name,value:Z.id},{default:A(()=>[w("span",null,se(Z.name),1),w("span",fxt,se(Z.description),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),D(V,{label:"自定义模型"},{default:A(()=>[w("div",hxt,[D(L,{modelValue:r.value,"onUpdate:modelValue":F[10]||(F[10]=Z=>r.value=Z),placeholder:"输入自定义模型名称",onKeyup:qn(_,["enter"])},null,8,["modelValue"]),D(M,{onClick:_,type:"primary",size:"small"},{default:A(()=>F[30]||(F[30]=[ce("添加")])),_:1,__:[30]})]),o.value.length>0?(I(),j("div",pxt,[(I(!0),j(tt,null,wt(o.value,Z=>(I(),Oe(H,{key:Z.id,closable:"",onClose:de=>C(Z.id),size:"small",style:{"margin-right":"8px","margin-bottom":"4px"}},{default:A(()=>[ce(se(Z.name),1)]),_:2},1032,["onClose"]))),128))])):be("",!0)]),_:1}),D(V,{label:"最大Token"},{default:A(()=>[w("div",gxt,[D(B,{modelValue:s.unlimitedTokens,"onUpdate:modelValue":F[11]||(F[11]=Z=>s.unlimitedTokens=Z),onChange:y},{default:A(()=>F[31]||(F[31]=[ce(" 无限制Token ")])),_:1,__:[31]},8,["modelValue"]),s.unlimitedTokens?be("",!0):(I(),Oe(W,{key:0,modelValue:s.maxTokens,"onUpdate:modelValue":F[12]||(F[12]=Z=>s.maxTokens=Z),min:1,max:1e7,step:1e3,style:{width:"100%"}},null,8,["modelValue"]))])]),_:1}),D(V,{label:"创造性"},{default:A(()=>[D(J,{modelValue:s.temperature,"onUpdate:modelValue":F[13]||(F[13]=Z=>s.temperature=Z),min:0,max:1,step:.1,"format-tooltip":f,"show-tooltip":""},null,8,["modelValue"])]),_:1}),D(V,null,{default:A(()=>[D(M,{type:"primary",onClick:k,loading:n.value},{default:A(()=>[ce(se(n.value?"验证中...":"保存配置"),1)]),_:1},8,["loading"]),D(M,{onClick:O,loading:n.value},{default:A(()=>F[32]||(F[32]=[ce(" 测试连接 ")])),_:1,__:[32]},8,["loading"]),D(M,{onClick:T},{default:A(()=>F[33]||(F[33]=[ce("重置")])),_:1,__:[33]})]),_:1})]),_:1},8,["model"])]))])])]),_:1})])}}},Ske=Cs(vxt,[["__scopeId","data-v-aa159c38"]]);function Eoe(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}let S_=Eoe();function Dke(e){S_=e}const Eke=/[&<>"']/,mxt=new RegExp(Eke.source,"g"),kke=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,yxt=new RegExp(kke.source,"g"),bxt={"&":"&","<":"<",">":">",'"':""","'":"'"},Bpe=e=>bxt[e];function Ru(e,t){if(t){if(Eke.test(e))return e.replace(mxt,Bpe)}else if(kke.test(e))return e.replace(yxt,Bpe);return e}const _xt=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function wxt(e){return e.replace(_xt,(t,n)=>(n=n.toLowerCase(),n==="colon"?":":n.charAt(0)==="#"?n.charAt(1)==="x"?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1)):""))}const Cxt=/(^|[^\[])\^/g;function ao(e,t){e=typeof e=="string"?e:e.source,t=t||"";const n={replace:(r,o)=>(o=typeof o=="object"&&"source"in o?o.source:o,o=o.replace(Cxt,"$1"),e=e.replace(r,o),n),getRegex:()=>new RegExp(e,t)};return n}function Rpe(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}const cP={exec:()=>null};function Npe(e,t){const n=e.replace(/\|/g,(a,i,s)=>{let l=!1,u=i;for(;--u>=0&&s[u]==="\\";)l=!l;return l?"|":" |"}),r=n.split(/ \|/);let o=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length{const a=o.match(/^\s+/);if(a===null)return o;const[i]=a;return i.length>=r.length?o.slice(r.length):o}).join(` +`)}class dP{constructor(t){lt(this,"options");lt(this,"rules");lt(this,"lexer");this.options=t||S_}space(t){const n=this.rules.block.newline.exec(t);if(n&&n[0].length>0)return{type:"space",raw:n[0]}}code(t){const n=this.rules.block.code.exec(t);if(n){const r=n[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?r:uO(r,` +`)}}}fences(t){const n=this.rules.block.fences.exec(t);if(n){const r=n[0],o=Sxt(r,n[3]||"");return{type:"code",raw:r,lang:n[2]?n[2].trim().replace(this.rules.inline._escapes,"$1"):n[2],text:o}}}heading(t){const n=this.rules.block.heading.exec(t);if(n){let r=n[2].trim();if(/#$/.test(r)){const o=uO(r,"#");(this.options.pedantic||!o||/ $/.test(o))&&(r=o.trim())}return{type:"heading",raw:n[0],depth:n[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(t){const n=this.rules.block.hr.exec(t);if(n)return{type:"hr",raw:n[0]}}blockquote(t){const n=this.rules.block.blockquote.exec(t);if(n){const r=uO(n[0].replace(/^ *>[ \t]?/gm,""),` +`),o=this.lexer.state.top;this.lexer.state.top=!0;const a=this.lexer.blockTokens(r);return this.lexer.state.top=o,{type:"blockquote",raw:n[0],tokens:a,text:r}}}list(t){let n=this.rules.block.list.exec(t);if(n){let r=n[1].trim();const o=r.length>1,a={type:"list",raw:"",ordered:o,start:o?+r.slice(0,-1):"",loose:!1,items:[]};r=o?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=o?r:"[*+-]");const i=new RegExp(`^( {0,3}${r})((?:[ ][^\\n]*)?(?:\\n|$))`);let s="",l="",u=!1;for(;t;){let c=!1;if(!(n=i.exec(t))||this.rules.block.hr.test(t))break;s=n[0],t=t.substring(s.length);let d=n[2].split(` +`,1)[0].replace(/^\t+/,v=>" ".repeat(3*v.length)),f=t.split(` +`,1)[0],h=0;this.options.pedantic?(h=2,l=d.trimStart()):(h=n[2].search(/[^ ]/),h=h>4?1:h,l=d.slice(h),h+=n[1].length);let g=!1;if(!d&&/^ *$/.test(f)&&(s+=f+` +`,t=t.substring(f.length+1),c=!0),!c){const v=new RegExp(`^ {0,${Math.min(3,h-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),y=new RegExp(`^ {0,${Math.min(3,h-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),_=new RegExp(`^ {0,${Math.min(3,h-1)}}(?:\`\`\`|~~~)`),C=new RegExp(`^ {0,${Math.min(3,h-1)}}#`);for(;t;){const S=t.split(` +`,1)[0];if(f=S,this.options.pedantic&&(f=f.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),_.test(f)||C.test(f)||v.test(f)||y.test(t))break;if(f.search(/[^ ]/)>=h||!f.trim())l+=` +`+f.slice(h);else{if(g||d.search(/[^ ]/)>=4||_.test(d)||C.test(d)||y.test(d))break;l+=` +`+f}!g&&!f.trim()&&(g=!0),s+=S+` +`,t=t.substring(S.length+1),d=f.slice(h)}}a.loose||(u?a.loose=!0:/\n *\n *$/.test(s)&&(u=!0));let p=null,m;this.options.gfm&&(p=/^\[[ xX]\] /.exec(l),p&&(m=p[0]!=="[ ] ",l=l.replace(/^\[[ xX]\] +/,""))),a.items.push({type:"list_item",raw:s,task:!!p,checked:m,loose:!1,text:l,tokens:[]}),a.raw+=s}a.items[a.items.length-1].raw=s.trimEnd(),a.items[a.items.length-1].text=l.trimEnd(),a.raw=a.raw.trimEnd();for(let c=0;ch.type==="space"),f=d.length>0&&d.some(h=>/\n.*\n/.test(h.raw));a.loose=f}if(a.loose)for(let c=0;c$/,"$1").replace(this.rules.inline._escapes,"$1"):"",a=n[3]?n[3].substring(1,n[3].length-1).replace(this.rules.inline._escapes,"$1"):n[3];return{type:"def",tag:r,raw:n[0],href:o,title:a}}}table(t){const n=this.rules.block.table.exec(t);if(n){if(!/[:|]/.test(n[2]))return;const r={type:"table",raw:n[0],header:Npe(n[1]).map(o=>({text:o,tokens:[]})),align:n[2].replace(/^\||\| *$/g,"").split("|"),rows:n[3]&&n[3].trim()?n[3].replace(/\n[ \t]*$/,"").split(` +`):[]};if(r.header.length===r.align.length){let o=r.align.length,a,i,s,l;for(a=0;a({text:u,tokens:[]}));for(o=r.header.length,i=0;i/i.test(n[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(n[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(n[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:n[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:n[0]}}link(t){const n=this.rules.inline.link.exec(t);if(n){const r=n[2].trim();if(!this.options.pedantic&&/^$/.test(r))return;const i=uO(r.slice(0,-1),"\\");if((r.length-i.length)%2===0)return}else{const i=xxt(n[2],"()");if(i>-1){const l=(n[0].indexOf("!")===0?5:4)+n[1].length+i;n[2]=n[2].substring(0,i),n[0]=n[0].substring(0,l).trim(),n[3]=""}}let o=n[2],a="";if(this.options.pedantic){const i=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(o);i&&(o=i[1],a=i[3])}else a=n[3]?n[3].slice(1,-1):"";return o=o.trim(),/^$/.test(r)?o=o.slice(1):o=o.slice(1,-1)),Lpe(n,{href:o&&o.replace(this.rules.inline._escapes,"$1"),title:a&&a.replace(this.rules.inline._escapes,"$1")},n[0],this.lexer)}}reflink(t,n){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let o=(r[2]||r[1]).replace(/\s+/g," ");if(o=n[o.toLowerCase()],!o){const a=r[0].charAt(0);return{type:"text",raw:a,text:a}}return Lpe(r,o,r[0],this.lexer)}}emStrong(t,n,r=""){let o=this.rules.inline.emStrong.lDelim.exec(t);if(!o||o[3]&&r.match(/[\p{L}\p{N}]/u))return;if(!(o[1]||o[2]||"")||!r||this.rules.inline.punctuation.exec(r)){const i=[...o[0]].length-1;let s,l,u=i,c=0;const d=o[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(d.lastIndex=0,n=n.slice(-1*t.length+i);(o=d.exec(n))!=null;){if(s=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!s)continue;if(l=[...s].length,o[3]||o[4]){u+=l;continue}else if((o[5]||o[6])&&i%3&&!((i+l)%3)){c+=l;continue}if(u-=l,u>0)continue;l=Math.min(l,l+u+c);const f=[...o[0]][0].length,h=t.slice(0,i+o.index+f+l);if(Math.min(i,l)%2){const p=h.slice(1,-1);return{type:"em",raw:h,text:p,tokens:this.lexer.inlineTokens(p)}}const g=h.slice(2,-2);return{type:"strong",raw:h,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(t){const n=this.rules.inline.code.exec(t);if(n){let r=n[2].replace(/\n/g," ");const o=/[^ ]/.test(r),a=/^ /.test(r)&&/ $/.test(r);return o&&a&&(r=r.substring(1,r.length-1)),r=Ru(r,!0),{type:"codespan",raw:n[0],text:r}}}br(t){const n=this.rules.inline.br.exec(t);if(n)return{type:"br",raw:n[0]}}del(t){const n=this.rules.inline.del.exec(t);if(n)return{type:"del",raw:n[0],text:n[2],tokens:this.lexer.inlineTokens(n[2])}}autolink(t){const n=this.rules.inline.autolink.exec(t);if(n){let r,o;return n[2]==="@"?(r=Ru(n[1]),o="mailto:"+r):(r=Ru(n[1]),o=r),{type:"link",raw:n[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}}url(t){let n;if(n=this.rules.inline.url.exec(t)){let r,o;if(n[2]==="@")r=Ru(n[0]),o="mailto:"+r;else{let a;do a=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0];while(a!==n[0]);r=Ru(n[0]),n[1]==="www."?o="http://"+n[0]:o=n[0]}return{type:"link",raw:n[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(t){const n=this.rules.inline.text.exec(t);if(n){let r;return this.lexer.state.inRawBlock?r=n[0]:r=Ru(n[0]),{type:"text",raw:n[0],text:r}}}}const $n={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:cP,lheading:/^(?!bull )((?:.|\n(?!\s*?\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};$n._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/;$n._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;$n.def=ao($n.def).replace("label",$n._label).replace("title",$n._title).getRegex();$n.bullet=/(?:[*+-]|\d{1,9}[.)])/;$n.listItemStart=ao(/^( *)(bull) */).replace("bull",$n.bullet).getRegex();$n.list=ao($n.list).replace(/bull/g,$n.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+$n.def.source+")").getRegex();$n._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";$n._comment=/|$)/;$n.html=ao($n.html,"i").replace("comment",$n._comment).replace("tag",$n._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();$n.lheading=ao($n.lheading).replace(/bull/g,$n.bullet).getRegex();$n.paragraph=ao($n._paragraph).replace("hr",$n.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",$n._tag).getRegex();$n.blockquote=ao($n.blockquote).replace("paragraph",$n.paragraph).getRegex();$n.normal={...$n};$n.gfm={...$n.normal,table:"^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"};$n.gfm.table=ao($n.gfm.table).replace("hr",$n.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",$n._tag).getRegex();$n.gfm.paragraph=ao($n._paragraph).replace("hr",$n.hr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",$n.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",$n._tag).getRegex();$n.pedantic={...$n.normal,html:ao(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",$n._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:cP,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ao($n.normal._paragraph).replace("hr",$n.hr).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",$n.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()};const mn={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:cP,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,rDelimAst:/^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:cP,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`^|~";mn.punctuation=ao(mn.punctuation,"u").replace(/punctuation/g,mn._punctuation).getRegex();mn.blockSkip=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g;mn.anyPunctuation=/\\[punct]/g;mn._escapes=/\\([punct])/g;mn._comment=ao($n._comment).replace("(?:-->|$)","-->").getRegex();mn.emStrong.lDelim=ao(mn.emStrong.lDelim,"u").replace(/punct/g,mn._punctuation).getRegex();mn.emStrong.rDelimAst=ao(mn.emStrong.rDelimAst,"gu").replace(/punct/g,mn._punctuation).getRegex();mn.emStrong.rDelimUnd=ao(mn.emStrong.rDelimUnd,"gu").replace(/punct/g,mn._punctuation).getRegex();mn.anyPunctuation=ao(mn.anyPunctuation,"gu").replace(/punct/g,mn._punctuation).getRegex();mn._escapes=ao(mn._escapes,"gu").replace(/punct/g,mn._punctuation).getRegex();mn._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;mn._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;mn.autolink=ao(mn.autolink).replace("scheme",mn._scheme).replace("email",mn._email).getRegex();mn._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;mn.tag=ao(mn.tag).replace("comment",mn._comment).replace("attribute",mn._attribute).getRegex();mn._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;mn._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;mn._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;mn.link=ao(mn.link).replace("label",mn._label).replace("href",mn._href).replace("title",mn._title).getRegex();mn.reflink=ao(mn.reflink).replace("label",mn._label).replace("ref",$n._label).getRegex();mn.nolink=ao(mn.nolink).replace("ref",$n._label).getRegex();mn.reflinkSearch=ao(mn.reflinkSearch,"g").replace("reflink",mn.reflink).replace("nolink",mn.nolink).getRegex();mn.normal={...mn};mn.pedantic={...mn.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:ao(/^!?\[(label)\]\((.*?)\)/).replace("label",mn._label).getRegex(),reflink:ao(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",mn._label).getRegex()};mn.gfm={...mn.normal,escape:ao(mn.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\l+" ".repeat(u.length));let r,o,a,i;for(;t;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(s=>(r=s.call({lexer:this},t,n))?(t=t.substring(r.raw.length),n.push(r),!0):!1))){if(r=this.tokenizer.space(t)){t=t.substring(r.raw.length),r.raw.length===1&&n.length>0?n[n.length-1].raw+=` +`:n.push(r);continue}if(r=this.tokenizer.code(t)){t=t.substring(r.raw.length),o=n[n.length-1],o&&(o.type==="paragraph"||o.type==="text")?(o.raw+=` +`+r.raw,o.text+=` +`+r.text,this.inlineQueue[this.inlineQueue.length-1].src=o.text):n.push(r);continue}if(r=this.tokenizer.fences(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.heading(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.hr(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.blockquote(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.list(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.html(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.def(t)){t=t.substring(r.raw.length),o=n[n.length-1],o&&(o.type==="paragraph"||o.type==="text")?(o.raw+=` +`+r.raw,o.text+=` +`+r.raw,this.inlineQueue[this.inlineQueue.length-1].src=o.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if(r=this.tokenizer.table(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.lheading(t)){t=t.substring(r.raw.length),n.push(r);continue}if(a=t,this.options.extensions&&this.options.extensions.startBlock){let s=1/0;const l=t.slice(1);let u;this.options.extensions.startBlock.forEach(c=>{u=c.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=t.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(a))){o=n[n.length-1],i&&o.type==="paragraph"?(o.raw+=` +`+r.raw,o.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=o.text):n.push(r),i=a.length!==t.length,t=t.substring(r.raw.length);continue}if(r=this.tokenizer.text(t)){t=t.substring(r.raw.length),o=n[n.length-1],o&&o.type==="text"?(o.raw+=` +`+r.raw,o.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=o.text):n.push(r);continue}if(t){const s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){let r,o,a,i=t,s,l,u;if(this.tokens.links){const c=Object.keys(this.tokens.links);if(c.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(i))!=null;)c.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.blockSkip.exec(i))!=null;)i=i.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(i))!=null;)i=i.slice(0,s.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;t;)if(l||(u=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(c=>(r=c.call({lexer:this},t,n))?(t=t.substring(r.raw.length),n.push(r),!0):!1))){if(r=this.tokenizer.escape(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.tag(t)){t=t.substring(r.raw.length),o=n[n.length-1],o&&r.type==="text"&&o.type==="text"?(o.raw+=r.raw,o.text+=r.text):n.push(r);continue}if(r=this.tokenizer.link(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(r.raw.length),o=n[n.length-1],o&&r.type==="text"&&o.type==="text"?(o.raw+=r.raw,o.text+=r.text):n.push(r);continue}if(r=this.tokenizer.emStrong(t,i,u)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.codespan(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.br(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.del(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.autolink(t)){t=t.substring(r.raw.length),n.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(t))){t=t.substring(r.raw.length),n.push(r);continue}if(a=t,this.options.extensions&&this.options.extensions.startInline){let c=1/0;const d=t.slice(1);let f;this.options.extensions.startInline.forEach(h=>{f=h.call({lexer:this},d),typeof f=="number"&&f>=0&&(c=Math.min(c,f))}),c<1/0&&c>=0&&(a=t.substring(0,c+1))}if(r=this.tokenizer.inlineText(a)){t=t.substring(r.raw.length),r.raw.slice(-1)!=="_"&&(u=r.raw.slice(-1)),l=!0,o=n[n.length-1],o&&o.type==="text"?(o.raw+=r.raw,o.text+=r.text):n.push(r);continue}if(t){const c="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return n}}class fP{constructor(t){lt(this,"options");this.options=t||S_}code(t,n,r){var a;const o=(a=(n||"").match(/^\S*/))==null?void 0:a[0];return t=t.replace(/\n$/,"")+` +`,o?'
'+(r?t:Ru(t,!0))+`
+`:"
"+(r?t:Ru(t,!0))+`
+`}blockquote(t){return`
+${t}
+`}html(t,n){return t}heading(t,n,r){return`${t} +`}hr(){return`
+`}list(t,n,r){const o=n?"ol":"ul",a=n&&r!==1?' start="'+r+'"':"";return"<"+o+a+`> +`+t+" +`}listitem(t,n,r){return`
  • ${t}
  • +`}checkbox(t){return"'}paragraph(t){return`

    ${t}

    +`}table(t,n){return n&&(n=`${n}`),` + +`+t+` +`+n+`
    +`}tablerow(t){return` +${t} +`}tablecell(t,n){const r=n.header?"th":"td";return(n.align?`<${r} align="${n.align}">`:`<${r}>`)+t+` +`}strong(t){return`${t}`}em(t){return`${t}`}codespan(t){return`${t}`}br(){return"
    "}del(t){return`${t}`}link(t,n,r){const o=Rpe(t);if(o===null)return r;t=o;let a='",a}image(t,n,r){const o=Rpe(t);if(o===null)return r;t=o;let a=`${r}0&&f.tokens[0].type==="paragraph"?(f.tokens[0].text=m+" "+f.tokens[0].text,f.tokens[0].tokens&&f.tokens[0].tokens.length>0&&f.tokens[0].tokens[0].type==="text"&&(f.tokens[0].tokens[0].text=m+" "+f.tokens[0].tokens[0].text)):f.tokens.unshift({type:"text",text:m+" "}):p+=m+" "}p+=this.parse(f.tokens,u),c+=this.renderer.listitem(p,g,!!h)}r+=this.renderer.list(c,s,l);continue}case"html":{const i=a;r+=this.renderer.html(i.text,i.block);continue}case"paragraph":{const i=a;r+=this.renderer.paragraph(this.parseInline(i.tokens));continue}case"text":{let i=a,s=i.tokens?this.parseInline(i.tokens):i.text;for(;o+1{r=r.concat(this.walkTokens(s[l],n))}):s.tokens&&(r=r.concat(this.walkTokens(s.tokens,n)))}}return r}use(...t){const n=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(r=>{const o={...r};if(o.async=this.defaults.async||o.async||!1,r.extensions&&(r.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){const i=n.renderers[a.name];i?n.renderers[a.name]=function(...s){let l=a.renderer.apply(this,s);return l===!1&&(l=i.apply(this,s)),l}:n.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");const i=n[a.level];i?i.unshift(a.tokenizer):n[a.level]=[a.tokenizer],a.start&&(a.level==="block"?n.startBlock?n.startBlock.push(a.start):n.startBlock=[a.start]:a.level==="inline"&&(n.startInline?n.startInline.push(a.start):n.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(n.childTokens[a.name]=a.childTokens)}),o.extensions=n),r.renderer){const a=this.defaults.renderer||new fP(this.defaults);for(const i in r.renderer){const s=r.renderer[i],l=i,u=a[l];a[l]=(...c)=>{let d=s.apply(a,c);return d===!1&&(d=u.apply(a,c)),d||""}}o.renderer=a}if(r.tokenizer){const a=this.defaults.tokenizer||new dP(this.defaults);for(const i in r.tokenizer){const s=r.tokenizer[i],l=i,u=a[l];a[l]=(...c)=>{let d=s.apply(a,c);return d===!1&&(d=u.apply(a,c)),d}}o.tokenizer=a}if(r.hooks){const a=this.defaults.hooks||new zS;for(const i in r.hooks){const s=r.hooks[i],l=i,u=a[l];zS.passThroughHooks.has(i)?a[l]=c=>{if(this.defaults.async)return Promise.resolve(s.call(a,c)).then(f=>u.call(a,f));const d=s.call(a,c);return u.call(a,d)}:a[l]=(...c)=>{let d=s.apply(a,c);return d===!1&&(d=u.apply(a,c)),d}}o.hooks=a}if(r.walkTokens){const a=this.defaults.walkTokens,i=r.walkTokens;o.walkTokens=function(s){let l=[];return l.push(i.call(this,s)),a&&(l=l.concat(a.call(this,s))),l}}this.defaults={...this.defaults,...o}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,n){return bh.lex(t,n??this.defaults)}parser(t,n){return _h.parse(t,n??this.defaults)}}gk=new WeakSet,FX=function(t,n){return(r,o)=>{const a={...o},i={...this.defaults,...a};this.defaults.async===!0&&a.async===!1&&(i.silent||console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."),i.async=!0);const s=ge(this,YB,Ake).call(this,!!i.silent,!!i.async);if(typeof r>"u"||r===null)return s(new Error("marked(): input parameter is undefined or null"));if(typeof r!="string")return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(r)+", string expected"));if(i.hooks&&(i.hooks.options=i),i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(r):r).then(l=>t(l,i)).then(l=>i.walkTokens?Promise.all(this.walkTokens(l,i.walkTokens)).then(()=>l):l).then(l=>n(l,i)).then(l=>i.hooks?i.hooks.postprocess(l):l).catch(s);try{i.hooks&&(r=i.hooks.preprocess(r));const l=t(r,i);i.walkTokens&&this.walkTokens(l,i.walkTokens);let u=n(l,i);return i.hooks&&(u=i.hooks.postprocess(u)),u}catch(l){return s(l)}}},YB=new WeakSet,Ake=function(t,n){return r=>{if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,t){const o="

    An error occurred:

    "+Ru(r.message+"",!0)+"
    ";return n?Promise.resolve(o):o}if(n)return Promise.reject(r);throw r}};const Gb=new Dxt;function eo(e,t){return Gb.parse(e,t)}eo.options=eo.setOptions=function(e){return Gb.setOptions(e),eo.defaults=Gb.defaults,Dke(eo.defaults),eo};eo.getDefaults=Eoe;eo.defaults=S_;eo.use=function(...e){return Gb.use(...e),eo.defaults=Gb.defaults,Dke(eo.defaults),eo};eo.walkTokens=function(e,t){return Gb.walkTokens(e,t)};eo.parseInline=Gb.parseInline;eo.Parser=_h;eo.parser=_h.parse;eo.Renderer=fP;eo.TextRenderer=koe;eo.Lexer=bh;eo.lexer=bh.lex;eo.Tokenizer=dP;eo.Hooks=zS;eo.parse=eo;eo.options;eo.setOptions;eo.use;eo.walkTokens;eo.parseInline;_h.parse;bh.lex;const Ext={class:"announcement-content"},kxt={class:"announcement-meta"},Axt=["innerHTML"],Txt={class:"announcement-footer"},Oxt={class:"footer-buttons"},Fxt={__name:"AnnouncementDialog",props:{visible:{type:Boolean,default:!1},announcement:{type:Object,default:()=>({version:"1.0.0",title:"系统公告",date:"2024-01-01",content:""})}},emits:["update:visible","close"],setup(e,{emit:t}){const n=e,r=t,o=K({get:()=>n.visible,set:s=>r("update:visible",s)}),a=K(()=>eo(n.announcement.content||"")),i=()=>{o.value=!1,r("close")};return Kt(()=>{eo.setOptions({breaks:!0,gfm:!0})}),(s,l)=>{const u=Si,c=Br,d=Js;return I(),Oe(d,{modelValue:o.value,"onUpdate:modelValue":l[0]||(l[0]=f=>o.value=f),title:e.announcement.title,width:"800px","close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":!1,top:"5vh",class:"announcement-dialog"},{default:A(()=>[w("div",Ext,[w("div",kxt,[D(u,{type:"info",size:"small"},{default:A(()=>[ce(se(e.announcement.date),1)]),_:1}),D(u,{type:"success",size:"small"},{default:A(()=>[ce("v"+se(e.announcement.version),1)]),_:1})]),w("div",{class:"announcement-body",innerHTML:a.value},null,8,Axt),w("div",Txt,[w("div",Oxt,[D(c,{type:"primary",onClick:i},{default:A(()=>l[1]||(l[1]=[ce(" 我知道了 ")])),_:1,__:[1]})])])])]),_:1},8,["modelValue","title"])}}},Tke=Cs(Fxt,[["__scopeId","data-v-0c8048bb"]]),Upe=[{id:"v0.7.0",version:"0.7.0",title:"🎉 AI小说生成v0.7.0 重大更新",date:"2025-01-20",priority:1,content:` +# 🎉 欢迎使用AI小说生成工具 v0.7.0 + +## 📚 使用教程 + +### 🎬 视频教程 +- [API配置教程](https://www.bilibili.com/video/BV1keKgzaER2) +- [本地部署教程](https://www.bilibili.com/video/BV1AYKgzAEne) + +### 💡 快速开始 +1. 选择 **91写作官方API** (推荐新手) +2. 购买API密钥并输入 +3. 选择合适的AI模型 + +## 🛒 获取API密钥 + +点击配置页面的**前往购买**按钮,或访问: +[淘宝购买链接](https://item.taobao.com/item.htm?ft=t&id=938261705242) + +## 💬 技术支持 + +遇到问题?加入我们的交流群:**QQ群:468734087** +QQ群 + +**微信公众号:** +微信公众号 + + + + +## ✨ v0.7.0 更新内容 + +### 🔧 API配置优化 +- **优化API配置新增官方默认API**: 新增91写作官方API服务,按次计费,价格透明 +- **自定义API配置**: 支持所有OpenAI格式的API接口 +- **智能配置向导**: 分为新手和高级用户模式,操作更简单 + +### 📢 系统功能增强 +- **增加公告弹窗和教程说明**: 新用户引导更完善,使用更简单 +- **新增切换模型参数下拉框**: 支持随时切换模型,使用更灵活 + +### ✍️ 短文创作全新升级 +- **短篇小说改为短文创作**: 功能更全面,支持多种短文类型 +- **新增短文写作及配置**: 提供更多创作选项和个性化设置 +- **优化短篇小说ui和逻辑**: 界面更美观,操作更流畅 + +### 🛠️ 系统优化 +- **修复若干bug问题**: 提升系统稳定性和用户体验 + +### 🤖 支持的AI模型 +- **Claude-4 Sonnet**: ¥0.1/次 - 默认推荐,性能出色 +- **Claude Opus 4**: ¥0.5/次 - 顶级性能,创作能力超强 +- **Claude-3.7 Sonnet Thinking**: ¥0.2/次 - 具备思维链推理 +- **Claude-3.7 Sonnet**: ¥0.1/次 - 经济实用选择 + +## 🚀 更多功能 + +- **智能章节生成**: AI帮您构思和生成章节内容 +- **角色设定助手**: 快速创建丰富的角色设定 +- **世界观构建**: 构建完整的小说世界观 +- **语料库管理**: 个性化训练素材 +- **写作目标跟踪**: 掌控您的创作进度 + +--- + +**感谢您使用AI小说生成工具!祝您创作愉快!** ✍️ + `},{id:"v0.6.0",version:"0.6.0",title:"🔧 系统优化更新",date:"2024-01-15",priority:0,content:` +# 📋 系统优化更新 v0.6.0 + +## 🛠️ 主要改进 + +### 性能优化 +- 提升AI生成速度 +- 优化界面响应速度 +- 减少内存占用 + +### 界面改进 +- 优化用户体验 +- 修复若干界面bug +- 增强移动端适配 + +### 功能增强 +- 改进文本编辑器 +- 增强导入导出功能 +- 优化备份管理 + +感谢您的使用和反馈! + `}];function Aoe(){return Upe.sort((e,t)=>t.priority-e.priority).find(e=>e.priority>0)||Upe[0]}function Ixt(){const e=localStorage.getItem("lastReadAnnouncementVersion"),t=Aoe();return e?e!==t.version:!0}function Mxt(e){localStorage.setItem("lastReadAnnouncementVersion",e),localStorage.setItem("lastReadAnnouncementDate",new Date().toISOString())}const Pxt={class:"dashboard-container"},$xt={class:"main-container"},Bxt={class:"header"},Rxt={class:"header-left"},Nxt={class:"page-title"},Lxt={class:"header-right"},Uxt={key:0,class:"model-selector"},Vxt={style:{float:"right",color:"#8492a6","font-size":"12px"}},zxt={key:0,style:{float:"right",color:"#8492a6","font-size":"12px"}},jxt={class:"content"},Hxt={__name:"Dashboard",setup(e){const t=cC(),n=WCe(),r=x_(),o=X(!1),a=X(!1),i=X(!1),s=X({}),l=X("/"),u=X(""),c=X("official"),d=X(0),f=K(()=>r.isApiConfigured),h=K(()=>r.getCurrentApiConfig()),g=K(()=>[{id:"claude-4-sonnet",name:"Claude-4 Sonnet",description:"最新一代Claude模型,擅长创意写作和长文本处理",price:"¥0.1/次"},{id:"claude-opus-4-20250514",name:"Claude Opus 4",description:"最强性能Claude模型,顶级创作能力",price:"¥0.5/次"},{id:"claude-3-7-sonnet-thinking",name:"Claude-3.7 Sonnet Thinking",description:"具备思维链的Claude模型,逻辑推理强",price:"¥0.2/次"},{id:"claude-3-7-sonnet-20250219",name:"Claude-3.7 Sonnet",description:"高性能版本,平衡性能与成本",price:"¥0.1/次"}]),p=K(()=>{d.value;const T=[];try{const P=localStorage.getItem("customModels");if(P){const H=JSON.parse(P);T.push(...H)}const F=[...[{id:"deepseek-reasoner",name:"deepseek-r1",description:"深度思考推理模型"},{id:"deepseek-chat",name:"deepseek-v3",description:"深度求索对话模型"},{id:"gpt-4o",name:"GPT-4o",description:"OpenAI最新多模态模型"},{id:"gpt-4o-mini",name:"GPT-4o mini",description:"GPT-4o轻量版本"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo",description:"OpenAI经典对话模型"}]];for(const H of T)F.find(R=>R.id===H.id)||F.push(H);return console.log("自定义模型列表:",F),F}catch(P){return console.error("读取自定义模型失败:",P),[]}}),m=K(()=>({"/":"首页","/novels":"小说列表","/prompts":"提示词库","/genres":"小说类型管理","/chapters":"章节管理","/goals":"写作目标","/billing":"Token计费","/tools":"工具库","/short-story":"短文写作","/book-analysis":"拆书工具","/settings":"系统设置"})[n.path]||"首页"),v=()=>{o.value=!o.value},y=T=>{t.push(T)},_=()=>{try{s.value=Aoe(),i.value=!0}catch(T){console.error("获取公告错误:",T)}},C=()=>{i.value=!1},S=T=>{try{console.log("切换模型:",T);const P=g.value.find(N=>N.id===T),U=p.value.find(N=>N.id===T);let F={},H="";if(P){console.log("选择了官方模型,切换到官方配置"),H="official";const N=localStorage.getItem("officialApiConfig");N?F=JSON.parse(N):F={baseURL:"https://ai.91hub.vip/v1",maxTokens:2e6,unlimitedTokens:!1,temperature:.7,apiKey:""},F.selectedModel=T,localStorage.setItem("apiConfigType","official"),localStorage.setItem("officialApiConfig",JSON.stringify(F))}else if(U){console.log("选择了自定义模型,切换到自定义配置"),H="custom";const N=localStorage.getItem("customApiConfig");N?F=JSON.parse(N):F={baseURL:"https://api.openai.com/v1",maxTokens:2e6,unlimitedTokens:!1,temperature:.7,apiKey:""},F.selectedModel=T,localStorage.setItem("apiConfigType","custom"),localStorage.setItem("customApiConfig",JSON.stringify(F))}else{console.error("未知的模型类型:",T),Ie.error("未知的模型类型");return}c.value=H,r.updateApiConfig(F,H),r.switchConfigType(H),d.value++;const R=E(T),z=H==="official"?"官方配置":"自定义配置",M=!F.apiKey||F.apiKey.trim()==="";M?(Ie.warning(`已切换到${z}: ${R},请先配置API密钥`),setTimeout(()=>{a.value=!0},1e3)):Ie.success(`已切换到${z}: ${R}`),console.log("配置切换完成:",{configType:H,config:F,needsApiKey:M})}catch(P){console.error("切换模型失败:",P),Ie.error("切换模型失败: "+P.message)}},E=T=>{let P=g.value.find(U=>U.id===T);return P||(P=p.value.find(U=>U.id===T),P)?P.name:T},k=()=>{try{const T=localStorage.getItem("apiConfigType")||"official";c.value=T,f.value&&h.value&&(u.value=h.value.selectedModel||""),d.value++,console.log("模型选择器初始化完成, 配置类型:",T,"当前模型:",u.value)}catch(T){console.error("初始化模型选择器失败:",T)}};Ze(()=>n.path,T=>{l.value=T},{immediate:!0}),Ze(()=>[f.value,h.value],()=>{k()},{immediate:!0});const O=T=>{(T.key==="apiConfigType"||T.key==="officialApiConfig"||T.key==="customApiConfig"||T.key==="customModels")&&(console.log("检测到localStorage配置变化:",T.key,T.newValue),setTimeout(()=>{k()},100))};return Kt(()=>{k(),window.addEventListener("storage",O);const P=setInterval(()=>{const U=localStorage.getItem("apiConfigType");U!==c.value&&(console.log("检测到配置类型变化:",c.value,"->",U),k())},1e3);window.modelSelectorInterval=P}),gd(()=>{window.removeEventListener("storage",O),window.modelSelectorInterval&&(clearInterval(window.modelSelectorInterval),delete window.modelSelectorInterval)}),(T,P)=>{const U=Tt,F=xDe,H=CDe,R=Br,z=bs,M=kDe,N=ii,L=yn("router-view"),V=Js;return I(),j("div",Pxt,[w("div",{class:ee(["sidebar",{collapsed:o.value}])},[P[16]||(P[16]=w("div",{class:"logo"},[w("h2",null,"📚 91写作")],-1)),D(H,{"default-active":l.value,class:"sidebar-menu",onSelect:y,collapse:o.value,"collapse-transition":!1},{default:A(()=>[D(F,{index:"/"},{title:A(()=>P[5]||(P[5]=[ce("首页")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(c5e))]),_:1})]),_:1}),D(F,{index:"/novels"},{title:A(()=>P[6]||(P[6]=[ce("小说列表")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(Yu))]),_:1})]),_:1}),D(F,{index:"/prompts"},{title:A(()=>P[7]||(P[7]=[ce("提示词库")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(FL))]),_:1})]),_:1}),D(F,{index:"/genres"},{title:A(()=>P[8]||(P[8]=[ce("小说类型管理")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(Kne))]),_:1})]),_:1}),D(F,{index:"/chapters"},{title:A(()=>P[9]||(P[9]=[ce("章节管理")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(zM))]),_:1})]),_:1}),D(F,{index:"/goals"},{title:A(()=>P[10]||(P[10]=[ce("写作目标")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(e5e))]),_:1})]),_:1}),D(F,{index:"/billing"},{title:A(()=>P[11]||(P[11]=[ce("Token计费")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(VM))]),_:1})]),_:1}),D(F,{index:"/tools"},{title:A(()=>P[12]||(P[12]=[ce("工具库")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(BS))]),_:1})]),_:1}),D(F,{index:"/short-story"},{title:A(()=>P[13]||(P[13]=[ce("短文写作")])),default:A(()=>[D(U,null,{default:A(()=>[D(b($h))]),_:1})]),_:1}),D(F,{index:"/book-analysis"},{title:A(()=>P[14]||(P[14]=[ce("拆书工具")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(ML))]),_:1})]),_:1}),D(F,{index:"/settings"},{title:A(()=>P[15]||(P[15]=[ce("系统设置")])),default:A(()=>[D(U,null,{default:A(()=>[D(b(im))]),_:1})]),_:1})]),_:1},8,["default-active","collapse"])],2),w("div",$xt,[w("div",Bxt,[w("div",Rxt,[D(R,{type:"text",onClick:v,class:"collapse-btn"},{default:A(()=>[D(U,null,{default:A(()=>[o.value?(I(),Oe(b(i5e),{key:0})):(I(),Oe(b(s5e),{key:1}))]),_:1})]),_:1}),w("span",Nxt,se(m.value),1)]),w("div",Lxt,[f.value?(I(),j("div",Uxt,[D(N,{modelValue:u.value,"onUpdate:modelValue":P[0]||(P[0]=Y=>u.value=Y),onChange:S,size:"small",style:{width:"220px"},placeholder:"选择模型"},{default:A(()=>[D(M,{label:"🏢 91写作官方模型"},{default:A(()=>[(I(!0),j(tt,null,wt(g.value,Y=>(I(),Oe(z,{key:Y.id,label:Y.name,value:Y.id},{default:A(()=>[w("span",null,se(Y.name),1),w("span",Vxt,se(Y.price),1)]),_:2},1032,["label","value"]))),128))]),_:1}),p.value.length>0?(I(),Oe(M,{key:0,label:"⚙️ 自定义模型"},{default:A(()=>[(I(!0),j(tt,null,wt(p.value,Y=>(I(),Oe(z,{key:Y.id,label:Y.name,value:Y.id},{default:A(()=>[w("span",null,se(Y.name),1),Y.description?(I(),j("span",zxt,se(Y.description),1)):be("",!0)]),_:2},1032,["label","value"]))),128))]),_:1})):be("",!0)]),_:1},8,["modelValue"])])):be("",!0),D(R,{onClick:_,type:"primary",size:"small"},{default:A(()=>[D(U,null,{default:A(()=>[D(b(n5e))]),_:1}),P[17]||(P[17]=ce(" 公告及教程 "))]),_:1,__:[17]}),D(R,{onClick:P[1]||(P[1]=Y=>a.value=!0),type:f.value?"success":"warning",size:"small"},{default:A(()=>[D(U,null,{default:A(()=>[D(b(d5e))]),_:1}),ce(" "+se(f.value?"API已配置":"API配置"),1)]),_:1},8,["type"])])]),w("div",jxt,[D(L)])]),D(V,{modelValue:a.value,"onUpdate:modelValue":P[3]||(P[3]=Y=>a.value=Y),title:"API配置",width:"1000px"},{default:A(()=>[D(Ske,{onClose:P[2]||(P[2]=Y=>a.value=!1)})]),_:1},8,["modelValue"]),D(Tke,{visible:i.value,"onUpdate:visible":P[4]||(P[4]=Y=>i.value=Y),announcement:s.value,onClose:C},null,8,["visible","announcement"])])}}},Wxt=Cs(Hxt,[["__scopeId","data-v-0bd020fe"]]);const qxt={class:"writing-goals"},Kxt={class:"goals-header"},Gxt={class:"goals-overview"},Yxt={class:"overview-card"},Xxt={class:"card-icon daily"},Jxt={class:"card-content"},Zxt={class:"card-value"},Qxt={class:"card-subtitle"},e5t={class:"overview-card"},t5t={class:"card-icon weekly"},n5t={class:"card-content"},r5t={class:"card-value"},o5t={class:"card-subtitle"},a5t={class:"overview-card"},i5t={class:"card-icon monthly"},s5t={class:"card-content"},l5t={class:"card-value"},u5t={class:"card-subtitle"},c5t={class:"overview-card"},d5t={class:"card-icon streak"},f5t={class:"card-content"},h5t={class:"card-value"},p5t={class:"active-goals"},g5t={class:"active-goals-header"},v5t={class:"goals-controls"},m5t={key:0,class:"empty-state"},y5t={key:1,class:"goals-list"},b5t={key:0,class:"sort-tip"},_5t=["draggable","onDragstart","onDrop"],w5t={class:"goal-header"},C5t={class:"goal-info"},x5t={class:"goal-title"},S5t={class:"goal-actions"},D5t={class:"goal-description"},E5t={class:"goal-progress"},k5t={class:"progress-info"},A5t={class:"progress-percentage"},T5t={class:"goal-meta"},O5t={class:"meta-item"},F5t={class:"meta-item"},I5t={class:"historical-goals"},M5t={key:0,class:"empty-state"},P5t={key:1,class:"goals-list"},$5t={class:"goal-header"},B5t={class:"goal-info"},R5t={class:"goal-title"},N5t={class:"completion-date"},L5t={class:"goal-description"},U5t={class:"goal-result"},V5t={class:"dialog-footer"},z5t={class:"ml-2"},j5t={class:"dialog-footer"},H5t={__name:"WritingGoals",setup(e){const t=X([]),n=X(!1),r=X(!1),o=X(null),a=X(null),i=X(),s=X(!1),l=X(null),u=X({title:"",type:"daily",description:"",targetValue:1e3,unit:"字",dateRange:null}),c=X({value:0,maxValue:0,unit:"",note:""}),d={title:[{required:!0,message:"请输入目标标题",trigger:"blur"}],type:[{required:!0,message:"请选择目标类型",trigger:"change"}],targetValue:[{required:!0,message:"请输入目标数值",trigger:"blur"}],unit:[{required:!0,message:"请选择计量单位",trigger:"change"}]},f=K(()=>t.value.filter($=>$.status==="active").sort(($,B)=>$.priority!==void 0&&B.priority!==void 0?$.priority-B.priority:$.priority!==void 0?-1:B.priority!==void 0?1:new Date($.createdAt||0)-new Date(B.createdAt||0))),h=K(()=>t.value.filter(Y=>Y.status==="completed")),g=K(()=>{const Y=f.value.filter(B=>B.type==="daily");if(Y.length===0)return{current:0,target:0,unit:"字"};const $=Y[0];return{current:$.currentValue,target:$.targetValue,unit:$.unit}}),p=K(()=>{const Y=f.value.filter(B=>B.type==="weekly");if(Y.length===0)return{current:0,target:0,unit:"字"};const $=Y[0];return{current:$.currentValue,target:$.targetValue,unit:$.unit}}),m=K(()=>{const Y=f.value.filter(B=>B.type==="monthly");if(Y.length===0)return{current:0,target:0,unit:"字"};const $=Y[0];return{current:$.currentValue,target:$.targetValue,unit:$.unit}}),v=K(()=>7),y=Y=>{o.value=Y,u.value={title:Y.title,type:Y.type,description:Y.description,targetValue:Y.targetValue,unit:Y.unit,dateRange:Y.type==="custom"?[Y.startDate,Y.endDate]:null},n.value=!0},_=Y=>{a.value=Y,c.value={value:Y.currentValue,maxValue:Y.targetValue,unit:Y.unit,note:""},r.value=!0},C=async Y=>{try{await uo.confirm("确定要暂停这个目标吗?","确认暂停",{type:"warning"});const $=t.value.findIndex(B=>B.id===Y.id);$!==-1&&(t.value[$].status="paused",H(),Ie.success("目标已暂停"))}catch{}},S=async Y=>{try{await uo.confirm("确定要删除这个目标吗?","确认删除",{type:"warning"}),t.value=t.value.filter($=>$.id!==Y),H(),Ie.success("目标删除成功")}catch{}},E=async()=>{try{await i.value.validate();const Y={...u.value};if(Y.type==="daily")Y.startDate=new Date().toISOString().split("T")[0],Y.endDate=new Date().toISOString().split("T")[0];else if(Y.type==="weekly"){const $=new Date,B=new Date($.setDate($.getDate()-$.getDay())),W=new Date($.setDate($.getDate()-$.getDay()+6));Y.startDate=B.toISOString().split("T")[0],Y.endDate=W.toISOString().split("T")[0]}else if(Y.type==="monthly"){const $=new Date,B=new Date($.getFullYear(),$.getMonth(),1),W=new Date($.getFullYear(),$.getMonth()+1,0);Y.startDate=B.toISOString().split("T")[0],Y.endDate=W.toISOString().split("T")[0]}else Y.type==="custom"&&Y.dateRange&&(Y.startDate=Y.dateRange[0],Y.endDate=Y.dateRange[1]);if(delete Y.dateRange,o.value){const $=t.value.findIndex(B=>B.id===o.value.id);$!==-1&&(t.value[$]={...t.value[$],...Y,updatedAt:new Date})}else{const $={id:Date.now(),...Y,currentValue:0,status:"active",priority:t.value.filter(B=>B.status==="active").length,createdAt:new Date,updatedAt:new Date};t.value.push($)}H(),n.value=!1,o.value=null,O(),Ie.success(o.value?"目标更新成功":"目标创建成功")}catch(Y){console.error("保存目标失败:",Y)}},k=()=>{if(a.value){const Y=t.value.findIndex($=>$.id===a.value.id);Y!==-1&&(t.value[Y].currentValue=c.value.value,t.value[Y].updatedAt=new Date,c.value.value>=t.value[Y].targetValue?(t.value[Y].status="completed",t.value[Y].completedAt=new Date,Ie.success("🎉 恭喜!目标已完成!")):Ie.success("进度更新成功"),H())}r.value=!1,a.value=null},O=()=>{u.value={title:"",type:"daily",description:"",targetValue:1e3,unit:"字",dateRange:null}},T=()=>{s.value=!s.value,s.value||H()},P=(Y,$)=>{l.value=$,Y.dataTransfer.effectAllowed="move"},U=Y=>{Y.preventDefault(),Y.dataTransfer.dropEffect="move"},F=(Y,$)=>{if(Y.preventDefault(),l.value!==null&&l.value!==$){const B=f.value,W=B[l.value];B.splice(l.value,1),B.splice($,0,W),B.forEach((J,oe)=>{const ie=t.value.find(Z=>Z.id===J.id);ie&&(ie.priority=oe)}),Ie.success("排序已更新")}l.value=null},H=()=>{localStorage.setItem("writingGoals",JSON.stringify(t.value)),console.log("目标数据已保存:",t.value);const Y=new StorageEvent("storage",{key:"writingGoals",newValue:JSON.stringify(t.value),oldValue:null,storageArea:localStorage});window.dispatchEvent(Y),window.refreshHomeData&&window.refreshHomeData()},R=()=>{try{const Y=localStorage.getItem("writingGoals");if(Y){t.value=JSON.parse(Y);let $=!1;t.value.forEach((B,W)=>{B.priority===void 0&&(B.priority=W,$=!0)}),$&&H()}}catch(Y){console.error("加载目标失败:",Y)}},z=Y=>({daily:"每日",weekly:"每周",monthly:"每月",custom:"自定义"})[Y]||"未知",M=Y=>({daily:"primary",weekly:"success",monthly:"warning",custom:"info"})[Y]||"info",N=Y=>Y?new Date(Y).toLocaleDateString():"",L=(Y,$)=>!Y||!$?"":`${N(Y)} - ${N($)}`,V=Y=>{if(!Y)return 0;const W=new Date(Y)-new Date,J=Math.ceil(W/(1e3*60*60*24));return Math.max(0,J)};return Kt(()=>{R()}),(Y,$)=>{const B=Tt,W=Br,J=r1,oe=s1,ie=bf,Z=pT,de=Si,we=a1,Be=i1,ke=o1,ae=C_,le=HL,q=jL,pe=fo,he=_f,re=bs,ue=ii,_e=Kg,Pe=qL,Ae=Xh,Ee=Js;return I(),j("div",qxt,[w("div",Kxt,[$[14]||($[14]=w("h3",null,"🎯 写作目标",-1)),D(W,{type:"primary",size:"small",onClick:$[0]||($[0]=ye=>n.value=!0)},{default:A(()=>[D(B,null,{default:A(()=>[D(b(ea))]),_:1}),$[13]||($[13]=ce(" 新增目标 "))]),_:1,__:[13]})]),w("div",Gxt,[D(oe,{gutter:16},{default:A(()=>[D(J,{span:6},{default:A(()=>[w("div",Yxt,[w("div",Xxt,[D(B,null,{default:A(()=>[D(b(Bm))]),_:1})]),w("div",Jxt,[$[15]||($[15]=w("div",{class:"card-title"},"今日目标",-1)),w("div",Zxt,se(g.value.current)+"/"+se(g.value.target),1),w("div",Qxt,se(g.value.unit),1)])])]),_:1}),D(J,{span:6},{default:A(()=>[w("div",e5t,[w("div",t5t,[D(B,null,{default:A(()=>[D(b($D))]),_:1})]),w("div",n5t,[$[16]||($[16]=w("div",{class:"card-title"},"本周目标",-1)),w("div",r5t,se(p.value.current)+"/"+se(p.value.target),1),w("div",o5t,se(p.value.unit),1)])])]),_:1}),D(J,{span:6},{default:A(()=>[w("div",a5t,[w("div",i5t,[D(B,null,{default:A(()=>[D(b(Xne))]),_:1})]),w("div",s5t,[$[17]||($[17]=w("div",{class:"card-title"},"本月目标",-1)),w("div",l5t,se(m.value.current)+"/"+se(m.value.target),1),w("div",u5t,se(m.value.unit),1)])])]),_:1}),D(J,{span:6},{default:A(()=>[w("div",c5t,[w("div",d5t,[D(B,null,{default:A(()=>[D(b(PL))]),_:1})]),w("div",f5t,[$[18]||($[18]=w("div",{class:"card-title"},"连续天数",-1)),w("div",h5t,se(v.value),1),$[19]||($[19]=w("div",{class:"card-subtitle"},"天",-1))])])]),_:1})]),_:1})]),w("div",p5t,[w("div",g5t,[$[20]||($[20]=w("h4",null,"📋 活跃目标",-1)),w("div",v5t,[D(W,{type:"text",size:"small",onClick:T,class:ee({"sort-active":s.value})},{default:A(()=>[D(B,null,{default:A(()=>[D(b(m5e))]),_:1}),ce(" "+se(s.value?"完成排序":"调整排序"),1)]),_:1},8,["class"])])]),f.value.length===0?(I(),j("div",m5t,[D(ie,{description:"暂无活跃目标,创建一个开始吧!"})])):(I(),j("div",y5t,[s.value?(I(),j("div",b5t,[D(Z,{title:"拖拽目标卡片可以调整在首页的显示顺序",type:"info",closable:!1,"show-icon":""})])):be("",!0),D(Cne,{name:"list",tag:"div",class:"sortable-goals"},{default:A(()=>[(I(!0),j(tt,null,wt(f.value,(ye,ve)=>(I(),j("div",{key:ye.id,class:ee(["goal-item",{sortable:s.value}]),draggable:s.value,onDragstart:Ce=>P(Ce,ve),onDragover:U,onDrop:Ce=>F(Ce,ve)},[w("div",w5t,[w("div",C5t,[w("span",x5t,se(ye.title),1),D(de,{type:M(ye.type),size:"small"},{default:A(()=>[ce(se(z(ye.type)),1)]),_:2},1032,["type"])]),w("div",S5t,[D(W,{type:"text",size:"small",onClick:Ce=>_(ye)},{default:A(()=>[D(B,null,{default:A(()=>[D(b(Xu))]),_:1}),$[21]||($[21]=ce(" 更新进度 "))]),_:2,__:[21]},1032,["onClick"]),D(ke,{trigger:"click"},{dropdown:A(()=>[D(Be,null,{default:A(()=>[D(we,{onClick:Ce=>y(ye)},{default:A(()=>[D(B,null,{default:A(()=>[D(b(Xu))]),_:1}),$[22]||($[22]=ce(" 编辑目标 "))]),_:2,__:[22]},1032,["onClick"]),D(we,{onClick:Ce=>C(ye)},{default:A(()=>[D(B,null,{default:A(()=>[D(b(Zne))]),_:1}),$[23]||($[23]=ce(" 暂停目标 "))]),_:2,__:[23]},1032,["onClick"]),D(we,{divided:"",onClick:Ce=>S(ye.id)},{default:A(()=>[D(B,null,{default:A(()=>[D(b(Ws))]),_:1}),$[24]||($[24]=ce(" 删除目标 "))]),_:2,__:[24]},1032,["onClick"])]),_:2},1024)]),default:A(()=>[D(W,{type:"text",size:"small"},{default:A(()=>[D(B,null,{default:A(()=>[D(b(Ku))]),_:1})]),_:1})]),_:2},1024)])]),w("div",D5t,se(ye.description),1),w("div",E5t,[w("div",k5t,[w("span",null,se(ye.currentValue)+"/"+se(ye.targetValue)+" "+se(ye.unit),1),w("span",A5t,se(Math.round(ye.currentValue/ye.targetValue*100))+"%",1)]),D(ae,{percentage:Math.round(ye.currentValue/ye.targetValue*100),status:ye.currentValue>=ye.targetValue?"success":void 0},null,8,["percentage","status"])]),w("div",T5t,[w("div",O5t,[D(B,null,{default:A(()=>[D(b(Bm))]),_:1}),w("span",null,se(L(ye.startDate,ye.endDate)),1)]),w("div",F5t,[D(B,null,{default:A(()=>[D(b($D))]),_:1}),w("span",null,"剩余 "+se(V(ye.endDate))+" 天",1)])])],42,_5t))),128))]),_:1})]))]),w("div",I5t,[D(q,null,{default:A(()=>[D(le,{title:"📈 历史目标",name:"history"},{default:A(()=>[h.value.length===0?(I(),j("div",M5t,$[25]||($[25]=[w("p",null,"暂无已完成的目标",-1)]))):(I(),j("div",P5t,[(I(!0),j(tt,null,wt(h.value,ye=>(I(),j("div",{key:ye.id,class:"goal-item completed"},[w("div",$5t,[w("div",B5t,[w("span",R5t,se(ye.title),1),D(de,{type:"success",size:"small"},{default:A(()=>$[26]||($[26]=[ce("已完成")])),_:1,__:[26]})]),w("div",N5t," 完成于 "+se(N(ye.completedAt)),1)]),w("div",L5t,se(ye.description),1),w("div",U5t," 最终完成:"+se(ye.currentValue)+"/"+se(ye.targetValue)+" "+se(ye.unit)+" ("+se(Math.round(ye.currentValue/ye.targetValue*100))+"%) ",1)]))),128))]))]),_:1})]),_:1})]),D(Ee,{modelValue:n.value,"onUpdate:modelValue":$[8]||($[8]=ye=>n.value=ye),title:o.value?"编辑目标":"新增写作目标",width:"500px"},{footer:A(()=>[w("span",V5t,[D(W,{onClick:$[7]||($[7]=ye=>n.value=!1)},{default:A(()=>$[27]||($[27]=[ce("取消")])),_:1,__:[27]}),D(W,{type:"primary",onClick:E},{default:A(()=>$[28]||($[28]=[ce("保存")])),_:1,__:[28]})])]),default:A(()=>[D(Ae,{model:u.value,rules:d,ref_key:"goalFormRef",ref:i,"label-width":"80px"},{default:A(()=>[D(he,{label:"目标标题",prop:"title"},{default:A(()=>[D(pe,{modelValue:u.value.title,"onUpdate:modelValue":$[1]||($[1]=ye=>u.value.title=ye),placeholder:"例如:每日写作1000字"},null,8,["modelValue"])]),_:1}),D(he,{label:"目标类型",prop:"type"},{default:A(()=>[D(ue,{modelValue:u.value.type,"onUpdate:modelValue":$[2]||($[2]=ye=>u.value.type=ye),placeholder:"选择目标类型"},{default:A(()=>[D(re,{label:"每日目标",value:"daily"}),D(re,{label:"每周目标",value:"weekly"}),D(re,{label:"每月目标",value:"monthly"}),D(re,{label:"自定义期间",value:"custom"})]),_:1},8,["modelValue"])]),_:1}),D(he,{label:"目标描述"},{default:A(()=>[D(pe,{modelValue:u.value.description,"onUpdate:modelValue":$[3]||($[3]=ye=>u.value.description=ye),type:"textarea",rows:2,placeholder:"描述你的写作目标"},null,8,["modelValue"])]),_:1}),D(he,{label:"目标数值",prop:"targetValue"},{default:A(()=>[D(_e,{modelValue:u.value.targetValue,"onUpdate:modelValue":$[4]||($[4]=ye=>u.value.targetValue=ye),min:1,max:1e5,placeholder:"目标数值"},null,8,["modelValue"])]),_:1}),D(he,{label:"计量单位",prop:"unit"},{default:A(()=>[D(ue,{modelValue:u.value.unit,"onUpdate:modelValue":$[5]||($[5]=ye=>u.value.unit=ye),placeholder:"选择单位"},{default:A(()=>[D(re,{label:"字",value:"字"}),D(re,{label:"页",value:"页"}),D(re,{label:"章节",value:"章节"}),D(re,{label:"小时",value:"小时"})]),_:1},8,["modelValue"])]),_:1}),u.value.type==="custom"?(I(),Oe(he,{key:0,label:"时间范围",prop:"dateRange"},{default:A(()=>[D(Pe,{modelValue:u.value.dateRange,"onUpdate:modelValue":$[6]||($[6]=ye=>u.value.dateRange=ye),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",format:"YYYY-MM-DD","value-format":"YYYY-MM-DD"},null,8,["modelValue"])]),_:1})):be("",!0)]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),D(Ee,{modelValue:r.value,"onUpdate:modelValue":$[12]||($[12]=ye=>r.value=ye),title:"更新进度",width:"400px"},{footer:A(()=>[w("span",j5t,[D(W,{onClick:$[11]||($[11]=ye=>r.value=!1)},{default:A(()=>$[29]||($[29]=[ce("取消")])),_:1,__:[29]}),D(W,{type:"primary",onClick:k},{default:A(()=>$[30]||($[30]=[ce("保存")])),_:1,__:[30]})])]),default:A(()=>[D(Ae,{model:c.value,"label-width":"80px"},{default:A(()=>[D(he,{label:"当前进度"},{default:A(()=>[D(_e,{modelValue:c.value.value,"onUpdate:modelValue":$[9]||($[9]=ye=>c.value.value=ye),min:0,max:c.value.maxValue},null,8,["modelValue","max"]),w("span",z5t,se(c.value.unit),1)]),_:1}),D(he,{label:"进度说明"},{default:A(()=>[D(pe,{modelValue:c.value.note,"onUpdate:modelValue":$[10]||($[10]=ye=>c.value.note=ye),type:"textarea",rows:2,placeholder:"记录今天的写作情况"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}},W5t=Cs(H5t,[["__scopeId","data-v-04fd4519"]]);const q5t={class:"home-page"},K5t={class:"welcome-section"},G5t={class:"welcome-content"},Y5t={class:"welcome-actions"},X5t={class:"stats-section"},J5t={class:"stat-item"},Z5t={class:"stat-icon novels"},Q5t={class:"stat-content"},eSt={class:"stat-number"},tSt={class:"stat-item"},nSt={class:"stat-icon words"},rSt={class:"stat-content"},oSt={class:"stat-number"},aSt={class:"stat-item"},iSt={class:"stat-icon chapters"},sSt={class:"stat-content"},lSt={class:"stat-number"},uSt={class:"stat-item"},cSt={class:"stat-icon tokens"},dSt={class:"stat-content"},fSt={class:"stat-number"},hSt={class:"card-header"},pSt={class:"goals-content"},gSt={class:"goal-info"},vSt={class:"goal-label"},mSt={class:"goal-value"},ySt={class:"goal-progress"},bSt={class:"progress-text"},_St={key:0,class:"no-goals"},wSt={key:1,class:"view-all-goals"},CSt={key:2,class:"streak-info"},xSt={class:"quick-actions"},SSt={class:"action-grid"},DSt={class:"action-icon"},ESt={class:"action-icon"},kSt={class:"action-icon"},ASt={class:"recent-novels-section"},TSt={class:"card-header"},OSt={class:"novels-list"},FSt=["onClick"],ISt={class:"novel-cover"},MSt=["src","alt"],PSt={key:1,class:"default-cover"},$St={class:"novel-info"},BSt={class:"novel-title"},RSt={class:"novel-desc"},NSt={class:"novel-meta"},LSt={class:"word-count"},USt={class:"update-time"},VSt={class:"novel-actions"},zSt={key:0,class:"empty-novels"},jSt={__name:"HomePage",setup(e){const t=cC();x_();const n=X(!1),r=K(()=>{const k=JSON.parse(localStorage.getItem("novels")||"[]"),O=pl.getUsageStats(),T=k.length,P=k.reduce((H,R)=>H+(R.wordCount||0),0),U=k.reduce((H,R)=>H+(R.chapterList||[]).length,0),F=O.totalInputTokens+O.totalOutputTokens;return{totalNovels:T,totalWords:P,totalChapters:U,totalTokens:F}}),o=X(0),a=X(3),i=K(()=>(o.value,JSON.parse(localStorage.getItem("writingGoals")||"[]").filter(T=>T.status==="active").sort((T,P)=>T.priority!==void 0&&P.priority!==void 0?T.priority-P.priority:T.priority!==void 0?-1:P.priority!==void 0?1:new Date(T.createdAt||0)-new Date(P.createdAt||0)))),s=K(()=>i.value.slice(0,a.value)),l=K(()=>i.value.length),u=K(()=>{const k=i.value.find(T=>T.type==="daily"),O=i.value.find(T=>T.type==="weekly");return{dailyTarget:(k==null?void 0:k.targetValue)||2e3,dailyWritten:(k==null?void 0:k.currentValue)||0,weeklyTarget:(O==null?void 0:O.targetValue)||14e3,weeklyWritten:(O==null?void 0:O.currentValue)||0,streak:0}}),c=K(()=>JSON.parse(localStorage.getItem("novels")||"[]").sort((O,T)=>new Date(T.updatedAt||0)-new Date(O.updatedAt||0)).slice(0,3).map(O=>({id:O.id,title:O.title,description:O.description,wordCount:O.wordCount||0,updatedAt:new Date(O.updatedAt||Date.now()),cover:O.cover})));K(()=>Math.min(100,Math.round(u.value.dailyWritten/u.value.dailyTarget*100))),K(()=>Math.min(100,Math.round(u.value.weeklyWritten/u.value.weeklyTarget*100)));const d=k=>!k.targetValue||k.targetValue===0?0:Math.min(100,Math.round(k.currentValue/k.targetValue*100)),f=()=>0,h=k=>k>=1e4?(k/1e4).toFixed(1)+"万":k.toLocaleString(),g=k=>{const T=new Date-k,P=Math.floor(T/(1e3*60*60)),U=Math.floor(P/24);return U>0?`${U}天前`:P>0?`${P}小时前`:"刚刚"},p=k=>k>=100?"#67c23a":k>=80?"#e6a23c":k>=60?"#409eff":"#f56c6c",m=()=>{t.push("/novels")},v=k=>{t.push(`/writer?novelId=${k.id}`)},y=()=>{t.push("/novels")},_=()=>{t.push("/prompts")},C=()=>{t.push("/chapters")},S=()=>{t.push("/billing")},E=()=>{o.value++,console.log("首页刷新目标数据")};return window.refreshHomeData=E,Kt(()=>{window.addEventListener("storage",k=>{k.key==="writingGoals"&&E()}),document.addEventListener("visibilitychange",()=>{document.hidden||E()})}),(k,O)=>{const T=Tt,P=Br,U=uc,F=r1,H=s1,R=C_,z=bf,M=Js;return I(),j("div",q5t,[w("div",K5t,[D(U,{class:"welcome-card",shadow:"never"},{default:A(()=>[w("div",G5t,[O[6]||(O[6]=w("div",{class:"welcome-text"},[w("h1",null,"欢迎回来!"),w("p",null,"开始您的创作之旅,让AI助力您的小说创作")],-1)),w("div",Y5t,[D(P,{type:"primary",size:"large",onClick:m},{default:A(()=>[D(T,null,{default:A(()=>[D(b(ea))]),_:1}),O[5]||(O[5]=ce(" 创建新小说 "))]),_:1,__:[5]})])])]),_:1})]),w("div",X5t,[D(H,{gutter:20},{default:A(()=>[D(F,{span:6},{default:A(()=>[D(U,{class:"stat-card",shadow:"hover"},{default:A(()=>[w("div",J5t,[w("div",Z5t,[D(T,null,{default:A(()=>[D(b(Yu))]),_:1})]),w("div",Q5t,[w("div",eSt,se(r.value.totalNovels),1),O[7]||(O[7]=w("div",{class:"stat-label"},"总小说数",-1))])])]),_:1})]),_:1}),D(F,{span:6},{default:A(()=>[D(U,{class:"stat-card",shadow:"hover"},{default:A(()=>[w("div",tSt,[w("div",nSt,[D(T,null,{default:A(()=>[D(b($h))]),_:1})]),w("div",rSt,[w("div",oSt,se(h(r.value.totalWords)),1),O[8]||(O[8]=w("div",{class:"stat-label"},"总字数",-1))])])]),_:1})]),_:1}),D(F,{span:6},{default:A(()=>[D(U,{class:"stat-card",shadow:"hover"},{default:A(()=>[w("div",aSt,[w("div",iSt,[D(T,null,{default:A(()=>[D(b(zM))]),_:1})]),w("div",sSt,[w("div",lSt,se(r.value.totalChapters),1),O[9]||(O[9]=w("div",{class:"stat-label"},"总章节数",-1))])])]),_:1})]),_:1}),D(F,{span:6},{default:A(()=>[D(U,{class:"stat-card",shadow:"hover"},{default:A(()=>[w("div",uSt,[w("div",cSt,[D(T,null,{default:A(()=>[D(b(VM))]),_:1})]),w("div",dSt,[w("div",fSt,se(h(r.value.totalTokens)),1),O[10]||(O[10]=w("div",{class:"stat-label"},"已用Token",-1))])])]),_:1})]),_:1})]),_:1})]),D(H,{gutter:20,class:"main-content"},{default:A(()=>[D(F,{span:12},{default:A(()=>[D(U,{class:"goals-card",shadow:"hover"},{header:A(()=>[w("div",hSt,[O[12]||(O[12]=w("span",null,"📝 今日写作目标",-1)),D(P,{type:"text",onClick:O[0]||(O[0]=N=>n.value=!0)},{default:A(()=>O[11]||(O[11]=[ce(" 管理目标 ")])),_:1,__:[11]})])]),default:A(()=>[w("div",pSt,[(I(!0),j(tt,null,wt(s.value,N=>(I(),j("div",{key:N.id,class:"goal-item"},[w("div",gSt,[w("span",vSt,se(N.title),1),w("span",mSt,se(N.targetValue)+se(N.unit),1)]),w("div",ySt,[D(R,{percentage:d(N),color:p(d(N)),"stroke-width":8,"show-text":!1},null,8,["percentage","color"]),w("span",bSt,se(N.currentValue)+se(N.unit)+" / "+se(N.targetValue)+se(N.unit),1)])]))),128)),s.value.length===0?(I(),j("div",_St,[D(z,{description:"暂无活跃目标",size:"small"},{default:A(()=>[D(P,{type:"primary",size:"small",onClick:O[1]||(O[1]=N=>n.value=!0)},{default:A(()=>O[13]||(O[13]=[ce(" 创建目标 ")])),_:1,__:[13]})]),_:1})])):be("",!0),l.value>a.value?(I(),j("div",wSt,[D(P,{type:"text",size:"small",onClick:O[2]||(O[2]=N=>n.value=!0)},{default:A(()=>[ce(" 查看全部 "+se(l.value)+" 个目标 → ",1)]),_:1})])):be("",!0),s.value.length>0?(I(),j("div",CSt,[D(T,{class:"streak-icon"},{default:A(()=>[D(b(PL))]),_:1}),w("span",null,"连续写作 "+se(f())+" 天",1)])):be("",!0)])]),_:1})]),_:1}),D(F,{span:12},{default:A(()=>[D(U,{class:"quick-actions-card",shadow:"hover"},{header:A(()=>O[14]||(O[14]=[w("span",null,"🚀 快速操作",-1)])),default:A(()=>[w("div",xSt,[w("div",SSt,[w("div",{class:"action-item",onClick:_},[w("div",DSt,[D(T,null,{default:A(()=>[D(b(FL))]),_:1})]),O[15]||(O[15]=w("span",null,"提示词库",-1))]),w("div",{class:"action-item",onClick:C},[w("div",ESt,[D(T,null,{default:A(()=>[D(b(zM))]),_:1})]),O[16]||(O[16]=w("span",null,"章节管理",-1))]),w("div",{class:"action-item",onClick:S},[w("div",kSt,[D(T,null,{default:A(()=>[D(b(VM))]),_:1})]),O[17]||(O[17]=w("span",null,"Token计费",-1))])])])]),_:1})]),_:1})]),_:1}),w("div",ASt,[D(U,{class:"recent-novels-card",shadow:"hover"},{header:A(()=>[w("div",TSt,[O[19]||(O[19]=w("span",null,"📚 最近编辑的小说",-1)),D(P,{type:"text",onClick:y},{default:A(()=>O[18]||(O[18]=[ce(" 查看全部 ")])),_:1,__:[18]})])]),default:A(()=>[w("div",OSt,[(I(!0),j(tt,null,wt(c.value,N=>(I(),j("div",{key:N.id,class:"novel-item",onClick:L=>v(N)},[w("div",ISt,[N.cover?(I(),j("img",{key:0,src:N.cover,alt:N.title},null,8,MSt)):(I(),j("div",PSt,[D(T,null,{default:A(()=>[D(b(Yu))]),_:1})]))]),w("div",$St,[w("h4",BSt,se(N.title),1),w("p",RSt,se(N.description),1),w("div",NSt,[w("span",LSt,se(h(N.wordCount))+" 字",1),w("span",USt,se(g(N.updatedAt)),1)])]),w("div",VSt,[D(P,{type:"text",size:"small"},{default:A(()=>O[20]||(O[20]=[ce(" 继续写作 ")])),_:1,__:[20]})])],8,FSt))),128)),c.value.length===0?(I(),j("div",zSt,[D(z,{description:"暂无小说,开始创作您的第一部作品吧!"},{default:A(()=>[D(P,{type:"primary",onClick:m},{default:A(()=>O[21]||(O[21]=[ce("创建小说")])),_:1,__:[21]})]),_:1})])):be("",!0)])]),_:1})]),D(M,{modelValue:n.value,"onUpdate:modelValue":O[4]||(O[4]=N=>n.value=N),title:"写作目标管理",width:"800px"},{default:A(()=>[D(W5t,{onClose:O[3]||(O[3]=N=>n.value=!1)})]),_:1},8,["modelValue"])])}}},HSt=Cs(jSt,[["__scopeId","data-v-bcfccac0"]]);const WSt={class:"prompts-library"},qSt={class:"page-header"},KSt={class:"header-actions"},GSt={class:"filter-section"},YSt={class:"filter-content"},XSt={class:"category-tabs"},JSt={class:"search-box"},ZSt={class:"prompts-grid"},QSt={class:"prompt-header"},eDt={class:"prompt-title"},tDt={class:"category-icon"},nDt={class:"prompt-actions"},rDt={class:"prompt-description"},oDt={class:"prompt-content"},aDt={class:"content-preview"},iDt={class:"prompt-footer"},sDt={class:"prompt-tags"},lDt={key:0,class:"empty-state"},uDt={class:"content-input-area"},cDt={class:"content-toolbar"},dDt={key:0,class:"tags-display"},fDt={class:"import-content"},hDt={class:"file-import"},pDt={class:"text-import"},gDt={key:0,class:"preview-section"},vDt={class:"preview-list"},mDt={class:"preview-header"},yDt={class:"preview-title"},bDt={class:"preview-description"},_Dt={__name:"PromptsLibrary",setup(e){const t=X("all"),n=X(""),r=X(!1),o=X(!1),a=X(null),i=X(""),s=X(),l=X(),u=X("file"),c=X(""),d=X([]),f=X([{key:"all",name:"全部",icon:"📝"},{key:"outline",name:"大纲",icon:"📋"},{key:"content",name:"基础正文",icon:"📝"},{key:"content-dialogue",name:"对话生成",icon:"💬"},{key:"content-scene",name:"场景描写",icon:"🏞️"},{key:"content-action",name:"动作情节",icon:"⚡"},{key:"content-psychology",name:"心理描写",icon:"🧠"},{key:"continue",name:"智能续写",icon:"➡️"},{key:"polish",name:"润色优化",icon:"✨"},{key:"character",name:"人设生成",icon:"👤"},{key:"expand",name:"扩写",icon:"📈"},{key:"rewrite",name:"改写",icon:"🔄"},{key:"title",name:"标题",icon:"🏷️"},{key:"cheat",name:"金手指",icon:"🎯"},{key:"opening",name:"黄金开篇",icon:"🌟"},{key:"inspiration",name:"灵感激发",icon:"💡"},{key:"worldview",name:"世界观生成",icon:"🌍"},{key:"brainstorm",name:"脑洞生成",icon:"🧠"},{key:"short-story",name:"短篇小说",icon:"📖"},{key:"book-analysis",name:"拆书分析",icon:"📚"}]),h=X([]),g=X({title:"",category:"",description:"",content:"",tags:[]}),p={title:[{required:!0,message:"请输入标题",trigger:"blur"}],category:[{required:!0,message:"请选择分类",trigger:"change"}],description:[{required:!0,message:"请输入描述",trigger:"blur"}],content:[{required:!0,message:"请输入内容",trigger:"blur"}]},m=K(()=>{let $=h.value;if(t.value!=="all"&&($=$.filter(B=>B.category===t.value)),n.value){const B=n.value.toLowerCase();$=$.filter(W=>W.title.toLowerCase().includes(B)||W.description.toLowerCase().includes(B)||W.content.toLowerCase().includes(B)||W.tags.some(J=>J.toLowerCase().includes(B)))}return $}),v=$=>{const B=f.value.find(W=>W.key===$);return B?B.icon:"📝"},y=()=>{},_=$=>{a.value=$,g.value={...$},r.value=!0},C=async $=>{try{await navigator.clipboard.writeText($.content),Ie.success("提示词已复制到剪贴板")}catch{Ie.error("复制失败")}},S=async $=>{try{await uo.confirm("确定要删除这个提示词吗?","确认删除",{type:"warning"});const B=h.value.findIndex(W=>W.id===$.id);B>-1&&(h.value.splice(B,1),Y(),Ie.success("删除成功"))}catch{}},E=()=>{const $=`【世界观设定解析指南】 + +===== 核心设定 ===== +世界类型:{世界类型} +时间背景:{时间背景} +技术水平:{技术水平} +魔法/修真体系:{力量体系} + +===== 社会结构 ===== +政治制度:{政治制度} +经济模式:{经济模式} +阶级分层:{阶级分层} +文化特色:{文化特色} + +===== 特殊机制 ===== +独特法则:{独特法则} +限制条件:{限制条件} +冲突矛盾:{冲突矛盾} + +===== 关键元素 ===== +重要设施:{重要设施} +特殊物品:{特殊物品} +势力组织:{势力组织} + +===== 故事背景 ===== +主要冲突:{主要冲突} +时代特征:{时代特征} + +请基于以上世界观设定,创作一个{故事类型}故事,主角是{主角设定},情节围绕{核心情节}展开。 + +注意保持世界观的一致性和逻辑性,所有描写都要符合已设定的规则体系。`;g.value.content=$},k=()=>{const $=`【固定输出格式】 + +请严格按照以下格式输出: + +## 标题 +{生成的内容标题} + +## 内容 +{主要内容,确保逻辑清晰} + +## 关键要素 +- 人物:{人物介绍} +- 设定:{世界观要素} +- 冲突:{主要矛盾} + +## 续写提示 +{为后续情节发展提供的建议} + +--- +请确保输出严格遵循上述格式,不要遗漏任何部分。`;g.value.content?g.value.content+=` + +`+$:g.value.content=$},O=()=>{i.value.trim()&&!g.value.tags.includes(i.value.trim())&&(g.value.tags.push(i.value.trim()),i.value="")},T=$=>{g.value.tags.splice($,1)},P=async()=>{try{if(await s.value.validate(),a.value){const $=h.value.findIndex(B=>B.id===a.value.id);$>-1&&(h.value[$]={...g.value,id:a.value.id}),Ie.success("提示词更新成功")}else{const $={...g.value,id:Date.now()};h.value.push($),Ie.success("提示词添加成功")}r.value=!1,U(),Y()}catch{}},U=()=>{g.value={title:"",category:"",description:"",content:"",tags:[]},a.value=null,i.value=""},F=$=>{const B=f.value.find(W=>W.key===$);return B?B.name:"未知分类"},H=$=>{const B=new FileReader;B.onload=W=>{c.value=W.target.result,R()},B.readAsText($.raw)},R=()=>{if(d.value=[],!c.value.trim()){Ie.warning("请输入JSON内容或选择文件");return}try{const $=JSON.parse(c.value);let B=[];if($.prompts&&Array.isArray($.prompts))B=$.prompts;else if(Array.isArray($))B=$;else if($.title&&$.category)B=[$];else throw new Error("不支持的数据格式");const W=[],J=[];if(B.forEach((oe,ie)=>{const Z=z(oe,ie);Z.valid?W.push(Z.prompt):J.push(Z.error)}),J.length>0&&Ie.error(`发现 ${J.length} 个错误: +${J.join(` +`)}`),W.length>0)if(d.value=W,$.prompts&&$.exportTime&&$.type==="prompts"){const ie=new Date($.exportTime).toLocaleString();Ie.success(`成功解析系统导出文件(导出时间:${ie}),共 ${W.length} 个提示词`)}else Ie.success(`成功解析 ${W.length} 个提示词`);else Ie.error("没有找到有效的提示词数据")}catch($){Ie.error("JSON格式错误:"+$.message)}},z=($,B)=>{const J=["title","category","description","content"].filter(Z=>!$[Z]);if(J.length>0)return{valid:!1,error:`第${B+1}项缺少必需字段:${J.join(", ")}`};const oe=f.value.map(Z=>Z.key).filter(Z=>Z!=="all");return oe.includes($.category)?{valid:!0,prompt:{id:Date.now()+Math.random(),title:$.title.trim(),category:$.category,description:$.description.trim(),content:$.content.trim(),tags:Array.isArray($.tags)?$.tags:[],isDefault:!1}}:{valid:!1,error:`第${B+1}项分类"${$.category}"无效,请使用:${oe.join(", ")}`}},M=()=>{if(d.value.length===0){Ie.warning("没有可导入的提示词");return}const $=d.value.map(B=>({...B,id:Date.now()+Math.random()}));h.value.push(...$),Y(),Ie.success(`成功导入 ${$.length} 个提示词`),N()},N=()=>{o.value=!1,c.value="",d.value=[],u.value="file"};Kt(()=>{L()});const L=()=>{const $=localStorage.getItem("prompts");if($)try{const B=JSON.parse($);h.value=B}catch(B){console.error("加载提示词失败:",B),h.value=V(),Y()}else h.value=V(),Y()},V=()=>[{id:1,title:"小说大纲生成器",category:"outline",description:"根据关键词和类型生成详细的小说大纲",content:`请为我创作一个{类型}小说的大纲,主题是{主题},主角是{主角设定}。要求包含: +1. 故事背景设定 +2. 主要人物介绍 +3. 核心冲突 +4. 章节大纲(至少10章) +5. 结局走向`,tags:["大纲","结构","创作"],isDefault:!0},{id:2,title:"基础章节生成器",category:"content",description:"基于章节大纲生成详细的正文内容",content:`请为小说《{小说标题}》的章节《{章节标题}》写正文内容。 + +章节大纲:{章节大纲} + +要求: +1. 字数控制在{目标字数}字左右 +2. 采用{写作视角}视角 +3. 包含丰富的对话、描写和细节 +4. 保持情节连贯性 +5. 突出{重点内容}`,tags:["正文","章节","基础生成"],isDefault:!0},{id:6,title:"全素材章节生成器",category:"content",description:"结合人物、世界观、语料库等素材生成章节内容",content:`请为小说《{小说标题}》的章节《{章节标题}》写正文内容。 + +章节大纲:{章节大纲} + +{主要人物} + +{世界观设定} + +{参考语料} + +{前文概要} + +创作要求: +1. 字数控制在{目标字数}字左右 +2. 采用{写作视角}视角 +3. 突出重点:{重点内容} +4. 充分运用提供的人物设定和世界观背景 +5. 参考语料库的写作风格和表达方式 +6. 与前文保持连贯性和一致性 +7. 包含丰富的对话、心理活动、环境描写 +8. 情节发展要符合章节大纲要求`,tags:["全素材","章节","综合生成"],isDefault:!0},{id:7,title:"对话驱动生成器",category:"content-dialogue",description:"以对话为主导的章节内容生成",content:`请为小说《{小说标题}》的章节《{章节标题}》写正文内容,重点突出对话。 + +章节大纲:{章节大纲} +参与对话人物:{主要人物} + +创作要求: +1. 字数控制在{目标字数}字左右 +2. 对话占60%以上篇幅 +3. 通过对话推进情节发展 +4. 展现人物性格和关系 +5. 适当加入动作和心理描写 +6. 对话要符合人物身份和性格 +7. 重点内容:{重点内容}`,tags:["对话","人物","互动"],isDefault:!0},{id:8,title:"场景描写生成器",category:"content-scene",description:"以环境和场景描写为主的内容生成",content:`请为小说《{小说标题}》的章节《{章节标题}》写正文内容,重点突出场景描写。 + +章节大纲:{章节大纲} +场景设定:{世界观设定} + +创作要求: +1. 字数控制在{目标字数}字左右 +2. 详细描写环境氛围 +3. 通过场景烘托情节 +4. 调动读者五感体验 +5. 场景与情节相辅相成 +6. 体现世界观特色 +7. 重点内容:{重点内容}`,tags:["场景","环境","氛围"],isDefault:!0},{id:9,title:"动作剧情生成器",category:"content-action",description:"以动作和情节推进为主的内容生成",content:`请为小说《{小说标题}》的章节《{章节标题}》写正文内容,重点突出动作情节。 + +章节大纲:{章节大纲} +主要人物:{主要人物} + +创作要求: +1. 字数控制在{目标字数}字左右 +2. 节奏紧凑,情节推进迅速 +3. 动作描写清晰流畅 +4. 突出冲突和转折 +5. 保持紧张感和悬念 +6. 角色行动符合性格 +7. 重点内容:{重点内容}`,tags:["动作","情节","冲突"],isDefault:!0},{id:10,title:"心理描写生成器",category:"content-psychology",description:"以心理活动和内心独白为主的内容生成",content:`请为小说《{小说标题}》的章节《{章节标题}》写正文内容,重点突出心理描写。 + +章节大纲:{章节大纲} +主角心境:{重点内容} +人物背景:{主要人物} + +创作要求: +1. 字数控制在{目标字数}字左右 +2. 深入挖掘人物内心世界 +3. 心理活动要真实细腻 +4. 体现人物成长变化 +5. 内心冲突与外在情节呼应 +6. 适当运用意识流技巧 +7. 展现人物独特思维方式`,tags:["心理","内心","情感"],isDefault:!0},{id:4,title:"智能续写助手",category:"continue",description:"基于现有内容进行智能续写",content:`请为小说《{小说标题}》的章节《{章节标题}》续写内容。 + +当前已写内容: +{当前内容} + +续写要求: +1. 保持原有风格和语调 +2. 情节自然连贯 +3. 长度约{续写字数}字 +4. 推进剧情发展`,tags:["续写","连贯","发展"],isDefault:!0},{id:3,title:"文本润色优化",category:"polish",description:"优化文本的表达和文采,提升阅读体验",content:`请帮我润色以下文本,要求: +1. 保持原意不变 +2. 提升文采和表达力 +3. 优化句式结构 +4. 增强画面感 + +原文:{原文内容}`,tags:["润色","优化","文采"],isDefault:!0},{id:5,title:"人物设定生成器",category:"character",description:"生成详细的人物设定和背景故事",content:`请为小说《{小说标题}》创建一个{角色类型}角色,基本信息: +- 姓名:{姓名} +- 角色定位:{角色定位} +- 性别:{性别} +- 年龄:{年龄}岁 + +请详细设定: +1. 外貌特征 +2. 性格特点 +3. 背景故事 +4. 能力特长 +5. 人际关系 +6. 内心动机`,tags:["人设","角色","背景"],isDefault:!0},{id:11,title:"科幻修仙世界观生成器",category:"worldview",description:"专门用于科幻修仙类小说的世界观创作,融合现代科技与传统修真",content:`【科幻修仙世界观解析框架】 + +===== 核心设定 ===== +世界类型:科幻修仙融合世界 +时间背景:{时间背景}(如:2157年,修真复苏第200年) +技术水平:{科技水平}(如:纳米科技+量子计算+灵力工程) +修真体系:{修真体系}(如:数字化修真、脑机接口修仙、算法炼丹) + +===== 社会结构 ===== +政治制度:{政治制度}(如:修真公司联盟制、灵力民主制) +经济模式:{经济模式}(如:香火算力交易、因果数据经济) +阶级分层:{阶级分层}(如:码农修士、产品经理仙君、AI渡劫者) +文化特色:{文化特色}(如:赛博朋克修真文化、元宇宙仙侠) + +===== 特殊机制 ===== +独特法则:{独特法则} +- 机械佛莲因果服务器:直径十万公里,解析众生因果数据流 +- 人造流星雨元神回收:每百年佛莲绽放,喷射渡劫失败修士元神 +- 灵力带宽战争:传统灵脉vs脑机接口Wi-Fi灵力 +- 香火数据化:祈祷转化为区块链符咒 +- 天劫供电协议:雷劫导入城市电网换取免税 +- 赛博心魔广告:修行时弹出心魔广告窗口 +- 电子孟婆汤:选择性删除情劫记忆 + +限制条件:{限制条件} +冲突矛盾:{冲突矛盾}(如:传统修真门派vs科技修仙者) + +===== 关键元素 ===== +重要设施:{重要设施}(如:轮回科技公司、玄霄5G基站、赛博神龛) +特殊物品:{特殊物品}(如:业力API接口、九霄雷劫调度合同、因果重构器) +势力组织:{势力组织}(如:修真门派、科技公司、轮回集团) + +===== 故事背景 ===== +主要冲突:{主要冲突} +时代特征:{时代特征} + +【创作要求】 +请基于以上科幻修仙世界观设定,创作一个{故事类型}故事,主角是{主角设定},情节围绕{核心情节}展开。 + +【风格要求】 +1. 融合现代科技术语与传统修真概念 +2. 体现科技与修真的创新结合点 +3. 保持世界观的内在逻辑一致性 +4. 突出人物在新时代背景下的适应与冲突 +5. 展现传统文化在科技时代的传承与变革 + +【输出格式】 +## 世界观核心 +{总结世界观的核心特色} + +## 故事内容 +{主要情节内容,融入世界观元素} + +## 科技修真元素运用 +- 技术设定:{具体的科技修真设定} +- 冲突矛盾:{科技与传统的碰撞} +- 创新点:{独特的世界观创新} + +## 后续发展提示 +{为情节延续提供的世界观支撑} + +--- +请确保所有描写都严格遵循科幻修仙的世界观设定,体现传统修真与现代科技的深度融合。`,tags:["科幻修仙","世界观","融合设定","因果系统","机械佛莲"],isDefault:!0},{id:12,title:"世界观强制解析模板",category:"worldview",description:"通用的世界观强制解析格式,确保AI正确理解复杂设定",content:`【重要提醒:请严格按照以下世界观设定进行创作】 + +==================== +【世界观核心框架】 +==================== + +{在此处详细描述您的世界观设定} + +==================== +【强制遵循规则】 +==================== +1. 任何情节发展必须符合上述世界观的内在逻辑 +2. 所有角色行为需要考虑世界观背景的影响 +3. 技术、魔法、社会制度等设定不可随意修改 +4. 创作过程中如遇冲突,优先遵循世界观设定 +5. 保持设定的一致性和连贯性 + +==================== +【输出检查要求】 +==================== +在输出内容前,请自检: +□ 是否遵循了世界观的基本法则? +□ 角色行为是否符合世界背景? +□ 情节发展是否有违世界观逻辑? +□ 专有名词使用是否准确? + +==================== +【创作内容】 +==================== +基于以上世界观,请创作: + +标题:{标题} +类型:{内容类型} +要求:{具体要求} +字数:{目标字数} + +【固定输出格式】 +## 标题 +{生成标题} + +## 正文内容 +{严格按照世界观设定创作的内容} + +## 世界观符合性检查 +- 设定遵循度:{评估是否完全遵循世界观} +- 逻辑一致性:{检查内容逻辑是否与设定冲突} +- 专有概念使用:{确认专有名词和概念使用准确} + +## 后续发展建议 +{基于世界观为后续情节提供的发展方向} + +--- +【最终确认】 +请确保以上内容100%符合既定世界观,绝不偏离设定框架。`,tags:["世界观","强制解析","格式化","逻辑检查"],isDefault:!0},{id:18,title:"都市短篇小说生成器",category:"short-story",description:"专门用于创作都市背景的短篇小说,贴近现代生活",content:`请创作一篇都市背景的短篇小说。 + +【基础设定】 +- 小说标题:{小说标题} +- 主角姓名:{主角姓名}({主角性别},{主角年龄}岁) +- 故事地点:{故事地点} +- 字数要求:{字数要求} + +【题材风格】 +题材类型:{题材类型} +情节类型:{情节类型} +情绪氛围:{情绪氛围} +时间背景:{时间背景} + +【创作要求】 +{创作要求} + +【参考文本】 +{参考文本} + +【输出要求】 +1. 情节完整,有明确的开头、发展、高潮、结局 +2. 人物性格鲜明,符合都市背景设定 +3. 语言生动流畅,贴近现代生活 +4. 场景描写真实,体现都市特色 +5. 包含丰富的对话和细节描写 +6. 传达积极正面的价值观 + +请创作一篇完整的都市短篇小说。`,tags:["短篇小说","都市","现代生活","完整故事"],isDefault:!0},{id:19,title:"玄幻短篇小说生成器",category:"short-story",description:"创作充满想象力的玄幻类短篇小说",content:`请创作一篇玄幻背景的短篇小说。 + +【基础设定】 +- 小说标题:{小说标题} +- 主角姓名:{主角姓名}({主角性别},{主角年龄}岁) +- 故事地点:{故事地点} +- 字数要求:{字数要求} + +【玄幻元素】 +题材类型:{题材类型} +情节类型:{情节类型} +情绪氛围:{情绪氛围} +时间背景:{时间背景} + +【创作要求】 +{创作要求} + +【参考文本】 +{参考文本} + +【输出要求】 +1. 构建完整的玄幻世界观背景 +2. 设计独特的修炼体系或魔法系统 +3. 情节紧凑,悬念迭起 +4. 人物具有鲜明的玄幻特色 +5. 包含精彩的战斗或法术描写 +6. 语言富有古典韵味或奇幻色彩 +7. 传达成长、正义等正面主题 + +请创作一篇完整的玄幻短篇小说。`,tags:["短篇小说","玄幻","修炼","魔法","完整故事"],isDefault:!0},{id:20,title:"言情短篇小说生成器",category:"short-story",description:"创作温馨动人的言情类短篇小说",content:`请创作一篇言情背景的短篇小说。 + +【基础设定】 +- 小说标题:{小说标题} +- 主角姓名:{主角姓名}({主角性别},{主角年龄}岁) +- 故事地点:{故事地点} +- 字数要求:{字数要求} + +【言情元素】 +题材类型:{题材类型} +情节类型:{情节类型} +情绪氛围:{情绪氛围} +时间背景:{时间背景} + +【创作要求】 +{创作要求} + +【参考文本】 +{参考文本} + +【输出要求】 +1. 情感线索清晰,感情发展自然 +2. 男女主角性格互补,有化学反应 +3. 包含甜蜜互动和情感冲突 +4. 细节描写细腻,情感真挚动人 +5. 对话生动,体现人物性格 +6. 场景浪漫,氛围温馨 +7. 结局温暖,传递爱情的美好 + +请创作一篇完整的言情短篇小说。`,tags:["短篇小说","言情","爱情","甜蜜","完整故事"],isDefault:!0},{id:21,title:"悬疑短篇小说生成器",category:"short-story",description:"创作紧张刺激的悬疑推理类短篇小说",content:`请创作一篇悬疑推理背景的短篇小说。 + +【基础设定】 +- 小说标题:{小说标题} +- 主角姓名:{主角姓名}({主角性别},{主角年龄}岁) +- 故事地点:{故事地点} +- 字数要求:{字数要求} + +【悬疑元素】 +题材类型:{题材类型} +情节类型:{情节类型} +情绪氛围:{情绪氛围} +时间背景:{时间背景} + +【创作要求】 +{创作要求} + +【参考文本】 +{参考文本} + +【输出要求】 +1. 设置引人入胜的谜题或悬案 +2. 布局巧妙的线索和伏笔 +3. 制造紧张悬疑的氛围 +4. 推理过程逻辑严密 +5. 真相揭露令人意外yet合理 +6. 人物心理描写细腻 +7. 节奏紧凑,扣人心弦 + +请创作一篇完整的悬疑推理短篇小说。`,tags:["短篇小说","悬疑","推理","谜题","完整故事"],isDefault:!0},{id:22,title:"科幻短篇小说生成器",category:"short-story",description:"创作充满想象力的科幻类短篇小说",content:`请创作一篇科幻背景的短篇小说。 + +【基础设定】 +- 小说标题:{小说标题} +- 主角姓名:{主角姓名}({主角性别},{主角年龄}岁) +- 故事地点:{故事地点} +- 字数要求:{字数要求} + +【科幻元素】 +题材类型:{题材类型} +情节类型:{情节类型} +情绪氛围:{情绪氛围} +时间背景:{时间背景} + +【创作要求】 +{创作要求} + +【参考文本】 +{参考文本} + +【输出要求】 +1. 构建合理的未来科技设定 +2. 探讨科技与人性的关系 +3. 情节具有科幻特色和想象力 +4. 专业术语使用恰当 +5. 体现科学原理或哲学思考 +6. 人物面临科技时代的挑战 +7. 传达对未来的思考和启示 + +请创作一篇完整的科幻短篇小说。`,tags:["短篇小说","科幻","未来","科技","完整故事"],isDefault:!0},{id:23,title:"通用短篇小说模板",category:"short-story",description:"适用于各种题材的通用短篇小说创作模板",content:`请根据以下设定创作一篇短篇小说。 + +【基础信息】 +标题:{小说标题} +主角:{主角姓名}({主角性别},{主角年龄}岁) +地点:{故事地点} +字数:{字数要求} + +【风格设定】 +题材:{题材类型} +情节:{情节类型} +氛围:{情绪氛围} +背景:{时间背景} + +【特殊要求】 +{创作要求} + +【参考素材】 +{参考文本} + +【创作原则】 +1. 开头要抓人,快速进入故事情境 +2. 中间发展要有转折和冲突 +3. 结尾要有深度,给读者思考空间 +4. 人物性格要鲜明立体 +5. 对话要自然流畅 +6. 描写要生动有画面感 +7. 主题积极正面 + +【固定输出格式】 +## {标题} + +{正文内容 - 完整的短篇小说} + +--- +字数统计:约{实际字数}字 + +请严格按照上述要求创作一篇完整的短篇小说。`,tags:["短篇小说","通用模板","多题材","标准格式"],isDefault:!0},{id:13,title:"综合拆书分析",category:"book-analysis",description:"全方位分析小说的写作技法、结构特点和创作亮点",content:`请对以下小说文本进行深度拆书分析: + +【分析文本】 +{小说文本} + +【分析要求】 +请从以下维度进行详细分析: + +1. 基础信息统计 +2. 文体特征分析 +3. 结构技法解析 +4. 人物塑造手法 +5. 语言风格特色 +6. 情节推进技巧 +7. 可学习的写作亮点 +8. 具体创作建议 + +【输出格式】 +请以文本形式输出完整的分析报告,包含具体的技法解析和可借鉴的创作要点。`,tags:["拆书","综合分析","写作技法","创作指导"],isDefault:!0},{id:14,title:"结构分析专项",category:"book-analysis",description:"专注分析小说的章节结构、情节布局和叙事节奏",content:`请对以下小说文本进行结构专项分析: + +【分析文本】 +{小说文本} + +【分析重点】 +重点关注以下结构要素: + +1. 章节划分逻辑 +2. 情节发展节奏 +3. 冲突设置技巧 +4. 悬念布局方式 +5. 转折点设计 +6. 开头结尾呼应 +7. 线索铺设手法 + +【输出要求】 +以文本形式详细分析结构特点,提供具体的章节组织建议和情节推进技巧。`,tags:["拆书","结构分析","情节布局","叙事技巧"],isDefault:!0},{id:15,title:"人物塑造分析",category:"book-analysis",description:"深度分析小说中的人物设定、性格刻画和关系处理",content:`请对以下小说文本进行人物塑造专项分析: + +【分析文本】 +{小说文本} + +【分析维度】 +请重点分析: + +1. 主要人物特征 +2. 性格塑造手法 +3. 人物关系网络 +4. 角色成长弧线 +5. 对话个性化处理 +6. 心理描写技巧 +7. 人物功能定位 + +【输出格式】 +以文本形式提供详细的人物分析报告,包含具体的人物塑造技法和创作启发。`,tags:["拆书","人物分析","性格塑造","角色设计"],isDefault:!0},{id:16,title:"语言风格分析",category:"book-analysis",description:"分析小说的文字风格、修辞手法和语言特色",content:`请对以下小说文本进行语言风格专项分析: + +【分析文本】 +{小说文本} + +【分析角度】 +请从以下角度分析: + +1. 整体文风特征 +2. 句式结构特点 +3. 修辞手法运用 +4. 词汇选择倾向 +5. 语言节奏感 +6. 表达技巧亮点 +7. 文字画面感营造 + +【输出要求】 +以文本形式提供详细的语言分析,包含具体的写作技法解析和文风借鉴建议。`,tags:["拆书","语言分析","文风特色","修辞技巧"],isDefault:!0},{id:17,title:"情节技巧分析",category:"book-analysis",description:"专注分析情节推进、冲突设置和戏剧张力营造",content:`请对以下小说文本进行情节技巧专项分析: + +【分析文本】 +{小说文本} + +【分析重点】 +请重点关注: + +1. 情节推进方式 +2. 冲突层次设计 +3. 悬念制造技巧 +4. 戏剧张力营造 +5. 转折点处理 +6. 伏笔铺设手法 +7. 高潮段落设计 + +【输出格式】 +以文本形式详细分析情节技法,提供可学习的创作技巧和具体应用建议。`,tags:["拆书","情节分析","冲突设计","悬念技巧"],isDefault:!0}],Y=()=>{try{localStorage.setItem("prompts",JSON.stringify(h.value))}catch($){console.error("保存提示词失败:",$)}};return($,B)=>{const W=Tt,J=Br,oe=fo,ie=uc,Z=a1,de=i1,we=o1,Be=Si,ke=bf,ae=_f,le=bs,q=ii,pe=Xh,he=Js,re=pT,ue=AT,_e=u1,Pe=l1;return I(),j("div",WSt,[w("div",qSt,[B[16]||(B[16]=w("div",{class:"header-content"},[w("h1",null,"📝 提示词库"),w("p",null,"精选的AI写作提示词,助力您的创作")],-1)),w("div",KSt,[D(J,{type:"success",onClick:B[0]||(B[0]=Ae=>o.value=!0)},{default:A(()=>[D(W,null,{default:A(()=>[D(b(fT))]),_:1}),B[14]||(B[14]=ce(" 导入提示词 "))]),_:1,__:[14]}),D(J,{type:"primary",onClick:B[1]||(B[1]=Ae=>r.value=!0)},{default:A(()=>[D(W,null,{default:A(()=>[D(b(ea))]),_:1}),B[15]||(B[15]=ce(" 添加提示词 "))]),_:1,__:[15]})])]),w("div",GSt,[D(ie,{shadow:"never"},{default:A(()=>[w("div",YSt,[w("div",XSt,[(I(!0),j(tt,null,wt(f.value,Ae=>(I(),Oe(J,{key:Ae.key,type:t.value===Ae.key?"primary":"default",onClick:Ee=>t.value=Ae.key,class:"category-btn"},{default:A(()=>[ce(se(Ae.icon)+" "+se(Ae.name),1)]),_:2},1032,["type","onClick"]))),128))]),w("div",JSt,[D(oe,{modelValue:n.value,"onUpdate:modelValue":B[2]||(B[2]=Ae=>n.value=Ae),placeholder:"搜索提示词...",clearable:"",onInput:y},{prefix:A(()=>[D(W,null,{default:A(()=>[D(b(dT))]),_:1})]),_:1},8,["modelValue"])])])]),_:1})]),w("div",ZSt,[(I(!0),j(tt,null,wt(m.value,Ae=>(I(),j("div",{key:Ae.id,class:"prompt-card"},[D(ie,{shadow:"hover",class:"prompt-item"},{default:A(()=>[w("div",QSt,[w("div",eDt,[w("span",tDt,se(v(Ae.category)),1),w("h3",null,se(Ae.title),1)]),w("div",nDt,[D(we,{trigger:"click"},{dropdown:A(()=>[D(de,null,{default:A(()=>[D(Z,{onClick:Ee=>_(Ae)},{default:A(()=>[D(W,null,{default:A(()=>[D(b(Xu))]),_:1}),B[17]||(B[17]=ce(" 编辑 "))]),_:2,__:[17]},1032,["onClick"]),D(Z,{onClick:Ee=>C(Ae)},{default:A(()=>[D(W,null,{default:A(()=>[D(b(vg))]),_:1}),B[18]||(B[18]=ce(" 复制 "))]),_:2,__:[18]},1032,["onClick"]),D(Z,{divided:"",onClick:Ee=>S(Ae)},{default:A(()=>[D(W,null,{default:A(()=>[D(b(Ws))]),_:1}),B[19]||(B[19]=ce(" 删除 "))]),_:2,__:[19]},1032,["onClick"])]),_:2},1024)]),default:A(()=>[D(J,{type:"text",size:"small"},{default:A(()=>[D(W,null,{default:A(()=>[D(b(Ku))]),_:1})]),_:1})]),_:2},1024)])]),w("div",rDt,[w("p",null,se(Ae.description),1)]),w("div",oDt,[w("div",aDt,se(Ae.content.substring(0,150))+se(Ae.content.length>150?"...":""),1)]),w("div",iDt,[w("div",sDt,[(I(!0),j(tt,null,wt(Ae.tags,Ee=>(I(),Oe(Be,{key:Ee,size:"small",type:"info"},{default:A(()=>[ce(se(Ee),1)]),_:2},1024))),128))])])]),_:2},1024)]))),128))]),m.value.length===0?(I(),j("div",lDt,[D(ke,{description:"暂无匹配的提示词"},{default:A(()=>[D(J,{type:"primary",onClick:B[3]||(B[3]=Ae=>r.value=!0)},{default:A(()=>B[20]||(B[20]=[ce("添加提示词")])),_:1,__:[20]})]),_:1})])):be("",!0),D(he,{modelValue:r.value,"onUpdate:modelValue":B[10]||(B[10]=Ae=>r.value=Ae),title:a.value?"编辑提示词":"添加提示词",width:"800px",onClose:U},{footer:A(()=>[D(J,{onClick:B[9]||(B[9]=Ae=>r.value=!1)},{default:A(()=>B[24]||(B[24]=[ce("取消")])),_:1,__:[24]}),D(J,{type:"primary",onClick:P},{default:A(()=>B[25]||(B[25]=[ce("保存")])),_:1,__:[25]})]),default:A(()=>[D(pe,{ref_key:"formRef",ref:s,model:g.value,rules:p,"label-width":"100px"},{default:A(()=>[D(ae,{label:"标题",prop:"title"},{default:A(()=>[D(oe,{modelValue:g.value.title,"onUpdate:modelValue":B[4]||(B[4]=Ae=>g.value.title=Ae),placeholder:"请输入提示词标题"},null,8,["modelValue"])]),_:1}),D(ae,{label:"分类",prop:"category"},{default:A(()=>[D(q,{modelValue:g.value.category,"onUpdate:modelValue":B[5]||(B[5]=Ae=>g.value.category=Ae),placeholder:"请选择分类"},{default:A(()=>[(I(!0),j(tt,null,wt(f.value.filter(Ae=>Ae.key!=="all"),Ae=>(I(),Oe(le,{key:Ae.key,label:Ae.name,value:Ae.key},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),D(ae,{label:"描述",prop:"description"},{default:A(()=>[D(oe,{modelValue:g.value.description,"onUpdate:modelValue":B[6]||(B[6]=Ae=>g.value.description=Ae),type:"textarea",rows:2,placeholder:"请输入提示词描述"},null,8,["modelValue"])]),_:1}),D(ae,{label:"内容",prop:"content"},{default:A(()=>[w("div",uDt,[w("div",cDt,[g.value.category==="worldview"?(I(),Oe(J,{key:0,size:"small",onClick:E},{default:A(()=>B[21]||(B[21]=[ce(" 📖 插入世界观模板 ")])),_:1,__:[21]})):be("",!0),D(J,{size:"small",onClick:k},{default:A(()=>B[22]||(B[22]=[ce(" 🎯 插入格式模板 ")])),_:1,__:[22]})]),D(oe,{modelValue:g.value.content,"onUpdate:modelValue":B[7]||(B[7]=Ae=>g.value.content=Ae),type:"textarea",rows:12,placeholder:"请输入提示词内容,可以使用 {变量名} 作为占位符"},null,8,["modelValue"])])]),_:1}),D(ae,{label:"标签"},{default:A(()=>[D(oe,{modelValue:i.value,"onUpdate:modelValue":B[8]||(B[8]=Ae=>i.value=Ae),placeholder:"输入标签后按回车添加",onKeyup:qn(O,["enter"])},{append:A(()=>[D(J,{onClick:O},{default:A(()=>B[23]||(B[23]=[ce("添加")])),_:1,__:[23]})]),_:1},8,["modelValue"]),g.value.tags.length>0?(I(),j("div",dDt,[(I(!0),j(tt,null,wt(g.value.tags,(Ae,Ee)=>(I(),Oe(Be,{key:Ee,closable:"",onClose:ye=>T(Ee),style:{margin:"5px 5px 0 0"}},{default:A(()=>[ce(se(Ae),1)]),_:2},1032,["onClose"]))),128))])):be("",!0)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),D(he,{modelValue:o.value,"onUpdate:modelValue":B[13]||(B[13]=Ae=>o.value=Ae),title:"导入提示词",width:"600px"},{footer:A(()=>[D(J,{onClick:N},{default:A(()=>B[29]||(B[29]=[ce("取消")])),_:1,__:[29]}),D(J,{onClick:R},{default:A(()=>B[30]||(B[30]=[ce("解析数据")])),_:1,__:[30]}),D(J,{type:"primary",onClick:M,disabled:d.value.length===0},{default:A(()=>[ce(" 确认导入 ("+se(d.value.length)+"条) ",1)]),_:1},8,["disabled"])]),default:A(()=>[w("div",fDt,[D(re,{title:"导入说明",type:"info",closable:!1,style:{"margin-bottom":"20px"}},{default:A(()=>B[26]||(B[26]=[w("div",null,[w("p",null,"请选择JSON文件或直接粘贴JSON内容来导入提示词"),w("p",null,[w("strong",null,"支持的格式:")]),w("ul",null,[w("li",null,[ce("系统导出格式:"),w("code",null,'{"prompts": [...], "exportTime": "...", "type": "prompts"}')]),w("li",null,[ce("提示词数组:"),w("code",null,'[{"title": "标题1", ...}, {"title": "标题2", ...}]')]),w("li",null,[ce("单个提示词对象:"),w("code",null,'{"title": "标题", "category": "分类", ...}')])])],-1)])),_:1,__:[26]}),D(Pe,{modelValue:u.value,"onUpdate:modelValue":B[12]||(B[12]=Ae=>u.value=Ae),type:"border-card"},{default:A(()=>[D(_e,{label:"文件导入",name:"file"},{default:A(()=>[w("div",hDt,[D(ue,{ref_key:"uploadRef",ref:l,"auto-upload":!1,"show-file-list":!1,accept:".json","on-change":H,drag:""},{tip:A(()=>B[27]||(B[27]=[w("div",{class:"el-upload__tip"}," 只能上传JSON文件 ",-1)])),default:A(()=>[D(W,{class:"el-icon--upload"},{default:A(()=>[D(b(Jne))]),_:1}),B[28]||(B[28]=w("div",{class:"el-upload__text"},[ce(" 将JSON文件拖到此处,或"),w("em",null,"点击上传")],-1))]),_:1,__:[28]},512)])]),_:1}),D(_e,{label:"文本导入",name:"text"},{default:A(()=>[w("div",pDt,[D(oe,{modelValue:c.value,"onUpdate:modelValue":B[11]||(B[11]=Ae=>c.value=Ae),type:"textarea",rows:12,placeholder:"请粘贴JSON格式的提示词数据..."},null,8,["modelValue"])])]),_:1})]),_:1},8,["modelValue"]),d.value.length>0?(I(),j("div",gDt,[w("h4",null,"预览导入的提示词 ("+se(d.value.length)+"条)",1),w("div",vDt,[(I(!0),j(tt,null,wt(d.value,(Ae,Ee)=>(I(),j("div",{key:Ee,class:"preview-item"},[w("div",mDt,[w("span",yDt,se(Ae.title),1),D(Be,{size:"small"},{default:A(()=>[ce(se(F(Ae.category)),1)]),_:2},1024)]),w("div",bDt,se(Ae.description),1)]))),128))])])):be("",!0)])]),_:1},8,["modelValue"])])}}},wDt=Cs(_Dt,[["__scopeId","data-v-be8bc03c"]]);const CDt={class:"novel-management"},xDt={class:"page-header"},SDt={class:"header-actions"},DDt={class:"filter-section"},EDt={class:"filter-content"},kDt={class:"filter-left"},ADt={class:"filter-right"},TDt={class:"novels-grid"},ODt={class:"novel-cover"},FDt=["src","alt"],IDt={class:"novel-status"},MDt={class:"novel-info"},PDt={class:"novel-title"},$Dt={class:"novel-description"},BDt={class:"novel-meta"},RDt={class:"meta-item"},NDt={class:"meta-item"},LDt={class:"meta-item"},UDt={class:"novel-genre"},VDt={class:"novel-actions"},zDt={key:0,class:"empty-state"},jDt={style:{display:"flex","justify-content":"space-between","align-items":"center"}},HDt={key:0,style:{"margin-top":"8px","font-size":"12px",color:"#909399"}},WDt={class:"description-input-group"},qDt={key:0,class:"ai-generate-section"},KDt={class:"cover-upload-container"},GDt=["src"],YDt={key:1,class:"cover-uploader-placeholder"},XDt={key:0,class:"cover-actions"},JDt={key:0,class:"tags-display"},ZDt={key:0,class:"novel-details"},QDt={class:"details-header"},eEt={class:"details-cover"},tEt=["src","alt"],nEt={class:"details-info"},rEt={class:"details-description"},oEt={class:"details-meta"},aEt={class:"meta-row"},iEt={class:"meta-row"},sEt={class:"meta-row"},lEt={class:"meta-row"},uEt={class:"meta-row"},cEt={class:"meta-row"},dEt={class:"details-content"},fEt={class:"chapters-list"},hEt={class:"chapter-info"},pEt={class:"chapter-actions"},gEt={class:"writing-records"},vEt={class:"record-date"},mEt={class:"record-content"},yEt={class:"record-stats"},bEt={key:0,class:"record-note"},_Et={class:"novel-statistics"},wEt={class:"stats-grid"},CEt={class:"stat-item"},xEt={class:"stat-value"},SEt={class:"stat-item"},DEt={class:"stat-value"},EEt={class:"stat-item"},kEt={class:"stat-value"},AEt={class:"stat-item"},TEt={class:"stat-value"},OEt={style:{display:"flex","justify-content":"space-between","align-items":"center"}},FEt={key:0,style:{"margin-top":"8px","font-size":"12px",color:"#909399"}},IEt={class:"description-input-group"},MEt={key:0,class:"ai-generate-section"},PEt={class:"cover-upload-container"},$Et=["src"],BEt={key:1,class:"cover-uploader-placeholder"},REt={key:0,class:"cover-actions"},NEt={key:0,class:"tags-display"},LEt={__name:"NovelManagement",setup(e){const t=cC(),n=X("all"),r=X("all"),o=X("updated"),a=X(""),i=X(!1),s=X(!1),l=X(!1),u=X(null),c=X(null),d=X("chapters"),f=X(""),h=X(""),g=X(),p=X(),m=X(),v=X(!1),y=X(!1),_=X(!1),C=X([]),S=()=>{try{const He=localStorage.getItem("novels");if(He){const Fe=JSON.parse(He);C.value=Fe.map(Ue=>({...Ue,createdAt:new Date(Ue.createdAt),updatedAt:new Date(Ue.updatedAt),chapterList:(Ue.chapterList||[]).map(Se=>({...Se,createdAt:Se.createdAt?new Date(Se.createdAt):new Date,updatedAt:Se.updatedAt?new Date(Se.updatedAt):new Date})),writingRecords:(Ue.writingRecords||[]).map(Se=>({...Se,date:new Date(Se.date)}))}))}else C.value=[],E()}catch(He){console.error("加载小说数据失败:",He),C.value=[]}},E=()=>{try{localStorage.setItem("novels",JSON.stringify(C.value))}catch(He){console.error("保存小说数据失败:",He),Ie.error("保存数据失败")}},k=X({title:"",genre:"",description:"",cover:"",tags:[]}),O=X({title:"",genre:"",status:"",description:"",cover:"",tags:[]}),T=X({}),P={title:[{required:!0,message:"请输入小说标题",trigger:"blur"}],genre:[{required:!0,message:"请选择小说类型",trigger:"change"}],description:[{required:!0,message:"请输入小说简介",trigger:"blur"}]},U={title:[{required:!0,message:"请输入小说标题",trigger:"blur"}],genre:[{required:!0,message:"请选择小说类型",trigger:"change"}],status:[{required:!0,message:"请选择小说状态",trigger:"change"}],description:[{required:!0,message:"请输入小说简介",trigger:"blur"}]},F=K(()=>{let He=C.value;if(n.value!=="all"&&(He=He.filter(Fe=>Fe.status===n.value)),r.value!=="all"&&(He=He.filter(Fe=>Fe.genre===r.value)),a.value){const Fe=a.value.toLowerCase();He=He.filter(Ue=>Ue.title.toLowerCase().includes(Fe)||Ue.description.toLowerCase().includes(Fe))}return He.sort((Fe,Ue)=>{switch(o.value){case"updated":return new Date(Ue.updatedAt)-new Date(Fe.updatedAt);case"created":return new Date(Ue.createdAt)-new Date(Fe.createdAt);case"wordCount":return Ue.wordCount-Fe.wordCount;case"chapters":return Ue.chapters-Fe.chapters;default:return 0}}),He}),H=He=>({writing:"success",completed:"info",paused:"warning"})[He]||"info",R=He=>({writing:"创作中",completed:"已完成",paused:"已暂停"})[He]||"未知",z=He=>{var Fe;return((Fe=T.value[He])==null?void 0:Fe.name)||He||"未知"},M=()=>{try{const He=localStorage.getItem("novelGenres");if(He){const Fe=JSON.parse(He),Ue={};Fe.forEach(Se=>{Ue[Se.code]={name:Se.name,tags:Se.tags,prompt:Se.prompt}}),T.value=Ue}else N()}catch(He){console.error("加载类型数据失败:",He),N()}},N=()=>{const He={fantasy:{name:"玄幻",tags:["修仙","异世界","法宝","灵气","境界"],prompt:"创作一部玄幻小说,包含修仙体系、异世界冒险等元素,注重世界观构建和修炼体系描写。"},urban:{name:"都市",tags:["都市","现代","职场","生活"],prompt:"创作一部都市小说,以现代都市为背景,贴近现实生活,注重人物情感和社会现象描写。"},history:{name:"历史",tags:["历史","古代","朝廷","战争"],prompt:"创作一部历史小说,以真实历史为背景,注重历史考证和时代特色描写。"},scifi:{name:"科幻",tags:["科幻","未来","科技","太空"],prompt:"创作一部科幻小说,包含未来科技、太空探索等元素,注重科学性和想象力的平衡。"},wuxia:{name:"武侠",tags:["武侠","江湖","武功","侠义"],prompt:"创作一部武侠小说,以江湖为背景,注重武功描写和侠义精神体现。"},romance:{name:"言情",tags:["言情","爱情","情感","浪漫"],prompt:"创作一部言情小说,以爱情为主线,注重情感描写和人物关系发展。"}};T.value=He},L=He=>{try{const Fe=localStorage.getItem("novelGenres");if(Fe){const Ue=JSON.parse(Fe),Se=Ue.findIndex(We=>We.code===He);Se>-1&&(Ue[Se].usageCount=(Ue[Se].usageCount||0)+1,localStorage.setItem("novelGenres",JSON.stringify(Ue)),console.log(`类型 ${He} 使用计数更新为:`,Ue[Se].usageCount))}}catch(Fe){console.error("更新类型使用计数失败:",Fe)}},V=He=>He>=1e4?(He/1e4).toFixed(1)+"万":He.toLocaleString(),Y=He=>new Date(He).toLocaleDateString("zh-CN"),$=He=>{if(He.target.src.includes("default-cover.jpg")||He.target.getAttribute("data-error-handled")){if(He.target.style.display="none",!He.target.parentNode.querySelector(".image-placeholder")){const Ue=document.createElement("div");Ue.className="image-placeholder",Ue.innerHTML='暂无封面',He.target.parentNode.appendChild(Ue)}return}He.target.setAttribute("data-error-handled","true"),He.target.src="/default-cover.jpg"},B=He=>{He.target.removeAttribute("data-error-handled");const Fe=He.target.parentNode.querySelector(".image-placeholder");Fe&&Fe.remove()},W=He=>{t.push(`/writer?novelId=${He.id}`)},J=He=>{u.value=He,s.value=!0},oe=He=>{try{const Fe=Ot=>Ot?Ot.replace(//gi,` +`).replace(/<\/p>/gi,` + +`).replace(/<[^>]*>/g,"").replace(/ /g," ").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'").replace(/\n\s*\n\s*\n+/g,` + +`).trim():"";let Ue=`《${He.title}》 +`;Ue+=`${"=".repeat(50)} + +`,Ue+=`📚 小说信息 +`,Ue+=`标题:${He.title} +`,Ue+=`作者:${He.author||"未设置"} +`,Ue+=`类型:${z(He.genre)} +`,Ue+=`状态:${R(He.status)} +`,Ue+=`字数:${V(He.wordCount||0)}字 +`,Ue+=`章节:${He.chapters||0}章 +`,Ue+=`创建时间:${Y(He.createdAt)} +`,Ue+=`更新时间:${Y(He.updatedAt)} +`,He.tags&&He.tags.length>0&&(Ue+=`标签:${He.tags.join("、")} +`),He.description&&(Ue+=` +📖 简介 +`,Ue+=`${Fe(He.description)} +`),Ue+=` +${"=".repeat(50)} + +`,He.chapterList&&He.chapterList.length>0?(Ue+=`📝 章节内容 + +`,He.chapterList.forEach((Ot,Zt)=>{if(Ue+=`第${Zt+1}章 ${Ot.title} +`,Ue+=`${"-".repeat(30)} + +`,Ot.description&&(Ue+=`【章节简介】 +${Fe(Ot.description)} + +`),Ot.content){const Wt=Fe(Ot.content);Ue+=`${Wt} + +`}else Ue+=`(章节内容暂无) + +`;Ue+=`字数:${Ot.wordCount||0}字 +`,Ue+=`更新时间:${Y(Ot.updatedAt||Ot.createdAt)} + +`,Ue+=`${"=".repeat(50)} + +`})):(Ue+=`📝 章节内容 + +`,Ue+=`暂无章节内容 + +`),Ue+=`📊 创作统计 +`,Ue+=`总字数:${V(He.totalWords||He.wordCount||0)}字 +`,Ue+=`平均章节字数:${He.avgWordsPerChapter||0}字 +`,Ue+=`创作天数:${He.writingDays||0}天 +`,He.writingRecords&&He.writingRecords.length>0&&(Ue+=` +📝 创作记录 +`,He.writingRecords.forEach(Ot=>{Ue+=`${Y(Ot.date)}:写作${Ot.wordsWritten}字,用时${Ot.timeSpent}分钟 +`,Ot.note&&(Ue+=`备注:${Fe(Ot.note)} +`)})),Ue+=` + +导出时间:${new Date().toLocaleString()} +`,Ue+=`导出来源:AI小说生成器v0.5.0 +`;const Se=new Blob([Ue],{type:"text/plain;charset=utf-8"}),We=URL.createObjectURL(Se),Te=document.createElement("a");Te.href=We;const Ge=He.title.replace(/[<>:"/\\|?*]/g,"_");Te.download=`${Ge}_${new Date().toISOString().slice(0,10)}.txt`,document.body.appendChild(Te),Te.click(),document.body.removeChild(Te),URL.revokeObjectURL(We),Ie.success(`《${He.title}》导出成功!`)}catch(Fe){console.error("导出失败:",Fe),Ie.error("导出失败,请重试")}},ie=()=>{var He;try{if(F.value.length===0){Ie.warning("没有可导出的小说");return}const Fe=Wt=>Wt?Wt.replace(//gi,` +`).replace(/<\/p>/gi,` + +`).replace(/<[^>]*>/g,"").replace(/ /g," ").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'").replace(/\n\s*\n\s*\n+/g,` + +`).trim():"";let Ue=`📚 小说列表导出 +`;Ue+=`${"=".repeat(60)} + +`,Ue+=`导出时间:${new Date().toLocaleString()} +`,Ue+=`小说数量:${F.value.length}部 +`,Ue+=`导出来源:AI小说生成器v0.5.0 + +`,Ue+=`${"=".repeat(60)} + +`,F.value.forEach((Wt,dt)=>{Ue+=`【第${dt+1}部】《${Wt.title}》 +`,Ue+=`${"=".repeat(50)} + +`,Ue+=`📚 小说信息 +`,Ue+=`标题:${Wt.title} +`,Ue+=`作者:${Wt.author||"未设置"} +`,Ue+=`类型:${z(Wt.genre)} +`,Ue+=`状态:${R(Wt.status)} +`,Ue+=`字数:${V(Wt.wordCount||0)}字 +`,Ue+=`章节:${Wt.chapters||0}章 +`,Ue+=`创建时间:${Y(Wt.createdAt)} +`,Ue+=`更新时间:${Y(Wt.updatedAt)} +`,Wt.tags&&Wt.tags.length>0&&(Ue+=`标签:${Wt.tags.join("、")} +`),Wt.description&&(Ue+=` +📖 简介 +`,Ue+=`${Fe(Wt.description)} +`),Ue+=` +${"=".repeat(50)} + +`,Wt.chapterList&&Wt.chapterList.length>0?(Ue+=`📝 章节概要 +`,Wt.chapterList.forEach((Le,Mt)=>{Ue+=`第${Mt+1}章 ${Le.title}`,Le.wordCount&&(Ue+=` (${Le.wordCount}字)`),Ue+=` +`,Le.description&&(Ue+=` 简介:${Fe(Le.description)} +`)}),Ue+=` +`):(Ue+=`📝 章节概要 +`,Ue+=`暂无章节内容 + +`),Ue+=`📊 创作统计 +`,Ue+=`总字数:${V(Wt.totalWords||Wt.wordCount||0)}字 +`,Ue+=`平均章节字数:${Wt.avgWordsPerChapter||0}字 +`,Ue+=`创作天数:${Wt.writingDays||0}天 + +`,dt{const Fe={...He,id:Date.now(),title:He.title+" (副本)",createdAt:new Date,updatedAt:new Date};C.value.push(Fe),E(),Ie.success("小说复制成功")},de=async He=>{try{await uo.confirm(`确定要删除《${He.title}》吗?此操作不可恢复。`,"确认删除",{type:"warning"});const Fe=C.value.findIndex(Ue=>Ue.id===He.id);Fe>-1&&(C.value.splice(Fe,1),E(),Ie.success("删除成功"))}catch{}},we=()=>{f.value.trim()&&!k.value.tags.includes(f.value.trim())&&(k.value.tags.push(f.value.trim()),f.value="")},Be=He=>{k.value.tags.splice(He,1)},ke=X(),ae=()=>{var He;console.log("触发文件选择器"),(He=ke.value)==null||He.click()},le=He=>{const Fe=He.target.files[0];if(console.log("原生文件选择事件触发:",Fe),!Fe){console.log("没有选择文件");return}if(console.log("文件信息:",{name:Fe.name,type:Fe.type,size:Fe.size}),!Fe.type.startsWith("image/")){Ie.error("只能上传图片文件!"),console.log("文件类型验证失败:",Fe.type);return}if(Fe.size/1024/1024>2){Ie.error("图片大小不能超过 2MB!"),console.log("文件大小验证失败:",(Fe.size/1024/1024).toFixed(2)+"MB");return}console.log("开始读取文件为base64...");const Ue=new FileReader;Ue.onload=Se=>{console.log("FileReader读取成功"),k.value.cover=Se.target.result,Ie.success("封面上传成功!"),console.log("封面base64长度:",Se.target.result.length),console.log("封面已保存到createForm.cover"),He.target.value=""},Ue.onerror=Se=>{console.error("FileReader读取失败:",Se),Ie.error("封面读取失败,请重试")},Ue.readAsDataURL(Fe)},q=()=>{k.value.cover="",Ie.success("封面已移除")},pe=async()=>{var He;try{await g.value.validate();const Fe={...k.value,id:Date.now(),status:"writing",chapters:0,wordCount:0,totalWords:0,avgWordsPerChapter:0,writingDays:0,createdAt:new Date,updatedAt:new Date,chapterList:[],writingRecords:[],genrePrompt:((He=T[k.value.genre])==null?void 0:He.prompt)||"",characters:[],worldSettings:[],corpusData:[],events:[]};C.value.unshift(Fe),L(k.value.genre),E(),Ie.success("小说创建成功!即将跳转到编辑区..."),i.value=!1,re(),setTimeout(()=>{t.push(`/writer?novelId=${Fe.id}`)},1e3)}catch(Fe){console.error("创建小说失败:",Fe),Ie.error("创建小说失败")}},he=He=>{T.value[He]&&(k.value.tags=[...T.value[He].tags])},re=()=>{k.value={title:"",genre:"",description:"",cover:"",tags:[]},f.value=""},ue=He=>{c.value=He,O.value={title:He.title,genre:He.genre,status:He.status,description:He.description,cover:He.cover||"",tags:[...He.tags||[]]},l.value=!0},_e=()=>{var He;O.value={title:"",genre:"",status:"",description:"",cover:"",tags:[]},h.value="",c.value=null,(He=p.value)==null||He.clearValidate()},Pe=He=>{},Ae=()=>{const He=h.value.trim();He&&!O.value.tags.includes(He)&&(O.value.tags.push(He),h.value="")},Ee=He=>{O.value.tags.splice(He,1)},ye=()=>{var He;(He=m.value)==null||He.click()},ve=He=>{const Fe=He.target.files[0];if(!Fe)return;if(!Fe.type.startsWith("image/")){Ie.error("只能上传图片文件!");return}if(Fe.size/1024/1024>2){Ie.error("图片大小不能超过 2MB!");return}const Ue=new FileReader;Ue.onload=Se=>{O.value.cover=Se.target.result,Ie.success("封面上传成功")},Ue.onerror=()=>{Ie.error("文件读取失败")},Ue.readAsDataURL(Fe)},Ce=()=>{O.value.cover="",m.value&&(m.value.value="")},ze=async()=>{var He;if(!((He=O.value.title)!=null&&He.trim())){Ie.warning("请先填写小说标题");return}if(!O.value.genre){Ie.warning("请先选择小说类型");return}y.value=!0;try{const Fe=O.value.title.trim(),Ue=T.value[O.value.genre],Se=`请为小说《${Fe}》重新生成一段简介。 + +小说信息: +- 标题:${Fe} +- 类型:${Ue.name} +- 标签:${Ue.tags.join("、")} + +要求: +1. 简介长度控制在100-200字之间 +2. 突出${Ue.name}类型的特色 +3. 包含主角、背景设定、核心冲突等元素 +4. 语言要吸引人,能激发读者的阅读兴趣 +5. 风格要符合${Ue.name}小说的特点 + +请直接输出简介内容,不要包含其他解释文字:`,We=await Fr.generateTextStream(Se,{maxTokens:null,temperature:.8,type:"synopsis"},(Te,Ge)=>{console.log("编辑简介生成流式回调 - chunk:",Te,"fullContent长度:",Ge.length),O.value.description=Ge});if(We&&We.trim())Ie.success("AI简介生成成功!您可以根据需要进行修改");else throw new Error("AI返回的内容为空")}catch(Fe){console.error("AI生成简介失败:",Fe),Ie.error("AI生成失败,请手动修改简介")}finally{y.value=!1}},at=async()=>{try{await p.value.validate(),_.value=!0;const He=C.value.findIndex(Fe=>Fe.id===c.value.id);He>-1&&(C.value[He]={...C.value[He],title:O.value.title,genre:O.value.genre,status:O.value.status,description:O.value.description,cover:O.value.cover,tags:O.value.tags,updatedAt:new Date},c.value.genre!==O.value.genre&&L(O.value.genre),E(),Ie.success("小说信息更新成功"),l.value=!1,_e(),u.value&&u.value.id===c.value.id&&(u.value=C.value[He]))}catch(He){console.error("保存小说信息失败:",He)}finally{_.value=!1}},bt=He=>{Ie.info("跳转到章节编辑页面")},Ft=async()=>{var He;if(!((He=k.value.title)!=null&&He.trim())){Ie.warning("请先填写小说标题");return}if(!k.value.genre){Ie.warning("请先选择小说类型");return}v.value=!0;try{const Fe=k.value.title.trim(),Ue=T.value[k.value.genre],Se=`请为小说《${Fe}》生成一段简介。 + +小说信息: +- 标题:${Fe} +- 类型:${Ue.name} +- 标签:${Ue.tags.join("、")} + +要求: +1. 简介长度控制在100-200字之间 +2. 突出${Ue.name}类型的特色 +3. 包含主角、背景设定、核心冲突等元素 +4. 语言要吸引人,能激发读者的阅读兴趣 +5. 风格要符合${Ue.name}小说的特点 + +请直接输出简介内容,不要包含其他解释文字:`;console.log("开始AI生成简介,提示词:",Se);const We=await Fr.generateTextStream(Se,{maxTokens:null,temperature:.8,type:"synopsis"},(Te,Ge)=>{console.log("简介生成流式回调 - chunk:",Te,"fullContent长度:",Ge.length),k.value.description=Ge});if(We&&We.trim())Ie.success("AI简介生成成功!您可以根据需要进行修改");else throw new Error("AI返回的内容为空")}catch(Fe){console.error("AI生成简介失败:",Fe);let Ue="AI生成失败";Fe.message.includes("API请求失败")||Fe.message.includes("API Key")?Ue="AI服务暂时不可用":Fe.message.includes("网络")?Ue="网络连接失败":Ue="AI生成遇到问题",uo.confirm(`${Ue},是否使用本地智能模板生成简介?模板会根据您的标题和类型智能匹配。`,"生成选项",{confirmButtonText:"使用智能模板",cancelButtonText:"手动填写",type:"info"}).then(()=>{Dt()}).catch(()=>{Ie.info("您可以手动填写简介,或稍后重试AI生成")})}finally{v.value=!1}},Dt=()=>{const He=k.value.title.trim();T.value[k.value.genre];const Fe={fantasy:[`${He}讲述了一个关于修仙与成长的传奇故事。在这个充满灵气与法宝的异世界中,主角将经历重重考验,突破境界桎梏,最终踏上巅峰之路。书中包含丰富的修炼体系、激烈的战斗场面,以及深刻的人性探索。`,`这是一部以${He}为名的玄幻巨作。故事背景设定在一个神秘的异世界,那里有着独特的修炼文明和强者为尊的法则。主角将在这个世界中历经磨难,收获友情、爱情与成长,书写属于自己的传奇。`,`${He}是一个关于勇气与梦想的修仙传说。在这个弱肉强食的修真世界里,主角凭借坚韧不拔的意志和独特的机缘,从一个普通人逐步成长为绝世强者,期间经历的种种冒险与情感纠葛构成了这部作品的精彩内核。`],urban:[`${He}是一部现代都市题材的力作,以当代社会为背景,描绘了主角在商场、职场、情场中的精彩人生。故事情节紧贴现实,人物形象鲜活生动,展现了现代都市生活的方方面面。`,`这是一个发生在繁华都市中的现代传奇。${He}以独特的视角展现了都市精英的奋斗历程,包含商战智慧、情感纠葛和人生感悟,是一部贴近现实又富有戏剧性的精彩作品。`,`${He}讲述了在这个快节奏的现代社会中,主角如何在激烈的竞争中脱颖而出的故事。作品融合了职场智慧、情感描写和社会现象的深度思考,展现了都市生活的真实面貌。`],history:[`${He}是一部恢弘的历史小说,以真实的历史背景为依托,通过主角的经历展现了那个时代的风云变幻。作品注重历史考证,人物刻画深入,战争场面宏大,是一部兼具文学价值和历史价值的佳作。`,`这是一个波澜壮阔的历史传奇。${He}以某个重要历史时期为背景,通过主角的视角展现了朝堂政治、军事战争、民间疾苦等多个层面,构建了一个真实而引人入胜的历史画卷。`,`${He}将读者带入了一个充满传奇色彩的历史年代。在那个英雄辈出的时代,主角将经历政治斗争、军事征战、文化碰撞,见证历史的变迁,书写属于自己的历史篇章。`],scifi:[`${He}是一部想象力丰富的科幻作品,设定在遥远的未来或广袤的宇宙中。故事融合了先进的科技概念、深刻的哲学思考和紧张刺激的冒险情节,展现了人类文明的无限可能。`,`这是一个关于未来与科技的宏大叙事。${He}通过主角在星际时代的经历,探讨了科技发展、人性本质、文明演进等深刻主题,是一部兼具娱乐性和思想性的科幻佳作。`,`${He}将读者带入了一个充满科技奇迹的未来世界。在这里,人工智能、星际航行、时空穿越等概念成为现实,主角将在这个充满无限可能的宇宙中展开史诗般的冒险。`],wuxia:[`${He}是一部经典的武侠小说,承载着深厚的江湖文化和武学传统。故事中有着精彩的武功描写、复杂的江湖恩怨、深刻的侠义精神,展现了一个充满豪情与柔情的武林世界。`,`这是一个侠骨柔情的江湖传说。${He}以武林为背景,通过主角的成长历程展现了江湖的险恶与温情、武学的精深与传承、侠客的义气与情怀,是一部充满武侠韵味的精彩作品。`,`${He}讲述了一个关于武功、情义与正邪的江湖故事。在这个刀光剑影的武林中,主角将学习绝世武功,结交生死兄弟,经历爱恨情仇,最终明悟侠道真谛。`],romance:[`${He}是一部温馨动人的言情小说,以细腻的笔触描绘了主角们的情感世界。故事情节跌宕起伏,人物情感真挚动人,展现了爱情的美好与复杂,是一部能够触动读者心灵的佳作。`,`这是一个关于爱情与成长的美丽故事。${He}通过主角们的相遇、相知、相爱的过程,展现了现代人的情感困惑与追求,用温暖的文字编织了一段动人的爱情童话。`,`${He}以爱情为主线,讲述了一段刻骨铭心的情感故事。作品中有欢声笑语,也有离别眼泪,有甜蜜温馨,也有误会波折,最终传达出关于爱情、成长和人生的深刻感悟。`]},Ue=Fe[k.value.genre]||Fe.fantasy,Se=Ue[Math.floor(Math.random()*Ue.length)];k.value.description=Se,Ie.success("使用本地模板生成简介成功!")};return Kt(()=>{S(),M()}),(He,Fe)=>{const Ue=Tt,Se=Br,We=bs,Te=ii,Ge=fo,Ot=uc,Zt=Si,Wt=a1,dt=i1,Le=o1,Mt=bf,je=_f,Ye=Xh,Je=Js,it=u1,mt=l1;return I(),j("div",CDt,[w("div",xDt,[Fe[23]||(Fe[23]=w("div",{class:"header-content"},[w("h1",null,"📚 小说列表"),w("p",null,"查看和管理您的小说作品")],-1)),w("div",SDt,[C.value.length>0?(I(),Oe(Se,{key:0,onClick:ie,disabled:F.value.length===0},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(qu))]),_:1}),Fe[21]||(Fe[21]=ce(" 导出列表 "))]),_:1,__:[21]},8,["disabled"])):be("",!0),D(Se,{type:"primary",onClick:Fe[0]||(Fe[0]=_t=>i.value=!0)},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(ea))]),_:1}),Fe[22]||(Fe[22]=ce(" 创建新小说 "))]),_:1,__:[22]})])]),w("div",DDt,[D(Ot,{shadow:"never"},{default:A(()=>[w("div",EDt,[w("div",kDt,[D(Te,{modelValue:n.value,"onUpdate:modelValue":Fe[1]||(Fe[1]=_t=>n.value=_t),placeholder:"状态筛选",style:{width:"120px"}},{default:A(()=>[D(We,{label:"全部",value:"all"}),D(We,{label:"创作中",value:"writing"}),D(We,{label:"已完成",value:"completed"}),D(We,{label:"已暂停",value:"paused"})]),_:1},8,["modelValue"]),D(Te,{modelValue:r.value,"onUpdate:modelValue":Fe[2]||(Fe[2]=_t=>r.value=_t),placeholder:"类型筛选",style:{width:"120px"}},{default:A(()=>[D(We,{label:"全部类型",value:"all"}),(I(!0),j(tt,null,wt(T.value,(_t,Qt)=>(I(),Oe(We,{key:Qt,label:_t.name,value:Qt},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),D(Te,{modelValue:o.value,"onUpdate:modelValue":Fe[3]||(Fe[3]=_t=>o.value=_t),placeholder:"排序方式",style:{width:"140px"}},{default:A(()=>[D(We,{label:"最近更新",value:"updated"}),D(We,{label:"创建时间",value:"created"}),D(We,{label:"字数",value:"wordCount"}),D(We,{label:"章节数",value:"chapters"})]),_:1},8,["modelValue"])]),w("div",ADt,[D(Ge,{modelValue:a.value,"onUpdate:modelValue":Fe[4]||(Fe[4]=_t=>a.value=_t),placeholder:"搜索小说标题、简介...",clearable:"",style:{width:"300px"}},{prefix:A(()=>[D(Ue,null,{default:A(()=>[D(b(dT))]),_:1})]),_:1},8,["modelValue"])])])]),_:1})]),w("div",TDt,[(I(!0),j(tt,null,wt(F.value,_t=>(I(),j("div",{key:_t.id,class:"novel-card"},[D(Ot,{shadow:"hover",class:"novel-item"},{default:A(()=>[w("div",ODt,[w("img",{src:_t.cover||"/default-cover.jpg",alt:_t.title,loading:"lazy",onError:$,onLoad:B},null,40,FDt),w("div",IDt,[D(Zt,{type:H(_t.status),size:"small"},{default:A(()=>[ce(se(R(_t.status)),1)]),_:2},1032,["type"])])]),w("div",MDt,[w("h3",PDt,se(_t.title),1),w("p",$Dt,se(_t.description),1),w("div",BDt,[w("div",RDt,[D(Ue,null,{default:A(()=>[D(b(Yu))]),_:1}),w("span",null,se((_t.chapterList||[]).length)+"章",1)]),w("div",NDt,[D(Ue,null,{default:A(()=>[D(b($h))]),_:1}),w("span",null,se(V(_t.wordCount||0))+"字",1)]),w("div",LDt,[D(Ue,null,{default:A(()=>[D(b(Bm))]),_:1}),w("span",null,se(Y(_t.updatedAt)),1)])]),w("div",UDt,[D(Zt,{size:"small",type:"info"},{default:A(()=>[ce(se(z(_t.genre)),1)]),_:2},1024)])]),w("div",VDt,[D(Se,{type:"primary",size:"small",onClick:Qt=>W(_t)},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(Xu))]),_:1}),Fe[24]||(Fe[24]=ce(" 编辑 "))]),_:2,__:[24]},1032,["onClick"]),D(Se,{size:"small",onClick:Qt=>J(_t)},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(db))]),_:1}),Fe[25]||(Fe[25]=ce(" 详情 "))]),_:2,__:[25]},1032,["onClick"]),D(Le,{trigger:"click"},{dropdown:A(()=>[D(dt,null,{default:A(()=>[D(Wt,{onClick:Qt=>ue(_t)},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b($h))]),_:1}),Fe[26]||(Fe[26]=ce(" 编辑信息 "))]),_:2,__:[26]},1032,["onClick"]),D(Wt,{divided:"",onClick:Qt=>oe(_t)},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(qu))]),_:1}),Fe[27]||(Fe[27]=ce(" 导出 "))]),_:2,__:[27]},1032,["onClick"]),D(Wt,{onClick:Qt=>Z(_t)},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(vg))]),_:1}),Fe[28]||(Fe[28]=ce(" 复制 "))]),_:2,__:[28]},1032,["onClick"]),D(Wt,{divided:"",onClick:Qt=>de(_t)},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(Ws))]),_:1}),Fe[29]||(Fe[29]=ce(" 删除 "))]),_:2,__:[29]},1032,["onClick"])]),_:2},1024)]),default:A(()=>[D(Se,{size:"small",type:"text"},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(Ku))]),_:1})]),_:1})]),_:2},1024)])]),_:2},1024)]))),128))]),F.value.length===0?(I(),j("div",zDt,[D(Mt,{description:"暂无小说作品"},{default:A(()=>[D(Se,{type:"primary",onClick:Fe[5]||(Fe[5]=_t=>i.value=!0)},{default:A(()=>Fe[30]||(Fe[30]=[ce("创建第一部小说")])),_:1,__:[30]})]),_:1})])):be("",!0),D(Je,{modelValue:i.value,"onUpdate:modelValue":Fe[11]||(Fe[11]=_t=>i.value=_t),title:"创建新小说",width:"600px",onClose:re},{footer:A(()=>[D(Se,{onClick:Fe[10]||(Fe[10]=_t=>i.value=!1)},{default:A(()=>Fe[36]||(Fe[36]=[ce("取消")])),_:1,__:[36]}),D(Se,{type:"primary",onClick:pe},{default:A(()=>Fe[37]||(Fe[37]=[ce("创建")])),_:1,__:[37]})]),default:A(()=>[D(Ye,{ref_key:"createFormRef",ref:g,model:k.value,rules:P,"label-width":"80px"},{default:A(()=>[D(je,{label:"小说标题",prop:"title"},{default:A(()=>[D(Ge,{modelValue:k.value.title,"onUpdate:modelValue":Fe[6]||(Fe[6]=_t=>k.value.title=_t),placeholder:"请输入小说标题"},null,8,["modelValue"])]),_:1}),D(je,{label:"类型",prop:"genre"},{default:A(()=>[D(Te,{modelValue:k.value.genre,"onUpdate:modelValue":Fe[7]||(Fe[7]=_t=>k.value.genre=_t),placeholder:"请选择小说类型",onChange:he},{default:A(()=>[(I(!0),j(tt,null,wt(T.value,(_t,Qt)=>(I(),Oe(We,{key:Qt,label:_t.name,value:Qt},{default:A(()=>[w("div",jDt,[w("span",null,se(_t.name),1),D(Zt,{size:"small",type:"info"},{default:A(()=>[ce(se(_t.tags.slice(0,2).join("、")),1)]),_:2},1024)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),k.value.genre&&T.value[k.value.genre]?(I(),j("div",HDt," 💡 "+se(T.value[k.value.genre].prompt),1)):be("",!0)]),_:1}),D(je,{label:"简介",prop:"description"},{default:A(()=>{var _t,Qt;return[w("div",WDt,[D(Ge,{modelValue:k.value.description,"onUpdate:modelValue":Fe[8]||(Fe[8]=Vn=>k.value.description=Vn),type:"textarea",rows:4,placeholder:"请输入小说简介或点击AI生成"},null,8,["modelValue"]),k.value.genre?(I(),j("div",qDt,[D(Se,{type:"primary",size:"small",onClick:Ft,loading:v.value,disabled:!((_t=k.value.title)!=null&&_t.trim())},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(Ld))]),_:1}),ce(" "+se(v.value?"AI生成中...":"AI智能生成"),1)]),_:1},8,["loading","disabled"]),k.value.description?(I(),Oe(Se,{key:0,size:"small",onClick:Ft,loading:v.value,disabled:!((Qt=k.value.title)!=null&&Qt.trim())},{default:A(()=>Fe[31]||(Fe[31]=[ce(" 重新生成 ")])),_:1,__:[31]},8,["loading","disabled"])):be("",!0),Fe[32]||(Fe[32]=w("span",{class:"generate-tip"},"使用AI技术基于标题和类型智能生成",-1))])):be("",!0)])]}),_:1}),D(je,{label:"封面"},{default:A(()=>[w("div",KDt,[w("div",{class:"cover-uploader",onClick:ae},[k.value.cover?(I(),j("img",{key:0,src:k.value.cover,class:"cover-preview"},null,8,GDt)):(I(),j("div",YDt,[D(Ue,{class:"cover-uploader-icon"},{default:A(()=>[D(b(ea))]),_:1}),Fe[33]||(Fe[33]=w("div",{class:"upload-text"},"点击上传封面",-1))]))]),w("input",{ref_key:"fileInput",ref:ke,type:"file",accept:"image/*",style:{display:"none"},onChange:le},null,544),k.value.cover?(I(),j("div",XDt,[D(Se,{size:"small",type:"danger",onClick:q},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(Ws))]),_:1}),Fe[34]||(Fe[34]=ce(" 移除封面 "))]),_:1,__:[34]})])):be("",!0)])]),_:1}),D(je,{label:"标签"},{default:A(()=>[D(Ge,{modelValue:f.value,"onUpdate:modelValue":Fe[9]||(Fe[9]=_t=>f.value=_t),placeholder:"输入标签后按回车添加",onKeyup:qn(we,["enter"])},{append:A(()=>[D(Se,{onClick:we},{default:A(()=>Fe[35]||(Fe[35]=[ce("添加")])),_:1,__:[35]})]),_:1},8,["modelValue"]),k.value.tags.length>0?(I(),j("div",JDt,[(I(!0),j(tt,null,wt(k.value.tags,(_t,Qt)=>(I(),Oe(Zt,{key:Qt,closable:"",onClose:Vn=>Be(Qt),style:{margin:"2px 4px 2px 0"}},{default:A(()=>[ce(se(_t),1)]),_:2},1032,["onClose"]))),128))])):be("",!0)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),D(Je,{modelValue:s.value,"onUpdate:modelValue":Fe[13]||(Fe[13]=_t=>s.value=_t),title:"小说详情",width:"800px"},{default:A(()=>[u.value?(I(),j("div",ZDt,[w("div",QDt,[w("div",eEt,[w("img",{src:u.value.cover||"/default-cover.jpg",alt:u.value.title,loading:"lazy",onError:$,onLoad:B},null,40,tEt)]),w("div",nEt,[w("h2",null,se(u.value.title),1),w("p",rEt,se(u.value.description),1),w("div",oEt,[w("div",aEt,[Fe[38]||(Fe[38]=w("span",{class:"meta-label"},"类型:",-1)),D(Zt,{size:"small"},{default:A(()=>[ce(se(z(u.value.genre)),1)]),_:1})]),w("div",iEt,[Fe[39]||(Fe[39]=w("span",{class:"meta-label"},"状态:",-1)),D(Zt,{type:H(u.value.status),size:"small"},{default:A(()=>[ce(se(R(u.value.status)),1)]),_:1},8,["type"])]),w("div",sEt,[Fe[40]||(Fe[40]=w("span",{class:"meta-label"},"章节:",-1)),w("span",null,se(u.value.chapters)+"章",1)]),w("div",lEt,[Fe[41]||(Fe[41]=w("span",{class:"meta-label"},"字数:",-1)),w("span",null,se(V(u.value.wordCount))+"字",1)]),w("div",uEt,[Fe[42]||(Fe[42]=w("span",{class:"meta-label"},"创建时间:",-1)),w("span",null,se(Y(u.value.createdAt)),1)]),w("div",cEt,[Fe[43]||(Fe[43]=w("span",{class:"meta-label"},"更新时间:",-1)),w("span",null,se(Y(u.value.updatedAt)),1)])])])]),w("div",dEt,[D(mt,{modelValue:d.value,"onUpdate:modelValue":Fe[12]||(Fe[12]=_t=>d.value=_t)},{default:A(()=>[D(it,{label:"章节列表",name:"chapters"},{default:A(()=>[w("div",fEt,[(I(!0),j(tt,null,wt(u.value.chapterList,(_t,Qt)=>(I(),j("div",{key:Qt,class:"chapter-item"},[w("div",hEt,[w("h4",null,"第"+se(Qt+1)+"章 "+se(_t.title),1),w("p",null,se(_t.wordCount)+"字 · "+se(Y(_t.updatedAt)),1)]),w("div",pEt,[D(Se,{size:"small",onClick:Vn=>bt(_t)},{default:A(()=>Fe[44]||(Fe[44]=[ce("编辑")])),_:2,__:[44]},1032,["onClick"])])]))),128))])]),_:1}),D(it,{label:"创作记录",name:"records"},{default:A(()=>[w("div",gEt,[(I(!0),j(tt,null,wt(u.value.writingRecords,_t=>(I(),j("div",{key:_t.id,class:"record-item"},[w("div",vEt,se(Y(_t.date)),1),w("div",mEt,[w("div",yEt,[w("span",null,"写作 "+se(_t.wordsWritten)+" 字",1),w("span",null,"用时 "+se(_t.timeSpent)+" 分钟",1)]),_t.note?(I(),j("div",bEt,se(_t.note),1)):be("",!0)])]))),128))])]),_:1}),D(it,{label:"统计数据",name:"statistics"},{default:A(()=>[w("div",_Et,[w("div",wEt,[w("div",CEt,[w("div",xEt,se(u.value.totalWords),1),Fe[45]||(Fe[45]=w("div",{class:"stat-label"},"总字数",-1))]),w("div",SEt,[w("div",DEt,se((u.value.chapterList||[]).length),1),Fe[46]||(Fe[46]=w("div",{class:"stat-label"},"章节数",-1))]),w("div",EEt,[w("div",kEt,se(Math.round((u.value.wordCount||0)/Math.max((u.value.chapterList||[]).length,1))),1),Fe[47]||(Fe[47]=w("div",{class:"stat-label"},"平均章节字数",-1))]),w("div",AEt,[w("div",TEt,se(u.value.writingDays),1),Fe[48]||(Fe[48]=w("div",{class:"stat-label"},"创作天数",-1))])])])]),_:1})]),_:1},8,["modelValue"])])])):be("",!0)]),_:1},8,["modelValue"]),D(Je,{modelValue:l.value,"onUpdate:modelValue":Fe[20]||(Fe[20]=_t=>l.value=_t),title:"编辑小说信息",width:"600px",onClose:_e},{footer:A(()=>[D(Se,{onClick:Fe[19]||(Fe[19]=_t=>l.value=!1)},{default:A(()=>Fe[53]||(Fe[53]=[ce("取消")])),_:1,__:[53]}),D(Se,{type:"primary",onClick:at,loading:_.value},{default:A(()=>Fe[54]||(Fe[54]=[ce("保存修改")])),_:1,__:[54]},8,["loading"])]),default:A(()=>[D(Ye,{ref_key:"editFormRef",ref:p,model:O.value,rules:U,"label-width":"80px"},{default:A(()=>[D(je,{label:"小说标题",prop:"title"},{default:A(()=>[D(Ge,{modelValue:O.value.title,"onUpdate:modelValue":Fe[14]||(Fe[14]=_t=>O.value.title=_t),placeholder:"请输入小说标题"},null,8,["modelValue"])]),_:1}),D(je,{label:"类型",prop:"genre"},{default:A(()=>[D(Te,{modelValue:O.value.genre,"onUpdate:modelValue":Fe[15]||(Fe[15]=_t=>O.value.genre=_t),placeholder:"请选择小说类型",onChange:Pe},{default:A(()=>[(I(!0),j(tt,null,wt(T.value,(_t,Qt)=>(I(),Oe(We,{key:Qt,label:_t.name,value:Qt},{default:A(()=>[w("div",OEt,[w("span",null,se(_t.name),1),D(Zt,{size:"small",type:"info"},{default:A(()=>[ce(se(_t.tags.slice(0,2).join("、")),1)]),_:2},1024)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),O.value.genre&&T.value[O.value.genre]?(I(),j("div",FEt," 💡 "+se(T.value[O.value.genre].prompt),1)):be("",!0)]),_:1}),D(je,{label:"状态",prop:"status"},{default:A(()=>[D(Te,{modelValue:O.value.status,"onUpdate:modelValue":Fe[16]||(Fe[16]=_t=>O.value.status=_t),placeholder:"请选择小说状态"},{default:A(()=>[D(We,{label:"创作中",value:"writing"}),D(We,{label:"已完成",value:"completed"}),D(We,{label:"已暂停",value:"paused"})]),_:1},8,["modelValue"])]),_:1}),D(je,{label:"简介",prop:"description"},{default:A(()=>{var _t;return[w("div",IEt,[D(Ge,{modelValue:O.value.description,"onUpdate:modelValue":Fe[17]||(Fe[17]=Qt=>O.value.description=Qt),type:"textarea",rows:4,placeholder:"请输入小说简介或点击AI生成"},null,8,["modelValue"]),O.value.genre?(I(),j("div",MEt,[D(Se,{type:"primary",size:"small",onClick:ze,loading:y.value,disabled:!((_t=O.value.title)!=null&&_t.trim())},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(Ld))]),_:1}),ce(" "+se(y.value?"AI生成中...":"AI重新生成"),1)]),_:1},8,["loading","disabled"]),Fe[49]||(Fe[49]=w("span",{class:"generate-tip"},"使用AI技术基于标题和类型智能生成",-1))])):be("",!0)])]}),_:1}),D(je,{label:"封面"},{default:A(()=>[w("div",PEt,[w("div",{class:"cover-uploader",onClick:ye},[O.value.cover?(I(),j("img",{key:0,src:O.value.cover,class:"cover-preview"},null,8,$Et)):(I(),j("div",BEt,[D(Ue,{class:"cover-uploader-icon"},{default:A(()=>[D(b(ea))]),_:1}),Fe[50]||(Fe[50]=w("div",{class:"upload-text"},"点击上传封面",-1))]))]),w("input",{ref_key:"editFileInput",ref:m,type:"file",accept:"image/*",style:{display:"none"},onChange:ve},null,544),O.value.cover?(I(),j("div",REt,[D(Se,{size:"small",type:"danger",onClick:Ce},{default:A(()=>[D(Ue,null,{default:A(()=>[D(b(Ws))]),_:1}),Fe[51]||(Fe[51]=ce(" 移除封面 "))]),_:1,__:[51]})])):be("",!0)])]),_:1}),D(je,{label:"标签"},{default:A(()=>[D(Ge,{modelValue:h.value,"onUpdate:modelValue":Fe[18]||(Fe[18]=_t=>h.value=_t),placeholder:"输入标签后按回车添加",onKeyup:qn(Ae,["enter"])},{append:A(()=>[D(Se,{onClick:Ae},{default:A(()=>Fe[52]||(Fe[52]=[ce("添加")])),_:1,__:[52]})]),_:1},8,["modelValue"]),O.value.tags.length>0?(I(),j("div",NEt,[(I(!0),j(tt,null,wt(O.value.tags,(_t,Qt)=>(I(),Oe(Zt,{key:Qt,closable:"",onClose:Vn=>Ee(Qt),style:{margin:"2px 4px 2px 0"}},{default:A(()=>[ce(se(_t),1)]),_:2},1032,["onClose"]))),128))])):be("",!0)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}},UEt=Cs(LEt,[["__scopeId","data-v-b7c07dee"]]);const VEt={class:"writing-goals"},zEt={class:"page-header"},jEt={class:"header-actions"},HEt={class:"goals-overview"},WEt={class:"overview-item"},qEt={class:"overview-icon active"},KEt={class:"overview-content"},GEt={class:"overview-value"},YEt={class:"overview-item"},XEt={class:"overview-icon completed"},JEt={class:"overview-content"},ZEt={class:"overview-value"},QEt={class:"overview-item"},ekt={class:"overview-icon words"},tkt={class:"overview-content"},nkt={class:"overview-value"},rkt={class:"overview-item"},okt={class:"overview-icon streak"},akt={class:"overview-content"},ikt={class:"overview-value"},skt={class:"active-goals-section"},lkt={class:"goals-grid"},ukt={class:"goal-header"},ckt={class:"goal-title"},dkt={class:"goal-icon"},fkt={class:"goal-actions"},hkt={class:"goal-description"},pkt={class:"goal-progress"},gkt={class:"progress-info"},vkt={class:"progress-text"},mkt={class:"progress-percentage"},ykt={class:"goal-timeline"},bkt={class:"timeline-item"},_kt={class:"timeline-item"},wkt={class:"timeline-item"},Ckt={class:"goal-footer"},xkt={class:"history-section"},Skt={class:"section-header"},Dkt={class:"filter-tabs"},Ekt={class:"history-list"},kkt={class:"history-content"},Akt={class:"history-info"},Tkt={class:"history-title"},Okt={class:"goal-icon"},Fkt={class:"history-description"},Ikt={class:"history-meta"},Mkt={class:"history-progress"},Pkt={key:0},$kt={key:0,class:"goal-details"},Bkt={class:"details-header"},Rkt={class:"details-content"},Nkt={class:"detail-item"},Lkt={class:"detail-item"},Ukt={class:"detail-item"},Vkt={class:"detail-item"},zkt={class:"detail-item"},jkt={class:"detail-item"},Hkt={class:"detail-item"},Wkt={class:"detail-item"},qkt={class:"progress-history"},Kkt={class:"history-timeline"},Gkt={class:"timeline-date"},Ykt={class:"timeline-content"},Xkt={class:"timeline-progress"},Jkt={key:0,class:"timeline-note"},Zkt={__name:"WritingGoals",setup(e){const t=X([]),n=X(!1),r=X(!1),o=X(!1),a=X("all"),i=X(null),s=X(null),l=X(0),u=X(""),c=X(null),d=X({title:"",type:"",targetValue:1e3,description:"",dateRange:[],reminder:!1,reminderTime:null}),f={title:[{required:!0,message:"请输入目标标题",trigger:"blur"}],type:[{required:!0,message:"请选择目标类型",trigger:"change"}],targetValue:[{required:!0,message:"请输入目标数值",trigger:"blur"}],dateRange:[{required:!0,message:"请选择时间范围",trigger:"change"}]},h=()=>{const W=localStorage.getItem("writingGoals");if(W)try{const J=JSON.parse(W);t.value=J.map(oe=>({...oe,startDate:new Date(oe.startDate),endDate:new Date(oe.endDate),progressHistory:oe.progressHistory||[]}))}catch(J){console.error("加载写作目标数据失败:",J),g()}else g()},g=()=>{t.value=[],p()},p=()=>{try{localStorage.setItem("writingGoals",JSON.stringify(t.value)),window.refreshHomeData&&window.refreshHomeData()}catch(W){console.error("保存写作目标数据失败:",W),Ie.error("保存数据失败")}},m=K(()=>t.value.filter(W=>W.status==="active").length),v=K(()=>t.value.filter(W=>W.status==="completed").length),y=K(()=>{const W=t.value.find(J=>J.type==="daily"&&J.status==="active");return W?W.currentValue:0}),_=K(()=>{const W=t.value.find(J=>J.type==="streak_days"&&J.status==="active");return W?W.currentValue:0}),C=K(()=>t.value.filter(W=>W.status==="active")),S=K(()=>{let W=t.value.filter(J=>J.status!=="active");return a.value!=="all"&&(W=W.filter(J=>J.status===a.value)),W}),E=W=>({daily:"📝",weekly:"📊",monthly:"📈",total:"📚",custom:"📖",streak_days:"🔥"})[W]||"🎯",k=W=>({daily:"每日字数",weekly:"每周字数",monthly:"每月字数",total:"总字数",custom:"章节数",streak_days:"连续天数"})[W]||"未知类型",O=W=>W>=1?"#67c23a":W>=.8?"#e6a23c":W>=.5?"#409eff":"#f56c6c",T=W=>({active:"success",completed:"success",failed:"danger",paused:"warning"})[W]||"info",P=W=>({all:"全部",active:"进行中",completed:"已完成",failed:"已失败",paused:"已暂停"})[W]||"未知",U=W=>new Date(W).toLocaleDateString("zh-CN"),F=W=>new Date>new Date(W),H=W=>{const J=new Date,ie=new Date(W)-J;if(ie<=0)return"已过期";const Z=Math.floor(ie/(1e3*60*60*24));return Z>0?`${Z}天`:`${Math.floor(ie/(1e3*60*60))}小时`},R=W=>{const J=Math.ceil((new Date(W.endDate)-new Date(W.startDate))/864e5),oe=Math.ceil((new Date-new Date(W.startDate))/(1e3*60*60*24)),ie=W.targetValue/J*oe;return W.currentValue>=ie?"超前进度":"需要加油"},z=W=>{i.value=W,d.value={title:W.title,type:W.type,targetValue:W.targetValue,description:W.description,dateRange:[W.startDate,W.endDate],reminder:W.reminder,reminderTime:W.reminderTime},n.value=!0},M=W=>{W.status="paused",p(),Ie.success("目标已暂停")},N=async W=>{try{await uo.confirm("确定要删除这个目标吗?","确认删除",{type:"warning"});const J=t.value.findIndex(oe=>oe.id===W.id);J>-1&&(t.value.splice(J,1),p(),Ie.success("删除成功"))}catch{}},L=W=>{s.value=W,l.value=0,u.value="",r.value=!0},V=W=>{s.value=W,o.value=!0},Y=async()=>{try{await c.value.validate();const W={...d.value,startDate:d.value.dateRange[0],endDate:d.value.dateRange[1],currentValue:0,status:"active",progressHistory:[]};if(i.value){const J=t.value.findIndex(oe=>oe.id===i.value.id);J>-1&&(t.value[J]={...t.value[J],...W}),Ie.success("目标更新成功")}else{const J={...W,id:Date.now()};t.value.push(J),Ie.success("目标创建成功")}p(),n.value=!1,B()}catch{}},$=()=>{l.value>0&&(s.value.currentValue+=l.value,s.value.progressHistory.unshift({id:Date.now(),date:new Date,increment:l.value,note:u.value}),s.value.currentValue>=s.value.targetValue?(s.value.status="completed",Ie.success("🎉 恭喜!目标已完成!")):Ie.success("进度更新成功"),p()),r.value=!1},B=()=>{d.value={title:"",type:"",targetValue:1e3,description:"",dateRange:[],reminder:!1,reminderTime:null},i.value=null};return Kt(()=>{h(),window.addEventListener("storage",W=>{W.key==="writingGoals"&&h()})}),(W,J)=>{const oe=Tt,ie=Br,Z=uc,de=r1,we=s1,Be=a1,ke=i1,ae=o1,le=C_,q=Si,pe=fo,he=_f,re=bs,ue=ii,_e=Kg,Pe=qL,Ae=Xi,Ee=XSe,ye=Xh,ve=Js;return I(),j("div",VEt,[w("div",zEt,[J[16]||(J[16]=w("div",{class:"header-content"},[w("h1",null,"🎯 写作目标"),w("p",null,"设定目标,追踪进度,保持创作动力")],-1)),w("div",jEt,[D(ie,{type:"primary",onClick:J[0]||(J[0]=Ce=>n.value=!0)},{default:A(()=>[D(oe,null,{default:A(()=>[D(b(ea))]),_:1}),J[15]||(J[15]=ce(" 设定新目标 "))]),_:1,__:[15]})])]),w("div",HEt,[D(we,{gutter:20},{default:A(()=>[D(de,{span:6},{default:A(()=>[D(Z,{class:"overview-card"},{default:A(()=>[w("div",WEt,[w("div",qEt,[D(oe,null,{default:A(()=>[D(b(PL))]),_:1})]),w("div",KEt,[w("div",GEt,se(m.value),1),J[17]||(J[17]=w("div",{class:"overview-label"},"进行中目标",-1))])])]),_:1})]),_:1}),D(de,{span:6},{default:A(()=>[D(Z,{class:"overview-card"},{default:A(()=>[w("div",YEt,[w("div",XEt,[D(oe,null,{default:A(()=>[D(b(f5e))]),_:1})]),w("div",JEt,[w("div",ZEt,se(v.value),1),J[18]||(J[18]=w("div",{class:"overview-label"},"已完成目标",-1))])])]),_:1})]),_:1}),D(de,{span:6},{default:A(()=>[D(Z,{class:"overview-card"},{default:A(()=>[w("div",QEt,[w("div",ekt,[D(oe,null,{default:A(()=>[D(b($h))]),_:1})]),w("div",tkt,[w("div",nkt,se(y.value),1),J[19]||(J[19]=w("div",{class:"overview-label"},"今日字数",-1))])])]),_:1})]),_:1}),D(de,{span:6},{default:A(()=>[D(Z,{class:"overview-card"},{default:A(()=>[w("div",rkt,[w("div",okt,[D(oe,null,{default:A(()=>[D(b(Bm))]),_:1})]),w("div",akt,[w("div",ikt,se(_.value),1),J[20]||(J[20]=w("div",{class:"overview-label"},"连续天数",-1))])])]),_:1})]),_:1})]),_:1})]),w("div",skt,[J[29]||(J[29]=w("h2",null,"🔥 当前目标",-1)),w("div",lkt,[(I(!0),j(tt,null,wt(C.value,Ce=>(I(),j("div",{key:Ce.id,class:"goal-card"},[D(Z,{shadow:"hover"},{default:A(()=>[w("div",ukt,[w("div",ckt,[w("span",dkt,se(E(Ce.type)),1),w("h3",null,se(Ce.title),1)]),w("div",fkt,[D(ae,{trigger:"click"},{dropdown:A(()=>[D(ke,null,{default:A(()=>[D(Be,{onClick:ze=>z(Ce)},{default:A(()=>[D(oe,null,{default:A(()=>[D(b(Xu))]),_:1}),J[21]||(J[21]=ce(" 编辑 "))]),_:2,__:[21]},1032,["onClick"]),D(Be,{onClick:ze=>M(Ce)},{default:A(()=>[D(oe,null,{default:A(()=>[D(b(Zne))]),_:1}),J[22]||(J[22]=ce(" 暂停 "))]),_:2,__:[22]},1032,["onClick"]),D(Be,{divided:"",onClick:ze=>N(Ce)},{default:A(()=>[D(oe,null,{default:A(()=>[D(b(Ws))]),_:1}),J[23]||(J[23]=ce(" 删除 "))]),_:2,__:[23]},1032,["onClick"])]),_:2},1024)]),default:A(()=>[D(ie,{type:"text",size:"small"},{default:A(()=>[D(oe,null,{default:A(()=>[D(b(Ku))]),_:1})]),_:1})]),_:2},1024)])]),w("div",hkt,[w("p",null,se(Ce.description),1)]),w("div",pkt,[w("div",gkt,[w("span",vkt,se(Ce.currentValue)+" / "+se(Ce.targetValue)+" "+se(Ce.unit),1),w("span",mkt,se(Math.round(Ce.currentValue/Ce.targetValue*100))+"% ",1)]),D(le,{percentage:Math.round(Ce.currentValue/Ce.targetValue*100),color:O(Ce.currentValue/Ce.targetValue),"stroke-width":8},null,8,["percentage","color"])]),w("div",ykt,[w("div",bkt,[J[24]||(J[24]=w("span",{class:"timeline-label"},"开始时间:",-1)),w("span",null,se(U(Ce.startDate)),1)]),w("div",_kt,[J[25]||(J[25]=w("span",{class:"timeline-label"},"截止时间:",-1)),w("span",{class:ee({"text-danger":F(Ce.endDate)})},se(U(Ce.endDate)),3)]),w("div",wkt,[J[26]||(J[26]=w("span",{class:"timeline-label"},"剩余时间:",-1)),w("span",{class:ee({"text-danger":F(Ce.endDate)})},se(H(Ce.endDate)),3)])]),w("div",Ckt,[D(ie,{type:"primary",size:"small",onClick:ze=>L(Ce)},{default:A(()=>J[27]||(J[27]=[ce(" 更新进度 ")])),_:2,__:[27]},1032,["onClick"]),D(ie,{size:"small",onClick:ze=>V(Ce)},{default:A(()=>J[28]||(J[28]=[ce(" 查看详情 ")])),_:2,__:[28]},1032,["onClick"])])]),_:2},1024)]))),128))])]),w("div",xkt,[w("div",Skt,[J[30]||(J[30]=w("h2",null,"📈 历史目标",-1)),w("div",Dkt,[(I(),j(tt,null,wt(["all","completed","failed","paused"],Ce=>D(ie,{key:Ce,type:a.value===Ce?"primary":"default",size:"small",onClick:ze=>a.value=Ce},{default:A(()=>[ce(se(P(Ce)),1)]),_:2},1032,["type","onClick"])),64))])]),w("div",Ekt,[(I(!0),j(tt,null,wt(S.value,Ce=>(I(),j("div",{key:Ce.id,class:"history-item"},[D(Z,{shadow:"never"},{default:A(()=>[w("div",kkt,[w("div",Akt,[w("div",Tkt,[w("span",Okt,se(E(Ce.type)),1),w("h4",null,se(Ce.title),1),D(q,{type:T(Ce.status),size:"small"},{default:A(()=>[ce(se(P(Ce.status)),1)]),_:2},1032,["type"])]),w("p",Fkt,se(Ce.description),1),w("div",Ikt,[w("span",null,se(U(Ce.startDate))+" - "+se(U(Ce.endDate)),1),w("span",null,se(Ce.currentValue)+" / "+se(Ce.targetValue)+" "+se(Ce.unit),1)])]),w("div",Mkt,[D(le,{percentage:Math.round(Ce.currentValue/Ce.targetValue*100),color:O(Ce.currentValue/Ce.targetValue),"stroke-width":6},null,8,["percentage","color"])])])]),_:2},1024)]))),128))])]),D(ve,{modelValue:n.value,"onUpdate:modelValue":J[9]||(J[9]=Ce=>n.value=Ce),title:i.value?"编辑目标":"创建新目标",width:"600px",onClose:B},{footer:A(()=>[D(ie,{onClick:J[8]||(J[8]=Ce=>n.value=!1)},{default:A(()=>J[32]||(J[32]=[ce("取消")])),_:1,__:[32]}),D(ie,{type:"primary",onClick:Y},{default:A(()=>J[33]||(J[33]=[ce("保存")])),_:1,__:[33]})]),default:A(()=>[D(ye,{ref_key:"formRef",ref:c,model:d.value,rules:f,"label-width":"100px"},{default:A(()=>[D(he,{label:"目标标题",prop:"title"},{default:A(()=>[D(pe,{modelValue:d.value.title,"onUpdate:modelValue":J[1]||(J[1]=Ce=>d.value.title=Ce),placeholder:"请输入目标标题"},null,8,["modelValue"])]),_:1}),D(he,{label:"目标类型",prop:"type"},{default:A(()=>[D(ue,{modelValue:d.value.type,"onUpdate:modelValue":J[2]||(J[2]=Ce=>d.value.type=Ce),placeholder:"请选择目标类型"},{default:A(()=>[D(re,{label:"每日字数",value:"daily"}),D(re,{label:"每周字数",value:"weekly"}),D(re,{label:"每月字数",value:"monthly"}),D(re,{label:"总字数",value:"total"}),D(re,{label:"章节数",value:"custom"}),D(re,{label:"连续天数",value:"streak_days"})]),_:1},8,["modelValue"])]),_:1}),D(he,{label:"目标数值",prop:"targetValue"},{default:A(()=>[D(_e,{modelValue:d.value.targetValue,"onUpdate:modelValue":J[3]||(J[3]=Ce=>d.value.targetValue=Ce),min:1,max:1e6,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),D(he,{label:"描述"},{default:A(()=>[D(pe,{modelValue:d.value.description,"onUpdate:modelValue":J[4]||(J[4]=Ce=>d.value.description=Ce),type:"textarea",rows:3,placeholder:"请输入目标描述(可选)"},null,8,["modelValue"])]),_:1}),D(he,{label:"时间范围",prop:"dateRange"},{default:A(()=>[D(Pe,{modelValue:d.value.dateRange,"onUpdate:modelValue":J[5]||(J[5]=Ce=>d.value.dateRange=Ce),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",style:{width:"100%"}},null,8,["modelValue"])]),_:1}),D(he,{label:"提醒设置"},{default:A(()=>[D(Ae,{modelValue:d.value.reminder,"onUpdate:modelValue":J[6]||(J[6]=Ce=>d.value.reminder=Ce)},{default:A(()=>J[31]||(J[31]=[ce("开启提醒")])),_:1,__:[31]},8,["modelValue"]),d.value.reminder?(I(),Oe(Ee,{key:0,modelValue:d.value.reminderTime,"onUpdate:modelValue":J[7]||(J[7]=Ce=>d.value.reminderTime=Ce),placeholder:"提醒时间",style:{"margin-left":"10px"}},null,8,["modelValue"])):be("",!0)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),D(ve,{modelValue:r.value,"onUpdate:modelValue":J[13]||(J[13]=Ce=>r.value=Ce),title:"更新进度",width:"400px"},{footer:A(()=>[D(ie,{onClick:J[12]||(J[12]=Ce=>r.value=!1)},{default:A(()=>J[34]||(J[34]=[ce("取消")])),_:1,__:[34]}),D(ie,{type:"primary",onClick:$},{default:A(()=>J[35]||(J[35]=[ce("保存")])),_:1,__:[35]})]),default:A(()=>[s.value?(I(),j("div",Pkt,[w("p",null,"目标:"+se(s.value.title),1),w("p",null,"当前进度:"+se(s.value.currentValue)+" / "+se(s.value.targetValue)+" "+se(s.value.unit),1),D(ye,{"label-width":"80px"},{default:A(()=>[D(he,{label:"新增数值"},{default:A(()=>[D(_e,{modelValue:l.value,"onUpdate:modelValue":J[10]||(J[10]=Ce=>l.value=Ce),min:0,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),D(he,{label:"备注"},{default:A(()=>[D(pe,{modelValue:u.value,"onUpdate:modelValue":J[11]||(J[11]=Ce=>u.value=Ce),type:"textarea",rows:2,placeholder:"记录今天的创作心得(可选)"},null,8,["modelValue"])]),_:1})]),_:1})])):be("",!0)]),_:1},8,["modelValue"]),D(ve,{modelValue:o.value,"onUpdate:modelValue":J[14]||(J[14]=Ce=>o.value=Ce),title:"目标详情",width:"700px"},{default:A(()=>[s.value?(I(),j("div",$kt,[w("div",Bkt,[w("h3",null,se(s.value.title),1),D(q,{type:T(s.value.status)},{default:A(()=>[ce(se(P(s.value.status)),1)]),_:1},8,["type"])]),w("div",Rkt,[D(we,{gutter:20},{default:A(()=>[D(de,{span:12},{default:A(()=>[w("div",Nkt,[J[36]||(J[36]=w("label",null,"目标类型:",-1)),w("span",null,se(k(s.value.type)),1)]),w("div",Lkt,[J[37]||(J[37]=w("label",null,"目标数值:",-1)),w("span",null,se(s.value.targetValue)+" "+se(s.value.unit),1)]),w("div",Ukt,[J[38]||(J[38]=w("label",null,"当前进度:",-1)),w("span",null,se(s.value.currentValue)+" "+se(s.value.unit),1)]),w("div",Vkt,[J[39]||(J[39]=w("label",null,"完成率:",-1)),w("span",null,se(Math.round(s.value.currentValue/s.value.targetValue*100))+"%",1)])]),_:1}),D(de,{span:12},{default:A(()=>[w("div",zkt,[J[40]||(J[40]=w("label",null,"开始时间:",-1)),w("span",null,se(U(s.value.startDate)),1)]),w("div",jkt,[J[41]||(J[41]=w("label",null,"结束时间:",-1)),w("span",null,se(U(s.value.endDate)),1)]),w("div",Hkt,[J[42]||(J[42]=w("label",null,"剩余时间:",-1)),w("span",null,se(H(s.value.endDate)),1)]),w("div",Wkt,[J[43]||(J[43]=w("label",null,"平均进度:",-1)),w("span",null,se(R(s.value)),1)])]),_:1})]),_:1}),J[45]||(J[45]=w("div",{class:"progress-chart"},[w("h4",null,"进度趋势"),w("div",{class:"chart-placeholder"},[w("p",null,"进度图表(可集成 ECharts)")])],-1)),w("div",qkt,[J[44]||(J[44]=w("h4",null,"更新记录",-1)),w("div",Kkt,[(I(!0),j(tt,null,wt(s.value.progressHistory,Ce=>(I(),j("div",{key:Ce.id,class:"timeline-item"},[w("div",Gkt,se(U(Ce.date)),1),w("div",Ykt,[w("div",Xkt,"+"+se(Ce.increment)+" "+se(s.value.unit),1),Ce.note?(I(),j("div",Jkt,se(Ce.note),1)):be("",!0)])]))),128))])])])])):be("",!0)]),_:1},8,["modelValue"])])}}},Qkt=Cs(Zkt,[["__scopeId","data-v-f3b7487c"]]);const e9t={class:"token-billing"},t9t={class:"page-header"},n9t={class:"header-actions"},r9t={class:"account-overview"},o9t={class:"overview-item"},a9t={class:"overview-icon"},i9t={class:"overview-content"},s9t={class:"overview-value"},l9t={class:"overview-item"},u9t={class:"overview-icon"},c9t={class:"overview-content"},d9t={class:"overview-value"},f9t={class:"overview-item"},h9t={class:"overview-icon"},p9t={class:"overview-content"},g9t={class:"overview-value"},v9t={class:"overview-item"},m9t={class:"overview-icon"},y9t={class:"overview-content"},b9t={class:"overview-value"},_9t={class:"statistics-section"},w9t={class:"card-header"},C9t={class:"time-filter"},x9t={class:"statistics-content"},S9t={class:"filter-section"},D9t={class:"filter-content"},E9t={class:"filter-left"},k9t={class:"filter-right"},A9t={class:"billing-records"},T9t={class:"card-header"},O9t={class:"record-stats"},F9t={class:"model-name"},I9t=["title"],M9t={class:"pagination-container"},P9t={key:0,class:"record-details"},$9t={class:"details-grid"},B9t={class:"detail-item"},R9t={class:"detail-item"},N9t={class:"detail-item"},L9t={class:"detail-item"},U9t={class:"detail-item"},V9t={class:"detail-item"},z9t={class:"detail-item"},j9t={class:"content-section"},H9t={class:"content-header"},W9t={class:"content-box"},q9t={key:0,class:"response-section"},K9t={class:"content-header"},G9t={class:"content-box"},Y9t={__name:"TokenBilling",setup(e){const t=X("7d"),n=X("all"),r=X("all"),o=X([]),a=X(""),i=X(1),s=X(20),l=X(!1),u=X(null),c=K(()=>pl.getTodayStats()),d=K(()=>c.value.tokenCount),f=K(()=>pl.getUsageStats()),h=K(()=>f.value.totalInputTokens),g=K(()=>f.value.totalOutputTokens),p=K(()=>h.value+g.value),m=X([]),v=()=>{try{m.value=pl.getBillingRecords(),m.value.length===0&&console.log("暂无使用记录")}catch(R){console.error("加载使用记录失败:",R),m.value=[]}},y=K(()=>{let R=m.value;if(n.value!=="all"&&(R=R.filter(z=>z.type===n.value)),r.value!=="all"&&(R=R.filter(z=>z.model.toLowerCase().includes(r.value))),o.value&&o.value.length===2){const[z,M]=o.value;R=R.filter(N=>{const L=new Date(N.timestamp);return L>=z&&L<=M})}if(a.value){const z=a.value.toLowerCase();R=R.filter(M=>M.content.toLowerCase().includes(z)||M.response&&M.response.toLowerCase().includes(z))}return R.sort((z,M)=>new Date(M.timestamp)-new Date(z.timestamp))}),_=K(()=>{const R=(i.value-1)*s.value,z=R+s.value;return y.value.slice(R,z)}),C=K(()=>y.value.reduce((R,z)=>R+z.totalTokens,0)),S=R=>R.toLocaleString(),E=R=>new Date(R).toLocaleString("zh-CN"),k=R=>({generation:"primary",polish:"success",outline:"warning",chat:"info"})[R]||"default",O=R=>({generation:"文本生成",polish:"文本润色",outline:"大纲生成",chat:"对话聊天"})[R]||"未知",T=R=>({success:"success",failed:"danger",pending:"warning"})[R]||"default",P=R=>({success:"成功",failed:"失败",pending:"处理中"})[R]||"未知",U=()=>{try{const R=pl.exportBillingData("csv"),z=new Blob([R],{type:"text/csv;charset=utf-8;"}),M=document.createElement("a"),N=URL.createObjectURL(z);M.setAttribute("href",N),M.setAttribute("download",`token_usage_${new Date().toISOString().slice(0,10)}.csv`),M.style.visibility="hidden",document.body.appendChild(M),M.click(),document.body.removeChild(M),Ie.success("使用统计导出成功!")}catch(R){console.error("导出失败:",R),Ie.error("导出失败,请重试")}},F=R=>{u.value=R,l.value=!0},H=async R=>{try{await navigator.clipboard.writeText(R),Ie.success("内容已复制到剪贴板")}catch{const M=document.createElement("textarea");M.value=R,document.body.appendChild(M),M.select(),document.execCommand("copy"),document.body.removeChild(M),Ie.success("内容已复制到剪贴板")}};return Kt(()=>{v()}),(R,z)=>{const M=Tt,N=Br,L=uc,V=r1,Y=s1,$=bT,B=w_,W=bs,J=ii,oe=qL,ie=fo,Z=dEe,de=Si,we=cEe,Be=ADe,ke=Js;return I(),j("div",e9t,[w("div",t9t,[z[11]||(z[11]=w("div",{class:"header-content"},[w("h1",null,"📊 Token使用统计"),w("p",null,"查看API Token使用情况和统计数据")],-1)),w("div",n9t,[D(N,{onClick:U},{default:A(()=>[D(M,null,{default:A(()=>[D(b(qu))]),_:1}),z[10]||(z[10]=ce(" 导出统计 "))]),_:1,__:[10]})])]),w("div",r9t,[D(Y,{gutter:20},{default:A(()=>[D(V,{span:6},{default:A(()=>[D(L,{class:"overview-card usage"},{default:A(()=>[w("div",o9t,[w("div",a9t,[D(M,null,{default:A(()=>[D(b(ML))]),_:1})]),w("div",i9t,[w("div",s9t,se(S(d.value)),1),z[12]||(z[12]=w("div",{class:"overview-label"},"今日Token",-1))])])]),_:1})]),_:1}),D(V,{span:6},{default:A(()=>[D(L,{class:"overview-card input"},{default:A(()=>[w("div",l9t,[w("div",u9t,[D(M,null,{default:A(()=>[D(b(fT))]),_:1})]),w("div",c9t,[w("div",d9t,se(S(h.value)),1),z[13]||(z[13]=w("div",{class:"overview-label"},"输入Token",-1))])])]),_:1})]),_:1}),D(V,{span:6},{default:A(()=>[D(L,{class:"overview-card output"},{default:A(()=>[w("div",f9t,[w("div",h9t,[D(M,null,{default:A(()=>[D(b(qu))]),_:1})]),w("div",p9t,[w("div",g9t,se(S(g.value)),1),z[14]||(z[14]=w("div",{class:"overview-label"},"输出Token",-1))])])]),_:1})]),_:1}),D(V,{span:6},{default:A(()=>[D(L,{class:"overview-card total"},{default:A(()=>[w("div",v9t,[w("div",m9t,[D(M,null,{default:A(()=>[D(b(Xne))]),_:1})]),w("div",y9t,[w("div",b9t,se(S(p.value)),1),z[15]||(z[15]=w("div",{class:"overview-label"},"总Token数",-1))])])]),_:1})]),_:1})]),_:1})]),w("div",_9t,[D(L,null,{header:A(()=>[w("div",w9t,[z[19]||(z[19]=w("h3",null,"📊 使用趋势",-1)),w("div",C9t,[D(B,{modelValue:t.value,"onUpdate:modelValue":z[0]||(z[0]=ae=>t.value=ae),size:"small"},{default:A(()=>[D($,{label:"7d"},{default:A(()=>z[16]||(z[16]=[ce("最近7天")])),_:1,__:[16]}),D($,{label:"30d"},{default:A(()=>z[17]||(z[17]=[ce("最近30天")])),_:1,__:[17]}),D($,{label:"90d"},{default:A(()=>z[18]||(z[18]=[ce("最近90天")])),_:1,__:[18]})]),_:1},8,["modelValue"])])])]),default:A(()=>[w("div",x9t,[D(Y,{gutter:20},{default:A(()=>[D(V,{span:12},{default:A(()=>z[20]||(z[20]=[w("div",{class:"chart-container"},[w("h4",null,"Token使用趋势"),w("div",{class:"chart-placeholder"},[w("p",null,"Token使用趋势图(可集成 ECharts)")])],-1)])),_:1,__:[20]}),D(V,{span:12},{default:A(()=>z[21]||(z[21]=[w("div",{class:"chart-container"},[w("h4",null,"输入/输出Token分布"),w("div",{class:"chart-placeholder"},[w("p",null,"输入/输出Token分布图(可集成 ECharts)")])],-1)])),_:1,__:[21]})]),_:1})])]),_:1})]),w("div",S9t,[D(L,{shadow:"never"},{default:A(()=>[w("div",D9t,[w("div",E9t,[D(J,{modelValue:n.value,"onUpdate:modelValue":z[1]||(z[1]=ae=>n.value=ae),placeholder:"类型筛选",style:{width:"120px"}},{default:A(()=>[D(W,{label:"全部",value:"all"}),D(W,{label:"文本生成",value:"generation"}),D(W,{label:"文本润色",value:"polish"}),D(W,{label:"大纲生成",value:"outline"}),D(W,{label:"对话聊天",value:"chat"})]),_:1},8,["modelValue"]),D(J,{modelValue:r.value,"onUpdate:modelValue":z[2]||(z[2]=ae=>r.value=ae),placeholder:"模型筛选",style:{width:"140px"}},{default:A(()=>[D(W,{label:"全部模型",value:"all"}),D(W,{label:"GPT-4",value:"gpt-4"}),D(W,{label:"GPT-3.5",value:"gpt-3.5"}),D(W,{label:"Claude",value:"claude"}),D(W,{label:"文心一言",value:"wenxin"})]),_:1},8,["modelValue"]),D(oe,{modelValue:o.value,"onUpdate:modelValue":z[3]||(z[3]=ae=>o.value=ae),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",style:{width:"240px"}},null,8,["modelValue"])]),w("div",k9t,[D(ie,{modelValue:a.value,"onUpdate:modelValue":z[4]||(z[4]=ae=>a.value=ae),placeholder:"搜索请求内容...",clearable:"",style:{width:"250px"}},{prefix:A(()=>[D(M,null,{default:A(()=>[D(b(dT))]),_:1})]),_:1},8,["modelValue"])])])]),_:1})]),w("div",A9t,[D(L,null,{header:A(()=>[w("div",T9t,[z[22]||(z[22]=w("h3",null,"📋 使用记录",-1)),w("div",O9t,[w("span",null,"共 "+se(y.value.length)+" 条记录",1),w("span",null,"总Token: "+se(S(C.value)),1)])])]),default:A(()=>[D(we,{data:_.value,stripe:"",style:{width:"100%"},onRowClick:F},{default:A(()=>[D(Z,{prop:"timestamp",label:"时间",width:"160"},{default:A(({row:ae})=>[ce(se(E(ae.timestamp)),1)]),_:1}),D(Z,{prop:"type",label:"类型",width:"100"},{default:A(({row:ae})=>[D(de,{type:k(ae.type),size:"small"},{default:A(()=>[ce(se(O(ae.type)),1)]),_:2},1032,["type"])]),_:1}),D(Z,{prop:"model",label:"模型",width:"120"},{default:A(({row:ae})=>[w("span",F9t,se(ae.model),1)]),_:1}),D(Z,{prop:"content",label:"请求内容","min-width":"300"},{default:A(({row:ae})=>[w("div",{class:"content-preview",title:ae.content},se(ae.content.substring(0,100))+se(ae.content.length>100?"...":""),9,I9t)]),_:1}),D(Z,{prop:"inputTokens",label:"输入Token",width:"100",align:"right"},{default:A(({row:ae})=>[ce(se(S(ae.inputTokens)),1)]),_:1}),D(Z,{prop:"outputTokens",label:"输出Token",width:"100",align:"right"},{default:A(({row:ae})=>[ce(se(S(ae.outputTokens)),1)]),_:1}),D(Z,{prop:"totalTokens",label:"总Token",width:"100",align:"right"},{default:A(({row:ae})=>[ce(se(S(ae.totalTokens)),1)]),_:1}),D(Z,{prop:"status",label:"状态",width:"80"},{default:A(({row:ae})=>[D(de,{type:T(ae.status),size:"small"},{default:A(()=>[ce(se(P(ae.status)),1)]),_:2},1032,["type"])]),_:1}),D(Z,{label:"操作",width:"100",fixed:"right"},{default:A(({row:ae})=>[D(N,{type:"text",size:"small",onClick:zt(le=>F(ae),["stop"])},{default:A(()=>z[23]||(z[23]=[ce(" 详情 ")])),_:2,__:[23]},1032,["onClick"])]),_:1})]),_:1},8,["data"]),w("div",M9t,[D(Be,{"current-page":i.value,"onUpdate:currentPage":z[5]||(z[5]=ae=>i.value=ae),"page-size":s.value,"onUpdate:pageSize":z[6]||(z[6]=ae=>s.value=ae),"page-sizes":[10,20,50,100],total:y.value.length,layout:"total, sizes, prev, pager, next, jumper"},null,8,["current-page","page-size","total"])])]),_:1})]),D(ke,{modelValue:l.value,"onUpdate:modelValue":z[9]||(z[9]=ae=>l.value=ae),title:"使用记录详情",width:"700px"},{default:A(()=>[u.value?(I(),j("div",P9t,[w("div",$9t,[w("div",B9t,[z[24]||(z[24]=w("label",null,"请求时间:",-1)),w("span",null,se(E(u.value.timestamp)),1)]),w("div",R9t,[z[25]||(z[25]=w("label",null,"请求类型:",-1)),D(de,{type:k(u.value.type)},{default:A(()=>[ce(se(O(u.value.type)),1)]),_:1},8,["type"])]),w("div",N9t,[z[26]||(z[26]=w("label",null,"使用模型:",-1)),w("span",null,se(u.value.model),1)]),w("div",L9t,[z[27]||(z[27]=w("label",null,"请求状态:",-1)),D(de,{type:T(u.value.status)},{default:A(()=>[ce(se(P(u.value.status)),1)]),_:1},8,["type"])]),w("div",U9t,[z[28]||(z[28]=w("label",null,"输入Token:",-1)),w("span",null,se(S(u.value.inputTokens)),1)]),w("div",V9t,[z[29]||(z[29]=w("label",null,"输出Token:",-1)),w("span",null,se(S(u.value.outputTokens)),1)]),w("div",z9t,[z[30]||(z[30]=w("label",null,"总Token:",-1)),w("span",null,se(S(u.value.totalTokens)),1)])]),w("div",j9t,[w("div",H9t,[z[32]||(z[32]=w("h4",null,"请求内容",-1)),D(N,{size:"small",onClick:z[7]||(z[7]=ae=>H(u.value.content))},{default:A(()=>[D(M,null,{default:A(()=>[D(b(cb))]),_:1}),z[31]||(z[31]=ce(" 复制 "))]),_:1,__:[31]})]),w("div",W9t,se(u.value.content),1)]),u.value.response?(I(),j("div",q9t,[w("div",K9t,[z[34]||(z[34]=w("h4",null,"响应内容",-1)),D(N,{size:"small",onClick:z[8]||(z[8]=ae=>H(u.value.response))},{default:A(()=>[D(M,null,{default:A(()=>[D(b(cb))]),_:1}),z[33]||(z[33]=ce(" 复制 "))]),_:1,__:[33]})]),w("div",G9t,se(u.value.response),1)])):be("",!0)])):be("",!0)]),_:1},8,["modelValue"])])}}},X9t=Cs(Y9t,[["__scopeId","data-v-bda4e3ab"]]);const J9t={class:"api-config"},Z9t={class:"page-header"},Q9t={class:"header-actions"},eAt={class:"config-overview"},tAt={class:"status-item"},nAt={class:"status-icon success"},rAt={class:"status-content"},oAt={class:"status-value"},aAt={class:"status-item"},iAt={class:"status-icon warning"},sAt={class:"status-content"},lAt={class:"status-value"},uAt={class:"status-item"},cAt={class:"status-icon info"},dAt={class:"status-content"},fAt={class:"status-value"},hAt={class:"status-item"},pAt={class:"status-icon primary"},gAt={class:"status-content"},vAt={class:"status-value"},mAt={class:"config-list"},yAt={class:"card-header"},bAt={class:"config-tabs"},_At={class:"config-content"},wAt={class:"config-section"},CAt={class:"config-section"},xAt={class:"config-section"},SAt={class:"max-tokens-control"},DAt={class:"config-section"},EAt={class:"config-actions"},kAt={class:"preset-templates"},AAt={class:"template-grid"},TAt=["onClick"],OAt={class:"template-icon"},FAt={class:"template-content"},IAt={class:"template-tags"},MAt={class:"import-export"},PAt={class:"import-export-actions"},$At={class:"action-group"},BAt={class:"action-group"},RAt={class:"action-group"},NAt={__name:"ApiConfig",setup(e){const t=X("1"),n=X([]),r=X([{id:"openai-gpt4",name:"OpenAI GPT-4",icon:"🤖",description:"最强大的通用AI模型,适合复杂创作任务",tags:["通用","强大","创意"],config:{type:"openai",apiUrl:"api.openai.com/v1/chat/completions",model:"gpt-4",temperature:.7,maxTokens:null}},{id:"openai-gpt35",name:"OpenAI GPT-3.5",icon:"⚡",description:"快速响应,成本较低,适合日常写作",tags:["快速","经济","实用"],config:{type:"openai",apiUrl:"api.openai.com/v1/chat/completions",model:"gpt-3.5-turbo",temperature:.7,maxTokens:null}},{id:"claude-3",name:"Claude 3 Sonnet",icon:"🎭",description:"擅长长文本处理和创意写作",tags:["创意","长文本","细腻"],config:{type:"claude",apiUrl:"api.anthropic.com/v1/messages",model:"claude-3-sonnet-20240229",temperature:.7,maxTokens:null}},{id:"wenxin",name:"文心一言",icon:"🇨🇳",description:"中文优化,理解中文语境更准确",tags:["中文","本土","语境"],config:{type:"wenxin",apiUrl:"aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions",model:"ERNIE-Bot-4",temperature:.7,maxTokens:null}},{id:"qwen",name:"通义千问",icon:"🌟",description:"阿里云通义千问,多模态能力强",tags:["多模态","智能","全面"],config:{type:"qwen",apiUrl:"dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation",model:"qwen-max",temperature:.7,maxTokens:null}},{id:"zhipu",name:"智谱AI",icon:"🧠",description:"清华智谱AI,代码和逻辑能力突出",tags:["逻辑","代码","推理"],config:{type:"zhipu",apiUrl:"open.bigmodel.cn/api/paas/v4/chat/completions",model:"glm-4",temperature:.7,maxTokens:null}}]),o=K(()=>n.value.filter(O=>O.enabled&&O.apiKey).length),a=K(()=>n.value.filter(O=>!O.apiKey).length),i=K(()=>n.value.filter(O=>O.status==="connected").length),s=K(()=>{const O=n.value.find(T=>T.isDefault);return O?O.name:"未设置"}),l=O=>({connected:"success",disconnected:"danger",connecting:"warning",error:"danger"})[O]||"info",u=O=>({connected:"CircleCheck",disconnected:"CircleClose",connecting:"Loading",error:"Warning"})[O]||"Question",c=O=>({connected:"已连接",disconnected:"未连接",connecting:"连接中",error:"连接错误"})[O]||"未知",d=()=>{const O=String(Date.now()),T={id:O,name:"新配置",type:"custom",description:"",apiUrl:"",apiKey:"",model:"",temperature:.7,maxTokens:2e6,unlimitedTokens:!1,topP:1,frequencyPenalty:0,presencePenalty:0,timeout:30,isDefault:!1,enabled:!1,streamMode:!0,retryCount:3,priority:n.value.length+1,customHeaders:"",status:"disconnected"};n.value.push(T),t.value=O,Ie.success("已添加新配置")},f=async O=>{if(!O.apiKey||!O.apiUrl){Ie.warning("请先填写API地址和密钥");return}O.status="connecting",Ie.info("正在测试连接..."),setTimeout(()=>{const T=Math.random()>.3;O.status=T?"connected":"error",T?Ie.success(`${O.name} 连接测试成功`):Ie.error(`${O.name} 连接测试失败`)},2e3)},h=async()=>{const O=n.value.filter(T=>T.enabled&&T.apiKey);if(O.length===0){Ie.warning("没有可测试的配置");return}Ie.info(`正在测试 ${O.length} 个配置的连接...`);for(const T of O)await f(T),await new Promise(P=>setTimeout(P,500))},g=O=>{if(!O.name||!O.apiUrl){Ie.warning("请填写配置名称和API地址");return}O.isDefault&&n.value.forEach(T=>{T.id!==O.id&&(T.isDefault=!1)}),Ie.success(`${O.name} 配置已保存`)},p=()=>{const O=n.value.filter(T=>T.name&&T.apiUrl);if(O.length===0){Ie.warning("没有有效的配置可保存");return}localStorage.setItem("aiApiConfigs",JSON.stringify(n.value)),Ie.success(`已保存 ${O.length} 个配置`)},m=O=>{uo.confirm("确定要重置此配置吗?所有设置将恢复为默认值。","重置配置",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{Object.assign(O,{temperature:.7,maxTokens:null,topP:1,frequencyPenalty:0,presencePenalty:0,timeout:30,streamMode:!0,retryCount:3,customHeaders:"",status:"disconnected"}),Ie.success("配置已重置")})},v=O=>{O.unlimitedTokens?O.maxTokens=null:O.maxTokens=2e6},y=O=>{const T=String(Date.now()),P={...O,id:T,name:`${O.name} (副本)`,isDefault:!1,status:"disconnected"};n.value.push(P),t.value=T,Ie.success("配置已复制")},_=O=>{const T=n.value.find(P=>P.id===O);if(T.isDefault){Ie.warning("不能删除默认配置");return}uo.confirm(`确定要删除配置 "${T.name}" 吗?此操作不可恢复。`,"删除配置",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{const P=n.value.findIndex(U=>U.id===O);n.value.splice(P,1),t.value===O&&n.value.length>0&&(t.value=n.value[0].id),Ie.success("配置已删除")})},C=O=>{uo.confirm(`确定要应用模板 "${O.name}" 吗?这将创建一个新的配置。`,"应用模板",{confirmButtonText:"确定",cancelButtonText:"取消",type:"info"}).then(()=>{const T=String(Date.now()),P={id:T,name:O.name,description:O.description,...O.config,unlimitedTokens:O.config.maxTokens===null,topP:1,frequencyPenalty:0,presencePenalty:0,timeout:30,isDefault:!1,enabled:!1,streamMode:!0,retryCount:3,priority:n.value.length+1,customHeaders:"",status:"disconnected",apiKey:""};n.value.push(P),t.value=T,Ie.success(`已应用模板 "${O.name}"`)})},S=()=>{const O=n.value.map(F=>({...F,apiKey:""})),T=JSON.stringify(O,null,2),P=new Blob([T],{type:"application/json"}),U=document.createElement("a");U.href=URL.createObjectURL(P),U.download=`ai-api-configs-${new Date().toISOString().split("T")[0]}.json`,U.click(),Ie.success("配置已导出")},E=O=>{const T=new FileReader;return T.onload=P=>{try{const U=JSON.parse(P.target.result);if(!Array.isArray(U))throw new Error("无效的配置文件格式");uo.confirm(`确定要导入 ${U.length} 个配置吗?这将覆盖现有配置。`,"导入配置",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{n.value=U.map((F,H)=>({...F,id:String(Date.now()+H),status:"disconnected"})),n.value.length>0&&(t.value=n.value[0].id),Ie.success(`已导入 ${U.length} 个配置`)})}catch{Ie.error("配置文件格式错误")}},T.readAsText(O),!1},k=()=>{uo.confirm("确定要重置所有配置吗?这将删除所有自定义配置并恢复默认设置。","重置所有配置",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{n.value=[{id:"1",name:"OpenAI GPT-4",type:"openai",description:"OpenAI GPT-4 模型配置",apiUrl:"api.openai.com/v1/chat/completions",apiKey:"",model:"gpt-4",temperature:.7,maxTokens:null,unlimitedTokens:!0,topP:1,frequencyPenalty:0,presencePenalty:0,timeout:30,isDefault:!0,enabled:!0,streamMode:!0,retryCount:3,priority:1,customHeaders:"",status:"disconnected"}],t.value="1",Ie.success("所有配置已重置")})};return Kt(()=>{const O=localStorage.getItem("aiApiConfigs");if(O)try{const T=JSON.parse(O);n.value=T.map(P=>({...P,unlimitedTokens:P.unlimitedTokens!==void 0?P.unlimitedTokens:P.maxTokens===null})),n.value.length>0&&(t.value=n.value[0].id)}catch(T){console.error("加载配置失败:",T)}}),(O,T)=>{const P=Tt,U=Br,F=uc,H=r1,R=s1,z=fo,M=_f,N=bs,L=ii,V=Si,Y=CT,$=Xi,B=Kg,W=u1,J=l1,oe=AT;return I(),j("div",J9t,[w("div",Z9t,[T[3]||(T[3]=w("div",{class:"header-content"},[w("h1",null,"⚙️ API配置"),w("p",null,"管理AI模型接口配置和参数设置")],-1)),w("div",Q9t,[D(U,{onClick:h},{default:A(()=>[D(P,null,{default:A(()=>[D(b(L5))]),_:1}),T[1]||(T[1]=ce(" 测试所有连接 "))]),_:1,__:[1]}),D(U,{type:"primary",onClick:p},{default:A(()=>[D(P,null,{default:A(()=>[D(b(Za))]),_:1}),T[2]||(T[2]=ce(" 保存配置 "))]),_:1,__:[2]})])]),w("div",eAt,[D(R,{gutter:20},{default:A(()=>[D(H,{span:6},{default:A(()=>[D(F,{class:"status-card"},{default:A(()=>[w("div",tAt,[w("div",nAt,[D(P,null,{default:A(()=>[D(b(cT))]),_:1})]),w("div",rAt,[w("div",oAt,se(o.value),1),T[4]||(T[4]=w("div",{class:"status-label"},"已配置",-1))])])]),_:1})]),_:1}),D(H,{span:6},{default:A(()=>[D(F,{class:"status-card"},{default:A(()=>[w("div",aAt,[w("div",iAt,[D(P,null,{default:A(()=>[D(b(C5e))]),_:1})]),w("div",sAt,[w("div",lAt,se(a.value),1),T[5]||(T[5]=w("div",{class:"status-label"},"待配置",-1))])])]),_:1})]),_:1}),D(H,{span:6},{default:A(()=>[D(F,{class:"status-card"},{default:A(()=>[w("div",uAt,[w("div",cAt,[D(P,null,{default:A(()=>[D(b(L5))]),_:1})]),w("div",dAt,[w("div",fAt,se(i.value),1),T[6]||(T[6]=w("div",{class:"status-label"},"连接正常",-1))])])]),_:1})]),_:1}),D(H,{span:6},{default:A(()=>[D(F,{class:"status-card"},{default:A(()=>[w("div",hAt,[w("div",pAt,[D(P,null,{default:A(()=>[D(b(Ld))]),_:1})]),w("div",gAt,[w("div",vAt,se(s.value),1),T[7]||(T[7]=w("div",{class:"status-label"},"默认模型",-1))])])]),_:1})]),_:1})]),_:1})]),w("div",mAt,[D(F,null,{header:A(()=>[w("div",yAt,[T[9]||(T[9]=w("h3",null,"🤖 AI模型配置",-1)),D(U,{type:"primary",onClick:d},{default:A(()=>[D(P,null,{default:A(()=>[D(b(ea))]),_:1}),T[8]||(T[8]=ce(" 添加配置 "))]),_:1,__:[8]})])]),default:A(()=>[w("div",bAt,[D(J,{modelValue:t.value,"onUpdate:modelValue":T[0]||(T[0]=ie=>t.value=ie),type:"border-card"},{default:A(()=>[(I(!0),j(tt,null,wt(n.value,ie=>(I(),Oe(W,{key:ie.id,label:ie.name,name:ie.id},{default:A(()=>[w("div",_At,[w("div",wAt,[T[10]||(T[10]=w("h4",null,"📋 基本信息",-1)),D(R,{gutter:20},{default:A(()=>[D(H,{span:12},{default:A(()=>[D(M,{label:"配置名称"},{default:A(()=>[D(z,{modelValue:ie.name,"onUpdate:modelValue":Z=>ie.name=Z,placeholder:"请输入配置名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024),D(H,{span:12},{default:A(()=>[D(M,{label:"模型类型"},{default:A(()=>[D(L,{modelValue:ie.type,"onUpdate:modelValue":Z=>ie.type=Z,placeholder:"选择模型类型"},{default:A(()=>[D(N,{label:"OpenAI GPT",value:"openai"}),D(N,{label:"Claude",value:"claude"}),D(N,{label:"文心一言",value:"wenxin"}),D(N,{label:"通义千问",value:"qwen"}),D(N,{label:"智谱AI",value:"zhipu"}),D(N,{label:"自定义",value:"custom"})]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),D(R,{gutter:20},{default:A(()=>[D(H,{span:24},{default:A(()=>[D(M,{label:"描述"},{default:A(()=>[D(z,{modelValue:ie.description,"onUpdate:modelValue":Z=>ie.description=Z,type:"textarea",rows:2,placeholder:"请输入配置描述"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024)]),w("div",CAt,[T[12]||(T[12]=w("h4",null,"🔗 连接配置",-1)),D(R,{gutter:20},{default:A(()=>[D(H,{span:24},{default:A(()=>[D(M,{label:"API地址"},{default:A(()=>[D(z,{modelValue:ie.apiUrl,"onUpdate:modelValue":Z=>ie.apiUrl=Z,placeholder:"请输入API地址"},{prepend:A(()=>T[11]||(T[11]=[ce("HTTPS://")])),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),D(R,{gutter:20},{default:A(()=>[D(H,{span:24},{default:A(()=>[D(M,{label:"API密钥"},{default:A(()=>[D(z,{modelValue:ie.apiKey,"onUpdate:modelValue":Z=>ie.apiKey=Z,type:"password",placeholder:"请输入API密钥","show-password":""},{append:A(()=>[D(U,{onClick:Z=>f(ie)},{default:A(()=>[D(P,null,{default:A(()=>[D(b(L5))]),_:1})]),_:2},1032,["onClick"])]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),D(R,{gutter:20},{default:A(()=>[D(H,{span:12},{default:A(()=>[D(M,{label:"模型名称"},{default:A(()=>[D(z,{modelValue:ie.model,"onUpdate:modelValue":Z=>ie.model=Z,placeholder:"如:gpt-4, claude-3"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024),D(H,{span:12},{default:A(()=>[D(M,{label:"连接状态"},{default:A(()=>[D(V,{type:l(ie.status),icon:u(ie.status)},{default:A(()=>[ce(se(c(ie.status)),1)]),_:2},1032,["type","icon"])]),_:2},1024)]),_:2},1024)]),_:2},1024)]),w("div",xAt,[T[14]||(T[14]=w("h4",null,"🎛️ 模型参数",-1)),D(R,{gutter:20},{default:A(()=>[D(H,{span:8},{default:A(()=>[D(M,{label:"温度 (Temperature)"},{default:A(()=>[D(Y,{modelValue:ie.temperature,"onUpdate:modelValue":Z=>ie.temperature=Z,min:0,max:2,step:.1,"show-input":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024),D(H,{span:8},{default:A(()=>[D(M,{label:"最大Token数"},{default:A(()=>[w("div",SAt,[D($,{modelValue:ie.unlimitedTokens,"onUpdate:modelValue":Z=>ie.unlimitedTokens=Z,onChange:Z=>v(ie),style:{"margin-bottom":"8px"}},{default:A(()=>T[13]||(T[13]=[ce(" 无限制 ")])),_:2,__:[13]},1032,["modelValue","onUpdate:modelValue","onChange"]),D(B,{modelValue:ie.maxTokens,"onUpdate:modelValue":Z=>ie.maxTokens=Z,min:1,max:1e7,step:1e3,disabled:ie.unlimitedTokens,placeholder:"无限制"},null,8,["modelValue","onUpdate:modelValue","disabled"])])]),_:2},1024)]),_:2},1024),D(H,{span:8},{default:A(()=>[D(M,{label:"Top P"},{default:A(()=>[D(Y,{modelValue:ie.topP,"onUpdate:modelValue":Z=>ie.topP=Z,min:0,max:1,step:.1,"show-input":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),D(R,{gutter:20},{default:A(()=>[D(H,{span:8},{default:A(()=>[D(M,{label:"频率惩罚"},{default:A(()=>[D(Y,{modelValue:ie.frequencyPenalty,"onUpdate:modelValue":Z=>ie.frequencyPenalty=Z,min:-2,max:2,step:.1,"show-input":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024),D(H,{span:8},{default:A(()=>[D(M,{label:"存在惩罚"},{default:A(()=>[D(Y,{modelValue:ie.presencePenalty,"onUpdate:modelValue":Z=>ie.presencePenalty=Z,min:-2,max:2,step:.1,"show-input":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024),D(H,{span:8},{default:A(()=>[D(M,{label:"超时时间(秒)"},{default:A(()=>[D(B,{modelValue:ie.timeout,"onUpdate:modelValue":Z=>ie.timeout=Z,min:5,max:300,step:5},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024)]),w("div",DAt,[T[18]||(T[18]=w("h4",null,"🔧 高级设置",-1)),D(R,{gutter:20},{default:A(()=>[D(H,{span:12},{default:A(()=>[D(M,null,{default:A(()=>[D($,{modelValue:ie.isDefault,"onUpdate:modelValue":Z=>ie.isDefault=Z},{default:A(()=>T[15]||(T[15]=[ce("设为默认模型")])),_:2,__:[15]},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),D(M,null,{default:A(()=>[D($,{modelValue:ie.enabled,"onUpdate:modelValue":Z=>ie.enabled=Z},{default:A(()=>T[16]||(T[16]=[ce("启用此配置")])),_:2,__:[16]},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),D(M,null,{default:A(()=>[D($,{modelValue:ie.streamMode,"onUpdate:modelValue":Z=>ie.streamMode=Z},{default:A(()=>T[17]||(T[17]=[ce("启用流式输出")])),_:2,__:[17]},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024),D(H,{span:12},{default:A(()=>[D(M,{label:"重试次数"},{default:A(()=>[D(B,{modelValue:ie.retryCount,"onUpdate:modelValue":Z=>ie.retryCount=Z,min:0,max:5},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),D(M,{label:"优先级"},{default:A(()=>[D(B,{modelValue:ie.priority,"onUpdate:modelValue":Z=>ie.priority=Z,min:1,max:10},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),D(R,{gutter:20},{default:A(()=>[D(H,{span:24},{default:A(()=>[D(M,{label:"自定义Headers"},{default:A(()=>[D(z,{modelValue:ie.customHeaders,"onUpdate:modelValue":Z=>ie.customHeaders=Z,type:"textarea",rows:3,placeholder:"JSON格式,如:{'User-Agent': 'MyApp/1.0'}"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024)]),w("div",EAt,[D(U,{onClick:Z=>m(ie)},{default:A(()=>T[19]||(T[19]=[ce("重置")])),_:2,__:[19]},1032,["onClick"]),D(U,{onClick:Z=>y(ie)},{default:A(()=>T[20]||(T[20]=[ce("复制配置")])),_:2,__:[20]},1032,["onClick"]),D(U,{type:"warning",onClick:Z=>f(ie)},{default:A(()=>[D(P,null,{default:A(()=>[D(b(L5))]),_:1}),T[21]||(T[21]=ce(" 测试连接 "))]),_:2,__:[21]},1032,["onClick"]),D(U,{type:"primary",onClick:Z=>g(ie)},{default:A(()=>[D(P,null,{default:A(()=>[D(b(Za))]),_:1}),T[22]||(T[22]=ce(" 保存配置 "))]),_:2,__:[22]},1032,["onClick"]),D(U,{type:"danger",onClick:Z=>_(ie.id),disabled:ie.isDefault},{default:A(()=>[D(P,null,{default:A(()=>[D(b(Ws))]),_:1}),T[23]||(T[23]=ce(" 删除 "))]),_:2,__:[23]},1032,["onClick","disabled"])])])]),_:2},1032,["label","name"]))),128))]),_:1},8,["modelValue"])])]),_:1})]),w("div",kAt,[D(F,null,{header:A(()=>T[24]||(T[24]=[w("h3",null,"📦 预设模板",-1)])),default:A(()=>[w("div",AAt,[(I(!0),j(tt,null,wt(r.value,ie=>(I(),j("div",{key:ie.id,class:"template-card",onClick:Z=>C(ie)},[w("div",OAt,se(ie.icon),1),w("div",FAt,[w("h4",null,se(ie.name),1),w("p",null,se(ie.description),1),w("div",IAt,[(I(!0),j(tt,null,wt(ie.tags,Z=>(I(),Oe(V,{key:Z,size:"small",type:"info"},{default:A(()=>[ce(se(Z),1)]),_:2},1024))),128))])])],8,TAt))),128))])]),_:1})]),w("div",MAt,[D(F,null,{header:A(()=>T[25]||(T[25]=[w("h3",null,"📁 导入导出",-1)])),default:A(()=>[w("div",PAt,[w("div",$At,[T[27]||(T[27]=w("h4",null,"导出配置",-1)),T[28]||(T[28]=w("p",null,"将当前所有配置导出为JSON文件",-1)),D(U,{onClick:S},{default:A(()=>[D(P,null,{default:A(()=>[D(b(qu))]),_:1}),T[26]||(T[26]=ce(" 导出配置 "))]),_:1,__:[26]})]),w("div",BAt,[T[30]||(T[30]=w("h4",null,"导入配置",-1)),T[31]||(T[31]=w("p",null,"从JSON文件导入配置(会覆盖现有配置)",-1)),D(oe,{"before-upload":E,"show-file-list":!1,accept:".json"},{default:A(()=>[D(U,null,{default:A(()=>[D(P,null,{default:A(()=>[D(b(fT))]),_:1}),T[29]||(T[29]=ce(" 选择文件 "))]),_:1,__:[29]})]),_:1})]),w("div",RAt,[T[33]||(T[33]=w("h4",null,"重置所有",-1)),T[34]||(T[34]=w("p",null,"重置所有配置为默认值(谨慎操作)",-1)),D(U,{type:"danger",onClick:k},{default:A(()=>[D(P,null,{default:A(()=>[D(b(Gne))]),_:1}),T[32]||(T[32]=ce(" 重置所有 "))]),_:1,__:[32]})])])]),_:1})])])}}},LAt=Cs(NAt,[["__scopeId","data-v-4a36dc73"]]);const UAt={class:"settings-page"},VAt={class:"settings-content"},zAt={class:"card-header"},jAt={class:"data-management"},HAt={class:"data-overview"},WAt={class:"data-stats"},qAt={class:"stat-item"},KAt={class:"stat-value"},GAt={class:"stat-item"},YAt={class:"stat-value"},XAt={class:"stat-item"},JAt={class:"stat-value"},ZAt={class:"stat-item"},QAt={class:"stat-value"},eTt={class:"stat-item"},tTt={class:"stat-value"},nTt={class:"data-section"},rTt={class:"data-actions"},oTt={class:"data-section"},aTt={class:"data-actions"},iTt={class:"data-section"},sTt={class:"data-actions"},lTt={class:"about-content"},uTt={class:"import-options"},cTt={__name:"Settings",setup(e){const t=X("api"),n=X(!1),r=X(["novels","prompts","novelGenres","writingGoals"]),o=X({novels:0,prompts:0,genres:0,goals:0,size:"0KB"}),a=()=>{Ie.info("正在测试所有API连接...")},i=()=>{try{const v=JSON.parse(localStorage.getItem("novels")||"[]"),y=JSON.parse(localStorage.getItem("prompts")||"[]"),_=JSON.parse(localStorage.getItem("novelGenres")||"[]"),C=JSON.parse(localStorage.getItem("writingGoals")||"[]"),S=JSON.stringify({novels:v,prompts:y,genres:_,goals:C}),E=new Blob([S]).size,k=(E/1024).toFixed(1),O=(E/(1024*1024)).toFixed(2);o.value={novels:v.length,prompts:y.length,genres:_.length,goals:C.length,size:E>1024*1024?`${O}MB`:`${k}KB`}}catch(v){console.error("计算数据统计失败:",v)}},s=()=>{const v={novels:JSON.parse(localStorage.getItem("novels")||"[]"),prompts:JSON.parse(localStorage.getItem("prompts")||"[]"),novelGenres:JSON.parse(localStorage.getItem("novelGenres")||"[]"),writingGoals:JSON.parse(localStorage.getItem("writingGoals")||"[]"),settings:{apiConfig:JSON.parse(localStorage.getItem("api-config")||"{}"),tokenUsage:JSON.parse(localStorage.getItem("token-usage")||"{}")},exportTime:new Date().toISOString(),version:"v0.7.0"},y=new Blob([JSON.stringify(v,null,2)],{type:"application/json"}),_=URL.createObjectURL(y),C=document.createElement("a");C.href=_,C.download=`91写作-完整备份-${new Date().toISOString().split("T")[0]}.json`,C.click(),URL.revokeObjectURL(_),Ie.success("完整数据导出成功")},l=()=>{const y={novels:JSON.parse(localStorage.getItem("novels")||"[]"),exportTime:new Date().toISOString(),type:"novels"},_=new Blob([JSON.stringify(y,null,2)],{type:"application/json"}),C=URL.createObjectURL(_),S=document.createElement("a");S.href=C,S.download=`91写作-小说数据-${new Date().toISOString().split("T")[0]}.json`,S.click(),URL.revokeObjectURL(C),Ie.success("小说数据导出成功")},u=()=>{const y={prompts:JSON.parse(localStorage.getItem("prompts")||"[]"),exportTime:new Date().toISOString(),type:"prompts"},_=new Blob([JSON.stringify(y,null,2)],{type:"application/json"}),C=URL.createObjectURL(_),S=document.createElement("a");S.href=C,S.download=`91写作-提示词库-${new Date().toISOString().split("T")[0]}.json`,S.click(),URL.revokeObjectURL(C),Ie.success("提示词库导出成功")},c=()=>{const y={novelGenres:JSON.parse(localStorage.getItem("novelGenres")||"[]"),exportTime:new Date().toISOString(),type:"genres"},_=new Blob([JSON.stringify(y,null,2)],{type:"application/json"}),C=URL.createObjectURL(_),S=document.createElement("a");S.href=C,S.download=`91写作-小说类型-${new Date().toISOString().split("T")[0]}.json`,S.click(),URL.revokeObjectURL(C),Ie.success("小说类型数据导出成功")},d=()=>{const v={apiConfig:JSON.parse(localStorage.getItem("api-config")||"{}"),tokenUsage:JSON.parse(localStorage.getItem("token-usage")||"{}"),exportTime:new Date().toISOString(),type:"settings"},y=new Blob([JSON.stringify(v,null,2)],{type:"application/json"}),_=URL.createObjectURL(y),C=document.createElement("a");C.href=_,C.download=`91写作-系统设置-${new Date().toISOString().split("T")[0]}.json`,C.click(),URL.revokeObjectURL(_),Ie.success("系统设置导出成功")},f=()=>{if(r.value.length===0){Ie.warning("请至少选择一种数据类型进行导入");return}const v=document.createElement("input");v.type="file",v.accept=".json",v.onchange=y=>{const _=y.target.files[0];_&&h(_)},v.click(),n.value=!1},h=v=>{const y=new FileReader;return y.onload=_=>{try{const C=JSON.parse(_.target.result);uo.confirm(`即将导入以下数据类型:${r.value.join("、")}。这将覆盖现有数据,是否继续?`,"确认导入",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{let S=0;r.value.includes("novels")&&C.novels&&(localStorage.setItem("novels",JSON.stringify(C.novels)),S++),r.value.includes("prompts")&&C.prompts&&(localStorage.setItem("prompts",JSON.stringify(C.prompts)),S++),r.value.includes("novelGenres")&&C.novelGenres&&(localStorage.setItem("novelGenres",JSON.stringify(C.novelGenres)),S++),r.value.includes("writingGoals")&&(C.writingGoals?(localStorage.setItem("writingGoals",JSON.stringify(C.writingGoals)),S++):C.goals&&(localStorage.setItem("writingGoals",JSON.stringify(C.goals)),S++)),r.value.includes("settings")&&C.settings&&(C.settings.apiConfig&&(localStorage.setItem("api-config",JSON.stringify(C.settings.apiConfig)),S++),C.settings.tokenUsage&&(localStorage.setItem("token-usage",JSON.stringify(C.settings.tokenUsage)),S++)),i(),S>0?Ie.success(`成功导入 ${S} 项数据`):Ie.warning("未找到匹配的数据进行导入")})}catch{Ie.error("文件格式错误,请选择有效的备份文件")}},y.readAsText(v),!1},g=()=>{uo.confirm("这将清除所有本地数据,包括小说、设置、提示词等。此操作不可恢复,确定继续吗?","确认清除",{confirmButtonText:"确定清除",cancelButtonText:"取消",type:"warning"}).then(()=>{localStorage.clear(),Ie.success("所有数据已清除"),setTimeout(()=>{location.reload()},1e3)})},p=()=>{uo.confirm("这将清除所有小说数据,此操作不可恢复,确定继续吗?","确认清除小说",{confirmButtonText:"确定清除",cancelButtonText:"取消",type:"warning"}).then(()=>{localStorage.removeItem("novels"),i(),Ie.success("小说数据已清除")})},m=()=>{uo.confirm("这将清除API配置等系统设置,确定继续吗?","确认重置设置",{confirmButtonText:"确定重置",cancelButtonText:"取消",type:"warning"}).then(()=>{["api-config","token-usage"].forEach(y=>localStorage.removeItem(y)),Ie.success("系统设置已重置"),setTimeout(()=>{location.reload()},1e3)})};return Kt(()=>{i()}),(v,y)=>{const _=Br,C=uc,S=u1,E=$re,k=Tt,O=AT,T=l1,P=Xi,U=yre,F=Js;return I(),j("div",UAt,[w("div",VAt,[D(T,{modelValue:t.value,"onUpdate:modelValue":y[1]||(y[1]=H=>t.value=H),class:"settings-tabs"},{default:A(()=>[D(S,{label:"API配置",name:"api"},{default:A(()=>[D(C,{shadow:"never"},{header:A(()=>[w("div",zAt,[y[6]||(y[6]=w("span",null,"🔑 AI模型API配置",-1)),D(_,{type:"primary",onClick:a},{default:A(()=>y[5]||(y[5]=[ce("测试所有连接")])),_:1,__:[5]})])]),default:A(()=>[D(Ske)]),_:1})]),_:1}),D(S,{label:"数据管理",name:"data"},{default:A(()=>[D(C,{shadow:"never"},{header:A(()=>y[7]||(y[7]=[w("span",null,"💾 数据备份与恢复",-1)])),default:A(()=>[w("div",jAt,[w("div",HAt,[y[13]||(y[13]=w("h3",null,"📊 数据概览",-1)),w("div",WAt,[w("div",qAt,[y[8]||(y[8]=w("div",{class:"stat-label"},"小说作品",-1)),w("div",KAt,se(o.value.novels)+"部",1)]),w("div",GAt,[y[9]||(y[9]=w("div",{class:"stat-label"},"提示词库",-1)),w("div",YAt,se(o.value.prompts)+"条",1)]),w("div",XAt,[y[10]||(y[10]=w("div",{class:"stat-label"},"小说类型",-1)),w("div",JAt,se(o.value.genres)+"种",1)]),w("div",ZAt,[y[11]||(y[11]=w("div",{class:"stat-label"},"写作目标",-1)),w("div",QAt,se(o.value.goals)+"个",1)]),w("div",eTt,[y[12]||(y[12]=w("div",{class:"stat-label"},"数据大小",-1)),w("div",tTt,se(o.value.size),1)])])]),D(E),w("div",nTt,[y[19]||(y[19]=w("h3",null,"📤 数据导出",-1)),y[20]||(y[20]=w("p",null,"导出您的小说数据、设置和提示词库,支持完整备份或分类导出",-1)),w("div",rTt,[D(_,{type:"primary",onClick:s},{default:A(()=>[D(k,null,{default:A(()=>[D(b(qu))]),_:1}),y[14]||(y[14]=ce(" 导出所有数据 "))]),_:1,__:[14]}),D(_,{onClick:l},{default:A(()=>[D(k,null,{default:A(()=>[D(b(Yu))]),_:1}),y[15]||(y[15]=ce(" 小说数据 "))]),_:1,__:[15]}),D(_,{onClick:u},{default:A(()=>[D(k,null,{default:A(()=>[D(b(FL))]),_:1}),y[16]||(y[16]=ce(" 提示词库 "))]),_:1,__:[16]}),D(_,{onClick:c},{default:A(()=>[D(k,null,{default:A(()=>[D(b(Kne))]),_:1}),y[17]||(y[17]=ce(" 小说类型 "))]),_:1,__:[17]}),D(_,{onClick:d},{default:A(()=>[D(k,null,{default:A(()=>[D(b(im))]),_:1}),y[18]||(y[18]=ce(" API配置 "))]),_:1,__:[18]})])]),D(E),w("div",oTt,[y[23]||(y[23]=w("h3",null,"📥 数据导入",-1)),y[24]||(y[24]=w("p",null,"从备份文件恢复您的数据,支持完整恢复或选择性导入",-1)),w("div",aTt,[D(O,{"before-upload":h,"show-file-list":!1,accept:".json"},{default:A(()=>[D(_,{type:"success"},{default:A(()=>[D(k,null,{default:A(()=>[D(b(fT))]),_:1}),y[21]||(y[21]=ce(" 选择备份文件 "))]),_:1,__:[21]})]),_:1}),D(_,{onClick:y[0]||(y[0]=H=>n.value=!0)},{default:A(()=>[D(k,null,{default:A(()=>[D(b(im))]),_:1}),y[22]||(y[22]=ce(" 导入选项 "))]),_:1,__:[22]})])]),D(E),w("div",iTt,[y[28]||(y[28]=w("h3",null,"🗑️ 数据清除",-1)),y[29]||(y[29]=w("p",{class:"warning-text"},"⚠️ 危险操作:将清除本地数据,请谨慎操作",-1)),w("div",sTt,[D(_,{type:"danger",onClick:g},{default:A(()=>[D(k,null,{default:A(()=>[D(b(Ws))]),_:1}),y[25]||(y[25]=ce(" 清除所有数据 "))]),_:1,__:[25]}),D(_,{type:"warning",onClick:p},{default:A(()=>[D(k,null,{default:A(()=>[D(b(Yu))]),_:1}),y[26]||(y[26]=ce(" 仅清除小说 "))]),_:1,__:[26]}),D(_,{type:"warning",onClick:m},{default:A(()=>[D(k,null,{default:A(()=>[D(b(im))]),_:1}),y[27]||(y[27]=ce(" 重置API配置 "))]),_:1,__:[27]})])])])]),_:1})]),_:1}),D(S,{label:"关于",name:"about"},{default:A(()=>[D(C,{shadow:"never"},{header:A(()=>y[30]||(y[30]=[w("span",null,"ℹ️ 关于应用",-1)])),default:A(()=>[w("div",lTt,[y[31]||(y[31]=w("div",{class:"app-info"},[w("div",{class:"app-logo"},[w("h1",null,"📚 91写作")]),w("div",{class:"app-details"},[w("p",null,[w("strong",null,"版本:"),ce("v0.7.0")]),w("p",null,[w("strong",null,"更新时间:"),ce("2025年7月9日")]),w("p",null,[w("strong",null,"开发者:"),ce("91写作团队")]),w("p",null,[w("strong",null,"描述:"),ce("基于AI技术的智能小说创作辅助工具,提供全方位的写作支持和创作灵感")])])],-1)),D(E),y[32]||(y[32]=w("div",{class:"features-list"},[w("h3",null,"🌟 主要功能"),w("div",{class:"features-grid"},[w("div",{class:"feature-category"},[w("h4",null,"📖 小说管理"),w("ul",null,[w("li",null,"• 多小说项目管理"),w("li",null,"• 小说类型与标签"),w("li",null,"• 详细作品信息"),w("li",null,"• 数据统计分析")])]),w("div",{class:"feature-category"},[w("h4",null,"✍️ 智能编辑"),w("ul",null,[w("li",null,"• 章节状态管理"),w("li",null,"• 事件时间线"),w("li",null,"• AI内容润色"),w("li",null,"• AI智能续写"),w("li",null,"• 流式生成体验")])]),w("div",{class:"feature-category"},[w("h4",null,"🤖 AI辅助"),w("ul",null,[w("li",null,"• 章节大纲生成"),w("li",null,"• 正文内容生成"),w("li",null,"• 人物角色生成"),w("li",null,"• 世界观设定生成"),w("li",null,"• 多种生成类型")])]),w("div",{class:"feature-category"},[w("h4",null,"💡 创作工具"),w("ul",null,[w("li",null,"• 丰富提示词库"),w("li",null,"• 人物设定管理"),w("li",null,"• 世界观设定"),w("li",null,"• 语料库管理"),w("li",null,"• 写作目标设定")])]),w("div",{class:"feature-category"},[w("h4",null,"⚙️ 系统功能"),w("ul",null,[w("li",null,"• 多AI模型支持"),w("li",null,"• API配置管理"),w("li",null,"• 数据备份恢复"),w("li",null,"• 短篇小说生成"),w("li",null,"• 书籍分析工具")])])])],-1)),D(E),y[33]||(y[33]=w("div",{class:"update-log"},[w("h3",null,"📋 更新日志"),w("div",{class:"log-item current-version"},[w("h4",null,"v0.7.0 (2025-07-9) - 当前版本"),w("ul",null,[w("li",null,"• 优化API配置新增官方默认API"),w("li",null,"• 增加公告弹窗和教程说明"),w("li",null,"• 新增切换模型参数下拉框支持随时切换模型"),w("li",null,"• 短篇小说改为短文创作,新增短文写作及配置"),w("li",null,"• 优化短篇小说ui和逻辑"),w("li",null,"• 修复若干bug问题")])]),w("div",{class:"log-item"},[w("h4",null,"v0.6.0 (2025-06-26)"),w("ul",null,[w("li",null,"• 短篇小说新增续写功能 - 支持自定义续写方向和字数设置"),w("li",null,"• 短篇小说选文优化功能重构 - 可以优化完成之后一键插入"),w("li",null,"• AI正文编辑器修复部分bug问题 - 提升编辑体验稳定性")])]),w("div",{class:"log-item"},[w("h4",null,"v0.5.0 (2025-06-24)"),w("ul",null,[w("li",null,"• 模型配置预设模型重新梳理"),w("li",null,"• 短篇小说部分API兼容问题bug修复"),w("li",null,"• Ai上下文连贯性改为可以手动选择多章,默认自动关联前两章"),w("li",null,"• 小说无法导出bug修复"),w("li",null,"• 若干功能bug修复")])]),w("div",{class:"log-item"},[w("h4",null,"v0.4.0 (2025-01-15)"),w("div",{class:"log-category"},[w("h5",null,"🆕 新增功能"),w("ul",null,[w("li",null,"• 全新AI续写功能,支持自定义续写方向和字数"),w("li",null,"• AI内容润色功能,支持选择内容润色和整文润色"),w("li",null,"• 章节状态管理系统(草稿/完成/发表)"),w("li",null,"• 事件时间线编辑和删除功能"),w("li",null,"• 流式输出体验,实时查看AI生成过程")])]),w("div",{class:"log-category"},[w("h5",null,"🔧 功能优化"),w("ul",null,[w("li",null,"• 进入编辑模块自动选中第一章节"),w("li",null,'• 提示词库润色分类重命名为"润色优化"'),w("li",null,"• 优化续写配置显示完整内容而非概要"),w("li",null,"• 移除章节列表中的AI优化选项"),w("li",null,"• 续写字数上限提升至5000字")])]),w("div",{class:"log-category"},[w("h5",null,"🛠️ 修复改进"),w("ul",null,[w("li",null,"• 修复续写弹窗样式布局问题"),w("li",null,"• 修复编译错误和运行时错误"),w("li",null,"• 优化提示词选择功能"),w("li",null,"• 改善用户交互体验")])])]),w("div",{class:"log-item"},[w("h4",null,"v0.3.0 (2024-12-01)"),w("ul",null,[w("li",null,"• 新增短篇小说生成功能"),w("li",null,"• 新增书籍分析工具"),w("li",null,"• 优化AI生成流程"),w("li",null,"• 增强用户界面交互")])]),w("div",{class:"log-item"},[w("h4",null,"v0.2.0 (2024-02-15)"),w("ul",null,[w("li",null,"• 重构为模块化架构"),w("li",null,"• 新增系统设置页面"),w("li",null,"• 优化用户界面"),w("li",null,"• 增强数据管理功能")])])],-1))])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),D(F,{modelValue:n.value,"onUpdate:modelValue":y[4]||(y[4]=H=>n.value=H),title:"导入选项",width:"500px"},{footer:A(()=>[D(_,{onClick:y[3]||(y[3]=H=>n.value=!1)},{default:A(()=>y[40]||(y[40]=[ce("取消")])),_:1,__:[40]}),D(_,{type:"primary",onClick:f},{default:A(()=>y[41]||(y[41]=[ce("确定")])),_:1,__:[41]})]),default:A(()=>[w("div",uTt,[y[39]||(y[39]=w("p",null,"选择要导入的数据类型:",-1)),D(U,{modelValue:r.value,"onUpdate:modelValue":y[2]||(y[2]=H=>r.value=H)},{default:A(()=>[D(P,{label:"novels"},{default:A(()=>y[34]||(y[34]=[ce("小说数据")])),_:1,__:[34]}),D(P,{label:"prompts"},{default:A(()=>y[35]||(y[35]=[ce("提示词库")])),_:1,__:[35]}),D(P,{label:"novelGenres"},{default:A(()=>y[36]||(y[36]=[ce("小说类型")])),_:1,__:[36]}),D(P,{label:"writingGoals"},{default:A(()=>y[37]||(y[37]=[ce("写作目标")])),_:1,__:[37]}),D(P,{label:"settings"},{default:A(()=>y[38]||(y[38]=[ce("API配置")])),_:1,__:[38]})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue"])])}}},dTt=Cs(cTt,[["__scopeId","data-v-fdf61afd"]]);const fTt={class:"chapter-management"},hTt={class:"page-header"},pTt={class:"header-actions"},gTt={class:"novel-selector"},vTt={class:"selector-content"},mTt={class:"selector-left"},yTt={class:"novel-option"},bTt={class:"novel-title"},_Tt={class:"novel-info"},wTt={key:0,class:"selector-right"},CTt={class:"novel-stats"},xTt={class:"stat-item"},STt={class:"stat-value"},DTt={class:"stat-item"},ETt={class:"stat-value"},kTt={key:0,class:"chapters-section"},ATt={class:"card-header"},TTt={class:"header-actions"},OTt={class:"chapters-list"},FTt={class:"chapter-checkbox"},ITt={class:"chapter-number"},MTt={class:"chapter-content"},PTt={class:"chapter-title"},$Tt={class:"chapter-status"},BTt={key:0,class:"chapter-summary"},RTt={class:"chapter-meta"},NTt={class:"meta-item"},LTt={class:"meta-item"},UTt={key:0,class:"meta-item"},VTt={class:"chapter-actions"},zTt={key:0,class:"empty-chapters"},jTt={key:1,class:"no-novel-selected"},HTt={key:0,class:"tags-display"},WTt={key:0,class:"chapter-preview"},qTt={class:"preview-header"},KTt={class:"preview-meta"},GTt={class:"preview-content"},YTt={__name:"ChapterManagement",setup(e){const t=cC(),n=X(null),r=X(!1),o=X(!1),a=X(null),i=X(null),s=X([]),l=X(""),u=X(),c=X([]),d=X([]),f=X({title:"",summary:"",content:"",status:"draft",tags:[]}),h={title:[{required:!0,message:"请输入章节标题",trigger:"blur"},{min:1,max:100,message:"标题长度在 1 到 100 个字符",trigger:"blur"}],content:[{required:!0,message:"请输入章节内容",trigger:"blur"}]},g=K(()=>c.value.find(L=>L.id===n.value)),p=()=>{try{const L=localStorage.getItem("novels");if(L){const V=JSON.parse(L);c.value=V.map(Y=>({...Y,createdAt:new Date(Y.createdAt),updatedAt:new Date(Y.updatedAt)}))}}catch(L){console.error("加载小说数据失败:",L),c.value=[]}},m=L=>L>=1e4?(L/1e4).toFixed(1)+"万":L.toLocaleString(),v=L=>new Date(L).toLocaleDateString("zh-CN"),y=L=>({draft:"",writing:"warning",completed:"success",published:"info"})[L]||"",_=L=>({draft:"草稿",writing:"写作中",completed:"已完成",published:"已发布"})[L]||"未知",C=L=>{S(L)},S=L=>{const V=c.value.find(Y=>Y.id===L);V&&V.chapterList?d.value=V.chapterList.map(Y=>({...Y,createdAt:new Date(Y.createdAt),updatedAt:new Date(Y.updatedAt)})):d.value=[]},E=()=>{if(n.value)try{const L=JSON.parse(localStorage.getItem("novels")||"[]"),V=L.findIndex(Y=>Y.id===n.value);V>-1&&(L[V].chapterList=d.value,L[V].wordCount=d.value.reduce((Y,$)=>Y+($.wordCount||0),0),L[V].chapters=d.value.length,L[V].updatedAt=new Date,localStorage.setItem("novels",JSON.stringify(L)),p())}catch(L){console.error("保存章节数据失败:",L),Ie.error("保存失败")}},k=L=>{t.push(`/writer?novelId=${n.value}&chapterId=${L.id}`)},O=L=>{i.value=L,o.value=!0},T=L=>{const V={...L,id:Date.now(),title:L.title+" (副本)",status:"draft",createdAt:new Date,updatedAt:new Date};d.value.push(V),E(),Ie.success("章节复制成功")},P=(L,V)=>{const Y=d.value.findIndex($=>$.id===L.id);V==="up"&&Y>0?([d.value[Y],d.value[Y-1]]=[d.value[Y-1],d.value[Y]],E(),Ie.success("章节上移成功")):V==="down"&&Y{uo.confirm(`确定要删除章节「${L.title}」吗?此操作不可恢复。`,"确认删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{const V=d.value.findIndex(Y=>Y.id===L.id);V>-1&&(d.value.splice(V,1),E(),Ie.success("章节删除成功"))})},F=()=>{u.value.validate(L=>{if(L){const V=f.value.content.replace(/<[^>]*>/g,"").length;if(a.value){const Y=d.value.findIndex($=>$.id===a.value.id);Y>-1&&(d.value[Y]={...d.value[Y],...f.value,wordCount:V,updatedAt:new Date}),Ie.success("章节更新成功")}else{const Y={id:Date.now(),...f.value,wordCount:V,createdAt:new Date,updatedAt:new Date,aiGenerated:!1,status:f.value.status||"draft"};d.value.push(Y),Ie.success("章节创建成功")}E(),r.value=!1,H()}})},H=()=>{f.value={title:"",summary:"",content:"",status:"draft",tags:[]},a.value=null,l.value=""},R=()=>{l.value.trim()&&!f.value.tags.includes(l.value.trim())&&(f.value.tags.push(l.value.trim()),l.value="")},z=L=>{f.value.tags.splice(L,1)},M=()=>{Ie.info("章节排序功能开发中...")},N=()=>{if(s.value.length===0){Ie.warning("请先选择要编辑的章节");return}Ie.info("批量编辑功能开发中...")};return Kt(()=>{c.value.length>0&&(n.value=c.value[0].id,S(n.value))}),Ze(r,L=>{L||H()}),Kt(()=>{p()}),(L,V)=>{const Y=Tt,$=Br,B=bs,W=ii,J=uc,oe=Xi,ie=Si,Z=a1,de=i1,we=o1,Be=bf,ke=fo,ae=_f,le=VL,q=w_,pe=Xh,he=Js;return I(),j("div",fTt,[w("div",hTt,[V[14]||(V[14]=w("div",{class:"header-content"},[w("h1",null,"📖 章节管理"),w("p",null,"管理您的小说章节,编辑和组织内容")],-1)),w("div",pTt,[D($,{type:"primary",onClick:V[0]||(V[0]=re=>r.value=!0),disabled:!g.value},{default:A(()=>[D(Y,null,{default:A(()=>[D(b(ea))]),_:1}),V[13]||(V[13]=ce(" 新建章节 "))]),_:1,__:[13]},8,["disabled"])])]),w("div",gTt,[D(J,{shadow:"never"},{default:A(()=>[w("div",vTt,[w("div",mTt,[V[15]||(V[15]=w("span",{class:"selector-label"},"选择小说:",-1)),D(W,{modelValue:n.value,"onUpdate:modelValue":V[1]||(V[1]=re=>n.value=re),placeholder:"请选择要管理的小说",style:{width:"300px"},onChange:C},{default:A(()=>[(I(!0),j(tt,null,wt(c.value,re=>(I(),Oe(B,{key:re.id,label:re.title,value:re.id},{default:A(()=>[w("div",yTt,[w("span",bTt,se(re.title),1),w("span",_Tt,se((re.chapterList||[]).length)+"章 · "+se(m(re.wordCount||0))+"字",1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),g.value?(I(),j("div",wTt,[w("div",CTt,[w("div",xTt,[V[16]||(V[16]=w("span",{class:"stat-label"},"总章节:",-1)),w("span",STt,se((g.value.chapterList||[]).length)+"章",1)]),w("div",DTt,[V[17]||(V[17]=w("span",{class:"stat-label"},"总字数:",-1)),w("span",ETt,se(m(g.value.wordCount||0))+"字",1)])])])):be("",!0)])]),_:1})]),g.value?(I(),j("div",kTt,[D(J,{shadow:"never"},{header:A(()=>[w("div",ATt,[w("span",null,"📚 "+se(g.value.title)+" - 章节列表",1),w("div",TTt,[D($,{size:"small",onClick:M},{default:A(()=>V[18]||(V[18]=[ce("排序")])),_:1,__:[18]}),D($,{size:"small",onClick:N},{default:A(()=>V[19]||(V[19]=[ce("批量编辑")])),_:1,__:[19]})])])]),default:A(()=>[w("div",OTt,[(I(!0),j(tt,null,wt(d.value,(re,ue)=>(I(),j("div",{key:re.id,class:ee(["chapter-item",{selected:s.value.includes(re.id)}])},[w("div",FTt,[D(oe,{modelValue:s.value,"onUpdate:modelValue":V[2]||(V[2]=_e=>s.value=_e),label:re.id},null,8,["modelValue","label"])]),w("div",ITt," 第"+se(ue+1)+"章 ",1),w("div",MTt,[w("div",PTt,[w("h4",null,se(re.title),1),w("div",$Tt,[D(ie,{type:y(re.status),size:"small"},{default:A(()=>[ce(se(_(re.status)),1)]),_:2},1032,["type"])])]),re.summary?(I(),j("div",BTt,se(re.summary),1)):be("",!0),w("div",RTt,[w("div",NTt,[D(Y,null,{default:A(()=>[D(b($h))]),_:1}),w("span",null,se(re.wordCount)+"字",1)]),w("div",LTt,[D(Y,null,{default:A(()=>[D(b(Bm))]),_:1}),w("span",null,se(v(re.updatedAt)),1)]),re.aiGenerated?(I(),j("div",UTt,[D(Y,null,{default:A(()=>[D(b($h))]),_:1}),V[20]||(V[20]=w("span",null,"AI辅助",-1))])):be("",!0)])]),w("div",VTt,[D($,{type:"text",size:"small",onClick:_e=>k(re)},{default:A(()=>[D(Y,null,{default:A(()=>[D(b(Xu))]),_:1}),V[21]||(V[21]=ce(" 编辑 "))]),_:2,__:[21]},1032,["onClick"]),D($,{type:"text",size:"small",onClick:_e=>O(re)},{default:A(()=>[D(Y,null,{default:A(()=>[D(b(db))]),_:1}),V[22]||(V[22]=ce(" 预览 "))]),_:2,__:[22]},1032,["onClick"]),D(we,{trigger:"click"},{dropdown:A(()=>[D(de,null,{default:A(()=>[D(Z,{onClick:_e=>T(re)},{default:A(()=>[D(Y,null,{default:A(()=>[D(b(vg))]),_:1}),V[23]||(V[23]=ce(" 复制章节 "))]),_:2,__:[23]},1032,["onClick"]),D(Z,{onClick:_e=>P(re,"up"),disabled:ue===0},{default:A(()=>[D(Y,null,{default:A(()=>[D(b(mC))]),_:1}),V[24]||(V[24]=ce(" 上移 "))]),_:2,__:[24]},1032,["onClick","disabled"]),D(Z,{onClick:_e=>P(re,"down"),disabled:ue===d.value.length-1},{default:A(()=>[D(Y,null,{default:A(()=>[D(b(lc))]),_:1}),V[25]||(V[25]=ce(" 下移 "))]),_:2,__:[25]},1032,["onClick","disabled"]),D(Z,{divided:"",onClick:_e=>U(re)},{default:A(()=>[D(Y,null,{default:A(()=>[D(b(Ws))]),_:1}),V[26]||(V[26]=ce(" 删除 "))]),_:2,__:[26]},1032,["onClick"])]),_:2},1024)]),default:A(()=>[D($,{type:"text",size:"small"},{default:A(()=>[D(Y,null,{default:A(()=>[D(b(Ku))]),_:1})]),_:1})]),_:2},1024)])],2))),128)),d.value.length===0?(I(),j("div",zTt,[D(Be,{description:"暂无章节,开始创建您的第一个章节吧!"},{default:A(()=>[D($,{type:"primary",onClick:V[3]||(V[3]=re=>r.value=!0)},{default:A(()=>V[27]||(V[27]=[ce("创建章节")])),_:1,__:[27]})]),_:1})])):be("",!0)])]),_:1})])):(I(),j("div",jTt,[D(Be,{description:"请先选择一部小说来管理章节"},{default:A(()=>[D($,{type:"primary",onClick:V[4]||(V[4]=re=>L.$router.push("/novels"))},{default:A(()=>V[28]||(V[28]=[ce("前往小说管理")])),_:1,__:[28]})]),_:1})])),D(he,{modelValue:r.value,"onUpdate:modelValue":V[11]||(V[11]=re=>r.value=re),title:a.value?"编辑章节":"创建新章节",width:"800px"},{footer:A(()=>[D($,{onClick:V[10]||(V[10]=re=>r.value=!1)},{default:A(()=>V[34]||(V[34]=[ce("取消")])),_:1,__:[34]}),D($,{type:"primary",onClick:F},{default:A(()=>V[35]||(V[35]=[ce("保存")])),_:1,__:[35]})]),default:A(()=>[D(pe,{model:f.value,rules:h,ref_key:"chapterFormRef",ref:u,"label-width":"80px"},{default:A(()=>[D(ae,{label:"章节标题",prop:"title"},{default:A(()=>[D(ke,{modelValue:f.value.title,"onUpdate:modelValue":V[5]||(V[5]=re=>f.value.title=re),placeholder:"请输入章节标题",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),D(ae,{label:"章节摘要"},{default:A(()=>[D(ke,{modelValue:f.value.summary,"onUpdate:modelValue":V[6]||(V[6]=re=>f.value.summary=re),type:"textarea",placeholder:"简要描述本章节内容(可选)",rows:3,maxlength:"500","show-word-limit":""},null,8,["modelValue"])]),_:1}),D(ae,{label:"章节状态"},{default:A(()=>[D(q,{modelValue:f.value.status,"onUpdate:modelValue":V[7]||(V[7]=re=>f.value.status=re)},{default:A(()=>[D(le,{label:"draft"},{default:A(()=>V[29]||(V[29]=[ce("草稿")])),_:1,__:[29]}),D(le,{label:"writing"},{default:A(()=>V[30]||(V[30]=[ce("写作中")])),_:1,__:[30]}),D(le,{label:"completed"},{default:A(()=>V[31]||(V[31]=[ce("已完成")])),_:1,__:[31]}),D(le,{label:"published"},{default:A(()=>V[32]||(V[32]=[ce("已发布")])),_:1,__:[32]})]),_:1},8,["modelValue"])]),_:1}),D(ae,{label:"章节内容",prop:"content"},{default:A(()=>[D(ke,{modelValue:f.value.content,"onUpdate:modelValue":V[8]||(V[8]=re=>f.value.content=re),type:"textarea",placeholder:"开始写作您的章节内容...",rows:15,"show-word-limit":""},null,8,["modelValue"])]),_:1}),D(ae,{label:"标签"},{default:A(()=>[D(ke,{modelValue:l.value,"onUpdate:modelValue":V[9]||(V[9]=re=>l.value=re),placeholder:"输入标签后按回车添加",onKeyup:qn(R,["enter"])},{append:A(()=>[D($,{onClick:R},{default:A(()=>V[33]||(V[33]=[ce("添加")])),_:1,__:[33]})]),_:1},8,["modelValue"]),f.value.tags.length>0?(I(),j("div",HTt,[(I(!0),j(tt,null,wt(f.value.tags,(re,ue)=>(I(),Oe(ie,{key:ue,closable:"",onClose:_e=>z(ue),style:{margin:"5px 5px 0 0"}},{default:A(()=>[ce(se(re),1)]),_:2},1032,["onClose"]))),128))])):be("",!0)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),D(he,{modelValue:o.value,"onUpdate:modelValue":V[12]||(V[12]=re=>o.value=re),title:"章节预览",width:"900px"},{default:A(()=>[i.value?(I(),j("div",WTt,[w("div",qTt,[w("h2",null,se(i.value.title),1),w("div",KTt,[w("span",null,"字数:"+se(i.value.wordCount),1),w("span",null,"状态:"+se(_(i.value.status)),1),w("span",null,"更新:"+se(v(i.value.updatedAt)),1)])]),w("div",GTt,[(I(!0),j(tt,null,wt(i.value.content.split(` +`),(re,ue)=>(I(),j("p",{key:ue},se(re),1))),128))])])):be("",!0)]),_:1},8,["modelValue"])])}}},XTt=Cs(YTt,[["__scopeId","data-v-5b2fb696"]]);var ko=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function JTt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function D_(e){var t={exports:{}};return e(t,t.exports),t.exports}var o0,oI,cO=function(e){return e&&e.Math==Math&&e},rr=cO(typeof globalThis=="object"&&globalThis)||cO(typeof window=="object"&&window)||cO(typeof self=="object"&&self)||cO(typeof ko=="object"&&ko)||function(){return this}()||Function("return this")(),Toe=Function.prototype,Vpe=Toe.apply,ZTt=Toe.bind,zpe=Toe.call,Oke=typeof Reflect=="object"&&Reflect.apply||(ZTt?zpe.bind(Vpe):function(){return zpe.apply(Vpe,arguments)}),Fke=Function.prototype,IX=Fke.bind,MX=Fke.call,QTt=IX&&IX.bind(MX),jo=IX?function(e){return e&&QTt(MX,e)}:function(e){return e&&function(){return MX.apply(e,arguments)}},qi=function(e){return typeof e=="function"},nu=function(e){try{return!!e()}catch{return!0}},Xl=!nu(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7}),cx=Function.prototype.call,Hl=cx.bind?cx.bind(cx):function(){return cx.apply(cx,arguments)},jpe={}.propertyIsEnumerable,Hpe=Object.getOwnPropertyDescriptor,e7t=Hpe&&!jpe.call({1:2},1)?function(e){var t=Hpe(this,e);return!!t&&t.enumerable}:jpe,Ooe={f:e7t},Qd=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},t7t=jo({}.toString),n7t=jo("".slice),gb=function(e){return n7t(t7t(e),8,-1)},gj=rr.Object,r7t=jo("".split),Ike=nu(function(){return!gj("z").propertyIsEnumerable(0)})?function(e){return gb(e)=="String"?r7t(e,""):gj(e)}:gj,o7t=rr.TypeError,Foe=function(e){if(e==null)throw o7t("Can't call method on "+e);return e},Zh=function(e){return Ike(Foe(e))},zu=function(e){return typeof e=="object"?e!==null:qi(e)},Uu={},Wpe=function(e){return qi(e)?e:void 0},SC=function(e,t){return arguments.length<2?Wpe(Uu[e])||Wpe(rr[e]):Uu[e]&&Uu[e][t]||rr[e]&&rr[e][t]},QD=jo({}.isPrototypeOf),vj=SC("navigator","userAgent")||"",qpe=rr.process,Kpe=rr.Deno,Gpe=qpe&&qpe.versions||Kpe&&Kpe.version,Ype=Gpe&&Gpe.v8;Ype&&(oI=(o0=Ype.split("."))[0]>0&&o0[0]<4?1:+(o0[0]+o0[1])),!oI&&vj&&(!(o0=vj.match(/Edge\/(\d+)/))||o0[1]>=74)&&(o0=vj.match(/Chrome\/(\d+)/))&&(oI=+o0[1]);var dO,hP=oI,Rf=!!Object.getOwnPropertySymbols&&!nu(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&hP&&hP<41}),Ioe=Rf&&!Symbol.sham&&typeof Symbol.iterator=="symbol",a7t=rr.Object,$3=Ioe?function(e){return typeof e=="symbol"}:function(e){var t=SC("Symbol");return qi(t)&&QD(t.prototype,a7t(e))},i7t=rr.String,PX=function(e){try{return i7t(e)}catch{return"Object"}},s7t=rr.TypeError,Moe=function(e){if(qi(e))return e;throw s7t(PX(e)+" is not a function")},pP=function(e,t){var n=e[t];return n==null?void 0:Moe(n)},l7t=rr.TypeError,u7t=Object.defineProperty,lm=rr["__core-js_shared__"]||function(e,t){try{u7t(rr,e,{value:t,configurable:!0,writable:!0})}catch{rr[e]=t}return t}("__core-js_shared__",{}),E_=D_(function(e){(e.exports=function(t,n){return lm[t]||(lm[t]=n!==void 0?n:{})})("versions",[]).push({version:"3.19.3",mode:"pure",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})}),c7t=rr.Object,TT=function(e){return c7t(Foe(e))},d7t=jo({}.hasOwnProperty),Pr=Object.hasOwn||function(e,t){return d7t(TT(e),t)},f7t=0,h7t=Math.random(),p7t=jo(1 .toString),gP=function(e){return"Symbol("+(e===void 0?"":e)+")_"+p7t(++f7t+h7t,36)},dx=E_("wks"),vb=rr.Symbol,Xpe=vb&&vb.for,g7t=Ioe?vb:vb&&vb.withoutSetter||gP,Zs=function(e){if(!Pr(dx,e)||!Rf&&typeof dx[e]!="string"){var t="Symbol."+e;Rf&&Pr(vb,e)?dx[e]=vb[e]:dx[e]=Ioe&&Xpe?Xpe(t):g7t(t)}return dx[e]},v7t=rr.TypeError,m7t=Zs("toPrimitive"),y7t=function(e,t){if(!zu(e)||$3(e))return e;var n,r=pP(e,m7t);if(r){if(t===void 0&&(t="default"),n=Hl(r,e,t),!zu(n)||$3(n))return n;throw v7t("Can't convert object to primitive value")}return t===void 0&&(t="number"),function(o,a){var i,s;if(a==="string"&&qi(i=o.toString)&&!zu(s=Hl(i,o))||qi(i=o.valueOf)&&!zu(s=Hl(i,o))||a!=="string"&&qi(i=o.toString)&&!zu(s=Hl(i,o)))return s;throw l7t("Can't convert object to primitive value")}(e,t)},DC=function(e){var t=y7t(e,"string");return $3(t)?t:t+""},$X=rr.document,b7t=zu($X)&&zu($X.createElement),Mke=function(e){return b7t?$X.createElement(e):{}},Pke=!Xl&&!nu(function(){return Object.defineProperty(Mke("div"),"a",{get:function(){return 7}}).a!=7}),Jpe=Object.getOwnPropertyDescriptor,_7t=Xl?Jpe:function(e,t){if(e=Zh(e),t=DC(t),Pke)try{return Jpe(e,t)}catch{}if(Pr(e,t))return Qd(!Hl(Ooe.f,e,t),e[t])},rU={f:_7t},w7t=/#|\.prototype\./,OT=function(e,t){var n=x7t[C7t(e)];return n==D7t||n!=S7t&&(qi(t)?nu(t):!!t)},C7t=OT.normalize=function(e){return String(e).replace(w7t,".").toLowerCase()},x7t=OT.data={},S7t=OT.NATIVE="N",D7t=OT.POLYFILL="P",E7t=OT,Zpe=jo(jo.bind),Poe=function(e,t){return Moe(e),t===void 0?e:Zpe?Zpe(e,t):function(){return e.apply(t,arguments)}},k7t=rr.String,A7t=rr.TypeError,nc=function(e){if(zu(e))return e;throw A7t(k7t(e)+" is not an object")},T7t=rr.TypeError,Qpe=Object.defineProperty,O7t=Xl?Qpe:function(e,t,n){if(nc(e),t=DC(t),nc(n),Pke)try{return Qpe(e,t,n)}catch{}if("get"in n||"set"in n)throw T7t("Accessors not supported");return"value"in n&&(e[t]=n.value),e},c1={f:O7t},vl=Xl?function(e,t,n){return c1.f(e,t,Qd(1,n))}:function(e,t,n){return e[t]=n,e},F7t=rU.f,I7t=function(e){var t=function(n,r,o){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(n);case 2:return new e(n,r)}return new e(n,r,o)}return Oke(e,this,arguments)};return t.prototype=e.prototype,t},Cp=function(e,t){var n,r,o,a,i,s,l,u,c=e.target,d=e.global,f=e.stat,h=e.proto,g=d?rr:f?rr[c]:(rr[c]||{}).prototype,p=d?Uu:Uu[c]||vl(Uu,c,{})[c],m=p.prototype;for(o in t)n=!E7t(d?o:c+(f?".":"#")+o,e.forced)&&g&&Pr(g,o),i=p[o],n&&(s=e.noTargetGet?(u=F7t(g,o))&&u.value:g[o]),a=n&&s?s:t[o],n&&typeof i==typeof a||(l=e.bind&&n?Poe(a,rr):e.wrap&&n?I7t(a):h&&qi(a)?jo(a):a,(e.sham||a&&a.sham||i&&i.sham)&&vl(l,"sham",!0),vl(p,o,l),h&&(Pr(Uu,r=c+"Prototype")||vl(Uu,r,{}),vl(Uu[r],o,a),e.real&&m&&!m[o]&&vl(m,o,a)))},ege=E_("keys"),oU=function(e){return ege[e]||(ege[e]=gP(e))},M7t=!nu(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}),tge=oU("IE_PROTO"),BX=rr.Object,P7t=BX.prototype,vP=M7t?BX.getPrototypeOf:function(e){var t=TT(e);if(Pr(t,tge))return t[tge];var n=t.constructor;return qi(n)&&t instanceof n?n.prototype:t instanceof BX?P7t:null},$7t=rr.String,B7t=rr.TypeError,mP=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=jo(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch{}return function(r,o){return nc(r),function(a){if(typeof a=="object"||qi(a))return a;throw B7t("Can't set "+$7t(a)+" as a prototype")}(o),t?e(r,o):r.__proto__=o,r}}():void 0),R7t=Math.ceil,N7t=Math.floor,$oe=function(e){var t=+e;return t!=t||t===0?0:(t>0?N7t:R7t)(t)},L7t=Math.max,U7t=Math.min,RX=function(e,t){var n=$oe(e);return n<0?L7t(n+t,0):U7t(n,t)},V7t=Math.min,FT=function(e){return(t=e.length)>0?V7t($oe(t),9007199254740991):0;var t},nge=function(e){return function(t,n,r){var o,a=Zh(t),i=FT(a),s=RX(r,i);if(e&&n!=n){for(;i>s;)if((o=a[s++])!=o)return!0}else for(;i>s;s++)if((e||s in a)&&a[s]===n)return e||s||0;return!e&&-1}},z7t={includes:nge(!0),indexOf:nge(!1)},IT={},j7t=z7t.indexOf,rge=jo([].push),$ke=function(e,t){var n,r=Zh(e),o=0,a=[];for(n in r)!Pr(IT,n)&&Pr(r,n)&&rge(a,n);for(;t.length>o;)Pr(r,n=t[o++])&&(~j7t(a,n)||rge(a,n));return a},yP=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],H7t=yP.concat("length","prototype"),W7t=Object.getOwnPropertyNames||function(e){return $ke(e,H7t)},Boe={f:W7t},aI={f:Object.getOwnPropertySymbols},q7t=jo([].concat),K7t=SC("Reflect","ownKeys")||function(e){var t=Boe.f(nc(e)),n=aI.f;return n?q7t(t,n(e)):t},Roe=Object.keys||function(e){return $ke(e,yP)},G7t=Xl?Object.defineProperties:function(e,t){nc(e);for(var n,r=Zh(t),o=Roe(t),a=o.length,i=0;a>i;)c1.f(e,n=o[i++],r[n]);return e},Y7t=SC("document","documentElement"),Bke=oU("IE_PROTO"),mj=function(){},Rke=function(e){return" + + + +
    + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d9e5249..2c9aa8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ai-novel-generator", - "version": "1.0.0", + "version": "0.7.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ai-novel-generator", - "version": "1.0.0", + "version": "0.7.0", "dependencies": { "@element-plus/icons-vue": "^2.1.0", "@vueuse/core": "^10.5.0", @@ -16,7 +16,9 @@ "element-plus": "^2.4.2", "file-saver": "^2.0.5", "highlight.js": "^11.9.0", + "mammoth": "^1.12.0", "marked": "^9.1.6", + "pdfjs-dist": "^5.6.205", "pinia": "^2.1.7", "vue": "^3.3.8", "vue-router": "^4.2.5" @@ -580,6 +582,256 @@ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, + "node_modules/@napi-rs/canvas": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas/-/canvas-0.1.99.tgz", + "integrity": "sha512-zN4eQlK3eBf7aJBcTHZilpBH3tDekBzPMIWC8r0s94Ecl73XfOyFi4w7yKFMRVUT0lvNQjtOL8YSrwqQj6mZFg==", + "license": "MIT", + "optional": true, + "workspaces": [ + "e2e/*" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/canvas-android-arm64": "0.1.99", + "@napi-rs/canvas-darwin-arm64": "0.1.99", + "@napi-rs/canvas-darwin-x64": "0.1.99", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.99", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.99", + "@napi-rs/canvas-linux-arm64-musl": "0.1.99", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.99", + "@napi-rs/canvas-linux-x64-gnu": "0.1.99", + "@napi-rs/canvas-linux-x64-musl": "0.1.99", + "@napi-rs/canvas-win32-arm64-msvc": "0.1.99", + "@napi-rs/canvas-win32-x64-msvc": "0.1.99" + } + }, + "node_modules/@napi-rs/canvas-android-arm64": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.99.tgz", + "integrity": "sha512-9OCRt8VVxA17m32NWZKyNC2qamdaS/SC5CEOIQwFngRq0DIeVm4PDal+6Ljnhqm2whZiC63DNuKZ4xSp2nbj9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-arm64": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.99.tgz", + "integrity": "sha512-lupMDMy1+H38dhyCcLirOKKVUyzzlxi7j7rGPLI3vViMHOoPjcXO1b10ivy+ad+q6MiwHfoLjKTCoLke5ySOBg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-x64": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.99.tgz", + "integrity": "sha512-fdz02t4w8n6Ii/rYhWig6STb/zcTmCC/6YZTGmjoDeidDwn9Wf0ukQVynhCPEs29vqUc66wHZKsuIgMs9tycCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.99.tgz", + "integrity": "sha512-w4FwVwlNo00ezeRhfY62IVIyt6G3u8wodkPtiqWc52BUHx+VDBUM2vkS3ogfANaLI7hnf3s6WK4LyZVUjBg1lA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.99.tgz", + "integrity": "sha512-8JvHeexKQ8c7g0q7YJ29NVQwnf1ePghP9ys9ZN0R0qzyqJQ9Uw6N9qnDINArlm3IYHexB7LjzArIfhQiqSDGvQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.99.tgz", + "integrity": "sha512-Z+6nyLdJXWzLPVxi4H6g9TJop4DwN3KSgHWto5JCbZV5/uKoVqcSynPs0tGlUHOoWI8S8tEvJspz51GQkvr07w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.99.tgz", + "integrity": "sha512-jAnfOUv4IO1l8Levk5t85oVtEBOXLa07KnIUgWo1CDlPxiqpxS3uBfiE38Lvj/CQgHaNF6Nxk/SaemwLgsVJgw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.99.tgz", + "integrity": "sha512-mIkXw3fGmbYyFjSmfWEvty4jN+rwEOmv0+Dy9bRvvTzLYWCgm3RMgUEQVfAKFw96nIRFnyNZiK83KNQaVVFjng==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.99.tgz", + "integrity": "sha512-f3Uz2P0RgrtBHISxZqr6yiYXJlTDyCVBumDacxo+4AmSg7z0HiqYZKGWC/gszq3fbPhyQUya1W2AEteKxT9Y6A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-arm64-msvc": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-0.1.99.tgz", + "integrity": "sha512-XE6KUkfqRsCNejcoRMiMr3RaUeObxNf6y7dut3hrq2rn7PzfRTZgrjF1F/B2C7FcdgqY/vSHWpQeMuNz1vTNHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "0.1.99", + "resolved": "https://registry.npmmirror.com/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.99.tgz", + "integrity": "sha512-plMYGVbc/vmmPF9MtmHbwNk1rL1Aj53vQZt+Gnv1oZn6gmd9jEHHJ0n9Nd2nxa5sKH7TS5IjkCDM6289O0d6PQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1055,6 +1307,15 @@ "snabbdom": "^3.1.0" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.13", + "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.13.tgz", + "integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", @@ -1173,6 +1434,26 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -1185,6 +1466,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "license": "MIT" + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", @@ -1332,6 +1619,12 @@ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", "dev": true }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1411,6 +1704,12 @@ "node": ">=0.4.0" } }, + "node_modules/dingbat-to-unicode": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz", + "integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==", + "license": "BSD-2-Clause" + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", @@ -1431,6 +1730,15 @@ "ssr-window": "^3.0.0-alpha.1" } }, + "node_modules/duck": { + "version": "0.1.12", + "resolved": "https://registry.npmmirror.com/duck/-/duck-0.1.12.tgz", + "integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==", + "license": "BSD", + "dependencies": { + "underscore": "^1.13.1" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -2266,6 +2574,12 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, "node_modules/immer": { "version": "9.0.21", "resolved": "https://registry.npmmirror.com/immer/-/immer-9.0.21.tgz", @@ -2314,8 +2628,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -2401,6 +2714,12 @@ "resolved": "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz", "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", @@ -2443,6 +2762,18 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", @@ -2465,6 +2796,15 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/local-pkg": { "version": "0.5.1", "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.1.tgz", @@ -2558,6 +2898,17 @@ "resolved": "https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz", "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==" }, + "node_modules/lop": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/lop/-/lop-0.4.2.tgz", + "integrity": "sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==", + "license": "BSD-2-Clause", + "dependencies": { + "duck": "^0.1.12", + "option": "~0.2.1", + "underscore": "^1.13.1" + } + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz", @@ -2566,6 +2917,39 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/mammoth": { + "version": "1.12.0", + "resolved": "https://registry.npmmirror.com/mammoth/-/mammoth-1.12.0.tgz", + "integrity": "sha512-cwnK1RIcRdDMi2HRx2EXGYlxqIEh0Oo3bLhorgnsVJi2UkbX1+jKxuBNR9PC5+JaX7EkmJxFPmo6mjLpqShI2w==", + "license": "BSD-2-Clause", + "dependencies": { + "@xmldom/xmldom": "^0.8.6", + "argparse": "~1.0.3", + "base64-js": "^1.5.1", + "bluebird": "~3.4.0", + "dingbat-to-unicode": "^1.0.1", + "jszip": "^3.7.1", + "lop": "^0.4.2", + "path-is-absolute": "^1.0.0", + "underscore": "^1.13.1", + "xmlbuilder": "^10.0.0" + }, + "bin": { + "mammoth": "bin/mammoth" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/mammoth/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/marked": { "version": "9.1.6", "resolved": "https://registry.npmmirror.com/marked/-/marked-9.1.6.tgz", @@ -2714,6 +3098,13 @@ "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, + "node_modules/node-readable-to-web-readable-stream": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/node-readable-to-web-readable-stream/-/node-readable-to-web-readable-stream-0.4.2.tgz", + "integrity": "sha512-/cMZNI34v//jUTrI+UIo4ieHAB5EZRY/+7OmXZgBxaWBMcW2tGdceIw06RFxWxrKZ5Jp3sI2i5TsRo+CBhtVLQ==", + "license": "MIT", + "optional": true + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", @@ -2749,6 +3140,12 @@ "wrappy": "1" } }, + "node_modules/option": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/option/-/option-0.2.4.tgz", + "integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==", + "license": "BSD-2-Clause" + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz", @@ -2796,6 +3193,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", @@ -2821,7 +3224,6 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2847,6 +3249,19 @@ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true }, + "node_modules/pdfjs-dist": { + "version": "5.6.205", + "resolved": "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-5.6.205.tgz", + "integrity": "sha512-tlUj+2IDa7G1SbvBNN74UHRLJybZDWYom+k6p5KIZl7huBvsA4APi6mKL+zCxd3tLjN5hOOEE9Tv7VdzO88pfg==", + "license": "Apache-2.0", + "engines": { + "node": ">=20.19.0 || >=22.13.0 || >=24" + }, + "optionalDependencies": { + "@napi-rs/canvas": "^0.1.96", + "node-readable-to-web-readable-stream": "^0.4.2" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", @@ -2989,6 +3404,12 @@ "node": ">=6" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -3039,6 +3460,21 @@ } ] }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", @@ -3157,6 +3593,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, "node_modules/scroll-into-view-if-needed": { "version": "2.2.31", "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", @@ -3183,6 +3625,12 @@ "node": ">=10" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3241,11 +3689,26 @@ "node": ">=0.10.0" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, "node_modules/ssr-window": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz", "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==" }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -3379,6 +3842,12 @@ "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", "dev": true }, + "node_modules/underscore": { + "version": "1.13.8", + "resolved": "https://registry.npmmirror.com/underscore/-/underscore-1.13.8.tgz", + "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==", + "license": "MIT" + }, "node_modules/unimport": { "version": "3.14.6", "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.14.6.tgz", @@ -3612,8 +4081,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/vite": { "version": "4.5.14", @@ -3803,6 +4271,15 @@ "node": ">=12" } }, + "node_modules/xmlbuilder": { + "version": "10.1.1", + "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-10.1.1.tgz", + "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 90355ba..9d43e7f 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,9 @@ "element-plus": "^2.4.2", "file-saver": "^2.0.5", "highlight.js": "^11.9.0", + "mammoth": "^1.12.0", "marked": "^9.1.6", + "pdfjs-dist": "^5.6.205", "pinia": "^2.1.7", "vue": "^3.3.8", "vue-router": "^4.2.5" @@ -33,4 +35,4 @@ "unplugin-vue-components": "^0.25.2", "vite": "^4.5.0" } -} \ No newline at end of file +} diff --git a/src/views/BookAnalysis.vue b/src/views/BookAnalysis.vue index 3f22f1e..82192ef 100644 --- a/src/views/BookAnalysis.vue +++ b/src/views/BookAnalysis.vue @@ -22,7 +22,7 @@ :auto-upload="false" :on-change="handleFileChange" :on-exceed="handleFileExceed" - accept=".txt,.docx" + accept=".txt,.docx,.pdf" :limit="1" :show-file-list="false" > @@ -34,7 +34,7 @@ @@ -590,6 +590,10 @@ import { Close, DocumentCopy, Loading, Check, MagicStick, Refresh, View, Edit } from '@element-plus/icons-vue' import { useNovelStore } from '@/stores/novel' +import * as pdfjsLib from 'pdfjs-dist' +import mammoth from 'mammoth' + +pdfjsLib.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js` const novelStore = useNovelStore() @@ -753,48 +757,113 @@ const handleFileExceed = (files) => { const readFileContent = (file, encoding = null) => { const fileEncoding = encoding || selectedEncoding.value + const fileName = file.name.toLowerCase() - if (file.name.toLowerCase().endsWith('.docx')) { + if (fileName.endsWith('.pdf')) { + // .pdf文件处理 + ElMessage.info('正在解析PDF文件,请稍候...') + parsePdfFile(file) + } else if (fileName.endsWith('.docx')) { // .docx文件处理(Word文档) - ElMessage.warning('暂不支持.docx文件编码选择,将使用默认编码') - const reader = new FileReader() - reader.onload = (e) => { - // 这里可以添加docx解析逻辑 - bookContent.value = e.target.result - detectChapters() - ElMessage.success('文件上传成功!') - } - reader.onerror = () => { - ElMessage.error('文件读取失败,请检查文件格式') - } - reader.readAsText(file, 'UTF-8') - } else { + ElMessage.info('正在解析Word文档,请稍候...') + parseDocxFile(file) + } else if (fileName.endsWith('.txt')) { // .txt文件处理 - const reader = new FileReader() - reader.onload = (e) => { - let content = e.target.result + parseTxtFile(file, fileEncoding) + } else { + ElMessage.error('不支持的文件格式,请上传.txt、.docx或.pdf文件') + } +} + +// 解析PDF文件 +const parsePdfFile = async (file) => { + try { + const arrayBuffer = await file.arrayBuffer() + const pdf = await pdfjsLib.getDocument({ data: arrayBuffer }).promise + + let fullText = '' + const totalPages = pdf.numPages + + for (let i = 1; i <= totalPages; i++) { + const page = await pdf.getPage(i) + const textContent = await page.getTextContent() - // 如果使用GBK编码但内容出现乱码,尝试重新解码 - if (fileEncoding === 'gbk' && content.includes('�')) { - ElMessage.warning('检测到可能的编码问题,建议尝试UTF-8编码') - } + // 提取页面文本 + let pageText = '' + let lastY = null - bookContent.value = content - detectChapters() + textContent.items.forEach((item) => { + // 处理换行:如果y坐标变化较大,添加换行 + if (lastY !== null && Math.abs(item.transform[5] - lastY) > 5) { + pageText += '\n' + } + pageText += item.str + ' ' + lastY = item.transform[5] + }) - const encodingText = fileEncoding === 'gbk' ? 'GBK/GB2312' : 'UTF-8' - ElMessage.success(`文件上传成功!(${encodingText})`) - } - reader.onerror = () => { - ElMessage.error('文件读取失败,请检查文件编码或格式') + fullText += pageText.trim() + '\n\n' } - // 根据选择的编码读取文件 - if (fileEncoding === 'gbk') { - reader.readAsText(file, 'GBK') - } else { - reader.readAsText(file, 'UTF-8') + // 清理多余的空格和换行 + fullText = fullText.replace(/ +/g, ' ').replace(/\n{3,}/g, '\n\n').trim() + + bookContent.value = fullText + detectChapters() + ElMessage.success(`PDF文件解析成功!共 ${totalPages} 页`) + } catch (error) { + console.error('PDF解析失败:', error) + ElMessage.error(`PDF文件解析失败:${error.message}`) + } +} + +// 解析DOCX文件 +const parseDocxFile = async (file) => { + try { + const arrayBuffer = await file.arrayBuffer() + + // 使用mammoth提取纯文本 + const result = await mammoth.extractRawText({ arrayBuffer: arrayBuffer }) + let text = result.value + + // 清理文本 + text = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n') + text = text.replace(/\n{3,}/g, '\n\n').trim() + + bookContent.value = text + detectChapters() + ElMessage.success('Word文档解析成功!') + } catch (error) { + console.error('DOCX解析失败:', error) + ElMessage.error(`Word文档解析失败:${error.message}`) + } +} + +// 解析TXT文件 +const parseTxtFile = (file, fileEncoding) => { + const reader = new FileReader() + reader.onload = (e) => { + let content = e.target.result + + // 如果使用GBK编码但内容出现乱码,尝试重新解码 + if (fileEncoding === 'gbk' && content.includes('�')) { + ElMessage.warning('检测到可能的编码问题,建议尝试UTF-8编码') } + + bookContent.value = content + detectChapters() + + const encodingText = fileEncoding === 'gbk' ? 'GBK/GB2312' : 'UTF-8' + ElMessage.success(`文件上传成功!(${encodingText})`) + } + reader.onerror = () => { + ElMessage.error('文件读取失败,请检查文件编码或格式') + } + + // 根据选择的编码读取文件 + if (fileEncoding === 'gbk') { + reader.readAsText(file, 'GBK') + } else { + reader.readAsText(file, 'UTF-8') } } @@ -802,6 +871,14 @@ const readFileContent = (file, encoding = null) => { const rereadWithEncoding = () => { if (!uploadedFile.value) return + const fileName = uploadedFile.value.name.toLowerCase() + + // PDF和DOCX文件不支持编码切换 + if (fileName.endsWith('.pdf') || fileName.endsWith('.docx')) { + ElMessage.warning('PDF和Word文档不支持编码切换') + return + } + ElMessage.info(`正在使用 ${selectedEncoding.value.toUpperCase()} 编码重新读取文件...`) readFileContent(uploadedFile.value.raw, selectedEncoding.value) } From 521e2b1c11a20a2b8cf3effe25e2ef2d2b64f004 Mon Sep 17 00:00:00 2001 From: GaoXiang233 <1679562189@qq.com> Date: Wed, 22 Apr 2026 19:45:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E4=BD=BF=E7=94=A8=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?pdf=20worker=E6=9B=BF=E4=BB=A3CDN=E8=B5=84=E6=BA=90=E5=B9=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=9E=84=E5=BB=BA=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将pdf.js的worker从CDN资源改为本地导入,提高加载稳定性 同时更新构建生成的文件引用 --- ...{index-8614bb7e.css => index-1b99fc6d.css} | 2 +- .../{index-e0e8b1e6.js => index-62a52142.js} | 6 +- dist/assets/pdf.worker-08ee175a.mjs | 63420 ++++++++++++++++ dist/index.html | 4 +- src/views/BookAnalysis.vue | 3 +- 5 files changed, 63428 insertions(+), 7 deletions(-) rename dist/assets/{index-8614bb7e.css => index-1b99fc6d.css} (97%) rename dist/assets/{index-e0e8b1e6.js => index-62a52142.js} (99%) create mode 100644 dist/assets/pdf.worker-08ee175a.mjs diff --git a/dist/assets/index-8614bb7e.css b/dist/assets/index-1b99fc6d.css similarity index 97% rename from dist/assets/index-8614bb7e.css rename to dist/assets/index-1b99fc6d.css index c17586f..4d388a0 100644 --- a/dist/assets/index-8614bb7e.css +++ b/dist/assets/index-1b99fc6d.css @@ -1 +1 @@ -@charset "UTF-8";.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.api-config[data-v-aa159c38]{padding:20px;max-width:100%}.config-card[data-v-aa159c38]{max-width:1600px;margin:0 auto}.card-header[data-v-aa159c38]{display:flex;justify-content:space-between;align-items:center}.config-type-selector[data-v-aa159c38]{margin-bottom:20px;text-align:center}.config-main-content[data-v-aa159c38]{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start}.config-tips-panel[data-v-aa159c38]{min-height:400px}.config-tips[data-v-aa159c38]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:20px;height:100%}.config-tips.official-tips[data-v-aa159c38]{background:#e8f4fd;border-color:#b3d9f7}.config-tips.custom-tips[data-v-aa159c38]{background:#fef4e8;border-color:#f7d9b3}.config-tips h4[data-v-aa159c38]{margin:0 0 12px;color:#2c3e50;font-size:16px;font-weight:600}.config-tips h5[data-v-aa159c38]{margin:16px 0 8px;color:#34495e;font-size:14px;font-weight:600}.tips-content p[data-v-aa159c38]{margin:0 0 12px;color:#5a6c7d;line-height:1.5}.tips-content ul[data-v-aa159c38],.tips-content ol[data-v-aa159c38]{margin:8px 0;padding-left:20px}.tips-content li[data-v-aa159c38]{margin-bottom:4px;color:#5a6c7d;line-height:1.4;font-size:13px}.purchase-info[data-v-aa159c38]{margin-top:16px;padding:12px;background:white;border:1px solid #ddd;border-radius:6px;text-align:center}.purchase-info p[data-v-aa159c38]{margin:0 0 8px;font-size:13px}.tips-note[data-v-aa159c38]{margin-top:16px;padding:8px 12px;background:#fff3cd;border:1px solid #ffeaa7;border-radius:4px}.tips-note p[data-v-aa159c38]{margin:0;font-size:12px;color:#856404}.config-form-panel[data-v-aa159c38]{min-height:400px}.config-form[data-v-aa159c38]{margin-top:16px;padding:0 8px}.model-option[data-v-aa159c38]{display:flex;justify-content:space-between;align-items:center}.model-name[data-v-aa159c38]{font-weight:500}.model-price[data-v-aa159c38]{color:#f56c6c;font-size:12px;font-weight:600}.model-description[data-v-aa159c38]{color:#909399;font-size:12px;margin-top:2px}.form-tip[data-v-aa159c38]{font-size:12px;color:#909399;margin-top:4px}.custom-model-input[data-v-aa159c38]{display:flex;gap:8px;margin-bottom:8px}.custom-models-list[data-v-aa159c38]{margin-top:8px}.max-tokens-control[data-v-aa159c38]{display:flex;flex-direction:column;gap:8px}@media (max-width: 900px){.config-main-content[data-v-aa159c38]{grid-template-columns:1fr;gap:16px}.config-tips-panel[data-v-aa159c38],.config-form-panel[data-v-aa159c38]{min-height:auto}.config-card[data-v-aa159c38]{max-width:100%}}@media (max-width: 1200px) and (min-width: 901px){.config-main-content[data-v-aa159c38]{grid-template-columns:1fr 1fr;gap:24px}}[data-v-aa159c38] .el-form-item__label{font-weight:500}[data-v-aa159c38] .el-slider__runway{margin:16px 0}[data-v-aa159c38] .el-radio-button__inner{padding:10px 20px;font-weight:500}[data-v-aa159c38] .el-alert{margin-bottom:16px}.official-config[data-v-aa159c38],.custom-config[data-v-aa159c38]{min-height:350px}.announcement-dialog[data-v-0c8048bb]{border-radius:12px}.announcement-content[data-v-0c8048bb]{padding:0}.announcement-meta[data-v-0c8048bb]{display:flex;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #ebeef5}.announcement-body[data-v-0c8048bb]{max-height:60vh;overflow-y:auto;padding:16px 0;line-height:1.6}.announcement-body[data-v-0c8048bb] h1{font-size:24px;color:#303133;margin:20px 0 16px;border-bottom:2px solid #409eff;padding-bottom:8px}.announcement-body[data-v-0c8048bb] h2{font-size:20px;color:#409eff;margin:16px 0 12px}.announcement-body[data-v-0c8048bb] h3{font-size:18px;color:#606266;margin:14px 0 10px}.announcement-body[data-v-0c8048bb] p{margin:8px 0;color:#606266}.announcement-body[data-v-0c8048bb] ul,.announcement-body[data-v-0c8048bb] ol{margin:8px 0;padding-left:20px}.announcement-body[data-v-0c8048bb] li{margin:4px 0;color:#606266}.announcement-body[data-v-0c8048bb] code{background:#f5f7fa;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;color:#e6a23c}.announcement-body[data-v-0c8048bb] pre{background:#f5f7fa;padding:12px;border-radius:6px;overflow-x:auto;margin:12px 0}.announcement-body[data-v-0c8048bb] blockquote{border-left:4px solid #409eff;background:#ecf5ff;padding:12px 16px;margin:12px 0;color:#606266}.announcement-body[data-v-0c8048bb] a{color:#409eff;text-decoration:none}.announcement-body[data-v-0c8048bb] a:hover{text-decoration:underline}.announcement-body[data-v-0c8048bb] strong{color:#303133;font-weight:600}.announcement-body[data-v-0c8048bb] table{width:100%;border-collapse:collapse;margin:12px 0}.announcement-body[data-v-0c8048bb] th,.announcement-body[data-v-0c8048bb] td{border:1px solid #ebeef5;padding:8px 12px;text-align:left}.announcement-body[data-v-0c8048bb] th{background:#f5f7fa;font-weight:600}.announcement-footer[data-v-0c8048bb]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-top:16px;border-top:1px solid #ebeef5}.footer-buttons[data-v-0c8048bb]{display:flex;gap:12px}[data-v-0c8048bb] .el-dialog__header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border-radius:12px 12px 0 0;padding:20px 24px}[data-v-0c8048bb] .el-dialog__title{color:#fff;font-weight:600;font-size:18px}[data-v-0c8048bb] .el-dialog__body{padding:24px}.dashboard-container[data-v-0bd020fe]{display:flex;height:100vh;background-color:#f5f5f5}.sidebar[data-v-0bd020fe]{width:250px;background-color:#304156;color:#fff;display:flex;flex-direction:column;transition:width .3s;overflow:hidden}.sidebar.collapsed[data-v-0bd020fe]{width:64px}.sidebar.collapsed .logo h2[data-v-0bd020fe]{display:none}.logo[data-v-0bd020fe]{height:60px;display:flex;align-items:center;justify-content:center;background-color:#2b3a4b;color:#fff;margin:0}.logo h2[data-v-0bd020fe]{margin:0;font-size:18px;white-space:nowrap}.sidebar-menu[data-v-0bd020fe]{border:none;background-color:#304156;height:calc(100vh - 60px)}.sidebar-menu .el-menu-item[data-v-0bd020fe],.sidebar-menu .el-sub-menu__title[data-v-0bd020fe]{color:#bfcbd9;border-bottom:none}.sidebar-menu .el-menu-item[data-v-0bd020fe]:hover,.sidebar-menu .el-sub-menu__title[data-v-0bd020fe]:hover{background-color:#263445;color:#409eff}.sidebar-menu .el-menu-item.is-active[data-v-0bd020fe]{background-color:#409eff;color:#fff}.main-container[data-v-0bd020fe]{flex:1;display:flex;flex-direction:column;overflow:hidden}.header[data-v-0bd020fe]{height:60px;background-color:#fff;border-bottom:1px solid #e4e7ed;display:flex;align-items:center;justify-content:space-between;padding:0 20px;box-shadow:0 1px 4px #00152914}.header-left[data-v-0bd020fe]{display:flex;align-items:center}.collapse-btn[data-v-0bd020fe]{margin-right:15px;font-size:18px}.page-title[data-v-0bd020fe]{font-size:18px;font-weight:500;color:#303133}.header-right[data-v-0bd020fe]{display:flex;align-items:center;gap:15px}.model-selector[data-v-0bd020fe]{display:flex;align-items:center}.model-selector .el-select[data-v-0bd020fe]{min-width:200px}.model-selector .el-select .el-input__inner[data-v-0bd020fe]{font-size:13px}.model-selector[data-v-0bd020fe] .el-select-group__title{font-weight:600;color:#409eff;padding:8px 12px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed}.model-selector[data-v-0bd020fe] .el-option-group .el-option{padding-left:20px}.model-selector[data-v-0bd020fe] .el-option-group:not(:last-child){border-bottom:1px solid #e4e7ed}.user-info[data-v-0bd020fe]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:5px 10px;border-radius:4px;transition:background-color .3s}.user-info[data-v-0bd020fe]:hover{background-color:#f5f7fa}.username[data-v-0bd020fe]{color:#606266;font-size:14px}.content[data-v-0bd020fe]{flex:1;padding:20px;overflow-y:auto;background-color:#f5f5f5}@media (max-width: 768px){.sidebar[data-v-0bd020fe]{position:fixed;z-index:1000;height:100vh}.main-container[data-v-0bd020fe]{margin-left:0}.content[data-v-0bd020fe]{padding:15px}}.writing-goals[data-v-04fd4519]{padding:20px}.goals-header[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.goals-overview[data-v-04fd4519]{margin-bottom:30px}.overview-card[data-v-04fd4519]{display:flex;align-items:center;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 8px #0000001a;transition:transform .2s}.overview-card[data-v-04fd4519]:hover{transform:translateY(-2px)}.card-icon[data-v-04fd4519]{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16px;font-size:20px;color:#fff}.card-icon.daily[data-v-04fd4519]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.card-icon.weekly[data-v-04fd4519]{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.card-icon.monthly[data-v-04fd4519]{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%)}.card-icon.streak[data-v-04fd4519]{background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%)}.card-content[data-v-04fd4519]{flex:1}.card-title[data-v-04fd4519]{font-size:14px;color:#666;margin-bottom:4px}.card-value[data-v-04fd4519]{font-size:24px;font-weight:700;color:#333;margin-bottom:2px}.card-subtitle[data-v-04fd4519]{font-size:12px;color:#999}.active-goals[data-v-04fd4519]{margin-bottom:30px}.goals-list[data-v-04fd4519]{display:flex;flex-direction:column;gap:16px}.goal-item[data-v-04fd4519]{background:white;border:1px solid #e4e7ed;border-radius:8px;padding:20px;transition:all .3s}.goal-item[data-v-04fd4519]:hover{border-color:#409eff;box-shadow:0 2px 12px #0000001a}.goal-item.completed[data-v-04fd4519]{background:#f0f9ff;border-color:#67c23a}.goal-header[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.goal-info[data-v-04fd4519]{display:flex;align-items:center;gap:12px}.goal-title[data-v-04fd4519]{font-size:16px;font-weight:700;color:#303133}.goal-actions[data-v-04fd4519]{display:flex;gap:8px}.goal-description[data-v-04fd4519]{color:#606266;margin-bottom:16px;line-height:1.5}.goal-progress[data-v-04fd4519]{margin-bottom:12px}.progress-info[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px}.progress-percentage[data-v-04fd4519]{font-weight:700;color:#409eff}.goal-meta[data-v-04fd4519]{display:flex;gap:20px;font-size:12px;color:#909399}.meta-item[data-v-04fd4519]{display:flex;align-items:center;gap:4px}.completion-date[data-v-04fd4519]{font-size:12px;color:#67c23a}.goal-result[data-v-04fd4519]{font-size:14px;color:#606266;background:#f8f9fa;padding:8px 12px;border-radius:4px;margin-top:8px}.empty-state[data-v-04fd4519]{text-align:center;padding:40px;color:#909399}.ml-2[data-v-04fd4519]{margin-left:8px}.active-goals-header[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.goals-controls[data-v-04fd4519]{display:flex;gap:8px}.sort-active[data-v-04fd4519]{background:#409eff!important;color:#fff!important}.sort-tip[data-v-04fd4519]{margin-bottom:16px}.sortable-goals[data-v-04fd4519]{display:flex;flex-direction:column;gap:16px}.goal-item.sortable[data-v-04fd4519]{cursor:move;border:2px dashed transparent;transition:all .3s ease}.goal-item.sortable[data-v-04fd4519]:hover{border-color:#409eff;box-shadow:0 4px 12px #409eff33}.goal-item.sortable[draggable=true][data-v-04fd4519]:active{opacity:.8;transform:rotate(2deg)}.list-move[data-v-04fd4519],.list-enter-active[data-v-04fd4519],.list-leave-active[data-v-04fd4519]{transition:all .3s ease}.list-enter-from[data-v-04fd4519],.list-leave-to[data-v-04fd4519]{opacity:0;transform:translate(30px)}.list-leave-active[data-v-04fd4519]{position:absolute;width:100%}.home-page[data-v-bcfccac0]{padding:0}.welcome-section[data-v-bcfccac0]{margin-bottom:20px}.welcome-card[data-v-bcfccac0]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border:none}.welcome-card[data-v-bcfccac0] .el-card__body{padding:40px}.welcome-content[data-v-bcfccac0]{display:flex;justify-content:space-between;align-items:center;color:#fff}.welcome-text h1[data-v-bcfccac0]{margin:0 0 10px;font-size:32px;font-weight:600}.welcome-text p[data-v-bcfccac0]{margin:0;font-size:16px;opacity:.9}.welcome-actions[data-v-bcfccac0]{display:flex;gap:15px}.stats-section[data-v-bcfccac0]{margin-bottom:20px}.stat-card[data-v-bcfccac0]{border:none;transition:transform .3s}.stat-card[data-v-bcfccac0]:hover{transform:translateY(-2px)}.stat-item[data-v-bcfccac0]{display:flex;align-items:center;gap:15px}.stat-icon[data-v-bcfccac0]{width:50px;height:50px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff}.stat-icon.novels[data-v-bcfccac0]{background:linear-gradient(135deg,#667eea,#764ba2)}.stat-icon.words[data-v-bcfccac0]{background:linear-gradient(135deg,#f093fb,#f5576c)}.stat-icon.chapters[data-v-bcfccac0]{background:linear-gradient(135deg,#4facfe,#00f2fe)}.stat-icon.tokens[data-v-bcfccac0]{background:linear-gradient(135deg,#43e97b,#38f9d7)}.stat-content[data-v-bcfccac0]{flex:1}.stat-number[data-v-bcfccac0]{font-size:24px;font-weight:600;color:#303133;line-height:1}.stat-label[data-v-bcfccac0]{font-size:14px;color:#909399;margin-top:5px}.main-content[data-v-bcfccac0]{margin-bottom:20px}.goals-card[data-v-bcfccac0],.quick-actions-card[data-v-bcfccac0]{height:100%;min-height:380px}.goals-card[data-v-bcfccac0] .el-card__body,.quick-actions-card[data-v-bcfccac0] .el-card__body{height:100%;display:flex;flex-direction:column}.goals-content[data-v-bcfccac0]{flex:1;display:flex;flex-direction:column;justify-content:flex-start;min-height:300px}.quick-actions[data-v-bcfccac0]{flex:1;display:flex;flex-direction:column;justify-content:center}.card-header[data-v-bcfccac0]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.goals-content[data-v-bcfccac0]{padding:10px 0}.goal-item[data-v-bcfccac0]{margin-bottom:20px;padding:15px;background:#fafafa;border-radius:8px;border:1px solid #f0f0f0}.goal-item[data-v-bcfccac0]:last-child{margin-bottom:15px}.goal-info[data-v-bcfccac0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.goal-label[data-v-bcfccac0]{font-size:14px;color:#606266}.goal-value[data-v-bcfccac0]{font-size:14px;font-weight:600;color:#303133}.goal-progress[data-v-bcfccac0]{position:relative}.progress-text[data-v-bcfccac0]{display:block;text-align:right;font-size:12px;color:#909399;margin-top:5px;line-height:1}.streak-info[data-v-bcfccac0]{display:flex;align-items:center;gap:8px;padding:15px;background:#f8f9fa;border-radius:8px;margin-top:auto;margin-bottom:0}.streak-icon[data-v-bcfccac0]{color:#f39c12;font-size:18px}.no-goals[data-v-bcfccac0]{padding:20px;text-align:center}.view-all-goals[data-v-bcfccac0]{text-align:center;padding:10px;border-top:1px solid #f0f0f0;margin-top:15px}.view-all-goals .el-button[data-v-bcfccac0]{color:#409eff;font-size:12px}.quick-actions[data-v-bcfccac0]{padding:10px 0}.action-grid[data-v-bcfccac0]{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;height:100%;align-content:start}.action-item[data-v-bcfccac0]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:25px 20px;border:1px solid #e4e7ed;border-radius:8px;cursor:pointer;transition:all .3s;min-height:100px;justify-content:center}.action-item[data-v-bcfccac0]:hover{border-color:#409eff;background-color:#f0f9ff;transform:translateY(-2px)}.action-icon[data-v-bcfccac0]{width:45px;height:45px;border-radius:50%;background:#409eff;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px}.recent-novels-section[data-v-bcfccac0]{margin-bottom:20px}.novels-list[data-v-bcfccac0]{display:flex;flex-direction:column;gap:15px}.novel-item[data-v-bcfccac0]{display:flex;align-items:center;gap:15px;padding:15px;border:1px solid #e4e7ed;border-radius:8px;cursor:pointer;transition:all .3s}.novel-item[data-v-bcfccac0]:hover{border-color:#409eff;background-color:#f0f9ff}.novel-cover[data-v-bcfccac0]{width:60px;height:80px;border-radius:4px;overflow:hidden;flex-shrink:0}.novel-cover img[data-v-bcfccac0]{width:100%;height:100%;object-fit:cover}.default-cover[data-v-bcfccac0]{width:100%;height:100%;background:#f5f7fa;display:flex;align-items:center;justify-content:center;color:#c0c4cc;font-size:24px}.novel-info[data-v-bcfccac0]{flex:1}.novel-title[data-v-bcfccac0]{margin:0 0 5px;font-size:16px;font-weight:600;color:#303133}.novel-desc[data-v-bcfccac0]{margin:0 0 8px;font-size:14px;color:#606266;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.novel-meta[data-v-bcfccac0]{display:flex;gap:15px;font-size:12px;color:#909399}.novel-actions[data-v-bcfccac0]{flex-shrink:0}.empty-novels[data-v-bcfccac0]{padding:40px 0}@media (max-width: 768px){.welcome-content[data-v-bcfccac0]{flex-direction:column;text-align:center;gap:20px}.goals-card[data-v-bcfccac0],.quick-actions-card[data-v-bcfccac0]{min-height:auto}.action-grid[data-v-bcfccac0]{grid-template-columns:1fr}.novel-item[data-v-bcfccac0]{flex-direction:column;text-align:center}.goals-content[data-v-bcfccac0]{min-height:auto}}.prompts-library[data-v-be8bc03c]{padding:0}.page-header[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-be8bc03c]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-be8bc03c]{margin:0;color:#606266;font-size:14px}.filter-section[data-v-be8bc03c]{margin-bottom:20px}.filter-content[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;gap:20px}.category-tabs[data-v-be8bc03c]{display:flex;gap:10px;flex-wrap:wrap}.category-btn[data-v-be8bc03c]{border-radius:20px;padding:8px 16px}.search-box[data-v-be8bc03c]{width:300px}.prompts-grid[data-v-be8bc03c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px;margin-bottom:20px}.prompt-card[data-v-be8bc03c]{height:100%}.prompt-item[data-v-be8bc03c]{height:100%;display:flex;flex-direction:column}.prompt-item[data-v-be8bc03c] .el-card__body{flex:1;display:flex;flex-direction:column}.prompt-header[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.prompt-title[data-v-be8bc03c]{display:flex;align-items:center;gap:8px;flex:1}.category-icon[data-v-be8bc03c]{font-size:18px}.prompt-title h3[data-v-be8bc03c]{margin:0;font-size:16px;color:#303133;line-height:1.4}.prompt-description[data-v-be8bc03c]{margin-bottom:15px}.prompt-description p[data-v-be8bc03c]{margin:0;color:#606266;font-size:14px;line-height:1.5}.prompt-content[data-v-be8bc03c]{flex:1;margin-bottom:15px}.content-preview[data-v-be8bc03c]{background:#f8f9fa;padding:12px;border-radius:6px;font-size:13px;color:#666;line-height:1.4;border-left:3px solid #409eff}.prompt-footer[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.prompt-tags[data-v-be8bc03c]{display:flex;gap:5px;flex-wrap:wrap}.empty-state[data-v-be8bc03c]{padding:60px 0}.tags-display[data-v-be8bc03c]{margin-top:10px}.content-input-area[data-v-be8bc03c]{width:100%}.content-toolbar[data-v-be8bc03c]{margin-bottom:8px;display:flex;gap:8px;align-items:center}.content-toolbar .el-button[data-v-be8bc03c]{border-radius:4px;font-size:12px}.use-prompt-content h4[data-v-be8bc03c]{margin:0 0 10px;color:#303133}.use-prompt-content p[data-v-be8bc03c]{margin:0 0 20px;color:#606266}.generated-prompt[data-v-be8bc03c]{margin-top:20px}.generated-prompt h5[data-v-be8bc03c]{margin:0 0 10px;color:#303133}@media (max-width: 768px){.page-header[data-v-be8bc03c]{flex-direction:column;gap:15px;text-align:center}.filter-content[data-v-be8bc03c]{flex-direction:column;gap:15px}.search-box[data-v-be8bc03c]{width:100%}.prompts-grid[data-v-be8bc03c]{grid-template-columns:1fr}.category-tabs[data-v-be8bc03c]{justify-content:center}}.import-content[data-v-be8bc03c]{padding:10px 0}.import-content .el-alert[data-v-be8bc03c] .el-alert__description{line-height:1.6}.import-content .el-alert ul[data-v-be8bc03c]{margin:10px 0 0;padding-left:20px}.import-content .el-alert li[data-v-be8bc03c]{margin:5px 0}.import-content code[data-v-be8bc03c]{background:#f1f2f6;padding:2px 6px;border-radius:3px;font-family:Courier New,monospace;font-size:12px}.file-import[data-v-be8bc03c]{min-height:200px;display:flex;align-items:center;justify-content:center}.text-import[data-v-be8bc03c]{padding:20px}.preview-section[data-v-be8bc03c]{margin-top:20px;border-top:1px solid #ebeef5;padding-top:20px}.preview-section h4[data-v-be8bc03c]{margin:0 0 15px;color:#303133;font-size:16px}.preview-list[data-v-be8bc03c]{max-height:300px;overflow-y:auto;border:1px solid #ebeef5;border-radius:6px}.preview-item[data-v-be8bc03c]{padding:12px 16px;border-bottom:1px solid #f5f7fa;transition:background-color .2s}.preview-item[data-v-be8bc03c]:last-child{border-bottom:none}.preview-item[data-v-be8bc03c]:hover{background-color:#f8f9fa}.preview-header[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.preview-title[data-v-be8bc03c]{font-weight:500;color:#303133;flex:1;margin-right:10px}.preview-description[data-v-be8bc03c]{color:#606266;font-size:13px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.el-tabs--border-card[data-v-be8bc03c] .el-tabs__content{padding:20px}.el-upload--text[data-v-be8bc03c],.el-upload-dragger[data-v-be8bc03c]{width:100%}.novel-management[data-v-b7c07dee]{padding:0}.page-header[data-v-b7c07dee]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-b7c07dee]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-b7c07dee]{margin:0;color:#606266;font-size:14px}.filter-section[data-v-b7c07dee]{margin-bottom:20px}.filter-content[data-v-b7c07dee]{display:flex;justify-content:space-between;align-items:center;gap:20px}.filter-left[data-v-b7c07dee]{display:flex;gap:15px}.novels-grid[data-v-b7c07dee]{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-bottom:20px}.novel-card[data-v-b7c07dee]{height:100%}.novel-item[data-v-b7c07dee]{height:100%;display:flex;flex-direction:column}.novel-item[data-v-b7c07dee] .el-card__body{flex:1;display:flex;flex-direction:column;padding:0}.novel-cover[data-v-b7c07dee]{position:relative;height:200px;overflow:hidden;border-radius:8px 8px 0 0}.novel-cover img[data-v-b7c07dee]{width:100%;height:100%;object-fit:cover;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.novel-status[data-v-b7c07dee]{position:absolute;top:10px;right:10px}.novel-info[data-v-b7c07dee]{flex:1;padding:15px}.novel-title[data-v-b7c07dee]{margin:0 0 8px;font-size:16px;font-weight:600;color:#303133;line-height:1.4}.novel-description[data-v-b7c07dee]{margin:0 0 15px;color:#606266;font-size:13px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.novel-meta[data-v-b7c07dee]{display:flex;flex-wrap:wrap;gap:15px;margin-bottom:10px}.meta-item[data-v-b7c07dee]{display:flex;align-items:center;gap:4px;color:#909399;font-size:12px}.novel-genre[data-v-b7c07dee]{margin-bottom:15px}.novel-actions[data-v-b7c07dee]{display:flex;gap:8px;padding:0 15px 15px;margin-top:auto}.empty-state[data-v-b7c07dee]{padding:60px 0}.cover-uploader[data-v-b7c07dee]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden;width:120px;height:160px;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.cover-uploader[data-v-b7c07dee]:hover{border-color:#409eff;background-color:#f8f9fa}.cover-uploader-placeholder[data-v-b7c07dee]{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;text-align:center}.cover-uploader-icon[data-v-b7c07dee]{font-size:24px;color:#8c939d;margin-bottom:8px}.upload-text[data-v-b7c07dee]{font-size:12px;color:#8c939d;line-height:1.2}.cover-preview[data-v-b7c07dee]{width:120px;height:160px;object-fit:cover;display:block;border-radius:6px}.cover-upload-container[data-v-b7c07dee]{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.cover-actions[data-v-b7c07dee]{display:flex;gap:8px}.tags-display[data-v-b7c07dee]{margin-top:10px}.tags-display .el-tag[data-v-b7c07dee]{margin:2px 4px 2px 0}.description-input-group[data-v-b7c07dee]{position:relative}.ai-generate-section[data-v-b7c07dee]{display:flex;align-items:center;gap:10px;margin-top:8px;padding:8px 12px;background:#f8f9fa;border-radius:4px;border:1px solid #e9ecef}.generate-tip[data-v-b7c07dee]{font-size:12px;color:#6c757d}.novel-details[data-v-b7c07dee]{max-height:600px;overflow-y:auto}.details-header[data-v-b7c07dee]{display:flex;gap:20px;margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid #ebeef5}.details-cover[data-v-b7c07dee]{flex-shrink:0}.details-cover img[data-v-b7c07dee]{width:120px;height:160px;object-fit:cover;border-radius:6px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.details-info[data-v-b7c07dee]{flex:1}.details-info h2[data-v-b7c07dee]{margin:0 0 10px;color:#303133}.details-description[data-v-b7c07dee]{margin:0 0 15px;color:#606266;line-height:1.6}.details-meta[data-v-b7c07dee]{display:flex;flex-direction:column;gap:8px}.meta-row[data-v-b7c07dee]{display:flex;align-items:center;gap:10px}.meta-label[data-v-b7c07dee]{font-weight:500;color:#303133;min-width:80px}.chapters-list[data-v-b7c07dee]{max-height:300px;overflow-y:auto}.chapter-item[data-v-b7c07dee]{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.chapter-info h4[data-v-b7c07dee]{margin:0 0 5px;font-size:14px;color:#303133}.chapter-info p[data-v-b7c07dee]{margin:0;font-size:12px;color:#909399}.writing-records[data-v-b7c07dee]{max-height:300px;overflow-y:auto}.record-item[data-v-b7c07dee]{display:flex;gap:15px;padding:12px 0;border-bottom:1px solid #f0f0f0}.record-date[data-v-b7c07dee]{flex-shrink:0;font-size:12px;color:#909399;min-width:80px}.record-content[data-v-b7c07dee]{flex:1}.record-stats[data-v-b7c07dee]{display:flex;gap:15px;font-size:13px;color:#606266;margin-bottom:5px}.record-note[data-v-b7c07dee]{font-size:12px;color:#909399}.stats-grid[data-v-b7c07dee]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:20px}.stat-item[data-v-b7c07dee]{text-align:center;padding:20px;background:#f8f9fa;border-radius:8px}.stat-value[data-v-b7c07dee]{font-size:24px;font-weight:600;color:#409eff;margin-bottom:5px}.stat-label[data-v-b7c07dee]{font-size:12px;color:#909399}.image-placeholder[data-v-b7c07dee]{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:#f5f7fa;color:#909399;font-size:12px}.image-placeholder i[data-v-b7c07dee]{font-size:24px;margin-bottom:8px}@media (max-width: 768px){.page-header[data-v-b7c07dee]{flex-direction:column;gap:15px;text-align:center}.filter-content[data-v-b7c07dee]{flex-direction:column;gap:15px}.filter-left[data-v-b7c07dee]{flex-wrap:wrap;justify-content:center}.novels-grid[data-v-b7c07dee]{grid-template-columns:1fr}.details-header[data-v-b7c07dee]{flex-direction:column;text-align:center}.stats-grid[data-v-b7c07dee]{grid-template-columns:repeat(2,1fr)}}.writing-goals[data-v-f3b7487c]{padding:0}.page-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-f3b7487c]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-f3b7487c]{margin:0;color:#606266;font-size:14px}.goals-overview[data-v-f3b7487c]{margin-bottom:30px}.overview-card[data-v-f3b7487c]{height:100%}.overview-item[data-v-f3b7487c]{display:flex;align-items:center;gap:15px}.overview-icon[data-v-f3b7487c]{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff}.overview-icon.active[data-v-f3b7487c]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.overview-icon.completed[data-v-f3b7487c]{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.overview-icon.words[data-v-f3b7487c]{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%)}.overview-icon.streak[data-v-f3b7487c]{background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%)}.overview-content[data-v-f3b7487c]{flex:1}.overview-value[data-v-f3b7487c]{font-size:24px;font-weight:600;color:#303133;margin-bottom:5px}.overview-label[data-v-f3b7487c]{font-size:14px;color:#606266}.active-goals-section[data-v-f3b7487c]{margin-bottom:30px}.active-goals-section h2[data-v-f3b7487c]{margin:0 0 20px;color:#303133}.goals-grid[data-v-f3b7487c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px}.goal-card[data-v-f3b7487c]{height:100%}.goal-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px}.goal-title[data-v-f3b7487c]{display:flex;align-items:center;gap:10px;flex:1}.goal-icon[data-v-f3b7487c]{font-size:20px}.goal-title h3[data-v-f3b7487c]{margin:0;font-size:16px;color:#303133}.goal-description[data-v-f3b7487c]{margin-bottom:20px}.goal-description p[data-v-f3b7487c]{margin:0;color:#606266;font-size:14px;line-height:1.5}.goal-progress[data-v-f3b7487c]{margin-bottom:20px}.progress-info[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.progress-text[data-v-f3b7487c]{font-size:14px;color:#303133}.progress-percentage[data-v-f3b7487c]{font-size:14px;font-weight:600;color:#409eff}.goal-timeline[data-v-f3b7487c]{margin-bottom:20px}.timeline-item[data-v-f3b7487c]{display:flex;justify-content:space-between;margin-bottom:5px;font-size:13px}.timeline-label[data-v-f3b7487c]{color:#909399}.text-danger[data-v-f3b7487c]{color:#f56c6c}.goal-footer[data-v-f3b7487c]{display:flex;gap:10px}.history-section[data-v-f3b7487c]{margin-bottom:30px}.section-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.section-header h2[data-v-f3b7487c]{margin:0;color:#303133}.filter-tabs[data-v-f3b7487c]{display:flex;gap:10px}.history-list[data-v-f3b7487c]{display:flex;flex-direction:column;gap:15px}.history-item[data-v-f3b7487c]{width:100%}.history-content[data-v-f3b7487c]{display:flex;align-items:center;gap:20px}.history-info[data-v-f3b7487c]{flex:1}.history-title[data-v-f3b7487c]{display:flex;align-items:center;gap:10px;margin-bottom:8px}.history-title h4[data-v-f3b7487c]{margin:0;font-size:16px;color:#303133}.history-description[data-v-f3b7487c]{margin:0 0 8px;color:#606266;font-size:14px}.history-meta[data-v-f3b7487c]{display:flex;gap:20px;font-size:12px;color:#909399}.history-progress[data-v-f3b7487c]{width:200px}.goal-details[data-v-f3b7487c]{max-height:600px;overflow-y:auto}.details-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #ebeef5}.details-header h3[data-v-f3b7487c]{margin:0;color:#303133}.details-content[data-v-f3b7487c]{display:flex;flex-direction:column;gap:20px}.detail-item[data-v-f3b7487c]{display:flex;margin-bottom:10px}.detail-item label[data-v-f3b7487c]{font-weight:500;color:#303133;min-width:80px}.progress-chart[data-v-f3b7487c]{padding:20px;background:#f8f9fa;border-radius:8px}.progress-chart h4[data-v-f3b7487c]{margin:0 0 15px;color:#303133}.chart-placeholder[data-v-f3b7487c]{height:200px;display:flex;align-items:center;justify-content:center;background:white;border-radius:6px;color:#909399}.progress-history h4[data-v-f3b7487c]{margin:0 0 15px;color:#303133}.history-timeline[data-v-f3b7487c]{max-height:200px;overflow-y:auto}.timeline-item[data-v-f3b7487c]{display:flex;gap:15px;padding:10px 0;border-bottom:1px solid #f0f0f0}.timeline-date[data-v-f3b7487c]{flex-shrink:0;font-size:12px;color:#909399;min-width:80px}.timeline-content[data-v-f3b7487c]{flex:1}.timeline-progress[data-v-f3b7487c]{font-size:14px;color:#409eff;font-weight:500;margin-bottom:3px}.timeline-note[data-v-f3b7487c]{font-size:12px;color:#606266}@media (max-width: 768px){.page-header[data-v-f3b7487c]{flex-direction:column;gap:15px;text-align:center}.goals-grid[data-v-f3b7487c]{grid-template-columns:1fr}.section-header[data-v-f3b7487c]{flex-direction:column;gap:15px;align-items:flex-start}.filter-tabs[data-v-f3b7487c]{flex-wrap:wrap}.history-content[data-v-f3b7487c]{flex-direction:column;align-items:flex-start}.history-progress[data-v-f3b7487c]{width:100%}}.token-billing[data-v-bda4e3ab]{padding:0}.page-header[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-bda4e3ab]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-bda4e3ab]{margin:0;color:#606266;font-size:14px}.header-actions[data-v-bda4e3ab]{display:flex;gap:10px}.account-overview[data-v-bda4e3ab]{margin-bottom:20px}.overview-card[data-v-bda4e3ab]{height:100%}.overview-card.usage[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%);color:#fff}.overview-card.input[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff}.overview-card.output[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%);color:#fff}.overview-card.total[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%);color:#fff}.overview-item[data-v-bda4e3ab]{display:flex;align-items:center;gap:15px}.overview-icon[data-v-bda4e3ab]{width:50px;height:50px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:20px}.overview-content[data-v-bda4e3ab]{flex:1}.overview-value[data-v-bda4e3ab]{font-size:24px;font-weight:600;margin-bottom:5px}.overview-label[data-v-bda4e3ab]{font-size:14px;opacity:.9}.statistics-section[data-v-bda4e3ab]{margin-bottom:20px}.card-header[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center}.card-header h3[data-v-bda4e3ab]{margin:0;font-size:18px;color:#303133}.time-filter[data-v-bda4e3ab]{margin-left:auto}.statistics-content[data-v-bda4e3ab]{padding:20px 0}.chart-container[data-v-bda4e3ab]{text-align:center}.chart-container h4[data-v-bda4e3ab]{margin:0 0 15px;font-size:16px;color:#606266}.chart-placeholder[data-v-bda4e3ab]{height:200px;background:#f8f9fa;border:2px dashed #e9ecef;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#6c757d;font-size:14px}.filter-section[data-v-bda4e3ab]{margin-bottom:20px}.filter-content[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center;padding:10px 0}.filter-left[data-v-bda4e3ab]{display:flex;gap:15px;align-items:center}.billing-records[data-v-bda4e3ab]{margin-bottom:20px}.record-stats[data-v-bda4e3ab]{display:flex;gap:20px;font-size:14px;color:#606266}.content-preview[data-v-bda4e3ab]{color:#606266;font-size:13px}.model-name[data-v-bda4e3ab]{font-weight:500;color:#409eff}.cost-amount[data-v-bda4e3ab]{font-weight:600;color:#e6a23c}.pagination-container[data-v-bda4e3ab]{margin-top:20px;display:flex;justify-content:center}.record-details[data-v-bda4e3ab]{max-height:500px;overflow-y:auto}.details-grid[data-v-bda4e3ab]{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:20px}.detail-item[data-v-bda4e3ab]{display:flex;align-items:center;gap:10px}.detail-item label[data-v-bda4e3ab]{font-weight:600;color:#606266;min-width:80px}.content-section[data-v-bda4e3ab],.response-section[data-v-bda4e3ab]{margin-bottom:20px}.content-header[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.content-section h4[data-v-bda4e3ab],.response-section h4[data-v-bda4e3ab]{margin:0;font-size:14px;color:#303133}.content-box[data-v-bda4e3ab]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:4px;padding:15px;font-size:13px;line-height:1.5;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.api-config[data-v-4a36dc73]{padding:0}.page-header[data-v-4a36dc73]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-4a36dc73]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-4a36dc73]{margin:0;color:#606266;font-size:14px}.header-actions[data-v-4a36dc73]{display:flex;gap:10px}.config-overview[data-v-4a36dc73]{margin-bottom:20px}.status-card[data-v-4a36dc73]{height:100%}.status-item[data-v-4a36dc73]{display:flex;align-items:center;gap:15px}.status-icon[data-v-4a36dc73]{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff}.status-icon.success[data-v-4a36dc73]{background:linear-gradient(135deg,#67c23a,#85ce61)}.status-icon.warning[data-v-4a36dc73]{background:linear-gradient(135deg,#e6a23c,#f0a020)}.status-icon.info[data-v-4a36dc73]{background:linear-gradient(135deg,#409eff,#66b1ff)}.status-icon.primary[data-v-4a36dc73]{background:linear-gradient(135deg,#909399,#b3b6bb)}.status-content[data-v-4a36dc73]{flex:1}.status-value[data-v-4a36dc73]{font-size:24px;font-weight:600;color:#303133;margin-bottom:5px}.status-label[data-v-4a36dc73]{font-size:14px;color:#606266}.config-list[data-v-4a36dc73]{margin-bottom:20px}.card-header[data-v-4a36dc73]{display:flex;justify-content:space-between;align-items:center}.card-header h3[data-v-4a36dc73]{margin:0;color:#303133}.config-tabs[data-v-4a36dc73]{margin-top:20px}.config-content[data-v-4a36dc73]{padding:20px 0}.config-section[data-v-4a36dc73]{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #ebeef5}.config-section[data-v-4a36dc73]:last-child{border-bottom:none}.config-section h4[data-v-4a36dc73]{margin:0 0 20px;color:#303133;font-size:16px;font-weight:600}.config-actions[data-v-4a36dc73]{display:flex;gap:10px;justify-content:flex-end;padding-top:20px;border-top:1px solid #ebeef5}.max-tokens-control[data-v-4a36dc73]{display:flex;flex-direction:column;gap:8px}.preset-templates[data-v-4a36dc73]{margin-bottom:20px}.template-grid[data-v-4a36dc73]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.template-card[data-v-4a36dc73]{padding:20px;border:1px solid #ebeef5;border-radius:8px;cursor:pointer;transition:all .3s;display:flex;gap:15px}.template-card[data-v-4a36dc73]:hover{border-color:#409eff;box-shadow:0 4px 8px #409eff33}.template-icon[data-v-4a36dc73]{font-size:32px;width:50px;height:50px;display:flex;align-items:center;justify-content:center;background:#f5f7fa;border-radius:8px}.template-content[data-v-4a36dc73]{flex:1}.template-content h4[data-v-4a36dc73]{margin:0 0 8px;color:#303133;font-size:16px}.template-content p[data-v-4a36dc73]{margin:0 0 10px;color:#606266;font-size:14px;line-height:1.4}.template-tags[data-v-4a36dc73]{display:flex;gap:5px;flex-wrap:wrap}.import-export[data-v-4a36dc73]{margin-bottom:20px}.import-export-actions[data-v-4a36dc73]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:30px}.action-group h4[data-v-4a36dc73]{margin:0 0 8px;color:#303133;font-size:16px}.action-group p[data-v-4a36dc73]{margin:0 0 15px;color:#606266;font-size:14px;line-height:1.4}@media (max-width: 768px){.page-header[data-v-4a36dc73]{flex-direction:column;gap:15px;text-align:center}.config-actions[data-v-4a36dc73]{flex-wrap:wrap;justify-content:center}.template-grid[data-v-4a36dc73],.import-export-actions[data-v-4a36dc73]{grid-template-columns:1fr}}.settings-page[data-v-fdf61afd]{padding:0}.settings-content[data-v-fdf61afd]{background:white;border-radius:8px}.settings-tabs[data-v-fdf61afd]{min-height:600px}.card-header[data-v-fdf61afd]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.data-management[data-v-fdf61afd]{padding:10px 0}.data-overview[data-v-fdf61afd]{margin-bottom:20px}.data-overview h3[data-v-fdf61afd]{margin:0 0 15px;font-size:16px;font-weight:600;color:#303133}.data-stats[data-v-fdf61afd]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:15px;margin-bottom:10px}.stat-item[data-v-fdf61afd]{text-align:center;padding:15px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.stat-label[data-v-fdf61afd]{font-size:12px;color:#6c757d;margin-bottom:5px}.stat-value[data-v-fdf61afd]{font-size:18px;font-weight:600;color:#495057}.data-section[data-v-fdf61afd]{margin-bottom:20px}.data-section h3[data-v-fdf61afd]{margin:0 0 10px;font-size:16px;font-weight:600;color:#303133}.data-section p[data-v-fdf61afd]{margin:0 0 15px;color:#606266;font-size:14px}.warning-text[data-v-fdf61afd]{color:#f56c6c!important}.data-actions[data-v-fdf61afd]{display:flex;gap:10px;flex-wrap:wrap}.about-content[data-v-fdf61afd]{padding:10px 0}.app-info[data-v-fdf61afd]{text-align:center;margin-bottom:20px}.app-logo h1[data-v-fdf61afd]{margin:0 0 20px;font-size:32px;color:#409eff}.app-details p[data-v-fdf61afd]{margin:8px 0;color:#606266}.features-list h3[data-v-fdf61afd],.update-log h3[data-v-fdf61afd]{margin:0 0 15px;font-size:16px;font-weight:600;color:#303133}.features-grid[data-v-fdf61afd]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:15px}.feature-category[data-v-fdf61afd]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:15px}.feature-category h4[data-v-fdf61afd]{margin:0 0 12px;font-size:14px;font-weight:600;color:#409eff;border-bottom:2px solid #409eff;padding-bottom:8px}.feature-category ul[data-v-fdf61afd]{margin:0;padding:0;list-style:none}.feature-category li[data-v-fdf61afd]{margin:6px 0;color:#606266;font-size:13px;line-height:1.4}.features-list ul[data-v-fdf61afd]{margin:0;padding-left:20px}.features-list li[data-v-fdf61afd]{margin:8px 0;color:#606266}.log-item[data-v-fdf61afd]{margin-bottom:20px;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:15px}.log-item.current-version[data-v-fdf61afd]{background:linear-gradient(135deg,#e3f2fd 0%,#f0f8ff 100%);border:2px solid #409eff}.log-item h4[data-v-fdf61afd]{margin:0 0 15px;font-size:15px;font-weight:600;color:#409eff;padding-bottom:8px;border-bottom:1px solid #409eff}.log-category[data-v-fdf61afd]{margin-bottom:15px}.log-category h5[data-v-fdf61afd]{margin:0 0 8px;font-size:13px;font-weight:600;color:#67c23a}.import-options[data-v-fdf61afd]{padding:10px 0}.import-options p[data-v-fdf61afd]{margin:0 0 15px;color:#606266}.import-options .el-checkbox-group[data-v-fdf61afd]{display:flex;flex-direction:column;gap:10px}.log-item ul[data-v-fdf61afd]{margin:0;padding-left:20px}.log-item li[data-v-fdf61afd]{margin:5px 0;color:#606266;font-size:14px}@media (max-width: 768px){.data-actions[data-v-fdf61afd]{flex-direction:column}.data-actions .el-button[data-v-fdf61afd]{width:100%}}:root[data-theme=light][data-v-fdf61afd]{--bg-color: #ffffff;--text-color: #303133;--border-color: #e4e7ed}:root[data-theme=dark][data-v-fdf61afd]{--bg-color: #1d1d1d;--text-color: #ffffff;--border-color: #434343}:root[data-theme=dark] .settings-page[data-v-fdf61afd]{background-color:var(--bg-color);color:var(--text-color)}:root[data-theme=dark] .el-card[data-v-fdf61afd]{background-color:#2d2d2d;border-color:var(--border-color)}.no-animations[data-v-fdf61afd] *{animation-duration:0ms!important;animation-delay:0ms!important;transition-duration:0ms!important;transition-delay:0ms!important}.chapter-management[data-v-5b2fb696]{padding:0}.page-header[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.header-content h1[data-v-5b2fb696]{margin:0 0 5px;font-size:24px;font-weight:600;color:#303133}.header-content p[data-v-5b2fb696]{margin:0;color:#606266;font-size:14px}.novel-selector[data-v-5b2fb696]{margin-bottom:20px}.selector-content[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:center}.selector-left[data-v-5b2fb696]{display:flex;align-items:center;gap:10px}.selector-label[data-v-5b2fb696]{font-weight:600;color:#303133}.novel-option[data-v-5b2fb696]{display:flex;flex-direction:column}.novel-title[data-v-5b2fb696]{font-weight:600}.novel-info[data-v-5b2fb696]{font-size:12px;color:#909399}.novel-stats[data-v-5b2fb696]{display:flex;gap:20px}.stat-item[data-v-5b2fb696]{display:flex;align-items:center;gap:5px}.stat-label[data-v-5b2fb696]{color:#606266;font-size:14px}.stat-value[data-v-5b2fb696]{font-weight:600;color:#303133}.chapters-section[data-v-5b2fb696]{margin-bottom:20px}.card-header[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.chapters-list[data-v-5b2fb696]{display:flex;flex-direction:column;gap:15px}.chapter-item[data-v-5b2fb696]{display:flex;align-items:flex-start;gap:15px;padding:15px;border:1px solid #e4e7ed;border-radius:8px;transition:all .3s}.chapter-item[data-v-5b2fb696]:hover,.chapter-item.selected[data-v-5b2fb696]{border-color:#409eff;background-color:#f0f9ff}.chapter-checkbox[data-v-5b2fb696]{flex-shrink:0;padding-top:2px}.chapter-number[data-v-5b2fb696]{flex-shrink:0;width:60px;text-align:center;font-weight:600;color:#409eff;background:#f0f9ff;padding:5px;border-radius:4px;font-size:12px}.chapter-content[data-v-5b2fb696]{flex:1}.chapter-title[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chapter-title h4[data-v-5b2fb696]{margin:0;font-size:16px;font-weight:600;color:#303133}.chapter-summary[data-v-5b2fb696]{color:#606266;font-size:14px;line-height:1.4;margin-bottom:10px}.chapter-meta[data-v-5b2fb696]{display:flex;gap:15px;font-size:12px;color:#909399}.meta-item[data-v-5b2fb696]{display:flex;align-items:center;gap:4px}.chapter-actions[data-v-5b2fb696]{flex-shrink:0;display:flex;align-items:center;gap:5px}.no-novel-selected[data-v-5b2fb696]{padding:60px 0}.tags-display[data-v-5b2fb696]{margin-top:10px}.chapter-preview[data-v-5b2fb696]{max-height:600px;overflow-y:auto}.preview-header[data-v-5b2fb696]{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #e4e7ed}.preview-header h2[data-v-5b2fb696]{margin:0 0 10px;font-size:20px;font-weight:600;color:#303133}.preview-meta[data-v-5b2fb696]{display:flex;gap:15px;font-size:14px;color:#606266}.preview-content[data-v-5b2fb696]{line-height:1.8;color:#303133}.preview-content p[data-v-5b2fb696]{margin:0 0 15px;text-indent:2em}.empty-chapters[data-v-5b2fb696]{padding:40px 0}@media (max-width: 768px){.page-header[data-v-5b2fb696]{flex-direction:column;gap:15px}.selector-content[data-v-5b2fb696]{flex-direction:column;gap:15px;align-items:flex-start}.chapter-item[data-v-5b2fb696]{flex-direction:column;gap:10px}.chapter-actions[data-v-5b2fb696]{width:100%;justify-content:flex-end}}:root,:host{--w-e-textarea-bg-color: #fff;--w-e-textarea-color: #333;--w-e-textarea-border-color: #ccc;--w-e-textarea-slight-border-color: #e8e8e8;--w-e-textarea-slight-color: #d4d4d4;--w-e-textarea-slight-bg-color: #f5f2f0;--w-e-textarea-selected-border-color: #B4D5FF;--w-e-textarea-handler-bg-color: #4290f7;--w-e-toolbar-color: #595959;--w-e-toolbar-bg-color: #fff;--w-e-toolbar-active-color: #333;--w-e-toolbar-active-bg-color: #f1f1f1;--w-e-toolbar-disabled-color: #999;--w-e-toolbar-border-color: #e8e8e8;--w-e-modal-button-bg-color: #fafafa;--w-e-modal-button-border-color: #d9d9d9}.w-e-text-container *,.w-e-toolbar *{box-sizing:border-box;margin:0;outline:none;padding:0}.w-e-text-container blockquote,.w-e-text-container li,.w-e-text-container p,.w-e-text-container td,.w-e-text-container th,.w-e-toolbar *{line-height:1.5}.w-e-text-container{background-color:var(--w-e-textarea-bg-color);color:var(--w-e-textarea-color);height:100%;position:relative}.w-e-text-container .w-e-scroll{-webkit-overflow-scrolling:touch;height:100%}.w-e-text-container [data-slate-editor]{word-wrap:break-word;border-top:1px solid transparent;min-height:100%;outline:0;padding:0 10px;white-space:pre-wrap}.w-e-text-container [data-slate-editor] p{margin:15px 0}.w-e-text-container [data-slate-editor] h1,.w-e-text-container [data-slate-editor] h2,.w-e-text-container [data-slate-editor] h3,.w-e-text-container [data-slate-editor] h4,.w-e-text-container [data-slate-editor] h5{margin:20px 0}.w-e-text-container [data-slate-editor] img{cursor:default;display:inline!important;max-width:100%;min-height:20px;min-width:20px}.w-e-text-container [data-slate-editor] span{text-indent:0}.w-e-text-container [data-slate-editor] [data-selected=true]{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-placeholder{font-style:italic;left:10px;top:17px;width:90%}.w-e-max-length-info,.w-e-text-placeholder{color:var(--w-e-textarea-slight-color);pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.w-e-max-length-info{bottom:.5em;right:1em}.w-e-bar{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-color);font-size:14px;padding:0 5px}.w-e-bar svg{fill:var(--w-e-toolbar-color);height:14px;width:14px}.w-e-bar-show{display:flex}.w-e-bar-hidden{display:none}.w-e-hover-bar{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 5px #0000001f;position:absolute}.w-e-toolbar{flex-wrap:wrap;position:relative}.w-e-bar-divider{background-color:var(--w-e-toolbar-border-color);display:inline-flex;height:40px;margin:0 5px;width:1px}.w-e-bar-item{display:flex;height:40px;padding:4px;position:relative;text-align:center}.w-e-bar-item,.w-e-bar-item button{align-items:center;justify-content:center}.w-e-bar-item button{background:transparent;border:none;color:var(--w-e-toolbar-color);cursor:pointer;display:inline-flex;height:32px;overflow:hidden;padding:0 8px;white-space:nowrap}.w-e-bar-item button:hover{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item button .title{margin-left:5px}.w-e-bar-item .active{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item .disabled{color:var(--w-e-toolbar-disabled-color);cursor:not-allowed}.w-e-bar-item .disabled svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-menu-tooltip-v5:before{background-color:var(--w-e-toolbar-active-color);border-radius:5px;color:var(--w-e-toolbar-bg-color);content:attr(data-tooltip);font-size:.75em;opacity:0;padding:5px 10px;position:absolute;text-align:center;top:40px;transition:opacity .6s;visibility:hidden;white-space:pre;z-index:1}.w-e-menu-tooltip-v5:after{border:5px solid transparent;border-bottom:5px solid var(--w-e-toolbar-active-color);content:"";opacity:0;position:absolute;top:30px;transition:opacity .6s;visibility:hidden}.w-e-menu-tooltip-v5:hover:after,.w-e-menu-tooltip-v5:hover:before{opacity:1;visibility:visible}.w-e-menu-tooltip-v5.tooltip-right:before{left:100%;top:10px}.w-e-menu-tooltip-v5.tooltip-right:after{border-bottom-color:transparent;border-left-color:transparent;border-right-color:var(--w-e-toolbar-active-color);border-top-color:transparent;left:100%;margin-left:-10px;top:16px}.w-e-bar-item-group .w-e-bar-item-menus-container{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;display:none;left:0;margin-top:40px;position:absolute;top:0;z-index:1}.w-e-bar-item-group:hover .w-e-bar-item-menus-container{display:block}.w-e-select-list{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;left:0;margin-top:40px;max-height:350px;min-width:100px;overflow-y:auto;position:absolute;top:0;z-index:1}.w-e-select-list ul{line-height:1;list-style:none}.w-e-select-list ul .selected{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li{cursor:pointer;padding:7px 0 7px 25px;position:relative;text-align:left;white-space:nowrap}.w-e-select-list ul li:hover{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li svg{left:0;margin-left:5px;margin-top:-7px;position:absolute;top:50%}.w-e-bar-bottom .w-e-select-list{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-drop-panel{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;margin-top:40px;min-width:200px;padding:10px;position:absolute;top:0;z-index:1}.w-e-bar-bottom .w-e-drop-panel{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-modal{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;color:var(--w-e-toolbar-color);font-size:14px;min-height:40px;min-width:100px;padding:20px 15px 0;position:absolute;text-align:left;z-index:1}.w-e-modal .btn-close{cursor:pointer;line-height:1;padding:5px;position:absolute;right:8px;top:7px}.w-e-modal .btn-close svg{fill:var(--w-e-toolbar-color);height:10px;width:10px}.w-e-modal .babel-container{display:block;margin-bottom:15px}.w-e-modal .babel-container span{display:block;margin-bottom:10px}.w-e-modal .button-container{margin-bottom:15px}.w-e-modal button{background-color:var(--w-e-modal-button-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);cursor:pointer;font-weight:400;height:32px;padding:4.5px 15px;text-align:center;touch-action:manipulation;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.w-e-modal input[type=number],.w-e-modal input[type=text],.w-e-modal textarea{font-feature-settings:"tnum";background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);font-variant:tabular-nums;padding:4.5px 11px;transition:all .3s;width:100%}.w-e-modal textarea{min-height:60px}body .w-e-modal,body .w-e-modal *{box-sizing:border-box}.w-e-progress-bar{background-color:var(--w-e-textarea-handler-bg-color);height:1px;position:absolute;transition:width .3s;width:0}.w-e-full-screen-container{bottom:0!important;display:flex!important;flex-direction:column!important;height:100%!important;left:0!important;margin:0!important;padding:0!important;position:fixed;right:0!important;top:0!important;width:100%!important}.w-e-full-screen-container [data-w-e-textarea=true]{flex:1!important}.w-e-text-container [data-slate-editor] code{background-color:var(--w-e-textarea-slight-bg-color);border-radius:3px;font-family:monospace;padding:3px}.w-e-panel-content-color{list-style:none;text-align:left;width:230px}.w-e-panel-content-color li{border:1px solid var(--w-e-toolbar-bg-color);border-radius:3px;cursor:pointer;display:inline-block;padding:2px}.w-e-panel-content-color li:hover{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color li .color-block{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;height:17px;width:17px}.w-e-panel-content-color .active{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color .clear{line-height:1.5;margin-bottom:5px;width:100%}.w-e-panel-content-color .clear svg{height:16px;margin-bottom:-4px;width:16px}.w-e-text-container [data-slate-editor] blockquote{background-color:var(--w-e-textarea-slight-bg-color);border-left:8px solid var(--w-e-textarea-selected-border-color);display:block;font-size:100%;line-height:1.5;margin:10px 0;padding:10px}.w-e-panel-content-emotion{font-size:20px;list-style:none;text-align:left;width:300px}.w-e-panel-content-emotion li{border-radius:3px;cursor:pointer;display:inline-block;padding:0 5px}.w-e-panel-content-emotion li:hover{background-color:var(--w-e-textarea-slight-bg-color)}.w-e-textarea-divider{border-radius:3px;margin:20px auto;padding:20px}.w-e-textarea-divider hr{background-color:var(--w-e-textarea-border-color);border:0;display:block;height:1px}.w-e-text-container [data-slate-editor] pre>code{background-color:var(--w-e-textarea-slight-bg-color);border:1px solid var(--w-e-textarea-slight-border-color);border-radius:4px;display:block;font-size:14px;padding:10px;text-indent:0}.w-e-text-container [data-slate-editor] .w-e-image-container{display:inline-block;margin:0 3px}.w-e-text-container [data-slate-editor] .w-e-image-container:hover{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-container [data-slate-editor] .w-e-selected-image-container{overflow:hidden;position:relative}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .w-e-image-dragger{background-color:var(--w-e-textarea-handler-bg-color);height:7px;position:absolute;width:7px}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-top{cursor:nwse-resize;left:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-top{cursor:nesw-resize;right:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-bottom{bottom:0;cursor:nesw-resize;left:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-bottom{bottom:0;cursor:nwse-resize;right:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container:hover,.w-e-text-container [contenteditable=false] .w-e-image-container:hover{box-shadow:none}.w-e-text-container [data-slate-editor] .table-container{border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin-top:10px;overflow-x:auto;padding:10px;width:100%}.w-e-text-container [data-slate-editor] table{border-collapse:collapse}.w-e-text-container [data-slate-editor] table td,.w-e-text-container [data-slate-editor] table th{border:1px solid var(--w-e-textarea-border-color);line-height:1.5;min-width:30px;padding:3px 5px;text-align:left}.w-e-text-container [data-slate-editor] table th{background-color:var(--w-e-textarea-slight-bg-color);font-weight:700;text-align:center}.w-e-panel-content-table{background-color:var(--w-e-toolbar-bg-color)}.w-e-panel-content-table table{border-collapse:collapse}.w-e-panel-content-table td{border:1px solid var(--w-e-toolbar-border-color);cursor:pointer;height:15px;padding:3px 5px;width:20px}.w-e-panel-content-table td.active{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-textarea-video-container{background-image:linear-gradient(45deg,#eee 25%,transparent 0,transparent 75%,#eee 0,#eee),linear-gradient(45deg,#eee 25%,#fff 0,#fff 75%,#eee 0,#eee);background-position:0 0,10px 10px;background-size:20px 20px;border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin:10px auto 0;padding:10px 0;text-align:center}.w-e-text-container [data-slate-editor] pre>code{word-wrap:normal;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;-webkit-hyphens:none;hyphens:none;line-height:1.5;margin:.5em 0;overflow:auto;padding:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}.w-e-text-container [data-slate-editor] pre>code .token.cdata,.w-e-text-container [data-slate-editor] pre>code .token.comment,.w-e-text-container [data-slate-editor] pre>code .token.doctype,.w-e-text-container [data-slate-editor] pre>code .token.prolog{color:#708090}.w-e-text-container [data-slate-editor] pre>code .token.punctuation{color:#999}.w-e-text-container [data-slate-editor] pre>code .token.namespace{opacity:.7}.w-e-text-container [data-slate-editor] pre>code .token.boolean,.w-e-text-container [data-slate-editor] pre>code .token.constant,.w-e-text-container [data-slate-editor] pre>code .token.deleted,.w-e-text-container [data-slate-editor] pre>code .token.number,.w-e-text-container [data-slate-editor] pre>code .token.property,.w-e-text-container [data-slate-editor] pre>code .token.symbol,.w-e-text-container [data-slate-editor] pre>code .token.tag{color:#905}.w-e-text-container [data-slate-editor] pre>code .token.attr-name,.w-e-text-container [data-slate-editor] pre>code .token.builtin,.w-e-text-container [data-slate-editor] pre>code .token.char,.w-e-text-container [data-slate-editor] pre>code .token.inserted,.w-e-text-container [data-slate-editor] pre>code .token.selector,.w-e-text-container [data-slate-editor] pre>code .token.string{color:#690}.w-e-text-container [data-slate-editor] pre>code .language-css .token.string,.w-e-text-container [data-slate-editor] pre>code .style .token.string,.w-e-text-container [data-slate-editor] pre>code .token.entity,.w-e-text-container [data-slate-editor] pre>code .token.operator,.w-e-text-container [data-slate-editor] pre>code .token.url{color:#9a6e3a}.w-e-text-container [data-slate-editor] pre>code .token.atrule,.w-e-text-container [data-slate-editor] pre>code .token.attr-value,.w-e-text-container [data-slate-editor] pre>code .token.keyword{color:#07a}.w-e-text-container [data-slate-editor] pre>code .token.class-name,.w-e-text-container [data-slate-editor] pre>code .token.function{color:#dd4a68}.w-e-text-container [data-slate-editor] pre>code .token.important,.w-e-text-container [data-slate-editor] pre>code .token.regex,.w-e-text-container [data-slate-editor] pre>code .token.variable{color:#e90}.w-e-text-container [data-slate-editor] pre>code .token.bold,.w-e-text-container [data-slate-editor] pre>code .token.important{font-weight:700}.w-e-text-container [data-slate-editor] pre>code .token.italic{font-style:italic}.w-e-text-container [data-slate-editor] pre>code .token.entity{cursor:help}.writer-container[data-v-afccd996]{height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}.title-bar[data-v-afccd996]{height:50px;background:white;border-bottom:1px solid #e4e7ed;display:flex;align-items:center;padding:0 20px;flex-shrink:0}.title-left[data-v-afccd996]{display:flex;align-items:center;gap:15px}.novel-title[data-v-afccd996]{font-size:16px;font-weight:600;color:#303133}.tabs-bar[data-v-afccd996]{background:white;border-bottom:1px solid #e4e7ed;padding:0 20px;flex-shrink:0}.main-tabs[data-v-afccd996],.main-tabs .el-tabs__header[data-v-afccd996]{margin:0}.main-tabs .el-tabs__nav-wrap[data-v-afccd996]:after{display:none}.main-content[data-v-afccd996]{flex:1;display:flex;gap:16px;padding:16px;overflow:hidden}.left-panel[data-v-afccd996]{width:280px;flex-shrink:0}.editor-panel[data-v-afccd996]{flex:1;min-width:0}.card-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.editor-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;width:100%}.editor-header-left[data-v-afccd996]{flex:1;display:flex;flex-direction:column;gap:8px}.chapter-title[data-v-afccd996]{margin:0;font-size:18px;font-weight:600;color:#303133;line-height:1.4}.chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:12px;font-size:13px;color:#909399}.word-count[data-v-afccd996]{font-weight:500;color:#606266}.editor-header-right[data-v-afccd996]{flex-shrink:0;margin-left:20px}.saving-indicator[data-v-afccd996]{color:#409eff!important;animation:pulse-afccd996 1.5s infinite}@keyframes pulse-afccd996{0%,to{opacity:1}50%{opacity:.6}}.editor-wrapper[data-v-afccd996] .w-e-text-container{background-color:#fcfcfc;border:none}.editor-wrapper[data-v-afccd996] .w-e-text{font-family:Microsoft YaHei,PingFang SC,Hiragino Sans GB,Source Han Sans CN,WenQuanYi Micro Hei,sans-serif;font-size:16px;line-height:2;color:#2c3e50;padding:30px 40px;letter-spacing:.5px;text-align:justify}.editor-wrapper[data-v-afccd996] .w-e-text p{margin:0 0 1.2em;text-indent:2em;line-height:2}.editor-wrapper[data-v-afccd996] .w-e-text h1,.editor-wrapper[data-v-afccd996] .w-e-text h2,.editor-wrapper[data-v-afccd996] .w-e-text h3{margin:1.5em 0 1em;line-height:1.6;text-indent:0}.editor-wrapper[data-v-afccd996] .w-e-text h1{font-size:24px;font-weight:600}.editor-wrapper[data-v-afccd996] .w-e-text h2{font-size:20px;font-weight:600}.editor-wrapper[data-v-afccd996] .w-e-text h3{font-size:18px;font-weight:600}.chapters-list[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.chapter-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.chapter-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.chapter-item.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.chapter-info[data-v-afccd996]{flex:1}.chapter-info h4[data-v-afccd996]{margin:0 0 4px;font-size:14px;color:#303133}.chapter-info p[data-v-afccd996]{margin:0 0 4px;font-size:13px;color:#606266;line-height:1.4}.chapter-meta[data-v-afccd996]{font-size:12px;color:#909399}.chapter-actions[data-v-afccd996]{display:flex;gap:4px}.empty-chapters[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.editor-container[data-v-afccd996]{height:calc(100vh - 300px);border:1px solid #e4e7ed;border-radius:6px;overflow:hidden}.editor-wrapper[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.preview-container[data-v-afccd996]{height:calc(100vh - 300px);border:1px solid #e4e7ed;border-radius:6px;overflow-y:auto;padding:20px;background:white}.preview-content[data-v-afccd996]{line-height:1.8;color:#303133}.chapter-generate-content[data-v-afccd996]{padding:0}.generate-config-section[data-v-afccd996]{margin-bottom:16px}.config-card-modern[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.config-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.config-left[data-v-afccd996]{display:flex;align-items:center;gap:12px}.config-title[data-v-afccd996]{font-weight:600;color:#303133}.config-item[data-v-afccd996]{margin-bottom:0}.config-item .el-form-item__label[data-v-afccd996]{font-size:12px;color:#606266;font-weight:500}.checkbox-group[data-v-afccd996]{display:flex;gap:8px;flex-wrap:wrap}.checkbox-group-horizontal[data-v-afccd996]{display:flex;gap:24px;align-items:center;flex-wrap:wrap}.section-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title[data-v-afccd996]{font-size:16px;font-weight:600;color:#303133;margin:0}.materials-tabs[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.materials-tabs .el-tabs__header[data-v-afccd996]{margin:0;background-color:#f8f9fa}.materials-tabs .el-tabs__nav-wrap[data-v-afccd996]:after{display:none}.tab-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#fafbfc;border-bottom:1px solid #e4e7ed;min-height:48px;flex-wrap:nowrap}.tab-count[data-v-afccd996]{font-size:12px;color:#606266}.materials-grid[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;padding:16px;max-height:300px;overflow-y:auto}.material-card[data-v-afccd996]{border:2px solid #e4e7ed;border-radius:6px;padding:12px;cursor:pointer;transition:all .2s;background-color:#fff;position:relative}.material-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff;transform:translateY(-1px);box-shadow:0 2px 8px #409eff1a}.material-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.material-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.material-name[data-v-afccd996]{font-size:14px;font-weight:600;color:#303133;line-height:1.2}.material-desc[data-v-afccd996]{font-size:12px;color:#606266;line-height:1.4;margin:0 0 8px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.material-tags[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:4px}.empty-materials[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.category-selection-modern[data-v-afccd996]{margin-bottom:16px}.category-header[data-v-afccd996]{font-size:14px;font-weight:600;color:#303133;margin-bottom:12px}.category-grid[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.category-card[data-v-afccd996]{display:flex;flex-direction:column;align-items:center;padding:12px 8px;border:2px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .2s;background-color:#fff}.category-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.category-card.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;color:#409eff}.category-icon[data-v-afccd996]{font-size:20px;margin-bottom:4px}.category-name[data-v-afccd996]{font-size:12px;font-weight:500;text-align:center}.prompt-selection-modern[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.prompt-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.prompt-list-modern[data-v-afccd996]{max-height:250px;overflow-y:auto;padding:8px}.prompt-item-modern[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .2s;background-color:#fff}.prompt-item-modern[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-item-modern.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.prompt-content[data-v-afccd996]{flex:1}.prompt-title[data-v-afccd996]{font-size:14px;font-weight:600;color:#303133;margin:0 0 4px}.prompt-desc[data-v-afccd996]{font-size:12px;color:#606266;margin:0 0 8px;line-height:1.4}.prompt-meta[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.prompt-actions[data-v-afccd996]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.variables-section[data-v-afccd996]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.variables-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.variables-form[data-v-afccd996]{padding:16px}.variable-item[data-v-afccd996]{margin-bottom:16px}.variable-label[data-v-afccd996]{display:block;font-size:12px;color:#606266;font-weight:500;margin-bottom:4px}.preview-section[data-v-afccd996]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.preview-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.preview-actions[data-v-afccd996]{display:flex;gap:8px}.preview-content[data-v-afccd996]{padding:16px}.preview-textarea[data-v-afccd996]{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5}.generate-actions[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding:16px 0 0;border-top:1px solid #e4e7ed}.action-info[data-v-afccd996]{display:flex;align-items:center;gap:8px;font-size:13px;color:#606266}.action-buttons[data-v-afccd996]{display:flex;gap:12px}.optimize-dialog-content[data-v-afccd996]{padding:0}.current-text-section[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.text-info[data-v-afccd996]{display:flex;gap:16px;font-size:12px;color:#606266}.current-text-content[data-v-afccd996]{padding:16px}.current-text-area[data-v-afccd996]{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5}.text-actions[data-v-afccd996]{padding:12px 16px;background-color:#f8f9fa;border-top:1px solid #e4e7ed;display:flex;gap:8px}.optimize-prompt-section[data-v-afccd996]{display:flex;flex-direction:column;gap:16px}.optimize-type-selection[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.type-header[data-v-afccd996]{padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.type-options[data-v-afccd996]{padding:16px}.optimize-prompt-selection[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.prompt-list-optimize[data-v-afccd996]{max-height:200px;overflow-y:auto;padding:8px}.prompt-item-optimize[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:10px;border:1px solid #e4e7ed;border-radius:4px;margin-bottom:6px;cursor:pointer;transition:all .2s;background-color:#fff}.prompt-item-optimize[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-item-optimize.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.optimize-variables[data-v-afccd996],.optimize-preview[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.optimize-actions[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding:16px 0 0;border-top:1px solid #e4e7ed}.ai-tools[data-v-afccd996]{padding:10px}.ai-section[data-v-afccd996]{margin-bottom:10px}.form-item-with-ai[data-v-afccd996]{display:flex;align-items:center}.form-item-with-ai .el-input[data-v-afccd996]{flex:1}.form-item-with-ai .el-button[data-v-afccd996]{margin-top:8px}.dialogue[data-v-afccd996]{font-style:italic;color:#2c3e50;padding-left:16px;border-left:3px solid #409eff;margin:8px 0}.characters-list[data-v-afccd996]{max-height:calc(100vh - 260px);overflow-y:auto}.character-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.character-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.character-item.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.character-avatar[data-v-afccd996]{width:40px;height:40px;border-radius:50%;overflow:hidden;margin-right:10px}.character-avatar img[data-v-afccd996]{width:100%;height:100%;object-fit:cover}.default-avatar[data-v-afccd996]{width:100%;height:100%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}.character-content[data-v-afccd996]{display:flex;align-items:center;flex:1;cursor:pointer}.character-info[data-v-afccd996]{flex:1}.character-info h4[data-v-afccd996]{margin:0 0 4px;font-size:14px;color:#303133}.character-info p[data-v-afccd996]{margin:0 0 4px;font-size:13px;color:#606266;line-height:1.4}.character-meta[data-v-afccd996]{display:flex;align-items:center;gap:6px;margin:4px 0;flex-wrap:wrap}.character-meta .age-text[data-v-afccd996]{font-size:12px;color:#909399;margin-left:4px}.character-desc[data-v-afccd996]{font-size:12px;color:#666;margin:4px 0;line-height:1.3;max-height:2.6em;overflow:hidden;text-overflow:ellipsis}.character-desc-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.character-desc-truncated[data-v-afccd996]:hover{color:#303133}.character-tags[data-v-afccd996]{margin-top:4px}.character-tags .el-tag[data-v-afccd996]{margin-right:4px;margin-bottom:4px}.character-item .character-actions[data-v-afccd996]{flex-shrink:0;margin-left:8px}.chapter-desc[data-v-afccd996]{font-size:12px;color:#909399;margin-top:4px;line-height:1.3}.chapter-desc-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.chapter-desc-truncated[data-v-afccd996]:hover{color:#606266}.chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;margin-top:4px}.panel-content[data-v-afccd996]{height:calc(100vh - 150px);overflow:hidden}.corpus-item[data-v-afccd996]{flex-direction:column;align-items:flex-start}.event-item[data-v-afccd996]{align-items:flex-start}.event-time[data-v-afccd996]{margin-left:8px;color:#c0c4cc}.empty-state[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.worldview-list[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.worldview-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.worldview-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.worldview-content[data-v-afccd996]{flex:1;cursor:pointer}.worldview-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.worldview-header h4[data-v-afccd996]{margin:0 8px 0 0;font-size:14px;color:#303133;flex:1}.worldview-description[data-v-afccd996]{margin:6px 0;font-size:13px;color:#606266;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.worldview-description-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.worldview-description-truncated[data-v-afccd996]:hover{color:#303133}.worldview-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;margin-top:6px}.worldview-meta .create-time[data-v-afccd996]{font-size:12px;color:#909399}.worldview-meta .ai-generated[data-v-afccd996]{font-size:11px;color:#67c23a;background-color:#f0f9ff;padding:2px 6px;border-radius:10px;border:1px solid #b3d8ff}.worldview-actions[data-v-afccd996]{flex-shrink:0;margin-left:8px}.corpus-list[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.corpus-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:flex-start}.corpus-content[data-v-afccd996]{flex:1;text-align:left}.corpus-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.corpus-header[data-v-afccd996],.worldview-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.corpus-header h4[data-v-afccd996]{margin:0;font-size:14px;color:#303133}.corpus-preview[data-v-afccd996]{margin:8px 0;font-size:13px;color:#606266}.corpus-preview-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.corpus-preview-truncated[data-v-afccd996]:hover{color:#303133}.corpus-actions[data-v-afccd996]{display:flex;gap:4px}.events-timeline[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.event-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.event-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.event-marker[data-v-afccd996]{width:10px;height:10px;border-radius:50%;background-color:#409eff;margin-right:10px}.event-content[data-v-afccd996]{flex:1}.event-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.event-content h4[data-v-afccd996]{margin:0;font-size:14px;color:#303133}.event-actions[data-v-afccd996]{opacity:0;transition:opacity .3s}.event-item:hover .event-actions[data-v-afccd996]{opacity:1}.chapter-status-dropdown .el-select-dropdown__item[data-v-afccd996]{padding:6px 16px;font-size:12px}.chapter-status-dropdown .el-select-dropdown__item.selected[data-v-afccd996]{font-weight:600}.chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.chapter-meta .el-select[data-v-afccd996]{min-width:70px}.chapter-meta .el-select .el-input__wrapper[data-v-afccd996]{padding:0 8px;height:24px;font-size:12px}.new-optimize-container[data-v-afccd996]{max-height:70vh;overflow-y:auto}.optimize-config-card[data-v-afccd996],.optimize-result-card[data-v-afccd996]{height:600px;display:flex;flex-direction:column}.optimize-config-card .el-card__body[data-v-afccd996],.optimize-result-card .el-card__body[data-v-afccd996]{flex:1;overflow-y:auto}.prompt-selection[data-v-afccd996]{margin-bottom:20px}.prompt-selection h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px;font-weight:600}.prompt-list[data-v-afccd996]{display:flex;flex-direction:column;gap:8px}.prompt-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .3s}.prompt-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-item.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.prompt-title[data-v-afccd996]{font-size:13px;font-weight:600;color:#303133;margin-bottom:4px}.prompt-desc[data-v-afccd996]{font-size:11px;color:#606266;line-height:1.4}.custom-prompt[data-v-afccd996]{margin-bottom:20px}.custom-prompt h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px;font-weight:600}.original-content-preview[data-v-afccd996]{margin-bottom:20px}.original-content-preview h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px;font-weight:600}.content-preview[data-v-afccd996]{padding:12px;background-color:#f8f9fa;border-radius:6px;font-size:12px;color:#606266;line-height:1.5;max-height:120px;overflow-y:auto;word-wrap:break-word}.content-stats[data-v-afccd996]{margin-top:8px;font-size:11px;color:#909399}.streaming-area[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.streaming-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e4e7ed}.streaming-status[data-v-afccd996]{color:#409eff;font-size:14px;font-weight:500}.streaming-content-box[data-v-afccd996]{flex:1;background-color:#f8f9fa;border-radius:6px;padding:16px;overflow-y:auto;min-height:300px}.streaming-text[data-v-afccd996]{font-size:14px;line-height:1.8;color:#303133;white-space:pre-wrap;word-wrap:break-word}.result-area[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.result-content[data-v-afccd996]{flex:1;background-color:#fff;border:1px solid #e4e7ed;border-radius:6px;padding:16px;font-size:14px;line-height:1.8;color:#303133;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word;min-height:300px}.result-stats[data-v-afccd996]{margin-top:12px;display:flex;justify-content:space-between;font-size:12px;color:#909399}.empty-result[data-v-afccd996]{height:100%;display:flex;align-items:center;justify-content:center}.dialog-footer[data-v-afccd996]:has(.action-info){justify-content:space-between;align-items:center;padding:16px 0 0;border-top:1px solid #e4e7ed}.dialog-footer .action-info[data-v-afccd996]{display:flex;align-items:center;gap:8px;font-size:13px;color:#606266}.dialog-footer .action-buttons[data-v-afccd996]{display:flex;gap:12px}.streaming-content-area[data-v-afccd996]{margin-bottom:16px}.streaming-card[data-v-afccd996]{border:1px solid #67c23a;background-color:#f0f9ff}.streaming-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;font-weight:500;color:#67c23a}.streaming-content[data-v-afccd996]{max-height:300px;overflow-y:auto;padding:12px;background-color:#fff;border-radius:6px;border:1px solid #e4e7ed}.streaming-text[data-v-afccd996]{line-height:1.8;font-size:14px;color:#303133;white-space:pre-wrap;word-break:break-all}.streaming-text-plain[data-v-afccd996]{margin:0;line-height:1.6;font-size:13px;color:#606266;font-family:Courier New,monospace;white-space:pre-wrap;word-break:break-all}.streaming-content[data-v-afccd996]::-webkit-scrollbar{width:6px}.streaming-content[data-v-afccd996]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.streaming-content[data-v-afccd996]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.streaming-content[data-v-afccd996]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.section-desc[data-v-afccd996]{margin:0 0 12px;font-size:13px;color:#909399;line-height:1.4}.ai-button-group[data-v-afccd996]{display:flex;align-items:center}.prompt-dialog-content[data-v-afccd996]{max-height:600px;overflow-y:auto}.prompt-list h4[data-v-afccd996]{margin:0 0 16px;color:#303133;font-size:16px}.prompt-cards[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:20px}.prompt-card[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;padding:12px;cursor:pointer;transition:all .3s;background-color:#fff}.prompt-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff;transform:translateY(-2px);box-shadow:0 4px 8px #409eff1a}.prompt-card.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.prompt-card-header h5[data-v-afccd996]{margin:0 0 8px;font-size:14px;color:#303133;font-weight:600}.prompt-card-description p[data-v-afccd996]{margin:0 0 8px;font-size:12px;color:#606266;line-height:1.4}.prompt-card-tags[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:4px}.prompt-card-tags .el-tag[data-v-afccd996]{font-size:11px;height:20px;line-height:18px}.empty-prompts[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.prompt-variables[data-v-afccd996]{margin:20px 0;padding:16px;background-color:#f9f9f9;border-radius:6px}.prompt-variables h4[data-v-afccd996]{margin:0 0 16px;color:#303133;font-size:14px}.final-prompt[data-v-afccd996]{margin-top:20px}.final-prompt h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px}.chapter-generate-content[data-v-afccd996]{max-height:70vh;overflow:hidden}.materials-section[data-v-afccd996],.prompt-section[data-v-afccd996]{height:500px;overflow-y:auto}.materials-section h4[data-v-afccd996],.prompt-section h4[data-v-afccd996]{margin:0 0 16px;color:#303133;font-size:16px;font-weight:600}.config-card[data-v-afccd996],.materials-card[data-v-afccd996],.prompt-selection-card[data-v-afccd996],.variables-card[data-v-afccd996],.preview-card[data-v-afccd996]{margin-bottom:16px}.materials-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.materials-count[data-v-afccd996]{font-size:12px;color:#409eff;background-color:#ecf5ff;padding:2px 8px;border-radius:12px;font-weight:600;border:1px solid #b3d8ff}.materials-list[data-v-afccd996]{max-height:200px;overflow-y:auto}.material-item[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:10px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;background-color:#fff}.material-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.material-item.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.material-info[data-v-afccd996]{flex:1}.material-info h5[data-v-afccd996]{margin:0 0 4px;font-size:14px;color:#303133;font-weight:600}.material-info p[data-v-afccd996]{margin:0;font-size:12px;color:#606266;line-height:1.4}.material-tags[data-v-afccd996],.material-type[data-v-afccd996]{display:flex;gap:4px}.category-selection-card[data-v-afccd996]{margin-bottom:16px}.category-tabs[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:8px}.category-tab[data-v-afccd996]{display:flex;flex-direction:column;align-items:center;padding:8px 12px;border:1px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .3s;background-color:#fff;min-width:70px;text-align:center}.category-tab[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.category-tab.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.category-icon[data-v-afccd996]{font-size:16px;margin-bottom:4px}.category-name[data-v-afccd996]{font-size:11px;color:#606266;line-height:1.2}.category-tab.active .category-name[data-v-afccd996]{color:#409eff;font-weight:600}.prompt-cards-grid[data-v-afccd996]{display:grid;grid-template-columns:1fr;gap:8px;max-height:250px;overflow-y:auto}.prompt-card-small[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:6px;padding:10px;cursor:pointer;transition:all .3s;background-color:#fff}.prompt-card-small[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-card-small.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.prompt-card-small h5[data-v-afccd996]{margin:0 0 6px;font-size:13px;color:#303133;font-weight:600}.prompt-card-small p[data-v-afccd996]{margin:0 0 6px;font-size:11px;color:#606266;line-height:1.3}.prompt-tags[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:4px}.prompt-tags .el-tag[data-v-afccd996]{font-size:10px;height:18px;line-height:16px}.variables-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.dialog-footer[data-v-afccd996]{display:flex;justify-content:flex-end;gap:12px}.context-variable-container[data-v-afccd996]{display:flex;flex-direction:column;gap:8px}.context-actions[data-v-afccd996]{display:flex;gap:8px;justify-content:flex-end}.context-chapter-option[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.context-chapter-option .chapter-title[data-v-afccd996]{font-size:13px;color:#303133;font-weight:500;flex:1}.context-chapter-option .chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px}.context-chapter-option .word-count[data-v-afccd996]{font-size:11px;color:#909399}.context-tab-actions[data-v-afccd996]{display:flex;gap:8px}.batch-generate-content[data-v-afccd996]{max-height:70vh;overflow-y:auto}.config-section[data-v-afccd996],.streaming-section[data-v-afccd996],.results-section[data-v-afccd996]{margin-bottom:16px}.character-type-options[data-v-afccd996]{display:flex;gap:16px}.streaming-content-container[data-v-afccd996]{max-height:300px;overflow-y:auto;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafafa}.streaming-content[data-v-afccd996]{padding:16px;font-family:Courier New,monospace;font-size:14px;line-height:1.6;color:#303133;white-space:pre-wrap}.results-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.result-actions[data-v-afccd996]{display:flex;gap:8px}.generated-characters-grid[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:16px;max-height:400px;overflow-y:auto}.generated-character-card[data-v-afccd996]{border:2px solid #e4e7ed;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s;background-color:#fff}.generated-character-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.generated-character-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.character-header[data-v-afccd996]{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}.character-avatar-preview[data-v-afccd996]{flex-shrink:0}.character-avatar-preview .default-avatar[data-v-afccd996]{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}.character-basic-info[data-v-afccd996]{flex:1}.character-basic-info h4[data-v-afccd996]{margin:0 0 8px;font-size:16px;color:#303133;font-weight:600}.character-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.age-text[data-v-afccd996]{font-size:12px;color:#909399}.selection-indicator[data-v-afccd996]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.selected-icon[data-v-afccd996]{color:#409eff;font-size:18px}.character-details[data-v-afccd996]{border-top:1px solid #f0f0f0;padding-top:12px}.detail-item[data-v-afccd996]{margin-bottom:8px}.detail-item label[data-v-afccd996]{font-size:12px;color:#909399;font-weight:600;margin-bottom:4px;display:block}.detail-item p[data-v-afccd996]{margin:0;font-size:13px;color:#606266;line-height:1.4;max-height:40px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.character-tags-preview[data-v-afccd996]{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px}.character-tags-preview .el-tag[data-v-afccd996]{font-size:10px;height:18px;line-height:16px}.character-actions[data-v-afccd996],.world-actions[data-v-afccd996]{display:flex;gap:8px}.world-generate-content[data-v-afccd996]{max-height:70vh;overflow-y:auto}.world-type-options[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:8px;align-items:center}.world-type-options .el-checkbox[data-v-afccd996]{margin:0;white-space:nowrap;min-width:fit-content}.generated-settings-list[data-v-afccd996]{display:flex;flex-direction:column;gap:12px;max-height:400px;overflow-y:auto}.generated-setting-card[data-v-afccd996]{border:2px solid #e4e7ed;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s;background-color:#fff}.generated-setting-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.generated-setting-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.setting-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.setting-basic-info[data-v-afccd996]{flex:1}.setting-basic-info h4[data-v-afccd996]{margin:0 0 8px;font-size:16px;color:#303133;font-weight:600}.setting-content p[data-v-afccd996]{margin:0;font-size:14px;color:#606266;line-height:1.6;max-height:80px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}.streaming-status-card[data-v-afccd996]{margin-top:16px;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafafa}.streaming-header[data-v-afccd996]{padding:12px 16px;background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;border-radius:6px 6px 0 0}.streaming-title[data-v-afccd996]{font-weight:600;color:#303133}.streaming-content-display[data-v-afccd996]{padding:16px;max-height:200px;overflow-y:auto;font-family:Courier New,monospace;font-size:13px;line-height:1.6;color:#303133;white-space:pre-wrap}.event-content p[data-v-afccd996]{margin:0 0 4px;font-size:13px;color:#606266;line-height:1.4}.event-desc-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.event-desc-truncated[data-v-afccd996]:hover{color:#303133}.event-meta[data-v-afccd996]{font-size:12px;color:#909399}.empty-editor[data-v-afccd996]{text-align:center;padding:80px 20px;color:#909399}.empty-icon[data-v-afccd996]{font-size:48px;margin-bottom:16px;opacity:.5}.selected-prompt-info[data-v-afccd996]{color:#409eff;font-size:12px;margin-left:5px}.ai-single-chapter-content[data-v-afccd996],.ai-batch-chapter-content[data-v-afccd996],.ai-optimize-content[data-v-afccd996]{padding:10px 0}.optimize-input-card[data-v-afccd996],.optimize-result-card[data-v-afccd996]{height:100%}.optimized-content[data-v-afccd996],.empty-result[data-v-afccd996]{padding:20px;text-align:center;color:#909399}.optimized-content .el-textarea[data-v-afccd996]{height:100%}.streaming-content-area[data-v-afccd996]{margin-top:20px;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafafa}.streaming-card[data-v-afccd996]{margin:0;border:none;background:transparent}.streaming-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;border-radius:6px 6px 0 0}.streaming-content[data-v-afccd996]{padding:16px;max-height:300px;overflow-y:auto}.streaming-text-plain[data-v-afccd996]{font-family:Courier New,monospace;font-size:13px;line-height:1.6;color:#303133;white-space:pre-wrap;margin:0}.streaming-text[data-v-afccd996]{font-size:14px;line-height:1.6;color:#303133;background-color:#fff;border:1px solid #e4e7ed;border-radius:6px;padding:12px;font-family:Consolas,Monaco,Courier New,monospace;white-space:pre-wrap;word-wrap:break-word;min-height:100px}.streaming-text[data-v-afccd996]:after{content:"▋";color:#409eff;animation:blink-afccd996 1s infinite}@keyframes blink-afccd996{0%,50%{opacity:1}51%,to{opacity:0}}.editor-panel .streaming-content-area[data-v-afccd996]{margin:16px 0;border:2px solid #409eff;border-radius:8px;background:linear-gradient(135deg,#f0f8ff 0%,#e6f3ff 100%)}.editor-panel .streaming-card[data-v-afccd996]{background:transparent;border:none}.editor-panel .streaming-header .streaming-title[data-v-afccd996]{color:#409eff;font-weight:600}.new-continue-container[data-v-afccd996]{height:600px;max-height:80vh}.continue-config-card[data-v-afccd996],.continue-result-card[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.continue-config-card .el-card__body[data-v-afccd996],.continue-result-card .el-card__body[data-v-afccd996]{flex:1;overflow-y:auto;padding:16px}.continue-direction[data-v-afccd996]{margin-bottom:20px}.continue-direction h4[data-v-afccd996]{margin:0 0 12px;font-size:14px;color:var(--el-text-color-primary)}.continue-word-count[data-v-afccd996]{margin-bottom:20px}.continue-word-count h4[data-v-afccd996]{margin:0 0 12px;font-size:14px;color:var(--el-text-color-primary)}.word-count-tips[data-v-afccd996]{margin-top:8px;font-size:12px;color:var(--el-text-color-secondary)}.current-content-preview[data-v-afccd996]{margin-bottom:20px}.current-content-preview h4[data-v-afccd996]{margin:0 0 12px;font-size:14px;color:var(--el-text-color-primary)}.content-summary[data-v-afccd996]{padding:8px 12px;background-color:var(--el-bg-color-page);border:1px solid var(--el-border-color-light);border-radius:6px;font-size:13px;line-height:1.5;color:var(--el-text-color-regular);max-height:80px;overflow-y:auto}.streaming-content-box[data-v-afccd996],.result-content[data-v-afccd996]{max-height:400px;overflow-y:auto}.empty-result[data-v-afccd996]{min-height:300px}.materials-list[data-v-afccd996]{max-height:400px;overflow-y:auto}.chapter-material-card[data-v-afccd996]{padding:14px;border:1px solid #e1e8ed;border-radius:8px;margin-bottom:10px;cursor:pointer;transition:all .2s ease;background:#fafbfc;min-height:80px;position:relative}.chapter-material-card[data-v-afccd996]:hover{border-color:#409eff;box-shadow:0 2px 8px #409eff1a}.chapter-material-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#e6f4ff}.chapter-material-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px;min-height:32px;gap:8px}.chapter-material-name[data-v-afccd996]{font-weight:500;color:#303133;font-size:14px;flex:1;margin-right:8px;line-height:1.4;word-wrap:break-word;overflow-wrap:break-word;min-width:0}.chapter-material-tags[data-v-afccd996]{display:flex;gap:4px;flex-shrink:0;flex-wrap:wrap;align-items:flex-start}.chapter-material-desc[data-v-afccd996]{color:#666;font-size:12px;line-height:1.4;margin:4px 0;word-wrap:break-word;overflow-wrap:break-word}.chapter-material-content[data-v-afccd996]{margin-top:8px;padding-top:8px;border-top:1px solid #eee}.content-preview[data-v-afccd996]{color:#999;font-size:11px;line-height:1.3;font-style:italic;word-wrap:break-word;overflow-wrap:break-word;display:block;margin-top:4px}.custom-prompt-status[data-v-afccd996]{margin:16px 0}.custom-prompt-status .el-alert[data-v-afccd996]{border-radius:8px}.prompt-preview[data-v-afccd996]{margin-top:8px;font-size:13px;color:#67c23a;line-height:1.4;opacity:.9}.prompt-content-collapse[data-v-afccd996]{margin-top:12px;border:1px solid #e1f5fe;border-radius:6px;background-color:#f8fdff}.prompt-content-preview[data-v-afccd996]{padding:0}.prompt-content-header[data-v-afccd996]{margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #e8f4fd}.content-label[data-v-afccd996]{font-size:13px;font-weight:600;color:#409eff}.prompt-content-text[data-v-afccd996]{padding:12px;background-color:#fafcff;border:1px solid #e8f4fd;border-radius:4px;font-family:Courier New,Consolas,monospace;font-size:12px;line-height:1.6;color:#606266;white-space:pre-wrap;word-wrap:break-word;max-height:200px;overflow-y:auto;margin-bottom:16px}.final-prompt-section[data-v-afccd996]{margin-top:16px;padding-top:16px;border-top:1px solid #e8f4fd}.final-prompt[data-v-afccd996]{background-color:#f0f9ff;border-color:#b3e5fc;color:#01579b}.writing-tools[data-v-19a36dd6]{display:flex;flex-direction:column;gap:16px}.tool-card[data-v-19a36dd6]{margin-bottom:16px}.card-header[data-v-19a36dd6]{display:flex;justify-content:space-between;align-items:center}.header-buttons[data-v-19a36dd6]{display:flex;gap:8px}.characters-list[data-v-19a36dd6],.world-settings[data-v-19a36dd6],.inspirations-list[data-v-19a36dd6]{max-height:300px;overflow-y:auto}.character-item[data-v-19a36dd6],.setting-item[data-v-19a36dd6],.inspiration-item[data-v-19a36dd6]{display:flex;justify-content:space-between;align-items:flex-start;padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px}.character-info[data-v-19a36dd6],.setting-info[data-v-19a36dd6],.inspiration-content[data-v-19a36dd6]{flex:1;margin-right:12px}.character-info h4[data-v-19a36dd6],.setting-info h4[data-v-19a36dd6]{margin:0 0 8px;color:#303133}.character-info p[data-v-19a36dd6],.setting-info p[data-v-19a36dd6]{margin:0 0 8px;color:#606266;line-height:1.4}.character-tags[data-v-19a36dd6]{display:flex;gap:4px;flex-wrap:wrap}.progress-info[data-v-19a36dd6]{display:flex;flex-direction:column;gap:12px}.progress-item[data-v-19a36dd6]{display:flex;align-items:center;gap:8px}.progress-item span[data-v-19a36dd6]{min-width:100px;color:#606266}.inspiration-content p[data-v-19a36dd6]{margin:0 0 4px;color:#303133;line-height:1.4}.inspiration-content small[data-v-19a36dd6]{color:#909399}.empty-state[data-v-19a36dd6]{text-align:center;color:#909399;padding:40px 20px;font-style:italic}.article-stats[data-v-b4d8fda8]{max-height:70vh;overflow-y:auto}.no-content[data-v-b4d8fda8]{text-align:center;padding:40px;color:#909399}.empty-icon[data-v-b4d8fda8]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-b4d8fda8]{font-size:12px;margin-top:8px}.stats-content[data-v-b4d8fda8]{padding:0}.stats-section[data-v-b4d8fda8]{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #f0f0f0}.stats-section[data-v-b4d8fda8]:last-child{border-bottom:none;margin-bottom:0}.section-title[data-v-b4d8fda8]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.stat-card[data-v-b4d8fda8]{text-align:center;padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.stat-number[data-v-b4d8fda8]{font-size:24px;font-weight:700;color:#409eff;margin-bottom:4px}.stat-label[data-v-b4d8fda8]{font-size:12px;color:#909399}.sentiment-analysis[data-v-b4d8fda8]{space-y:16px}.sentiment-item[data-v-b4d8fda8]{display:flex;align-items:center;margin-bottom:16px}.sentiment-label[data-v-b4d8fda8]{margin-right:12px;font-weight:500}.sentiment-chart[data-v-b4d8fda8]{space-y:12px}.chart-item[data-v-b4d8fda8]{display:flex;align-items:center;margin-bottom:12px}.chart-label[data-v-b4d8fda8]{width:80px;font-size:14px;color:#606266}.chart-value[data-v-b4d8fda8]{margin-left:12px;font-size:14px;font-weight:500;color:#303133}.tags-container[data-v-b4d8fda8]{display:flex;flex-wrap:wrap;gap:8px}.tag-item[data-v-b4d8fda8]{margin:0}.category-item[data-v-b4d8fda8],.score-item[data-v-b4d8fda8]{display:flex;align-items:center;margin-bottom:12px}.category-label[data-v-b4d8fda8],.score-label[data-v-b4d8fda8]{margin-right:12px;font-weight:500}.score-display[data-v-b4d8fda8]{display:flex;align-items:center;gap:8px}.score-number[data-v-b4d8fda8]{font-size:14px;color:#909399}.suggestions[data-v-b4d8fda8]{space-y:16px}.suggestion-item[data-v-b4d8fda8]{display:flex;align-items:flex-start;margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:8px;border-left:4px solid #409eff}.suggestion-icon[data-v-b4d8fda8]{margin-right:12px;margin-top:2px;color:#409eff}.suggestion-content[data-v-b4d8fda8]{flex:1}.suggestion-title[data-v-b4d8fda8]{font-weight:500;margin-bottom:4px;color:#303133}.suggestion-text[data-v-b4d8fda8]{font-size:14px;color:#606266;line-height:1.5}.export-section[data-v-b4d8fda8]{text-align:center;padding-top:20px;border-top:1px solid #f0f0f0}.ai-analysis[data-v-b4d8fda8]{background:#f8f9fa;padding:16px;border-radius:8px;border-left:4px solid #409eff}.analysis-summary h4[data-v-b4d8fda8]{margin:0 0 8px;color:#303133;font-size:16px}.analysis-summary p[data-v-b4d8fda8]{margin:0;color:#606266;line-height:1.6}.analysis-section[data-v-b4d8fda8]{background:white;padding:12px;border-radius:6px;height:100%}.analysis-section h5[data-v-b4d8fda8]{margin:0 0 8px;color:#409eff;font-size:14px;font-weight:600}.analysis-section ul[data-v-b4d8fda8]{margin:0;padding-left:16px;color:#606266}.analysis-section li[data-v-b4d8fda8]{margin-bottom:4px;line-height:1.4}.mr-2[data-v-b4d8fda8]{margin-right:8px}[data-v-b4d8fda8] .el-progress-bar__outer{background-color:#f0f0f0}[data-v-b4d8fda8] .el-rate{display:flex;align-items:center}.corpus-manager[data-v-f543abf1]{max-height:70vh;overflow-y:auto}.add-corpus-section[data-v-f543abf1]{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #f0f0f0}.section-title[data-v-f543abf1]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.corpus-tabs[data-v-f543abf1]{margin-top:16px}.text-input-area[data-v-f543abf1]{padding:16px 0}.input-actions[data-v-f543abf1]{margin-top:12px;display:flex;gap:12px}.file-upload-area[data-v-f543abf1]{padding:16px 0}.uploaded-file[data-v-f543abf1]{margin-top:16px;padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.file-info[data-v-f543abf1]{display:flex;align-items:center;margin-bottom:12px}.file-icon[data-v-f543abf1]{margin-right:8px;color:#409eff}.file-name[data-v-f543abf1]{font-weight:500;margin-right:8px}.file-size[data-v-f543abf1]{color:#909399;font-size:12px}.file-actions[data-v-f543abf1]{display:flex;gap:8px}.list-header[data-v-f543abf1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.list-actions[data-v-f543abf1]{display:flex;align-items:center;gap:12px}.empty-corpus[data-v-f543abf1]{text-align:center;padding:40px;color:#909399}.empty-icon[data-v-f543abf1]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-f543abf1]{font-size:12px;margin-top:8px}.corpus-list[data-v-f543abf1]{space-y:12px}.corpus-item[data-v-f543abf1]{padding:16px;background:#fafafa;border-radius:8px;border:1px solid #e9ecef;margin-bottom:12px}.corpus-header[data-v-f543abf1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.corpus-meta[data-v-f543abf1]{display:flex;align-items:center;gap:12px;font-size:12px;color:#909399}.corpus-id[data-v-f543abf1]{font-weight:500;color:#409eff}.corpus-actions[data-v-f543abf1]{display:flex;gap:4px}.delete-btn[data-v-f543abf1],.delete-btn[data-v-f543abf1]:hover{color:#f56c6c}.corpus-content[data-v-f543abf1]{line-height:1.6;color:#303133}.content-preview[data-v-f543abf1]{white-space:pre-wrap;word-break:break-word}.expand-btn[data-v-f543abf1]{margin-top:8px}.pagination[data-v-f543abf1]{display:flex;justify-content:center;margin-top:20px}.full-content[data-v-f543abf1]{line-height:1.8;white-space:pre-wrap;word-break:break-word;max-height:400px;overflow-y:auto;padding:16px;background:#f8f9fa;border-radius:8px}[data-v-f543abf1] .el-upload-dragger{width:100%;height:120px}[data-v-f543abf1] .el-tabs__content{padding:0}.template-manager[data-v-97b66dfe]{max-height:70vh;overflow-y:auto}.add-template-section[data-v-97b66dfe]{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #f0f0f0}.section-title[data-v-97b66dfe]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.template-form[data-v-97b66dfe]{max-width:600px}.list-header[data-v-97b66dfe]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.list-actions[data-v-97b66dfe]{display:flex;align-items:center;gap:12px}.empty-templates[data-v-97b66dfe]{text-align:center;padding:40px;color:#909399}.empty-icon[data-v-97b66dfe]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-97b66dfe]{font-size:12px;margin-top:8px}.template-grid[data-v-97b66dfe]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.template-card[data-v-97b66dfe]{padding:16px;background:white;border-radius:8px;border:1px solid #e9ecef;transition:all .3s ease}.template-card[data-v-97b66dfe]:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.system-template[data-v-97b66dfe]{background:#f8f9fa}.template-header[data-v-97b66dfe]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.template-title[data-v-97b66dfe]{display:flex;align-items:center;gap:8px}.template-name[data-v-97b66dfe]{font-weight:600;font-size:16px;color:#303133}.template-actions[data-v-97b66dfe]{display:flex;gap:4px}.delete-btn[data-v-97b66dfe],.delete-btn[data-v-97b66dfe]:hover{color:#f56c6c}.template-description[data-v-97b66dfe]{color:#606266;margin-bottom:12px;line-height:1.5}.template-details[data-v-97b66dfe]{display:flex;gap:16px;margin-bottom:12px}.detail-item[data-v-97b66dfe]{font-size:12px}.detail-label[data-v-97b66dfe]{color:#909399;margin-right:4px}.detail-value[data-v-97b66dfe]{color:#303133;font-weight:500}.template-keywords[data-v-97b66dfe]{margin-bottom:12px}.keywords-label[data-v-97b66dfe]{font-size:12px;color:#909399;margin-bottom:6px}.keywords-list[data-v-97b66dfe]{display:flex;flex-wrap:wrap;gap:4px}.keyword-tag[data-v-97b66dfe]{margin:0}.template-prompt[data-v-97b66dfe]{margin-top:12px;padding-top:12px;border-top:1px solid #f0f0f0}.prompt-label[data-v-97b66dfe]{font-size:12px;color:#909399;margin-bottom:6px}.prompt-content[data-v-97b66dfe]{font-size:12px;color:#606266;line-height:1.4}[data-v-97b66dfe] .el-form-item{margin-bottom:18px}[data-v-97b66dfe] .el-form-item__label{font-weight:500}.summary-generator[data-v-778cce28]{width:100%}.card-header[data-v-778cce28]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.summary-content[data-v-778cce28]{min-height:200px}.source-info[data-v-778cce28]{margin-bottom:16px;padding:12px;background-color:#f8f9fa;border-radius:6px}.summary-settings[data-v-778cce28]{margin-bottom:20px;padding:16px;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafbfc}.setting-label[data-v-778cce28]{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:#606266}.summary-result[data-v-778cce28]{margin-top:20px}.summary-result h4[data-v-778cce28]{margin:0 0 12px;color:#303133;font-size:16px}.summary-text[data-v-778cce28]{padding:16px;background-color:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;line-height:1.6;color:#1e40af;white-space:pre-wrap;margin-bottom:12px}.summary-actions[data-v-778cce28]{display:flex;gap:8px;justify-content:flex-end}.empty-state[data-v-778cce28],.no-summary[data-v-778cce28]{padding:40px 20px;text-align:center}[data-v-778cce28] .el-empty__description{color:#909399}.chapter-manager[data-v-485ca3e0]{display:flex;gap:20px;height:100%}.chapter-list-section[data-v-485ca3e0]{flex:1;min-width:0}.chapter-detail-section[data-v-485ca3e0]{width:400px;flex-shrink:0}.section-header[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.header-actions[data-v-485ca3e0]{display:flex;gap:8px}.chapter-stats[data-v-485ca3e0]{margin-bottom:20px}.stat-item[data-v-485ca3e0]{text-align:center;padding:16px;background:#f8f9fa;border-radius:8px}.stat-number[data-v-485ca3e0]{font-size:24px;font-weight:700;color:#409eff;margin-bottom:4px}.stat-label[data-v-485ca3e0]{font-size:14px;color:#666}.chapters-grid[data-v-485ca3e0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.chapter-card[data-v-485ca3e0]{border:1px solid #e4e7ed;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s;background:white}.chapter-card[data-v-485ca3e0]:hover{border-color:#409eff;box-shadow:0 2px 12px #0000001a}.chapter-card.selected[data-v-485ca3e0]{border-color:#409eff;background:#f0f9ff}.chapter-header[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chapter-number[data-v-485ca3e0]{font-size:12px;color:#909399;background:#f4f4f5;padding:2px 8px;border-radius:4px}.chapter-title[data-v-485ca3e0]{font-size:16px;font-weight:700;margin-bottom:8px;color:#303133}.chapter-summary[data-v-485ca3e0]{font-size:14px;color:#606266;margin-bottom:12px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chapter-meta[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#909399}.meta-item[data-v-485ca3e0]{display:flex;align-items:center;gap:4px}.detail-header[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center}.detail-actions[data-v-485ca3e0]{display:flex;gap:8px}.chapter-content[data-v-485ca3e0]{max-height:600px;overflow-y:auto}.content-section[data-v-485ca3e0]{margin-bottom:20px}.content-section h4[data-v-485ca3e0]{margin-bottom:8px;color:#303133}.content-preview[data-v-485ca3e0]{background:#f8f9fa;padding:12px;border-radius:4px;max-height:200px;overflow-y:auto;line-height:1.6}.empty-state[data-v-485ca3e0]{text-align:center;padding:40px}.mr-2[data-v-485ca3e0]{margin-right:8px}.backup-manager[data-v-946a913e]{padding:20px}.backup-header[data-v-946a913e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header-actions[data-v-946a913e]{display:flex;gap:12px}.backup-stats[data-v-946a913e]{margin-bottom:20px}.stat-card[data-v-946a913e]{display:flex;align-items:center;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 8px #0000001a;transition:transform .2s}.stat-card[data-v-946a913e]:hover{transform:translateY(-2px)}.stat-icon[data-v-946a913e]{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);display:flex;align-items:center;justify-content:center;margin-right:16px;font-size:20px;color:#fff}.stat-content[data-v-946a913e]{flex:1}.stat-number[data-v-946a913e]{font-size:24px;font-weight:700;color:#333;margin-bottom:4px}.stat-label[data-v-946a913e]{font-size:14px;color:#666}.auto-backup-card[data-v-946a913e]{margin-bottom:20px}.card-header[data-v-946a913e]{display:flex;justify-content:space-between;align-items:center}.auto-backup-settings[data-v-946a913e]{padding-top:16px}.setting-item[data-v-946a913e]{display:flex;flex-direction:column;gap:8px}.setting-item label[data-v-946a913e]{font-size:14px;color:#606266;font-weight:500}.next-backup-time[data-v-946a913e]{font-size:14px;color:#409eff;font-weight:500}.list-header[data-v-946a913e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.list-actions[data-v-946a913e]{display:flex;gap:12px;align-items:center}.backup-name[data-v-946a913e]{display:flex;align-items:center;gap:8px}.table-actions[data-v-946a913e]{display:flex;gap:8px}.table-actions .danger[data-v-946a913e]{color:#f56c6c}.backup-details[data-v-946a913e]{max-height:500px;overflow-y:auto}.detail-section[data-v-946a913e]{margin-bottom:24px}.detail-section h4[data-v-946a913e]{margin-bottom:12px;color:#303133}.content-list[data-v-946a913e]{display:flex;flex-direction:column;gap:8px}.content-item[data-v-946a913e]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#f8f9fa;border-radius:4px}.content-size[data-v-946a913e]{margin-left:auto;font-size:12px;color:#909399}.empty-state[data-v-946a913e]{text-align:center;padding:40px;color:#909399}.home-container[data-v-2dd0d183]{height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}.top-nav[data-v-2dd0d183]{height:60px;background:white;border-bottom:1px solid #e4e7ed;display:flex;align-items:center;justify-content:space-between;padding:0 20px;box-shadow:0 2px 4px #0000001a}.nav-left .app-title[data-v-2dd0d183]{margin:0;font-size:20px;color:#303133;display:flex;align-items:center}.nav-right[data-v-2dd0d183]{display:flex;gap:12px}.main-content[data-v-2dd0d183]{flex:1;display:flex;gap:16px;padding:16px;overflow:hidden}.left-panel[data-v-2dd0d183]{width:320px;flex-shrink:0;display:flex;flex-direction:column;gap:0;height:calc(100vh - 92px)}.center-panel[data-v-2dd0d183]{flex:1;min-width:0}.right-panel[data-v-2dd0d183]{width:320px;flex-shrink:0}.input-card[data-v-2dd0d183]{flex-shrink:0}.outline-card[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column;min-height:0}.editor-card[data-v-2dd0d183],.result-card[data-v-2dd0d183]{height:100%;display:flex;flex-direction:column}.generation-status[data-v-2dd0d183]{margin-bottom:16px}.status-content[data-v-2dd0d183]{display:flex;align-items:center;gap:8px}.rotating[data-v-2dd0d183]{animation:rotate-2dd0d183 2s linear infinite}@keyframes rotate-2dd0d183{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.card-header[data-v-2dd0d183]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.form-label[data-v-2dd0d183]{display:block;margin-bottom:8px;font-weight:500;color:#606266}.generation-settings[data-v-2dd0d183]{margin-top:8px}.setting-label[data-v-2dd0d183]{font-size:12px;color:#909399;text-align:center;margin-top:4px}.editor-container[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column}.editor-wrapper[data-v-2dd0d183]{flex:1;border:1px solid #ccc;border-radius:4px;overflow:hidden}.editor-wrapper .w-e-toolbar[data-v-2dd0d183]{border-bottom:1px solid #e4e7ed!important}.editor-wrapper .w-e-text-container[data-v-2dd0d183]{border:none!important}.editor-toolbar[data-v-2dd0d183]{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid #e4e7ed}.editor-stats[data-v-2dd0d183]{font-size:14px;color:#909399}.editor-actions[data-v-2dd0d183]{display:flex;gap:8px}.result-container[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column;height:500px}.generated-content[data-v-2dd0d183]{flex:1;overflow-y:auto;max-height:100%}.content-text[data-v-2dd0d183]{line-height:1.8;color:#303133;white-space:pre-wrap;word-break:break-word;padding:10px}.empty-result[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#909399}.empty-icon[data-v-2dd0d183]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-2dd0d183]{font-size:12px;margin-top:8px}[data-v-2dd0d183] .el-card__body{flex:1;display:flex;flex-direction:column;padding:16px}[data-v-2dd0d183] .left-panel .el-tabs{height:100%;display:flex;flex-direction:column}[data-v-2dd0d183] .left-panel .el-tabs__content{flex:1;overflow:hidden}[data-v-2dd0d183] .left-panel .el-tab-pane{height:100%;overflow-y:auto;padding-right:8px}.left-panel .el-card[data-v-2dd0d183]{margin-bottom:16px}.left-panel .el-card[data-v-2dd0d183]:last-child{margin-bottom:0}.outline-card[data-v-2dd0d183]{min-height:250px}.chapters-card[data-v-2dd0d183]{min-height:300px}.ai-chat-card[data-v-2dd0d183]{min-height:350px}.outline-container[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column}.outline-container .el-textarea[data-v-2dd0d183]{flex:1}.outline-container .el-textarea__inner[data-v-2dd0d183]{height:100%!important;min-height:200px}.chapters-container[data-v-2dd0d183]{display:flex;flex-direction:column;gap:16px}.chapters-list[data-v-2dd0d183]{display:flex;flex-direction:column;gap:8px;max-height:200px;overflow-y:auto}.chapter-item[data-v-2dd0d183]{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .3s}.chapter-item[data-v-2dd0d183]:hover{border-color:#409eff;background-color:#f0f9ff}.chapter-item.selected[data-v-2dd0d183]{border-color:#409eff;background-color:#ecf5ff}.chapter-item.completed[data-v-2dd0d183]{background-color:#f0f9ff}.chapter-title[data-v-2dd0d183]{font-weight:500;color:#303133}.chapter-detail[data-v-2dd0d183]{border:1px solid #e4e7ed;border-radius:6px;padding:16px;background-color:#fafafa}.chapter-content h4[data-v-2dd0d183]{margin:0 0 8px;color:#409eff}.chapter-content p[data-v-2dd0d183]{margin:0 0 16px;color:#606266;line-height:1.6}.generated-content[data-v-2dd0d183]{border-top:1px solid #e4e7ed;padding-top:16px}.generated-content h5[data-v-2dd0d183]{margin:0 0 8px;color:#67c23a}.generated-text[data-v-2dd0d183]{background-color:#fff;border:1px solid #e4e7ed;border-radius:4px;padding:12px;max-height:200px;overflow-y:auto;white-space:pre-wrap;line-height:1.6;color:#303133}.ai-chat-container[data-v-2dd0d183]{display:flex;flex-direction:column;height:300px}.chat-history[data-v-2dd0d183]{flex:1;overflow-y:auto;padding:8px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:12px;background-color:#fafafa}.chat-message[data-v-2dd0d183]{margin-bottom:12px;padding:8px 12px;border-radius:8px;max-width:80%}.user-message[data-v-2dd0d183]{background-color:#409eff;color:#fff;margin-left:auto;text-align:right}.ai-message[data-v-2dd0d183]{background-color:#f0f0f0;color:#303133;margin-right:auto}.message-content[data-v-2dd0d183]{margin-bottom:4px;line-height:1.4;white-space:pre-wrap}.message-time[data-v-2dd0d183]{font-size:12px;opacity:.7}.empty-chat[data-v-2dd0d183]{text-align:center;color:#909399;padding:40px 20px;font-style:italic}.chat-input[data-v-2dd0d183]{margin-top:auto}[data-v-2dd0d183] .el-textarea__inner{resize:none}.genre-management[data-v-d7a56fae]{padding:0}.page-header[data-v-d7a56fae]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;padding:24px;background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a}.header-content h1[data-v-d7a56fae]{margin:0 0 8px;font-size:24px;color:#303133}.header-content p[data-v-d7a56fae]{margin:0;color:#606266;font-size:14px}.genres-grid[data-v-d7a56fae]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px;padding:0 24px}.genre-item[data-v-d7a56fae]{border:none;transition:all .3s}.genre-item[data-v-d7a56fae]:hover{transform:translateY(-2px);box-shadow:0 8px 25px #00000026}.genre-header[data-v-d7a56fae]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.genre-info[data-v-d7a56fae]{flex:1}.genre-name[data-v-d7a56fae]{margin:0 0 8px;font-size:18px;font-weight:600;color:#303133}.genre-actions[data-v-d7a56fae]{display:flex;gap:8px}.genre-description[data-v-d7a56fae]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border-left:3px solid #409eff}.genre-description p[data-v-d7a56fae]{margin:0;color:#606266;line-height:1.6}.genre-tags[data-v-d7a56fae]{margin-bottom:16px;min-height:32px}.genre-meta[data-v-d7a56fae]{display:flex;gap:16px;font-size:12px;color:#909399}.meta-item[data-v-d7a56fae]{display:flex;align-items:center;gap:4px}.tags-input-section[data-v-d7a56fae]{width:100%}.tags-display[data-v-d7a56fae]{margin-top:8px}.form-tip[data-v-d7a56fae]{font-size:12px;color:#909399;margin-top:4px}.empty-state[data-v-d7a56fae]{padding:60px 24px;text-align:center}.dialog-footer[data-v-d7a56fae]{text-align:right}@media (max-width: 768px){.genres-grid[data-v-d7a56fae]{grid-template-columns:1fr;padding:0 16px}.page-header[data-v-d7a56fae]{flex-direction:column;gap:16px;align-items:stretch;padding:16px}}.tools-library[data-v-ef77a6b1]{max-width:1200px;margin:0 auto}.tools-grid[data-v-ef77a6b1]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;margin-bottom:40px}.tool-card[data-v-ef77a6b1]{background:white;border-radius:12px;padding:24px;box-shadow:0 2px 12px #0000001a;cursor:pointer;transition:all .3s ease;border:1px solid #e4e7ed}.tool-card[data-v-ef77a6b1]:hover{transform:translateY(-4px);box-shadow:0 8px 24px #00000026;border-color:#409eff}.tool-icon[data-v-ef77a6b1]{font-size:48px;text-align:center;margin-bottom:16px}.tool-card h3[data-v-ef77a6b1]{font-size:18px;color:#2c3e50;margin-bottom:8px;text-align:center}.tool-card p[data-v-ef77a6b1]{font-size:14px;color:#7f8c8d;text-align:center;line-height:1.5}.tool-dialog .tool-content[data-v-ef77a6b1]{padding:20px 0}.tool-form[data-v-ef77a6b1]{margin-bottom:24px}.tool-actions[data-v-ef77a6b1]{text-align:center;margin-bottom:24px}.tool-actions .el-button[data-v-ef77a6b1]{margin:0 8px}.generating-status[data-v-ef77a6b1]{margin:16px 0;text-align:center}.status-text[data-v-ef77a6b1]{display:block;margin-top:8px;color:#606266;font-size:14px}.tool-result[data-v-ef77a6b1]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.tool-result h4[data-v-ef77a6b1]{margin-top:0;margin-bottom:16px;color:#2c3e50}.result-content-wrapper[data-v-ef77a6b1]{margin-bottom:16px}.result-textarea[data-v-ef77a6b1]{width:100%}.result-textarea[data-v-ef77a6b1] .el-textarea__inner{background:white;border:1px solid #e4e7ed;border-radius:6px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;line-height:1.6;resize:vertical}.result-actions[data-v-ef77a6b1]{text-align:center;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.result-actions .el-button[data-v-ef77a6b1]{margin:4px}.tool-form .el-select[data-v-ef77a6b1]{width:100%}.tool-form .el-select .el-tag[data-v-ef77a6b1]{max-width:120px}.tool-form .el-form-item[data-v-ef77a6b1]{margin-bottom:18px}.prompt-option[data-v-ef77a6b1]{padding:8px 0}.prompt-option-title[data-v-ef77a6b1]{font-weight:500;color:#303133;margin-bottom:4px}.prompt-option-desc[data-v-ef77a6b1]{font-size:12px;color:#909399;line-height:1.4}.character-count-hint[data-v-ef77a6b1]{margin-top:5px;font-size:12px}.valid-hint[data-v-ef77a6b1]{color:#67c23a}.invalid-hint[data-v-ef77a6b1]{color:#f56c6c}@media (max-width: 768px){.tools-grid[data-v-ef77a6b1]{grid-template-columns:1fr}.tool-dialog[data-v-ef77a6b1]{width:95%!important}.result-actions[data-v-ef77a6b1]{flex-direction:column;align-items:center}.result-actions .el-button[data-v-ef77a6b1]{width:100%;max-width:200px}}.short-story-page[data-v-33d93414]{width:100%;height:100vh;padding:20px;box-sizing:border-box;background:#f5f7fa}.short-story-page[data-v-33d93414]{width:100%;height:100vh;display:flex;flex-direction:column;padding:20px;box-sizing:border-box;background:#f5f7fa}.page-tabs[data-v-33d93414]{flex-shrink:0;margin-bottom:20px}.page-content[data-v-33d93414]{flex:1;overflow:hidden}.workspace[data-v-33d93414]{height:100%}.workspace-layout[data-v-33d93414]{display:flex;gap:20px;height:100%}.config-sidebar[data-v-33d93414]{width:340px;flex-shrink:0;background:white;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a;display:flex;flex-direction:column;overflow:hidden}.config-header h3[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px;font-weight:600}.generate-btn[data-v-33d93414]{width:100%;margin-bottom:20px;height:40px;font-weight:500}.config-form[data-v-33d93414]{flex:1;overflow-y:auto;padding-right:4px;padding-top:8px}.config-section[data-v-33d93414]{margin-bottom:20px;padding:16px;background:#fafbfc;border-radius:8px;border:1px solid #e4e7ed}.section-title[data-v-33d93414]{font-size:14px;font-weight:600;color:#2c3e50;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e4e7ed}.section-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e4e7ed}.section-actions[data-v-33d93414]{display:flex;gap:8px}.form-grid[data-v-33d93414]{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;align-items:start}.form-item[data-v-33d93414]{display:flex;flex-direction:column}.form-item.full-width[data-v-33d93414]{grid-column:1 / -1}.form-item label[data-v-33d93414]{font-size:12px;font-weight:500;color:#606266;margin-bottom:6px;line-height:1.2}.form-item .el-input[data-v-33d93414],.form-item .el-select[data-v-33d93414],.form-item .el-input-number[data-v-33d93414]{width:100%}.age-input[data-v-33d93414]{display:flex;align-items:center;gap:8px;height:24px}.age-display[data-v-33d93414]{min-width:30px;text-align:center;font-weight:500;color:#2c3e50;font-size:14px}.item-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.selected-template[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding:6px 10px;background:#f0f9ff;border-radius:4px;font-size:12px}.validation-tip[data-v-33d93414]{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#fef0f0;border:1px solid #fbc4c4;border-radius:6px;font-size:12px;color:#f56c6c}.advanced-config[data-v-33d93414]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;overflow:visible}.advanced-config .el-collapse-item__header[data-v-33d93414]{height:40px;line-height:40px;font-size:13px;font-weight:500;padding:0 16px;background:#f8f9fa;border-bottom:1px solid #e4e7ed}.advanced-config .el-collapse-item__content[data-v-33d93414]{padding:16px;background:#fafbfc;min-height:200px;max-height:none}.advanced-config .el-collapse-item__wrap[data-v-33d93414]{border-bottom:none;overflow:visible}.advanced-config .el-collapse-item[data-v-33d93414]{border-bottom:none}.advanced-config .form-grid[data-v-33d93414]{margin-bottom:16px}.advanced-config .full-width[data-v-33d93414]{margin-top:16px}.config-scroll-container[data-v-33d93414]{flex:1;overflow:hidden}.config-sidebar .config-header[data-v-33d93414]{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;flex-shrink:0}.header-title-row[data-v-33d93414]{display:flex;justify-content:center;align-items:center}.header-actions-row[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.secondary-actions[data-v-33d93414]{display:flex;gap:6px;justify-content:center}.primary-action[data-v-33d93414]{display:flex}.config-sidebar .config-header h3[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px}.config-manager-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.config-manager-container[data-v-33d93414]{height:600px;overflow:hidden;display:flex;flex-direction:column}.config-tabs[data-v-33d93414]{height:100%;display:flex;flex-direction:column}.config-tabs[data-v-33d93414] .el-tabs__header{flex-shrink:0;margin-bottom:20px;order:-1;border-bottom:1px solid #e4e7ed}.config-tabs[data-v-33d93414] .el-tabs__nav-wrap{margin-bottom:0;background:white}.config-tabs[data-v-33d93414] .el-tabs__content{flex:1;overflow:hidden;padding:0}.config-tabs[data-v-33d93414] .el-tabs__item{padding:0 20px;height:40px;line-height:40px}.config-tab-content[data-v-33d93414]{height:100%;display:flex;flex-direction:column;padding:0 10px}.tab-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid #ebeef5}.tab-header h4[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px}.config-list[data-v-33d93414]{flex:1;overflow-y:auto;padding-right:8px}.config-item-row[data-v-33d93414]{display:flex;gap:12px;align-items:center;margin-bottom:12px;padding:12px;background:#f8f9fa;border-radius:6px;border:1px solid #e9ecef}.config-input[data-v-33d93414]{flex:1}.description-input[data-v-33d93414]{flex:2}.config-item-row .el-button[data-v-33d93414]{margin-left:8px}.dialog-footer[data-v-33d93414]{display:flex;justify-content:flex-end;gap:10px}.config-header .header-row[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.required-tip[data-v-33d93414]{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#fef0f0;border:1px solid #fbc4c4;border-radius:4px;font-size:12px;color:#f56c6c;margin-top:8px}.config-form[data-v-33d93414]{flex:1;padding:16px 0;display:flex;flex-direction:column;gap:16px;margin-top:6px}.form-row[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.form-row.two-cols[data-v-33d93414]{flex-direction:row;gap:12px}.form-row.two-cols[data-v-33d93414]>*{flex:1}.prompt-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:500;color:#2c3e50;margin-bottom:4px}.selected-template[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding:6px 8px;background:#f0f9ff;border-radius:4px;font-size:12px}.reference-list[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.reference-item[data-v-33d93414]{border:1px solid #e1e5e9;border-radius:4px;padding:8px;background:#fafbfc}.ref-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12px;font-weight:500;color:#606266}.config-content[data-v-33d93414]{padding-bottom:16px}.quick-config[data-v-33d93414]{display:flex;flex-direction:column;gap:16px}.basic-selects[data-v-33d93414]{display:flex;flex-direction:column;gap:12px}.select-row[data-v-33d93414]{display:flex;gap:12px}.select-item[data-v-33d93414]{flex:1;display:flex;flex-direction:column;gap:4px}.select-item label[data-v-33d93414]{font-size:12px;color:#606266;font-weight:500}.quick-inputs .input-row[data-v-33d93414]{display:flex;gap:12px}.prompt-area[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.prompt-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#606266;font-weight:500}.unified-prompt-input[data-v-33d93414]{border-radius:4px}.unified-prompt-input .el-textarea__inner[data-v-33d93414]{line-height:1.5;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif}.advanced-config[data-v-33d93414]{padding:10px}.generate-section[data-v-33d93414]{text-align:center;padding:60px 0}.content-panel[data-v-33d93414]{flex:1;background:white;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a;display:flex;flex-direction:column;overflow:hidden;position:relative}.panel-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-shrink:0}.panel-header h3[data-v-33d93414]{margin:0;color:#2c3e50}.content-body[data-v-33d93414]{flex:1;position:relative}.story-result[data-v-33d93414],.story-editor[data-v-33d93414]{flex:1;display:flex;flex-direction:column;overflow:hidden}.story-textarea[data-v-33d93414]{flex:1;display:flex;flex-direction:column}.content-footer[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-top:1px solid #e4e7ed;margin-top:16px;flex-shrink:0}.word-count[data-v-33d93414]{margin:0}.footer-actions[data-v-33d93414]{display:flex;gap:8px}.add-custom-item[data-v-33d93414]{display:flex;align-items:center;justify-content:center;border:1px dashed #c0c4cc;border-radius:6px;padding:12px;cursor:pointer;transition:all .3s;margin-top:8px;background-color:#f5f7fa}.add-custom-item[data-v-33d93414]:hover{border-color:#409eff;background-color:#ecf5ff}.add-custom-item .el-icon[data-v-33d93414]{margin-right:8px;font-size:16px;color:#909399}.add-custom-item:hover .el-icon[data-v-33d93414]{color:#409eff}@media (max-width: 768px){.story-header[data-v-33d93414]{flex-direction:column;gap:16px}.story-actions[data-v-33d93414]{flex-wrap:wrap;justify-content:center}}.config-section[data-v-33d93414]{padding:16px}.config-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.config-header h4[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px}.config-list[data-v-33d93414]{display:flex;flex-direction:column;gap:12px;max-height:500px;overflow-y:auto}.config-item[data-v-33d93414]{display:flex;gap:8px;align-items:center;padding:12px;border:1px solid #e4e7ed;border-radius:6px;background:#fafbfc;transition:all .3s}.config-item[data-v-33d93414]:hover{border-color:#c6e2ff;background:#ecf5ff}.config-item .el-input[data-v-33d93414]{flex:1}.config-item .el-input[data-v-33d93414]:nth-child(3){flex:2}.config-item .el-button[data-v-33d93414]{flex-shrink:0}.dialog-footer[data-v-33d93414]{display:flex;justify-content:flex-end;gap:8px}.empty-config[data-v-33d93414]{text-align:center;padding:40px 20px;color:#909399}.empty-config .el-icon[data-v-33d93414]{font-size:48px;margin-bottom:16px}.prompt-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.prompt-actions[data-v-33d93414]{display:flex;gap:8px}.selected-template[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;margin-bottom:12px}.template-info[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:4px}.template-title[data-v-33d93414]{font-weight:500;color:#1e40af}.template-description[data-v-33d93414]{font-size:12px;color:#64748b;line-height:1.4}.prompt-selector[data-v-33d93414]{display:flex;gap:20px;min-height:500px}.prompt-list[data-v-33d93414]{flex:1;max-height:500px;overflow-y:auto}.prompt-grid[data-v-33d93414]{display:grid;grid-template-columns:1fr;gap:12px}.prompt-card[data-v-33d93414]{border:1px solid #e5e7eb;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s;background:white}.prompt-card[data-v-33d93414]:hover{border-color:#3b82f6;box-shadow:0 2px 8px #3b82f61a}.prompt-card.active[data-v-33d93414]{border-color:#3b82f6;background:#eff6ff;box-shadow:0 2px 8px #3b82f626}.prompt-card-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.prompt-card-header h5[data-v-33d93414]{margin:0;font-size:14px;font-weight:500;color:#1f2937}.selected-icon[data-v-33d93414]{color:#3b82f6;font-size:16px}.prompt-card-description[data-v-33d93414]{margin-bottom:12px}.prompt-card-description p[data-v-33d93414]{margin:0;font-size:12px;color:#6b7280;line-height:1.4}.prompt-card-tags[data-v-33d93414]{display:flex;flex-wrap:wrap;gap:4px}.prompt-preview[data-v-33d93414]{flex:1;border-left:1px solid #e5e7eb;padding-left:20px}.prompt-preview h4[data-v-33d93414]{margin:0 0 16px;color:#1f2937;font-size:16px}.preview-content[data-v-33d93414]{height:calc(100% - 40px)}.prompt-content-editor[data-v-33d93414]{height:100%}.prompt-content-editor .el-textarea__inner[data-v-33d93414]{height:100%!important;resize:none;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.5}.empty-prompts[data-v-33d93414]{text-align:center;padding:60px 20px;color:#6b7280}.empty-prompts .el-empty[data-v-33d93414]{padding:20px}.continue-direction[data-v-33d93414]{display:flex;flex-direction:column;gap:20px}.direction-input[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.direction-input label[data-v-33d93414]{font-weight:500;color:#2c3e50;font-size:14px}.direction-tips[data-v-33d93414]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:16px}.direction-tips h4[data-v-33d93414]{margin:0 0 12px;color:#495057;font-size:14px;font-weight:500}.direction-tips ul[data-v-33d93414]{margin:0;padding-left:20px}.direction-tips li[data-v-33d93414]{color:#6c757d;font-size:13px;line-height:1.5;margin-bottom:4px}.direction-tips li[data-v-33d93414]:last-child{margin-bottom:0}.optimize-dialog[data-v-33d93414]{display:flex;flex-direction:column;gap:20px}.selected-content h4[data-v-33d93414],.optimize-direction h4[data-v-33d93414],.optimize-result h4[data-v-33d93414]{margin:0 0 8px;color:#2c3e50;font-size:14px;font-weight:600}.selected-text[data-v-33d93414]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#495057;max-height:120px;overflow-y:auto}.optimize-actions[data-v-33d93414]{text-align:center}.optimized-text[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#1e40af;max-height:200px;overflow-y:auto;scroll-behavior:smooth}.optimizing-placeholder[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-style:italic}.optimizing-placeholder .el-icon[data-v-33d93414]{font-size:16px}.optimized-content[data-v-33d93414]{white-space:pre-wrap;word-wrap:break-word}.modern-continue-dialog[data-v-33d93414]{border-radius:16px;overflow:hidden}.modern-continue-dialog .el-dialog__header[data-v-33d93414]{padding:0;margin:0;border-bottom:1px solid #f0f0f0}.modern-continue-dialog .el-dialog__body[data-v-33d93414]{padding:24px;background:#fafbfc}.modern-continue-dialog .el-dialog__footer[data-v-33d93414]{padding:20px 24px;background:#fff;border-top:1px solid #f0f0f0}.dialog-header[data-v-33d93414]{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff}.header-left[data-v-33d93414]{display:flex;align-items:center;gap:16px}.header-icon[data-v-33d93414]{width:48px;height:48px;background:rgba(255,255,255,.2);border-radius:12px;display:flex;align-items:center;justify-content:center}.header-text h3[data-v-33d93414]{margin:0;font-size:20px;font-weight:600}.header-text p[data-v-33d93414]{margin:4px 0 0;font-size:14px;opacity:.9}.close-btn[data-v-33d93414]{color:#fff!important;background:rgba(255,255,255,.1)!important;border:none!important;border-radius:8px!important;transition:all .3s ease}.close-btn[data-v-33d93414]:hover{background:rgba(255,255,255,.2)!important}.modern-continue-container[data-v-33d93414]{display:grid;grid-template-columns:1fr 1fr;gap:24px;min-height:500px}.config-card[data-v-33d93414],.result-card[data-v-33d93414]{border-radius:12px;border:1px solid #e8eaed;box-shadow:0 2px 8px #0000000a}.config-card .el-card__header[data-v-33d93414],.result-card .el-card__header[data-v-33d93414]{background:#f8f9fa;border-bottom:1px solid #e8eaed;padding:16px 20px}.card-header[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-weight:600;color:#1f2937}.header-actions[data-v-33d93414]{margin-left:auto;display:flex;gap:8px}.config-content[data-v-33d93414]{padding:20px}.config-row[data-v-33d93414]{display:flex;flex-direction:column;gap:24px}.config-item[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.config-label[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-weight:500;color:#374151;font-size:14px}.direction-input[data-v-33d93414]{border-radius:8px}.direction-input .el-textarea__inner[data-v-33d93414]{border-radius:8px;border:1px solid #d1d5db;font-size:14px;line-height:1.5}.word-count-slider[data-v-33d93414]{margin-top:8px}.tips-section[data-v-33d93414]{margin-top:24px;padding:16px;background:#f0f9ff;border-radius:8px;border:1px solid #bae6fd}.tips-header[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:500;color:#0369a1}.tips-grid[data-v-33d93414]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tip-item[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-size:13px;color:#374151}.result-content[data-v-33d93414]{padding:20px;min-height:400px}.streaming-state[data-v-33d93414]{display:flex;flex-direction:column;height:100%}.streaming-header[data-v-33d93414]{display:flex;align-items:center;gap:16px;padding:20px;background:#f0f9ff;border-radius:8px;margin-bottom:16px}.streaming-icon[data-v-33d93414]{width:40px;height:40px;background:#3b82f6;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.rotating[data-v-33d93414]{animation:rotate-33d93414 2s linear infinite}.streaming-text h4[data-v-33d93414]{margin:0;color:#1f2937;font-size:16px}.streaming-text p[data-v-33d93414]{margin:4px 0 0;color:#6b7280;font-size:14px}.streaming-content[data-v-33d93414]{flex:1;background:#fff;border-radius:8px;border:1px solid #e5e7eb;padding:16px;overflow-y:auto}.streaming-text-content[data-v-33d93414]{font-size:14px;line-height:1.6;color:#374151;white-space:pre-wrap;word-wrap:break-word}.result-display[data-v-33d93414]{height:100%;display:flex;flex-direction:column}.result-stats[data-v-33d93414]{display:flex;gap:24px;margin-bottom:16px;padding:12px 16px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.stat-item[data-v-33d93414]{display:flex;flex-direction:column;align-items:center;gap:4px}.stat-label[data-v-33d93414]{font-size:12px;color:#6b7280;font-weight:500}.stat-value[data-v-33d93414]{font-size:16px;color:#1f2937;font-weight:600}.result-text[data-v-33d93414]{flex:1;padding:16px;background:#fff;border-radius:8px;border:1px solid #e5e7eb;font-size:14px;line-height:1.6;color:#374151;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word}.empty-state[data-v-33d93414]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:#6b7280}.empty-icon[data-v-33d93414]{margin-bottom:16px}.empty-state h4[data-v-33d93414]{margin:0 0 8px;color:#374151;font-size:16px}.empty-state p[data-v-33d93414]{margin:0;font-size:14px;max-width:280px}.dialog-footer[data-v-33d93414]{display:flex;align-items:center;justify-content:space-between}.footer-info[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-size:14px}.footer-actions[data-v-33d93414]{display:flex;gap:12px}.continue-container[data-v-33d93414]{display:flex;gap:20px;height:500px}.continue-config[data-v-33d93414]{flex:1;display:flex;flex-direction:column;gap:16px}.continue-result[data-v-33d93414]{flex:1;display:flex;flex-direction:column;border-left:1px solid #e5e7eb;padding-left:20px}.result-content[data-v-33d93414]{flex:1;display:flex;flex-direction:column;min-height:0}.continuing-indicator[data-v-33d93414]{display:flex;align-items:center;justify-content:center;padding:8px;margin-top:8px;background:#e3f2fd;border-radius:4px;font-size:12px;color:#1976d2}.continuing-indicator .loading-icon[data-v-33d93414]{margin-right:4px;animation:spin-33d93414 1s linear infinite}.word-count-tips[data-v-33d93414]{margin-top:4px;font-size:12px;color:#6b7280;text-align:center}.empty-placeholder[data-v-33d93414]{flex:1;display:flex;align-items:center;justify-content:center}.empty-placeholder .el-empty[data-v-33d93414]{padding:20px}.page-tabs .el-tabs__header[data-v-33d93414]{background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a;padding:10px 20px;margin:0 0 20px}.page-tabs .el-tabs__nav-wrap[data-v-33d93414]{padding:0}.page-tabs .el-tabs__item[data-v-33d93414]{font-weight:500;font-size:15px;padding:0 20px;height:40px;line-height:40px}.advanced-config[data-v-33d93414]{margin-top:16px}.advanced-config .el-collapse-item__header[data-v-33d93414]{font-size:14px;font-weight:500;color:#2c3e50}.age-input[data-v-33d93414]{display:flex;align-items:center;gap:12px}.age-display[data-v-33d93414]{font-size:16px;font-weight:500;color:#2c3e50;min-width:40px;text-align:center}.editor-main[data-v-33d93414]{flex:1;background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a;display:flex;flex-direction:column;overflow:hidden}.editor-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e4e7ed;background:#fafbfc}.editor-title[data-v-33d93414]{display:flex;align-items:center;gap:12px;font-size:16px;font-weight:600;color:#2c3e50}.word-count[data-v-33d93414]{font-size:12px;color:#909399;background:#f0f2f5;padding:2px 8px;border-radius:12px}.editor-actions[data-v-33d93414]{display:flex;gap:8px}.editor-content[data-v-33d93414]{flex:1;position:relative;display:flex;flex-direction:column;min-height:0}.editor-wrapper[data-v-33d93414]{height:100%;display:flex;flex-direction:column;flex:1}.editor-wrapper .w-e-toolbar[data-v-33d93414]{border-bottom:1px solid #e4e7ed;background:#fafbfc;flex-shrink:0}.editor-wrapper .w-e-text-container[data-v-33d93414]{flex:1;background:white;overflow-y:auto!important;min-height:400px}.editor-wrapper .w-e-text-container .w-e-text[data-v-33d93414]{min-height:400px!important;max-height:none!important}.editor-wrapper .w-e-text-container .w-e-scroll[data-v-33d93414]{overflow-y:auto!important;max-height:none!important}.editor-wrapper[data-v-33d93414] .w-e-text-container{overflow-y:auto!important;min-height:400px;max-height:calc(100vh - 300px)}.editor-wrapper[data-v-33d93414] .w-e-text{min-height:400px!important;padding:20px!important;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.6}.editor-wrapper[data-v-33d93414] .w-e-scroll{overflow-y:auto!important;max-height:none!important}.editor-wrapper[data-v-33d93414] .w-e-text-container,.editor-wrapper[data-v-33d93414] .w-e-scroll,.editor-wrapper[data-v-33d93414] .w-e-text{scrollbar-width:auto!important;-webkit-overflow-scrolling:touch}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar{width:8px;height:8px}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar-track,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar-track,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar-track{background:#f5f5f5;border-radius:4px}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar-thumb,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar-thumb,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar-thumb:hover,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar-thumb:hover,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.generating-overlay[data-v-33d93414]{position:absolute;top:0;left:0;right:0;bottom:0;background:white;padding:20px;z-index:10}.reference-list[data-v-33d93414]{display:flex;flex-direction:column;gap:12px}.reference-item[data-v-33d93414]{border:1px solid #e1e5e9;border-radius:6px;padding:12px;background:#f8f9fa}.ref-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;font-weight:500;color:#606266}.generating-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid #e4e7ed;font-weight:500;color:#409eff}.streaming-content[data-v-33d93414]{line-height:1.6;color:#2c3e50;white-space:pre-wrap;word-wrap:break-word;max-height:350px;overflow-y:auto}.prompt-selector[data-v-33d93414]{height:400px;display:flex;flex-direction:column}.search-bar[data-v-33d93414]{margin-bottom:16px}.prompt-list[data-v-33d93414]{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.prompt-item[data-v-33d93414]{padding:16px;border:1px solid #e1e5e9;border-radius:8px;cursor:pointer;transition:all .2s}.prompt-item[data-v-33d93414]:hover{border-color:#409eff;background:#f0f9ff}.prompt-title[data-v-33d93414]{font-weight:500;color:#2c3e50;margin-bottom:8px}.prompt-description[data-v-33d93414]{color:#606266;font-size:13px;margin-bottom:8px}.prompt-tags[data-v-33d93414]{display:flex;gap:6px;flex-wrap:wrap}.continue-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.continue-container[data-v-33d93414]{height:500px}.continue-config[data-v-33d93414]{display:flex;flex-direction:column;gap:16px;height:100%}.config-section h4[data-v-33d93414]{margin:0 0 8px;color:#2c3e50;font-size:14px;font-weight:600}.tips-list[data-v-33d93414]{margin:0;padding-left:20px;color:#6c757d;font-size:13px;line-height:1.5}.tips-list li[data-v-33d93414]{margin-bottom:4px}.config-actions[data-v-33d93414]{margin-top:auto;display:flex;gap:8px;justify-content:flex-end}.continue-result[data-v-33d93414]{display:flex;flex-direction:column;border-left:1px solid #e5e7eb;padding-left:20px;height:100%}.result-header h4[data-v-33d93414]{margin:0 0 12px;color:#2c3e50;font-size:14px;font-weight:600}.result-content[data-v-33d93414]{flex:1;display:flex;flex-direction:column;overflow-y:auto;max-height:500px}.continuing-placeholder[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-style:italic;padding:20px;justify-content:center}.continuing-placeholder .loading-icon[data-v-33d93414]{font-size:16px;animation:spin-33d93414 1s linear infinite}@keyframes spin-33d93414{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.continued-content[data-v-33d93414]{flex:1;display:flex;flex-direction:column;min-height:0}.continued-text[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#1e40af;height:300px;overflow-y:auto;scroll-behavior:smooth;white-space:pre-wrap;word-wrap:break-word}.result-actions[data-v-33d93414]{display:flex;gap:8px;justify-content:center;margin-top:12px}.empty-result[data-v-33d93414]{flex:1;display:flex;align-items:center;justify-content:center}.optimize-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.optimize-container[data-v-33d93414]{height:500px}.optimize-config[data-v-33d93414]{display:flex;flex-direction:column;gap:16px;height:100%}.selected-text-preview[data-v-33d93414]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:12px;font-size:13px;line-height:1.6;color:#495057;max-height:120px;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word}.optimize-result[data-v-33d93414]{display:flex;flex-direction:column;border-left:1px solid #e5e7eb;padding-left:20px;height:100%}.optimizing-placeholder[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-style:italic;padding:20px;justify-content:center}.optimizing-placeholder .loading-icon[data-v-33d93414]{font-size:16px;animation:spin-33d93414 1s linear infinite}.optimized-content-container[data-v-33d93414]{flex:1;display:flex;flex-direction:column;min-height:0}.optimized-content[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#1e40af;flex:1;overflow-y:auto;scroll-behavior:smooth;white-space:pre-wrap;word-wrap:break-word}.header-actions[data-v-33d93414]{display:flex;gap:8px}.generating-status[data-v-33d93414]{margin-bottom:12px}.status-bar[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:8px 16px;border-radius:6px;box-shadow:0 2px 8px #667eea4d}.status-info[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500}.rotating[data-v-33d93414]{animation:rotate-33d93414 1s linear infinite}@keyframes rotate-33d93414{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.optimizing-status[data-v-33d93414]{margin-bottom:12px}.optimizing-status .status-bar[data-v-33d93414]{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%);color:#fff;padding:6px 12px;border-radius:4px;box-shadow:0 2px 6px #f093fb4d;font-size:13px}.optimizing-status .status-info[data-v-33d93414]{gap:6px;font-weight:500}.writing-style-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.writing-style-container[data-v-33d93414]{max-height:500px;overflow-y:auto}.style-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.style-header h4[data-v-33d93414]{margin:0;color:#374151;font-size:16px;font-weight:600}.style-list[data-v-33d93414]{display:flex;flex-direction:column;gap:12px}.style-item-row[data-v-33d93414]{display:flex;gap:12px;align-items:center;padding:12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px}.style-input[data-v-33d93414]{flex:1}.style-prompt-input[data-v-33d93414]{flex:2}.style-item-row .el-button[data-v-33d93414]{flex-shrink:0}.book-analysis[data-v-0ef89392]{height:calc(100vh - 140px);display:flex;flex-direction:column}.page-header[data-v-0ef89392]{text-align:center;margin-bottom:20px}.page-header h2[data-v-0ef89392]{font-size:24px;color:#2c3e50;margin-bottom:8px}.page-header p[data-v-0ef89392]{color:#7f8c8d;margin:0}.analysis-container[data-v-0ef89392]{display:flex;flex:1;gap:20px;height:100%;overflow:hidden}.left-panel[data-v-0ef89392]{width:320px;background:white;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a;overflow-y:auto}.panel-section[data-v-0ef89392]{margin-bottom:24px}.panel-section h3[data-v-0ef89392]{font-size:16px;color:#2c3e50;margin-bottom:16px;display:flex;align-items:center;gap:8px}.upload-area[data-v-0ef89392]{width:100%}.upload-area .el-upload-dragger[data-v-0ef89392]{width:100%;height:120px;display:flex;flex-direction:column;justify-content:center;align-items:center}.encoding-selection[data-v-0ef89392]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border:1px solid #e4e7ed}.encoding-selection label[data-v-0ef89392]{display:block;margin-bottom:8px;font-size:14px;font-weight:500;color:#2c3e50}.encoding-switch[data-v-0ef89392]{margin-top:12px;padding:8px 12px;background:#f0f2f5;border-radius:6px;display:flex;align-items:center;gap:12px}.encoding-switch span[data-v-0ef89392]{font-size:12px;color:#606266;white-space:nowrap}.file-info[data-v-0ef89392]{margin-top:12px}.file-card[data-v-0ef89392]{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #e4e7ed;border-radius:6px;background:#f8f9fa}.file-details[data-v-0ef89392]{flex:1;display:flex;flex-direction:column;gap:4px}.file-name[data-v-0ef89392]{font-size:14px;color:#2c3e50;font-weight:500}.file-size[data-v-0ef89392]{font-size:12px;color:#909399}.file-encoding[data-v-0ef89392]{font-size:11px;color:#67c23a;background:#f0f9ff;padding:2px 6px;border-radius:10px;border:1px solid #b3e5fc;align-self:flex-start}.file-actions[data-v-0ef89392]{display:flex;gap:4px;align-items:center}.remove-btn[data-v-0ef89392]{color:#f56c6c}.setting-item[data-v-0ef89392]{margin-bottom:16px}.setting-item label[data-v-0ef89392]{display:block;font-size:14px;color:#606266;margin-bottom:8px}.template-option[data-v-0ef89392]{display:flex;align-items:center;gap:8px}.template-icon[data-v-0ef89392]{font-size:16px}.action-buttons[data-v-0ef89392]{display:flex;flex-direction:column;gap:12px}.stats-section[data-v-0ef89392]{background:#f8f9fa;border-radius:6px;padding:16px}.stats-grid[data-v-0ef89392]{display:grid;grid-template-columns:1fr;gap:12px}.stat-item[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center}.stat-label[data-v-0ef89392]{font-size:14px;color:#909399}.stat-value[data-v-0ef89392]{font-size:14px;color:#2c3e50;font-weight:500}.right-panel[data-v-0ef89392]{flex:1;background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a;overflow:hidden;display:flex;flex-direction:column}.editor-container[data-v-0ef89392]{display:flex;flex-direction:column;height:100%;padding:20px}.editor-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e4e7ed}.editor-header h3[data-v-0ef89392]{margin:0;font-size:18px;color:#2c3e50}.header-actions[data-v-0ef89392]{display:flex;gap:8px}.progress-section[data-v-0ef89392]{margin-bottom:16px}.progress-text[data-v-0ef89392]{margin-top:8px;font-size:14px;color:#606266;text-align:center}.analysis-editor[data-v-0ef89392]{flex:1}.analysis-editor .el-textarea__inner[data-v-0ef89392]{height:100%!important;resize:none;font-family:Monaco,Consolas,Courier New,monospace;font-size:14px;line-height:1.6}.chapter-actions[data-v-0ef89392]{display:flex;gap:8px;margin-top:8px}.chapter-actions button[data-v-0ef89392]{margin-left:0!important}.range-input-group[data-v-0ef89392]{display:flex;align-items:center;gap:8px;width:100%}.range-separator[data-v-0ef89392]{color:#606266;font-size:14px}.chapter-option[data-v-0ef89392]{width:100%}.chapter-title[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.chapter-words[data-v-0ef89392]{color:#8492a6;font-size:12px}.chapter-summary[data-v-0ef89392]{color:#909399;font-size:12px;line-height:1.4;white-space:normal;word-break:break-all}.chapter-details-content[data-v-0ef89392]{max-height:500px;overflow-y:auto}.chapter-detail-item[data-v-0ef89392]{padding:16px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:12px}.chapter-detail-item[data-v-0ef89392]:last-child{margin-bottom:0}.chapter-detail-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.chapter-detail-header h4[data-v-0ef89392]{margin:0;color:#303133;font-size:16px}.chapter-detail-words[data-v-0ef89392]{color:#909399;font-size:12px}.chapter-detail-summary[data-v-0ef89392]{margin-bottom:12px;line-height:1.6;color:#606266}.chapter-detail-preview[data-v-0ef89392]{color:#909399;font-size:14px;line-height:1.6;background:#f8f9fa;padding:8px 12px;border-radius:4px}.ai-chapter-section[data-v-0ef89392]{margin-top:8px}.empty-state[data-v-0ef89392]{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#909399}.empty-icon[data-v-0ef89392]{font-size:64px;margin-bottom:16px}.content-preview[data-v-0ef89392]{flex:1;padding:20px;overflow-y:auto}.preview-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e4e7ed}.preview-header h3[data-v-0ef89392]{margin:0;color:#2c3e50}.preview-tip[data-v-0ef89392]{font-size:12px;color:#909399}.preview-content[data-v-0ef89392]{line-height:1.8;color:#606266;white-space:pre-wrap}.analysis-progress[data-v-0ef89392]{flex:1;display:flex;justify-content:center;align-items:center;padding:40px}.progress-content[data-v-0ef89392]{text-align:center;max-width:400px}.progress-icon[data-v-0ef89392]{font-size:48px;color:#409eff;margin-bottom:16px;animation:spin-0ef89392 2s linear infinite}@keyframes spin-0ef89392{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.progress-steps[data-v-0ef89392]{margin-top:24px;display:flex;flex-direction:column;gap:12px}.progress-step[data-v-0ef89392]{display:flex;align-items:center;gap:12px;padding:8px;border-radius:6px;transition:all .3s}.progress-step.active[data-v-0ef89392]{background:#e6f7ff;color:#1890ff}.progress-step.completed[data-v-0ef89392]{color:#52c41a}.step-text[data-v-0ef89392]{font-size:14px}.analysis-results[data-v-0ef89392]{flex:1;display:flex;flex-direction:column;overflow:hidden}.results-header[data-v-0ef89392]{padding:20px 20px 0;border-bottom:1px solid #e4e7ed}.results-header h3[data-v-0ef89392]{margin:0 0 8px;color:#2c3e50}.results-meta[data-v-0ef89392]{display:flex;gap:20px;font-size:12px;color:#909399;margin-bottom:16px}.results-tabs[data-v-0ef89392]{flex:1;overflow:hidden}.results-tabs[data-v-0ef89392] .el-tabs__content{height:calc(100% - 40px);overflow-y:auto;padding:20px}.analysis-grid[data-v-0ef89392]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.analysis-card[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;padding:16px;border:1px solid #e9ecef}.analysis-card h4[data-v-0ef89392]{margin:0 0 16px;color:#2c3e50;font-size:16px}.info-list[data-v-0ef89392]{display:flex;flex-direction:column;gap:8px}.info-item[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center}.label[data-v-0ef89392]{font-size:14px;color:#606266}.value[data-v-0ef89392]{font-size:14px;color:#2c3e50;font-weight:500}.characters-list[data-v-0ef89392]{display:flex;flex-direction:column;gap:8px}.character-item[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;padding:8px;background:white;border-radius:4px;font-size:14px}.character-name[data-v-0ef89392]{font-weight:500;color:#2c3e50}.character-role[data-v-0ef89392]{color:#909399}.character-frequency[data-v-0ef89392]{color:#409eff;font-size:12px}.plot-structure[data-v-0ef89392]{display:flex;flex-direction:column;gap:8px}.structure-item[data-v-0ef89392]{display:flex;gap:8px;padding:8px;background:white;border-radius:4px}.structure-label[data-v-0ef89392]{font-size:14px;color:#606266;min-width:80px}.structure-value[data-v-0ef89392]{font-size:14px;color:#2c3e50;flex:1}.techniques-analysis[data-v-0ef89392]{display:flex;flex-direction:column;gap:24px}.technique-section[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.technique-section h4[data-v-0ef89392]{margin:0 0 12px;color:#2c3e50}.technique-description[data-v-0ef89392]{color:#606266;margin-bottom:16px;line-height:1.6}.examples-section h5[data-v-0ef89392]{margin:0 0 12px;color:#2c3e50;font-size:14px}.example-item[data-v-0ef89392]{background:white;border-radius:6px;padding:16px;margin-bottom:12px;border:1px solid #e4e7ed}.example-text[data-v-0ef89392]{font-style:italic;color:#409eff;margin-bottom:8px}.example-analysis[data-v-0ef89392]{font-size:14px;color:#606266}.chapters-analysis[data-v-0ef89392]{display:flex;flex-direction:column;gap:20px}.chapter-detail[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.chapter-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e4e7ed}.chapter-header h4[data-v-0ef89392]{margin:0;color:#2c3e50}.chapter-words[data-v-0ef89392]{font-size:12px;color:#909399;background:#e9ecef;padding:4px 8px;border-radius:12px}.chapter-content[data-v-0ef89392]{display:grid;gap:16px}.chapter-summary h5[data-v-0ef89392],.chapter-techniques h5[data-v-0ef89392]{margin:0 0 8px;color:#2c3e50;font-size:14px}.chapter-summary p[data-v-0ef89392]{margin:0;color:#606266;line-height:1.6}.technique-tags[data-v-0ef89392]{display:flex;gap:8px;flex-wrap:wrap}.inspiration-grid[data-v-0ef89392]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.inspiration-card[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.inspiration-card h4[data-v-0ef89392]{margin:0 0 16px;color:#2c3e50}.highlight-list[data-v-0ef89392],.suggestion-list[data-v-0ef89392]{margin:0;padding-left:20px}.highlight-list li[data-v-0ef89392],.suggestion-list li[data-v-0ef89392]{margin-bottom:8px;color:#606266;line-height:1.6}.related-techniques[data-v-0ef89392]{display:flex;gap:8px;flex-wrap:wrap}.chapter-content-dialog[data-v-0ef89392]{display:flex;flex-direction:column;gap:20px}.chapter-selector[data-v-0ef89392]{display:flex;flex-direction:column;gap:12px}.chapter-select-option[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;width:100%}.chapter-title[data-v-0ef89392]{font-weight:500;color:#2c3e50}.chapter-words[data-v-0ef89392]{font-size:12px;color:#909399}.chapter-info[data-v-0ef89392]{display:flex;gap:8px;flex-wrap:wrap}.chapter-content-viewer[data-v-0ef89392]{background:#f8f9fa;border-radius:8px;border:1px solid #e4e7ed;overflow:hidden}.chapter-text[data-v-0ef89392]{padding:20px;line-height:1.8;font-family:Microsoft YaHei,sans-serif;color:#2c3e50;white-space:pre-wrap;word-break:break-word}.empty-state[data-v-0ef89392]{padding:60px 20px;text-align:center;color:#909399}.empty-state .el-icon[data-v-0ef89392]{font-size:48px;margin-bottom:16px;color:#c0c4cc}.empty-state p[data-v-0ef89392]{margin:0;font-size:14px}.dialog-footer[data-v-0ef89392]{display:flex;justify-content:flex-end;gap:12px}@media (max-width: 1200px){.analysis-container[data-v-0ef89392]{flex-direction:column;height:auto}.left-panel[data-v-0ef89392]{width:100%;order:1}.right-panel[data-v-0ef89392]{order:2;min-height:600px}.analysis-grid[data-v-0ef89392],.inspiration-grid[data-v-0ef89392]{grid-template-columns:1fr}.chapter-content-dialog[data-v-0ef89392]{gap:16px}.chapter-text[data-v-0ef89392]{padding:16px;line-height:1.6}}@media (max-width: 768px){.analysis-container[data-v-0ef89392]{gap:16px}.left-panel[data-v-0ef89392],.right-panel[data-v-0ef89392]{border-radius:6px;padding:16px}.chapter-header[data-v-0ef89392]{flex-direction:column;align-items:flex-start;gap:8px}.chapter-selector .el-select[data-v-0ef89392]{width:100%!important}.dialog-footer[data-v-0ef89392]{flex-direction:column;gap:8px}.dialog-footer .el-button[data-v-0ef89392]{width:100%}}.chapter-details-main[data-v-0ef89392]{display:flex;gap:20px;height:600px}.chapter-list-panel[data-v-0ef89392]{width:350px;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.panel-header[data-v-0ef89392]{background:#f5f7fa;padding:12px 16px;border-bottom:1px solid #e4e7ed}.panel-header h4[data-v-0ef89392]{margin:0;font-size:14px;color:#2c3e50}.chapter-list[data-v-0ef89392]{height:calc(100% - 49px);overflow-y:auto}.chapter-list-item[data-v-0ef89392]{padding:12px 16px;border-bottom:1px solid #f0f0f0;cursor:pointer;transition:all .2s}.chapter-list-item[data-v-0ef89392]:hover{background:#f8f9fa}.chapter-list-item.active[data-v-0ef89392]{background:#e8f4fd;border-left:3px solid #409eff}.chapter-item-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.chapter-item-title[data-v-0ef89392]{font-weight:500;color:#2c3e50;font-size:14px}.chapter-item-words[data-v-0ef89392]{font-size:12px;color:#909399}.chapter-item-summary[data-v-0ef89392]{font-size:12px;color:#606266;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chapter-item-summary[data-v-0ef89392]:empty:before{content:"暂无简读,点击查看后可调用AI生成";color:#c0c4cc;font-style:italic}.chapter-detail-panel[data-v-0ef89392]{flex:1;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.detail-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f5f7fa;border-bottom:1px solid #e4e7ed}.detail-header h4[data-v-0ef89392]{margin:0;color:#2c3e50;font-size:16px}.detail-actions[data-v-0ef89392]{display:flex;gap:8px}.summary-content[data-v-0ef89392]{padding:20px}.chapter-meta[data-v-0ef89392]{display:flex;gap:8px;margin-bottom:16px}.summary-actions[data-v-0ef89392]{margin-top:20px}.summary-display[data-v-0ef89392]{margin-top:16px}.summary-text[data-v-0ef89392]{color:#2c3e50;line-height:1.6;font-size:14px;background:#f8f9fa;border-radius:6px;padding:16px;border:1px solid #e4e7ed}.summary-actions-bottom[data-v-0ef89392]{margin-top:12px;text-align:right}.prompt-section[data-v-0ef89392]{margin-bottom:16px;border:1px solid #e4e7ed;border-radius:6px;overflow:hidden}.prompt-header[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#f5f7fa;border-bottom:1px solid #e4e7ed}.prompt-label[data-v-0ef89392]{font-size:13px;font-weight:500;color:#2c3e50}.prompt-preview[data-v-0ef89392]{padding:12px;background:#fafbfc}.prompt-text[data-v-0ef89392]{font-size:12px;color:#606266;line-height:1.4;white-space:pre-wrap;word-break:break-word;max-height:120px;overflow-y:auto}.prompt-editor[data-v-0ef89392]{padding:12px;background:#fff}.prompt-textarea[data-v-0ef89392]{margin-bottom:8px}.prompt-textarea .el-textarea__inner[data-v-0ef89392]{font-size:12px;font-family:Monaco,Consolas,Courier New,monospace}.prompt-actions[data-v-0ef89392]{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.prompt-tips[data-v-0ef89392]{flex:1}.prompt-buttons[data-v-0ef89392]{display:flex;gap:8px}.prompt-preview-dialog[data-v-0ef89392]{padding:16px}.preview-content[data-v-0ef89392]{margin-bottom:16px;border:1px solid #e4e7ed;border-radius:6px;overflow:hidden}.prompt-full-text[data-v-0ef89392]{margin:0;padding:16px;background:#f8f9fa;font-family:Monaco,Consolas,Courier New,monospace;font-size:13px;line-height:1.5;color:#2c3e50;white-space:pre-wrap;word-break:break-word}.preview-stats[data-v-0ef89392]{display:flex;gap:8px;justify-content:center}.full-content[data-v-0ef89392]{padding:20px}.chapter-full-text[data-v-0ef89392]{color:#2c3e50;line-height:1.8;font-family:Microsoft YaHei,sans-serif;white-space:pre-wrap;word-break:break-word}.empty-detail[data-v-0ef89392]{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#909399}.empty-detail .el-icon[data-v-0ef89392]{font-size:48px;margin-bottom:16px;color:#c0c4cc}.empty-detail p[data-v-0ef89392]{margin:0;font-size:14px}@media (max-width: 1200px){.chapter-details-main[data-v-0ef89392]{flex-direction:column;height:auto}.chapter-list-panel[data-v-0ef89392]{width:100%;height:250px}.chapter-detail-panel[data-v-0ef89392]{min-height:400px}}@media (max-width: 768px){.chapter-details-main[data-v-0ef89392]{gap:16px}.detail-header[data-v-0ef89392]{flex-direction:column;align-items:flex-start;gap:8px}.chapter-meta[data-v-0ef89392]{flex-wrap:wrap}.summary-content[data-v-0ef89392],.full-content[data-v-0ef89392]{padding:16px}}#app{width:100%;height:100vh;margin:0;padding:0}*{box-sizing:border-box}body{margin:0;padding:0;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif}:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121.3,187.1,255);--el-color-primary-light-5:rgb(159.5,206.5,255);--el-color-primary-light-7:rgb(197.7,225.9,255);--el-color-primary-light-8:rgb(216.8,235.6,255);--el-color-primary-light-9:rgb(235.9,245.3,255);--el-color-primary-dark-2:rgb(51.2,126.4,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(148.6,212.3,117.1);--el-color-success-light-5:rgb(179,224.5,156.5);--el-color-success-light-7:rgb(209.4,236.7,195.9);--el-color-success-light-8:rgb(224.6,242.8,215.6);--el-color-success-light-9:rgb(239.8,248.9,235.3);--el-color-success-dark-2:rgb(82.4,155.2,46.4);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(237.5,189.9,118.5);--el-color-warning-light-5:rgb(242.5,208.5,157.5);--el-color-warning-light-7:rgb(247.5,227.1,196.5);--el-color-warning-light-8:rgb(250,236.4,216);--el-color-warning-light-9:rgb(252.5,245.7,235.5);--el-color-warning-dark-2:rgb(184,129.6,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152.1,152.1);--el-color-danger-light-5:rgb(250,181.5,181.5);--el-color-danger-light-7:rgb(252,210.9,210.9);--el-color-danger-light-8:rgb(253,225.6,225.6);--el-color-danger-light-9:rgb(254,240.3,240.3);--el-color-danger-dark-2:rgb(196,86.4,86.4);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152.1,152.1);--el-color-error-light-5:rgb(250,181.5,181.5);--el-color-error-light-7:rgb(252,210.9,210.9);--el-color-error-light-8:rgb(253,225.6,225.6);--el-color-error-light-9:rgb(254,240.3,240.3);--el-color-error-dark-2:rgb(196,86.4,86.4);--el-color-info:#909399;--el-color-info-light-3:rgb(177.3,179.4,183.6);--el-color-info-light-5:rgb(199.5,201,204);--el-color-info-light-7:rgb(221.7,222.6,224.4);--el-color-info-light-8:rgb(232.8,233.4,234.6);--el-color-info-light-9:rgb(243.9,244.2,244.8);--el-color-info-dark-2:rgb(115.2,117.6,122.4);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-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);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{box-sizing:border-box;flex-shrink:0;overflow:auto;width:var(--el-aside-width,300px)}.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;position:relative;width:var(--el-input-width)}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{color:var(--el-text-color-secondary);font-size:20px;height:100px;line-height:100px;text-align:center}.el-autocomplete-suggestion.is-loading li:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-small:24px;--el-avatar-size:40px;align-items:center;background:var(--el-avatar-bg-color);box-sizing:border-box;color:var(--el-avatar-text-color);display:inline-flex;font-size:var(--el-avatar-text-size);height:var(--el-avatar-size);justify-content:center;outline:none;overflow:hidden;text-align:center;width:var(--el-avatar-size)}.el-avatar>img{display:block;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);align-items:center;background-color:var(--el-backtop-bg-color);border-radius:50%;box-shadow:var(--el-box-shadow-lighter);color:var(--el-backtop-text-color);cursor:pointer;display:flex;font-size:20px;height:40px;justify-content:center;position:fixed;width:40px;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{content:"";display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255,255,255,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}.el-calendar{--el-calendar-border:var(--el-table-border,1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{border-bottom:var(--el-calendar-header-border-bottom);display:flex;justify-content:space-between;padding:12px 20px}.el-calendar__title{align-self:center;color:var(--el-text-color)}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{color:var(--el-text-color-regular);font-weight:400;padding:12px 0}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);transition:background-color var(--el-transition-duration-fast) ease;vertical-align:top}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;height:var(--el-calendar-cell-width);padding:8px}.el-calendar-table .el-calendar-day:hover{background-color:var(--el-calendar-selected-bg-color);cursor:pointer}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-carousel__item{display:inline-block;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.el-carousel__item,.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{height:50%;width:100%}.el-carousel__mask{background-color:var(--el-color-white);height:100%;left:0;opacity:.24;position:absolute;top:0;transition:var(--el-transition-duration-fast);width:100%}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31,45,61,.11);--el-carousel-arrow-hover-background:rgba(31,45,61,.23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal,.el-carousel--vertical{overflow:hidden}.el-carousel__container{height:300px;position:relative}.el-carousel__arrow{align-items:center;background-color:var(--el-carousel-arrow-background);border:none;border-radius:50%;color:#fff;cursor:pointer;display:inline-flex;font-size:var(--el-carousel-arrow-font-size);height:var(--el-carousel-arrow-size);justify-content:center;margin:0;outline:none;padding:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);transition:var(--el-transition-duration);width:var(--el-carousel-arrow-size);z-index:10}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{list-style:none;margin:0;padding:0;position:absolute;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical)*2);position:static;text-align:center;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--right{right:0}.el-carousel__indicators--labels{left:0;right:0;text-align:center;transform:none}.el-carousel__indicators--labels .el-carousel__button{color:#000;font-size:12px;height:auto;padding:2px 18px;width:auto}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{height:calc(var(--el-carousel-indicator-width)/2);width:var(--el-carousel-indicator-height)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{background-color:#fff;border:none;cursor:pointer;display:block;height:var(--el-carousel-indicator-height);margin:0;opacity:.48;outline:none;padding:0;transition:var(--el-transition-duration);width:var(--el-carousel-indicator-width)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{opacity:0;transform:translateY(-50%) translate(-10px)}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{opacity:0;transform:translateY(-50%) translate(10px)}.el-transitioning{filter:url(#elCarouselHorizontal)}.el-transitioning-vertical{filter:url(#elCarouselVertical)}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);display:flex;font-size:var(--el-cascader-menu-font-size)}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{border-right:var(--el-cascader-menu-border);box-sizing:border-box;color:var(--el-cascader-menu-text-color);min-width:180px}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{box-sizing:border-box;list-style:none;margin:0;min-height:100%;padding:6px 0;position:relative}.el-cascader-menu__hover-zone{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.el-cascader-menu__empty-text{align-items:center;color:var(--el-cascader-color-empty);display:flex;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{align-items:center;display:flex;height:34px;line-height:34px;outline:none;padding:0 30px 0 20px;position:relative}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{left:10px;position:absolute}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;overflow:hidden;padding:0 8px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;font-size:var(--el-font-size-base);line-height:32px;outline:none;position:relative;vertical-align:middle}.el-cascader:not(.is-disabled):hover .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset;cursor:pointer}.el-cascader .el-input{cursor:pointer;display:flex}.el-cascader .el-input .el-input__inner{cursor:pointer;text-overflow:ellipsis}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{font-size:14px;transition:transform var(--el-transition-duration)}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--large .el-cascader__tags{gap:6px;padding:8px}.el-cascader--large .el-cascader__search-input{height:24px;margin-left:7px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader--small .el-cascader__tags{gap:4px;padding:2px}.el-cascader--small .el-cascader__search-input{height:20px;margin-left:5px}.el-cascader.is-disabled .el-cascader__label{color:var(--el-disabled-text-color);z-index:calc(var(--el-index-normal) + 1)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill)}.el-cascader__dropdown.el-popper,.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__tags{box-sizing:border-box;display:flex;flex-wrap:wrap;gap:6px;left:0;line-height:normal;padding:4px;position:absolute;right:30px;text-align:left;top:50%;transform:translateY(-50%)}.el-cascader__tags .el-tag{align-items:center;background:var(--el-cascader-tag-background);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__tags .el-tag.el-tag--dark,.el-cascader__tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__tags .el-tag+input{margin-left:0}.el-cascader__tags.is-validate{right:55px}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{align-items:center;background:var(--el-fill-color);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag.el-tag--dark,.el-cascader__collapse-tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__collapse-tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags .el-tag+input{margin-left:0}.el-cascader__collapse-tags .el-tag{margin:2px 0}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{color:var(--el-cascader-menu-text-color);font-size:var(--el-font-size-base);margin:0;max-height:204px;padding:6px 0;text-align:center}.el-cascader__suggestion-item{align-items:center;cursor:pointer;display:flex;height:34px;justify-content:space-between;outline:none;padding:0 15px;text-align:left}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{color:var(--el-cascader-color-empty);margin:10px 0}.el-cascader__search-input{background:transparent;border:none;box-sizing:border-box;color:var(--el-cascader-menu-text-color);flex:1;height:24px;margin-left:7px;min-width:60px;outline:none;padding:0}.el-cascader__search-input::-moz-placeholder{color:transparent}.el-cascader__search-input::placeholder{color:transparent}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:700;line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all)}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled,.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled,.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled,.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled,.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled,.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary);display:inline-block;position:relative}.el-checkbox-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left-color:transparent;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);line-height:1;margin:0;outline:none;padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{margin:0;opacity:0;outline:none;position:absolute;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7);color:var(--el-checkbox-button-checked-text-color)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-bottom-left-radius:var(--el-border-radius-base);border-left:var(--el-border);border-top-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-bottom-right-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;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);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{flex:0 0 0%;max-width:0}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{left:0;position:relative}.el-col-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-1,.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{left:4.1666666667%;position:relative}.el-col-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-2,.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{left:8.3333333333%;position:relative}.el-col-3{flex:0 0 12.5%;max-width:12.5%}.el-col-3,.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{left:12.5%;position:relative}.el-col-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-4,.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{left:16.6666666667%;position:relative}.el-col-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-5,.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{left:20.8333333333%;position:relative}.el-col-6{flex:0 0 25%;max-width:25%}.el-col-6,.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{left:25%;position:relative}.el-col-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-7,.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{left:29.1666666667%;position:relative}.el-col-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-8,.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{left:33.3333333333%;position:relative}.el-col-9{flex:0 0 37.5%;max-width:37.5%}.el-col-9,.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{left:37.5%;position:relative}.el-col-10{flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-10,.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{left:41.6666666667%;position:relative}.el-col-11{flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-11,.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{left:45.8333333333%;position:relative}.el-col-12{flex:0 0 50%;max-width:50%}.el-col-12,.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%;position:relative}.el-col-13{flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-13,.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{left:54.1666666667%;position:relative}.el-col-14{flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-14,.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{left:58.3333333333%;position:relative}.el-col-15{flex:0 0 62.5%;max-width:62.5%}.el-col-15,.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{left:62.5%;position:relative}.el-col-16{flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-16,.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{left:66.6666666667%;position:relative}.el-col-17{flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-17,.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{left:70.8333333333%;position:relative}.el-col-18{flex:0 0 75%;max-width:75%}.el-col-18,.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{left:75%;position:relative}.el-col-19{flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-19,.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{left:79.1666666667%;position:relative}.el-col-20{flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-20,.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{left:83.3333333333%;position:relative}.el-col-21{flex:0 0 87.5%;max-width:87.5%}.el-col-21,.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{left:87.5%;position:relative}.el-col-22{flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-22,.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{left:91.6666666667%;position:relative}.el-col-23{flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-23,.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{left:95.8333333333%;position:relative}.el-col-24{flex:0 0 100%;max-width:100%}.el-col-24,.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{left:100%;position:relative}@media only screen and (max-width:767px){.el-col-xs-0{display:none;flex:0 0 0%;max-width:0}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{left:0;position:relative}.el-col-xs-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xs-1,.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{left:4.1666666667%;position:relative}.el-col-xs-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xs-2,.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{left:8.3333333333%;position:relative}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xs-3,.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{left:12.5%;position:relative}.el-col-xs-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xs-4,.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{left:16.6666666667%;position:relative}.el-col-xs-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xs-5,.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{left:20.8333333333%;position:relative}.el-col-xs-6{flex:0 0 25%;max-width:25%}.el-col-xs-6,.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{left:25%;position:relative}.el-col-xs-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xs-7,.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{left:29.1666666667%;position:relative}.el-col-xs-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xs-8,.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{left:33.3333333333%;position:relative}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xs-9,.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{left:37.5%;position:relative}.el-col-xs-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{left:41.6666666667%;position:relative}.el-col-xs-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{left:45.8333333333%;position:relative}.el-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{left:50%;position:relative}.el-col-xs-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{left:54.1666666667%;position:relative}.el-col-xs-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{left:58.3333333333%;position:relative}.el-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{left:62.5%;position:relative}.el-col-xs-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{left:66.6666666667%;position:relative}.el-col-xs-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{left:70.8333333333%;position:relative}.el-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{left:75%;position:relative}.el-col-xs-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{left:79.1666666667%;position:relative}.el-col-xs-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{left:83.3333333333%;position:relative}.el-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{left:87.5%;position:relative}.el-col-xs-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{left:91.6666666667%;position:relative}.el-col-xs-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{left:95.8333333333%;position:relative}.el-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{left:100%;position:relative}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;flex:0 0 0%;max-width:0}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{left:0;position:relative}.el-col-sm-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-sm-1,.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{left:4.1666666667%;position:relative}.el-col-sm-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-sm-2,.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{left:8.3333333333%;position:relative}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%}.el-col-sm-3,.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{left:12.5%;position:relative}.el-col-sm-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-sm-4,.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{left:16.6666666667%;position:relative}.el-col-sm-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-sm-5,.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{left:20.8333333333%;position:relative}.el-col-sm-6{flex:0 0 25%;max-width:25%}.el-col-sm-6,.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{left:25%;position:relative}.el-col-sm-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-sm-7,.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{left:29.1666666667%;position:relative}.el-col-sm-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-sm-8,.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{left:33.3333333333%;position:relative}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%}.el-col-sm-9,.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{left:37.5%;position:relative}.el-col-sm-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{left:41.6666666667%;position:relative}.el-col-sm-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{left:45.8333333333%;position:relative}.el-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{left:50%;position:relative}.el-col-sm-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{left:54.1666666667%;position:relative}.el-col-sm-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{left:58.3333333333%;position:relative}.el-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{left:62.5%;position:relative}.el-col-sm-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{left:66.6666666667%;position:relative}.el-col-sm-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{left:70.8333333333%;position:relative}.el-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{left:75%;position:relative}.el-col-sm-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{left:79.1666666667%;position:relative}.el-col-sm-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{left:83.3333333333%;position:relative}.el-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{left:87.5%;position:relative}.el-col-sm-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{left:91.6666666667%;position:relative}.el-col-sm-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{left:95.8333333333%;position:relative}.el-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{left:100%;position:relative}}@media only screen and (min-width:992px){.el-col-md-0{display:none;flex:0 0 0%;max-width:0}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{left:0;position:relative}.el-col-md-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-md-1,.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{left:4.1666666667%;position:relative}.el-col-md-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-md-2,.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{left:8.3333333333%;position:relative}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%}.el-col-md-3,.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{left:12.5%;position:relative}.el-col-md-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-md-4,.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{left:16.6666666667%;position:relative}.el-col-md-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-md-5,.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{left:20.8333333333%;position:relative}.el-col-md-6{flex:0 0 25%;max-width:25%}.el-col-md-6,.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{left:25%;position:relative}.el-col-md-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-md-7,.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{left:29.1666666667%;position:relative}.el-col-md-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-md-8,.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{left:33.3333333333%;position:relative}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%}.el-col-md-9,.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{left:37.5%;position:relative}.el-col-md-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{left:41.6666666667%;position:relative}.el-col-md-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{left:45.8333333333%;position:relative}.el-col-md-12{display:block;flex:0 0 50%;max-width:50%}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{left:50%;position:relative}.el-col-md-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{left:54.1666666667%;position:relative}.el-col-md-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{left:58.3333333333%;position:relative}.el-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{left:62.5%;position:relative}.el-col-md-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{left:66.6666666667%;position:relative}.el-col-md-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{left:70.8333333333%;position:relative}.el-col-md-18{display:block;flex:0 0 75%;max-width:75%}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{left:75%;position:relative}.el-col-md-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{left:79.1666666667%;position:relative}.el-col-md-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{left:83.3333333333%;position:relative}.el-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{left:87.5%;position:relative}.el-col-md-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{left:91.6666666667%;position:relative}.el-col-md-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{left:95.8333333333%;position:relative}.el-col-md-24{display:block;flex:0 0 100%;max-width:100%}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{left:100%;position:relative}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;flex:0 0 0%;max-width:0}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{left:0;position:relative}.el-col-lg-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-lg-1,.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{left:4.1666666667%;position:relative}.el-col-lg-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-lg-2,.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{left:8.3333333333%;position:relative}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%}.el-col-lg-3,.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{left:12.5%;position:relative}.el-col-lg-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-lg-4,.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{left:16.6666666667%;position:relative}.el-col-lg-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-lg-5,.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{left:20.8333333333%;position:relative}.el-col-lg-6{flex:0 0 25%;max-width:25%}.el-col-lg-6,.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{left:25%;position:relative}.el-col-lg-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-lg-7,.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{left:29.1666666667%;position:relative}.el-col-lg-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-lg-8,.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{left:33.3333333333%;position:relative}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%}.el-col-lg-9,.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{left:37.5%;position:relative}.el-col-lg-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{left:41.6666666667%;position:relative}.el-col-lg-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{left:45.8333333333%;position:relative}.el-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{left:50%;position:relative}.el-col-lg-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{left:54.1666666667%;position:relative}.el-col-lg-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{left:58.3333333333%;position:relative}.el-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{left:62.5%;position:relative}.el-col-lg-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{left:66.6666666667%;position:relative}.el-col-lg-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{left:70.8333333333%;position:relative}.el-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{left:75%;position:relative}.el-col-lg-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{left:79.1666666667%;position:relative}.el-col-lg-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{left:83.3333333333%;position:relative}.el-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{left:87.5%;position:relative}.el-col-lg-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{left:91.6666666667%;position:relative}.el-col-lg-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{left:95.8333333333%;position:relative}.el-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{left:100%;position:relative}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;flex:0 0 0%;max-width:0}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{left:0;position:relative}.el-col-xl-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xl-1,.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{left:4.1666666667%;position:relative}.el-col-xl-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xl-2,.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{left:8.3333333333%;position:relative}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xl-3,.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{left:12.5%;position:relative}.el-col-xl-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xl-4,.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{left:16.6666666667%;position:relative}.el-col-xl-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xl-5,.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{left:20.8333333333%;position:relative}.el-col-xl-6{flex:0 0 25%;max-width:25%}.el-col-xl-6,.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{left:25%;position:relative}.el-col-xl-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xl-7,.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{left:29.1666666667%;position:relative}.el-col-xl-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xl-8,.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{left:33.3333333333%;position:relative}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xl-9,.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{left:37.5%;position:relative}.el-col-xl-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{left:41.6666666667%;position:relative}.el-col-xl-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{left:45.8333333333%;position:relative}.el-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{left:50%;position:relative}.el-col-xl-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{left:54.1666666667%;position:relative}.el-col-xl-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{left:58.3333333333%;position:relative}.el-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{left:62.5%;position:relative}.el-col-xl-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{left:66.6666666667%;position:relative}.el-col-xl-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{left:70.8333333333%;position:relative}.el-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{left:75%;position:relative}.el-col-xl-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{left:79.1666666667%;position:relative}.el-col-xl-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{left:83.3333333333%;position:relative}.el-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{left:87.5%;position:relative}.el-col-xl-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{left:91.6666666667%;position:relative}.el-col-xl-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{left:95.8333333333%;position:relative}.el-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{left:100%;position:relative}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-bottom:1px solid var(--el-collapse-border-color);border-top:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{align-items:center;background-color:var(--el-collapse-header-bg-color);border:none;border-bottom:1px solid var(--el-collapse-border-color);color:var(--el-collapse-header-text-color);cursor:pointer;display:flex;font-size:var(--el-collapse-header-font-size);font-weight:500;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);outline:none;padding:0;transition:border-bottom-color var(--el-transition-duration);width:100%}.el-collapse-item__arrow{font-weight:300;transition:transform var(--el-transition-duration)}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{flex:auto;text-align:left}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{background-color:var(--el-collapse-content-bg-color);border-bottom:1px solid var(--el-collapse-border-color);box-sizing:border-box;overflow:hidden;will-change:height}.el-collapse-item__content{color:var(--el-collapse-content-text-color);font-size:var(--el-collapse-content-font-size);line-height:1.7692307692;padding-bottom:25px}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{border-radius:4px;cursor:pointer;height:20px;margin:0 0 8px 8px;width:20px}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{border-radius:3px;display:flex;height:100%}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{background-color:red;box-sizing:border-box;float:right;height:12px;padding:0 2px;position:relative;width:280px}.el-color-hue-slider__bar{background:linear-gradient(90deg,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00);height:100%;position:relative}.el-color-hue-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-hue-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-hue-slider.is-vertical{height:180px;padding:2px 0;width:12px}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-svpanel{height:180px;position:relative;width:280px}.el-color-svpanel__black,.el-color-svpanel__white{bottom:0;left:0;position:absolute;right:0;top:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(0deg,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;cursor:head;height:4px;transform:translate(-2px,-2px);width:4px}.el-color-alpha-slider{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;box-sizing:border-box;height:12px;position:relative;width:280px}.el-color-alpha-slider__bar{background:linear-gradient(to right,rgba(255,255,255,0) 0,var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-alpha-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-alpha-slider.is-vertical{height:180px;width:20px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,rgba(255,255,255,0) 0,rgb(255,255,255))}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{clear:both;content:"";display:table}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{color:#000;float:left;font-size:12px;line-height:26px;width:160px}.el-color-picker{display:inline-block;height:32px;line-height:normal;outline:none;position:relative;width:32px}.el-color-picker:hover:not(.is-disabled,.is-focused) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-focused .el-color-picker__trigger{border-color:var(--el-color-primary)}.el-color-picker.is-disabled .el-color-picker__trigger{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-color-picker.is-disabled .el-color-picker__color{opacity:.3}.el-color-picker--large{height:40px;width:40px}.el-color-picker--small{height:24px;width:24px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__trigger{align-items:center;border:1px solid var(--el-border-color);border-radius:4px;cursor:pointer;display:inline-flex;font-size:0;justify-content:center;padding:4px}.el-color-picker__color,.el-color-picker__trigger{box-sizing:border-box;height:100%;position:relative;width:100%}.el-color-picker__color{border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);display:block;text-align:center}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px}.el-color-picker__color-inner{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{align-items:center;color:#fff;display:inline-flex;font-size:12px;justify-content:center}.el-color-picker__panel{background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);box-sizing:content-box;padding:6px;position:absolute;z-index:10}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333333}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;cursor:pointer;height:30px;padding:4px 0;position:relative;text-align:center;width:32px}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;display:block;height:24px;left:50%;line-height:24px;margin:0 auto;position:absolute;transform:translate(-50%);width:24px}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:1}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);border-radius:15px;color:#fff}.el-date-table td.week{color:var(--el-datepicker-header-text-color);font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{border-bottom:1px solid var(--el-border-color-lighter);color:var(--el-datepicker-header-text-color);font-weight:400;padding:5px}.el-month-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-month-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .el-date-table-cell__text,.el-month-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:54px}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date .el-date-table-cell,.el-month-table td.start-date .el-date-table-cell{color:#fff}.el-month-table td.end-date .el-date-table-cell__text,.el-month-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.end-date .el-date-table-cell__text,.el-year-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:60px}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.end-date .el-date-table-cell,.el-year-table td.start-date .el-date-table-cell{color:#fff}.el-year-table td.end-date .el-date-table-cell__text,.el-year-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px;vertical-align:middle}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled,.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:"";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;margin-top:8px;outline:none}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-picker__header{padding:12px 12px 0;text-align:center}.el-date-picker__header--bordered{border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{cursor:pointer;float:left;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{height:28px;position:relative;text-align:center}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-range-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-range-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-range-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-range-picker__content{box-sizing:border-box;float:left;margin:0;padding:16px;width:50%}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-range-picker__time-header>.el-icon-arrow-right{color:var(--el-datepicker-icon-color);display:table-cell;font-size:20px;vertical-align:middle}.el-date-range-picker__time-picker-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{background:#ffffff;position:absolute;right:0;top:13px;z-index:1}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:"";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:"";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-empty-padding);text-align:center}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:top;width:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:100%;vertical-align:top;width:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;text-align:left}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-input-tag__wrapper,.el-form-item.is-error .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-input-tag__wrapper:focus,.el-form-item.is-error .el-input-tag__wrapper:hover,.el-form-item.is-error .el-input__wrapper,.el-form-item.is-error .el-input__wrapper.is-focus,.el-form-item.is-error .el-input__wrapper:focus,.el-form-item.is-error .el-input__wrapper:hover,.el-form-item.is-error .el-select__wrapper,.el-form-item.is-error .el-select__wrapper.is-focus,.el-form-item.is-error .el-select__wrapper:focus,.el-form-item.is-error .el-select__wrapper:hover,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner.is-focus,.el-form-item.is-error .el-textarea__inner:focus,.el-form-item.is-error .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translate(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translate(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px)}.el-input__inner{-webkit-appearance:none;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%}.el-input__inner:focus{outline:none}.el-input__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;cursor:not-allowed}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper,.el-input-group__append{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-hidden{display:none!important}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-placeholder-color:var(--el-text-color-placeholder);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--el-input-tag-font-size);line-height:var(--el-input-tag-line-height);min-height:var(--el-input-tag-mini-height);padding:var(--el-input-tag-padding);transform:translateZ(0);transition:var(--el-transition-duration);width:var(--el-input-tag-width)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-input-tag.is-disabled,.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix,.el-input-tag__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;padding:0 var(--el-input-tag-inner-padding)}.el-input-tag__suffix{gap:8px}.el-input-tag__inner{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:var(--el-input-tag-gap);max-width:100%;min-width:0;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-input-tag__drop-indicator{background-color:var(--el-color-primary);height:var(--el-input-tag-line-height);position:absolute;top:0;width:1px}.el-input-tag__inner .el-tag{border-color:transparent;cursor:pointer;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{line-height:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-input-tag-text-color);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding:0;width:100%}.el-input-tag__input::-moz-placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input::placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);align-items:center;color:var(--el-link-text-color);cursor:pointer;display:inline-flex;flex-direction:row;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none;vertical-align:middle}.el-link.is-hover-underline:hover:after{border-bottom:1px solid var(--el-link-hover-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link.is-underline:after{border-bottom:1px solid var(--el-link-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link:hover:after{border-color:var(--el-link-hover-text-color)}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link__inner{align-items:center;display:inline-flex;justify-content:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link.is-disabled:after{border-color:var(--el-link-disabled-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@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}}.el-main{--el-main-padding:20px;box-sizing:border-box;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{background-color:var(--el-menu-bg-color);border-right:1px solid var(--el-menu-border-color);box-sizing:border-box;list-style:none;margin:0;padding-left:0;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level)*var(--el-menu-level-padding));white-space:nowrap}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{border-right:none;display:flex;flex-wrap:nowrap;height:var(--el-menu-horizontal-height)}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:1px solid var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{align-items:center;border-bottom:2px solid transparent;color:var(--el-menu-text-color);display:inline-flex;height:100%;justify-content:center;margin:0}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{border-bottom:2px solid transparent;color:var(--el-menu-text-color);height:100%}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{align-items:center;background-color:var(--el-menu-bg-color);color:var(--el-menu-text-color);display:flex;height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);padding:0 10px}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{background-color:var(--el-menu-hover-bg-color);color:var(--el-menu-active-color,var(--el-menu-hover-text-color));outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding)*2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{display:inline-block;height:0;overflow:hidden;visibility:hidden;width:0}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{border:none;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light);min-width:200px;padding:5px 0;z-index:100}.el-menu .el-icon{flex-shrink:0}.el-menu-item{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-menu-item [class^=el-icon]{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{align-items:center;box-sizing:border-box;display:inline-flex;height:100%;left:0;padding:0 var(--el-menu-base-level-padding);position:absolute;top:0;width:100%}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:none}.el-sub-menu__title.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu .el-icon{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{font-size:12px;margin-right:0;margin-top:-6px;position:absolute;right:var(--el-menu-base-level-padding);top:50%;transition:transform var(--el-transition-duration);width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{color:var(--el-text-color-secondary);font-size:12px;line-height:normal;padding:7px 0 7px var(--el-menu-base-level-padding)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{opacity:0;transition:var(--el-transition-duration-fast)}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.el-overlay.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.el-overlay.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0;min-width:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;left:50%;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;top:20px;transform:translate(-50%);transition:opacity var(--el-transition-duration),transform .4s,top .4s;width:-moz-fit-content;width:fit-content}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay);border:1px solid var(--el-notification-border-color);border-radius:var(--el-notification-radius);box-shadow:var(--el-notification-shadow);box-sizing:border-box;display:flex;overflow:hidden;overflow-wrap:break-word;padding:var(--el-notification-padding);position:fixed;transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);width:var(--el-notification-width);z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{flex:1;margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right);min-width:0}.el-notification__title{color:var(--el-notification-title-color);font-size:var(--el-notification-title-font-size);font-weight:700;line-height:var(--el-notification-icon-size);margin:0}.el-notification__content{color:var(--el-notification-content-color);font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0}.el-notification__content p{margin:0}.el-notification .el-notification__icon{flex-shrink:0;font-size:var(--el-notification-icon-size);height:var(--el-notification-icon-size);width:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{color:var(--el-notification-close-color);cursor:pointer;font-size:var(--el-notification-close-font-size);position:absolute;right:15px;top:18px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--primary{--el-notification-icon-color:var(--el-color-primary);color:var(--el-notification-icon-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{align-items:center;display:flex;justify-content:space-between;line-height:24px}.el-page-header__left{align-items:center;display:flex;margin-right:40px;position:relative}.el-page-header__back{align-items:center;cursor:pointer;display:flex}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{align-items:center;display:flex;font-size:16px;margin-right:10px}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{color:var(--el-text-color-primary);font-size:18px}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination button{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination button *{pointer-events:none}.el-pagination button:focus{outline:none}.el-pagination button.is-active,.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button.is-active{cursor:default;font-weight:700}.el-pagination button.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination button.is-disabled,.el-pagination button:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination button:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm__main{align-items:center;display:flex}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{margin-top:8px;text-align:right}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@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%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button,.el-radio-button__inner{display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;padding:8px 15px;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary);align-items:center;display:inline-flex;height:32px}.el-rate:active,.el-rate:focus{outline:none}.el-rate__item{color:var(--el-rate-void-color);cursor:pointer;display:inline-block;font-size:0;line-height:normal;position:relative;vertical-align:middle}.el-rate .el-rate__icon{display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);position:relative;transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{left:0;position:absolute;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{color:var(--el-rate-fill-color);display:inline-block;overflow:hidden}.el-rate__decimal,.el-rate__decimal--box{left:0;position:absolute;top:0}.el-rate__text{color:var(--el-rate-text-color);font-size:var(--el-rate-font-size);vertical-align:middle}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{color:var(--el-rate-disabled-void-color);cursor:auto}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{box-sizing:border-box;display:flex;flex-wrap:wrap;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;overflow:hidden;position:relative}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty,.el-select-dropdown__loading{color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0;text-align:center}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:6px 0}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{box-sizing:border-box;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);height:34px;line-height:34px;overflow:hidden;padding:0 32px 0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{background-color:unset;color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{list-style:none;margin:0;padding:0;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);font-size:12px;line-height:34px;overflow:hidden;padding:0 20px;text-overflow:ellipsis;white-space:nowrap}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;display:inline-block;position:relative;vertical-align:middle;width:var(--el-select-width)}.el-select__wrapper{align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:14px;gap:6px;line-height:24px;min-height:32px;padding:4px 12px;position:relative;text-align:left;transform:translateZ(0);transition:var(--el-transition-duration)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select__wrapper.is-disabled,.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__prefix,.el-select__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;gap:6px}.el-select__caret{color:var(--el-select-input-color);cursor:pointer;font-size:var(--el-select-input-font-size);transform:rotate(0);transition:var(--el-transition-duration)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{border-color:transparent;cursor:pointer}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{display:flex;flex-wrap:wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__tags-text{line-height:normal}.el-select__placeholder,.el-select__tags-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select__placeholder{color:var(--el-input-text-color,var(--el-text-color-regular));position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.el-select__placeholder.is-transparent{color:var(--el-text-color-placeholder);-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper,.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select__input-wrapper{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;position:absolute;z-index:-1}.el-select__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-select-multiple-input-color);font-family:inherit;font-size:inherit;height:24px;outline:none;padding:0;width:100%}.el-select__input.is-disabled{cursor:not-allowed}.el-select__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-select--large .el-select__wrapper{font-size:14px;gap:6px;line-height:24px;min-height:40px;padding:8px 16px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{font-size:12px;gap:4px;line-height:20px;min-height:24px;padding:2px 8px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);display:inline-block;height:16px;width:100%}.el-skeleton__circle{border-radius:50%;height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);width:var(--el-skeleton-circle-size)}.el-skeleton__button{border-radius:4px;height:40px;width:64px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{height:var(--el-font-size-small);width:100%}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{align-items:center;border-radius:0;display:flex;justify-content:center;width:unset}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:22%;width:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{animation:el-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translate(-50%);-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translate(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translate(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{white-space:nowrap;width:100%}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;height:50px;width:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@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}}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-grow:0;flex-shrink:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{border-color:var(--el-text-color-primary);color:var(--el-text-color-primary)}.el-step__head.is-wait{border-color:var(--el-text-color-placeholder);color:var(--el-text-color-placeholder)}.el-step__head.is-success{border-color:var(--el-color-success);color:var(--el-color-success)}.el-step__head.is-error{border-color:var(--el-color-danger);color:var(--el-color-danger)}.el-step__head.is-finish{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-step__icon{align-items:center;background:var(--el-bg-color);box-sizing:border-box;display:inline-flex;font-size:14px;height:24px;justify-content:center;position:relative;transition:.15s ease-out;width:24px;z-index:1}.el-step__icon.is-text{border:2px solid;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{color:inherit;display:inline-block;font-weight:700;line-height:1;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:currentColor;position:absolute}.el-step__line-inner{border:1px solid;box-sizing:border-box;display:block;height:0;transition:.15s ease-out;width:0}.el-step__main{text-align:left;white-space:normal}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:700}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{font-size:12px;font-weight:400;line-height:20px;margin-top:-5px;padding-right:10%}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;left:0;right:0;top:11px}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{bottom:0;left:11px;top:0;width:2px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{font-size:0;padding-right:10px;width:auto}.el-step.is-simple .el-step__icon{background:transparent;font-size:12px;height:16px;width:16px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{align-items:stretch;display:flex;flex-grow:1;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;overflow-wrap:break-word}.el-step.is-simple .el-step__arrow{align-items:center;display:flex;flex-grow:1;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{background:var(--el-text-color-placeholder);content:"";display:inline-block;height:15px;position:absolute;width:1px}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);align-items:center;display:inline-flex;font-size:14px;height:32px;line-height:20px;position:relative;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{color:var(--el-text-color-primary);cursor:pointer;display:inline-block;font-size:14px;font-weight:500;height:20px;transition:var(--el-transition-duration-fast);vertical-align:middle}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{display:inline-block;font-size:14px;line-height:1}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{height:0;margin:0;opacity:0;position:absolute;width:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{align-items:center;background:var(--el-switch-off-color);border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));border-radius:10px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:20px;min-width:40px;outline:none;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration)}.el-switch__core .el-switch__inner{align-items:center;display:flex;height:16px;justify-content:center;overflow:hidden;padding:0 4px 0 18px;transition:all var(--el-transition-duration);width:100%}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);font-size:12px;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-switch__core .el-switch__action{align-items:center;background-color:var(--el-color-white);border-radius:var(--el-border-radius-circle);color:var(--el-switch-off-color);display:flex;height:16px;justify-content:center;left:1px;position:absolute;transition:all var(--el-transition-duration);width:16px}.el-switch.is-checked .el-switch__core{background-color:var(--el-switch-on-color);border-color:var(--el-switch-border-color,var(--el-switch-on-color))}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px;line-height:24px}.el-switch--large .el-switch__label{font-size:14px;height:24px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;height:24px;min-width:50px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{height:20px;width:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{font-size:12px;height:24px;line-height:16px}.el-switch--small .el-switch__label{font-size:12px;height:16px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;height:16px;min-width:30px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{height:12px;width:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;padding:0 10px}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:transparent;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:none}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:-moz-fit-content;height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table__expand-icon{color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:20px;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;cursor:pointer;display:inline-flex;flex-direction:column;height:14px;overflow:initial;position:relative;vertical-align:middle;width:24px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{cursor:pointer;display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;height:12px;line-height:12px;margin-right:8px;text-align:center;width:12px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);font-size:var(--el-font-size-base)}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{background-color:var(--el-bg-color);display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{background-color:var(--el-bg-color);box-shadow:2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__horizontal,.el-table-v2__left .el-vl__vertical{z-index:-1}.el-table-v2__right{background-color:var(--el-bg-color);box-shadow:-2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;overflow:hidden;position:absolute;right:0;top:0}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__horizontal,.el-table-v2__right .el-vl__vertical{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{overflow:hidden;position:relative}.el-table-v2__header .el-checkbox{z-index:0}.el-table-v2__footer{bottom:0;overflow:hidden;right:0}.el-table-v2__empty,.el-table-v2__footer,.el-table-v2__overlay{left:0;position:absolute}.el-table-v2__overlay{bottom:0;right:0;top:0;z-index:9999}.el-table-v2__header-row{border-bottom:var(--el-table-border);display:flex}.el-table-v2__header-cell{align-items:center;background-color:var(--el-table-header-bg-color);color:var(--el-table-header-text-color);display:flex;font-weight:700;height:100%;overflow:hidden;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table-v2__header-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__header-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{display:none;opacity:.6;transition:opacity,display var(--el-transition-duration)}.el-table-v2__sort-icon.is-sorting{display:block;opacity:1}.el-table-v2__row{align-items:center;border-bottom:var(--el-table-border);display:flex;transition:background-color var(--el-transition-duration)}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{align-items:center;display:flex;height:100%;overflow:hidden;padding:0 8px}.el-table-v2__row-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__row-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__expand-icon{cursor:pointer;margin:0 4px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table-v2.is-dynamic .el-table-v2__row{align-items:stretch;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{overflow-wrap:break-word}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row-reverse}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--top{flex-direction:column-reverse}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translate(100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translate(-100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(-100%);transform-origin:0 0}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{margin:0;max-height:200px}.time-select-item{font-size:14px;line-height:20px;padding:8px 10px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);cursor:pointer;font-weight:700}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{padding-left:28px;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;left:4px;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{align-items:center;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;position:absolute}.el-timeline-item__node--normal{height:var(--el-timeline-node-size-normal);left:-1px;width:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{height:var(--el-timeline-node-size-large);left:-2px;width:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{align-items:center;display:flex;justify-content:center;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);font-size:var(--el-font-size-small);line-height:1}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);list-style:none;margin:0}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-tooltip-v2__content{--el-tooltip-v2-padding:5px 10px;--el-tooltip-v2-border-radius:4px;--el-tooltip-v2-border-color:var(--el-border-color);background-color:var(--el-color-white);border:1px solid var(--el-border-color);border-radius:var(--el-tooltip-v2-border-radius);color:var(--el-color-black);padding:var(--el-tooltip-v2-padding)}.el-tooltip-v2__arrow{color:var(--el-color-white);height:var(--el-tooltip-v2-arrow-height);left:var(--el-tooltip-v2-arrow-x);pointer-events:none;position:absolute;top:var(--el-tooltip-v2-arrow-y);width:var(--el-tooltip-v2-arrow-width)}.el-tooltip-v2__arrow:after,.el-tooltip-v2__arrow:before{border:var(--el-tooltip-v2-arrow-border-width) solid transparent;content:"";height:0;position:absolute;width:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow{bottom:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:before{border-bottom:0;border-top-color:var(--el-color-white);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:after{border-bottom:0;border-top-color:var(--el-border-color);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:100%;z-index:-1}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow{top:0}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:before{border-bottom-color:var(--el-color-white);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:after{border-bottom-color:var(--el-border-color);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow{right:0}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:before{border-left-color:var(--el-color-white);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:after{border-left-color:var(--el-border-color);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow{left:0}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:before{border-left:0;border-right-color:var(--el-color-white);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:after{border-left:0;border-right-color:var(--el-border-color);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:100%;z-index:-1}.el-tooltip-v2__content.is-dark{--el-tooltip-v2-border-color:transparent;color:var(--el-color-white)}.el-tooltip-v2__content.is-dark,.el-tooltip-v2__content.is-dark .el-tooltip-v2__arrow{background-color:var(--el-color-black);border-color:transparent}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;padding:0 30px;vertical-align:middle}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);box-sizing:border-box;display:inline-block;max-height:100%;overflow:hidden;position:relative;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width)}.el-transfer-panel__body{border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);height:var(--el-transfer-panel-body-height);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{box-sizing:border-box;height:var(--el-transfer-panel-body-height);list-style:none;margin:0;overflow:auto;padding:6px 0}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{display:block!important;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{box-sizing:border-box;display:block;line-height:var(--el-transfer-item-height);overflow:hidden;padding-left:22px;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{box-sizing:border-box;padding:15px;text-align:center}.el-transfer-panel__filter .el-input__inner{box-sizing:border-box;display:inline-block;font-size:12px;height:var(--el-transfer-filter-height);width:100%}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{align-items:center;background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);display:flex;height:var(--el-transfer-panel-header-height);margin:0;padding-left:15px}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;display:flex;position:relative;width:100%}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{color:var(--el-text-color-primary);font-size:16px;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{color:var(--el-text-color-secondary);font-size:12px;font-weight:400;position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0)}.el-transfer-panel .el-transfer-panel__footer{background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);height:var(--el-transfer-panel-footer-height);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{color:var(--el-text-color-secondary);height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);margin:0;padding:6px 15px 0;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{border-radius:3px;height:14px;width:14px}.el-transfer-panel .el-checkbox__inner:after{height:6px;left:4px;width:3px}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{background:transparent!important;flex:1;height:20px;line-height:20px;padding-left:0}.el-upload{--el-upload-dragger-padding-horizontal:40px;--el-upload-dragger-padding-vertical:10px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{--el-upload-picture-card-size:148px;align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-horizontal) var(--el-upload-dragger-padding-vertical);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-horizontal) - 1px) calc(var(--el-upload-dragger-padding-vertical) - 1px)}.el-upload-list{list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;-o-object-fit:contain;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-vl__wrapper{position:relative}.el-vl__wrapper.always-on .el-virtual-scrollbar,.el-vl__wrapper:hover .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;z-index:2000}.el-popper.is-dark{color:var(--el-bg-color)}.el-popper.is-dark,.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{right:0}.el-popper.is-light,.el-popper.is-light>.el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{right:0}.el-popper.is-pure{padding:0}.el-popper__arrow,.el-popper__arrow:before{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:" ";transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{color:var(--el-statistic-title-color);font-size:var(--el-statistic-title-font-size);font-weight:var(--el-statistic-title-font-weight);line-height:20px;margin-bottom:4px}.el-statistic__content{color:var(--el-statistic-content-color);font-size:var(--el-statistic-content-font-size);font-weight:var(--el-statistic-content-font-weight)}.el-statistic__value{display:inline-block}.el-statistic__prefix{display:inline-block;margin-right:4px}.el-statistic__suffix{display:inline-block;margin-left:4px}.el-tour{--el-tour-width:520px;--el-tour-padding-primary:12px;--el-tour-font-line-height:var(--el-font-line-height-primary);--el-tour-title-font-size:16px;--el-tour-title-text-color:var(--el-text-color-primary);--el-tour-title-font-weight:400;--el-tour-close-color:var(--el-color-info);--el-tour-font-size:14px;--el-tour-color:var(--el-text-color-primary);--el-tour-bg-color:var(--el-bg-color);--el-tour-border-radius:4px}.el-tour__hollow{transition:all var(--el-transition-duration) ease}.el-tour__content{border-radius:var(--el-tour-border-radius);box-shadow:var(--el-box-shadow-light);outline:none;overflow-wrap:break-word;padding:var(--el-tour-padding-primary);width:var(--el-tour-width)}.el-tour__arrow,.el-tour__content{background:var(--el-tour-bg-color);box-sizing:border-box}.el-tour__arrow{height:10px;pointer-events:none;position:absolute;transform:rotate(45deg);width:10px}.el-tour__content[data-side^=top] .el-tour__arrow{border-left-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=bottom] .el-tour__arrow{border-bottom-color:transparent;border-right-color:transparent}.el-tour__content[data-side^=left] .el-tour__arrow{border-bottom-color:transparent;border-left-color:transparent}.el-tour__content[data-side^=right] .el-tour__arrow{border-right-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=top] .el-tour__arrow{bottom:-5px}.el-tour__content[data-side^=bottom] .el-tour__arrow{top:-5px}.el-tour__content[data-side^=left] .el-tour__arrow{right:-5px}.el-tour__content[data-side^=right] .el-tour__arrow{left:-5px}.el-tour__closebtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-tour__closebtn .el-tour__close{color:var(--el-tour-close-color);font-size:inherit}.el-tour__closebtn:focus .el-tour__close,.el-tour__closebtn:hover .el-tour__close{color:var(--el-color-primary)}.el-tour__header{padding-bottom:var(--el-tour-padding-primary)}.el-tour__header.show-close{padding-right:calc(var(--el-tour-padding-primary) + var(--el-message-close-size, 16px))}.el-tour__title{color:var(--el-tour-title-text-color);font-size:var(--el-tour-title-font-size);font-weight:var(--el-tour-title-font-weight);line-height:var(--el-tour-font-line-height)}.el-tour__body{color:var(--el-tour-text-color);font-size:var(--el-tour-font-size)}.el-tour__body img,.el-tour__body video{max-width:100%}.el-tour__footer{box-sizing:border-box;display:flex;justify-content:space-between;padding-top:var(--el-tour-padding-primary)}.el-tour__content .el-tour-indicators{display:inline-block;flex:1}.el-tour__content .el-tour-indicator{background:var(--el-color-info-light-9);border-radius:50%;display:inline-block;height:6px;margin-right:6px;width:6px}.el-tour__content .el-tour-indicator.is-active{background:var(--el-color-primary)}.el-tour.el-tour--primary{--el-tour-title-text-color:#fff;--el-tour-text-color:#fff;--el-tour-bg-color:var(--el-color-primary);--el-tour-close-color:#fff}.el-tour.el-tour--primary .el-tour__closebtn:focus .el-tour__close,.el-tour.el-tour--primary .el-tour__closebtn:hover .el-tour__close{color:var(--el-tour-title-text-color)}.el-tour.el-tour--primary .el-button--default{background:#fff;border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-tour.el-tour--primary .el-button--primary{border-color:#fff}.el-tour.el-tour--primary .el-tour-indicator{background:rgba(255,255,255,.15)}.el-tour.el-tour--primary .el-tour-indicator.is-active{background:#fff}.el-tour-parent--hidden{overflow:hidden}.el-anchor{--el-anchor-bg-color:var(--el-bg-color);--el-anchor-padding-indent:14px;--el-anchor-line-height:22px;--el-anchor-font-size:12px;--el-anchor-color:var(--el-text-color-secondary);--el-anchor-active-color:var(--el-color-primary);--el-anchor-marker-bg-color:var(--el-color-primary);background-color:var(--el-anchor-bg-color);position:relative}.el-anchor__marker{background-color:var(--el-anchor-marker-bg-color);border-radius:4px;opacity:0;position:absolute;z-index:0}.el-anchor.el-anchor--vertical .el-anchor__marker{height:14px;left:0;top:8px;transition:top .25s ease-in-out,opacity .25s;width:4px}.el-anchor.el-anchor--vertical .el-anchor__list{padding-left:var(--el-anchor-padding-indent)}.el-anchor.el-anchor--vertical.el-anchor--underline:before{background-color:#0505050f;content:"";height:100%;left:0;position:absolute;width:2px}.el-anchor.el-anchor--vertical.el-anchor--underline .el-anchor__marker{border-radius:unset;width:2px}.el-anchor.el-anchor--horizontal .el-anchor__marker{bottom:0;height:2px;transition:left .25s ease-in-out,opacity .25s,width .25s;width:20px}.el-anchor.el-anchor--horizontal .el-anchor__list{display:flex;padding-bottom:4px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item{padding-left:16px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item:first-child{padding-left:0}.el-anchor.el-anchor--horizontal.el-anchor--underline:before{background-color:#0505050f;bottom:0;content:"";height:2px;position:absolute;width:100%}.el-anchor.el-anchor--horizontal.el-anchor--underline .el-anchor__marker{border-radius:unset;height:2px}.el-anchor__item{display:flex;flex-direction:column;overflow:hidden}.el-anchor__link{cursor:pointer;font-size:var(--el-anchor-font-size);line-height:var(--el-anchor-line-height);max-width:100%;outline:none;overflow:hidden;padding:4px 0;text-decoration:none;text-overflow:ellipsis;transition:color var(--el-transition-duration);white-space:nowrap}.el-anchor__link,.el-anchor__link:focus,.el-anchor__link:hover{color:var(--el-anchor-color)}.el-anchor__link.is-active{color:var(--el-anchor-active-color)}.el-anchor .el-anchor__list .el-anchor__item a{display:inline-block}.el-segmented--vertical{flex-direction:column}.el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented{--el-segmented-color:var(--el-text-color-regular);--el-segmented-bg-color:var(--el-fill-color-light);--el-segmented-padding:2px;--el-segmented-item-selected-color:var(--el-color-white);--el-segmented-item-selected-bg-color:var(--el-color-primary);--el-segmented-item-selected-disabled-bg-color:var(--el-color-primary-light-5);--el-segmented-item-hover-color:var(--el-text-color-primary);--el-segmented-item-hover-bg-color:var(--el-fill-color-dark);--el-segmented-item-active-bg-color:var(--el-fill-color-darker);--el-segmented-item-disabled-color:var(--el-text-color-placeholder);align-items:stretch;background:var(--el-segmented-bg-color);border-radius:var(--el-border-radius-base);box-sizing:border-box;color:var(--el-segmented-color);display:inline-flex;font-size:14px;min-height:32px;padding:var(--el-segmented-padding)}.el-segmented__group{align-items:stretch;display:flex;position:relative;width:100%}.el-segmented__item-selected{background:var(--el-segmented-item-selected-bg-color);border-radius:calc(var(--el-border-radius-base) - 2px);height:100%;left:0;pointer-events:none;position:absolute;top:0;transition:all .3s;width:10px}.el-segmented__item-selected.is-disabled{background:var(--el-segmented-item-selected-disabled-bg-color)}.el-segmented__item-selected.is-focus-visible:before{border-radius:inherit;content:"";top:0;right:0;bottom:0;left:0;outline:2px solid var(--el-segmented-item-selected-bg-color);outline-offset:1px;position:absolute}.el-segmented__item{align-items:center;border-radius:calc(var(--el-border-radius-base) - 2px);cursor:pointer;display:flex;flex:1;padding:0 11px}.el-segmented__item:not(.is-disabled):not(.is-selected):hover{background:var(--el-segmented-item-hover-bg-color);color:var(--el-segmented-item-hover-color)}.el-segmented__item:not(.is-disabled):not(.is-selected):active{background:var(--el-segmented-item-active-bg-color)}.el-segmented__item.is-selected,.el-segmented__item.is-selected.is-disabled{color:var(--el-segmented-item-selected-color)}.el-segmented__item.is-disabled{color:var(--el-segmented-item-disabled-color);cursor:not-allowed}.el-segmented__item-input{height:0;margin:0;opacity:0;pointer-events:none;position:absolute;width:0}.el-segmented__item-label{flex:1;line-height:normal;overflow:hidden;text-align:center;text-overflow:ellipsis;transition:color .3s;white-space:nowrap;z-index:1}.el-segmented.is-block{display:flex}.el-segmented.is-block .el-segmented__item{min-width:0}.el-segmented--large{border-radius:var(--el-border-radius-base);font-size:16px;min-height:40px}.el-segmented--large .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 2px)}.el-segmented--large .el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented--large .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 2px);padding:0 11px}.el-segmented--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:14px;min-height:24px}.el-segmented--small .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 3px)}.el-segmented--small .el-segmented--vertical .el-segmented__item{padding:7px}.el-segmented--small .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 3px);padding:0 7px}.el-mention{position:relative;width:100%}.el-mention__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-mention__popper.el-popper,.el-mention__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-mention__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-mention-dropdown{--el-mention-font-size:var(--el-font-size-base);--el-mention-bg-color:var(--el-bg-color-overlay);--el-mention-shadow:var(--el-box-shadow-light);--el-mention-border:1px solid var(--el-border-color-light);--el-mention-option-color:var(--el-text-color-regular);--el-mention-option-height:34px;--el-mention-option-min-width:100px;--el-mention-option-hover-background:var(--el-fill-color-light);--el-mention-option-selected-color:var(--el-color-primary);--el-mention-option-disabled-color:var(--el-text-color-placeholder);--el-mention-option-loading-color:var(--el-text-color-secondary);--el-mention-option-loading-padding:10px 0;--el-mention-max-height:174px;--el-mention-padding:6px 0;--el-mention-header-padding:10px;--el-mention-footer-padding:10px}.el-mention-dropdown__item{box-sizing:border-box;color:var(--el-mention-option-color);cursor:pointer;font-size:var(--el-mention-font-size);height:var(--el-mention-option-height);line-height:var(--el-mention-option-height);min-width:var(--el-mention-option-min-width);overflow:hidden;padding:0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-mention-dropdown__item.is-hovering{background-color:var(--el-mention-option-hover-background)}.el-mention-dropdown__item.is-selected{color:var(--el-mention-option-selected-color);font-weight:700}.el-mention-dropdown__item.is-disabled{background-color:unset;color:var(--el-mention-option-disabled-color);cursor:not-allowed}.el-mention-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-mention-dropdown__loading{color:var(--el-mention-option-loading-color);font-size:12px;margin:0;min-width:var(--el-mention-option-min-width);padding:10px 0;text-align:center}.el-mention-dropdown__wrap{max-height:var(--el-mention-max-height)}.el-mention-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:var(--el-mention-padding)}.el-mention-dropdown__header{border-bottom:var(--el-mention-border);padding:var(--el-mention-header-padding)}.el-mention-dropdown__footer{border-top:var(--el-mention-border);padding:var(--el-mention-footer-padding)}.el-splitter{display:flex;height:100%;margin:0;padding:0;position:relative;width:100%}.el-splitter__mask{top:0;right:0;bottom:0;left:0;position:absolute;z-index:999}.el-splitter__mask-horizontal{cursor:col-resize}.el-splitter__mask-vertical{cursor:row-resize}.el-splitter__horizontal{flex-direction:row}.el-splitter__vertical{flex-direction:column}.el-splitter-bar{flex:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-splitter-bar__disable{cursor:auto!important}.el-splitter-bar__disable:before{background-color:var(--el-border-color-light)!important}.el-splitter-bar__dragger{background:transparent;z-index:1}.el-splitter-bar__dragger,.el-splitter-bar__dragger:before{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:before{background-color:var(--el-border-color-light);content:""}.el-splitter-bar__dragger:hover:before{background-color:var(--el-color-primary-light-5)}.el-splitter-bar__dragger-horizontal:before{height:100%;width:2px}.el-splitter-bar__dragger-vertical:before{height:2px;width:100%}.el-splitter-bar__dragger-active:before{background-color:var(--el-color-primary-light-3)}.el-splitter-bar:hover .el-splitter-bar__collapse-icon{opacity:1}.el-splitter-bar__collapse-icon{align-items:center;background:var(--el-border-color-light);border-radius:2px;cursor:pointer;display:flex;justify-content:center;opacity:0;position:absolute;z-index:9}.el-splitter-bar__collapse-icon:hover{background-color:var(--el-color-primary-light-5);opacity:1}.el-splitter-bar__horizontal-collapse-icon-start{height:24px;left:-12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__horizontal-collapse-icon-end{height:24px;left:12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__vertical-collapse-icon-start{height:16px;right:50%;top:-12px;transform:translate(50%,-50%);width:24px}.el-splitter-bar__vertical-collapse-icon-end{height:16px;right:50%;top:12px;transform:translate(50%,-50%);width:24px}.el-splitter-panel{box-sizing:border-box;flex-grow:0;overflow:auto;scrollbar-width:thin}:root{--primary-color: #409eff;--success-color: #67c23a;--warning-color: #e6a23c;--danger-color: #f56c6c;--info-color: #909399;--text-primary: #303133;--text-regular: #606266;--text-secondary: #909399;--text-placeholder: #c0c4cc;--border-base: #dcdfe6;--border-light: #e4e7ed;--border-lighter: #ebeef5;--border-extra-light: #f2f6fc;--background-base: #f5f7fa;--background-light: #fafafa}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;color:var(--text-primary);background-color:#fff}#app{height:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.flex{display:flex}.flex-1{flex:1}.flex-center{display:flex;align-items:center;justify-content:center}.text-center{text-align:center}.mb-4{margin-bottom:16px}.mr-2{margin-right:8px}.ml-2{margin-left:8px} +@charset "UTF-8";.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.api-config[data-v-aa159c38]{padding:20px;max-width:100%}.config-card[data-v-aa159c38]{max-width:1600px;margin:0 auto}.card-header[data-v-aa159c38]{display:flex;justify-content:space-between;align-items:center}.config-type-selector[data-v-aa159c38]{margin-bottom:20px;text-align:center}.config-main-content[data-v-aa159c38]{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start}.config-tips-panel[data-v-aa159c38]{min-height:400px}.config-tips[data-v-aa159c38]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:20px;height:100%}.config-tips.official-tips[data-v-aa159c38]{background:#e8f4fd;border-color:#b3d9f7}.config-tips.custom-tips[data-v-aa159c38]{background:#fef4e8;border-color:#f7d9b3}.config-tips h4[data-v-aa159c38]{margin:0 0 12px;color:#2c3e50;font-size:16px;font-weight:600}.config-tips h5[data-v-aa159c38]{margin:16px 0 8px;color:#34495e;font-size:14px;font-weight:600}.tips-content p[data-v-aa159c38]{margin:0 0 12px;color:#5a6c7d;line-height:1.5}.tips-content ul[data-v-aa159c38],.tips-content ol[data-v-aa159c38]{margin:8px 0;padding-left:20px}.tips-content li[data-v-aa159c38]{margin-bottom:4px;color:#5a6c7d;line-height:1.4;font-size:13px}.purchase-info[data-v-aa159c38]{margin-top:16px;padding:12px;background:white;border:1px solid #ddd;border-radius:6px;text-align:center}.purchase-info p[data-v-aa159c38]{margin:0 0 8px;font-size:13px}.tips-note[data-v-aa159c38]{margin-top:16px;padding:8px 12px;background:#fff3cd;border:1px solid #ffeaa7;border-radius:4px}.tips-note p[data-v-aa159c38]{margin:0;font-size:12px;color:#856404}.config-form-panel[data-v-aa159c38]{min-height:400px}.config-form[data-v-aa159c38]{margin-top:16px;padding:0 8px}.model-option[data-v-aa159c38]{display:flex;justify-content:space-between;align-items:center}.model-name[data-v-aa159c38]{font-weight:500}.model-price[data-v-aa159c38]{color:#f56c6c;font-size:12px;font-weight:600}.model-description[data-v-aa159c38]{color:#909399;font-size:12px;margin-top:2px}.form-tip[data-v-aa159c38]{font-size:12px;color:#909399;margin-top:4px}.custom-model-input[data-v-aa159c38]{display:flex;gap:8px;margin-bottom:8px}.custom-models-list[data-v-aa159c38]{margin-top:8px}.max-tokens-control[data-v-aa159c38]{display:flex;flex-direction:column;gap:8px}@media (max-width: 900px){.config-main-content[data-v-aa159c38]{grid-template-columns:1fr;gap:16px}.config-tips-panel[data-v-aa159c38],.config-form-panel[data-v-aa159c38]{min-height:auto}.config-card[data-v-aa159c38]{max-width:100%}}@media (max-width: 1200px) and (min-width: 901px){.config-main-content[data-v-aa159c38]{grid-template-columns:1fr 1fr;gap:24px}}[data-v-aa159c38] .el-form-item__label{font-weight:500}[data-v-aa159c38] .el-slider__runway{margin:16px 0}[data-v-aa159c38] .el-radio-button__inner{padding:10px 20px;font-weight:500}[data-v-aa159c38] .el-alert{margin-bottom:16px}.official-config[data-v-aa159c38],.custom-config[data-v-aa159c38]{min-height:350px}.announcement-dialog[data-v-0c8048bb]{border-radius:12px}.announcement-content[data-v-0c8048bb]{padding:0}.announcement-meta[data-v-0c8048bb]{display:flex;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #ebeef5}.announcement-body[data-v-0c8048bb]{max-height:60vh;overflow-y:auto;padding:16px 0;line-height:1.6}.announcement-body[data-v-0c8048bb] h1{font-size:24px;color:#303133;margin:20px 0 16px;border-bottom:2px solid #409eff;padding-bottom:8px}.announcement-body[data-v-0c8048bb] h2{font-size:20px;color:#409eff;margin:16px 0 12px}.announcement-body[data-v-0c8048bb] h3{font-size:18px;color:#606266;margin:14px 0 10px}.announcement-body[data-v-0c8048bb] p{margin:8px 0;color:#606266}.announcement-body[data-v-0c8048bb] ul,.announcement-body[data-v-0c8048bb] ol{margin:8px 0;padding-left:20px}.announcement-body[data-v-0c8048bb] li{margin:4px 0;color:#606266}.announcement-body[data-v-0c8048bb] code{background:#f5f7fa;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;color:#e6a23c}.announcement-body[data-v-0c8048bb] pre{background:#f5f7fa;padding:12px;border-radius:6px;overflow-x:auto;margin:12px 0}.announcement-body[data-v-0c8048bb] blockquote{border-left:4px solid #409eff;background:#ecf5ff;padding:12px 16px;margin:12px 0;color:#606266}.announcement-body[data-v-0c8048bb] a{color:#409eff;text-decoration:none}.announcement-body[data-v-0c8048bb] a:hover{text-decoration:underline}.announcement-body[data-v-0c8048bb] strong{color:#303133;font-weight:600}.announcement-body[data-v-0c8048bb] table{width:100%;border-collapse:collapse;margin:12px 0}.announcement-body[data-v-0c8048bb] th,.announcement-body[data-v-0c8048bb] td{border:1px solid #ebeef5;padding:8px 12px;text-align:left}.announcement-body[data-v-0c8048bb] th{background:#f5f7fa;font-weight:600}.announcement-footer[data-v-0c8048bb]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-top:16px;border-top:1px solid #ebeef5}.footer-buttons[data-v-0c8048bb]{display:flex;gap:12px}[data-v-0c8048bb] .el-dialog__header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border-radius:12px 12px 0 0;padding:20px 24px}[data-v-0c8048bb] .el-dialog__title{color:#fff;font-weight:600;font-size:18px}[data-v-0c8048bb] .el-dialog__body{padding:24px}.dashboard-container[data-v-0bd020fe]{display:flex;height:100vh;background-color:#f5f5f5}.sidebar[data-v-0bd020fe]{width:250px;background-color:#304156;color:#fff;display:flex;flex-direction:column;transition:width .3s;overflow:hidden}.sidebar.collapsed[data-v-0bd020fe]{width:64px}.sidebar.collapsed .logo h2[data-v-0bd020fe]{display:none}.logo[data-v-0bd020fe]{height:60px;display:flex;align-items:center;justify-content:center;background-color:#2b3a4b;color:#fff;margin:0}.logo h2[data-v-0bd020fe]{margin:0;font-size:18px;white-space:nowrap}.sidebar-menu[data-v-0bd020fe]{border:none;background-color:#304156;height:calc(100vh - 60px)}.sidebar-menu .el-menu-item[data-v-0bd020fe],.sidebar-menu .el-sub-menu__title[data-v-0bd020fe]{color:#bfcbd9;border-bottom:none}.sidebar-menu .el-menu-item[data-v-0bd020fe]:hover,.sidebar-menu .el-sub-menu__title[data-v-0bd020fe]:hover{background-color:#263445;color:#409eff}.sidebar-menu .el-menu-item.is-active[data-v-0bd020fe]{background-color:#409eff;color:#fff}.main-container[data-v-0bd020fe]{flex:1;display:flex;flex-direction:column;overflow:hidden}.header[data-v-0bd020fe]{height:60px;background-color:#fff;border-bottom:1px solid #e4e7ed;display:flex;align-items:center;justify-content:space-between;padding:0 20px;box-shadow:0 1px 4px #00152914}.header-left[data-v-0bd020fe]{display:flex;align-items:center}.collapse-btn[data-v-0bd020fe]{margin-right:15px;font-size:18px}.page-title[data-v-0bd020fe]{font-size:18px;font-weight:500;color:#303133}.header-right[data-v-0bd020fe]{display:flex;align-items:center;gap:15px}.model-selector[data-v-0bd020fe]{display:flex;align-items:center}.model-selector .el-select[data-v-0bd020fe]{min-width:200px}.model-selector .el-select .el-input__inner[data-v-0bd020fe]{font-size:13px}.model-selector[data-v-0bd020fe] .el-select-group__title{font-weight:600;color:#409eff;padding:8px 12px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed}.model-selector[data-v-0bd020fe] .el-option-group .el-option{padding-left:20px}.model-selector[data-v-0bd020fe] .el-option-group:not(:last-child){border-bottom:1px solid #e4e7ed}.user-info[data-v-0bd020fe]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:5px 10px;border-radius:4px;transition:background-color .3s}.user-info[data-v-0bd020fe]:hover{background-color:#f5f7fa}.username[data-v-0bd020fe]{color:#606266;font-size:14px}.content[data-v-0bd020fe]{flex:1;padding:20px;overflow-y:auto;background-color:#f5f5f5}@media (max-width: 768px){.sidebar[data-v-0bd020fe]{position:fixed;z-index:1000;height:100vh}.main-container[data-v-0bd020fe]{margin-left:0}.content[data-v-0bd020fe]{padding:15px}}.writing-goals[data-v-04fd4519]{padding:20px}.goals-header[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.goals-overview[data-v-04fd4519]{margin-bottom:30px}.overview-card[data-v-04fd4519]{display:flex;align-items:center;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 8px #0000001a;transition:transform .2s}.overview-card[data-v-04fd4519]:hover{transform:translateY(-2px)}.card-icon[data-v-04fd4519]{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16px;font-size:20px;color:#fff}.card-icon.daily[data-v-04fd4519]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.card-icon.weekly[data-v-04fd4519]{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.card-icon.monthly[data-v-04fd4519]{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%)}.card-icon.streak[data-v-04fd4519]{background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%)}.card-content[data-v-04fd4519]{flex:1}.card-title[data-v-04fd4519]{font-size:14px;color:#666;margin-bottom:4px}.card-value[data-v-04fd4519]{font-size:24px;font-weight:700;color:#333;margin-bottom:2px}.card-subtitle[data-v-04fd4519]{font-size:12px;color:#999}.active-goals[data-v-04fd4519]{margin-bottom:30px}.goals-list[data-v-04fd4519]{display:flex;flex-direction:column;gap:16px}.goal-item[data-v-04fd4519]{background:white;border:1px solid #e4e7ed;border-radius:8px;padding:20px;transition:all .3s}.goal-item[data-v-04fd4519]:hover{border-color:#409eff;box-shadow:0 2px 12px #0000001a}.goal-item.completed[data-v-04fd4519]{background:#f0f9ff;border-color:#67c23a}.goal-header[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.goal-info[data-v-04fd4519]{display:flex;align-items:center;gap:12px}.goal-title[data-v-04fd4519]{font-size:16px;font-weight:700;color:#303133}.goal-actions[data-v-04fd4519]{display:flex;gap:8px}.goal-description[data-v-04fd4519]{color:#606266;margin-bottom:16px;line-height:1.5}.goal-progress[data-v-04fd4519]{margin-bottom:12px}.progress-info[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px}.progress-percentage[data-v-04fd4519]{font-weight:700;color:#409eff}.goal-meta[data-v-04fd4519]{display:flex;gap:20px;font-size:12px;color:#909399}.meta-item[data-v-04fd4519]{display:flex;align-items:center;gap:4px}.completion-date[data-v-04fd4519]{font-size:12px;color:#67c23a}.goal-result[data-v-04fd4519]{font-size:14px;color:#606266;background:#f8f9fa;padding:8px 12px;border-radius:4px;margin-top:8px}.empty-state[data-v-04fd4519]{text-align:center;padding:40px;color:#909399}.ml-2[data-v-04fd4519]{margin-left:8px}.active-goals-header[data-v-04fd4519]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.goals-controls[data-v-04fd4519]{display:flex;gap:8px}.sort-active[data-v-04fd4519]{background:#409eff!important;color:#fff!important}.sort-tip[data-v-04fd4519]{margin-bottom:16px}.sortable-goals[data-v-04fd4519]{display:flex;flex-direction:column;gap:16px}.goal-item.sortable[data-v-04fd4519]{cursor:move;border:2px dashed transparent;transition:all .3s ease}.goal-item.sortable[data-v-04fd4519]:hover{border-color:#409eff;box-shadow:0 4px 12px #409eff33}.goal-item.sortable[draggable=true][data-v-04fd4519]:active{opacity:.8;transform:rotate(2deg)}.list-move[data-v-04fd4519],.list-enter-active[data-v-04fd4519],.list-leave-active[data-v-04fd4519]{transition:all .3s ease}.list-enter-from[data-v-04fd4519],.list-leave-to[data-v-04fd4519]{opacity:0;transform:translate(30px)}.list-leave-active[data-v-04fd4519]{position:absolute;width:100%}.home-page[data-v-bcfccac0]{padding:0}.welcome-section[data-v-bcfccac0]{margin-bottom:20px}.welcome-card[data-v-bcfccac0]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border:none}.welcome-card[data-v-bcfccac0] .el-card__body{padding:40px}.welcome-content[data-v-bcfccac0]{display:flex;justify-content:space-between;align-items:center;color:#fff}.welcome-text h1[data-v-bcfccac0]{margin:0 0 10px;font-size:32px;font-weight:600}.welcome-text p[data-v-bcfccac0]{margin:0;font-size:16px;opacity:.9}.welcome-actions[data-v-bcfccac0]{display:flex;gap:15px}.stats-section[data-v-bcfccac0]{margin-bottom:20px}.stat-card[data-v-bcfccac0]{border:none;transition:transform .3s}.stat-card[data-v-bcfccac0]:hover{transform:translateY(-2px)}.stat-item[data-v-bcfccac0]{display:flex;align-items:center;gap:15px}.stat-icon[data-v-bcfccac0]{width:50px;height:50px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff}.stat-icon.novels[data-v-bcfccac0]{background:linear-gradient(135deg,#667eea,#764ba2)}.stat-icon.words[data-v-bcfccac0]{background:linear-gradient(135deg,#f093fb,#f5576c)}.stat-icon.chapters[data-v-bcfccac0]{background:linear-gradient(135deg,#4facfe,#00f2fe)}.stat-icon.tokens[data-v-bcfccac0]{background:linear-gradient(135deg,#43e97b,#38f9d7)}.stat-content[data-v-bcfccac0]{flex:1}.stat-number[data-v-bcfccac0]{font-size:24px;font-weight:600;color:#303133;line-height:1}.stat-label[data-v-bcfccac0]{font-size:14px;color:#909399;margin-top:5px}.main-content[data-v-bcfccac0]{margin-bottom:20px}.goals-card[data-v-bcfccac0],.quick-actions-card[data-v-bcfccac0]{height:100%;min-height:380px}.goals-card[data-v-bcfccac0] .el-card__body,.quick-actions-card[data-v-bcfccac0] .el-card__body{height:100%;display:flex;flex-direction:column}.goals-content[data-v-bcfccac0]{flex:1;display:flex;flex-direction:column;justify-content:flex-start;min-height:300px}.quick-actions[data-v-bcfccac0]{flex:1;display:flex;flex-direction:column;justify-content:center}.card-header[data-v-bcfccac0]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.goals-content[data-v-bcfccac0]{padding:10px 0}.goal-item[data-v-bcfccac0]{margin-bottom:20px;padding:15px;background:#fafafa;border-radius:8px;border:1px solid #f0f0f0}.goal-item[data-v-bcfccac0]:last-child{margin-bottom:15px}.goal-info[data-v-bcfccac0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.goal-label[data-v-bcfccac0]{font-size:14px;color:#606266}.goal-value[data-v-bcfccac0]{font-size:14px;font-weight:600;color:#303133}.goal-progress[data-v-bcfccac0]{position:relative}.progress-text[data-v-bcfccac0]{display:block;text-align:right;font-size:12px;color:#909399;margin-top:5px;line-height:1}.streak-info[data-v-bcfccac0]{display:flex;align-items:center;gap:8px;padding:15px;background:#f8f9fa;border-radius:8px;margin-top:auto;margin-bottom:0}.streak-icon[data-v-bcfccac0]{color:#f39c12;font-size:18px}.no-goals[data-v-bcfccac0]{padding:20px;text-align:center}.view-all-goals[data-v-bcfccac0]{text-align:center;padding:10px;border-top:1px solid #f0f0f0;margin-top:15px}.view-all-goals .el-button[data-v-bcfccac0]{color:#409eff;font-size:12px}.quick-actions[data-v-bcfccac0]{padding:10px 0}.action-grid[data-v-bcfccac0]{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;height:100%;align-content:start}.action-item[data-v-bcfccac0]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:25px 20px;border:1px solid #e4e7ed;border-radius:8px;cursor:pointer;transition:all .3s;min-height:100px;justify-content:center}.action-item[data-v-bcfccac0]:hover{border-color:#409eff;background-color:#f0f9ff;transform:translateY(-2px)}.action-icon[data-v-bcfccac0]{width:45px;height:45px;border-radius:50%;background:#409eff;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px}.recent-novels-section[data-v-bcfccac0]{margin-bottom:20px}.novels-list[data-v-bcfccac0]{display:flex;flex-direction:column;gap:15px}.novel-item[data-v-bcfccac0]{display:flex;align-items:center;gap:15px;padding:15px;border:1px solid #e4e7ed;border-radius:8px;cursor:pointer;transition:all .3s}.novel-item[data-v-bcfccac0]:hover{border-color:#409eff;background-color:#f0f9ff}.novel-cover[data-v-bcfccac0]{width:60px;height:80px;border-radius:4px;overflow:hidden;flex-shrink:0}.novel-cover img[data-v-bcfccac0]{width:100%;height:100%;object-fit:cover}.default-cover[data-v-bcfccac0]{width:100%;height:100%;background:#f5f7fa;display:flex;align-items:center;justify-content:center;color:#c0c4cc;font-size:24px}.novel-info[data-v-bcfccac0]{flex:1}.novel-title[data-v-bcfccac0]{margin:0 0 5px;font-size:16px;font-weight:600;color:#303133}.novel-desc[data-v-bcfccac0]{margin:0 0 8px;font-size:14px;color:#606266;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.novel-meta[data-v-bcfccac0]{display:flex;gap:15px;font-size:12px;color:#909399}.novel-actions[data-v-bcfccac0]{flex-shrink:0}.empty-novels[data-v-bcfccac0]{padding:40px 0}@media (max-width: 768px){.welcome-content[data-v-bcfccac0]{flex-direction:column;text-align:center;gap:20px}.goals-card[data-v-bcfccac0],.quick-actions-card[data-v-bcfccac0]{min-height:auto}.action-grid[data-v-bcfccac0]{grid-template-columns:1fr}.novel-item[data-v-bcfccac0]{flex-direction:column;text-align:center}.goals-content[data-v-bcfccac0]{min-height:auto}}.prompts-library[data-v-be8bc03c]{padding:0}.page-header[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-be8bc03c]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-be8bc03c]{margin:0;color:#606266;font-size:14px}.filter-section[data-v-be8bc03c]{margin-bottom:20px}.filter-content[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;gap:20px}.category-tabs[data-v-be8bc03c]{display:flex;gap:10px;flex-wrap:wrap}.category-btn[data-v-be8bc03c]{border-radius:20px;padding:8px 16px}.search-box[data-v-be8bc03c]{width:300px}.prompts-grid[data-v-be8bc03c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px;margin-bottom:20px}.prompt-card[data-v-be8bc03c]{height:100%}.prompt-item[data-v-be8bc03c]{height:100%;display:flex;flex-direction:column}.prompt-item[data-v-be8bc03c] .el-card__body{flex:1;display:flex;flex-direction:column}.prompt-header[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.prompt-title[data-v-be8bc03c]{display:flex;align-items:center;gap:8px;flex:1}.category-icon[data-v-be8bc03c]{font-size:18px}.prompt-title h3[data-v-be8bc03c]{margin:0;font-size:16px;color:#303133;line-height:1.4}.prompt-description[data-v-be8bc03c]{margin-bottom:15px}.prompt-description p[data-v-be8bc03c]{margin:0;color:#606266;font-size:14px;line-height:1.5}.prompt-content[data-v-be8bc03c]{flex:1;margin-bottom:15px}.content-preview[data-v-be8bc03c]{background:#f8f9fa;padding:12px;border-radius:6px;font-size:13px;color:#666;line-height:1.4;border-left:3px solid #409eff}.prompt-footer[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.prompt-tags[data-v-be8bc03c]{display:flex;gap:5px;flex-wrap:wrap}.empty-state[data-v-be8bc03c]{padding:60px 0}.tags-display[data-v-be8bc03c]{margin-top:10px}.content-input-area[data-v-be8bc03c]{width:100%}.content-toolbar[data-v-be8bc03c]{margin-bottom:8px;display:flex;gap:8px;align-items:center}.content-toolbar .el-button[data-v-be8bc03c]{border-radius:4px;font-size:12px}.use-prompt-content h4[data-v-be8bc03c]{margin:0 0 10px;color:#303133}.use-prompt-content p[data-v-be8bc03c]{margin:0 0 20px;color:#606266}.generated-prompt[data-v-be8bc03c]{margin-top:20px}.generated-prompt h5[data-v-be8bc03c]{margin:0 0 10px;color:#303133}@media (max-width: 768px){.page-header[data-v-be8bc03c]{flex-direction:column;gap:15px;text-align:center}.filter-content[data-v-be8bc03c]{flex-direction:column;gap:15px}.search-box[data-v-be8bc03c]{width:100%}.prompts-grid[data-v-be8bc03c]{grid-template-columns:1fr}.category-tabs[data-v-be8bc03c]{justify-content:center}}.import-content[data-v-be8bc03c]{padding:10px 0}.import-content .el-alert[data-v-be8bc03c] .el-alert__description{line-height:1.6}.import-content .el-alert ul[data-v-be8bc03c]{margin:10px 0 0;padding-left:20px}.import-content .el-alert li[data-v-be8bc03c]{margin:5px 0}.import-content code[data-v-be8bc03c]{background:#f1f2f6;padding:2px 6px;border-radius:3px;font-family:Courier New,monospace;font-size:12px}.file-import[data-v-be8bc03c]{min-height:200px;display:flex;align-items:center;justify-content:center}.text-import[data-v-be8bc03c]{padding:20px}.preview-section[data-v-be8bc03c]{margin-top:20px;border-top:1px solid #ebeef5;padding-top:20px}.preview-section h4[data-v-be8bc03c]{margin:0 0 15px;color:#303133;font-size:16px}.preview-list[data-v-be8bc03c]{max-height:300px;overflow-y:auto;border:1px solid #ebeef5;border-radius:6px}.preview-item[data-v-be8bc03c]{padding:12px 16px;border-bottom:1px solid #f5f7fa;transition:background-color .2s}.preview-item[data-v-be8bc03c]:last-child{border-bottom:none}.preview-item[data-v-be8bc03c]:hover{background-color:#f8f9fa}.preview-header[data-v-be8bc03c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.preview-title[data-v-be8bc03c]{font-weight:500;color:#303133;flex:1;margin-right:10px}.preview-description[data-v-be8bc03c]{color:#606266;font-size:13px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.el-tabs--border-card[data-v-be8bc03c] .el-tabs__content{padding:20px}.el-upload--text[data-v-be8bc03c],.el-upload-dragger[data-v-be8bc03c]{width:100%}.novel-management[data-v-b7c07dee]{padding:0}.page-header[data-v-b7c07dee]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-b7c07dee]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-b7c07dee]{margin:0;color:#606266;font-size:14px}.filter-section[data-v-b7c07dee]{margin-bottom:20px}.filter-content[data-v-b7c07dee]{display:flex;justify-content:space-between;align-items:center;gap:20px}.filter-left[data-v-b7c07dee]{display:flex;gap:15px}.novels-grid[data-v-b7c07dee]{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-bottom:20px}.novel-card[data-v-b7c07dee]{height:100%}.novel-item[data-v-b7c07dee]{height:100%;display:flex;flex-direction:column}.novel-item[data-v-b7c07dee] .el-card__body{flex:1;display:flex;flex-direction:column;padding:0}.novel-cover[data-v-b7c07dee]{position:relative;height:200px;overflow:hidden;border-radius:8px 8px 0 0}.novel-cover img[data-v-b7c07dee]{width:100%;height:100%;object-fit:cover;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.novel-status[data-v-b7c07dee]{position:absolute;top:10px;right:10px}.novel-info[data-v-b7c07dee]{flex:1;padding:15px}.novel-title[data-v-b7c07dee]{margin:0 0 8px;font-size:16px;font-weight:600;color:#303133;line-height:1.4}.novel-description[data-v-b7c07dee]{margin:0 0 15px;color:#606266;font-size:13px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.novel-meta[data-v-b7c07dee]{display:flex;flex-wrap:wrap;gap:15px;margin-bottom:10px}.meta-item[data-v-b7c07dee]{display:flex;align-items:center;gap:4px;color:#909399;font-size:12px}.novel-genre[data-v-b7c07dee]{margin-bottom:15px}.novel-actions[data-v-b7c07dee]{display:flex;gap:8px;padding:0 15px 15px;margin-top:auto}.empty-state[data-v-b7c07dee]{padding:60px 0}.cover-uploader[data-v-b7c07dee]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden;width:120px;height:160px;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.cover-uploader[data-v-b7c07dee]:hover{border-color:#409eff;background-color:#f8f9fa}.cover-uploader-placeholder[data-v-b7c07dee]{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;text-align:center}.cover-uploader-icon[data-v-b7c07dee]{font-size:24px;color:#8c939d;margin-bottom:8px}.upload-text[data-v-b7c07dee]{font-size:12px;color:#8c939d;line-height:1.2}.cover-preview[data-v-b7c07dee]{width:120px;height:160px;object-fit:cover;display:block;border-radius:6px}.cover-upload-container[data-v-b7c07dee]{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.cover-actions[data-v-b7c07dee]{display:flex;gap:8px}.tags-display[data-v-b7c07dee]{margin-top:10px}.tags-display .el-tag[data-v-b7c07dee]{margin:2px 4px 2px 0}.description-input-group[data-v-b7c07dee]{position:relative}.ai-generate-section[data-v-b7c07dee]{display:flex;align-items:center;gap:10px;margin-top:8px;padding:8px 12px;background:#f8f9fa;border-radius:4px;border:1px solid #e9ecef}.generate-tip[data-v-b7c07dee]{font-size:12px;color:#6c757d}.novel-details[data-v-b7c07dee]{max-height:600px;overflow-y:auto}.details-header[data-v-b7c07dee]{display:flex;gap:20px;margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid #ebeef5}.details-cover[data-v-b7c07dee]{flex-shrink:0}.details-cover img[data-v-b7c07dee]{width:120px;height:160px;object-fit:cover;border-radius:6px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.details-info[data-v-b7c07dee]{flex:1}.details-info h2[data-v-b7c07dee]{margin:0 0 10px;color:#303133}.details-description[data-v-b7c07dee]{margin:0 0 15px;color:#606266;line-height:1.6}.details-meta[data-v-b7c07dee]{display:flex;flex-direction:column;gap:8px}.meta-row[data-v-b7c07dee]{display:flex;align-items:center;gap:10px}.meta-label[data-v-b7c07dee]{font-weight:500;color:#303133;min-width:80px}.chapters-list[data-v-b7c07dee]{max-height:300px;overflow-y:auto}.chapter-item[data-v-b7c07dee]{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.chapter-info h4[data-v-b7c07dee]{margin:0 0 5px;font-size:14px;color:#303133}.chapter-info p[data-v-b7c07dee]{margin:0;font-size:12px;color:#909399}.writing-records[data-v-b7c07dee]{max-height:300px;overflow-y:auto}.record-item[data-v-b7c07dee]{display:flex;gap:15px;padding:12px 0;border-bottom:1px solid #f0f0f0}.record-date[data-v-b7c07dee]{flex-shrink:0;font-size:12px;color:#909399;min-width:80px}.record-content[data-v-b7c07dee]{flex:1}.record-stats[data-v-b7c07dee]{display:flex;gap:15px;font-size:13px;color:#606266;margin-bottom:5px}.record-note[data-v-b7c07dee]{font-size:12px;color:#909399}.stats-grid[data-v-b7c07dee]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:20px}.stat-item[data-v-b7c07dee]{text-align:center;padding:20px;background:#f8f9fa;border-radius:8px}.stat-value[data-v-b7c07dee]{font-size:24px;font-weight:600;color:#409eff;margin-bottom:5px}.stat-label[data-v-b7c07dee]{font-size:12px;color:#909399}.image-placeholder[data-v-b7c07dee]{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:#f5f7fa;color:#909399;font-size:12px}.image-placeholder i[data-v-b7c07dee]{font-size:24px;margin-bottom:8px}@media (max-width: 768px){.page-header[data-v-b7c07dee]{flex-direction:column;gap:15px;text-align:center}.filter-content[data-v-b7c07dee]{flex-direction:column;gap:15px}.filter-left[data-v-b7c07dee]{flex-wrap:wrap;justify-content:center}.novels-grid[data-v-b7c07dee]{grid-template-columns:1fr}.details-header[data-v-b7c07dee]{flex-direction:column;text-align:center}.stats-grid[data-v-b7c07dee]{grid-template-columns:repeat(2,1fr)}}.writing-goals[data-v-f3b7487c]{padding:0}.page-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-f3b7487c]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-f3b7487c]{margin:0;color:#606266;font-size:14px}.goals-overview[data-v-f3b7487c]{margin-bottom:30px}.overview-card[data-v-f3b7487c]{height:100%}.overview-item[data-v-f3b7487c]{display:flex;align-items:center;gap:15px}.overview-icon[data-v-f3b7487c]{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff}.overview-icon.active[data-v-f3b7487c]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.overview-icon.completed[data-v-f3b7487c]{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.overview-icon.words[data-v-f3b7487c]{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%)}.overview-icon.streak[data-v-f3b7487c]{background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%)}.overview-content[data-v-f3b7487c]{flex:1}.overview-value[data-v-f3b7487c]{font-size:24px;font-weight:600;color:#303133;margin-bottom:5px}.overview-label[data-v-f3b7487c]{font-size:14px;color:#606266}.active-goals-section[data-v-f3b7487c]{margin-bottom:30px}.active-goals-section h2[data-v-f3b7487c]{margin:0 0 20px;color:#303133}.goals-grid[data-v-f3b7487c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px}.goal-card[data-v-f3b7487c]{height:100%}.goal-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px}.goal-title[data-v-f3b7487c]{display:flex;align-items:center;gap:10px;flex:1}.goal-icon[data-v-f3b7487c]{font-size:20px}.goal-title h3[data-v-f3b7487c]{margin:0;font-size:16px;color:#303133}.goal-description[data-v-f3b7487c]{margin-bottom:20px}.goal-description p[data-v-f3b7487c]{margin:0;color:#606266;font-size:14px;line-height:1.5}.goal-progress[data-v-f3b7487c]{margin-bottom:20px}.progress-info[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.progress-text[data-v-f3b7487c]{font-size:14px;color:#303133}.progress-percentage[data-v-f3b7487c]{font-size:14px;font-weight:600;color:#409eff}.goal-timeline[data-v-f3b7487c]{margin-bottom:20px}.timeline-item[data-v-f3b7487c]{display:flex;justify-content:space-between;margin-bottom:5px;font-size:13px}.timeline-label[data-v-f3b7487c]{color:#909399}.text-danger[data-v-f3b7487c]{color:#f56c6c}.goal-footer[data-v-f3b7487c]{display:flex;gap:10px}.history-section[data-v-f3b7487c]{margin-bottom:30px}.section-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.section-header h2[data-v-f3b7487c]{margin:0;color:#303133}.filter-tabs[data-v-f3b7487c]{display:flex;gap:10px}.history-list[data-v-f3b7487c]{display:flex;flex-direction:column;gap:15px}.history-item[data-v-f3b7487c]{width:100%}.history-content[data-v-f3b7487c]{display:flex;align-items:center;gap:20px}.history-info[data-v-f3b7487c]{flex:1}.history-title[data-v-f3b7487c]{display:flex;align-items:center;gap:10px;margin-bottom:8px}.history-title h4[data-v-f3b7487c]{margin:0;font-size:16px;color:#303133}.history-description[data-v-f3b7487c]{margin:0 0 8px;color:#606266;font-size:14px}.history-meta[data-v-f3b7487c]{display:flex;gap:20px;font-size:12px;color:#909399}.history-progress[data-v-f3b7487c]{width:200px}.goal-details[data-v-f3b7487c]{max-height:600px;overflow-y:auto}.details-header[data-v-f3b7487c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #ebeef5}.details-header h3[data-v-f3b7487c]{margin:0;color:#303133}.details-content[data-v-f3b7487c]{display:flex;flex-direction:column;gap:20px}.detail-item[data-v-f3b7487c]{display:flex;margin-bottom:10px}.detail-item label[data-v-f3b7487c]{font-weight:500;color:#303133;min-width:80px}.progress-chart[data-v-f3b7487c]{padding:20px;background:#f8f9fa;border-radius:8px}.progress-chart h4[data-v-f3b7487c]{margin:0 0 15px;color:#303133}.chart-placeholder[data-v-f3b7487c]{height:200px;display:flex;align-items:center;justify-content:center;background:white;border-radius:6px;color:#909399}.progress-history h4[data-v-f3b7487c]{margin:0 0 15px;color:#303133}.history-timeline[data-v-f3b7487c]{max-height:200px;overflow-y:auto}.timeline-item[data-v-f3b7487c]{display:flex;gap:15px;padding:10px 0;border-bottom:1px solid #f0f0f0}.timeline-date[data-v-f3b7487c]{flex-shrink:0;font-size:12px;color:#909399;min-width:80px}.timeline-content[data-v-f3b7487c]{flex:1}.timeline-progress[data-v-f3b7487c]{font-size:14px;color:#409eff;font-weight:500;margin-bottom:3px}.timeline-note[data-v-f3b7487c]{font-size:12px;color:#606266}@media (max-width: 768px){.page-header[data-v-f3b7487c]{flex-direction:column;gap:15px;text-align:center}.goals-grid[data-v-f3b7487c]{grid-template-columns:1fr}.section-header[data-v-f3b7487c]{flex-direction:column;gap:15px;align-items:flex-start}.filter-tabs[data-v-f3b7487c]{flex-wrap:wrap}.history-content[data-v-f3b7487c]{flex-direction:column;align-items:flex-start}.history-progress[data-v-f3b7487c]{width:100%}}.token-billing[data-v-bda4e3ab]{padding:0}.page-header[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-bda4e3ab]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-bda4e3ab]{margin:0;color:#606266;font-size:14px}.header-actions[data-v-bda4e3ab]{display:flex;gap:10px}.account-overview[data-v-bda4e3ab]{margin-bottom:20px}.overview-card[data-v-bda4e3ab]{height:100%}.overview-card.usage[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%);color:#fff}.overview-card.input[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff}.overview-card.output[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%);color:#fff}.overview-card.total[data-v-bda4e3ab] .el-card__body{background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%);color:#fff}.overview-item[data-v-bda4e3ab]{display:flex;align-items:center;gap:15px}.overview-icon[data-v-bda4e3ab]{width:50px;height:50px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:20px}.overview-content[data-v-bda4e3ab]{flex:1}.overview-value[data-v-bda4e3ab]{font-size:24px;font-weight:600;margin-bottom:5px}.overview-label[data-v-bda4e3ab]{font-size:14px;opacity:.9}.statistics-section[data-v-bda4e3ab]{margin-bottom:20px}.card-header[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center}.card-header h3[data-v-bda4e3ab]{margin:0;font-size:18px;color:#303133}.time-filter[data-v-bda4e3ab]{margin-left:auto}.statistics-content[data-v-bda4e3ab]{padding:20px 0}.chart-container[data-v-bda4e3ab]{text-align:center}.chart-container h4[data-v-bda4e3ab]{margin:0 0 15px;font-size:16px;color:#606266}.chart-placeholder[data-v-bda4e3ab]{height:200px;background:#f8f9fa;border:2px dashed #e9ecef;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#6c757d;font-size:14px}.filter-section[data-v-bda4e3ab]{margin-bottom:20px}.filter-content[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center;padding:10px 0}.filter-left[data-v-bda4e3ab]{display:flex;gap:15px;align-items:center}.billing-records[data-v-bda4e3ab]{margin-bottom:20px}.record-stats[data-v-bda4e3ab]{display:flex;gap:20px;font-size:14px;color:#606266}.content-preview[data-v-bda4e3ab]{color:#606266;font-size:13px}.model-name[data-v-bda4e3ab]{font-weight:500;color:#409eff}.cost-amount[data-v-bda4e3ab]{font-weight:600;color:#e6a23c}.pagination-container[data-v-bda4e3ab]{margin-top:20px;display:flex;justify-content:center}.record-details[data-v-bda4e3ab]{max-height:500px;overflow-y:auto}.details-grid[data-v-bda4e3ab]{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:20px}.detail-item[data-v-bda4e3ab]{display:flex;align-items:center;gap:10px}.detail-item label[data-v-bda4e3ab]{font-weight:600;color:#606266;min-width:80px}.content-section[data-v-bda4e3ab],.response-section[data-v-bda4e3ab]{margin-bottom:20px}.content-header[data-v-bda4e3ab]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.content-section h4[data-v-bda4e3ab],.response-section h4[data-v-bda4e3ab]{margin:0;font-size:14px;color:#303133}.content-box[data-v-bda4e3ab]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:4px;padding:15px;font-size:13px;line-height:1.5;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.api-config[data-v-4a36dc73]{padding:0}.page-header[data-v-4a36dc73]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-content h1[data-v-4a36dc73]{margin:0 0 5px;font-size:24px;color:#303133}.header-content p[data-v-4a36dc73]{margin:0;color:#606266;font-size:14px}.header-actions[data-v-4a36dc73]{display:flex;gap:10px}.config-overview[data-v-4a36dc73]{margin-bottom:20px}.status-card[data-v-4a36dc73]{height:100%}.status-item[data-v-4a36dc73]{display:flex;align-items:center;gap:15px}.status-icon[data-v-4a36dc73]{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff}.status-icon.success[data-v-4a36dc73]{background:linear-gradient(135deg,#67c23a,#85ce61)}.status-icon.warning[data-v-4a36dc73]{background:linear-gradient(135deg,#e6a23c,#f0a020)}.status-icon.info[data-v-4a36dc73]{background:linear-gradient(135deg,#409eff,#66b1ff)}.status-icon.primary[data-v-4a36dc73]{background:linear-gradient(135deg,#909399,#b3b6bb)}.status-content[data-v-4a36dc73]{flex:1}.status-value[data-v-4a36dc73]{font-size:24px;font-weight:600;color:#303133;margin-bottom:5px}.status-label[data-v-4a36dc73]{font-size:14px;color:#606266}.config-list[data-v-4a36dc73]{margin-bottom:20px}.card-header[data-v-4a36dc73]{display:flex;justify-content:space-between;align-items:center}.card-header h3[data-v-4a36dc73]{margin:0;color:#303133}.config-tabs[data-v-4a36dc73]{margin-top:20px}.config-content[data-v-4a36dc73]{padding:20px 0}.config-section[data-v-4a36dc73]{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #ebeef5}.config-section[data-v-4a36dc73]:last-child{border-bottom:none}.config-section h4[data-v-4a36dc73]{margin:0 0 20px;color:#303133;font-size:16px;font-weight:600}.config-actions[data-v-4a36dc73]{display:flex;gap:10px;justify-content:flex-end;padding-top:20px;border-top:1px solid #ebeef5}.max-tokens-control[data-v-4a36dc73]{display:flex;flex-direction:column;gap:8px}.preset-templates[data-v-4a36dc73]{margin-bottom:20px}.template-grid[data-v-4a36dc73]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.template-card[data-v-4a36dc73]{padding:20px;border:1px solid #ebeef5;border-radius:8px;cursor:pointer;transition:all .3s;display:flex;gap:15px}.template-card[data-v-4a36dc73]:hover{border-color:#409eff;box-shadow:0 4px 8px #409eff33}.template-icon[data-v-4a36dc73]{font-size:32px;width:50px;height:50px;display:flex;align-items:center;justify-content:center;background:#f5f7fa;border-radius:8px}.template-content[data-v-4a36dc73]{flex:1}.template-content h4[data-v-4a36dc73]{margin:0 0 8px;color:#303133;font-size:16px}.template-content p[data-v-4a36dc73]{margin:0 0 10px;color:#606266;font-size:14px;line-height:1.4}.template-tags[data-v-4a36dc73]{display:flex;gap:5px;flex-wrap:wrap}.import-export[data-v-4a36dc73]{margin-bottom:20px}.import-export-actions[data-v-4a36dc73]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:30px}.action-group h4[data-v-4a36dc73]{margin:0 0 8px;color:#303133;font-size:16px}.action-group p[data-v-4a36dc73]{margin:0 0 15px;color:#606266;font-size:14px;line-height:1.4}@media (max-width: 768px){.page-header[data-v-4a36dc73]{flex-direction:column;gap:15px;text-align:center}.config-actions[data-v-4a36dc73]{flex-wrap:wrap;justify-content:center}.template-grid[data-v-4a36dc73],.import-export-actions[data-v-4a36dc73]{grid-template-columns:1fr}}.settings-page[data-v-fdf61afd]{padding:0}.settings-content[data-v-fdf61afd]{background:white;border-radius:8px}.settings-tabs[data-v-fdf61afd]{min-height:600px}.card-header[data-v-fdf61afd]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.data-management[data-v-fdf61afd]{padding:10px 0}.data-overview[data-v-fdf61afd]{margin-bottom:20px}.data-overview h3[data-v-fdf61afd]{margin:0 0 15px;font-size:16px;font-weight:600;color:#303133}.data-stats[data-v-fdf61afd]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:15px;margin-bottom:10px}.stat-item[data-v-fdf61afd]{text-align:center;padding:15px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.stat-label[data-v-fdf61afd]{font-size:12px;color:#6c757d;margin-bottom:5px}.stat-value[data-v-fdf61afd]{font-size:18px;font-weight:600;color:#495057}.data-section[data-v-fdf61afd]{margin-bottom:20px}.data-section h3[data-v-fdf61afd]{margin:0 0 10px;font-size:16px;font-weight:600;color:#303133}.data-section p[data-v-fdf61afd]{margin:0 0 15px;color:#606266;font-size:14px}.warning-text[data-v-fdf61afd]{color:#f56c6c!important}.data-actions[data-v-fdf61afd]{display:flex;gap:10px;flex-wrap:wrap}.about-content[data-v-fdf61afd]{padding:10px 0}.app-info[data-v-fdf61afd]{text-align:center;margin-bottom:20px}.app-logo h1[data-v-fdf61afd]{margin:0 0 20px;font-size:32px;color:#409eff}.app-details p[data-v-fdf61afd]{margin:8px 0;color:#606266}.features-list h3[data-v-fdf61afd],.update-log h3[data-v-fdf61afd]{margin:0 0 15px;font-size:16px;font-weight:600;color:#303133}.features-grid[data-v-fdf61afd]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:15px}.feature-category[data-v-fdf61afd]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:15px}.feature-category h4[data-v-fdf61afd]{margin:0 0 12px;font-size:14px;font-weight:600;color:#409eff;border-bottom:2px solid #409eff;padding-bottom:8px}.feature-category ul[data-v-fdf61afd]{margin:0;padding:0;list-style:none}.feature-category li[data-v-fdf61afd]{margin:6px 0;color:#606266;font-size:13px;line-height:1.4}.features-list ul[data-v-fdf61afd]{margin:0;padding-left:20px}.features-list li[data-v-fdf61afd]{margin:8px 0;color:#606266}.log-item[data-v-fdf61afd]{margin-bottom:20px;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:15px}.log-item.current-version[data-v-fdf61afd]{background:linear-gradient(135deg,#e3f2fd 0%,#f0f8ff 100%);border:2px solid #409eff}.log-item h4[data-v-fdf61afd]{margin:0 0 15px;font-size:15px;font-weight:600;color:#409eff;padding-bottom:8px;border-bottom:1px solid #409eff}.log-category[data-v-fdf61afd]{margin-bottom:15px}.log-category h5[data-v-fdf61afd]{margin:0 0 8px;font-size:13px;font-weight:600;color:#67c23a}.import-options[data-v-fdf61afd]{padding:10px 0}.import-options p[data-v-fdf61afd]{margin:0 0 15px;color:#606266}.import-options .el-checkbox-group[data-v-fdf61afd]{display:flex;flex-direction:column;gap:10px}.log-item ul[data-v-fdf61afd]{margin:0;padding-left:20px}.log-item li[data-v-fdf61afd]{margin:5px 0;color:#606266;font-size:14px}@media (max-width: 768px){.data-actions[data-v-fdf61afd]{flex-direction:column}.data-actions .el-button[data-v-fdf61afd]{width:100%}}:root[data-theme=light][data-v-fdf61afd]{--bg-color: #ffffff;--text-color: #303133;--border-color: #e4e7ed}:root[data-theme=dark][data-v-fdf61afd]{--bg-color: #1d1d1d;--text-color: #ffffff;--border-color: #434343}:root[data-theme=dark] .settings-page[data-v-fdf61afd]{background-color:var(--bg-color);color:var(--text-color)}:root[data-theme=dark] .el-card[data-v-fdf61afd]{background-color:#2d2d2d;border-color:var(--border-color)}.no-animations[data-v-fdf61afd] *{animation-duration:0ms!important;animation-delay:0ms!important;transition-duration:0ms!important;transition-delay:0ms!important}.chapter-management[data-v-5b2fb696]{padding:0}.page-header[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.header-content h1[data-v-5b2fb696]{margin:0 0 5px;font-size:24px;font-weight:600;color:#303133}.header-content p[data-v-5b2fb696]{margin:0;color:#606266;font-size:14px}.novel-selector[data-v-5b2fb696]{margin-bottom:20px}.selector-content[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:center}.selector-left[data-v-5b2fb696]{display:flex;align-items:center;gap:10px}.selector-label[data-v-5b2fb696]{font-weight:600;color:#303133}.novel-option[data-v-5b2fb696]{display:flex;flex-direction:column}.novel-title[data-v-5b2fb696]{font-weight:600}.novel-info[data-v-5b2fb696]{font-size:12px;color:#909399}.novel-stats[data-v-5b2fb696]{display:flex;gap:20px}.stat-item[data-v-5b2fb696]{display:flex;align-items:center;gap:5px}.stat-label[data-v-5b2fb696]{color:#606266;font-size:14px}.stat-value[data-v-5b2fb696]{font-weight:600;color:#303133}.chapters-section[data-v-5b2fb696]{margin-bottom:20px}.card-header[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.chapters-list[data-v-5b2fb696]{display:flex;flex-direction:column;gap:15px}.chapter-item[data-v-5b2fb696]{display:flex;align-items:flex-start;gap:15px;padding:15px;border:1px solid #e4e7ed;border-radius:8px;transition:all .3s}.chapter-item[data-v-5b2fb696]:hover,.chapter-item.selected[data-v-5b2fb696]{border-color:#409eff;background-color:#f0f9ff}.chapter-checkbox[data-v-5b2fb696]{flex-shrink:0;padding-top:2px}.chapter-number[data-v-5b2fb696]{flex-shrink:0;width:60px;text-align:center;font-weight:600;color:#409eff;background:#f0f9ff;padding:5px;border-radius:4px;font-size:12px}.chapter-content[data-v-5b2fb696]{flex:1}.chapter-title[data-v-5b2fb696]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chapter-title h4[data-v-5b2fb696]{margin:0;font-size:16px;font-weight:600;color:#303133}.chapter-summary[data-v-5b2fb696]{color:#606266;font-size:14px;line-height:1.4;margin-bottom:10px}.chapter-meta[data-v-5b2fb696]{display:flex;gap:15px;font-size:12px;color:#909399}.meta-item[data-v-5b2fb696]{display:flex;align-items:center;gap:4px}.chapter-actions[data-v-5b2fb696]{flex-shrink:0;display:flex;align-items:center;gap:5px}.no-novel-selected[data-v-5b2fb696]{padding:60px 0}.tags-display[data-v-5b2fb696]{margin-top:10px}.chapter-preview[data-v-5b2fb696]{max-height:600px;overflow-y:auto}.preview-header[data-v-5b2fb696]{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #e4e7ed}.preview-header h2[data-v-5b2fb696]{margin:0 0 10px;font-size:20px;font-weight:600;color:#303133}.preview-meta[data-v-5b2fb696]{display:flex;gap:15px;font-size:14px;color:#606266}.preview-content[data-v-5b2fb696]{line-height:1.8;color:#303133}.preview-content p[data-v-5b2fb696]{margin:0 0 15px;text-indent:2em}.empty-chapters[data-v-5b2fb696]{padding:40px 0}@media (max-width: 768px){.page-header[data-v-5b2fb696]{flex-direction:column;gap:15px}.selector-content[data-v-5b2fb696]{flex-direction:column;gap:15px;align-items:flex-start}.chapter-item[data-v-5b2fb696]{flex-direction:column;gap:10px}.chapter-actions[data-v-5b2fb696]{width:100%;justify-content:flex-end}}:root,:host{--w-e-textarea-bg-color: #fff;--w-e-textarea-color: #333;--w-e-textarea-border-color: #ccc;--w-e-textarea-slight-border-color: #e8e8e8;--w-e-textarea-slight-color: #d4d4d4;--w-e-textarea-slight-bg-color: #f5f2f0;--w-e-textarea-selected-border-color: #B4D5FF;--w-e-textarea-handler-bg-color: #4290f7;--w-e-toolbar-color: #595959;--w-e-toolbar-bg-color: #fff;--w-e-toolbar-active-color: #333;--w-e-toolbar-active-bg-color: #f1f1f1;--w-e-toolbar-disabled-color: #999;--w-e-toolbar-border-color: #e8e8e8;--w-e-modal-button-bg-color: #fafafa;--w-e-modal-button-border-color: #d9d9d9}.w-e-text-container *,.w-e-toolbar *{box-sizing:border-box;margin:0;outline:none;padding:0}.w-e-text-container blockquote,.w-e-text-container li,.w-e-text-container p,.w-e-text-container td,.w-e-text-container th,.w-e-toolbar *{line-height:1.5}.w-e-text-container{background-color:var(--w-e-textarea-bg-color);color:var(--w-e-textarea-color);height:100%;position:relative}.w-e-text-container .w-e-scroll{-webkit-overflow-scrolling:touch;height:100%}.w-e-text-container [data-slate-editor]{word-wrap:break-word;border-top:1px solid transparent;min-height:100%;outline:0;padding:0 10px;white-space:pre-wrap}.w-e-text-container [data-slate-editor] p{margin:15px 0}.w-e-text-container [data-slate-editor] h1,.w-e-text-container [data-slate-editor] h2,.w-e-text-container [data-slate-editor] h3,.w-e-text-container [data-slate-editor] h4,.w-e-text-container [data-slate-editor] h5{margin:20px 0}.w-e-text-container [data-slate-editor] img{cursor:default;display:inline!important;max-width:100%;min-height:20px;min-width:20px}.w-e-text-container [data-slate-editor] span{text-indent:0}.w-e-text-container [data-slate-editor] [data-selected=true]{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-placeholder{font-style:italic;left:10px;top:17px;width:90%}.w-e-max-length-info,.w-e-text-placeholder{color:var(--w-e-textarea-slight-color);pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.w-e-max-length-info{bottom:.5em;right:1em}.w-e-bar{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-color);font-size:14px;padding:0 5px}.w-e-bar svg{fill:var(--w-e-toolbar-color);height:14px;width:14px}.w-e-bar-show{display:flex}.w-e-bar-hidden{display:none}.w-e-hover-bar{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 5px #0000001f;position:absolute}.w-e-toolbar{flex-wrap:wrap;position:relative}.w-e-bar-divider{background-color:var(--w-e-toolbar-border-color);display:inline-flex;height:40px;margin:0 5px;width:1px}.w-e-bar-item{display:flex;height:40px;padding:4px;position:relative;text-align:center}.w-e-bar-item,.w-e-bar-item button{align-items:center;justify-content:center}.w-e-bar-item button{background:transparent;border:none;color:var(--w-e-toolbar-color);cursor:pointer;display:inline-flex;height:32px;overflow:hidden;padding:0 8px;white-space:nowrap}.w-e-bar-item button:hover{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item button .title{margin-left:5px}.w-e-bar-item .active{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item .disabled{color:var(--w-e-toolbar-disabled-color);cursor:not-allowed}.w-e-bar-item .disabled svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-menu-tooltip-v5:before{background-color:var(--w-e-toolbar-active-color);border-radius:5px;color:var(--w-e-toolbar-bg-color);content:attr(data-tooltip);font-size:.75em;opacity:0;padding:5px 10px;position:absolute;text-align:center;top:40px;transition:opacity .6s;visibility:hidden;white-space:pre;z-index:1}.w-e-menu-tooltip-v5:after{border:5px solid transparent;border-bottom:5px solid var(--w-e-toolbar-active-color);content:"";opacity:0;position:absolute;top:30px;transition:opacity .6s;visibility:hidden}.w-e-menu-tooltip-v5:hover:after,.w-e-menu-tooltip-v5:hover:before{opacity:1;visibility:visible}.w-e-menu-tooltip-v5.tooltip-right:before{left:100%;top:10px}.w-e-menu-tooltip-v5.tooltip-right:after{border-bottom-color:transparent;border-left-color:transparent;border-right-color:var(--w-e-toolbar-active-color);border-top-color:transparent;left:100%;margin-left:-10px;top:16px}.w-e-bar-item-group .w-e-bar-item-menus-container{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;display:none;left:0;margin-top:40px;position:absolute;top:0;z-index:1}.w-e-bar-item-group:hover .w-e-bar-item-menus-container{display:block}.w-e-select-list{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;left:0;margin-top:40px;max-height:350px;min-width:100px;overflow-y:auto;position:absolute;top:0;z-index:1}.w-e-select-list ul{line-height:1;list-style:none}.w-e-select-list ul .selected{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li{cursor:pointer;padding:7px 0 7px 25px;position:relative;text-align:left;white-space:nowrap}.w-e-select-list ul li:hover{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li svg{left:0;margin-left:5px;margin-top:-7px;position:absolute;top:50%}.w-e-bar-bottom .w-e-select-list{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-drop-panel{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;margin-top:40px;min-width:200px;padding:10px;position:absolute;top:0;z-index:1}.w-e-bar-bottom .w-e-drop-panel{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-modal{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;color:var(--w-e-toolbar-color);font-size:14px;min-height:40px;min-width:100px;padding:20px 15px 0;position:absolute;text-align:left;z-index:1}.w-e-modal .btn-close{cursor:pointer;line-height:1;padding:5px;position:absolute;right:8px;top:7px}.w-e-modal .btn-close svg{fill:var(--w-e-toolbar-color);height:10px;width:10px}.w-e-modal .babel-container{display:block;margin-bottom:15px}.w-e-modal .babel-container span{display:block;margin-bottom:10px}.w-e-modal .button-container{margin-bottom:15px}.w-e-modal button{background-color:var(--w-e-modal-button-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);cursor:pointer;font-weight:400;height:32px;padding:4.5px 15px;text-align:center;touch-action:manipulation;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.w-e-modal input[type=number],.w-e-modal input[type=text],.w-e-modal textarea{font-feature-settings:"tnum";background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);font-variant:tabular-nums;padding:4.5px 11px;transition:all .3s;width:100%}.w-e-modal textarea{min-height:60px}body .w-e-modal,body .w-e-modal *{box-sizing:border-box}.w-e-progress-bar{background-color:var(--w-e-textarea-handler-bg-color);height:1px;position:absolute;transition:width .3s;width:0}.w-e-full-screen-container{bottom:0!important;display:flex!important;flex-direction:column!important;height:100%!important;left:0!important;margin:0!important;padding:0!important;position:fixed;right:0!important;top:0!important;width:100%!important}.w-e-full-screen-container [data-w-e-textarea=true]{flex:1!important}.w-e-text-container [data-slate-editor] code{background-color:var(--w-e-textarea-slight-bg-color);border-radius:3px;font-family:monospace;padding:3px}.w-e-panel-content-color{list-style:none;text-align:left;width:230px}.w-e-panel-content-color li{border:1px solid var(--w-e-toolbar-bg-color);border-radius:3px;cursor:pointer;display:inline-block;padding:2px}.w-e-panel-content-color li:hover{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color li .color-block{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;height:17px;width:17px}.w-e-panel-content-color .active{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color .clear{line-height:1.5;margin-bottom:5px;width:100%}.w-e-panel-content-color .clear svg{height:16px;margin-bottom:-4px;width:16px}.w-e-text-container [data-slate-editor] blockquote{background-color:var(--w-e-textarea-slight-bg-color);border-left:8px solid var(--w-e-textarea-selected-border-color);display:block;font-size:100%;line-height:1.5;margin:10px 0;padding:10px}.w-e-panel-content-emotion{font-size:20px;list-style:none;text-align:left;width:300px}.w-e-panel-content-emotion li{border-radius:3px;cursor:pointer;display:inline-block;padding:0 5px}.w-e-panel-content-emotion li:hover{background-color:var(--w-e-textarea-slight-bg-color)}.w-e-textarea-divider{border-radius:3px;margin:20px auto;padding:20px}.w-e-textarea-divider hr{background-color:var(--w-e-textarea-border-color);border:0;display:block;height:1px}.w-e-text-container [data-slate-editor] pre>code{background-color:var(--w-e-textarea-slight-bg-color);border:1px solid var(--w-e-textarea-slight-border-color);border-radius:4px;display:block;font-size:14px;padding:10px;text-indent:0}.w-e-text-container [data-slate-editor] .w-e-image-container{display:inline-block;margin:0 3px}.w-e-text-container [data-slate-editor] .w-e-image-container:hover{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-container [data-slate-editor] .w-e-selected-image-container{overflow:hidden;position:relative}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .w-e-image-dragger{background-color:var(--w-e-textarea-handler-bg-color);height:7px;position:absolute;width:7px}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-top{cursor:nwse-resize;left:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-top{cursor:nesw-resize;right:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-bottom{bottom:0;cursor:nesw-resize;left:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-bottom{bottom:0;cursor:nwse-resize;right:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container:hover,.w-e-text-container [contenteditable=false] .w-e-image-container:hover{box-shadow:none}.w-e-text-container [data-slate-editor] .table-container{border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin-top:10px;overflow-x:auto;padding:10px;width:100%}.w-e-text-container [data-slate-editor] table{border-collapse:collapse}.w-e-text-container [data-slate-editor] table td,.w-e-text-container [data-slate-editor] table th{border:1px solid var(--w-e-textarea-border-color);line-height:1.5;min-width:30px;padding:3px 5px;text-align:left}.w-e-text-container [data-slate-editor] table th{background-color:var(--w-e-textarea-slight-bg-color);font-weight:700;text-align:center}.w-e-panel-content-table{background-color:var(--w-e-toolbar-bg-color)}.w-e-panel-content-table table{border-collapse:collapse}.w-e-panel-content-table td{border:1px solid var(--w-e-toolbar-border-color);cursor:pointer;height:15px;padding:3px 5px;width:20px}.w-e-panel-content-table td.active{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-textarea-video-container{background-image:linear-gradient(45deg,#eee 25%,transparent 0,transparent 75%,#eee 0,#eee),linear-gradient(45deg,#eee 25%,#fff 0,#fff 75%,#eee 0,#eee);background-position:0 0,10px 10px;background-size:20px 20px;border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin:10px auto 0;padding:10px 0;text-align:center}.w-e-text-container [data-slate-editor] pre>code{word-wrap:normal;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;-webkit-hyphens:none;hyphens:none;line-height:1.5;margin:.5em 0;overflow:auto;padding:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}.w-e-text-container [data-slate-editor] pre>code .token.cdata,.w-e-text-container [data-slate-editor] pre>code .token.comment,.w-e-text-container [data-slate-editor] pre>code .token.doctype,.w-e-text-container [data-slate-editor] pre>code .token.prolog{color:#708090}.w-e-text-container [data-slate-editor] pre>code .token.punctuation{color:#999}.w-e-text-container [data-slate-editor] pre>code .token.namespace{opacity:.7}.w-e-text-container [data-slate-editor] pre>code .token.boolean,.w-e-text-container [data-slate-editor] pre>code .token.constant,.w-e-text-container [data-slate-editor] pre>code .token.deleted,.w-e-text-container [data-slate-editor] pre>code .token.number,.w-e-text-container [data-slate-editor] pre>code .token.property,.w-e-text-container [data-slate-editor] pre>code .token.symbol,.w-e-text-container [data-slate-editor] pre>code .token.tag{color:#905}.w-e-text-container [data-slate-editor] pre>code .token.attr-name,.w-e-text-container [data-slate-editor] pre>code .token.builtin,.w-e-text-container [data-slate-editor] pre>code .token.char,.w-e-text-container [data-slate-editor] pre>code .token.inserted,.w-e-text-container [data-slate-editor] pre>code .token.selector,.w-e-text-container [data-slate-editor] pre>code .token.string{color:#690}.w-e-text-container [data-slate-editor] pre>code .language-css .token.string,.w-e-text-container [data-slate-editor] pre>code .style .token.string,.w-e-text-container [data-slate-editor] pre>code .token.entity,.w-e-text-container [data-slate-editor] pre>code .token.operator,.w-e-text-container [data-slate-editor] pre>code .token.url{color:#9a6e3a}.w-e-text-container [data-slate-editor] pre>code .token.atrule,.w-e-text-container [data-slate-editor] pre>code .token.attr-value,.w-e-text-container [data-slate-editor] pre>code .token.keyword{color:#07a}.w-e-text-container [data-slate-editor] pre>code .token.class-name,.w-e-text-container [data-slate-editor] pre>code .token.function{color:#dd4a68}.w-e-text-container [data-slate-editor] pre>code .token.important,.w-e-text-container [data-slate-editor] pre>code .token.regex,.w-e-text-container [data-slate-editor] pre>code .token.variable{color:#e90}.w-e-text-container [data-slate-editor] pre>code .token.bold,.w-e-text-container [data-slate-editor] pre>code .token.important{font-weight:700}.w-e-text-container [data-slate-editor] pre>code .token.italic{font-style:italic}.w-e-text-container [data-slate-editor] pre>code .token.entity{cursor:help}.writer-container[data-v-afccd996]{height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}.title-bar[data-v-afccd996]{height:50px;background:white;border-bottom:1px solid #e4e7ed;display:flex;align-items:center;padding:0 20px;flex-shrink:0}.title-left[data-v-afccd996]{display:flex;align-items:center;gap:15px}.novel-title[data-v-afccd996]{font-size:16px;font-weight:600;color:#303133}.tabs-bar[data-v-afccd996]{background:white;border-bottom:1px solid #e4e7ed;padding:0 20px;flex-shrink:0}.main-tabs[data-v-afccd996],.main-tabs .el-tabs__header[data-v-afccd996]{margin:0}.main-tabs .el-tabs__nav-wrap[data-v-afccd996]:after{display:none}.main-content[data-v-afccd996]{flex:1;display:flex;gap:16px;padding:16px;overflow:hidden}.left-panel[data-v-afccd996]{width:280px;flex-shrink:0}.editor-panel[data-v-afccd996]{flex:1;min-width:0}.card-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.editor-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;width:100%}.editor-header-left[data-v-afccd996]{flex:1;display:flex;flex-direction:column;gap:8px}.chapter-title[data-v-afccd996]{margin:0;font-size:18px;font-weight:600;color:#303133;line-height:1.4}.chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:12px;font-size:13px;color:#909399}.word-count[data-v-afccd996]{font-weight:500;color:#606266}.editor-header-right[data-v-afccd996]{flex-shrink:0;margin-left:20px}.saving-indicator[data-v-afccd996]{color:#409eff!important;animation:pulse-afccd996 1.5s infinite}@keyframes pulse-afccd996{0%,to{opacity:1}50%{opacity:.6}}.editor-wrapper[data-v-afccd996] .w-e-text-container{background-color:#fcfcfc;border:none}.editor-wrapper[data-v-afccd996] .w-e-text{font-family:Microsoft YaHei,PingFang SC,Hiragino Sans GB,Source Han Sans CN,WenQuanYi Micro Hei,sans-serif;font-size:16px;line-height:2;color:#2c3e50;padding:30px 40px;letter-spacing:.5px;text-align:justify}.editor-wrapper[data-v-afccd996] .w-e-text p{margin:0 0 1.2em;text-indent:2em;line-height:2}.editor-wrapper[data-v-afccd996] .w-e-text h1,.editor-wrapper[data-v-afccd996] .w-e-text h2,.editor-wrapper[data-v-afccd996] .w-e-text h3{margin:1.5em 0 1em;line-height:1.6;text-indent:0}.editor-wrapper[data-v-afccd996] .w-e-text h1{font-size:24px;font-weight:600}.editor-wrapper[data-v-afccd996] .w-e-text h2{font-size:20px;font-weight:600}.editor-wrapper[data-v-afccd996] .w-e-text h3{font-size:18px;font-weight:600}.chapters-list[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.chapter-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.chapter-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.chapter-item.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.chapter-info[data-v-afccd996]{flex:1}.chapter-info h4[data-v-afccd996]{margin:0 0 4px;font-size:14px;color:#303133}.chapter-info p[data-v-afccd996]{margin:0 0 4px;font-size:13px;color:#606266;line-height:1.4}.chapter-meta[data-v-afccd996]{font-size:12px;color:#909399}.chapter-actions[data-v-afccd996]{display:flex;gap:4px}.empty-chapters[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.editor-container[data-v-afccd996]{height:calc(100vh - 300px);border:1px solid #e4e7ed;border-radius:6px;overflow:hidden}.editor-wrapper[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.preview-container[data-v-afccd996]{height:calc(100vh - 300px);border:1px solid #e4e7ed;border-radius:6px;overflow-y:auto;padding:20px;background:white}.preview-content[data-v-afccd996]{line-height:1.8;color:#303133}.chapter-generate-content[data-v-afccd996]{padding:0}.generate-config-section[data-v-afccd996]{margin-bottom:16px}.config-card-modern[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.config-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.config-left[data-v-afccd996]{display:flex;align-items:center;gap:12px}.config-title[data-v-afccd996]{font-weight:600;color:#303133}.config-item[data-v-afccd996]{margin-bottom:0}.config-item .el-form-item__label[data-v-afccd996]{font-size:12px;color:#606266;font-weight:500}.checkbox-group[data-v-afccd996]{display:flex;gap:8px;flex-wrap:wrap}.checkbox-group-horizontal[data-v-afccd996]{display:flex;gap:24px;align-items:center;flex-wrap:wrap}.section-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title[data-v-afccd996]{font-size:16px;font-weight:600;color:#303133;margin:0}.materials-tabs[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.materials-tabs .el-tabs__header[data-v-afccd996]{margin:0;background-color:#f8f9fa}.materials-tabs .el-tabs__nav-wrap[data-v-afccd996]:after{display:none}.tab-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#fafbfc;border-bottom:1px solid #e4e7ed;min-height:48px;flex-wrap:nowrap}.tab-count[data-v-afccd996]{font-size:12px;color:#606266}.materials-grid[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;padding:16px;max-height:300px;overflow-y:auto}.material-card[data-v-afccd996]{border:2px solid #e4e7ed;border-radius:6px;padding:12px;cursor:pointer;transition:all .2s;background-color:#fff;position:relative}.material-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff;transform:translateY(-1px);box-shadow:0 2px 8px #409eff1a}.material-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.material-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.material-name[data-v-afccd996]{font-size:14px;font-weight:600;color:#303133;line-height:1.2}.material-desc[data-v-afccd996]{font-size:12px;color:#606266;line-height:1.4;margin:0 0 8px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.material-tags[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:4px}.empty-materials[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.category-selection-modern[data-v-afccd996]{margin-bottom:16px}.category-header[data-v-afccd996]{font-size:14px;font-weight:600;color:#303133;margin-bottom:12px}.category-grid[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.category-card[data-v-afccd996]{display:flex;flex-direction:column;align-items:center;padding:12px 8px;border:2px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .2s;background-color:#fff}.category-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.category-card.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;color:#409eff}.category-icon[data-v-afccd996]{font-size:20px;margin-bottom:4px}.category-name[data-v-afccd996]{font-size:12px;font-weight:500;text-align:center}.prompt-selection-modern[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.prompt-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.prompt-list-modern[data-v-afccd996]{max-height:250px;overflow-y:auto;padding:8px}.prompt-item-modern[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .2s;background-color:#fff}.prompt-item-modern[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-item-modern.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.prompt-content[data-v-afccd996]{flex:1}.prompt-title[data-v-afccd996]{font-size:14px;font-weight:600;color:#303133;margin:0 0 4px}.prompt-desc[data-v-afccd996]{font-size:12px;color:#606266;margin:0 0 8px;line-height:1.4}.prompt-meta[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.prompt-actions[data-v-afccd996]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.variables-section[data-v-afccd996]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.variables-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.variables-form[data-v-afccd996]{padding:16px}.variable-item[data-v-afccd996]{margin-bottom:16px}.variable-label[data-v-afccd996]{display:block;font-size:12px;color:#606266;font-weight:500;margin-bottom:4px}.preview-section[data-v-afccd996]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.preview-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.preview-actions[data-v-afccd996]{display:flex;gap:8px}.preview-content[data-v-afccd996]{padding:16px}.preview-textarea[data-v-afccd996]{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5}.generate-actions[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding:16px 0 0;border-top:1px solid #e4e7ed}.action-info[data-v-afccd996]{display:flex;align-items:center;gap:8px;font-size:13px;color:#606266}.action-buttons[data-v-afccd996]{display:flex;gap:12px}.optimize-dialog-content[data-v-afccd996]{padding:0}.current-text-section[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.text-info[data-v-afccd996]{display:flex;gap:16px;font-size:12px;color:#606266}.current-text-content[data-v-afccd996]{padding:16px}.current-text-area[data-v-afccd996]{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5}.text-actions[data-v-afccd996]{padding:12px 16px;background-color:#f8f9fa;border-top:1px solid #e4e7ed;display:flex;gap:8px}.optimize-prompt-section[data-v-afccd996]{display:flex;flex-direction:column;gap:16px}.optimize-type-selection[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.type-header[data-v-afccd996]{padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e4e7ed;font-size:14px;font-weight:500;color:#303133}.type-options[data-v-afccd996]{padding:16px}.optimize-prompt-selection[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.prompt-list-optimize[data-v-afccd996]{max-height:200px;overflow-y:auto;padding:8px}.prompt-item-optimize[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:10px;border:1px solid #e4e7ed;border-radius:4px;margin-bottom:6px;cursor:pointer;transition:all .2s;background-color:#fff}.prompt-item-optimize[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-item-optimize.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.optimize-variables[data-v-afccd996],.optimize-preview[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.optimize-actions[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding:16px 0 0;border-top:1px solid #e4e7ed}.ai-tools[data-v-afccd996]{padding:10px}.ai-section[data-v-afccd996]{margin-bottom:10px}.form-item-with-ai[data-v-afccd996]{display:flex;align-items:center}.form-item-with-ai .el-input[data-v-afccd996]{flex:1}.form-item-with-ai .el-button[data-v-afccd996]{margin-top:8px}.dialogue[data-v-afccd996]{font-style:italic;color:#2c3e50;padding-left:16px;border-left:3px solid #409eff;margin:8px 0}.characters-list[data-v-afccd996]{max-height:calc(100vh - 260px);overflow-y:auto}.character-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.character-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.character-item.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff}.character-avatar[data-v-afccd996]{width:40px;height:40px;border-radius:50%;overflow:hidden;margin-right:10px}.character-avatar img[data-v-afccd996]{width:100%;height:100%;object-fit:cover}.default-avatar[data-v-afccd996]{width:100%;height:100%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}.character-content[data-v-afccd996]{display:flex;align-items:center;flex:1;cursor:pointer}.character-info[data-v-afccd996]{flex:1}.character-info h4[data-v-afccd996]{margin:0 0 4px;font-size:14px;color:#303133}.character-info p[data-v-afccd996]{margin:0 0 4px;font-size:13px;color:#606266;line-height:1.4}.character-meta[data-v-afccd996]{display:flex;align-items:center;gap:6px;margin:4px 0;flex-wrap:wrap}.character-meta .age-text[data-v-afccd996]{font-size:12px;color:#909399;margin-left:4px}.character-desc[data-v-afccd996]{font-size:12px;color:#666;margin:4px 0;line-height:1.3;max-height:2.6em;overflow:hidden;text-overflow:ellipsis}.character-desc-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.character-desc-truncated[data-v-afccd996]:hover{color:#303133}.character-tags[data-v-afccd996]{margin-top:4px}.character-tags .el-tag[data-v-afccd996]{margin-right:4px;margin-bottom:4px}.character-item .character-actions[data-v-afccd996]{flex-shrink:0;margin-left:8px}.chapter-desc[data-v-afccd996]{font-size:12px;color:#909399;margin-top:4px;line-height:1.3}.chapter-desc-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.chapter-desc-truncated[data-v-afccd996]:hover{color:#606266}.chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;margin-top:4px}.panel-content[data-v-afccd996]{height:calc(100vh - 150px);overflow:hidden}.corpus-item[data-v-afccd996]{flex-direction:column;align-items:flex-start}.event-item[data-v-afccd996]{align-items:flex-start}.event-time[data-v-afccd996]{margin-left:8px;color:#c0c4cc}.empty-state[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.worldview-list[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.worldview-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.worldview-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.worldview-content[data-v-afccd996]{flex:1;cursor:pointer}.worldview-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.worldview-header h4[data-v-afccd996]{margin:0 8px 0 0;font-size:14px;color:#303133;flex:1}.worldview-description[data-v-afccd996]{margin:6px 0;font-size:13px;color:#606266;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.worldview-description-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.worldview-description-truncated[data-v-afccd996]:hover{color:#303133}.worldview-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;margin-top:6px}.worldview-meta .create-time[data-v-afccd996]{font-size:12px;color:#909399}.worldview-meta .ai-generated[data-v-afccd996]{font-size:11px;color:#67c23a;background-color:#f0f9ff;padding:2px 6px;border-radius:10px;border:1px solid #b3d8ff}.worldview-actions[data-v-afccd996]{flex-shrink:0;margin-left:8px}.corpus-list[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.corpus-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:flex-start}.corpus-content[data-v-afccd996]{flex:1;text-align:left}.corpus-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.corpus-header[data-v-afccd996],.worldview-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.corpus-header h4[data-v-afccd996]{margin:0;font-size:14px;color:#303133}.corpus-preview[data-v-afccd996]{margin:8px 0;font-size:13px;color:#606266}.corpus-preview-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.corpus-preview-truncated[data-v-afccd996]:hover{color:#303133}.corpus-actions[data-v-afccd996]{display:flex;gap:4px}.events-timeline[data-v-afccd996]{max-height:calc(100vh - 190px);overflow-y:auto}.event-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;display:flex;justify-content:space-between;align-items:center}.event-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.event-marker[data-v-afccd996]{width:10px;height:10px;border-radius:50%;background-color:#409eff;margin-right:10px}.event-content[data-v-afccd996]{flex:1}.event-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.event-content h4[data-v-afccd996]{margin:0;font-size:14px;color:#303133}.event-actions[data-v-afccd996]{opacity:0;transition:opacity .3s}.event-item:hover .event-actions[data-v-afccd996]{opacity:1}.chapter-status-dropdown .el-select-dropdown__item[data-v-afccd996]{padding:6px 16px;font-size:12px}.chapter-status-dropdown .el-select-dropdown__item.selected[data-v-afccd996]{font-weight:600}.chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.chapter-meta .el-select[data-v-afccd996]{min-width:70px}.chapter-meta .el-select .el-input__wrapper[data-v-afccd996]{padding:0 8px;height:24px;font-size:12px}.new-optimize-container[data-v-afccd996]{max-height:70vh;overflow-y:auto}.optimize-config-card[data-v-afccd996],.optimize-result-card[data-v-afccd996]{height:600px;display:flex;flex-direction:column}.optimize-config-card .el-card__body[data-v-afccd996],.optimize-result-card .el-card__body[data-v-afccd996]{flex:1;overflow-y:auto}.prompt-selection[data-v-afccd996]{margin-bottom:20px}.prompt-selection h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px;font-weight:600}.prompt-list[data-v-afccd996]{display:flex;flex-direction:column;gap:8px}.prompt-item[data-v-afccd996]{padding:12px;border:1px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .3s}.prompt-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-item.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.prompt-title[data-v-afccd996]{font-size:13px;font-weight:600;color:#303133;margin-bottom:4px}.prompt-desc[data-v-afccd996]{font-size:11px;color:#606266;line-height:1.4}.custom-prompt[data-v-afccd996]{margin-bottom:20px}.custom-prompt h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px;font-weight:600}.original-content-preview[data-v-afccd996]{margin-bottom:20px}.original-content-preview h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px;font-weight:600}.content-preview[data-v-afccd996]{padding:12px;background-color:#f8f9fa;border-radius:6px;font-size:12px;color:#606266;line-height:1.5;max-height:120px;overflow-y:auto;word-wrap:break-word}.content-stats[data-v-afccd996]{margin-top:8px;font-size:11px;color:#909399}.streaming-area[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.streaming-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e4e7ed}.streaming-status[data-v-afccd996]{color:#409eff;font-size:14px;font-weight:500}.streaming-content-box[data-v-afccd996]{flex:1;background-color:#f8f9fa;border-radius:6px;padding:16px;overflow-y:auto;min-height:300px}.streaming-text[data-v-afccd996]{font-size:14px;line-height:1.8;color:#303133;white-space:pre-wrap;word-wrap:break-word}.result-area[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.result-content[data-v-afccd996]{flex:1;background-color:#fff;border:1px solid #e4e7ed;border-radius:6px;padding:16px;font-size:14px;line-height:1.8;color:#303133;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word;min-height:300px}.result-stats[data-v-afccd996]{margin-top:12px;display:flex;justify-content:space-between;font-size:12px;color:#909399}.empty-result[data-v-afccd996]{height:100%;display:flex;align-items:center;justify-content:center}.dialog-footer[data-v-afccd996]:has(.action-info){justify-content:space-between;align-items:center;padding:16px 0 0;border-top:1px solid #e4e7ed}.dialog-footer .action-info[data-v-afccd996]{display:flex;align-items:center;gap:8px;font-size:13px;color:#606266}.dialog-footer .action-buttons[data-v-afccd996]{display:flex;gap:12px}.streaming-content-area[data-v-afccd996]{margin-bottom:16px}.streaming-card[data-v-afccd996]{border:1px solid #67c23a;background-color:#f0f9ff}.streaming-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;font-weight:500;color:#67c23a}.streaming-content[data-v-afccd996]{max-height:300px;overflow-y:auto;padding:12px;background-color:#fff;border-radius:6px;border:1px solid #e4e7ed}.streaming-text[data-v-afccd996]{line-height:1.8;font-size:14px;color:#303133;white-space:pre-wrap;word-break:break-all}.streaming-text-plain[data-v-afccd996]{margin:0;line-height:1.6;font-size:13px;color:#606266;font-family:Courier New,monospace;white-space:pre-wrap;word-break:break-all}.streaming-content[data-v-afccd996]::-webkit-scrollbar{width:6px}.streaming-content[data-v-afccd996]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.streaming-content[data-v-afccd996]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.streaming-content[data-v-afccd996]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.section-desc[data-v-afccd996]{margin:0 0 12px;font-size:13px;color:#909399;line-height:1.4}.ai-button-group[data-v-afccd996]{display:flex;align-items:center}.prompt-dialog-content[data-v-afccd996]{max-height:600px;overflow-y:auto}.prompt-list h4[data-v-afccd996]{margin:0 0 16px;color:#303133;font-size:16px}.prompt-cards[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:20px}.prompt-card[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:8px;padding:12px;cursor:pointer;transition:all .3s;background-color:#fff}.prompt-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff;transform:translateY(-2px);box-shadow:0 4px 8px #409eff1a}.prompt-card.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.prompt-card-header h5[data-v-afccd996]{margin:0 0 8px;font-size:14px;color:#303133;font-weight:600}.prompt-card-description p[data-v-afccd996]{margin:0 0 8px;font-size:12px;color:#606266;line-height:1.4}.prompt-card-tags[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:4px}.prompt-card-tags .el-tag[data-v-afccd996]{font-size:11px;height:20px;line-height:18px}.empty-prompts[data-v-afccd996]{text-align:center;padding:40px 20px;color:#909399}.prompt-variables[data-v-afccd996]{margin:20px 0;padding:16px;background-color:#f9f9f9;border-radius:6px}.prompt-variables h4[data-v-afccd996]{margin:0 0 16px;color:#303133;font-size:14px}.final-prompt[data-v-afccd996]{margin-top:20px}.final-prompt h4[data-v-afccd996]{margin:0 0 12px;color:#303133;font-size:14px}.chapter-generate-content[data-v-afccd996]{max-height:70vh;overflow:hidden}.materials-section[data-v-afccd996],.prompt-section[data-v-afccd996]{height:500px;overflow-y:auto}.materials-section h4[data-v-afccd996],.prompt-section h4[data-v-afccd996]{margin:0 0 16px;color:#303133;font-size:16px;font-weight:600}.config-card[data-v-afccd996],.materials-card[data-v-afccd996],.prompt-selection-card[data-v-afccd996],.variables-card[data-v-afccd996],.preview-card[data-v-afccd996]{margin-bottom:16px}.materials-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.materials-count[data-v-afccd996]{font-size:12px;color:#409eff;background-color:#ecf5ff;padding:2px 8px;border-radius:12px;font-weight:600;border:1px solid #b3d8ff}.materials-list[data-v-afccd996]{max-height:200px;overflow-y:auto}.material-item[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:10px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px;cursor:pointer;transition:all .3s;background-color:#fff}.material-item[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.material-item.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.material-info[data-v-afccd996]{flex:1}.material-info h5[data-v-afccd996]{margin:0 0 4px;font-size:14px;color:#303133;font-weight:600}.material-info p[data-v-afccd996]{margin:0;font-size:12px;color:#606266;line-height:1.4}.material-tags[data-v-afccd996],.material-type[data-v-afccd996]{display:flex;gap:4px}.category-selection-card[data-v-afccd996]{margin-bottom:16px}.category-tabs[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:8px}.category-tab[data-v-afccd996]{display:flex;flex-direction:column;align-items:center;padding:8px 12px;border:1px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .3s;background-color:#fff;min-width:70px;text-align:center}.category-tab[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.category-tab.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.category-icon[data-v-afccd996]{font-size:16px;margin-bottom:4px}.category-name[data-v-afccd996]{font-size:11px;color:#606266;line-height:1.2}.category-tab.active .category-name[data-v-afccd996]{color:#409eff;font-weight:600}.prompt-cards-grid[data-v-afccd996]{display:grid;grid-template-columns:1fr;gap:8px;max-height:250px;overflow-y:auto}.prompt-card-small[data-v-afccd996]{border:1px solid #e4e7ed;border-radius:6px;padding:10px;cursor:pointer;transition:all .3s;background-color:#fff}.prompt-card-small[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.prompt-card-small.active[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.prompt-card-small h5[data-v-afccd996]{margin:0 0 6px;font-size:13px;color:#303133;font-weight:600}.prompt-card-small p[data-v-afccd996]{margin:0 0 6px;font-size:11px;color:#606266;line-height:1.3}.prompt-tags[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:4px}.prompt-tags .el-tag[data-v-afccd996]{font-size:10px;height:18px;line-height:16px}.variables-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.dialog-footer[data-v-afccd996]{display:flex;justify-content:flex-end;gap:12px}.context-variable-container[data-v-afccd996]{display:flex;flex-direction:column;gap:8px}.context-actions[data-v-afccd996]{display:flex;gap:8px;justify-content:flex-end}.context-chapter-option[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:4px 0}.context-chapter-option .chapter-title[data-v-afccd996]{font-size:13px;color:#303133;font-weight:500;flex:1}.context-chapter-option .chapter-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px}.context-chapter-option .word-count[data-v-afccd996]{font-size:11px;color:#909399}.context-tab-actions[data-v-afccd996]{display:flex;gap:8px}.batch-generate-content[data-v-afccd996]{max-height:70vh;overflow-y:auto}.config-section[data-v-afccd996],.streaming-section[data-v-afccd996],.results-section[data-v-afccd996]{margin-bottom:16px}.character-type-options[data-v-afccd996]{display:flex;gap:16px}.streaming-content-container[data-v-afccd996]{max-height:300px;overflow-y:auto;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafafa}.streaming-content[data-v-afccd996]{padding:16px;font-family:Courier New,monospace;font-size:14px;line-height:1.6;color:#303133;white-space:pre-wrap}.results-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center}.result-actions[data-v-afccd996]{display:flex;gap:8px}.generated-characters-grid[data-v-afccd996]{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:16px;max-height:400px;overflow-y:auto}.generated-character-card[data-v-afccd996]{border:2px solid #e4e7ed;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s;background-color:#fff}.generated-character-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.generated-character-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.character-header[data-v-afccd996]{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}.character-avatar-preview[data-v-afccd996]{flex-shrink:0}.character-avatar-preview .default-avatar[data-v-afccd996]{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}.character-basic-info[data-v-afccd996]{flex:1}.character-basic-info h4[data-v-afccd996]{margin:0 0 8px;font-size:16px;color:#303133;font-weight:600}.character-meta[data-v-afccd996]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.age-text[data-v-afccd996]{font-size:12px;color:#909399}.selection-indicator[data-v-afccd996]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.selected-icon[data-v-afccd996]{color:#409eff;font-size:18px}.character-details[data-v-afccd996]{border-top:1px solid #f0f0f0;padding-top:12px}.detail-item[data-v-afccd996]{margin-bottom:8px}.detail-item label[data-v-afccd996]{font-size:12px;color:#909399;font-weight:600;margin-bottom:4px;display:block}.detail-item p[data-v-afccd996]{margin:0;font-size:13px;color:#606266;line-height:1.4;max-height:40px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.character-tags-preview[data-v-afccd996]{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px}.character-tags-preview .el-tag[data-v-afccd996]{font-size:10px;height:18px;line-height:16px}.character-actions[data-v-afccd996],.world-actions[data-v-afccd996]{display:flex;gap:8px}.world-generate-content[data-v-afccd996]{max-height:70vh;overflow-y:auto}.world-type-options[data-v-afccd996]{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:8px;align-items:center}.world-type-options .el-checkbox[data-v-afccd996]{margin:0;white-space:nowrap;min-width:fit-content}.generated-settings-list[data-v-afccd996]{display:flex;flex-direction:column;gap:12px;max-height:400px;overflow-y:auto}.generated-setting-card[data-v-afccd996]{border:2px solid #e4e7ed;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s;background-color:#fff}.generated-setting-card[data-v-afccd996]:hover{border-color:#409eff;background-color:#f0f9ff}.generated-setting-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#ecf5ff;box-shadow:0 0 0 1px #409eff}.setting-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.setting-basic-info[data-v-afccd996]{flex:1}.setting-basic-info h4[data-v-afccd996]{margin:0 0 8px;font-size:16px;color:#303133;font-weight:600}.setting-content p[data-v-afccd996]{margin:0;font-size:14px;color:#606266;line-height:1.6;max-height:80px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}.streaming-status-card[data-v-afccd996]{margin-top:16px;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafafa}.streaming-header[data-v-afccd996]{padding:12px 16px;background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;border-radius:6px 6px 0 0}.streaming-title[data-v-afccd996]{font-weight:600;color:#303133}.streaming-content-display[data-v-afccd996]{padding:16px;max-height:200px;overflow-y:auto;font-family:Courier New,monospace;font-size:13px;line-height:1.6;color:#303133;white-space:pre-wrap}.event-content p[data-v-afccd996]{margin:0 0 4px;font-size:13px;color:#606266;line-height:1.4}.event-desc-truncated[data-v-afccd996]{cursor:help;transition:color .2s ease}.event-desc-truncated[data-v-afccd996]:hover{color:#303133}.event-meta[data-v-afccd996]{font-size:12px;color:#909399}.empty-editor[data-v-afccd996]{text-align:center;padding:80px 20px;color:#909399}.empty-icon[data-v-afccd996]{font-size:48px;margin-bottom:16px;opacity:.5}.selected-prompt-info[data-v-afccd996]{color:#409eff;font-size:12px;margin-left:5px}.ai-single-chapter-content[data-v-afccd996],.ai-batch-chapter-content[data-v-afccd996],.ai-optimize-content[data-v-afccd996]{padding:10px 0}.optimize-input-card[data-v-afccd996],.optimize-result-card[data-v-afccd996]{height:100%}.optimized-content[data-v-afccd996],.empty-result[data-v-afccd996]{padding:20px;text-align:center;color:#909399}.optimized-content .el-textarea[data-v-afccd996]{height:100%}.streaming-content-area[data-v-afccd996]{margin-top:20px;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafafa}.streaming-card[data-v-afccd996]{margin:0;border:none;background:transparent}.streaming-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;border-radius:6px 6px 0 0}.streaming-content[data-v-afccd996]{padding:16px;max-height:300px;overflow-y:auto}.streaming-text-plain[data-v-afccd996]{font-family:Courier New,monospace;font-size:13px;line-height:1.6;color:#303133;white-space:pre-wrap;margin:0}.streaming-text[data-v-afccd996]{font-size:14px;line-height:1.6;color:#303133;background-color:#fff;border:1px solid #e4e7ed;border-radius:6px;padding:12px;font-family:Consolas,Monaco,Courier New,monospace;white-space:pre-wrap;word-wrap:break-word;min-height:100px}.streaming-text[data-v-afccd996]:after{content:"▋";color:#409eff;animation:blink-afccd996 1s infinite}@keyframes blink-afccd996{0%,50%{opacity:1}51%,to{opacity:0}}.editor-panel .streaming-content-area[data-v-afccd996]{margin:16px 0;border:2px solid #409eff;border-radius:8px;background:linear-gradient(135deg,#f0f8ff 0%,#e6f3ff 100%)}.editor-panel .streaming-card[data-v-afccd996]{background:transparent;border:none}.editor-panel .streaming-header .streaming-title[data-v-afccd996]{color:#409eff;font-weight:600}.new-continue-container[data-v-afccd996]{height:600px;max-height:80vh}.continue-config-card[data-v-afccd996],.continue-result-card[data-v-afccd996]{height:100%;display:flex;flex-direction:column}.continue-config-card .el-card__body[data-v-afccd996],.continue-result-card .el-card__body[data-v-afccd996]{flex:1;overflow-y:auto;padding:16px}.continue-direction[data-v-afccd996]{margin-bottom:20px}.continue-direction h4[data-v-afccd996]{margin:0 0 12px;font-size:14px;color:var(--el-text-color-primary)}.continue-word-count[data-v-afccd996]{margin-bottom:20px}.continue-word-count h4[data-v-afccd996]{margin:0 0 12px;font-size:14px;color:var(--el-text-color-primary)}.word-count-tips[data-v-afccd996]{margin-top:8px;font-size:12px;color:var(--el-text-color-secondary)}.current-content-preview[data-v-afccd996]{margin-bottom:20px}.current-content-preview h4[data-v-afccd996]{margin:0 0 12px;font-size:14px;color:var(--el-text-color-primary)}.content-summary[data-v-afccd996]{padding:8px 12px;background-color:var(--el-bg-color-page);border:1px solid var(--el-border-color-light);border-radius:6px;font-size:13px;line-height:1.5;color:var(--el-text-color-regular);max-height:80px;overflow-y:auto}.streaming-content-box[data-v-afccd996],.result-content[data-v-afccd996]{max-height:400px;overflow-y:auto}.empty-result[data-v-afccd996]{min-height:300px}.materials-list[data-v-afccd996]{max-height:400px;overflow-y:auto}.chapter-material-card[data-v-afccd996]{padding:14px;border:1px solid #e1e8ed;border-radius:8px;margin-bottom:10px;cursor:pointer;transition:all .2s ease;background:#fafbfc;min-height:80px;position:relative}.chapter-material-card[data-v-afccd996]:hover{border-color:#409eff;box-shadow:0 2px 8px #409eff1a}.chapter-material-card.selected[data-v-afccd996]{border-color:#409eff;background-color:#e6f4ff}.chapter-material-header[data-v-afccd996]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px;min-height:32px;gap:8px}.chapter-material-name[data-v-afccd996]{font-weight:500;color:#303133;font-size:14px;flex:1;margin-right:8px;line-height:1.4;word-wrap:break-word;overflow-wrap:break-word;min-width:0}.chapter-material-tags[data-v-afccd996]{display:flex;gap:4px;flex-shrink:0;flex-wrap:wrap;align-items:flex-start}.chapter-material-desc[data-v-afccd996]{color:#666;font-size:12px;line-height:1.4;margin:4px 0;word-wrap:break-word;overflow-wrap:break-word}.chapter-material-content[data-v-afccd996]{margin-top:8px;padding-top:8px;border-top:1px solid #eee}.content-preview[data-v-afccd996]{color:#999;font-size:11px;line-height:1.3;font-style:italic;word-wrap:break-word;overflow-wrap:break-word;display:block;margin-top:4px}.custom-prompt-status[data-v-afccd996]{margin:16px 0}.custom-prompt-status .el-alert[data-v-afccd996]{border-radius:8px}.prompt-preview[data-v-afccd996]{margin-top:8px;font-size:13px;color:#67c23a;line-height:1.4;opacity:.9}.prompt-content-collapse[data-v-afccd996]{margin-top:12px;border:1px solid #e1f5fe;border-radius:6px;background-color:#f8fdff}.prompt-content-preview[data-v-afccd996]{padding:0}.prompt-content-header[data-v-afccd996]{margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #e8f4fd}.content-label[data-v-afccd996]{font-size:13px;font-weight:600;color:#409eff}.prompt-content-text[data-v-afccd996]{padding:12px;background-color:#fafcff;border:1px solid #e8f4fd;border-radius:4px;font-family:Courier New,Consolas,monospace;font-size:12px;line-height:1.6;color:#606266;white-space:pre-wrap;word-wrap:break-word;max-height:200px;overflow-y:auto;margin-bottom:16px}.final-prompt-section[data-v-afccd996]{margin-top:16px;padding-top:16px;border-top:1px solid #e8f4fd}.final-prompt[data-v-afccd996]{background-color:#f0f9ff;border-color:#b3e5fc;color:#01579b}.writing-tools[data-v-19a36dd6]{display:flex;flex-direction:column;gap:16px}.tool-card[data-v-19a36dd6]{margin-bottom:16px}.card-header[data-v-19a36dd6]{display:flex;justify-content:space-between;align-items:center}.header-buttons[data-v-19a36dd6]{display:flex;gap:8px}.characters-list[data-v-19a36dd6],.world-settings[data-v-19a36dd6],.inspirations-list[data-v-19a36dd6]{max-height:300px;overflow-y:auto}.character-item[data-v-19a36dd6],.setting-item[data-v-19a36dd6],.inspiration-item[data-v-19a36dd6]{display:flex;justify-content:space-between;align-items:flex-start;padding:12px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:8px}.character-info[data-v-19a36dd6],.setting-info[data-v-19a36dd6],.inspiration-content[data-v-19a36dd6]{flex:1;margin-right:12px}.character-info h4[data-v-19a36dd6],.setting-info h4[data-v-19a36dd6]{margin:0 0 8px;color:#303133}.character-info p[data-v-19a36dd6],.setting-info p[data-v-19a36dd6]{margin:0 0 8px;color:#606266;line-height:1.4}.character-tags[data-v-19a36dd6]{display:flex;gap:4px;flex-wrap:wrap}.progress-info[data-v-19a36dd6]{display:flex;flex-direction:column;gap:12px}.progress-item[data-v-19a36dd6]{display:flex;align-items:center;gap:8px}.progress-item span[data-v-19a36dd6]{min-width:100px;color:#606266}.inspiration-content p[data-v-19a36dd6]{margin:0 0 4px;color:#303133;line-height:1.4}.inspiration-content small[data-v-19a36dd6]{color:#909399}.empty-state[data-v-19a36dd6]{text-align:center;color:#909399;padding:40px 20px;font-style:italic}.article-stats[data-v-b4d8fda8]{max-height:70vh;overflow-y:auto}.no-content[data-v-b4d8fda8]{text-align:center;padding:40px;color:#909399}.empty-icon[data-v-b4d8fda8]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-b4d8fda8]{font-size:12px;margin-top:8px}.stats-content[data-v-b4d8fda8]{padding:0}.stats-section[data-v-b4d8fda8]{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #f0f0f0}.stats-section[data-v-b4d8fda8]:last-child{border-bottom:none;margin-bottom:0}.section-title[data-v-b4d8fda8]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.stat-card[data-v-b4d8fda8]{text-align:center;padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.stat-number[data-v-b4d8fda8]{font-size:24px;font-weight:700;color:#409eff;margin-bottom:4px}.stat-label[data-v-b4d8fda8]{font-size:12px;color:#909399}.sentiment-analysis[data-v-b4d8fda8]{space-y:16px}.sentiment-item[data-v-b4d8fda8]{display:flex;align-items:center;margin-bottom:16px}.sentiment-label[data-v-b4d8fda8]{margin-right:12px;font-weight:500}.sentiment-chart[data-v-b4d8fda8]{space-y:12px}.chart-item[data-v-b4d8fda8]{display:flex;align-items:center;margin-bottom:12px}.chart-label[data-v-b4d8fda8]{width:80px;font-size:14px;color:#606266}.chart-value[data-v-b4d8fda8]{margin-left:12px;font-size:14px;font-weight:500;color:#303133}.tags-container[data-v-b4d8fda8]{display:flex;flex-wrap:wrap;gap:8px}.tag-item[data-v-b4d8fda8]{margin:0}.category-item[data-v-b4d8fda8],.score-item[data-v-b4d8fda8]{display:flex;align-items:center;margin-bottom:12px}.category-label[data-v-b4d8fda8],.score-label[data-v-b4d8fda8]{margin-right:12px;font-weight:500}.score-display[data-v-b4d8fda8]{display:flex;align-items:center;gap:8px}.score-number[data-v-b4d8fda8]{font-size:14px;color:#909399}.suggestions[data-v-b4d8fda8]{space-y:16px}.suggestion-item[data-v-b4d8fda8]{display:flex;align-items:flex-start;margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:8px;border-left:4px solid #409eff}.suggestion-icon[data-v-b4d8fda8]{margin-right:12px;margin-top:2px;color:#409eff}.suggestion-content[data-v-b4d8fda8]{flex:1}.suggestion-title[data-v-b4d8fda8]{font-weight:500;margin-bottom:4px;color:#303133}.suggestion-text[data-v-b4d8fda8]{font-size:14px;color:#606266;line-height:1.5}.export-section[data-v-b4d8fda8]{text-align:center;padding-top:20px;border-top:1px solid #f0f0f0}.ai-analysis[data-v-b4d8fda8]{background:#f8f9fa;padding:16px;border-radius:8px;border-left:4px solid #409eff}.analysis-summary h4[data-v-b4d8fda8]{margin:0 0 8px;color:#303133;font-size:16px}.analysis-summary p[data-v-b4d8fda8]{margin:0;color:#606266;line-height:1.6}.analysis-section[data-v-b4d8fda8]{background:white;padding:12px;border-radius:6px;height:100%}.analysis-section h5[data-v-b4d8fda8]{margin:0 0 8px;color:#409eff;font-size:14px;font-weight:600}.analysis-section ul[data-v-b4d8fda8]{margin:0;padding-left:16px;color:#606266}.analysis-section li[data-v-b4d8fda8]{margin-bottom:4px;line-height:1.4}.mr-2[data-v-b4d8fda8]{margin-right:8px}[data-v-b4d8fda8] .el-progress-bar__outer{background-color:#f0f0f0}[data-v-b4d8fda8] .el-rate{display:flex;align-items:center}.corpus-manager[data-v-f543abf1]{max-height:70vh;overflow-y:auto}.add-corpus-section[data-v-f543abf1]{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #f0f0f0}.section-title[data-v-f543abf1]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.corpus-tabs[data-v-f543abf1]{margin-top:16px}.text-input-area[data-v-f543abf1]{padding:16px 0}.input-actions[data-v-f543abf1]{margin-top:12px;display:flex;gap:12px}.file-upload-area[data-v-f543abf1]{padding:16px 0}.uploaded-file[data-v-f543abf1]{margin-top:16px;padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.file-info[data-v-f543abf1]{display:flex;align-items:center;margin-bottom:12px}.file-icon[data-v-f543abf1]{margin-right:8px;color:#409eff}.file-name[data-v-f543abf1]{font-weight:500;margin-right:8px}.file-size[data-v-f543abf1]{color:#909399;font-size:12px}.file-actions[data-v-f543abf1]{display:flex;gap:8px}.list-header[data-v-f543abf1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.list-actions[data-v-f543abf1]{display:flex;align-items:center;gap:12px}.empty-corpus[data-v-f543abf1]{text-align:center;padding:40px;color:#909399}.empty-icon[data-v-f543abf1]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-f543abf1]{font-size:12px;margin-top:8px}.corpus-list[data-v-f543abf1]{space-y:12px}.corpus-item[data-v-f543abf1]{padding:16px;background:#fafafa;border-radius:8px;border:1px solid #e9ecef;margin-bottom:12px}.corpus-header[data-v-f543abf1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.corpus-meta[data-v-f543abf1]{display:flex;align-items:center;gap:12px;font-size:12px;color:#909399}.corpus-id[data-v-f543abf1]{font-weight:500;color:#409eff}.corpus-actions[data-v-f543abf1]{display:flex;gap:4px}.delete-btn[data-v-f543abf1],.delete-btn[data-v-f543abf1]:hover{color:#f56c6c}.corpus-content[data-v-f543abf1]{line-height:1.6;color:#303133}.content-preview[data-v-f543abf1]{white-space:pre-wrap;word-break:break-word}.expand-btn[data-v-f543abf1]{margin-top:8px}.pagination[data-v-f543abf1]{display:flex;justify-content:center;margin-top:20px}.full-content[data-v-f543abf1]{line-height:1.8;white-space:pre-wrap;word-break:break-word;max-height:400px;overflow-y:auto;padding:16px;background:#f8f9fa;border-radius:8px}[data-v-f543abf1] .el-upload-dragger{width:100%;height:120px}[data-v-f543abf1] .el-tabs__content{padding:0}.template-manager[data-v-97b66dfe]{max-height:70vh;overflow-y:auto}.add-template-section[data-v-97b66dfe]{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #f0f0f0}.section-title[data-v-97b66dfe]{margin:0 0 16px;font-size:16px;font-weight:600;color:#303133}.template-form[data-v-97b66dfe]{max-width:600px}.list-header[data-v-97b66dfe]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.list-actions[data-v-97b66dfe]{display:flex;align-items:center;gap:12px}.empty-templates[data-v-97b66dfe]{text-align:center;padding:40px;color:#909399}.empty-icon[data-v-97b66dfe]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-97b66dfe]{font-size:12px;margin-top:8px}.template-grid[data-v-97b66dfe]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.template-card[data-v-97b66dfe]{padding:16px;background:white;border-radius:8px;border:1px solid #e9ecef;transition:all .3s ease}.template-card[data-v-97b66dfe]:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.system-template[data-v-97b66dfe]{background:#f8f9fa}.template-header[data-v-97b66dfe]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.template-title[data-v-97b66dfe]{display:flex;align-items:center;gap:8px}.template-name[data-v-97b66dfe]{font-weight:600;font-size:16px;color:#303133}.template-actions[data-v-97b66dfe]{display:flex;gap:4px}.delete-btn[data-v-97b66dfe],.delete-btn[data-v-97b66dfe]:hover{color:#f56c6c}.template-description[data-v-97b66dfe]{color:#606266;margin-bottom:12px;line-height:1.5}.template-details[data-v-97b66dfe]{display:flex;gap:16px;margin-bottom:12px}.detail-item[data-v-97b66dfe]{font-size:12px}.detail-label[data-v-97b66dfe]{color:#909399;margin-right:4px}.detail-value[data-v-97b66dfe]{color:#303133;font-weight:500}.template-keywords[data-v-97b66dfe]{margin-bottom:12px}.keywords-label[data-v-97b66dfe]{font-size:12px;color:#909399;margin-bottom:6px}.keywords-list[data-v-97b66dfe]{display:flex;flex-wrap:wrap;gap:4px}.keyword-tag[data-v-97b66dfe]{margin:0}.template-prompt[data-v-97b66dfe]{margin-top:12px;padding-top:12px;border-top:1px solid #f0f0f0}.prompt-label[data-v-97b66dfe]{font-size:12px;color:#909399;margin-bottom:6px}.prompt-content[data-v-97b66dfe]{font-size:12px;color:#606266;line-height:1.4}[data-v-97b66dfe] .el-form-item{margin-bottom:18px}[data-v-97b66dfe] .el-form-item__label{font-weight:500}.summary-generator[data-v-778cce28]{width:100%}.card-header[data-v-778cce28]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.summary-content[data-v-778cce28]{min-height:200px}.source-info[data-v-778cce28]{margin-bottom:16px;padding:12px;background-color:#f8f9fa;border-radius:6px}.summary-settings[data-v-778cce28]{margin-bottom:20px;padding:16px;border:1px solid #e4e7ed;border-radius:6px;background-color:#fafbfc}.setting-label[data-v-778cce28]{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:#606266}.summary-result[data-v-778cce28]{margin-top:20px}.summary-result h4[data-v-778cce28]{margin:0 0 12px;color:#303133;font-size:16px}.summary-text[data-v-778cce28]{padding:16px;background-color:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;line-height:1.6;color:#1e40af;white-space:pre-wrap;margin-bottom:12px}.summary-actions[data-v-778cce28]{display:flex;gap:8px;justify-content:flex-end}.empty-state[data-v-778cce28],.no-summary[data-v-778cce28]{padding:40px 20px;text-align:center}[data-v-778cce28] .el-empty__description{color:#909399}.chapter-manager[data-v-485ca3e0]{display:flex;gap:20px;height:100%}.chapter-list-section[data-v-485ca3e0]{flex:1;min-width:0}.chapter-detail-section[data-v-485ca3e0]{width:400px;flex-shrink:0}.section-header[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.header-actions[data-v-485ca3e0]{display:flex;gap:8px}.chapter-stats[data-v-485ca3e0]{margin-bottom:20px}.stat-item[data-v-485ca3e0]{text-align:center;padding:16px;background:#f8f9fa;border-radius:8px}.stat-number[data-v-485ca3e0]{font-size:24px;font-weight:700;color:#409eff;margin-bottom:4px}.stat-label[data-v-485ca3e0]{font-size:14px;color:#666}.chapters-grid[data-v-485ca3e0]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.chapter-card[data-v-485ca3e0]{border:1px solid #e4e7ed;border-radius:8px;padding:16px;cursor:pointer;transition:all .3s;background:white}.chapter-card[data-v-485ca3e0]:hover{border-color:#409eff;box-shadow:0 2px 12px #0000001a}.chapter-card.selected[data-v-485ca3e0]{border-color:#409eff;background:#f0f9ff}.chapter-header[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chapter-number[data-v-485ca3e0]{font-size:12px;color:#909399;background:#f4f4f5;padding:2px 8px;border-radius:4px}.chapter-title[data-v-485ca3e0]{font-size:16px;font-weight:700;margin-bottom:8px;color:#303133}.chapter-summary[data-v-485ca3e0]{font-size:14px;color:#606266;margin-bottom:12px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chapter-meta[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#909399}.meta-item[data-v-485ca3e0]{display:flex;align-items:center;gap:4px}.detail-header[data-v-485ca3e0]{display:flex;justify-content:space-between;align-items:center}.detail-actions[data-v-485ca3e0]{display:flex;gap:8px}.chapter-content[data-v-485ca3e0]{max-height:600px;overflow-y:auto}.content-section[data-v-485ca3e0]{margin-bottom:20px}.content-section h4[data-v-485ca3e0]{margin-bottom:8px;color:#303133}.content-preview[data-v-485ca3e0]{background:#f8f9fa;padding:12px;border-radius:4px;max-height:200px;overflow-y:auto;line-height:1.6}.empty-state[data-v-485ca3e0]{text-align:center;padding:40px}.mr-2[data-v-485ca3e0]{margin-right:8px}.backup-manager[data-v-946a913e]{padding:20px}.backup-header[data-v-946a913e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header-actions[data-v-946a913e]{display:flex;gap:12px}.backup-stats[data-v-946a913e]{margin-bottom:20px}.stat-card[data-v-946a913e]{display:flex;align-items:center;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 8px #0000001a;transition:transform .2s}.stat-card[data-v-946a913e]:hover{transform:translateY(-2px)}.stat-icon[data-v-946a913e]{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);display:flex;align-items:center;justify-content:center;margin-right:16px;font-size:20px;color:#fff}.stat-content[data-v-946a913e]{flex:1}.stat-number[data-v-946a913e]{font-size:24px;font-weight:700;color:#333;margin-bottom:4px}.stat-label[data-v-946a913e]{font-size:14px;color:#666}.auto-backup-card[data-v-946a913e]{margin-bottom:20px}.card-header[data-v-946a913e]{display:flex;justify-content:space-between;align-items:center}.auto-backup-settings[data-v-946a913e]{padding-top:16px}.setting-item[data-v-946a913e]{display:flex;flex-direction:column;gap:8px}.setting-item label[data-v-946a913e]{font-size:14px;color:#606266;font-weight:500}.next-backup-time[data-v-946a913e]{font-size:14px;color:#409eff;font-weight:500}.list-header[data-v-946a913e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.list-actions[data-v-946a913e]{display:flex;gap:12px;align-items:center}.backup-name[data-v-946a913e]{display:flex;align-items:center;gap:8px}.table-actions[data-v-946a913e]{display:flex;gap:8px}.table-actions .danger[data-v-946a913e]{color:#f56c6c}.backup-details[data-v-946a913e]{max-height:500px;overflow-y:auto}.detail-section[data-v-946a913e]{margin-bottom:24px}.detail-section h4[data-v-946a913e]{margin-bottom:12px;color:#303133}.content-list[data-v-946a913e]{display:flex;flex-direction:column;gap:8px}.content-item[data-v-946a913e]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#f8f9fa;border-radius:4px}.content-size[data-v-946a913e]{margin-left:auto;font-size:12px;color:#909399}.empty-state[data-v-946a913e]{text-align:center;padding:40px;color:#909399}.home-container[data-v-2dd0d183]{height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}.top-nav[data-v-2dd0d183]{height:60px;background:white;border-bottom:1px solid #e4e7ed;display:flex;align-items:center;justify-content:space-between;padding:0 20px;box-shadow:0 2px 4px #0000001a}.nav-left .app-title[data-v-2dd0d183]{margin:0;font-size:20px;color:#303133;display:flex;align-items:center}.nav-right[data-v-2dd0d183]{display:flex;gap:12px}.main-content[data-v-2dd0d183]{flex:1;display:flex;gap:16px;padding:16px;overflow:hidden}.left-panel[data-v-2dd0d183]{width:320px;flex-shrink:0;display:flex;flex-direction:column;gap:0;height:calc(100vh - 92px)}.center-panel[data-v-2dd0d183]{flex:1;min-width:0}.right-panel[data-v-2dd0d183]{width:320px;flex-shrink:0}.input-card[data-v-2dd0d183]{flex-shrink:0}.outline-card[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column;min-height:0}.editor-card[data-v-2dd0d183],.result-card[data-v-2dd0d183]{height:100%;display:flex;flex-direction:column}.generation-status[data-v-2dd0d183]{margin-bottom:16px}.status-content[data-v-2dd0d183]{display:flex;align-items:center;gap:8px}.rotating[data-v-2dd0d183]{animation:rotate-2dd0d183 2s linear infinite}@keyframes rotate-2dd0d183{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.card-header[data-v-2dd0d183]{display:flex;justify-content:space-between;align-items:center;font-weight:600}.form-label[data-v-2dd0d183]{display:block;margin-bottom:8px;font-weight:500;color:#606266}.generation-settings[data-v-2dd0d183]{margin-top:8px}.setting-label[data-v-2dd0d183]{font-size:12px;color:#909399;text-align:center;margin-top:4px}.editor-container[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column}.editor-wrapper[data-v-2dd0d183]{flex:1;border:1px solid #ccc;border-radius:4px;overflow:hidden}.editor-wrapper .w-e-toolbar[data-v-2dd0d183]{border-bottom:1px solid #e4e7ed!important}.editor-wrapper .w-e-text-container[data-v-2dd0d183]{border:none!important}.editor-toolbar[data-v-2dd0d183]{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid #e4e7ed}.editor-stats[data-v-2dd0d183]{font-size:14px;color:#909399}.editor-actions[data-v-2dd0d183]{display:flex;gap:8px}.result-container[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column;height:500px}.generated-content[data-v-2dd0d183]{flex:1;overflow-y:auto;max-height:100%}.content-text[data-v-2dd0d183]{line-height:1.8;color:#303133;white-space:pre-wrap;word-break:break-word;padding:10px}.empty-result[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#909399}.empty-icon[data-v-2dd0d183]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-tip[data-v-2dd0d183]{font-size:12px;margin-top:8px}[data-v-2dd0d183] .el-card__body{flex:1;display:flex;flex-direction:column;padding:16px}[data-v-2dd0d183] .left-panel .el-tabs{height:100%;display:flex;flex-direction:column}[data-v-2dd0d183] .left-panel .el-tabs__content{flex:1;overflow:hidden}[data-v-2dd0d183] .left-panel .el-tab-pane{height:100%;overflow-y:auto;padding-right:8px}.left-panel .el-card[data-v-2dd0d183]{margin-bottom:16px}.left-panel .el-card[data-v-2dd0d183]:last-child{margin-bottom:0}.outline-card[data-v-2dd0d183]{min-height:250px}.chapters-card[data-v-2dd0d183]{min-height:300px}.ai-chat-card[data-v-2dd0d183]{min-height:350px}.outline-container[data-v-2dd0d183]{flex:1;display:flex;flex-direction:column}.outline-container .el-textarea[data-v-2dd0d183]{flex:1}.outline-container .el-textarea__inner[data-v-2dd0d183]{height:100%!important;min-height:200px}.chapters-container[data-v-2dd0d183]{display:flex;flex-direction:column;gap:16px}.chapters-list[data-v-2dd0d183]{display:flex;flex-direction:column;gap:8px;max-height:200px;overflow-y:auto}.chapter-item[data-v-2dd0d183]{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid #e4e7ed;border-radius:6px;cursor:pointer;transition:all .3s}.chapter-item[data-v-2dd0d183]:hover{border-color:#409eff;background-color:#f0f9ff}.chapter-item.selected[data-v-2dd0d183]{border-color:#409eff;background-color:#ecf5ff}.chapter-item.completed[data-v-2dd0d183]{background-color:#f0f9ff}.chapter-title[data-v-2dd0d183]{font-weight:500;color:#303133}.chapter-detail[data-v-2dd0d183]{border:1px solid #e4e7ed;border-radius:6px;padding:16px;background-color:#fafafa}.chapter-content h4[data-v-2dd0d183]{margin:0 0 8px;color:#409eff}.chapter-content p[data-v-2dd0d183]{margin:0 0 16px;color:#606266;line-height:1.6}.generated-content[data-v-2dd0d183]{border-top:1px solid #e4e7ed;padding-top:16px}.generated-content h5[data-v-2dd0d183]{margin:0 0 8px;color:#67c23a}.generated-text[data-v-2dd0d183]{background-color:#fff;border:1px solid #e4e7ed;border-radius:4px;padding:12px;max-height:200px;overflow-y:auto;white-space:pre-wrap;line-height:1.6;color:#303133}.ai-chat-container[data-v-2dd0d183]{display:flex;flex-direction:column;height:300px}.chat-history[data-v-2dd0d183]{flex:1;overflow-y:auto;padding:8px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:12px;background-color:#fafafa}.chat-message[data-v-2dd0d183]{margin-bottom:12px;padding:8px 12px;border-radius:8px;max-width:80%}.user-message[data-v-2dd0d183]{background-color:#409eff;color:#fff;margin-left:auto;text-align:right}.ai-message[data-v-2dd0d183]{background-color:#f0f0f0;color:#303133;margin-right:auto}.message-content[data-v-2dd0d183]{margin-bottom:4px;line-height:1.4;white-space:pre-wrap}.message-time[data-v-2dd0d183]{font-size:12px;opacity:.7}.empty-chat[data-v-2dd0d183]{text-align:center;color:#909399;padding:40px 20px;font-style:italic}.chat-input[data-v-2dd0d183]{margin-top:auto}[data-v-2dd0d183] .el-textarea__inner{resize:none}.genre-management[data-v-d7a56fae]{padding:0}.page-header[data-v-d7a56fae]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;padding:24px;background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a}.header-content h1[data-v-d7a56fae]{margin:0 0 8px;font-size:24px;color:#303133}.header-content p[data-v-d7a56fae]{margin:0;color:#606266;font-size:14px}.genres-grid[data-v-d7a56fae]{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px;padding:0 24px}.genre-item[data-v-d7a56fae]{border:none;transition:all .3s}.genre-item[data-v-d7a56fae]:hover{transform:translateY(-2px);box-shadow:0 8px 25px #00000026}.genre-header[data-v-d7a56fae]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.genre-info[data-v-d7a56fae]{flex:1}.genre-name[data-v-d7a56fae]{margin:0 0 8px;font-size:18px;font-weight:600;color:#303133}.genre-actions[data-v-d7a56fae]{display:flex;gap:8px}.genre-description[data-v-d7a56fae]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border-left:3px solid #409eff}.genre-description p[data-v-d7a56fae]{margin:0;color:#606266;line-height:1.6}.genre-tags[data-v-d7a56fae]{margin-bottom:16px;min-height:32px}.genre-meta[data-v-d7a56fae]{display:flex;gap:16px;font-size:12px;color:#909399}.meta-item[data-v-d7a56fae]{display:flex;align-items:center;gap:4px}.tags-input-section[data-v-d7a56fae]{width:100%}.tags-display[data-v-d7a56fae]{margin-top:8px}.form-tip[data-v-d7a56fae]{font-size:12px;color:#909399;margin-top:4px}.empty-state[data-v-d7a56fae]{padding:60px 24px;text-align:center}.dialog-footer[data-v-d7a56fae]{text-align:right}@media (max-width: 768px){.genres-grid[data-v-d7a56fae]{grid-template-columns:1fr;padding:0 16px}.page-header[data-v-d7a56fae]{flex-direction:column;gap:16px;align-items:stretch;padding:16px}}.tools-library[data-v-ef77a6b1]{max-width:1200px;margin:0 auto}.tools-grid[data-v-ef77a6b1]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;margin-bottom:40px}.tool-card[data-v-ef77a6b1]{background:white;border-radius:12px;padding:24px;box-shadow:0 2px 12px #0000001a;cursor:pointer;transition:all .3s ease;border:1px solid #e4e7ed}.tool-card[data-v-ef77a6b1]:hover{transform:translateY(-4px);box-shadow:0 8px 24px #00000026;border-color:#409eff}.tool-icon[data-v-ef77a6b1]{font-size:48px;text-align:center;margin-bottom:16px}.tool-card h3[data-v-ef77a6b1]{font-size:18px;color:#2c3e50;margin-bottom:8px;text-align:center}.tool-card p[data-v-ef77a6b1]{font-size:14px;color:#7f8c8d;text-align:center;line-height:1.5}.tool-dialog .tool-content[data-v-ef77a6b1]{padding:20px 0}.tool-form[data-v-ef77a6b1]{margin-bottom:24px}.tool-actions[data-v-ef77a6b1]{text-align:center;margin-bottom:24px}.tool-actions .el-button[data-v-ef77a6b1]{margin:0 8px}.generating-status[data-v-ef77a6b1]{margin:16px 0;text-align:center}.status-text[data-v-ef77a6b1]{display:block;margin-top:8px;color:#606266;font-size:14px}.tool-result[data-v-ef77a6b1]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.tool-result h4[data-v-ef77a6b1]{margin-top:0;margin-bottom:16px;color:#2c3e50}.result-content-wrapper[data-v-ef77a6b1]{margin-bottom:16px}.result-textarea[data-v-ef77a6b1]{width:100%}.result-textarea[data-v-ef77a6b1] .el-textarea__inner{background:white;border:1px solid #e4e7ed;border-radius:6px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;line-height:1.6;resize:vertical}.result-actions[data-v-ef77a6b1]{text-align:center;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.result-actions .el-button[data-v-ef77a6b1]{margin:4px}.tool-form .el-select[data-v-ef77a6b1]{width:100%}.tool-form .el-select .el-tag[data-v-ef77a6b1]{max-width:120px}.tool-form .el-form-item[data-v-ef77a6b1]{margin-bottom:18px}.prompt-option[data-v-ef77a6b1]{padding:8px 0}.prompt-option-title[data-v-ef77a6b1]{font-weight:500;color:#303133;margin-bottom:4px}.prompt-option-desc[data-v-ef77a6b1]{font-size:12px;color:#909399;line-height:1.4}.character-count-hint[data-v-ef77a6b1]{margin-top:5px;font-size:12px}.valid-hint[data-v-ef77a6b1]{color:#67c23a}.invalid-hint[data-v-ef77a6b1]{color:#f56c6c}@media (max-width: 768px){.tools-grid[data-v-ef77a6b1]{grid-template-columns:1fr}.tool-dialog[data-v-ef77a6b1]{width:95%!important}.result-actions[data-v-ef77a6b1]{flex-direction:column;align-items:center}.result-actions .el-button[data-v-ef77a6b1]{width:100%;max-width:200px}}.short-story-page[data-v-33d93414]{width:100%;height:100vh;padding:20px;box-sizing:border-box;background:#f5f7fa}.short-story-page[data-v-33d93414]{width:100%;height:100vh;display:flex;flex-direction:column;padding:20px;box-sizing:border-box;background:#f5f7fa}.page-tabs[data-v-33d93414]{flex-shrink:0;margin-bottom:20px}.page-content[data-v-33d93414]{flex:1;overflow:hidden}.workspace[data-v-33d93414]{height:100%}.workspace-layout[data-v-33d93414]{display:flex;gap:20px;height:100%}.config-sidebar[data-v-33d93414]{width:340px;flex-shrink:0;background:white;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a;display:flex;flex-direction:column;overflow:hidden}.config-header h3[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px;font-weight:600}.generate-btn[data-v-33d93414]{width:100%;margin-bottom:20px;height:40px;font-weight:500}.config-form[data-v-33d93414]{flex:1;overflow-y:auto;padding-right:4px;padding-top:8px}.config-section[data-v-33d93414]{margin-bottom:20px;padding:16px;background:#fafbfc;border-radius:8px;border:1px solid #e4e7ed}.section-title[data-v-33d93414]{font-size:14px;font-weight:600;color:#2c3e50;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e4e7ed}.section-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e4e7ed}.section-actions[data-v-33d93414]{display:flex;gap:8px}.form-grid[data-v-33d93414]{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;align-items:start}.form-item[data-v-33d93414]{display:flex;flex-direction:column}.form-item.full-width[data-v-33d93414]{grid-column:1 / -1}.form-item label[data-v-33d93414]{font-size:12px;font-weight:500;color:#606266;margin-bottom:6px;line-height:1.2}.form-item .el-input[data-v-33d93414],.form-item .el-select[data-v-33d93414],.form-item .el-input-number[data-v-33d93414]{width:100%}.age-input[data-v-33d93414]{display:flex;align-items:center;gap:8px;height:24px}.age-display[data-v-33d93414]{min-width:30px;text-align:center;font-weight:500;color:#2c3e50;font-size:14px}.item-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.selected-template[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding:6px 10px;background:#f0f9ff;border-radius:4px;font-size:12px}.validation-tip[data-v-33d93414]{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#fef0f0;border:1px solid #fbc4c4;border-radius:6px;font-size:12px;color:#f56c6c}.advanced-config[data-v-33d93414]{margin-top:16px;border:1px solid #e4e7ed;border-radius:8px;overflow:visible}.advanced-config .el-collapse-item__header[data-v-33d93414]{height:40px;line-height:40px;font-size:13px;font-weight:500;padding:0 16px;background:#f8f9fa;border-bottom:1px solid #e4e7ed}.advanced-config .el-collapse-item__content[data-v-33d93414]{padding:16px;background:#fafbfc;min-height:200px;max-height:none}.advanced-config .el-collapse-item__wrap[data-v-33d93414]{border-bottom:none;overflow:visible}.advanced-config .el-collapse-item[data-v-33d93414]{border-bottom:none}.advanced-config .form-grid[data-v-33d93414]{margin-bottom:16px}.advanced-config .full-width[data-v-33d93414]{margin-top:16px}.config-scroll-container[data-v-33d93414]{flex:1;overflow:hidden}.config-sidebar .config-header[data-v-33d93414]{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;flex-shrink:0}.header-title-row[data-v-33d93414]{display:flex;justify-content:center;align-items:center}.header-actions-row[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.secondary-actions[data-v-33d93414]{display:flex;gap:6px;justify-content:center}.primary-action[data-v-33d93414]{display:flex}.config-sidebar .config-header h3[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px}.config-manager-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.config-manager-container[data-v-33d93414]{height:600px;overflow:hidden;display:flex;flex-direction:column}.config-tabs[data-v-33d93414]{height:100%;display:flex;flex-direction:column}.config-tabs[data-v-33d93414] .el-tabs__header{flex-shrink:0;margin-bottom:20px;order:-1;border-bottom:1px solid #e4e7ed}.config-tabs[data-v-33d93414] .el-tabs__nav-wrap{margin-bottom:0;background:white}.config-tabs[data-v-33d93414] .el-tabs__content{flex:1;overflow:hidden;padding:0}.config-tabs[data-v-33d93414] .el-tabs__item{padding:0 20px;height:40px;line-height:40px}.config-tab-content[data-v-33d93414]{height:100%;display:flex;flex-direction:column;padding:0 10px}.tab-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid #ebeef5}.tab-header h4[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px}.config-list[data-v-33d93414]{flex:1;overflow-y:auto;padding-right:8px}.config-item-row[data-v-33d93414]{display:flex;gap:12px;align-items:center;margin-bottom:12px;padding:12px;background:#f8f9fa;border-radius:6px;border:1px solid #e9ecef}.config-input[data-v-33d93414]{flex:1}.description-input[data-v-33d93414]{flex:2}.config-item-row .el-button[data-v-33d93414]{margin-left:8px}.dialog-footer[data-v-33d93414]{display:flex;justify-content:flex-end;gap:10px}.config-header .header-row[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.required-tip[data-v-33d93414]{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#fef0f0;border:1px solid #fbc4c4;border-radius:4px;font-size:12px;color:#f56c6c;margin-top:8px}.config-form[data-v-33d93414]{flex:1;padding:16px 0;display:flex;flex-direction:column;gap:16px;margin-top:6px}.form-row[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.form-row.two-cols[data-v-33d93414]{flex-direction:row;gap:12px}.form-row.two-cols[data-v-33d93414]>*{flex:1}.prompt-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:500;color:#2c3e50;margin-bottom:4px}.selected-template[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding:6px 8px;background:#f0f9ff;border-radius:4px;font-size:12px}.reference-list[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.reference-item[data-v-33d93414]{border:1px solid #e1e5e9;border-radius:4px;padding:8px;background:#fafbfc}.ref-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12px;font-weight:500;color:#606266}.config-content[data-v-33d93414]{padding-bottom:16px}.quick-config[data-v-33d93414]{display:flex;flex-direction:column;gap:16px}.basic-selects[data-v-33d93414]{display:flex;flex-direction:column;gap:12px}.select-row[data-v-33d93414]{display:flex;gap:12px}.select-item[data-v-33d93414]{flex:1;display:flex;flex-direction:column;gap:4px}.select-item label[data-v-33d93414]{font-size:12px;color:#606266;font-weight:500}.quick-inputs .input-row[data-v-33d93414]{display:flex;gap:12px}.prompt-area[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.prompt-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#606266;font-weight:500}.unified-prompt-input[data-v-33d93414]{border-radius:4px}.unified-prompt-input .el-textarea__inner[data-v-33d93414]{line-height:1.5;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif}.advanced-config[data-v-33d93414]{padding:10px}.generate-section[data-v-33d93414]{text-align:center;padding:60px 0}.content-panel[data-v-33d93414]{flex:1;background:white;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a;display:flex;flex-direction:column;overflow:hidden;position:relative}.panel-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-shrink:0}.panel-header h3[data-v-33d93414]{margin:0;color:#2c3e50}.content-body[data-v-33d93414]{flex:1;position:relative}.story-result[data-v-33d93414],.story-editor[data-v-33d93414]{flex:1;display:flex;flex-direction:column;overflow:hidden}.story-textarea[data-v-33d93414]{flex:1;display:flex;flex-direction:column}.content-footer[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-top:1px solid #e4e7ed;margin-top:16px;flex-shrink:0}.word-count[data-v-33d93414]{margin:0}.footer-actions[data-v-33d93414]{display:flex;gap:8px}.add-custom-item[data-v-33d93414]{display:flex;align-items:center;justify-content:center;border:1px dashed #c0c4cc;border-radius:6px;padding:12px;cursor:pointer;transition:all .3s;margin-top:8px;background-color:#f5f7fa}.add-custom-item[data-v-33d93414]:hover{border-color:#409eff;background-color:#ecf5ff}.add-custom-item .el-icon[data-v-33d93414]{margin-right:8px;font-size:16px;color:#909399}.add-custom-item:hover .el-icon[data-v-33d93414]{color:#409eff}@media (max-width: 768px){.story-header[data-v-33d93414]{flex-direction:column;gap:16px}.story-actions[data-v-33d93414]{flex-wrap:wrap;justify-content:center}}.config-section[data-v-33d93414]{padding:16px}.config-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.config-header h4[data-v-33d93414]{margin:0;color:#2c3e50;font-size:16px}.config-list[data-v-33d93414]{display:flex;flex-direction:column;gap:12px;max-height:500px;overflow-y:auto}.config-item[data-v-33d93414]{display:flex;gap:8px;align-items:center;padding:12px;border:1px solid #e4e7ed;border-radius:6px;background:#fafbfc;transition:all .3s}.config-item[data-v-33d93414]:hover{border-color:#c6e2ff;background:#ecf5ff}.config-item .el-input[data-v-33d93414]{flex:1}.config-item .el-input[data-v-33d93414]:nth-child(3){flex:2}.config-item .el-button[data-v-33d93414]{flex-shrink:0}.dialog-footer[data-v-33d93414]{display:flex;justify-content:flex-end;gap:8px}.empty-config[data-v-33d93414]{text-align:center;padding:40px 20px;color:#909399}.empty-config .el-icon[data-v-33d93414]{font-size:48px;margin-bottom:16px}.prompt-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.prompt-actions[data-v-33d93414]{display:flex;gap:8px}.selected-template[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;margin-bottom:12px}.template-info[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:4px}.template-title[data-v-33d93414]{font-weight:500;color:#1e40af}.template-description[data-v-33d93414]{font-size:12px;color:#64748b;line-height:1.4}.prompt-selector[data-v-33d93414]{display:flex;gap:20px;min-height:500px}.prompt-list[data-v-33d93414]{flex:1;max-height:500px;overflow-y:auto}.prompt-grid[data-v-33d93414]{display:grid;grid-template-columns:1fr;gap:12px}.prompt-card[data-v-33d93414]{border:1px solid #e5e7eb;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s;background:white}.prompt-card[data-v-33d93414]:hover{border-color:#3b82f6;box-shadow:0 2px 8px #3b82f61a}.prompt-card.active[data-v-33d93414]{border-color:#3b82f6;background:#eff6ff;box-shadow:0 2px 8px #3b82f626}.prompt-card-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.prompt-card-header h5[data-v-33d93414]{margin:0;font-size:14px;font-weight:500;color:#1f2937}.selected-icon[data-v-33d93414]{color:#3b82f6;font-size:16px}.prompt-card-description[data-v-33d93414]{margin-bottom:12px}.prompt-card-description p[data-v-33d93414]{margin:0;font-size:12px;color:#6b7280;line-height:1.4}.prompt-card-tags[data-v-33d93414]{display:flex;flex-wrap:wrap;gap:4px}.prompt-preview[data-v-33d93414]{flex:1;border-left:1px solid #e5e7eb;padding-left:20px}.prompt-preview h4[data-v-33d93414]{margin:0 0 16px;color:#1f2937;font-size:16px}.preview-content[data-v-33d93414]{height:calc(100% - 40px)}.prompt-content-editor[data-v-33d93414]{height:100%}.prompt-content-editor .el-textarea__inner[data-v-33d93414]{height:100%!important;resize:none;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.5}.empty-prompts[data-v-33d93414]{text-align:center;padding:60px 20px;color:#6b7280}.empty-prompts .el-empty[data-v-33d93414]{padding:20px}.continue-direction[data-v-33d93414]{display:flex;flex-direction:column;gap:20px}.direction-input[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.direction-input label[data-v-33d93414]{font-weight:500;color:#2c3e50;font-size:14px}.direction-tips[data-v-33d93414]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:16px}.direction-tips h4[data-v-33d93414]{margin:0 0 12px;color:#495057;font-size:14px;font-weight:500}.direction-tips ul[data-v-33d93414]{margin:0;padding-left:20px}.direction-tips li[data-v-33d93414]{color:#6c757d;font-size:13px;line-height:1.5;margin-bottom:4px}.direction-tips li[data-v-33d93414]:last-child{margin-bottom:0}.optimize-dialog[data-v-33d93414]{display:flex;flex-direction:column;gap:20px}.selected-content h4[data-v-33d93414],.optimize-direction h4[data-v-33d93414],.optimize-result h4[data-v-33d93414]{margin:0 0 8px;color:#2c3e50;font-size:14px;font-weight:600}.selected-text[data-v-33d93414]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#495057;max-height:120px;overflow-y:auto}.optimize-actions[data-v-33d93414]{text-align:center}.optimized-text[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#1e40af;max-height:200px;overflow-y:auto;scroll-behavior:smooth}.optimizing-placeholder[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-style:italic}.optimizing-placeholder .el-icon[data-v-33d93414]{font-size:16px}.optimized-content[data-v-33d93414]{white-space:pre-wrap;word-wrap:break-word}.modern-continue-dialog[data-v-33d93414]{border-radius:16px;overflow:hidden}.modern-continue-dialog .el-dialog__header[data-v-33d93414]{padding:0;margin:0;border-bottom:1px solid #f0f0f0}.modern-continue-dialog .el-dialog__body[data-v-33d93414]{padding:24px;background:#fafbfc}.modern-continue-dialog .el-dialog__footer[data-v-33d93414]{padding:20px 24px;background:#fff;border-top:1px solid #f0f0f0}.dialog-header[data-v-33d93414]{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff}.header-left[data-v-33d93414]{display:flex;align-items:center;gap:16px}.header-icon[data-v-33d93414]{width:48px;height:48px;background:rgba(255,255,255,.2);border-radius:12px;display:flex;align-items:center;justify-content:center}.header-text h3[data-v-33d93414]{margin:0;font-size:20px;font-weight:600}.header-text p[data-v-33d93414]{margin:4px 0 0;font-size:14px;opacity:.9}.close-btn[data-v-33d93414]{color:#fff!important;background:rgba(255,255,255,.1)!important;border:none!important;border-radius:8px!important;transition:all .3s ease}.close-btn[data-v-33d93414]:hover{background:rgba(255,255,255,.2)!important}.modern-continue-container[data-v-33d93414]{display:grid;grid-template-columns:1fr 1fr;gap:24px;min-height:500px}.config-card[data-v-33d93414],.result-card[data-v-33d93414]{border-radius:12px;border:1px solid #e8eaed;box-shadow:0 2px 8px #0000000a}.config-card .el-card__header[data-v-33d93414],.result-card .el-card__header[data-v-33d93414]{background:#f8f9fa;border-bottom:1px solid #e8eaed;padding:16px 20px}.card-header[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-weight:600;color:#1f2937}.header-actions[data-v-33d93414]{margin-left:auto;display:flex;gap:8px}.config-content[data-v-33d93414]{padding:20px}.config-row[data-v-33d93414]{display:flex;flex-direction:column;gap:24px}.config-item[data-v-33d93414]{display:flex;flex-direction:column;gap:8px}.config-label[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-weight:500;color:#374151;font-size:14px}.direction-input[data-v-33d93414]{border-radius:8px}.direction-input .el-textarea__inner[data-v-33d93414]{border-radius:8px;border:1px solid #d1d5db;font-size:14px;line-height:1.5}.word-count-slider[data-v-33d93414]{margin-top:8px}.tips-section[data-v-33d93414]{margin-top:24px;padding:16px;background:#f0f9ff;border-radius:8px;border:1px solid #bae6fd}.tips-header[data-v-33d93414]{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:500;color:#0369a1}.tips-grid[data-v-33d93414]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tip-item[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-size:13px;color:#374151}.result-content[data-v-33d93414]{padding:20px;min-height:400px}.streaming-state[data-v-33d93414]{display:flex;flex-direction:column;height:100%}.streaming-header[data-v-33d93414]{display:flex;align-items:center;gap:16px;padding:20px;background:#f0f9ff;border-radius:8px;margin-bottom:16px}.streaming-icon[data-v-33d93414]{width:40px;height:40px;background:#3b82f6;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.rotating[data-v-33d93414]{animation:rotate-33d93414 2s linear infinite}.streaming-text h4[data-v-33d93414]{margin:0;color:#1f2937;font-size:16px}.streaming-text p[data-v-33d93414]{margin:4px 0 0;color:#6b7280;font-size:14px}.streaming-content[data-v-33d93414]{flex:1;background:#fff;border-radius:8px;border:1px solid #e5e7eb;padding:16px;overflow-y:auto}.streaming-text-content[data-v-33d93414]{font-size:14px;line-height:1.6;color:#374151;white-space:pre-wrap;word-wrap:break-word}.result-display[data-v-33d93414]{height:100%;display:flex;flex-direction:column}.result-stats[data-v-33d93414]{display:flex;gap:24px;margin-bottom:16px;padding:12px 16px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.stat-item[data-v-33d93414]{display:flex;flex-direction:column;align-items:center;gap:4px}.stat-label[data-v-33d93414]{font-size:12px;color:#6b7280;font-weight:500}.stat-value[data-v-33d93414]{font-size:16px;color:#1f2937;font-weight:600}.result-text[data-v-33d93414]{flex:1;padding:16px;background:#fff;border-radius:8px;border:1px solid #e5e7eb;font-size:14px;line-height:1.6;color:#374151;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word}.empty-state[data-v-33d93414]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:#6b7280}.empty-icon[data-v-33d93414]{margin-bottom:16px}.empty-state h4[data-v-33d93414]{margin:0 0 8px;color:#374151;font-size:16px}.empty-state p[data-v-33d93414]{margin:0;font-size:14px;max-width:280px}.dialog-footer[data-v-33d93414]{display:flex;align-items:center;justify-content:space-between}.footer-info[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-size:14px}.footer-actions[data-v-33d93414]{display:flex;gap:12px}.continue-container[data-v-33d93414]{display:flex;gap:20px;height:500px}.continue-config[data-v-33d93414]{flex:1;display:flex;flex-direction:column;gap:16px}.continue-result[data-v-33d93414]{flex:1;display:flex;flex-direction:column;border-left:1px solid #e5e7eb;padding-left:20px}.result-content[data-v-33d93414]{flex:1;display:flex;flex-direction:column;min-height:0}.continuing-indicator[data-v-33d93414]{display:flex;align-items:center;justify-content:center;padding:8px;margin-top:8px;background:#e3f2fd;border-radius:4px;font-size:12px;color:#1976d2}.continuing-indicator .loading-icon[data-v-33d93414]{margin-right:4px;animation:spin-33d93414 1s linear infinite}.word-count-tips[data-v-33d93414]{margin-top:4px;font-size:12px;color:#6b7280;text-align:center}.empty-placeholder[data-v-33d93414]{flex:1;display:flex;align-items:center;justify-content:center}.empty-placeholder .el-empty[data-v-33d93414]{padding:20px}.page-tabs .el-tabs__header[data-v-33d93414]{background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a;padding:10px 20px;margin:0 0 20px}.page-tabs .el-tabs__nav-wrap[data-v-33d93414]{padding:0}.page-tabs .el-tabs__item[data-v-33d93414]{font-weight:500;font-size:15px;padding:0 20px;height:40px;line-height:40px}.advanced-config[data-v-33d93414]{margin-top:16px}.advanced-config .el-collapse-item__header[data-v-33d93414]{font-size:14px;font-weight:500;color:#2c3e50}.age-input[data-v-33d93414]{display:flex;align-items:center;gap:12px}.age-display[data-v-33d93414]{font-size:16px;font-weight:500;color:#2c3e50;min-width:40px;text-align:center}.editor-main[data-v-33d93414]{flex:1;background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a;display:flex;flex-direction:column;overflow:hidden}.editor-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #e4e7ed;background:#fafbfc}.editor-title[data-v-33d93414]{display:flex;align-items:center;gap:12px;font-size:16px;font-weight:600;color:#2c3e50}.word-count[data-v-33d93414]{font-size:12px;color:#909399;background:#f0f2f5;padding:2px 8px;border-radius:12px}.editor-actions[data-v-33d93414]{display:flex;gap:8px}.editor-content[data-v-33d93414]{flex:1;position:relative;display:flex;flex-direction:column;min-height:0}.editor-wrapper[data-v-33d93414]{height:100%;display:flex;flex-direction:column;flex:1}.editor-wrapper .w-e-toolbar[data-v-33d93414]{border-bottom:1px solid #e4e7ed;background:#fafbfc;flex-shrink:0}.editor-wrapper .w-e-text-container[data-v-33d93414]{flex:1;background:white;overflow-y:auto!important;min-height:400px}.editor-wrapper .w-e-text-container .w-e-text[data-v-33d93414]{min-height:400px!important;max-height:none!important}.editor-wrapper .w-e-text-container .w-e-scroll[data-v-33d93414]{overflow-y:auto!important;max-height:none!important}.editor-wrapper[data-v-33d93414] .w-e-text-container{overflow-y:auto!important;min-height:400px;max-height:calc(100vh - 300px)}.editor-wrapper[data-v-33d93414] .w-e-text{min-height:400px!important;padding:20px!important;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.6}.editor-wrapper[data-v-33d93414] .w-e-scroll{overflow-y:auto!important;max-height:none!important}.editor-wrapper[data-v-33d93414] .w-e-text-container,.editor-wrapper[data-v-33d93414] .w-e-scroll,.editor-wrapper[data-v-33d93414] .w-e-text{scrollbar-width:auto!important;-webkit-overflow-scrolling:touch}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar{width:8px;height:8px}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar-track,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar-track,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar-track{background:#f5f5f5;border-radius:4px}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar-thumb,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar-thumb,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.editor-wrapper[data-v-33d93414] .w-e-text-container::-webkit-scrollbar-thumb:hover,.editor-wrapper[data-v-33d93414] .w-e-scroll::-webkit-scrollbar-thumb:hover,.editor-wrapper[data-v-33d93414] .w-e-text::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.generating-overlay[data-v-33d93414]{position:absolute;top:0;left:0;right:0;bottom:0;background:white;padding:20px;z-index:10}.reference-list[data-v-33d93414]{display:flex;flex-direction:column;gap:12px}.reference-item[data-v-33d93414]{border:1px solid #e1e5e9;border-radius:6px;padding:12px;background:#f8f9fa}.ref-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;font-weight:500;color:#606266}.generating-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid #e4e7ed;font-weight:500;color:#409eff}.streaming-content[data-v-33d93414]{line-height:1.6;color:#2c3e50;white-space:pre-wrap;word-wrap:break-word;max-height:350px;overflow-y:auto}.prompt-selector[data-v-33d93414]{height:400px;display:flex;flex-direction:column}.search-bar[data-v-33d93414]{margin-bottom:16px}.prompt-list[data-v-33d93414]{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.prompt-item[data-v-33d93414]{padding:16px;border:1px solid #e1e5e9;border-radius:8px;cursor:pointer;transition:all .2s}.prompt-item[data-v-33d93414]:hover{border-color:#409eff;background:#f0f9ff}.prompt-title[data-v-33d93414]{font-weight:500;color:#2c3e50;margin-bottom:8px}.prompt-description[data-v-33d93414]{color:#606266;font-size:13px;margin-bottom:8px}.prompt-tags[data-v-33d93414]{display:flex;gap:6px;flex-wrap:wrap}.continue-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.continue-container[data-v-33d93414]{height:500px}.continue-config[data-v-33d93414]{display:flex;flex-direction:column;gap:16px;height:100%}.config-section h4[data-v-33d93414]{margin:0 0 8px;color:#2c3e50;font-size:14px;font-weight:600}.tips-list[data-v-33d93414]{margin:0;padding-left:20px;color:#6c757d;font-size:13px;line-height:1.5}.tips-list li[data-v-33d93414]{margin-bottom:4px}.config-actions[data-v-33d93414]{margin-top:auto;display:flex;gap:8px;justify-content:flex-end}.continue-result[data-v-33d93414]{display:flex;flex-direction:column;border-left:1px solid #e5e7eb;padding-left:20px;height:100%}.result-header h4[data-v-33d93414]{margin:0 0 12px;color:#2c3e50;font-size:14px;font-weight:600}.result-content[data-v-33d93414]{flex:1;display:flex;flex-direction:column;overflow-y:auto;max-height:500px}.continuing-placeholder[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-style:italic;padding:20px;justify-content:center}.continuing-placeholder .loading-icon[data-v-33d93414]{font-size:16px;animation:spin-33d93414 1s linear infinite}@keyframes spin-33d93414{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.continued-content[data-v-33d93414]{flex:1;display:flex;flex-direction:column;min-height:0}.continued-text[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#1e40af;height:300px;overflow-y:auto;scroll-behavior:smooth;white-space:pre-wrap;word-wrap:break-word}.result-actions[data-v-33d93414]{display:flex;gap:8px;justify-content:center;margin-top:12px}.empty-result[data-v-33d93414]{flex:1;display:flex;align-items:center;justify-content:center}.optimize-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.optimize-container[data-v-33d93414]{height:500px}.optimize-config[data-v-33d93414]{display:flex;flex-direction:column;gap:16px;height:100%}.selected-text-preview[data-v-33d93414]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:12px;font-size:13px;line-height:1.6;color:#495057;max-height:120px;overflow-y:auto;white-space:pre-wrap;word-wrap:break-word}.optimize-result[data-v-33d93414]{display:flex;flex-direction:column;border-left:1px solid #e5e7eb;padding-left:20px;height:100%}.optimizing-placeholder[data-v-33d93414]{display:flex;align-items:center;gap:8px;color:#6b7280;font-style:italic;padding:20px;justify-content:center}.optimizing-placeholder .loading-icon[data-v-33d93414]{font-size:16px;animation:spin-33d93414 1s linear infinite}.optimized-content-container[data-v-33d93414]{flex:1;display:flex;flex-direction:column;min-height:0}.optimized-content[data-v-33d93414]{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;padding:12px;font-size:14px;line-height:1.6;color:#1e40af;flex:1;overflow-y:auto;scroll-behavior:smooth;white-space:pre-wrap;word-wrap:break-word}.header-actions[data-v-33d93414]{display:flex;gap:8px}.generating-status[data-v-33d93414]{margin-bottom:12px}.status-bar[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:8px 16px;border-radius:6px;box-shadow:0 2px 8px #667eea4d}.status-info[data-v-33d93414]{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500}.rotating[data-v-33d93414]{animation:rotate-33d93414 1s linear infinite}@keyframes rotate-33d93414{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.optimizing-status[data-v-33d93414]{margin-bottom:12px}.optimizing-status .status-bar[data-v-33d93414]{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%);color:#fff;padding:6px 12px;border-radius:4px;box-shadow:0 2px 6px #f093fb4d;font-size:13px}.optimizing-status .status-info[data-v-33d93414]{gap:6px;font-weight:500}.writing-style-dialog .el-dialog__body[data-v-33d93414]{padding:20px}.writing-style-container[data-v-33d93414]{max-height:500px;overflow-y:auto}.style-header[data-v-33d93414]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.style-header h4[data-v-33d93414]{margin:0;color:#374151;font-size:16px;font-weight:600}.style-list[data-v-33d93414]{display:flex;flex-direction:column;gap:12px}.style-item-row[data-v-33d93414]{display:flex;gap:12px;align-items:center;padding:12px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px}.style-input[data-v-33d93414]{flex:1}.style-prompt-input[data-v-33d93414]{flex:2}.style-item-row .el-button[data-v-33d93414]{flex-shrink:0}.book-analysis[data-v-d7592a35]{height:calc(100vh - 140px);display:flex;flex-direction:column}.page-header[data-v-d7592a35]{text-align:center;margin-bottom:20px}.page-header h2[data-v-d7592a35]{font-size:24px;color:#2c3e50;margin-bottom:8px}.page-header p[data-v-d7592a35]{color:#7f8c8d;margin:0}.analysis-container[data-v-d7592a35]{display:flex;flex:1;gap:20px;height:100%;overflow:hidden}.left-panel[data-v-d7592a35]{width:320px;background:white;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a;overflow-y:auto}.panel-section[data-v-d7592a35]{margin-bottom:24px}.panel-section h3[data-v-d7592a35]{font-size:16px;color:#2c3e50;margin-bottom:16px;display:flex;align-items:center;gap:8px}.upload-area[data-v-d7592a35]{width:100%}.upload-area .el-upload-dragger[data-v-d7592a35]{width:100%;height:120px;display:flex;flex-direction:column;justify-content:center;align-items:center}.encoding-selection[data-v-d7592a35]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border:1px solid #e4e7ed}.encoding-selection label[data-v-d7592a35]{display:block;margin-bottom:8px;font-size:14px;font-weight:500;color:#2c3e50}.encoding-switch[data-v-d7592a35]{margin-top:12px;padding:8px 12px;background:#f0f2f5;border-radius:6px;display:flex;align-items:center;gap:12px}.encoding-switch span[data-v-d7592a35]{font-size:12px;color:#606266;white-space:nowrap}.file-info[data-v-d7592a35]{margin-top:12px}.file-card[data-v-d7592a35]{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #e4e7ed;border-radius:6px;background:#f8f9fa}.file-details[data-v-d7592a35]{flex:1;display:flex;flex-direction:column;gap:4px}.file-name[data-v-d7592a35]{font-size:14px;color:#2c3e50;font-weight:500}.file-size[data-v-d7592a35]{font-size:12px;color:#909399}.file-encoding[data-v-d7592a35]{font-size:11px;color:#67c23a;background:#f0f9ff;padding:2px 6px;border-radius:10px;border:1px solid #b3e5fc;align-self:flex-start}.file-actions[data-v-d7592a35]{display:flex;gap:4px;align-items:center}.remove-btn[data-v-d7592a35]{color:#f56c6c}.setting-item[data-v-d7592a35]{margin-bottom:16px}.setting-item label[data-v-d7592a35]{display:block;font-size:14px;color:#606266;margin-bottom:8px}.template-option[data-v-d7592a35]{display:flex;align-items:center;gap:8px}.template-icon[data-v-d7592a35]{font-size:16px}.action-buttons[data-v-d7592a35]{display:flex;flex-direction:column;gap:12px}.stats-section[data-v-d7592a35]{background:#f8f9fa;border-radius:6px;padding:16px}.stats-grid[data-v-d7592a35]{display:grid;grid-template-columns:1fr;gap:12px}.stat-item[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center}.stat-label[data-v-d7592a35]{font-size:14px;color:#909399}.stat-value[data-v-d7592a35]{font-size:14px;color:#2c3e50;font-weight:500}.right-panel[data-v-d7592a35]{flex:1;background:white;border-radius:8px;box-shadow:0 2px 12px #0000001a;overflow:hidden;display:flex;flex-direction:column}.editor-container[data-v-d7592a35]{display:flex;flex-direction:column;height:100%;padding:20px}.editor-header[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e4e7ed}.editor-header h3[data-v-d7592a35]{margin:0;font-size:18px;color:#2c3e50}.header-actions[data-v-d7592a35]{display:flex;gap:8px}.progress-section[data-v-d7592a35]{margin-bottom:16px}.progress-text[data-v-d7592a35]{margin-top:8px;font-size:14px;color:#606266;text-align:center}.analysis-editor[data-v-d7592a35]{flex:1}.analysis-editor .el-textarea__inner[data-v-d7592a35]{height:100%!important;resize:none;font-family:Monaco,Consolas,Courier New,monospace;font-size:14px;line-height:1.6}.chapter-actions[data-v-d7592a35]{display:flex;gap:8px;margin-top:8px}.chapter-actions button[data-v-d7592a35]{margin-left:0!important}.range-input-group[data-v-d7592a35]{display:flex;align-items:center;gap:8px;width:100%}.range-separator[data-v-d7592a35]{color:#606266;font-size:14px}.chapter-option[data-v-d7592a35]{width:100%}.chapter-title[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.chapter-words[data-v-d7592a35]{color:#8492a6;font-size:12px}.chapter-summary[data-v-d7592a35]{color:#909399;font-size:12px;line-height:1.4;white-space:normal;word-break:break-all}.chapter-details-content[data-v-d7592a35]{max-height:500px;overflow-y:auto}.chapter-detail-item[data-v-d7592a35]{padding:16px;border:1px solid #e4e7ed;border-radius:6px;margin-bottom:12px}.chapter-detail-item[data-v-d7592a35]:last-child{margin-bottom:0}.chapter-detail-header[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.chapter-detail-header h4[data-v-d7592a35]{margin:0;color:#303133;font-size:16px}.chapter-detail-words[data-v-d7592a35]{color:#909399;font-size:12px}.chapter-detail-summary[data-v-d7592a35]{margin-bottom:12px;line-height:1.6;color:#606266}.chapter-detail-preview[data-v-d7592a35]{color:#909399;font-size:14px;line-height:1.6;background:#f8f9fa;padding:8px 12px;border-radius:4px}.ai-chapter-section[data-v-d7592a35]{margin-top:8px}.empty-state[data-v-d7592a35]{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#909399}.empty-icon[data-v-d7592a35]{font-size:64px;margin-bottom:16px}.content-preview[data-v-d7592a35]{flex:1;padding:20px;overflow-y:auto}.preview-header[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e4e7ed}.preview-header h3[data-v-d7592a35]{margin:0;color:#2c3e50}.preview-tip[data-v-d7592a35]{font-size:12px;color:#909399}.preview-content[data-v-d7592a35]{line-height:1.8;color:#606266;white-space:pre-wrap}.analysis-progress[data-v-d7592a35]{flex:1;display:flex;justify-content:center;align-items:center;padding:40px}.progress-content[data-v-d7592a35]{text-align:center;max-width:400px}.progress-icon[data-v-d7592a35]{font-size:48px;color:#409eff;margin-bottom:16px;animation:spin-d7592a35 2s linear infinite}@keyframes spin-d7592a35{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.progress-steps[data-v-d7592a35]{margin-top:24px;display:flex;flex-direction:column;gap:12px}.progress-step[data-v-d7592a35]{display:flex;align-items:center;gap:12px;padding:8px;border-radius:6px;transition:all .3s}.progress-step.active[data-v-d7592a35]{background:#e6f7ff;color:#1890ff}.progress-step.completed[data-v-d7592a35]{color:#52c41a}.step-text[data-v-d7592a35]{font-size:14px}.analysis-results[data-v-d7592a35]{flex:1;display:flex;flex-direction:column;overflow:hidden}.results-header[data-v-d7592a35]{padding:20px 20px 0;border-bottom:1px solid #e4e7ed}.results-header h3[data-v-d7592a35]{margin:0 0 8px;color:#2c3e50}.results-meta[data-v-d7592a35]{display:flex;gap:20px;font-size:12px;color:#909399;margin-bottom:16px}.results-tabs[data-v-d7592a35]{flex:1;overflow:hidden}.results-tabs[data-v-d7592a35] .el-tabs__content{height:calc(100% - 40px);overflow-y:auto;padding:20px}.analysis-grid[data-v-d7592a35]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.analysis-card[data-v-d7592a35]{background:#f8f9fa;border-radius:8px;padding:16px;border:1px solid #e9ecef}.analysis-card h4[data-v-d7592a35]{margin:0 0 16px;color:#2c3e50;font-size:16px}.info-list[data-v-d7592a35]{display:flex;flex-direction:column;gap:8px}.info-item[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center}.label[data-v-d7592a35]{font-size:14px;color:#606266}.value[data-v-d7592a35]{font-size:14px;color:#2c3e50;font-weight:500}.characters-list[data-v-d7592a35]{display:flex;flex-direction:column;gap:8px}.character-item[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;padding:8px;background:white;border-radius:4px;font-size:14px}.character-name[data-v-d7592a35]{font-weight:500;color:#2c3e50}.character-role[data-v-d7592a35]{color:#909399}.character-frequency[data-v-d7592a35]{color:#409eff;font-size:12px}.plot-structure[data-v-d7592a35]{display:flex;flex-direction:column;gap:8px}.structure-item[data-v-d7592a35]{display:flex;gap:8px;padding:8px;background:white;border-radius:4px}.structure-label[data-v-d7592a35]{font-size:14px;color:#606266;min-width:80px}.structure-value[data-v-d7592a35]{font-size:14px;color:#2c3e50;flex:1}.techniques-analysis[data-v-d7592a35]{display:flex;flex-direction:column;gap:24px}.technique-section[data-v-d7592a35]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.technique-section h4[data-v-d7592a35]{margin:0 0 12px;color:#2c3e50}.technique-description[data-v-d7592a35]{color:#606266;margin-bottom:16px;line-height:1.6}.examples-section h5[data-v-d7592a35]{margin:0 0 12px;color:#2c3e50;font-size:14px}.example-item[data-v-d7592a35]{background:white;border-radius:6px;padding:16px;margin-bottom:12px;border:1px solid #e4e7ed}.example-text[data-v-d7592a35]{font-style:italic;color:#409eff;margin-bottom:8px}.example-analysis[data-v-d7592a35]{font-size:14px;color:#606266}.chapters-analysis[data-v-d7592a35]{display:flex;flex-direction:column;gap:20px}.chapter-detail[data-v-d7592a35]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.chapter-header[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e4e7ed}.chapter-header h4[data-v-d7592a35]{margin:0;color:#2c3e50}.chapter-words[data-v-d7592a35]{font-size:12px;color:#909399;background:#e9ecef;padding:4px 8px;border-radius:12px}.chapter-content[data-v-d7592a35]{display:grid;gap:16px}.chapter-summary h5[data-v-d7592a35],.chapter-techniques h5[data-v-d7592a35]{margin:0 0 8px;color:#2c3e50;font-size:14px}.chapter-summary p[data-v-d7592a35]{margin:0;color:#606266;line-height:1.6}.technique-tags[data-v-d7592a35]{display:flex;gap:8px;flex-wrap:wrap}.inspiration-grid[data-v-d7592a35]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.inspiration-card[data-v-d7592a35]{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #e9ecef}.inspiration-card h4[data-v-d7592a35]{margin:0 0 16px;color:#2c3e50}.highlight-list[data-v-d7592a35],.suggestion-list[data-v-d7592a35]{margin:0;padding-left:20px}.highlight-list li[data-v-d7592a35],.suggestion-list li[data-v-d7592a35]{margin-bottom:8px;color:#606266;line-height:1.6}.related-techniques[data-v-d7592a35]{display:flex;gap:8px;flex-wrap:wrap}.chapter-content-dialog[data-v-d7592a35]{display:flex;flex-direction:column;gap:20px}.chapter-selector[data-v-d7592a35]{display:flex;flex-direction:column;gap:12px}.chapter-select-option[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;width:100%}.chapter-title[data-v-d7592a35]{font-weight:500;color:#2c3e50}.chapter-words[data-v-d7592a35]{font-size:12px;color:#909399}.chapter-info[data-v-d7592a35]{display:flex;gap:8px;flex-wrap:wrap}.chapter-content-viewer[data-v-d7592a35]{background:#f8f9fa;border-radius:8px;border:1px solid #e4e7ed;overflow:hidden}.chapter-text[data-v-d7592a35]{padding:20px;line-height:1.8;font-family:Microsoft YaHei,sans-serif;color:#2c3e50;white-space:pre-wrap;word-break:break-word}.empty-state[data-v-d7592a35]{padding:60px 20px;text-align:center;color:#909399}.empty-state .el-icon[data-v-d7592a35]{font-size:48px;margin-bottom:16px;color:#c0c4cc}.empty-state p[data-v-d7592a35]{margin:0;font-size:14px}.dialog-footer[data-v-d7592a35]{display:flex;justify-content:flex-end;gap:12px}@media (max-width: 1200px){.analysis-container[data-v-d7592a35]{flex-direction:column;height:auto}.left-panel[data-v-d7592a35]{width:100%;order:1}.right-panel[data-v-d7592a35]{order:2;min-height:600px}.analysis-grid[data-v-d7592a35],.inspiration-grid[data-v-d7592a35]{grid-template-columns:1fr}.chapter-content-dialog[data-v-d7592a35]{gap:16px}.chapter-text[data-v-d7592a35]{padding:16px;line-height:1.6}}@media (max-width: 768px){.analysis-container[data-v-d7592a35]{gap:16px}.left-panel[data-v-d7592a35],.right-panel[data-v-d7592a35]{border-radius:6px;padding:16px}.chapter-header[data-v-d7592a35]{flex-direction:column;align-items:flex-start;gap:8px}.chapter-selector .el-select[data-v-d7592a35]{width:100%!important}.dialog-footer[data-v-d7592a35]{flex-direction:column;gap:8px}.dialog-footer .el-button[data-v-d7592a35]{width:100%}}.chapter-details-main[data-v-d7592a35]{display:flex;gap:20px;height:600px}.chapter-list-panel[data-v-d7592a35]{width:350px;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden}.panel-header[data-v-d7592a35]{background:#f5f7fa;padding:12px 16px;border-bottom:1px solid #e4e7ed}.panel-header h4[data-v-d7592a35]{margin:0;font-size:14px;color:#2c3e50}.chapter-list[data-v-d7592a35]{height:calc(100% - 49px);overflow-y:auto}.chapter-list-item[data-v-d7592a35]{padding:12px 16px;border-bottom:1px solid #f0f0f0;cursor:pointer;transition:all .2s}.chapter-list-item[data-v-d7592a35]:hover{background:#f8f9fa}.chapter-list-item.active[data-v-d7592a35]{background:#e8f4fd;border-left:3px solid #409eff}.chapter-item-header[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.chapter-item-title[data-v-d7592a35]{font-weight:500;color:#2c3e50;font-size:14px}.chapter-item-words[data-v-d7592a35]{font-size:12px;color:#909399}.chapter-item-summary[data-v-d7592a35]{font-size:12px;color:#606266;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chapter-item-summary[data-v-d7592a35]:empty:before{content:"暂无简读,点击查看后可调用AI生成";color:#c0c4cc;font-style:italic}.chapter-detail-panel[data-v-d7592a35]{flex:1;border:1px solid #e4e7ed;border-radius:8px;overflow:hidden;display:flex;flex-direction:column}.detail-header[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f5f7fa;border-bottom:1px solid #e4e7ed}.detail-header h4[data-v-d7592a35]{margin:0;color:#2c3e50;font-size:16px}.detail-actions[data-v-d7592a35]{display:flex;gap:8px}.summary-content[data-v-d7592a35]{padding:20px}.chapter-meta[data-v-d7592a35]{display:flex;gap:8px;margin-bottom:16px}.summary-actions[data-v-d7592a35]{margin-top:20px}.summary-display[data-v-d7592a35]{margin-top:16px}.summary-text[data-v-d7592a35]{color:#2c3e50;line-height:1.6;font-size:14px;background:#f8f9fa;border-radius:6px;padding:16px;border:1px solid #e4e7ed}.summary-actions-bottom[data-v-d7592a35]{margin-top:12px;text-align:right}.prompt-section[data-v-d7592a35]{margin-bottom:16px;border:1px solid #e4e7ed;border-radius:6px;overflow:hidden}.prompt-header[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#f5f7fa;border-bottom:1px solid #e4e7ed}.prompt-label[data-v-d7592a35]{font-size:13px;font-weight:500;color:#2c3e50}.prompt-preview[data-v-d7592a35]{padding:12px;background:#fafbfc}.prompt-text[data-v-d7592a35]{font-size:12px;color:#606266;line-height:1.4;white-space:pre-wrap;word-break:break-word;max-height:120px;overflow-y:auto}.prompt-editor[data-v-d7592a35]{padding:12px;background:#fff}.prompt-textarea[data-v-d7592a35]{margin-bottom:8px}.prompt-textarea .el-textarea__inner[data-v-d7592a35]{font-size:12px;font-family:Monaco,Consolas,Courier New,monospace}.prompt-actions[data-v-d7592a35]{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.prompt-tips[data-v-d7592a35]{flex:1}.prompt-buttons[data-v-d7592a35]{display:flex;gap:8px}.prompt-preview-dialog[data-v-d7592a35]{padding:16px}.preview-content[data-v-d7592a35]{margin-bottom:16px;border:1px solid #e4e7ed;border-radius:6px;overflow:hidden}.prompt-full-text[data-v-d7592a35]{margin:0;padding:16px;background:#f8f9fa;font-family:Monaco,Consolas,Courier New,monospace;font-size:13px;line-height:1.5;color:#2c3e50;white-space:pre-wrap;word-break:break-word}.preview-stats[data-v-d7592a35]{display:flex;gap:8px;justify-content:center}.full-content[data-v-d7592a35]{padding:20px}.chapter-full-text[data-v-d7592a35]{color:#2c3e50;line-height:1.8;font-family:Microsoft YaHei,sans-serif;white-space:pre-wrap;word-break:break-word}.empty-detail[data-v-d7592a35]{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#909399}.empty-detail .el-icon[data-v-d7592a35]{font-size:48px;margin-bottom:16px;color:#c0c4cc}.empty-detail p[data-v-d7592a35]{margin:0;font-size:14px}@media (max-width: 1200px){.chapter-details-main[data-v-d7592a35]{flex-direction:column;height:auto}.chapter-list-panel[data-v-d7592a35]{width:100%;height:250px}.chapter-detail-panel[data-v-d7592a35]{min-height:400px}}@media (max-width: 768px){.chapter-details-main[data-v-d7592a35]{gap:16px}.detail-header[data-v-d7592a35]{flex-direction:column;align-items:flex-start;gap:8px}.chapter-meta[data-v-d7592a35]{flex-wrap:wrap}.summary-content[data-v-d7592a35],.full-content[data-v-d7592a35]{padding:16px}}#app{width:100%;height:100vh;margin:0;padding:0}*{box-sizing:border-box}body{margin:0;padding:0;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif}:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121.3,187.1,255);--el-color-primary-light-5:rgb(159.5,206.5,255);--el-color-primary-light-7:rgb(197.7,225.9,255);--el-color-primary-light-8:rgb(216.8,235.6,255);--el-color-primary-light-9:rgb(235.9,245.3,255);--el-color-primary-dark-2:rgb(51.2,126.4,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(148.6,212.3,117.1);--el-color-success-light-5:rgb(179,224.5,156.5);--el-color-success-light-7:rgb(209.4,236.7,195.9);--el-color-success-light-8:rgb(224.6,242.8,215.6);--el-color-success-light-9:rgb(239.8,248.9,235.3);--el-color-success-dark-2:rgb(82.4,155.2,46.4);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(237.5,189.9,118.5);--el-color-warning-light-5:rgb(242.5,208.5,157.5);--el-color-warning-light-7:rgb(247.5,227.1,196.5);--el-color-warning-light-8:rgb(250,236.4,216);--el-color-warning-light-9:rgb(252.5,245.7,235.5);--el-color-warning-dark-2:rgb(184,129.6,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152.1,152.1);--el-color-danger-light-5:rgb(250,181.5,181.5);--el-color-danger-light-7:rgb(252,210.9,210.9);--el-color-danger-light-8:rgb(253,225.6,225.6);--el-color-danger-light-9:rgb(254,240.3,240.3);--el-color-danger-dark-2:rgb(196,86.4,86.4);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152.1,152.1);--el-color-error-light-5:rgb(250,181.5,181.5);--el-color-error-light-7:rgb(252,210.9,210.9);--el-color-error-light-8:rgb(253,225.6,225.6);--el-color-error-light-9:rgb(254,240.3,240.3);--el-color-error-dark-2:rgb(196,86.4,86.4);--el-color-info:#909399;--el-color-info-light-3:rgb(177.3,179.4,183.6);--el-color-info-light-5:rgb(199.5,201,204);--el-color-info-light-7:rgb(221.7,222.6,224.4);--el-color-info-light-8:rgb(232.8,233.4,234.6);--el-color-info-light-9:rgb(243.9,244.2,244.8);--el-color-info-dark-2:rgb(115.2,117.6,122.4);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-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);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{box-sizing:border-box;flex-shrink:0;overflow:auto;width:var(--el-aside-width,300px)}.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;position:relative;width:var(--el-input-width)}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{color:var(--el-text-color-secondary);font-size:20px;height:100px;line-height:100px;text-align:center}.el-autocomplete-suggestion.is-loading li:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-small:24px;--el-avatar-size:40px;align-items:center;background:var(--el-avatar-bg-color);box-sizing:border-box;color:var(--el-avatar-text-color);display:inline-flex;font-size:var(--el-avatar-text-size);height:var(--el-avatar-size);justify-content:center;outline:none;overflow:hidden;text-align:center;width:var(--el-avatar-size)}.el-avatar>img{display:block;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);align-items:center;background-color:var(--el-backtop-bg-color);border-radius:50%;box-shadow:var(--el-box-shadow-lighter);color:var(--el-backtop-text-color);cursor:pointer;display:flex;font-size:20px;height:40px;justify-content:center;position:fixed;width:40px;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{content:"";display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255,255,255,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}.el-calendar{--el-calendar-border:var(--el-table-border,1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{border-bottom:var(--el-calendar-header-border-bottom);display:flex;justify-content:space-between;padding:12px 20px}.el-calendar__title{align-self:center;color:var(--el-text-color)}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{color:var(--el-text-color-regular);font-weight:400;padding:12px 0}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);transition:background-color var(--el-transition-duration-fast) ease;vertical-align:top}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;height:var(--el-calendar-cell-width);padding:8px}.el-calendar-table .el-calendar-day:hover{background-color:var(--el-calendar-selected-bg-color);cursor:pointer}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-carousel__item{display:inline-block;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.el-carousel__item,.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{height:50%;width:100%}.el-carousel__mask{background-color:var(--el-color-white);height:100%;left:0;opacity:.24;position:absolute;top:0;transition:var(--el-transition-duration-fast);width:100%}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31,45,61,.11);--el-carousel-arrow-hover-background:rgba(31,45,61,.23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal,.el-carousel--vertical{overflow:hidden}.el-carousel__container{height:300px;position:relative}.el-carousel__arrow{align-items:center;background-color:var(--el-carousel-arrow-background);border:none;border-radius:50%;color:#fff;cursor:pointer;display:inline-flex;font-size:var(--el-carousel-arrow-font-size);height:var(--el-carousel-arrow-size);justify-content:center;margin:0;outline:none;padding:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);transition:var(--el-transition-duration);width:var(--el-carousel-arrow-size);z-index:10}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{list-style:none;margin:0;padding:0;position:absolute;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical)*2);position:static;text-align:center;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--right{right:0}.el-carousel__indicators--labels{left:0;right:0;text-align:center;transform:none}.el-carousel__indicators--labels .el-carousel__button{color:#000;font-size:12px;height:auto;padding:2px 18px;width:auto}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{height:calc(var(--el-carousel-indicator-width)/2);width:var(--el-carousel-indicator-height)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{background-color:#fff;border:none;cursor:pointer;display:block;height:var(--el-carousel-indicator-height);margin:0;opacity:.48;outline:none;padding:0;transition:var(--el-transition-duration);width:var(--el-carousel-indicator-width)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{opacity:0;transform:translateY(-50%) translate(-10px)}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{opacity:0;transform:translateY(-50%) translate(10px)}.el-transitioning{filter:url(#elCarouselHorizontal)}.el-transitioning-vertical{filter:url(#elCarouselVertical)}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);display:flex;font-size:var(--el-cascader-menu-font-size)}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{border-right:var(--el-cascader-menu-border);box-sizing:border-box;color:var(--el-cascader-menu-text-color);min-width:180px}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{box-sizing:border-box;list-style:none;margin:0;min-height:100%;padding:6px 0;position:relative}.el-cascader-menu__hover-zone{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.el-cascader-menu__empty-text{align-items:center;color:var(--el-cascader-color-empty);display:flex;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{align-items:center;display:flex;height:34px;line-height:34px;outline:none;padding:0 30px 0 20px;position:relative}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{left:10px;position:absolute}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;overflow:hidden;padding:0 8px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;font-size:var(--el-font-size-base);line-height:32px;outline:none;position:relative;vertical-align:middle}.el-cascader:not(.is-disabled):hover .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset;cursor:pointer}.el-cascader .el-input{cursor:pointer;display:flex}.el-cascader .el-input .el-input__inner{cursor:pointer;text-overflow:ellipsis}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{font-size:14px;transition:transform var(--el-transition-duration)}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--large .el-cascader__tags{gap:6px;padding:8px}.el-cascader--large .el-cascader__search-input{height:24px;margin-left:7px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader--small .el-cascader__tags{gap:4px;padding:2px}.el-cascader--small .el-cascader__search-input{height:20px;margin-left:5px}.el-cascader.is-disabled .el-cascader__label{color:var(--el-disabled-text-color);z-index:calc(var(--el-index-normal) + 1)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill)}.el-cascader__dropdown.el-popper,.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__tags{box-sizing:border-box;display:flex;flex-wrap:wrap;gap:6px;left:0;line-height:normal;padding:4px;position:absolute;right:30px;text-align:left;top:50%;transform:translateY(-50%)}.el-cascader__tags .el-tag{align-items:center;background:var(--el-cascader-tag-background);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__tags .el-tag.el-tag--dark,.el-cascader__tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__tags .el-tag+input{margin-left:0}.el-cascader__tags.is-validate{right:55px}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{align-items:center;background:var(--el-fill-color);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag.el-tag--dark,.el-cascader__collapse-tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__collapse-tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags .el-tag+input{margin-left:0}.el-cascader__collapse-tags .el-tag{margin:2px 0}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{color:var(--el-cascader-menu-text-color);font-size:var(--el-font-size-base);margin:0;max-height:204px;padding:6px 0;text-align:center}.el-cascader__suggestion-item{align-items:center;cursor:pointer;display:flex;height:34px;justify-content:space-between;outline:none;padding:0 15px;text-align:left}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{color:var(--el-cascader-color-empty);margin:10px 0}.el-cascader__search-input{background:transparent;border:none;box-sizing:border-box;color:var(--el-cascader-menu-text-color);flex:1;height:24px;margin-left:7px;min-width:60px;outline:none;padding:0}.el-cascader__search-input::-moz-placeholder{color:transparent}.el-cascader__search-input::placeholder{color:transparent}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:700;line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all)}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled,.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled,.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled,.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled,.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled,.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary);display:inline-block;position:relative}.el-checkbox-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left-color:transparent;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);line-height:1;margin:0;outline:none;padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{margin:0;opacity:0;outline:none;position:absolute;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7);color:var(--el-checkbox-button-checked-text-color)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-bottom-left-radius:var(--el-border-radius-base);border-left:var(--el-border);border-top-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-bottom-right-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;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);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{flex:0 0 0%;max-width:0}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{left:0;position:relative}.el-col-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-1,.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{left:4.1666666667%;position:relative}.el-col-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-2,.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{left:8.3333333333%;position:relative}.el-col-3{flex:0 0 12.5%;max-width:12.5%}.el-col-3,.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{left:12.5%;position:relative}.el-col-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-4,.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{left:16.6666666667%;position:relative}.el-col-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-5,.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{left:20.8333333333%;position:relative}.el-col-6{flex:0 0 25%;max-width:25%}.el-col-6,.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{left:25%;position:relative}.el-col-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-7,.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{left:29.1666666667%;position:relative}.el-col-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-8,.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{left:33.3333333333%;position:relative}.el-col-9{flex:0 0 37.5%;max-width:37.5%}.el-col-9,.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{left:37.5%;position:relative}.el-col-10{flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-10,.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{left:41.6666666667%;position:relative}.el-col-11{flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-11,.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{left:45.8333333333%;position:relative}.el-col-12{flex:0 0 50%;max-width:50%}.el-col-12,.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%;position:relative}.el-col-13{flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-13,.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{left:54.1666666667%;position:relative}.el-col-14{flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-14,.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{left:58.3333333333%;position:relative}.el-col-15{flex:0 0 62.5%;max-width:62.5%}.el-col-15,.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{left:62.5%;position:relative}.el-col-16{flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-16,.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{left:66.6666666667%;position:relative}.el-col-17{flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-17,.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{left:70.8333333333%;position:relative}.el-col-18{flex:0 0 75%;max-width:75%}.el-col-18,.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{left:75%;position:relative}.el-col-19{flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-19,.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{left:79.1666666667%;position:relative}.el-col-20{flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-20,.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{left:83.3333333333%;position:relative}.el-col-21{flex:0 0 87.5%;max-width:87.5%}.el-col-21,.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{left:87.5%;position:relative}.el-col-22{flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-22,.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{left:91.6666666667%;position:relative}.el-col-23{flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-23,.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{left:95.8333333333%;position:relative}.el-col-24{flex:0 0 100%;max-width:100%}.el-col-24,.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{left:100%;position:relative}@media only screen and (max-width:767px){.el-col-xs-0{display:none;flex:0 0 0%;max-width:0}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{left:0;position:relative}.el-col-xs-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xs-1,.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{left:4.1666666667%;position:relative}.el-col-xs-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xs-2,.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{left:8.3333333333%;position:relative}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xs-3,.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{left:12.5%;position:relative}.el-col-xs-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xs-4,.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{left:16.6666666667%;position:relative}.el-col-xs-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xs-5,.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{left:20.8333333333%;position:relative}.el-col-xs-6{flex:0 0 25%;max-width:25%}.el-col-xs-6,.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{left:25%;position:relative}.el-col-xs-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xs-7,.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{left:29.1666666667%;position:relative}.el-col-xs-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xs-8,.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{left:33.3333333333%;position:relative}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xs-9,.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{left:37.5%;position:relative}.el-col-xs-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{left:41.6666666667%;position:relative}.el-col-xs-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{left:45.8333333333%;position:relative}.el-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{left:50%;position:relative}.el-col-xs-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{left:54.1666666667%;position:relative}.el-col-xs-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{left:58.3333333333%;position:relative}.el-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{left:62.5%;position:relative}.el-col-xs-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{left:66.6666666667%;position:relative}.el-col-xs-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{left:70.8333333333%;position:relative}.el-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{left:75%;position:relative}.el-col-xs-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{left:79.1666666667%;position:relative}.el-col-xs-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{left:83.3333333333%;position:relative}.el-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{left:87.5%;position:relative}.el-col-xs-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{left:91.6666666667%;position:relative}.el-col-xs-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{left:95.8333333333%;position:relative}.el-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{left:100%;position:relative}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;flex:0 0 0%;max-width:0}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{left:0;position:relative}.el-col-sm-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-sm-1,.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{left:4.1666666667%;position:relative}.el-col-sm-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-sm-2,.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{left:8.3333333333%;position:relative}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%}.el-col-sm-3,.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{left:12.5%;position:relative}.el-col-sm-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-sm-4,.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{left:16.6666666667%;position:relative}.el-col-sm-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-sm-5,.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{left:20.8333333333%;position:relative}.el-col-sm-6{flex:0 0 25%;max-width:25%}.el-col-sm-6,.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{left:25%;position:relative}.el-col-sm-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-sm-7,.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{left:29.1666666667%;position:relative}.el-col-sm-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-sm-8,.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{left:33.3333333333%;position:relative}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%}.el-col-sm-9,.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{left:37.5%;position:relative}.el-col-sm-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{left:41.6666666667%;position:relative}.el-col-sm-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{left:45.8333333333%;position:relative}.el-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{left:50%;position:relative}.el-col-sm-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{left:54.1666666667%;position:relative}.el-col-sm-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{left:58.3333333333%;position:relative}.el-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{left:62.5%;position:relative}.el-col-sm-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{left:66.6666666667%;position:relative}.el-col-sm-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{left:70.8333333333%;position:relative}.el-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{left:75%;position:relative}.el-col-sm-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{left:79.1666666667%;position:relative}.el-col-sm-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{left:83.3333333333%;position:relative}.el-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{left:87.5%;position:relative}.el-col-sm-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{left:91.6666666667%;position:relative}.el-col-sm-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{left:95.8333333333%;position:relative}.el-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{left:100%;position:relative}}@media only screen and (min-width:992px){.el-col-md-0{display:none;flex:0 0 0%;max-width:0}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{left:0;position:relative}.el-col-md-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-md-1,.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{left:4.1666666667%;position:relative}.el-col-md-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-md-2,.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{left:8.3333333333%;position:relative}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%}.el-col-md-3,.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{left:12.5%;position:relative}.el-col-md-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-md-4,.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{left:16.6666666667%;position:relative}.el-col-md-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-md-5,.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{left:20.8333333333%;position:relative}.el-col-md-6{flex:0 0 25%;max-width:25%}.el-col-md-6,.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{left:25%;position:relative}.el-col-md-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-md-7,.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{left:29.1666666667%;position:relative}.el-col-md-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-md-8,.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{left:33.3333333333%;position:relative}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%}.el-col-md-9,.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{left:37.5%;position:relative}.el-col-md-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{left:41.6666666667%;position:relative}.el-col-md-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{left:45.8333333333%;position:relative}.el-col-md-12{display:block;flex:0 0 50%;max-width:50%}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{left:50%;position:relative}.el-col-md-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{left:54.1666666667%;position:relative}.el-col-md-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{left:58.3333333333%;position:relative}.el-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{left:62.5%;position:relative}.el-col-md-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{left:66.6666666667%;position:relative}.el-col-md-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{left:70.8333333333%;position:relative}.el-col-md-18{display:block;flex:0 0 75%;max-width:75%}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{left:75%;position:relative}.el-col-md-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{left:79.1666666667%;position:relative}.el-col-md-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{left:83.3333333333%;position:relative}.el-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{left:87.5%;position:relative}.el-col-md-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{left:91.6666666667%;position:relative}.el-col-md-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{left:95.8333333333%;position:relative}.el-col-md-24{display:block;flex:0 0 100%;max-width:100%}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{left:100%;position:relative}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;flex:0 0 0%;max-width:0}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{left:0;position:relative}.el-col-lg-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-lg-1,.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{left:4.1666666667%;position:relative}.el-col-lg-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-lg-2,.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{left:8.3333333333%;position:relative}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%}.el-col-lg-3,.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{left:12.5%;position:relative}.el-col-lg-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-lg-4,.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{left:16.6666666667%;position:relative}.el-col-lg-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-lg-5,.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{left:20.8333333333%;position:relative}.el-col-lg-6{flex:0 0 25%;max-width:25%}.el-col-lg-6,.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{left:25%;position:relative}.el-col-lg-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-lg-7,.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{left:29.1666666667%;position:relative}.el-col-lg-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-lg-8,.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{left:33.3333333333%;position:relative}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%}.el-col-lg-9,.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{left:37.5%;position:relative}.el-col-lg-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{left:41.6666666667%;position:relative}.el-col-lg-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{left:45.8333333333%;position:relative}.el-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{left:50%;position:relative}.el-col-lg-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{left:54.1666666667%;position:relative}.el-col-lg-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{left:58.3333333333%;position:relative}.el-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{left:62.5%;position:relative}.el-col-lg-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{left:66.6666666667%;position:relative}.el-col-lg-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{left:70.8333333333%;position:relative}.el-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{left:75%;position:relative}.el-col-lg-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{left:79.1666666667%;position:relative}.el-col-lg-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{left:83.3333333333%;position:relative}.el-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{left:87.5%;position:relative}.el-col-lg-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{left:91.6666666667%;position:relative}.el-col-lg-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{left:95.8333333333%;position:relative}.el-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{left:100%;position:relative}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;flex:0 0 0%;max-width:0}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{left:0;position:relative}.el-col-xl-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xl-1,.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{left:4.1666666667%;position:relative}.el-col-xl-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xl-2,.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{left:8.3333333333%;position:relative}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xl-3,.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{left:12.5%;position:relative}.el-col-xl-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xl-4,.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{left:16.6666666667%;position:relative}.el-col-xl-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xl-5,.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{left:20.8333333333%;position:relative}.el-col-xl-6{flex:0 0 25%;max-width:25%}.el-col-xl-6,.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{left:25%;position:relative}.el-col-xl-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xl-7,.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{left:29.1666666667%;position:relative}.el-col-xl-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xl-8,.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{left:33.3333333333%;position:relative}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xl-9,.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{left:37.5%;position:relative}.el-col-xl-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{left:41.6666666667%;position:relative}.el-col-xl-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{left:45.8333333333%;position:relative}.el-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{left:50%;position:relative}.el-col-xl-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{left:54.1666666667%;position:relative}.el-col-xl-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{left:58.3333333333%;position:relative}.el-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{left:62.5%;position:relative}.el-col-xl-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{left:66.6666666667%;position:relative}.el-col-xl-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{left:70.8333333333%;position:relative}.el-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{left:75%;position:relative}.el-col-xl-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{left:79.1666666667%;position:relative}.el-col-xl-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{left:83.3333333333%;position:relative}.el-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{left:87.5%;position:relative}.el-col-xl-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{left:91.6666666667%;position:relative}.el-col-xl-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{left:95.8333333333%;position:relative}.el-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{left:100%;position:relative}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-bottom:1px solid var(--el-collapse-border-color);border-top:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{align-items:center;background-color:var(--el-collapse-header-bg-color);border:none;border-bottom:1px solid var(--el-collapse-border-color);color:var(--el-collapse-header-text-color);cursor:pointer;display:flex;font-size:var(--el-collapse-header-font-size);font-weight:500;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);outline:none;padding:0;transition:border-bottom-color var(--el-transition-duration);width:100%}.el-collapse-item__arrow{font-weight:300;transition:transform var(--el-transition-duration)}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{flex:auto;text-align:left}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{background-color:var(--el-collapse-content-bg-color);border-bottom:1px solid var(--el-collapse-border-color);box-sizing:border-box;overflow:hidden;will-change:height}.el-collapse-item__content{color:var(--el-collapse-content-text-color);font-size:var(--el-collapse-content-font-size);line-height:1.7692307692;padding-bottom:25px}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{border-radius:4px;cursor:pointer;height:20px;margin:0 0 8px 8px;width:20px}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{border-radius:3px;display:flex;height:100%}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{background-color:red;box-sizing:border-box;float:right;height:12px;padding:0 2px;position:relative;width:280px}.el-color-hue-slider__bar{background:linear-gradient(90deg,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00);height:100%;position:relative}.el-color-hue-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-hue-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-hue-slider.is-vertical{height:180px;padding:2px 0;width:12px}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,#f00 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-svpanel{height:180px;position:relative;width:280px}.el-color-svpanel__black,.el-color-svpanel__white{bottom:0;left:0;position:absolute;right:0;top:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(0deg,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;cursor:head;height:4px;transform:translate(-2px,-2px);width:4px}.el-color-alpha-slider{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;box-sizing:border-box;height:12px;position:relative;width:280px}.el-color-alpha-slider__bar{background:linear-gradient(to right,rgba(255,255,255,0) 0,var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-alpha-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-alpha-slider.is-vertical{height:180px;width:20px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,rgba(255,255,255,0) 0,rgb(255,255,255))}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{clear:both;content:"";display:table}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{color:#000;float:left;font-size:12px;line-height:26px;width:160px}.el-color-picker{display:inline-block;height:32px;line-height:normal;outline:none;position:relative;width:32px}.el-color-picker:hover:not(.is-disabled,.is-focused) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-focused .el-color-picker__trigger{border-color:var(--el-color-primary)}.el-color-picker.is-disabled .el-color-picker__trigger{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-color-picker.is-disabled .el-color-picker__color{opacity:.3}.el-color-picker--large{height:40px;width:40px}.el-color-picker--small{height:24px;width:24px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__trigger{align-items:center;border:1px solid var(--el-border-color);border-radius:4px;cursor:pointer;display:inline-flex;font-size:0;justify-content:center;padding:4px}.el-color-picker__color,.el-color-picker__trigger{box-sizing:border-box;height:100%;position:relative;width:100%}.el-color-picker__color{border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);display:block;text-align:center}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px}.el-color-picker__color-inner{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{align-items:center;color:#fff;display:inline-flex;font-size:12px;justify-content:center}.el-color-picker__panel{background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);box-sizing:content-box;padding:6px;position:absolute;z-index:10}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333333}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;cursor:pointer;height:30px;padding:4px 0;position:relative;text-align:center;width:32px}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;display:block;height:24px;left:50%;line-height:24px;margin:0 auto;position:absolute;transform:translate(-50%);width:24px}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:1}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);border-radius:15px;color:#fff}.el-date-table td.week{color:var(--el-datepicker-header-text-color);font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{border-bottom:1px solid var(--el-border-color-lighter);color:var(--el-datepicker-header-text-color);font-weight:400;padding:5px}.el-month-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-month-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .el-date-table-cell__text,.el-month-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:54px}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date .el-date-table-cell,.el-month-table td.start-date .el-date-table-cell{color:#fff}.el-month-table td.end-date .el-date-table-cell__text,.el-month-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.end-date .el-date-table-cell__text,.el-year-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:60px}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.end-date .el-date-table-cell,.el-year-table td.start-date .el-date-table-cell{color:#fff}.el-year-table td.end-date .el-date-table-cell__text,.el-year-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px;vertical-align:middle}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled,.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:"";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;margin-top:8px;outline:none}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-picker__header{padding:12px 12px 0;text-align:center}.el-date-picker__header--bordered{border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{cursor:pointer;float:left;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{height:28px;position:relative;text-align:center}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-range-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-range-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-range-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-range-picker__content{box-sizing:border-box;float:left;margin:0;padding:16px;width:50%}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-range-picker__time-header>.el-icon-arrow-right{color:var(--el-datepicker-icon-color);display:table-cell;font-size:20px;vertical-align:middle}.el-date-range-picker__time-picker-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{background:#ffffff;position:absolute;right:0;top:13px;z-index:1}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:"";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:"";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-empty-padding);text-align:center}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:top;width:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:100%;vertical-align:top;width:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;text-align:left}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-input-tag__wrapper,.el-form-item.is-error .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-input-tag__wrapper:focus,.el-form-item.is-error .el-input-tag__wrapper:hover,.el-form-item.is-error .el-input__wrapper,.el-form-item.is-error .el-input__wrapper.is-focus,.el-form-item.is-error .el-input__wrapper:focus,.el-form-item.is-error .el-input__wrapper:hover,.el-form-item.is-error .el-select__wrapper,.el-form-item.is-error .el-select__wrapper.is-focus,.el-form-item.is-error .el-select__wrapper:focus,.el-form-item.is-error .el-select__wrapper:hover,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner.is-focus,.el-form-item.is-error .el-textarea__inner:focus,.el-form-item.is-error .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translate(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translate(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px)}.el-input__inner{-webkit-appearance:none;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%}.el-input__inner:focus{outline:none}.el-input__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;cursor:not-allowed}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper,.el-input-group__append{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-hidden{display:none!important}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-placeholder-color:var(--el-text-color-placeholder);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--el-input-tag-font-size);line-height:var(--el-input-tag-line-height);min-height:var(--el-input-tag-mini-height);padding:var(--el-input-tag-padding);transform:translateZ(0);transition:var(--el-transition-duration);width:var(--el-input-tag-width)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-input-tag.is-disabled,.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix,.el-input-tag__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;padding:0 var(--el-input-tag-inner-padding)}.el-input-tag__suffix{gap:8px}.el-input-tag__inner{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:var(--el-input-tag-gap);max-width:100%;min-width:0;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-input-tag__drop-indicator{background-color:var(--el-color-primary);height:var(--el-input-tag-line-height);position:absolute;top:0;width:1px}.el-input-tag__inner .el-tag{border-color:transparent;cursor:pointer;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{line-height:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-input-tag-text-color);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding:0;width:100%}.el-input-tag__input::-moz-placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input::placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);align-items:center;color:var(--el-link-text-color);cursor:pointer;display:inline-flex;flex-direction:row;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none;vertical-align:middle}.el-link.is-hover-underline:hover:after{border-bottom:1px solid var(--el-link-hover-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link.is-underline:after{border-bottom:1px solid var(--el-link-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link:hover:after{border-color:var(--el-link-hover-text-color)}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link__inner{align-items:center;display:inline-flex;justify-content:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link.is-disabled:after{border-color:var(--el-link-disabled-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@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}}.el-main{--el-main-padding:20px;box-sizing:border-box;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{background-color:var(--el-menu-bg-color);border-right:1px solid var(--el-menu-border-color);box-sizing:border-box;list-style:none;margin:0;padding-left:0;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level)*var(--el-menu-level-padding));white-space:nowrap}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{border-right:none;display:flex;flex-wrap:nowrap;height:var(--el-menu-horizontal-height)}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:1px solid var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{align-items:center;border-bottom:2px solid transparent;color:var(--el-menu-text-color);display:inline-flex;height:100%;justify-content:center;margin:0}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{border-bottom:2px solid transparent;color:var(--el-menu-text-color);height:100%}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{align-items:center;background-color:var(--el-menu-bg-color);color:var(--el-menu-text-color);display:flex;height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);padding:0 10px}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{background-color:var(--el-menu-hover-bg-color);color:var(--el-menu-active-color,var(--el-menu-hover-text-color));outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding)*2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{display:inline-block;height:0;overflow:hidden;visibility:hidden;width:0}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{border:none;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light);min-width:200px;padding:5px 0;z-index:100}.el-menu .el-icon{flex-shrink:0}.el-menu-item{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-menu-item [class^=el-icon]{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{align-items:center;box-sizing:border-box;display:inline-flex;height:100%;left:0;padding:0 var(--el-menu-base-level-padding);position:absolute;top:0;width:100%}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:none}.el-sub-menu__title.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu .el-icon{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{font-size:12px;margin-right:0;margin-top:-6px;position:absolute;right:var(--el-menu-base-level-padding);top:50%;transition:transform var(--el-transition-duration);width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{color:var(--el-text-color-secondary);font-size:12px;line-height:normal;padding:7px 0 7px var(--el-menu-base-level-padding)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{opacity:0;transition:var(--el-transition-duration-fast)}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.el-overlay.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.el-overlay.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0;min-width:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;left:50%;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;top:20px;transform:translate(-50%);transition:opacity var(--el-transition-duration),transform .4s,top .4s;width:-moz-fit-content;width:fit-content}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay);border:1px solid var(--el-notification-border-color);border-radius:var(--el-notification-radius);box-shadow:var(--el-notification-shadow);box-sizing:border-box;display:flex;overflow:hidden;overflow-wrap:break-word;padding:var(--el-notification-padding);position:fixed;transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);width:var(--el-notification-width);z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{flex:1;margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right);min-width:0}.el-notification__title{color:var(--el-notification-title-color);font-size:var(--el-notification-title-font-size);font-weight:700;line-height:var(--el-notification-icon-size);margin:0}.el-notification__content{color:var(--el-notification-content-color);font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0}.el-notification__content p{margin:0}.el-notification .el-notification__icon{flex-shrink:0;font-size:var(--el-notification-icon-size);height:var(--el-notification-icon-size);width:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{color:var(--el-notification-close-color);cursor:pointer;font-size:var(--el-notification-close-font-size);position:absolute;right:15px;top:18px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--primary{--el-notification-icon-color:var(--el-color-primary);color:var(--el-notification-icon-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{align-items:center;display:flex;justify-content:space-between;line-height:24px}.el-page-header__left{align-items:center;display:flex;margin-right:40px;position:relative}.el-page-header__back{align-items:center;cursor:pointer;display:flex}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{align-items:center;display:flex;font-size:16px;margin-right:10px}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{color:var(--el-text-color-primary);font-size:18px}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination button{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination button *{pointer-events:none}.el-pagination button:focus{outline:none}.el-pagination button.is-active,.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button.is-active{cursor:default;font-weight:700}.el-pagination button.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination button.is-disabled,.el-pagination button:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination button:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm__main{align-items:center;display:flex}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{margin-top:8px;text-align:right}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@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%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button,.el-radio-button__inner{display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;padding:8px 15px;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary);align-items:center;display:inline-flex;height:32px}.el-rate:active,.el-rate:focus{outline:none}.el-rate__item{color:var(--el-rate-void-color);cursor:pointer;display:inline-block;font-size:0;line-height:normal;position:relative;vertical-align:middle}.el-rate .el-rate__icon{display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);position:relative;transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{left:0;position:absolute;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{color:var(--el-rate-fill-color);display:inline-block;overflow:hidden}.el-rate__decimal,.el-rate__decimal--box{left:0;position:absolute;top:0}.el-rate__text{color:var(--el-rate-text-color);font-size:var(--el-rate-font-size);vertical-align:middle}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{color:var(--el-rate-disabled-void-color);cursor:auto}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{box-sizing:border-box;display:flex;flex-wrap:wrap;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;overflow:hidden;position:relative}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty,.el-select-dropdown__loading{color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0;text-align:center}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:6px 0}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{box-sizing:border-box;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);height:34px;line-height:34px;overflow:hidden;padding:0 32px 0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{background-color:unset;color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;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%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{list-style:none;margin:0;padding:0;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);font-size:12px;line-height:34px;overflow:hidden;padding:0 20px;text-overflow:ellipsis;white-space:nowrap}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;display:inline-block;position:relative;vertical-align:middle;width:var(--el-select-width)}.el-select__wrapper{align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:14px;gap:6px;line-height:24px;min-height:32px;padding:4px 12px;position:relative;text-align:left;transform:translateZ(0);transition:var(--el-transition-duration)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select__wrapper.is-disabled,.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__prefix,.el-select__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;gap:6px}.el-select__caret{color:var(--el-select-input-color);cursor:pointer;font-size:var(--el-select-input-font-size);transform:rotate(0);transition:var(--el-transition-duration)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{border-color:transparent;cursor:pointer}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{display:flex;flex-wrap:wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__tags-text{line-height:normal}.el-select__placeholder,.el-select__tags-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select__placeholder{color:var(--el-input-text-color,var(--el-text-color-regular));position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.el-select__placeholder.is-transparent{color:var(--el-text-color-placeholder);-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper,.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select__input-wrapper{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;position:absolute;z-index:-1}.el-select__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-select-multiple-input-color);font-family:inherit;font-size:inherit;height:24px;outline:none;padding:0;width:100%}.el-select__input.is-disabled{cursor:not-allowed}.el-select__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-select--large .el-select__wrapper{font-size:14px;gap:6px;line-height:24px;min-height:40px;padding:8px 16px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{font-size:12px;gap:4px;line-height:20px;min-height:24px;padding:2px 8px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);display:inline-block;height:16px;width:100%}.el-skeleton__circle{border-radius:50%;height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);width:var(--el-skeleton-circle-size)}.el-skeleton__button{border-radius:4px;height:40px;width:64px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{height:var(--el-font-size-small);width:100%}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{align-items:center;border-radius:0;display:flex;justify-content:center;width:unset}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:22%;width:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{animation:el-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translate(-50%);-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translate(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translate(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{white-space:nowrap;width:100%}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;height:50px;width:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@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}}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-grow:0;flex-shrink:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{border-color:var(--el-text-color-primary);color:var(--el-text-color-primary)}.el-step__head.is-wait{border-color:var(--el-text-color-placeholder);color:var(--el-text-color-placeholder)}.el-step__head.is-success{border-color:var(--el-color-success);color:var(--el-color-success)}.el-step__head.is-error{border-color:var(--el-color-danger);color:var(--el-color-danger)}.el-step__head.is-finish{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-step__icon{align-items:center;background:var(--el-bg-color);box-sizing:border-box;display:inline-flex;font-size:14px;height:24px;justify-content:center;position:relative;transition:.15s ease-out;width:24px;z-index:1}.el-step__icon.is-text{border:2px solid;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{color:inherit;display:inline-block;font-weight:700;line-height:1;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:currentColor;position:absolute}.el-step__line-inner{border:1px solid;box-sizing:border-box;display:block;height:0;transition:.15s ease-out;width:0}.el-step__main{text-align:left;white-space:normal}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:700}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{font-size:12px;font-weight:400;line-height:20px;margin-top:-5px;padding-right:10%}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;left:0;right:0;top:11px}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{bottom:0;left:11px;top:0;width:2px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{font-size:0;padding-right:10px;width:auto}.el-step.is-simple .el-step__icon{background:transparent;font-size:12px;height:16px;width:16px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{align-items:stretch;display:flex;flex-grow:1;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;overflow-wrap:break-word}.el-step.is-simple .el-step__arrow{align-items:center;display:flex;flex-grow:1;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{background:var(--el-text-color-placeholder);content:"";display:inline-block;height:15px;position:absolute;width:1px}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);align-items:center;display:inline-flex;font-size:14px;height:32px;line-height:20px;position:relative;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{color:var(--el-text-color-primary);cursor:pointer;display:inline-block;font-size:14px;font-weight:500;height:20px;transition:var(--el-transition-duration-fast);vertical-align:middle}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{display:inline-block;font-size:14px;line-height:1}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{height:0;margin:0;opacity:0;position:absolute;width:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{align-items:center;background:var(--el-switch-off-color);border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));border-radius:10px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:20px;min-width:40px;outline:none;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration)}.el-switch__core .el-switch__inner{align-items:center;display:flex;height:16px;justify-content:center;overflow:hidden;padding:0 4px 0 18px;transition:all var(--el-transition-duration);width:100%}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);font-size:12px;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-switch__core .el-switch__action{align-items:center;background-color:var(--el-color-white);border-radius:var(--el-border-radius-circle);color:var(--el-switch-off-color);display:flex;height:16px;justify-content:center;left:1px;position:absolute;transition:all var(--el-transition-duration);width:16px}.el-switch.is-checked .el-switch__core{background-color:var(--el-switch-on-color);border-color:var(--el-switch-border-color,var(--el-switch-on-color))}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px;line-height:24px}.el-switch--large .el-switch__label{font-size:14px;height:24px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;height:24px;min-width:50px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{height:20px;width:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{font-size:12px;height:24px;line-height:16px}.el-switch--small .el-switch__label{font-size:12px;height:16px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;height:16px;min-width:30px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{height:12px;width:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;padding:0 10px}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:transparent;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:none}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:-moz-fit-content;height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table__expand-icon{color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:20px;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;cursor:pointer;display:inline-flex;flex-direction:column;height:14px;overflow:initial;position:relative;vertical-align:middle;width:24px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{cursor:pointer;display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;height:12px;line-height:12px;margin-right:8px;text-align:center;width:12px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);font-size:var(--el-font-size-base)}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{background-color:var(--el-bg-color);display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{background-color:var(--el-bg-color);box-shadow:2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__horizontal,.el-table-v2__left .el-vl__vertical{z-index:-1}.el-table-v2__right{background-color:var(--el-bg-color);box-shadow:-2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;overflow:hidden;position:absolute;right:0;top:0}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__horizontal,.el-table-v2__right .el-vl__vertical{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{overflow:hidden;position:relative}.el-table-v2__header .el-checkbox{z-index:0}.el-table-v2__footer{bottom:0;overflow:hidden;right:0}.el-table-v2__empty,.el-table-v2__footer,.el-table-v2__overlay{left:0;position:absolute}.el-table-v2__overlay{bottom:0;right:0;top:0;z-index:9999}.el-table-v2__header-row{border-bottom:var(--el-table-border);display:flex}.el-table-v2__header-cell{align-items:center;background-color:var(--el-table-header-bg-color);color:var(--el-table-header-text-color);display:flex;font-weight:700;height:100%;overflow:hidden;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table-v2__header-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__header-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{display:none;opacity:.6;transition:opacity,display var(--el-transition-duration)}.el-table-v2__sort-icon.is-sorting{display:block;opacity:1}.el-table-v2__row{align-items:center;border-bottom:var(--el-table-border);display:flex;transition:background-color var(--el-transition-duration)}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{align-items:center;display:flex;height:100%;overflow:hidden;padding:0 8px}.el-table-v2__row-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__row-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__expand-icon{cursor:pointer;margin:0 4px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table-v2.is-dynamic .el-table-v2__row{align-items:stretch;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{overflow-wrap:break-word}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row-reverse}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--top{flex-direction:column-reverse}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translate(100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translate(-100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(-100%);transform-origin:0 0}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{margin:0;max-height:200px}.time-select-item{font-size:14px;line-height:20px;padding:8px 10px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);cursor:pointer;font-weight:700}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{padding-left:28px;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;left:4px;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{align-items:center;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;position:absolute}.el-timeline-item__node--normal{height:var(--el-timeline-node-size-normal);left:-1px;width:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{height:var(--el-timeline-node-size-large);left:-2px;width:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{align-items:center;display:flex;justify-content:center;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);font-size:var(--el-font-size-small);line-height:1}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);list-style:none;margin:0}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-tooltip-v2__content{--el-tooltip-v2-padding:5px 10px;--el-tooltip-v2-border-radius:4px;--el-tooltip-v2-border-color:var(--el-border-color);background-color:var(--el-color-white);border:1px solid var(--el-border-color);border-radius:var(--el-tooltip-v2-border-radius);color:var(--el-color-black);padding:var(--el-tooltip-v2-padding)}.el-tooltip-v2__arrow{color:var(--el-color-white);height:var(--el-tooltip-v2-arrow-height);left:var(--el-tooltip-v2-arrow-x);pointer-events:none;position:absolute;top:var(--el-tooltip-v2-arrow-y);width:var(--el-tooltip-v2-arrow-width)}.el-tooltip-v2__arrow:after,.el-tooltip-v2__arrow:before{border:var(--el-tooltip-v2-arrow-border-width) solid transparent;content:"";height:0;position:absolute;width:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow{bottom:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:before{border-bottom:0;border-top-color:var(--el-color-white);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:after{border-bottom:0;border-top-color:var(--el-border-color);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:100%;z-index:-1}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow{top:0}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:before{border-bottom-color:var(--el-color-white);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:after{border-bottom-color:var(--el-border-color);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow{right:0}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:before{border-left-color:var(--el-color-white);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:after{border-left-color:var(--el-border-color);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow{left:0}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:before{border-left:0;border-right-color:var(--el-color-white);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:after{border-left:0;border-right-color:var(--el-border-color);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:100%;z-index:-1}.el-tooltip-v2__content.is-dark{--el-tooltip-v2-border-color:transparent;color:var(--el-color-white)}.el-tooltip-v2__content.is-dark,.el-tooltip-v2__content.is-dark .el-tooltip-v2__arrow{background-color:var(--el-color-black);border-color:transparent}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;padding:0 30px;vertical-align:middle}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);box-sizing:border-box;display:inline-block;max-height:100%;overflow:hidden;position:relative;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width)}.el-transfer-panel__body{border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);height:var(--el-transfer-panel-body-height);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{box-sizing:border-box;height:var(--el-transfer-panel-body-height);list-style:none;margin:0;overflow:auto;padding:6px 0}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{display:block!important;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{box-sizing:border-box;display:block;line-height:var(--el-transfer-item-height);overflow:hidden;padding-left:22px;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{box-sizing:border-box;padding:15px;text-align:center}.el-transfer-panel__filter .el-input__inner{box-sizing:border-box;display:inline-block;font-size:12px;height:var(--el-transfer-filter-height);width:100%}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{align-items:center;background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);display:flex;height:var(--el-transfer-panel-header-height);margin:0;padding-left:15px}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;display:flex;position:relative;width:100%}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{color:var(--el-text-color-primary);font-size:16px;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{color:var(--el-text-color-secondary);font-size:12px;font-weight:400;position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0)}.el-transfer-panel .el-transfer-panel__footer{background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);height:var(--el-transfer-panel-footer-height);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{color:var(--el-text-color-secondary);height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);margin:0;padding:6px 15px 0;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{border-radius:3px;height:14px;width:14px}.el-transfer-panel .el-checkbox__inner:after{height:6px;left:4px;width:3px}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{background:transparent!important;flex:1;height:20px;line-height:20px;padding-left:0}.el-upload{--el-upload-dragger-padding-horizontal:40px;--el-upload-dragger-padding-vertical:10px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{--el-upload-picture-card-size:148px;align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-horizontal) var(--el-upload-dragger-padding-vertical);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-horizontal) - 1px) calc(var(--el-upload-dragger-padding-vertical) - 1px)}.el-upload-list{list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;-o-object-fit:contain;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-vl__wrapper{position:relative}.el-vl__wrapper.always-on .el-virtual-scrollbar,.el-vl__wrapper:hover .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;z-index:2000}.el-popper.is-dark{color:var(--el-bg-color)}.el-popper.is-dark,.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{right:0}.el-popper.is-light,.el-popper.is-light>.el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{right:0}.el-popper.is-pure{padding:0}.el-popper__arrow,.el-popper__arrow:before{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:" ";transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{color:var(--el-statistic-title-color);font-size:var(--el-statistic-title-font-size);font-weight:var(--el-statistic-title-font-weight);line-height:20px;margin-bottom:4px}.el-statistic__content{color:var(--el-statistic-content-color);font-size:var(--el-statistic-content-font-size);font-weight:var(--el-statistic-content-font-weight)}.el-statistic__value{display:inline-block}.el-statistic__prefix{display:inline-block;margin-right:4px}.el-statistic__suffix{display:inline-block;margin-left:4px}.el-tour{--el-tour-width:520px;--el-tour-padding-primary:12px;--el-tour-font-line-height:var(--el-font-line-height-primary);--el-tour-title-font-size:16px;--el-tour-title-text-color:var(--el-text-color-primary);--el-tour-title-font-weight:400;--el-tour-close-color:var(--el-color-info);--el-tour-font-size:14px;--el-tour-color:var(--el-text-color-primary);--el-tour-bg-color:var(--el-bg-color);--el-tour-border-radius:4px}.el-tour__hollow{transition:all var(--el-transition-duration) ease}.el-tour__content{border-radius:var(--el-tour-border-radius);box-shadow:var(--el-box-shadow-light);outline:none;overflow-wrap:break-word;padding:var(--el-tour-padding-primary);width:var(--el-tour-width)}.el-tour__arrow,.el-tour__content{background:var(--el-tour-bg-color);box-sizing:border-box}.el-tour__arrow{height:10px;pointer-events:none;position:absolute;transform:rotate(45deg);width:10px}.el-tour__content[data-side^=top] .el-tour__arrow{border-left-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=bottom] .el-tour__arrow{border-bottom-color:transparent;border-right-color:transparent}.el-tour__content[data-side^=left] .el-tour__arrow{border-bottom-color:transparent;border-left-color:transparent}.el-tour__content[data-side^=right] .el-tour__arrow{border-right-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=top] .el-tour__arrow{bottom:-5px}.el-tour__content[data-side^=bottom] .el-tour__arrow{top:-5px}.el-tour__content[data-side^=left] .el-tour__arrow{right:-5px}.el-tour__content[data-side^=right] .el-tour__arrow{left:-5px}.el-tour__closebtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-tour__closebtn .el-tour__close{color:var(--el-tour-close-color);font-size:inherit}.el-tour__closebtn:focus .el-tour__close,.el-tour__closebtn:hover .el-tour__close{color:var(--el-color-primary)}.el-tour__header{padding-bottom:var(--el-tour-padding-primary)}.el-tour__header.show-close{padding-right:calc(var(--el-tour-padding-primary) + var(--el-message-close-size, 16px))}.el-tour__title{color:var(--el-tour-title-text-color);font-size:var(--el-tour-title-font-size);font-weight:var(--el-tour-title-font-weight);line-height:var(--el-tour-font-line-height)}.el-tour__body{color:var(--el-tour-text-color);font-size:var(--el-tour-font-size)}.el-tour__body img,.el-tour__body video{max-width:100%}.el-tour__footer{box-sizing:border-box;display:flex;justify-content:space-between;padding-top:var(--el-tour-padding-primary)}.el-tour__content .el-tour-indicators{display:inline-block;flex:1}.el-tour__content .el-tour-indicator{background:var(--el-color-info-light-9);border-radius:50%;display:inline-block;height:6px;margin-right:6px;width:6px}.el-tour__content .el-tour-indicator.is-active{background:var(--el-color-primary)}.el-tour.el-tour--primary{--el-tour-title-text-color:#fff;--el-tour-text-color:#fff;--el-tour-bg-color:var(--el-color-primary);--el-tour-close-color:#fff}.el-tour.el-tour--primary .el-tour__closebtn:focus .el-tour__close,.el-tour.el-tour--primary .el-tour__closebtn:hover .el-tour__close{color:var(--el-tour-title-text-color)}.el-tour.el-tour--primary .el-button--default{background:#fff;border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-tour.el-tour--primary .el-button--primary{border-color:#fff}.el-tour.el-tour--primary .el-tour-indicator{background:rgba(255,255,255,.15)}.el-tour.el-tour--primary .el-tour-indicator.is-active{background:#fff}.el-tour-parent--hidden{overflow:hidden}.el-anchor{--el-anchor-bg-color:var(--el-bg-color);--el-anchor-padding-indent:14px;--el-anchor-line-height:22px;--el-anchor-font-size:12px;--el-anchor-color:var(--el-text-color-secondary);--el-anchor-active-color:var(--el-color-primary);--el-anchor-marker-bg-color:var(--el-color-primary);background-color:var(--el-anchor-bg-color);position:relative}.el-anchor__marker{background-color:var(--el-anchor-marker-bg-color);border-radius:4px;opacity:0;position:absolute;z-index:0}.el-anchor.el-anchor--vertical .el-anchor__marker{height:14px;left:0;top:8px;transition:top .25s ease-in-out,opacity .25s;width:4px}.el-anchor.el-anchor--vertical .el-anchor__list{padding-left:var(--el-anchor-padding-indent)}.el-anchor.el-anchor--vertical.el-anchor--underline:before{background-color:#0505050f;content:"";height:100%;left:0;position:absolute;width:2px}.el-anchor.el-anchor--vertical.el-anchor--underline .el-anchor__marker{border-radius:unset;width:2px}.el-anchor.el-anchor--horizontal .el-anchor__marker{bottom:0;height:2px;transition:left .25s ease-in-out,opacity .25s,width .25s;width:20px}.el-anchor.el-anchor--horizontal .el-anchor__list{display:flex;padding-bottom:4px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item{padding-left:16px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item:first-child{padding-left:0}.el-anchor.el-anchor--horizontal.el-anchor--underline:before{background-color:#0505050f;bottom:0;content:"";height:2px;position:absolute;width:100%}.el-anchor.el-anchor--horizontal.el-anchor--underline .el-anchor__marker{border-radius:unset;height:2px}.el-anchor__item{display:flex;flex-direction:column;overflow:hidden}.el-anchor__link{cursor:pointer;font-size:var(--el-anchor-font-size);line-height:var(--el-anchor-line-height);max-width:100%;outline:none;overflow:hidden;padding:4px 0;text-decoration:none;text-overflow:ellipsis;transition:color var(--el-transition-duration);white-space:nowrap}.el-anchor__link,.el-anchor__link:focus,.el-anchor__link:hover{color:var(--el-anchor-color)}.el-anchor__link.is-active{color:var(--el-anchor-active-color)}.el-anchor .el-anchor__list .el-anchor__item a{display:inline-block}.el-segmented--vertical{flex-direction:column}.el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented{--el-segmented-color:var(--el-text-color-regular);--el-segmented-bg-color:var(--el-fill-color-light);--el-segmented-padding:2px;--el-segmented-item-selected-color:var(--el-color-white);--el-segmented-item-selected-bg-color:var(--el-color-primary);--el-segmented-item-selected-disabled-bg-color:var(--el-color-primary-light-5);--el-segmented-item-hover-color:var(--el-text-color-primary);--el-segmented-item-hover-bg-color:var(--el-fill-color-dark);--el-segmented-item-active-bg-color:var(--el-fill-color-darker);--el-segmented-item-disabled-color:var(--el-text-color-placeholder);align-items:stretch;background:var(--el-segmented-bg-color);border-radius:var(--el-border-radius-base);box-sizing:border-box;color:var(--el-segmented-color);display:inline-flex;font-size:14px;min-height:32px;padding:var(--el-segmented-padding)}.el-segmented__group{align-items:stretch;display:flex;position:relative;width:100%}.el-segmented__item-selected{background:var(--el-segmented-item-selected-bg-color);border-radius:calc(var(--el-border-radius-base) - 2px);height:100%;left:0;pointer-events:none;position:absolute;top:0;transition:all .3s;width:10px}.el-segmented__item-selected.is-disabled{background:var(--el-segmented-item-selected-disabled-bg-color)}.el-segmented__item-selected.is-focus-visible:before{border-radius:inherit;content:"";top:0;right:0;bottom:0;left:0;outline:2px solid var(--el-segmented-item-selected-bg-color);outline-offset:1px;position:absolute}.el-segmented__item{align-items:center;border-radius:calc(var(--el-border-radius-base) - 2px);cursor:pointer;display:flex;flex:1;padding:0 11px}.el-segmented__item:not(.is-disabled):not(.is-selected):hover{background:var(--el-segmented-item-hover-bg-color);color:var(--el-segmented-item-hover-color)}.el-segmented__item:not(.is-disabled):not(.is-selected):active{background:var(--el-segmented-item-active-bg-color)}.el-segmented__item.is-selected,.el-segmented__item.is-selected.is-disabled{color:var(--el-segmented-item-selected-color)}.el-segmented__item.is-disabled{color:var(--el-segmented-item-disabled-color);cursor:not-allowed}.el-segmented__item-input{height:0;margin:0;opacity:0;pointer-events:none;position:absolute;width:0}.el-segmented__item-label{flex:1;line-height:normal;overflow:hidden;text-align:center;text-overflow:ellipsis;transition:color .3s;white-space:nowrap;z-index:1}.el-segmented.is-block{display:flex}.el-segmented.is-block .el-segmented__item{min-width:0}.el-segmented--large{border-radius:var(--el-border-radius-base);font-size:16px;min-height:40px}.el-segmented--large .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 2px)}.el-segmented--large .el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented--large .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 2px);padding:0 11px}.el-segmented--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:14px;min-height:24px}.el-segmented--small .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 3px)}.el-segmented--small .el-segmented--vertical .el-segmented__item{padding:7px}.el-segmented--small .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 3px);padding:0 7px}.el-mention{position:relative;width:100%}.el-mention__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-mention__popper.el-popper,.el-mention__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-mention__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-mention-dropdown{--el-mention-font-size:var(--el-font-size-base);--el-mention-bg-color:var(--el-bg-color-overlay);--el-mention-shadow:var(--el-box-shadow-light);--el-mention-border:1px solid var(--el-border-color-light);--el-mention-option-color:var(--el-text-color-regular);--el-mention-option-height:34px;--el-mention-option-min-width:100px;--el-mention-option-hover-background:var(--el-fill-color-light);--el-mention-option-selected-color:var(--el-color-primary);--el-mention-option-disabled-color:var(--el-text-color-placeholder);--el-mention-option-loading-color:var(--el-text-color-secondary);--el-mention-option-loading-padding:10px 0;--el-mention-max-height:174px;--el-mention-padding:6px 0;--el-mention-header-padding:10px;--el-mention-footer-padding:10px}.el-mention-dropdown__item{box-sizing:border-box;color:var(--el-mention-option-color);cursor:pointer;font-size:var(--el-mention-font-size);height:var(--el-mention-option-height);line-height:var(--el-mention-option-height);min-width:var(--el-mention-option-min-width);overflow:hidden;padding:0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-mention-dropdown__item.is-hovering{background-color:var(--el-mention-option-hover-background)}.el-mention-dropdown__item.is-selected{color:var(--el-mention-option-selected-color);font-weight:700}.el-mention-dropdown__item.is-disabled{background-color:unset;color:var(--el-mention-option-disabled-color);cursor:not-allowed}.el-mention-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-mention-dropdown__loading{color:var(--el-mention-option-loading-color);font-size:12px;margin:0;min-width:var(--el-mention-option-min-width);padding:10px 0;text-align:center}.el-mention-dropdown__wrap{max-height:var(--el-mention-max-height)}.el-mention-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:var(--el-mention-padding)}.el-mention-dropdown__header{border-bottom:var(--el-mention-border);padding:var(--el-mention-header-padding)}.el-mention-dropdown__footer{border-top:var(--el-mention-border);padding:var(--el-mention-footer-padding)}.el-splitter{display:flex;height:100%;margin:0;padding:0;position:relative;width:100%}.el-splitter__mask{top:0;right:0;bottom:0;left:0;position:absolute;z-index:999}.el-splitter__mask-horizontal{cursor:col-resize}.el-splitter__mask-vertical{cursor:row-resize}.el-splitter__horizontal{flex-direction:row}.el-splitter__vertical{flex-direction:column}.el-splitter-bar{flex:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-splitter-bar__disable{cursor:auto!important}.el-splitter-bar__disable:before{background-color:var(--el-border-color-light)!important}.el-splitter-bar__dragger{background:transparent;z-index:1}.el-splitter-bar__dragger,.el-splitter-bar__dragger:before{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:before{background-color:var(--el-border-color-light);content:""}.el-splitter-bar__dragger:hover:before{background-color:var(--el-color-primary-light-5)}.el-splitter-bar__dragger-horizontal:before{height:100%;width:2px}.el-splitter-bar__dragger-vertical:before{height:2px;width:100%}.el-splitter-bar__dragger-active:before{background-color:var(--el-color-primary-light-3)}.el-splitter-bar:hover .el-splitter-bar__collapse-icon{opacity:1}.el-splitter-bar__collapse-icon{align-items:center;background:var(--el-border-color-light);border-radius:2px;cursor:pointer;display:flex;justify-content:center;opacity:0;position:absolute;z-index:9}.el-splitter-bar__collapse-icon:hover{background-color:var(--el-color-primary-light-5);opacity:1}.el-splitter-bar__horizontal-collapse-icon-start{height:24px;left:-12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__horizontal-collapse-icon-end{height:24px;left:12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__vertical-collapse-icon-start{height:16px;right:50%;top:-12px;transform:translate(50%,-50%);width:24px}.el-splitter-bar__vertical-collapse-icon-end{height:16px;right:50%;top:12px;transform:translate(50%,-50%);width:24px}.el-splitter-panel{box-sizing:border-box;flex-grow:0;overflow:auto;scrollbar-width:thin}:root{--primary-color: #409eff;--success-color: #67c23a;--warning-color: #e6a23c;--danger-color: #f56c6c;--info-color: #909399;--text-primary: #303133;--text-regular: #606266;--text-secondary: #909399;--text-placeholder: #c0c4cc;--border-base: #dcdfe6;--border-light: #e4e7ed;--border-lighter: #ebeef5;--border-extra-light: #f2f6fc;--background-base: #f5f7fa;--background-light: #fafafa}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;color:var(--text-primary);background-color:#fff}#app{height:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.flex{display:flex}.flex-1{flex:1}.flex-center{display:flex;align-items:center;justify-content:center}.text-center{text-align:center}.mb-4{margin-bottom:16px}.mr-2{margin-right:8px}.ml-2{margin-left:8px} diff --git a/dist/assets/index-e0e8b1e6.js b/dist/assets/index-62a52142.js similarity index 99% rename from dist/assets/index-e0e8b1e6.js rename to dist/assets/index-62a52142.js index ffa3125..821814b 100644 --- a/dist/assets/index-e0e8b1e6.js +++ b/dist/assets/index-62a52142.js @@ -2987,7 +2987,7 @@ Character number: `+e.characterNumber};v_.prototype.lineNumber=function(){return `,r:"\r",t:" "};function XNe(e){return e.replace(/\\(.)/g,function(t,n){return l4n[n]||n})}var u4n=Ut.rules.sequence(Ut.rules.tokenOfType("open-square-bracket"),Ut.rules.sequence.cut(),Ut.rules.sequence.capture(uz),Ut.rules.tokenOfType("equals"),Ut.rules.sequence.capture(_3),Ut.rules.tokenOfType("close-square-bracket")).map(function(e,t){return{name:e,value:t,append:!1}}),c4n=Ut.rules.sequence(Ut.rules.tokenOfType("dot"),Ut.rules.sequence.cut(),Ut.rules.sequence.capture(uz)).map(function(e){return{name:"class",value:e,append:!0}}),d4n=Ut.rules.firstOf("attribute or class",u4n,c4n);function bce(e,t){var n=n4n(t),r=Ut.Parser(),o=r.parseTokens(e,n);return o.isSuccess()?oY.success(o.value()):new oY.Result(null,[oY.warning(f4n(t,o))])}function f4n(e,t){return"Did not understand this style mapping, so ignored it: "+e+` `+t.errors().map(h4n).join(` `)}function h4n(e){return"Error was at character number "+e.characterNumber()+": Expected "+e.expected+" but got "+e.actual}var p4n=o4n(),cz={};cz.readOptions=m4n;var JNe=za,g4n=cz._defaultStyleMap=["p.Heading1 => h1:fresh","p.Heading2 => h2:fresh","p.Heading3 => h3:fresh","p.Heading4 => h4:fresh","p.Heading5 => h5:fresh","p.Heading6 => h6:fresh","p[style-name='Heading 1'] => h1:fresh","p[style-name='Heading 2'] => h2:fresh","p[style-name='Heading 3'] => h3:fresh","p[style-name='Heading 4'] => h4:fresh","p[style-name='Heading 5'] => h5:fresh","p[style-name='Heading 6'] => h6:fresh","p[style-name='heading 1'] => h1:fresh","p[style-name='heading 2'] => h2:fresh","p[style-name='heading 3'] => h3:fresh","p[style-name='heading 4'] => h4:fresh","p[style-name='heading 5'] => h5:fresh","p[style-name='heading 6'] => h6:fresh","p.Heading => h1:fresh","p[style-name='Heading'] => h1:fresh","r[style-name='Strong'] => strong","p[style-name='footnote text'] => p:fresh","r[style-name='footnote reference'] =>","p[style-name='endnote text'] => p:fresh","r[style-name='endnote reference'] =>","p[style-name='annotation text'] => p:fresh","r[style-name='annotation reference'] =>","p[style-name='Footnote'] => p:fresh","r[style-name='Footnote anchor'] =>","p[style-name='Endnote'] => p:fresh","r[style-name='Endnote anchor'] =>","p:unordered-list(1) => ul > li:fresh","p:unordered-list(2) => ul|ol > li > ul > li:fresh","p:unordered-list(3) => ul|ol > li > ul|ol > li > ul > li:fresh","p:unordered-list(4) => ul|ol > li > ul|ol > li > ul|ol > li > ul > li:fresh","p:unordered-list(5) => ul|ol > li > ul|ol > li > ul|ol > li > ul|ol > li > ul > li:fresh","p:ordered-list(1) => ol > li:fresh","p:ordered-list(2) => ul|ol > li > ol > li:fresh","p:ordered-list(3) => ul|ol > li > ul|ol > li > ol > li:fresh","p:ordered-list(4) => ul|ol > li > ul|ol > li > ul|ol > li > ol > li:fresh","p:ordered-list(5) => ul|ol > li > ul|ol > li > ul|ol > li > ul|ol > li > ol > li:fresh","r[style-name='Hyperlink'] =>","p[style-name='Normal'] => p:fresh","p.Body => p:fresh","p[style-name='Body'] => p:fresh"],v4n=cz._standardOptions={externalFileAccess:!1,transformDocument:y4n,includeDefaultStyleMap:!0,includeEmbeddedStyleMap:!0};function m4n(e){return e=e||{},JNe.extend({},v4n,e,{customStyleMap:n8e(e.styleMap),readStyleMap:function(){var t=this.customStyleMap;return this.includeEmbeddedStyleMap&&(t=t.concat(n8e(this.embeddedStyleMap))),this.includeDefaultStyleMap&&(t=t.concat(g4n)),t}})}function n8e(e){return e?JNe.isString(e)?e.split(` -`).map(function(t){return t.trim()}).filter(function(t){return t!==""&&t.charAt(0)!=="#"}):e:[]}function y4n(e){return e}var ZNe={},r8e=rs,b4n=E7;ZNe.openZip=_4n;function _4n(e){return e.arrayBuffer?r8e.resolve(b4n.openArrayBuffer(e.arrayBuffer)):r8e.reject(new Error("Could not find file in options"))}var QNe={},w4n=az(),C4n=oz();QNe.element=x4n;function x4n(e){return function(t){return C4n.elementWithTag(w4n.element(e),[t])}}var S4n=za,eLe=Nue,_ce=hce,D4n=pce.DocumentConverter,E4n=$Ne.convertElementToRawText,k4n=iz.readStyle,A4n=cz.readOptions,dz=ZNe,T4n=hc.Result;xf.convertToHtml=O4n;xf.convertToMarkdown=F4n;xf.convert=wce;xf.extractRawText=$4n;xf.images=gce;xf.transforms=C1;xf.underline=QNe;xf.embedStyleMap=B4n;xf.readEmbeddedStyleMap=I4n;function O4n(e,t){return wce(e,t)}function F4n(e,t){var n=Object.create(t||{});return n.outputFormat="markdown",wce(e,n)}function wce(e,t){return t=A4n(t),dz.openZip(e).tap(function(n){return _ce.readStyleMap(n).then(function(r){t.embeddedStyleMap=r})}).then(function(n){return eLe.read(n,e,t).then(function(r){return r.map(t.transformDocument)}).then(function(r){return M4n(r,t)})})}function I4n(e){return dz.openZip(e).then(_ce.readStyleMap)}function M4n(e,t){var n=P4n(t.readStyleMap()),r=S4n.extend({},t,{styleMap:n.value}),o=new D4n(r);return e.flatMapThen(function(a){return n.flatMapThen(function(i){return o.convertToHtml(a)})})}function P4n(e){return T4n.combine((e||[]).map(k4n)).map(function(t){return t.filter(function(n){return!!n})})}function $4n(e){return dz.openZip(e).then(eLe.read).then(function(t){return t.map(E4n)})}function B4n(e,t){return dz.openZip(e).tap(function(n){return _ce.writeStyleMap(n,t)}).then(function(n){return n.toArrayBuffer()}).then(function(n){return{toArrayBuffer:function(){return n},toBuffer:function(){return Buffer.from(n)}}})}xf.styleMapping=function(){throw new Error(`Use a raw string instead of mammoth.styleMapping e.g. "p[style-name='Title'] => h1" instead of mammoth.styleMapping("p[style-name='Title'] => h1")`)};const R4n={class:"book-analysis"},N4n={class:"analysis-container"},L4n={class:"left-panel"},U4n={class:"panel-section"},V4n={key:0,class:"encoding-selection"},z4n={class:"el-upload__tip"},j4n={key:1,class:"file-info"},H4n={class:"file-card"},W4n={class:"file-details"},q4n={class:"file-name"},K4n={class:"file-size"},G4n={class:"file-encoding"},Y4n={class:"file-actions"},X4n={class:"encoding-switch"},J4n={key:0,class:"panel-section"},Z4n={class:"setting-item"},Q4n={class:"template-option"},e3n={class:"template-icon"},t3n={class:"template-name"},n3n={key:0,class:"setting-item"},r3n={class:"chapter-option"},o3n={class:"chapter-title"},a3n={class:"chapter-words"},i3n={key:0,class:"chapter-summary"},s3n={class:"chapter-actions"},l3n={key:1,class:"setting-item"},u3n={class:"range-input-group"},c3n={style:{"font-size":"12px",color:"#909399",margin:"5px 0 0 0"}},d3n={class:"ai-chapter-section"},f3n={key:1,class:"panel-section"},h3n={class:"action-buttons"},p3n={key:2,class:"panel-section stats-section"},g3n={class:"stats-grid"},v3n={class:"stat-item"},m3n={class:"stat-value"},y3n={class:"stat-item"},b3n={class:"stat-value"},_3n={class:"stat-item"},w3n={class:"stat-value"},C3n={class:"right-panel"},x3n={class:"editor-container"},S3n={class:"editor-header"},D3n={key:0},E3n={key:1},k3n={key:2},A3n={key:3},T3n={key:4,class:"header-actions"},O3n={key:0,class:"progress-section"},F3n={class:"progress-text"},I3n={class:"chapter-details-main"},M3n={class:"chapter-list-panel"},P3n={class:"panel-header"},$3n={class:"chapter-list"},B3n=["onClick"],R3n={class:"chapter-item-header"},N3n={class:"chapter-item-title"},L3n={class:"chapter-item-words"},U3n={class:"chapter-item-summary"},V3n={class:"chapter-detail-panel"},z3n={key:0,class:"detail-header"},j3n={class:"detail-actions"},H3n={class:"full-content"},W3n={class:"chapter-full-text"},q3n={class:"summary-content"},K3n={class:"chapter-meta"},G3n={key:0,class:"summary-actions"},Y3n={class:"prompt-section"},X3n={class:"prompt-header"},J3n={key:0,class:"prompt-preview"},Z3n={class:"prompt-text"},Q3n={key:1,class:"prompt-editor"},ewn={class:"prompt-actions"},twn={class:"prompt-tips"},nwn={class:"prompt-buttons"},rwn={key:1,class:"summary-display"},own={class:"prompt-section"},awn={class:"prompt-header"},iwn={key:0,class:"prompt-preview"},swn={class:"prompt-text"},lwn={key:1,class:"prompt-editor"},uwn={class:"prompt-actions"},cwn={class:"prompt-tips"},dwn={class:"prompt-buttons"},fwn={class:"summary-text"},hwn={class:"summary-actions-bottom"},pwn={key:2,class:"empty-detail"},gwn={class:"dialog-footer"},vwn={class:"chapter-content-dialog"},mwn={class:"chapter-selector"},ywn={class:"chapter-select-option"},bwn={class:"chapter-title"},_wn={class:"chapter-words"},wwn={key:0,class:"chapter-info"},Cwn={class:"chapter-content-viewer"},xwn={key:0,class:"chapter-text"},Swn={key:1,class:"empty-state"},Dwn={class:"dialog-footer"},Ewn={class:"prompt-preview-dialog"},kwn={class:"preview-content"},Awn={class:"prompt-full-text"},Twn={class:"preview-stats"},Own={class:"dialog-footer"},Fwn={__name:"BookAnalysis",setup(e){gh.workerSrc="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js";const t=x_(),n=X(null),r=X(""),o=X("utf-8"),a=X(""),i=X([]),s=X(1),l=X(5e3),u=X(!1),c=X(0),d=X(""),f=X(null),h=X(""),g=X(null),p=X([]),m=X(!1),v=X([]),y=X(!1),_=X(!1),C=X(null),S=X(null),E=X(""),k=X(null),O=X(null),T=X(""),P=X("content"),U=X(!1),F=X(`请为以下小说章节生成一个简洁的章节简读,要求: +`).map(function(t){return t.trim()}).filter(function(t){return t!==""&&t.charAt(0)!=="#"}):e:[]}function y4n(e){return e}var ZNe={},r8e=rs,b4n=E7;ZNe.openZip=_4n;function _4n(e){return e.arrayBuffer?r8e.resolve(b4n.openArrayBuffer(e.arrayBuffer)):r8e.reject(new Error("Could not find file in options"))}var QNe={},w4n=az(),C4n=oz();QNe.element=x4n;function x4n(e){return function(t){return C4n.elementWithTag(w4n.element(e),[t])}}var S4n=za,eLe=Nue,_ce=hce,D4n=pce.DocumentConverter,E4n=$Ne.convertElementToRawText,k4n=iz.readStyle,A4n=cz.readOptions,dz=ZNe,T4n=hc.Result;xf.convertToHtml=O4n;xf.convertToMarkdown=F4n;xf.convert=wce;xf.extractRawText=$4n;xf.images=gce;xf.transforms=C1;xf.underline=QNe;xf.embedStyleMap=B4n;xf.readEmbeddedStyleMap=I4n;function O4n(e,t){return wce(e,t)}function F4n(e,t){var n=Object.create(t||{});return n.outputFormat="markdown",wce(e,n)}function wce(e,t){return t=A4n(t),dz.openZip(e).tap(function(n){return _ce.readStyleMap(n).then(function(r){t.embeddedStyleMap=r})}).then(function(n){return eLe.read(n,e,t).then(function(r){return r.map(t.transformDocument)}).then(function(r){return M4n(r,t)})})}function I4n(e){return dz.openZip(e).then(_ce.readStyleMap)}function M4n(e,t){var n=P4n(t.readStyleMap()),r=S4n.extend({},t,{styleMap:n.value}),o=new D4n(r);return e.flatMapThen(function(a){return n.flatMapThen(function(i){return o.convertToHtml(a)})})}function P4n(e){return T4n.combine((e||[]).map(k4n)).map(function(t){return t.filter(function(n){return!!n})})}function $4n(e){return dz.openZip(e).then(eLe.read).then(function(t){return t.map(E4n)})}function B4n(e,t){return dz.openZip(e).tap(function(n){return _ce.writeStyleMap(n,t)}).then(function(n){return n.toArrayBuffer()}).then(function(n){return{toArrayBuffer:function(){return n},toBuffer:function(){return Buffer.from(n)}}})}xf.styleMapping=function(){throw new Error(`Use a raw string instead of mammoth.styleMapping e.g. "p[style-name='Title'] => h1" instead of mammoth.styleMapping("p[style-name='Title'] => h1")`)};const R4n=""+new URL("pdf.worker-08ee175a.mjs",import.meta.url).href;const N4n={class:"book-analysis"},L4n={class:"analysis-container"},U4n={class:"left-panel"},V4n={class:"panel-section"},z4n={key:0,class:"encoding-selection"},j4n={class:"el-upload__tip"},H4n={key:1,class:"file-info"},W4n={class:"file-card"},q4n={class:"file-details"},K4n={class:"file-name"},G4n={class:"file-size"},Y4n={class:"file-encoding"},X4n={class:"file-actions"},J4n={class:"encoding-switch"},Z4n={key:0,class:"panel-section"},Q4n={class:"setting-item"},e3n={class:"template-option"},t3n={class:"template-icon"},n3n={class:"template-name"},r3n={key:0,class:"setting-item"},o3n={class:"chapter-option"},a3n={class:"chapter-title"},i3n={class:"chapter-words"},s3n={key:0,class:"chapter-summary"},l3n={class:"chapter-actions"},u3n={key:1,class:"setting-item"},c3n={class:"range-input-group"},d3n={style:{"font-size":"12px",color:"#909399",margin:"5px 0 0 0"}},f3n={class:"ai-chapter-section"},h3n={key:1,class:"panel-section"},p3n={class:"action-buttons"},g3n={key:2,class:"panel-section stats-section"},v3n={class:"stats-grid"},m3n={class:"stat-item"},y3n={class:"stat-value"},b3n={class:"stat-item"},_3n={class:"stat-value"},w3n={class:"stat-item"},C3n={class:"stat-value"},x3n={class:"right-panel"},S3n={class:"editor-container"},D3n={class:"editor-header"},E3n={key:0},k3n={key:1},A3n={key:2},T3n={key:3},O3n={key:4,class:"header-actions"},F3n={key:0,class:"progress-section"},I3n={class:"progress-text"},M3n={class:"chapter-details-main"},P3n={class:"chapter-list-panel"},$3n={class:"panel-header"},B3n={class:"chapter-list"},R3n=["onClick"],N3n={class:"chapter-item-header"},L3n={class:"chapter-item-title"},U3n={class:"chapter-item-words"},V3n={class:"chapter-item-summary"},z3n={class:"chapter-detail-panel"},j3n={key:0,class:"detail-header"},H3n={class:"detail-actions"},W3n={class:"full-content"},q3n={class:"chapter-full-text"},K3n={class:"summary-content"},G3n={class:"chapter-meta"},Y3n={key:0,class:"summary-actions"},X3n={class:"prompt-section"},J3n={class:"prompt-header"},Z3n={key:0,class:"prompt-preview"},Q3n={class:"prompt-text"},ewn={key:1,class:"prompt-editor"},twn={class:"prompt-actions"},nwn={class:"prompt-tips"},rwn={class:"prompt-buttons"},own={key:1,class:"summary-display"},awn={class:"prompt-section"},iwn={class:"prompt-header"},swn={key:0,class:"prompt-preview"},lwn={class:"prompt-text"},uwn={key:1,class:"prompt-editor"},cwn={class:"prompt-actions"},dwn={class:"prompt-tips"},fwn={class:"prompt-buttons"},hwn={class:"summary-text"},pwn={class:"summary-actions-bottom"},gwn={key:2,class:"empty-detail"},vwn={class:"dialog-footer"},mwn={class:"chapter-content-dialog"},ywn={class:"chapter-selector"},bwn={class:"chapter-select-option"},_wn={class:"chapter-title"},wwn={class:"chapter-words"},Cwn={key:0,class:"chapter-info"},xwn={class:"chapter-content-viewer"},Swn={key:0,class:"chapter-text"},Dwn={key:1,class:"empty-state"},Ewn={class:"dialog-footer"},kwn={class:"prompt-preview-dialog"},Awn={class:"preview-content"},Twn={class:"prompt-full-text"},Own={class:"preview-stats"},Fwn={class:"dialog-footer"},Iwn={__name:"BookAnalysis",setup(e){gh.workerSrc=R4n;const t=x_(),n=X(null),r=X(""),o=X("utf-8"),a=X(""),i=X([]),s=X(1),l=X(5e3),u=X(!1),c=X(0),d=X(""),f=X(null),h=X(""),g=X(null),p=X([]),m=X(!1),v=X([]),y=X(!1),_=X(!1),C=X(null),S=X(null),E=X(""),k=X(null),O=X(null),T=X(""),P=X("content"),U=X(!1),F=X(`请为以下小说章节生成一个简洁的章节简读,要求: 1. 概括本章节的主要情节和内容 2. 突出关键人物和事件 3. 体现本章节在整体故事中的作用 @@ -3142,5 +3142,5 @@ ${"═".repeat(80)} 章节内容: {章节内容} -请生成章节简读:`;F.value=dt,Ie.success("已重置为默认提示词模板")},Zt=()=>{if(!O.value||!T.value){Ie.warning("当前没有选中章节,无法预览完整提示词");return}z.value=Ue(),R.value=!0},Wt=()=>{navigator.clipboard.writeText(z.value).then(()=>{Ie.success("提示词已复制到剪贴板")}).catch(dt=>{console.error("复制失败:",dt),Ie.error("复制失败")})};return Ze(F,()=>{Te()}),Kt(()=>{N(),Ge()}),(dt,Le)=>{const Mt=bT,je=w_,Ye=Tt,Je=AT,it=Br,mt=bs,_t=ii,Qt=Kg,Vn=C_,Hr=fo,Kn=id,Yo=u1,jt=Si,Po=bf,Wr=l1,ut=Js;return I(),j("div",R4n,[w("div",N4n,[w("div",L4n,[w("div",U4n,[Le[26]||(Le[26]=w("h3",null,"📁 导入小说",-1)),n.value?be("",!0):(I(),j("div",V4n,[Le[20]||(Le[20]=w("label",null,"文件编码:",-1)),D(je,{modelValue:o.value,"onUpdate:modelValue":Le[0]||(Le[0]=ft=>o.value=ft),size:"small"},{default:A(()=>[D(Mt,{label:"utf-8"},{default:A(()=>Le[18]||(Le[18]=[ce("UTF-8")])),_:1,__:[18]}),D(Mt,{label:"gbk"},{default:A(()=>Le[19]||(Le[19]=[ce("GBK/GB2312")])),_:1,__:[19]})]),_:1},8,["modelValue"])])),D(Je,{class:"upload-area",drag:"","auto-upload":!1,"on-change":$,"on-exceed":B,accept:".txt,.docx,.pdf",limit:1,"show-file-list":!1},{tip:A(()=>[w("div",z4n," 支持 .txt、.docx 和 .pdf 格式 (选择编码: "+se(o.value.toUpperCase())+") ",1)]),default:A(()=>[D(Ye,{class:"el-icon--upload"},{default:A(()=>[D(b(Jne))]),_:1}),Le[21]||(Le[21]=w("div",{class:"el-upload__text"},[ce(" 拖拽文件到此处或"),w("em",null,"点击上传")],-1))]),_:1,__:[21]}),n.value?(I(),j("div",j4n,[w("div",H4n,[D(Ye,null,{default:A(()=>[D(b(Yu))]),_:1}),w("div",W4n,[w("span",q4n,se(n.value.name),1),w("span",K4n,se((n.value.size/1024).toFixed(1))+"KB",1),w("span",G4n,se(o.value.toUpperCase()),1)]),w("div",Y4n,[D(it,{type:"text",size:"small",onClick:Z,title:"重新读取"},{default:A(()=>Le[22]||(Le[22]=[ce(" 重新读取 ")])),_:1,__:[22]}),D(it,{type:"text",onClick:we,class:"remove-btn"},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Gs))]),_:1})]),_:1})])]),w("div",X4n,[Le[25]||(Le[25]=w("span",null,"编码:",-1)),D(je,{modelValue:o.value,"onUpdate:modelValue":Le[1]||(Le[1]=ft=>o.value=ft),size:"small",onChange:Z},{default:A(()=>[D(Mt,{label:"utf-8"},{default:A(()=>Le[23]||(Le[23]=[ce("UTF-8")])),_:1,__:[23]}),D(Mt,{label:"gbk"},{default:A(()=>Le[24]||(Le[24]=[ce("GBK/GB2312")])),_:1,__:[24]})]),_:1},8,["modelValue"])])])):be("",!0)]),r.value?(I(),j("div",J4n,[Le[35]||(Le[35]=w("h3",null,"⚙️ 分析设置",-1)),w("div",Z4n,[Le[27]||(Le[27]=w("label",null,"拆书模板",-1)),D(_t,{modelValue:a.value,"onUpdate:modelValue":Le[2]||(Le[2]=ft=>a.value=ft),placeholder:"选择分析模板"},{default:A(()=>[(I(!0),j(tt,null,wt(M.value,ft=>(I(),Oe(mt,{key:ft.id,label:ft.name,value:ft.id},{default:A(()=>[w("div",Q4n,[w("span",e3n,se(ft.icon),1),w("span",t3n,se(ft.name),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),p.value.length>0?(I(),j("div",n3n,[Le[32]||(Le[32]=w("label",null,"章节选择",-1)),D(_t,{modelValue:i.value,"onUpdate:modelValue":Le[3]||(Le[3]=ft=>i.value=ft),multiple:"",placeholder:"选择要分析的章节",size:"small",style:{width:"100%"}},{default:A(()=>[(I(!0),j(tt,null,wt(p.value,ft=>(I(),Oe(mt,{key:ft.index,label:ft.title,value:ft.index},{default:A(()=>[w("div",r3n,[w("div",o3n,[w("span",null,se(ft.title),1),w("span",a3n,se(ft.wordCount)+"字",1)]),ft.summary?(I(),j("div",i3n,se(ft.summary),1)):be("",!0)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),w("div",s3n,[D(it,{size:"small",onClick:Be},{default:A(()=>Le[28]||(Le[28]=[ce("全选")])),_:1,__:[28]}),D(it,{size:"small",onClick:ke},{default:A(()=>Le[29]||(Le[29]=[ce("清空")])),_:1,__:[29]}),D(it,{size:"small",type:"primary",onClick:Ae},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(db))]),_:1}),Le[30]||(Le[30]=ce(" 查看内容 "))]),_:1,__:[30]}),v.value.length>0?(I(),Oe(it,{key:0,size:"small",type:"info",onClick:He},{default:A(()=>Le[31]||(Le[31]=[ce(" 查看简读 ")])),_:1,__:[31]})):be("",!0)])])):r.value?(I(),j("div",l3n,[Le[34]||(Le[34]=w("label",null,"分析范围",-1)),w("div",u3n,[D(Qt,{modelValue:s.value,"onUpdate:modelValue":Le[4]||(Le[4]=ft=>s.value=ft),min:1,max:r.value.length-1e3,step:1e3,size:"small",placeholder:"起始字数"},null,8,["modelValue","max"]),Le[33]||(Le[33]=w("span",{class:"range-separator"},"至",-1)),D(Qt,{modelValue:l.value,"onUpdate:modelValue":Le[5]||(Le[5]=ft=>l.value=ft),min:s.value+1e3,max:r.value.length,step:1e3,size:"small",placeholder:"结束字数"},null,8,["modelValue","min","max"])]),w("p",c3n," 未检测到章节,将分析第 "+se(s.value)+" - "+se(l.value)+" 字 ",1),w("div",d3n,[D(it,{size:"small",type:"primary",onClick:ae,loading:m.value,style:{width:"100%","margin-top":"8px"}},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Dh))]),_:1}),ce(" "+se(m.value?"AI章节检测中...":"AI章节重置"),1)]),_:1},8,["loading"])])])):be("",!0)])):be("",!0),r.value?(I(),j("div",f3n,[w("div",h3n,[D(it,{type:"primary",onClick:pe,loading:u.value,disabled:!a.value,block:""},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(ML))]),_:1}),ce(" "+se(u.value?"分析中...":"开始拆书分析"),1)]),_:1},8,["loading","disabled"]),f.value?(I(),Oe(it,{key:0,onClick:_e,block:""},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(qu))]),_:1}),Le[36]||(Le[36]=ce(" 导出分析结果 "))]),_:1,__:[36]})):be("",!0),f.value?(I(),Oe(it,{key:1,onClick:Pe,block:""},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(OY))]),_:1}),Le[37]||(Le[37]=ce(" 保存到参考库 "))]),_:1,__:[37]})):be("",!0)])])):be("",!0),r.value?(I(),j("div",p3n,[Le[41]||(Le[41]=w("h3",null,"📊 文件统计",-1)),w("div",g3n,[w("div",v3n,[Le[38]||(Le[38]=w("span",{class:"stat-label"},"总字数",-1)),w("span",m3n,se(r.value.length.toLocaleString()),1)]),w("div",y3n,[Le[39]||(Le[39]=w("span",{class:"stat-label"},"预计章节",-1)),w("span",b3n,se(L.value),1)]),w("div",_3n,[Le[40]||(Le[40]=w("span",{class:"stat-label"},"阅读时长",-1)),w("span",w3n,se(Math.ceil(r.value.length/300))+"分钟",1)])])])):be("",!0)]),w("div",C3n,[w("div",x3n,[w("div",S3n,[r.value?!f.value&&!u.value?(I(),j("h3",E3n,"📄 文本预览")):u.value?(I(),j("h3",k3n,"🔄 正在分析...")):(I(),j("h3",A3n,"📋 分析结果")):(I(),j("h3",D3n,"📋 分析结果")),f.value?(I(),j("div",T3n,[D(it,{size:"small",onClick:_e},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(qu))]),_:1}),Le[42]||(Le[42]=ce(" 导出 "))]),_:1,__:[42]}),D(it,{size:"small",onClick:Pe},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(OY))]),_:1}),Le[43]||(Le[43]=ce(" 保存 "))]),_:1,__:[43]})])):be("",!0)]),u.value?(I(),j("div",O3n,[D(Vn,{percentage:c.value,"stroke-width":6,"show-text":!1},null,8,["percentage"]),w("p",F3n,se(d.value),1)])):be("",!0),D(Hr,{ref_key:"analysisEditorRef",ref:g,modelValue:V.value,"onUpdate:modelValue":Le[6]||(Le[6]=ft=>V.value=ft),type:"textarea",placeholder:Y(),rows:30,readonly:u.value&&!f.value,class:"analysis-editor"},null,8,["modelValue","placeholder","readonly"])])])]),D(ut,{modelValue:y.value,"onUpdate:modelValue":Le[13]||(Le[13]=ft=>y.value=ft),title:"AI章节管理",width:"90%","show-close":!0},{footer:A(()=>[w("div",gwn,[D(it,{onClick:Le[12]||(Le[12]=ft=>y.value=!1)},{default:A(()=>Le[56]||(Le[56]=[ce("关闭")])),_:1,__:[56]}),D(it,{type:"info",onClick:Ft},{default:A(()=>Le[57]||(Le[57]=[ce("导出所有简读")])),_:1,__:[57]}),D(it,{type:"primary",onClick:Dt},{default:A(()=>Le[58]||(Le[58]=[ce("导出所有章节")])),_:1,__:[58]})])]),default:A(()=>[w("div",I3n,[w("div",M3n,[w("div",P3n,[w("h4",null,"章节列表 ("+se(v.value.length)+"章)",1)]),w("div",$3n,[(I(!0),j(tt,null,wt(v.value,ft=>(I(),j("div",{key:ft.index,class:ee(["chapter-list-item",{active:k.value===ft.index}]),onClick:zn=>ze(ft.index)},[w("div",R3n,[w("span",N3n,se(ft.title),1),w("span",L3n,se(ft.wordCount)+"字",1)]),w("div",U3n,se(ft.summary||"暂无简读,点击查看后可调用AI生成"),1)],10,B3n))),128))])]),w("div",V3n,[O.value?(I(),j("div",z3n,[w("h4",null,se(O.value.title),1),w("div",j3n,[D(it,{size:"small",onClick:at},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(cb))]),_:1}),Le[44]||(Le[44]=ce(" 复制 "))]),_:1,__:[44]}),D(it,{size:"small",type:"primary",onClick:bt},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(qu))]),_:1}),Le[45]||(Le[45]=ce(" 导出 "))]),_:1,__:[45]})])])):be("",!0),O.value?(I(),Oe(Wr,{key:1,modelValue:P.value,"onUpdate:modelValue":Le[11]||(Le[11]=ft=>P.value=ft)},{default:A(()=>[D(Yo,{label:"完整内容",name:"content"},{default:A(()=>[w("div",H3n,[D(Kn,{height:"400px"},{default:A(()=>[w("div",W3n,se(T.value),1)]),_:1})])]),_:1}),D(Yo,{label:"章节简读",name:"summary"},{default:A(()=>[w("div",q3n,[w("div",K3n,[D(jt,null,{default:A(()=>[ce(se(O.value.title),1)]),_:1}),D(jt,{type:"info"},{default:A(()=>[ce(se(O.value.wordCount)+"字",1)]),_:1})]),!O.value.summary||O.value.summary.trim()===""?(I(),j("div",G3n,[w("div",Y3n,[w("div",X3n,[Le[46]||(Le[46]=w("span",{class:"prompt-label"},"AI解读提示词",-1)),D(it,{size:"small",text:"",onClick:Le[7]||(Le[7]=ft=>H.value=!H.value)},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Xu))]),_:1}),ce(" "+se(H.value?"收起编辑":"编辑提示词"),1)]),_:1})]),H.value?(I(),j("div",Q3n,[D(Hr,{modelValue:F.value,"onUpdate:modelValue":Le[8]||(Le[8]=ft=>F.value=ft),type:"textarea",rows:8,placeholder:"编辑AI解读提示词...",class:"prompt-textarea"},null,8,["modelValue"]),w("div",ewn,[w("div",twn,[D(jt,{size:"small",type:"info"},{default:A(()=>Le[47]||(Le[47]=[ce("提示:使用 {章节标题}、{章节字数}、{章节内容} 作为变量占位符")])),_:1,__:[47]})]),w("div",nwn,[D(it,{size:"small",onClick:Ot},{default:A(()=>Le[48]||(Le[48]=[ce(" 重置默认 ")])),_:1,__:[48]}),D(it,{size:"small",type:"primary",onClick:Zt},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(db))]),_:1}),Le[49]||(Le[49]=ce(" 预览完整提示词 "))]),_:1,__:[49]})])])])):(I(),j("div",J3n,[w("div",Z3n,se(Fe()),1)]))]),D(Po,{description:"暂无章节简读","image-size":60},{default:A(()=>[D(it,{type:"primary",onClick:Se,loading:U.value},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Dh))]),_:1}),ce(" "+se(U.value?"AI解读中...":"调用AI解读"),1)]),_:1},8,["loading"])]),_:1})])):(I(),j("div",rwn,[w("div",own,[w("div",awn,[Le[50]||(Le[50]=w("span",{class:"prompt-label"},"AI解读提示词",-1)),D(it,{size:"small",text:"",onClick:Le[9]||(Le[9]=ft=>H.value=!H.value)},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Xu))]),_:1}),ce(" "+se(H.value?"收起编辑":"编辑提示词"),1)]),_:1})]),H.value?(I(),j("div",lwn,[D(Hr,{modelValue:F.value,"onUpdate:modelValue":Le[10]||(Le[10]=ft=>F.value=ft),type:"textarea",rows:8,placeholder:"编辑AI解读提示词...",class:"prompt-textarea"},null,8,["modelValue"]),w("div",uwn,[w("div",cwn,[D(jt,{size:"small",type:"info"},{default:A(()=>Le[51]||(Le[51]=[ce("提示:使用 {章节标题}、{章节字数}、{章节内容} 作为变量占位符")])),_:1,__:[51]})]),w("div",dwn,[D(it,{size:"small",onClick:Ot},{default:A(()=>Le[52]||(Le[52]=[ce(" 重置默认 ")])),_:1,__:[52]}),D(it,{size:"small",type:"primary",onClick:Zt},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(db))]),_:1}),Le[53]||(Le[53]=ce(" 预览完整提示词 "))]),_:1,__:[53]})])])])):(I(),j("div",iwn,[w("div",swn,se(Fe()),1)]))]),w("div",fwn,se(O.value.summary),1),w("div",hwn,[D(it,{size:"small",onClick:We,loading:U.value},{default:A(()=>Le[54]||(Le[54]=[ce(" 重新解读 ")])),_:1,__:[54]},8,["loading"])])]))])]),_:1})]),_:1},8,["modelValue"])):(I(),j("div",pwn,[D(Ye,null,{default:A(()=>[D(b(Yu))]),_:1}),Le[55]||(Le[55]=w("p",null,"请选择左侧章节查看详情",-1))]))])])]),_:1},8,["modelValue"]),D(ut,{modelValue:_.value,"onUpdate:modelValue":Le[15]||(Le[15]=ft=>_.value=ft),title:"章节内容查看",width:"80%","before-close":Ee},{footer:A(()=>[w("div",Dwn,[D(it,{onClick:Ee},{default:A(()=>Le[60]||(Le[60]=[ce("关闭")])),_:1,__:[60]}),D(it,{type:"primary",onClick:ve,disabled:!E.value},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(cb))]),_:1}),Le[61]||(Le[61]=ce(" 复制内容 "))]),_:1,__:[61]},8,["disabled"]),D(it,{type:"success",onClick:Ce,disabled:!E.value},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(qu))]),_:1}),Le[62]||(Le[62]=ce(" 导出章节 "))]),_:1,__:[62]},8,["disabled"])])]),default:A(()=>[w("div",vwn,[w("div",mwn,[D(_t,{modelValue:C.value,"onUpdate:modelValue":Le[14]||(Le[14]=ft=>C.value=ft),placeholder:"选择要查看的章节",style:{width:"300px"},onChange:ye},{default:A(()=>[(I(!0),j(tt,null,wt(p.value,ft=>(I(),Oe(mt,{key:ft.index,label:ft.title,value:ft.index},{default:A(()=>[w("div",ywn,[w("span",bwn,se(ft.title),1),w("span",_wn,"("+se(ft.wordCount)+"字)",1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),S.value?(I(),j("div",wwn,[D(jt,null,{default:A(()=>[ce(se(S.value.title),1)]),_:1}),D(jt,{type:"info"},{default:A(()=>[ce(se(S.value.wordCount)+"字",1)]),_:1}),S.value.summary?(I(),Oe(jt,{key:0,type:"warning"},{default:A(()=>[ce(se(S.value.summary),1)]),_:1})):be("",!0)])):be("",!0)]),w("div",Cwn,[D(Kn,{height:"500px"},{default:A(()=>[E.value?(I(),j("div",xwn,se(E.value),1)):(I(),j("div",Swn,[D(Ye,null,{default:A(()=>[D(b(Yu))]),_:1}),Le[59]||(Le[59]=w("p",null,"请选择章节查看内容",-1))]))]),_:1})])])]),_:1},8,["modelValue"]),D(ut,{modelValue:R.value,"onUpdate:modelValue":Le[17]||(Le[17]=ft=>R.value=ft),title:"完整提示词预览",width:"70%","before-close":()=>R.value=!1},{footer:A(()=>[w("div",Own,[D(it,{onClick:Le[16]||(Le[16]=ft=>R.value=!1)},{default:A(()=>Le[63]||(Le[63]=[ce("关闭")])),_:1,__:[63]}),D(it,{type:"primary",onClick:Wt},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(cb))]),_:1}),Le[64]||(Le[64]=ce(" 复制提示词 "))]),_:1,__:[64]})])]),default:A(()=>[w("div",Ewn,[w("div",kwn,[D(Kn,{height:"400px"},{default:A(()=>[w("pre",Awn,se(z.value),1)]),_:1})]),w("div",Twn,[D(jt,{type:"info"},{default:A(()=>[ce("字符数:"+se(z.value.length),1)]),_:1}),D(jt,{type:"warning"},{default:A(()=>[ce("行数:"+se(z.value.split(` -`).length),1)]),_:1})])])]),_:1},8,["modelValue","before-close"])])}}},Iwn=Cs(Fwn,[["__scopeId","data-v-0ef89392"]]),Mwn=[{path:"/",component:Wxt,children:[{path:"",name:"HomePage",component:HSt},{path:"prompts",name:"PromptsLibrary",component:wDt},{path:"novels",name:"NovelManagement",component:UEt},{path:"goals",name:"WritingGoals",component:Qkt},{path:"billing",name:"TokenBilling",component:X9t},{path:"config",name:"ApiConfig",component:LAt},{path:"settings",name:"Settings",component:dTt},{path:"chapters",name:"ChapterManagement",component:XTt},{path:"writer",name:"Writer",component:Lhn},{path:"genres",name:"GenreManagement",component:apn},{path:"tools",name:"ToolsLibrary",component:xpn},{path:"short-story",name:"ShortStory",component:Svn},{path:"book-analysis",name:"BookAnalysis",component:Iwn}]}],Pwn=DHe({history:eHe(),routes:Mwn});const $wn={id:"app"},Bwn={__name:"App",setup(e){const t=X(!1),n=X({}),r=()=>{try{if(Ixt()){const a=Aoe();n.value=a,setTimeout(()=>{t.value=!0},1e3)}}catch(a){console.error("检查公告时出错:",a)}},o=()=>{const a=n.value.version;Mxt(a),t.value=!1};return Kt(()=>{r()}),(a,i)=>{const s=yn("router-view");return I(),j("div",$wn,[D(s),D(Tke,{visible:t.value,"onUpdate:visible":i[0]||(i[0]=l=>t.value=l),announcement:n.value,onClose:o},null,8,["visible","announcement"])])}}};const F7=ACe(Bwn),Rwn=vje();for(const[e,t]of Object.entries(Cst))F7.component(e,t);F7.use(Rwn);F7.use(Pwn);F7.use(HCt);F7.mount("#app"); +请生成章节简读:`;F.value=dt,Ie.success("已重置为默认提示词模板")},Zt=()=>{if(!O.value||!T.value){Ie.warning("当前没有选中章节,无法预览完整提示词");return}z.value=Ue(),R.value=!0},Wt=()=>{navigator.clipboard.writeText(z.value).then(()=>{Ie.success("提示词已复制到剪贴板")}).catch(dt=>{console.error("复制失败:",dt),Ie.error("复制失败")})};return Ze(F,()=>{Te()}),Kt(()=>{N(),Ge()}),(dt,Le)=>{const Mt=bT,je=w_,Ye=Tt,Je=AT,it=Br,mt=bs,_t=ii,Qt=Kg,Vn=C_,Hr=fo,Kn=id,Yo=u1,jt=Si,Po=bf,Wr=l1,ut=Js;return I(),j("div",N4n,[w("div",L4n,[w("div",U4n,[w("div",V4n,[Le[26]||(Le[26]=w("h3",null,"📁 导入小说",-1)),n.value?be("",!0):(I(),j("div",z4n,[Le[20]||(Le[20]=w("label",null,"文件编码:",-1)),D(je,{modelValue:o.value,"onUpdate:modelValue":Le[0]||(Le[0]=ft=>o.value=ft),size:"small"},{default:A(()=>[D(Mt,{label:"utf-8"},{default:A(()=>Le[18]||(Le[18]=[ce("UTF-8")])),_:1,__:[18]}),D(Mt,{label:"gbk"},{default:A(()=>Le[19]||(Le[19]=[ce("GBK/GB2312")])),_:1,__:[19]})]),_:1},8,["modelValue"])])),D(Je,{class:"upload-area",drag:"","auto-upload":!1,"on-change":$,"on-exceed":B,accept:".txt,.docx,.pdf",limit:1,"show-file-list":!1},{tip:A(()=>[w("div",j4n," 支持 .txt、.docx 和 .pdf 格式 (选择编码: "+se(o.value.toUpperCase())+") ",1)]),default:A(()=>[D(Ye,{class:"el-icon--upload"},{default:A(()=>[D(b(Jne))]),_:1}),Le[21]||(Le[21]=w("div",{class:"el-upload__text"},[ce(" 拖拽文件到此处或"),w("em",null,"点击上传")],-1))]),_:1,__:[21]}),n.value?(I(),j("div",H4n,[w("div",W4n,[D(Ye,null,{default:A(()=>[D(b(Yu))]),_:1}),w("div",q4n,[w("span",K4n,se(n.value.name),1),w("span",G4n,se((n.value.size/1024).toFixed(1))+"KB",1),w("span",Y4n,se(o.value.toUpperCase()),1)]),w("div",X4n,[D(it,{type:"text",size:"small",onClick:Z,title:"重新读取"},{default:A(()=>Le[22]||(Le[22]=[ce(" 重新读取 ")])),_:1,__:[22]}),D(it,{type:"text",onClick:we,class:"remove-btn"},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Gs))]),_:1})]),_:1})])]),w("div",J4n,[Le[25]||(Le[25]=w("span",null,"编码:",-1)),D(je,{modelValue:o.value,"onUpdate:modelValue":Le[1]||(Le[1]=ft=>o.value=ft),size:"small",onChange:Z},{default:A(()=>[D(Mt,{label:"utf-8"},{default:A(()=>Le[23]||(Le[23]=[ce("UTF-8")])),_:1,__:[23]}),D(Mt,{label:"gbk"},{default:A(()=>Le[24]||(Le[24]=[ce("GBK/GB2312")])),_:1,__:[24]})]),_:1},8,["modelValue"])])])):be("",!0)]),r.value?(I(),j("div",Z4n,[Le[35]||(Le[35]=w("h3",null,"⚙️ 分析设置",-1)),w("div",Q4n,[Le[27]||(Le[27]=w("label",null,"拆书模板",-1)),D(_t,{modelValue:a.value,"onUpdate:modelValue":Le[2]||(Le[2]=ft=>a.value=ft),placeholder:"选择分析模板"},{default:A(()=>[(I(!0),j(tt,null,wt(M.value,ft=>(I(),Oe(mt,{key:ft.id,label:ft.name,value:ft.id},{default:A(()=>[w("div",e3n,[w("span",t3n,se(ft.icon),1),w("span",n3n,se(ft.name),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),p.value.length>0?(I(),j("div",r3n,[Le[32]||(Le[32]=w("label",null,"章节选择",-1)),D(_t,{modelValue:i.value,"onUpdate:modelValue":Le[3]||(Le[3]=ft=>i.value=ft),multiple:"",placeholder:"选择要分析的章节",size:"small",style:{width:"100%"}},{default:A(()=>[(I(!0),j(tt,null,wt(p.value,ft=>(I(),Oe(mt,{key:ft.index,label:ft.title,value:ft.index},{default:A(()=>[w("div",o3n,[w("div",a3n,[w("span",null,se(ft.title),1),w("span",i3n,se(ft.wordCount)+"字",1)]),ft.summary?(I(),j("div",s3n,se(ft.summary),1)):be("",!0)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),w("div",l3n,[D(it,{size:"small",onClick:Be},{default:A(()=>Le[28]||(Le[28]=[ce("全选")])),_:1,__:[28]}),D(it,{size:"small",onClick:ke},{default:A(()=>Le[29]||(Le[29]=[ce("清空")])),_:1,__:[29]}),D(it,{size:"small",type:"primary",onClick:Ae},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(db))]),_:1}),Le[30]||(Le[30]=ce(" 查看内容 "))]),_:1,__:[30]}),v.value.length>0?(I(),Oe(it,{key:0,size:"small",type:"info",onClick:He},{default:A(()=>Le[31]||(Le[31]=[ce(" 查看简读 ")])),_:1,__:[31]})):be("",!0)])])):r.value?(I(),j("div",u3n,[Le[34]||(Le[34]=w("label",null,"分析范围",-1)),w("div",c3n,[D(Qt,{modelValue:s.value,"onUpdate:modelValue":Le[4]||(Le[4]=ft=>s.value=ft),min:1,max:r.value.length-1e3,step:1e3,size:"small",placeholder:"起始字数"},null,8,["modelValue","max"]),Le[33]||(Le[33]=w("span",{class:"range-separator"},"至",-1)),D(Qt,{modelValue:l.value,"onUpdate:modelValue":Le[5]||(Le[5]=ft=>l.value=ft),min:s.value+1e3,max:r.value.length,step:1e3,size:"small",placeholder:"结束字数"},null,8,["modelValue","min","max"])]),w("p",d3n," 未检测到章节,将分析第 "+se(s.value)+" - "+se(l.value)+" 字 ",1),w("div",f3n,[D(it,{size:"small",type:"primary",onClick:ae,loading:m.value,style:{width:"100%","margin-top":"8px"}},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Dh))]),_:1}),ce(" "+se(m.value?"AI章节检测中...":"AI章节重置"),1)]),_:1},8,["loading"])])])):be("",!0)])):be("",!0),r.value?(I(),j("div",h3n,[w("div",p3n,[D(it,{type:"primary",onClick:pe,loading:u.value,disabled:!a.value,block:""},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(ML))]),_:1}),ce(" "+se(u.value?"分析中...":"开始拆书分析"),1)]),_:1},8,["loading","disabled"]),f.value?(I(),Oe(it,{key:0,onClick:_e,block:""},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(qu))]),_:1}),Le[36]||(Le[36]=ce(" 导出分析结果 "))]),_:1,__:[36]})):be("",!0),f.value?(I(),Oe(it,{key:1,onClick:Pe,block:""},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(OY))]),_:1}),Le[37]||(Le[37]=ce(" 保存到参考库 "))]),_:1,__:[37]})):be("",!0)])])):be("",!0),r.value?(I(),j("div",g3n,[Le[41]||(Le[41]=w("h3",null,"📊 文件统计",-1)),w("div",v3n,[w("div",m3n,[Le[38]||(Le[38]=w("span",{class:"stat-label"},"总字数",-1)),w("span",y3n,se(r.value.length.toLocaleString()),1)]),w("div",b3n,[Le[39]||(Le[39]=w("span",{class:"stat-label"},"预计章节",-1)),w("span",_3n,se(L.value),1)]),w("div",w3n,[Le[40]||(Le[40]=w("span",{class:"stat-label"},"阅读时长",-1)),w("span",C3n,se(Math.ceil(r.value.length/300))+"分钟",1)])])])):be("",!0)]),w("div",x3n,[w("div",S3n,[w("div",D3n,[r.value?!f.value&&!u.value?(I(),j("h3",k3n,"📄 文本预览")):u.value?(I(),j("h3",A3n,"🔄 正在分析...")):(I(),j("h3",T3n,"📋 分析结果")):(I(),j("h3",E3n,"📋 分析结果")),f.value?(I(),j("div",O3n,[D(it,{size:"small",onClick:_e},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(qu))]),_:1}),Le[42]||(Le[42]=ce(" 导出 "))]),_:1,__:[42]}),D(it,{size:"small",onClick:Pe},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(OY))]),_:1}),Le[43]||(Le[43]=ce(" 保存 "))]),_:1,__:[43]})])):be("",!0)]),u.value?(I(),j("div",F3n,[D(Vn,{percentage:c.value,"stroke-width":6,"show-text":!1},null,8,["percentage"]),w("p",I3n,se(d.value),1)])):be("",!0),D(Hr,{ref_key:"analysisEditorRef",ref:g,modelValue:V.value,"onUpdate:modelValue":Le[6]||(Le[6]=ft=>V.value=ft),type:"textarea",placeholder:Y(),rows:30,readonly:u.value&&!f.value,class:"analysis-editor"},null,8,["modelValue","placeholder","readonly"])])])]),D(ut,{modelValue:y.value,"onUpdate:modelValue":Le[13]||(Le[13]=ft=>y.value=ft),title:"AI章节管理",width:"90%","show-close":!0},{footer:A(()=>[w("div",vwn,[D(it,{onClick:Le[12]||(Le[12]=ft=>y.value=!1)},{default:A(()=>Le[56]||(Le[56]=[ce("关闭")])),_:1,__:[56]}),D(it,{type:"info",onClick:Ft},{default:A(()=>Le[57]||(Le[57]=[ce("导出所有简读")])),_:1,__:[57]}),D(it,{type:"primary",onClick:Dt},{default:A(()=>Le[58]||(Le[58]=[ce("导出所有章节")])),_:1,__:[58]})])]),default:A(()=>[w("div",M3n,[w("div",P3n,[w("div",$3n,[w("h4",null,"章节列表 ("+se(v.value.length)+"章)",1)]),w("div",B3n,[(I(!0),j(tt,null,wt(v.value,ft=>(I(),j("div",{key:ft.index,class:ee(["chapter-list-item",{active:k.value===ft.index}]),onClick:zn=>ze(ft.index)},[w("div",N3n,[w("span",L3n,se(ft.title),1),w("span",U3n,se(ft.wordCount)+"字",1)]),w("div",V3n,se(ft.summary||"暂无简读,点击查看后可调用AI生成"),1)],10,R3n))),128))])]),w("div",z3n,[O.value?(I(),j("div",j3n,[w("h4",null,se(O.value.title),1),w("div",H3n,[D(it,{size:"small",onClick:at},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(cb))]),_:1}),Le[44]||(Le[44]=ce(" 复制 "))]),_:1,__:[44]}),D(it,{size:"small",type:"primary",onClick:bt},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(qu))]),_:1}),Le[45]||(Le[45]=ce(" 导出 "))]),_:1,__:[45]})])])):be("",!0),O.value?(I(),Oe(Wr,{key:1,modelValue:P.value,"onUpdate:modelValue":Le[11]||(Le[11]=ft=>P.value=ft)},{default:A(()=>[D(Yo,{label:"完整内容",name:"content"},{default:A(()=>[w("div",W3n,[D(Kn,{height:"400px"},{default:A(()=>[w("div",q3n,se(T.value),1)]),_:1})])]),_:1}),D(Yo,{label:"章节简读",name:"summary"},{default:A(()=>[w("div",K3n,[w("div",G3n,[D(jt,null,{default:A(()=>[ce(se(O.value.title),1)]),_:1}),D(jt,{type:"info"},{default:A(()=>[ce(se(O.value.wordCount)+"字",1)]),_:1})]),!O.value.summary||O.value.summary.trim()===""?(I(),j("div",Y3n,[w("div",X3n,[w("div",J3n,[Le[46]||(Le[46]=w("span",{class:"prompt-label"},"AI解读提示词",-1)),D(it,{size:"small",text:"",onClick:Le[7]||(Le[7]=ft=>H.value=!H.value)},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Xu))]),_:1}),ce(" "+se(H.value?"收起编辑":"编辑提示词"),1)]),_:1})]),H.value?(I(),j("div",ewn,[D(Hr,{modelValue:F.value,"onUpdate:modelValue":Le[8]||(Le[8]=ft=>F.value=ft),type:"textarea",rows:8,placeholder:"编辑AI解读提示词...",class:"prompt-textarea"},null,8,["modelValue"]),w("div",twn,[w("div",nwn,[D(jt,{size:"small",type:"info"},{default:A(()=>Le[47]||(Le[47]=[ce("提示:使用 {章节标题}、{章节字数}、{章节内容} 作为变量占位符")])),_:1,__:[47]})]),w("div",rwn,[D(it,{size:"small",onClick:Ot},{default:A(()=>Le[48]||(Le[48]=[ce(" 重置默认 ")])),_:1,__:[48]}),D(it,{size:"small",type:"primary",onClick:Zt},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(db))]),_:1}),Le[49]||(Le[49]=ce(" 预览完整提示词 "))]),_:1,__:[49]})])])])):(I(),j("div",Z3n,[w("div",Q3n,se(Fe()),1)]))]),D(Po,{description:"暂无章节简读","image-size":60},{default:A(()=>[D(it,{type:"primary",onClick:Se,loading:U.value},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Dh))]),_:1}),ce(" "+se(U.value?"AI解读中...":"调用AI解读"),1)]),_:1},8,["loading"])]),_:1})])):(I(),j("div",own,[w("div",awn,[w("div",iwn,[Le[50]||(Le[50]=w("span",{class:"prompt-label"},"AI解读提示词",-1)),D(it,{size:"small",text:"",onClick:Le[9]||(Le[9]=ft=>H.value=!H.value)},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(Xu))]),_:1}),ce(" "+se(H.value?"收起编辑":"编辑提示词"),1)]),_:1})]),H.value?(I(),j("div",uwn,[D(Hr,{modelValue:F.value,"onUpdate:modelValue":Le[10]||(Le[10]=ft=>F.value=ft),type:"textarea",rows:8,placeholder:"编辑AI解读提示词...",class:"prompt-textarea"},null,8,["modelValue"]),w("div",cwn,[w("div",dwn,[D(jt,{size:"small",type:"info"},{default:A(()=>Le[51]||(Le[51]=[ce("提示:使用 {章节标题}、{章节字数}、{章节内容} 作为变量占位符")])),_:1,__:[51]})]),w("div",fwn,[D(it,{size:"small",onClick:Ot},{default:A(()=>Le[52]||(Le[52]=[ce(" 重置默认 ")])),_:1,__:[52]}),D(it,{size:"small",type:"primary",onClick:Zt},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(db))]),_:1}),Le[53]||(Le[53]=ce(" 预览完整提示词 "))]),_:1,__:[53]})])])])):(I(),j("div",swn,[w("div",lwn,se(Fe()),1)]))]),w("div",hwn,se(O.value.summary),1),w("div",pwn,[D(it,{size:"small",onClick:We,loading:U.value},{default:A(()=>Le[54]||(Le[54]=[ce(" 重新解读 ")])),_:1,__:[54]},8,["loading"])])]))])]),_:1})]),_:1},8,["modelValue"])):(I(),j("div",gwn,[D(Ye,null,{default:A(()=>[D(b(Yu))]),_:1}),Le[55]||(Le[55]=w("p",null,"请选择左侧章节查看详情",-1))]))])])]),_:1},8,["modelValue"]),D(ut,{modelValue:_.value,"onUpdate:modelValue":Le[15]||(Le[15]=ft=>_.value=ft),title:"章节内容查看",width:"80%","before-close":Ee},{footer:A(()=>[w("div",Ewn,[D(it,{onClick:Ee},{default:A(()=>Le[60]||(Le[60]=[ce("关闭")])),_:1,__:[60]}),D(it,{type:"primary",onClick:ve,disabled:!E.value},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(cb))]),_:1}),Le[61]||(Le[61]=ce(" 复制内容 "))]),_:1,__:[61]},8,["disabled"]),D(it,{type:"success",onClick:Ce,disabled:!E.value},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(qu))]),_:1}),Le[62]||(Le[62]=ce(" 导出章节 "))]),_:1,__:[62]},8,["disabled"])])]),default:A(()=>[w("div",mwn,[w("div",ywn,[D(_t,{modelValue:C.value,"onUpdate:modelValue":Le[14]||(Le[14]=ft=>C.value=ft),placeholder:"选择要查看的章节",style:{width:"300px"},onChange:ye},{default:A(()=>[(I(!0),j(tt,null,wt(p.value,ft=>(I(),Oe(mt,{key:ft.index,label:ft.title,value:ft.index},{default:A(()=>[w("div",bwn,[w("span",_wn,se(ft.title),1),w("span",wwn,"("+se(ft.wordCount)+"字)",1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),S.value?(I(),j("div",Cwn,[D(jt,null,{default:A(()=>[ce(se(S.value.title),1)]),_:1}),D(jt,{type:"info"},{default:A(()=>[ce(se(S.value.wordCount)+"字",1)]),_:1}),S.value.summary?(I(),Oe(jt,{key:0,type:"warning"},{default:A(()=>[ce(se(S.value.summary),1)]),_:1})):be("",!0)])):be("",!0)]),w("div",xwn,[D(Kn,{height:"500px"},{default:A(()=>[E.value?(I(),j("div",Swn,se(E.value),1)):(I(),j("div",Dwn,[D(Ye,null,{default:A(()=>[D(b(Yu))]),_:1}),Le[59]||(Le[59]=w("p",null,"请选择章节查看内容",-1))]))]),_:1})])])]),_:1},8,["modelValue"]),D(ut,{modelValue:R.value,"onUpdate:modelValue":Le[17]||(Le[17]=ft=>R.value=ft),title:"完整提示词预览",width:"70%","before-close":()=>R.value=!1},{footer:A(()=>[w("div",Fwn,[D(it,{onClick:Le[16]||(Le[16]=ft=>R.value=!1)},{default:A(()=>Le[63]||(Le[63]=[ce("关闭")])),_:1,__:[63]}),D(it,{type:"primary",onClick:Wt},{default:A(()=>[D(Ye,null,{default:A(()=>[D(b(cb))]),_:1}),Le[64]||(Le[64]=ce(" 复制提示词 "))]),_:1,__:[64]})])]),default:A(()=>[w("div",kwn,[w("div",Awn,[D(Kn,{height:"400px"},{default:A(()=>[w("pre",Twn,se(z.value),1)]),_:1})]),w("div",Own,[D(jt,{type:"info"},{default:A(()=>[ce("字符数:"+se(z.value.length),1)]),_:1}),D(jt,{type:"warning"},{default:A(()=>[ce("行数:"+se(z.value.split(` +`).length),1)]),_:1})])])]),_:1},8,["modelValue","before-close"])])}}},Mwn=Cs(Iwn,[["__scopeId","data-v-d7592a35"]]),Pwn=[{path:"/",component:Wxt,children:[{path:"",name:"HomePage",component:HSt},{path:"prompts",name:"PromptsLibrary",component:wDt},{path:"novels",name:"NovelManagement",component:UEt},{path:"goals",name:"WritingGoals",component:Qkt},{path:"billing",name:"TokenBilling",component:X9t},{path:"config",name:"ApiConfig",component:LAt},{path:"settings",name:"Settings",component:dTt},{path:"chapters",name:"ChapterManagement",component:XTt},{path:"writer",name:"Writer",component:Lhn},{path:"genres",name:"GenreManagement",component:apn},{path:"tools",name:"ToolsLibrary",component:xpn},{path:"short-story",name:"ShortStory",component:Svn},{path:"book-analysis",name:"BookAnalysis",component:Mwn}]}],$wn=DHe({history:eHe(),routes:Pwn});const Bwn={id:"app"},Rwn={__name:"App",setup(e){const t=X(!1),n=X({}),r=()=>{try{if(Ixt()){const a=Aoe();n.value=a,setTimeout(()=>{t.value=!0},1e3)}}catch(a){console.error("检查公告时出错:",a)}},o=()=>{const a=n.value.version;Mxt(a),t.value=!1};return Kt(()=>{r()}),(a,i)=>{const s=yn("router-view");return I(),j("div",Bwn,[D(s),D(Tke,{visible:t.value,"onUpdate:visible":i[0]||(i[0]=l=>t.value=l),announcement:n.value,onClose:o},null,8,["visible","announcement"])])}}};const F7=ACe(Rwn),Nwn=vje();for(const[e,t]of Object.entries(Cst))F7.component(e,t);F7.use(Nwn);F7.use($wn);F7.use(HCt);F7.mount("#app"); diff --git a/dist/assets/pdf.worker-08ee175a.mjs b/dist/assets/pdf.worker-08ee175a.mjs new file mode 100644 index 0000000..049a23c --- /dev/null +++ b/dist/assets/pdf.worker-08ee175a.mjs @@ -0,0 +1,63420 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2024 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ + +/** + * pdfjsVersion = 5.6.205 + * pdfjsBuild = ada343803 + */ +/******/ // The require scope +/******/ var __webpack_require__ = {}; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; + +;// ./src/shared/util.js +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +const LINE_FACTOR = 1.35; +const LINE_DESCENT_FACTOR = 0.35; +const BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + SAVE: 0x08, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + IS_EDITING: 0x80, + OPLIST: 0x100 +}; +const AnnotationMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_FORMS: 2, + ENABLE_STORAGE: 3 +}; +const AnnotationEditorPrefix = "pdfjs_internal_editor_"; +const AnnotationEditorType = { + DISABLE: -1, + NONE: 0, + FREETEXT: 3, + HIGHLIGHT: 9, + STAMP: 13, + INK: 15, + POPUP: 16, + SIGNATURE: 101, + COMMENT: 102 +}; +const AnnotationEditorParamsType = { + RESIZE: 1, + CREATE: 2, + FREETEXT_SIZE: 11, + FREETEXT_COLOR: 12, + FREETEXT_OPACITY: 13, + INK_COLOR: 21, + INK_THICKNESS: 22, + INK_OPACITY: 23, + HIGHLIGHT_COLOR: 31, + HIGHLIGHT_THICKNESS: 32, + HIGHLIGHT_FREE: 33, + HIGHLIGHT_SHOW_ALL: 34, + DRAW_STEP: 41 +}; +const PermissionFlag = { + PRINT: 0x04, + MODIFY_CONTENTS: 0x08, + COPY: 0x10, + MODIFY_ANNOTATIONS: 0x20, + FILL_INTERACTIVE_FORMS: 0x100, + COPY_FOR_ACCESSIBILITY: 0x200, + ASSEMBLE: 0x400, + PRINT_HIGH_QUALITY: 0x800 +}; +const MeshFigureType = { + TRIANGLES: 1, + LATTICE: 2, + PATCH: 3 +}; +const TextRenderingMode = { + FILL: 0, + STROKE: 1, + FILL_STROKE: 2, + INVISIBLE: 3, + FILL_ADD_TO_PATH: 4, + STROKE_ADD_TO_PATH: 5, + FILL_STROKE_ADD_TO_PATH: 6, + ADD_TO_PATH: 7, + FILL_STROKE_MASK: 3, + ADD_TO_PATH_FLAG: 4 +}; +const ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +const AnnotationType = { + TEXT: 1, + LINK: 2, + FREETEXT: 3, + LINE: 4, + SQUARE: 5, + CIRCLE: 6, + POLYGON: 7, + POLYLINE: 8, + HIGHLIGHT: 9, + UNDERLINE: 10, + SQUIGGLY: 11, + STRIKEOUT: 12, + STAMP: 13, + CARET: 14, + INK: 15, + POPUP: 16, + FILEATTACHMENT: 17, + SOUND: 18, + MOVIE: 19, + WIDGET: 20, + SCREEN: 21, + PRINTERMARK: 22, + TRAPNET: 23, + WATERMARK: 24, + THREED: 25, + REDACT: 26 +}; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +const AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +const AnnotationFieldFlag = { + READONLY: 0x0000001, + REQUIRED: 0x0000002, + NOEXPORT: 0x0000004, + MULTILINE: 0x0001000, + PASSWORD: 0x0002000, + NOTOGGLETOOFF: 0x0004000, + RADIO: 0x0008000, + PUSHBUTTON: 0x0010000, + COMBO: 0x0020000, + EDIT: 0x0040000, + SORT: 0x0080000, + FILESELECT: 0x0100000, + MULTISELECT: 0x0200000, + DONOTSPELLCHECK: 0x0400000, + DONOTSCROLL: 0x0800000, + COMB: 0x1000000, + RICHTEXT: 0x2000000, + RADIOSINUNISON: 0x2000000, + COMMITONSELCHANGE: 0x4000000 +}; +const AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" +}; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +const OPS = { + dependency: 1, + setLineWidth: 2, + setLineCap: 3, + setLineJoin: 4, + setMiterLimit: 5, + setDash: 6, + setRenderingIntent: 7, + setFlatness: 8, + setGState: 9, + save: 10, + restore: 11, + transform: 12, + moveTo: 13, + lineTo: 14, + curveTo: 15, + curveTo2: 16, + curveTo3: 17, + closePath: 18, + rectangle: 19, + stroke: 20, + closeStroke: 21, + fill: 22, + eoFill: 23, + fillStroke: 24, + eoFillStroke: 25, + closeFillStroke: 26, + closeEOFillStroke: 27, + endPath: 28, + clip: 29, + eoClip: 30, + beginText: 31, + endText: 32, + setCharSpacing: 33, + setWordSpacing: 34, + setHScale: 35, + setLeading: 36, + setFont: 37, + setTextRenderingMode: 38, + setTextRise: 39, + moveText: 40, + setLeadingMoveText: 41, + setTextMatrix: 42, + nextLine: 43, + showText: 44, + showSpacedText: 45, + nextLineShowText: 46, + nextLineSetSpacingShowText: 47, + setCharWidth: 48, + setCharWidthAndBounds: 49, + setStrokeColorSpace: 50, + setFillColorSpace: 51, + setStrokeColor: 52, + setStrokeColorN: 53, + setFillColor: 54, + setFillColorN: 55, + setStrokeGray: 56, + setFillGray: 57, + setStrokeRGBColor: 58, + setFillRGBColor: 59, + setStrokeCMYKColor: 60, + setFillCMYKColor: 61, + shadingFill: 62, + beginInlineImage: 63, + beginImageData: 64, + endInlineImage: 65, + paintXObject: 66, + markPoint: 67, + markPointProps: 68, + beginMarkedContent: 69, + beginMarkedContentProps: 70, + endMarkedContent: 71, + beginCompat: 72, + endCompat: 73, + paintFormXObjectBegin: 74, + paintFormXObjectEnd: 75, + beginGroup: 76, + endGroup: 77, + beginAnnotation: 80, + endAnnotation: 81, + paintImageMaskXObject: 83, + paintImageMaskXObjectGroup: 84, + paintImageXObject: 85, + paintInlineImageXObject: 86, + paintInlineImageXObjectGroup: 87, + paintImageXObjectRepeat: 88, + paintImageMaskXObjectRepeat: 89, + paintSolidColorImageMask: 90, + constructPath: 91, + setStrokeTransparent: 92, + setFillTransparent: 93, + rawFillPath: 94 +}; +const DrawOPS = { + moveTo: 0, + lineTo: 1, + curveTo: 2, + quadraticCurveTo: 3, + closePath: 4 +}; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +let verbosity = VerbosityLevel.WARNINGS; +function setVerbosityLevel(level) { + if (Number.isInteger(level)) { + verbosity = level; + } +} +function getVerbosityLevel() { + return verbosity; +} +function info(msg) { + if (verbosity >= VerbosityLevel.INFOS) { + console.info(`Info: ${msg}`); + } +} +function warn(msg) { + if (verbosity >= VerbosityLevel.WARNINGS) { + console.warn(`Warning: ${msg}`); + } +} +function unreachable(msg) { + throw new Error(msg); +} +function assert(cond, msg) { + if (!cond) { + unreachable(msg); + } +} +function _isValidProtocol(url) { + switch (url?.protocol) { + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": + return true; + default: + return false; + } +} +function createValidAbsoluteUrl(url, baseUrl = null, options = null) { + if (!url) { + return null; + } + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + if (dots?.length >= 2) { + url = `http://${url}`; + } + } + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch {} + } + } + const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url); + return _isValidProtocol(absoluteUrl) ? absoluteUrl : null; +} +function updateUrlHash(url, hash, allowRel = false) { + const res = URL.parse(url); + if (res) { + res.hash = hash; + return res.href; + } + if (allowRel && createValidAbsoluteUrl(url, "http://example.com")) { + return url.split("#", 1)[0] + `${hash ? `#${hash}` : ""}`; + } + return ""; +} +function stripPath(str) { + return str.substring(str.lastIndexOf("/") + 1); +} +function shadow(obj, prop, value, nonSerializable = false) { + Object.defineProperty(obj, prop, { + value, + enumerable: !nonSerializable, + configurable: true, + writable: false + }); + return value; +} +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + this.message = message; + this.name = name; + } + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +}(); +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg, "PasswordException"); + this.code = code; + } +} +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); + this.details = details; + } +} +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); + } +} +class ResponseException extends BaseException { + constructor(msg, status, missing) { + super(msg, "ResponseException"); + this.status = status; + this.missing = missing; + } +} +class FormatError extends BaseException { + constructor(msg) { + super(msg, "FormatError"); + } +} +class AbortException extends BaseException { + constructor(msg) { + super(msg, "AbortException"); + } +} +function bytesToString(bytes) { + if (typeof bytes !== "object" || bytes?.length === undefined) { + unreachable("Invalid argument for bytesToString"); + } + const length = bytes.length; + const MAX_ARGUMENT_COUNT = 8192; + if (length < MAX_ARGUMENT_COUNT) { + return String.fromCharCode.apply(null, bytes); + } + const strBuf = []; + for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + const chunk = bytes.subarray(i, chunkEnd); + strBuf.push(String.fromCharCode.apply(null, chunk)); + } + return strBuf.join(""); +} +function stringToBytes(str) { + if (typeof str !== "string") { + unreachable("Invalid argument for stringToBytes"); + } + const length = str.length; + const bytes = new Uint8Array(length); + for (let i = 0; i < length; ++i) { + bytes[i] = str.charCodeAt(i) & 0xff; + } + return bytes; +} +function string32(value) { + return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); +} +function objectSize(obj) { + return Object.keys(obj).length; +} +function isLittleEndian() { + const buffer8 = new Uint8Array(4); + buffer8[0] = 1; + const view32 = new Uint32Array(buffer8.buffer, 0, 1); + return view32[0] === 1; +} +function isEvalSupported() { + try { + new Function(""); + return true; + } catch { + return false; + } +} +class FeatureTest { + static get isLittleEndian() { + return shadow(this, "isLittleEndian", isLittleEndian()); + } + static get isEvalSupported() { + return shadow(this, "isEvalSupported", isEvalSupported()); + } + static get isOffscreenCanvasSupported() { + return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); + } + static get isImageDecoderSupported() { + return shadow(this, "isImageDecoderSupported", typeof ImageDecoder !== "undefined"); + } + static get isFloat16ArraySupported() { + return shadow(this, "isFloat16ArraySupported", typeof Float16Array !== "undefined"); + } + static get isSanitizerSupported() { + return shadow(this, "isSanitizerSupported", typeof Sanitizer !== "undefined"); + } + static get platform() { + const { + platform, + userAgent + } = navigator; + return shadow(this, "platform", { + isAndroid: userAgent.includes("Android"), + isLinux: platform.includes("Linux"), + isMac: platform.includes("Mac"), + isWindows: platform.includes("Win"), + isFirefox: userAgent.includes("Firefox") + }); + } + static get isCSSRoundSupported() { + return shadow(this, "isCSSRoundSupported", globalThis.CSS?.supports?.("width: round(1.5px, 1px)")); + } +} +const hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, "0")); +class Util { + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; + } + static domMatrixToTransform(dm) { + return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f]; + } + static scaleMinMax(transform, minMax) { + let temp; + if (transform[0]) { + if (transform[0] < 0) { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + } + minMax[0] *= transform[0]; + minMax[2] *= transform[0]; + if (transform[3] < 0) { + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + } + minMax[1] *= transform[3]; + minMax[3] *= transform[3]; + } else { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + if (transform[1] < 0) { + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + } + minMax[1] *= transform[1]; + minMax[3] *= transform[1]; + if (transform[2] < 0) { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + } + minMax[0] *= transform[2]; + minMax[2] *= transform[2]; + } + minMax[0] += transform[4]; + minMax[1] += transform[5]; + minMax[2] += transform[4]; + minMax[3] += transform[5]; + } + static transform(m1, m2) { + return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; + } + static multiplyByDOMMatrix(m, md) { + return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]]; + } + static applyTransform(p, m, pos = 0) { + const p0 = p[pos]; + const p1 = p[pos + 1]; + p[pos] = p0 * m[0] + p1 * m[2] + m[4]; + p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5]; + } + static applyTransformToBezier(p, transform, pos = 0) { + const m0 = transform[0]; + const m1 = transform[1]; + const m2 = transform[2]; + const m3 = transform[3]; + const m4 = transform[4]; + const m5 = transform[5]; + for (let i = 0; i < 6; i += 2) { + const pI = p[pos + i]; + const pI1 = p[pos + i + 1]; + p[pos + i] = pI * m0 + pI1 * m2 + m4; + p[pos + i + 1] = pI * m1 + pI1 * m3 + m5; + } + } + static applyInverseTransform(p, m) { + const p0 = p[0]; + const p1 = p[1]; + const d = m[0] * m[3] - m[1] * m[2]; + p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + } + static axialAlignedBoundingBox(rect, transform, output) { + const m0 = transform[0]; + const m1 = transform[1]; + const m2 = transform[2]; + const m3 = transform[3]; + const m4 = transform[4]; + const m5 = transform[5]; + const r0 = rect[0]; + const r1 = rect[1]; + const r2 = rect[2]; + const r3 = rect[3]; + let a0 = m0 * r0 + m4; + let a2 = a0; + let a1 = m0 * r2 + m4; + let a3 = a1; + let b0 = m3 * r1 + m5; + let b2 = b0; + let b1 = m3 * r3 + m5; + let b3 = b1; + if (m1 !== 0 || m2 !== 0) { + const m1r0 = m1 * r0; + const m1r2 = m1 * r2; + const m2r1 = m2 * r1; + const m2r3 = m2 * r3; + a0 += m2r1; + a3 += m2r1; + a1 += m2r3; + a2 += m2r3; + b0 += m1r0; + b3 += m1r0; + b1 += m1r2; + b2 += m1r2; + } + output[0] = Math.min(output[0], a0, a1, a2, a3); + output[1] = Math.min(output[1], b0, b1, b2, b3); + output[2] = Math.max(output[2], a0, a1, a2, a3); + output[3] = Math.max(output[3], b0, b1, b2, b3); + } + static inverseTransform(m) { + const d = m[0] * m[3] - m[1] * m[2]; + return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; + } + static singularValueDecompose2dScale(matrix, output) { + const m0 = matrix[0]; + const m1 = matrix[1]; + const m2 = matrix[2]; + const m3 = matrix[3]; + const a = m0 ** 2 + m1 ** 2; + const b = m0 * m2 + m1 * m3; + const c = m2 ** 2 + m3 ** 2; + const first = (a + c) / 2; + const second = Math.sqrt(first ** 2 - (a * c - b ** 2)); + output[0] = Math.sqrt(first + second || 1); + output[1] = Math.sqrt(first - second || 1); + } + static normalizeRect(rect) { + const r = rect.slice(0); + if (rect[0] > rect[2]) { + r[0] = rect[2]; + r[2] = rect[0]; + } + if (rect[1] > rect[3]) { + r[1] = rect[3]; + r[3] = rect[1]; + } + return r; + } + static intersect(rect1, rect2) { + const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); + const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); + if (xLow > xHigh) { + return null; + } + const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); + const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); + if (yLow > yHigh) { + return null; + } + return [xLow, yLow, xHigh, yHigh]; + } + static pointBoundingBox(x, y, minMax) { + minMax[0] = Math.min(minMax[0], x); + minMax[1] = Math.min(minMax[1], y); + minMax[2] = Math.max(minMax[2], x); + minMax[3] = Math.max(minMax[3], y); + } + static rectBoundingBox(x0, y0, x1, y1, minMax) { + minMax[0] = Math.min(minMax[0], x0, x1); + minMax[1] = Math.min(minMax[1], y0, y1); + minMax[2] = Math.max(minMax[2], x0, x1); + minMax[3] = Math.max(minMax[3], y0, y1); + } + static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) { + if (t <= 0 || t >= 1) { + return; + } + const mt = 1 - t; + const tt = t * t; + const ttt = tt * t; + const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3; + const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3; + minMax[0] = Math.min(minMax[0], x); + minMax[1] = Math.min(minMax[1], y); + minMax[2] = Math.max(minMax[2], x); + minMax[3] = Math.max(minMax[3], y); + } + static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) { + if (Math.abs(a) < 1e-12) { + if (Math.abs(b) >= 1e-12) { + this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax); + } + return; + } + const delta = b ** 2 - 4 * c * a; + if (delta < 0) { + return; + } + const sqrtDelta = Math.sqrt(delta); + const a2 = 2 * a; + this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax); + this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax); + } + static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) { + minMax[0] = Math.min(minMax[0], x0, x3); + minMax[1] = Math.min(minMax[1], y0, y3); + minMax[2] = Math.max(minMax[2], x0, x3); + minMax[3] = Math.max(minMax[3], y0, y3); + this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax); + this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax); + } +} +const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 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, 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, 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, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; +function stringToPDFString(str, keepEscapeSequence = false) { + if (str[0] >= "\xEF") { + let encoding; + if (str[0] === "\xFE" && str[1] === "\xFF") { + encoding = "utf-16be"; + if (str.length % 2 === 1) { + str = str.slice(0, -1); + } + } else if (str[0] === "\xFF" && str[1] === "\xFE") { + encoding = "utf-16le"; + if (str.length % 2 === 1) { + str = str.slice(0, -1); + } + } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") { + encoding = "utf-8"; + } + if (encoding) { + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = stringToBytes(str); + const decoded = decoder.decode(buffer); + if (keepEscapeSequence || !decoded.includes("\x1b")) { + return decoded; + } + return decoded.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g, ""); + } catch (ex) { + warn(`stringToPDFString: "${ex}".`); + } + } + } + const strBuf = []; + for (let i = 0, ii = str.length; i < ii; i++) { + const charCode = str.charCodeAt(i); + if (!keepEscapeSequence && charCode === 0x1b) { + while (++i < ii && str.charCodeAt(i) !== 0x1b) {} + continue; + } + const code = PDFStringTranslateTable[charCode]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + return strBuf.join(""); +} +function stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} +function isArrayEqual(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + for (let i = 0, ii = arr1.length; i < ii; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + return true; +} +function getModificationDate(date = new Date()) { + if (!(date instanceof Date)) { + date = new Date(date); + } + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; + return buffer.join(""); +} +let NormalizeRegex = null; +let NormalizationMap = null; +function normalizeUnicode(str) { + if (!NormalizeRegex) { + NormalizeRegex = /([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu; + NormalizationMap = new Map([["ſt", "ſt"]]); + } + return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize("NFKC") : NormalizationMap.get(p2)); +} +function getUuid() { + if (typeof crypto.randomUUID === "function") { + return crypto.randomUUID(); + } + const buf = new Uint8Array(32); + crypto.getRandomValues(buf); + return bytesToString(buf); +} +const AnnotationPrefix = "pdfjs_internal_id_"; +function _isValidExplicitDest(validRef, validName, dest) { + if (!Array.isArray(dest) || dest.length < 2) { + return false; + } + const [page, zoom, ...args] = dest; + if (!validRef(page) && !Number.isInteger(page)) { + return false; + } + if (!validName(zoom)) { + return false; + } + const argsLen = args.length; + let allowNull = true; + switch (zoom.name) { + case "XYZ": + if (argsLen < 2 || argsLen > 3) { + return false; + } + break; + case "Fit": + case "FitB": + return argsLen === 0; + case "FitH": + case "FitBH": + case "FitV": + case "FitBV": + if (argsLen > 1) { + return false; + } + break; + case "FitR": + if (argsLen !== 4) { + return false; + } + allowNull = false; + break; + default: + return false; + } + for (const arg of args) { + if (typeof arg === "number" || allowNull && arg === null) { + continue; + } + return false; + } + return true; +} +const makeArr = () => []; +const makeMap = () => new Map(); +const makeObj = () => Object.create(null); +function MathClamp(v, min, max) { + return Math.min(Math.max(v, min), max); +} +if (typeof Math.sumPrecise !== "function") { + Math.sumPrecise = function (numbers) { + return numbers.reduce((a, b) => a + b, 0); + }; +} + +;// ./src/core/primitives.js + +const CIRCULAR_REF = Symbol("CIRCULAR_REF"); +const EOF = Symbol("EOF"); +let CmdCache = Object.create(null); +let NameCache = Object.create(null); +let RefCache = Object.create(null); +function clearPrimitiveCaches() { + CmdCache = Object.create(null); + NameCache = Object.create(null); + RefCache = Object.create(null); +} +class Name { + constructor(name) { + this.name = name; + } + static get(name) { + return NameCache[name] ||= new Name(name); + } +} +class Cmd { + constructor(cmd) { + this.cmd = cmd; + } + static get(cmd) { + return CmdCache[cmd] ||= new Cmd(cmd); + } +} +const nonSerializable = function nonSerializableClosure() { + return nonSerializable; +}; +class Dict { + __nonSerializable__ = nonSerializable; + #map = new Map(); + objId = null; + suppressEncryption = false; + xref; + constructor(xref = null) { + this.xref = xref; + } + assignXref(newXref) { + this.xref = newXref; + } + get size() { + return this.#map.size; + } + #getValue(isAsync, key1, key2, key3) { + let value = this.#map.get(key1); + if (value === undefined && key2 !== undefined) { + value = this.#map.get(key2); + if (value === undefined && key3 !== undefined) { + value = this.#map.get(key3); + } + } + if (value instanceof Ref && this.xref) { + return isAsync ? this.xref.fetchAsync(value, this.suppressEncryption) : this.xref.fetch(value, this.suppressEncryption); + } + return value; + } + get(key1, key2, key3) { + return this.#getValue(false, key1, key2, key3); + } + async getAsync(key1, key2, key3) { + return this.#getValue(true, key1, key2, key3); + } + getArray(key1, key2, key3) { + let value = this.#getValue(false, key1, key2, key3); + if (Array.isArray(value)) { + value = value.slice(); + for (let i = 0, ii = value.length; i < ii; i++) { + if (value[i] instanceof Ref && this.xref) { + value[i] = this.xref.fetch(value[i], this.suppressEncryption); + } + } + } + return value; + } + getRaw(key) { + return this.#map.get(key); + } + getKeys() { + return this.#map.keys(); + } + getRawValues() { + return this.#map.values(); + } + getRawEntries() { + return this.#map.entries(); + } + set(key, value) { + this.#map.set(key, value); + } + setIfNotExists(key, value) { + if (!this.has(key)) { + this.set(key, value); + } + } + setIfNumber(key, value) { + if (typeof value === "number") { + this.set(key, value); + } + } + setIfArray(key, value) { + if (Array.isArray(value) || ArrayBuffer.isView(value)) { + this.set(key, value); + } + } + setIfDefined(key, value) { + if (value !== undefined && value !== null) { + this.set(key, value); + } + } + setIfName(key, value) { + if (typeof value === "string") { + this.set(key, Name.get(value)); + } else if (value instanceof Name) { + this.set(key, value); + } + } + setIfDict(key, value) { + if (value instanceof Dict) { + this.set(key, value); + } + } + has(key) { + return this.#map.has(key); + } + *[Symbol.iterator]() { + for (const [key, value] of this.#map) { + yield [key, value instanceof Ref && this.xref ? this.xref.fetch(value, this.suppressEncryption) : value]; + } + } + static get empty() { + const emptyDict = new Dict(null); + emptyDict.set = (key, value) => { + unreachable("Should not call `set` on the empty dictionary."); + }; + return shadow(this, "empty", emptyDict); + } + static merge({ + xref, + dictArray, + mergeSubDicts = false + }) { + const mergedDict = new Dict(xref), + properties = new Map(); + for (const dict of dictArray) { + if (!(dict instanceof Dict)) { + continue; + } + for (const [key, value] of dict.getRawEntries()) { + let property = properties.get(key); + if (property === undefined) { + property = []; + properties.set(key, property); + } else if (!mergeSubDicts || !(value instanceof Dict)) { + continue; + } + property.push(value); + } + } + for (const [name, values] of properties) { + if (values.length === 1 || !(values[0] instanceof Dict)) { + mergedDict.set(name, values[0]); + continue; + } + const subDict = new Dict(xref); + for (const dict of values) { + for (const [key, value] of dict.getRawEntries()) { + subDict.setIfNotExists(key, value); + } + } + if (subDict.size > 0) { + mergedDict.set(name, subDict); + } + } + properties.clear(); + return mergedDict.size > 0 ? mergedDict : Dict.empty; + } + clone() { + const dict = new Dict(this.xref); + for (const [key, value] of this.#map) { + dict.set(key, value); + } + return dict; + } + delete(key) { + this.#map.delete(key); + } +} +class Ref { + constructor(num, gen) { + this.num = num; + this.gen = gen; + } + toString() { + if (this.gen === 0) { + return `${this.num}R`; + } + return `${this.num}R${this.gen}`; + } + static fromString(str) { + const ref = RefCache[str]; + if (ref) { + return ref; + } + const m = /^(\d+)R(\d*)$/.exec(str); + if (!m || m[1] === "0") { + return null; + } + return RefCache[str] = new Ref(parseInt(m[1]), !m[2] ? 0 : parseInt(m[2])); + } + static get(num, gen) { + const key = gen === 0 ? `${num}R` : `${num}R${gen}`; + return RefCache[key] ||= new Ref(num, gen); + } +} +class RefSet { + constructor(parent = null) { + this._set = new Set(parent?._set); + } + has(ref) { + return this._set.has(ref.toString()); + } + put(ref) { + this._set.add(ref.toString()); + } + remove(ref) { + this._set.delete(ref.toString()); + } + [Symbol.iterator]() { + return this._set.values(); + } + clear() { + this._set.clear(); + } +} +class RefSetCache { + _map = new Map(); + get size() { + return this._map.size; + } + get(ref) { + return this._map.get(ref.toString()); + } + has(ref) { + return this._map.has(ref.toString()); + } + put(ref, obj) { + this._map.set(ref.toString(), obj); + } + putAlias(ref, aliasRef) { + this._map.set(ref.toString(), this.get(aliasRef)); + } + [Symbol.iterator]() { + return this._map.values(); + } + clear() { + this._map.clear(); + } + *values() { + yield* this._map.values(); + } + *items() { + for (const [ref, value] of this._map) { + yield [Ref.fromString(ref), value]; + } + } + *keys() { + for (const ref of this._map.keys()) { + yield Ref.fromString(ref); + } + } +} +function isName(v, name) { + return v instanceof Name && (name === undefined || v.name === name); +} +function isCmd(v, cmd) { + return v instanceof Cmd && (cmd === undefined || v.cmd === cmd); +} +function isDict(v, type) { + return v instanceof Dict && (type === undefined || isName(v.get("Type"), type)); +} +function isRefsEqual(v1, v2) { + return v1.num === v2.num && v1.gen === v2.gen; +} + +;// ./src/core/base_stream.js + +class BaseStream { + get length() { + unreachable("Abstract getter `length` accessed"); + } + get isEmpty() { + unreachable("Abstract getter `isEmpty` accessed"); + } + get isDataLoaded() { + return shadow(this, "isDataLoaded", true); + } + getByte() { + unreachable("Abstract method `getByte` called"); + } + getBytes(length) { + unreachable("Abstract method `getBytes` called"); + } + async getImageData(length, decoderOptions) { + return this.getBytes(length, decoderOptions); + } + async asyncGetBytes() { + unreachable("Abstract method `asyncGetBytes` called"); + } + get isAsync() { + return false; + } + get isAsyncDecoder() { + return false; + } + get isImageStream() { + return false; + } + get canAsyncDecodeImageFromBuffer() { + return false; + } + async getTransferableImage() { + return null; + } + peekByte() { + const peekedByte = this.getByte(); + if (peekedByte !== -1) { + this.pos--; + } + return peekedByte; + } + peekBytes(length) { + const bytes = this.getBytes(length); + this.pos -= bytes.length; + return bytes; + } + getUint16() { + const b0 = this.getByte(); + const b1 = this.getByte(); + if (b0 === -1 || b1 === -1) { + return -1; + } + return (b0 << 8) + b1; + } + getInt32() { + const b0 = this.getByte(); + const b1 = this.getByte(); + const b2 = this.getByte(); + const b3 = this.getByte(); + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; + } + getByteRange(begin, end) { + unreachable("Abstract method `getByteRange` called"); + } + getString(length) { + return bytesToString(this.getBytes(length)); + } + skip(n) { + this.pos += n || 1; + } + reset() { + unreachable("Abstract method `reset` called"); + } + moveStart() { + unreachable("Abstract method `moveStart` called"); + } + makeSubStream(start, length, dict = null) { + unreachable("Abstract method `makeSubStream` called"); + } + getBaseStreams() { + return null; + } + getOriginalStream() { + return this.stream?.getOriginalStream() || this; + } +} + +;// ./src/core/core_utils.js + + + +const PDF_VERSION_REGEXP = /^[1-9]\.\d$/; +const MAX_INT_32 = 2 ** 31 - 1; +const MIN_INT_32 = -(2 ** 31); +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +const RESOURCES_KEYS_OPERATOR_LIST = ["ColorSpace", "ExtGState", "Font", "Pattern", "Properties", "Shading", "XObject"]; +const RESOURCES_KEYS_TEXT_CONTENT = ["ExtGState", "Font", "Properties", "XObject"]; +function getLookupTableFactory(initializer) { + let lookup; + return function () { + if (initializer) { + lookup = Object.create(null); + initializer(lookup); + initializer = null; + } + return lookup; + }; +} +class MissingDataException extends BaseException { + constructor(begin, end) { + super(`Missing data [${begin}, ${end})`, "MissingDataException"); + this.begin = begin; + this.end = end; + } +} +class ParserEOFException extends BaseException { + constructor(msg) { + super(msg, "ParserEOFException"); + } +} +class XRefEntryException extends BaseException { + constructor(msg) { + super(msg, "XRefEntryException"); + } +} +class XRefParseException extends BaseException { + constructor(msg) { + super(msg, "XRefParseException"); + } +} +function arrayBuffersToBytes(arr) { + const length = arr.length; + if (length === 0) { + return new Uint8Array(0); + } + if (length === 1) { + return new Uint8Array(arr[0]); + } + let dataLength = 0; + for (let i = 0; i < length; i++) { + dataLength += arr[i].byteLength; + } + const data = new Uint8Array(dataLength); + let pos = 0; + for (let i = 0; i < length; i++) { + const item = new Uint8Array(arr[i]); + data.set(item, pos); + pos += item.byteLength; + } + return data; +} +async function fetchBinaryData(url) { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`Failed to fetch file "${url}" with "${response.statusText}".`); + } + return response.bytes(); +} +function getInheritableProperty({ + dict, + key, + getArray = false, + stopWhenFound = true +}) { + let values; + const visited = new RefSet(); + while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) { + if (dict.objId) { + visited.put(dict.objId); + } + const value = getArray ? dict.getArray(key) : dict.get(key); + if (value !== undefined) { + if (stopWhenFound) { + return value; + } + (values ||= []).push(value); + } + dict = dict.get("Parent"); + } + return values; +} +function getParentToUpdate(dict, ref, xref) { + const visited = new RefSet(); + const firstDict = dict; + const result = { + dict: null, + ref: null + }; + while (dict instanceof Dict && !visited.has(ref)) { + visited.put(ref); + if (dict.has("T")) { + break; + } + ref = dict.getRaw("Parent"); + if (!(ref instanceof Ref)) { + return result; + } + dict = xref.fetch(ref); + } + if (dict instanceof Dict && dict !== firstDict) { + result.dict = dict; + result.ref = ref; + } + return result; +} +function deepCompare(a, b) { + if (a === b) { + return true; + } + if (a instanceof Dict && b instanceof Dict) { + if (a.size !== b.size) { + return false; + } + for (const [key, value1] of a.getRawEntries()) { + const value2 = b.getRaw(key); + if (value2 === undefined || !deepCompare(value1, value2)) { + return false; + } + } + return true; + } + if (Array.isArray(a) && Array.isArray(b)) { + if (a.length !== b.length) { + return false; + } + for (let i = 0, ii = a.length; i < ii; i++) { + if (!deepCompare(a[i], b[i])) { + return false; + } + } + return true; + } + return false; +} +const ROMAN_NUMBER_MAP = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]; +function toRomanNumerals(number, lowerCase = false) { + assert(Number.isInteger(number) && number > 0, "The number should be a positive integer."); + const roman = "M".repeat(number / 1000 | 0) + ROMAN_NUMBER_MAP[number % 1000 / 100 | 0] + ROMAN_NUMBER_MAP[10 + (number % 100 / 10 | 0)] + ROMAN_NUMBER_MAP[20 + number % 10]; + return lowerCase ? roman.toLowerCase() : roman; +} +function log2(x) { + return x > 0 ? Math.ceil(Math.log2(x)) : 0; +} +function readInt8(data, offset) { + return data[offset] << 24 >> 24; +} +function readInt16(data, offset) { + return (data[offset] << 24 | data[offset + 1] << 16) >> 16; +} +function readUint16(data, offset) { + return data[offset] << 8 | data[offset + 1]; +} +function readUint32(data, offset) { + return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; +} +function isWhiteSpace(ch) { + return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a; +} +function isBooleanArray(arr, len) { + return Array.isArray(arr) && (len === null || arr.length === len) && arr.every(x => typeof x === "boolean"); +} +function isNumberArray(arr, len) { + if (Array.isArray(arr)) { + return (len === null || arr.length === len) && arr.every(x => typeof x === "number"); + } + return ArrayBuffer.isView(arr) && !(arr instanceof BigInt64Array || arr instanceof BigUint64Array) && (len === null || arr.length === len); +} +function lookupMatrix(arr, fallback) { + return isNumberArray(arr, 6) ? arr : fallback; +} +function lookupRect(arr, fallback) { + return isNumberArray(arr, 4) ? arr : fallback; +} +function lookupNormalRect(arr, fallback) { + return isNumberArray(arr, 4) ? Util.normalizeRect(arr) : fallback; +} +function parseXFAPath(path) { + const positionPattern = /(.+)\[(\d+)\]$/; + return path.split(".").map(component => { + const m = component.match(positionPattern); + if (m) { + return { + name: m[1], + pos: parseInt(m[2], 10) + }; + } + return { + name: component, + pos: 0 + }; + }); +} +function escapePDFName(str) { + const buffer = []; + let start = 0; + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char === 0x25) { + if (start < i) { + buffer.push(str.substring(start, i)); + } + buffer.push(`#${char.toString(16)}`); + start = i + 1; + } + } + if (buffer.length === 0) { + return str; + } + if (start < str.length) { + buffer.push(str.substring(start, str.length)); + } + return buffer.join(""); +} +function escapeString(str) { + return str.replaceAll(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + return `\\${match}`; + }); +} +function _collectJS(entry, xref, list, parents) { + if (!entry) { + return; + } + let parent = null; + if (entry instanceof Ref) { + if (parents.has(entry)) { + return; + } + parent = entry; + parents.put(parent); + entry = xref.fetch(entry); + } + if (Array.isArray(entry)) { + for (const element of entry) { + _collectJS(element, xref, list, parents); + } + } else if (entry instanceof Dict) { + if (isName(entry.get("S"), "JavaScript")) { + const js = entry.get("JS"); + let code; + if (js instanceof BaseStream) { + code = js.getString(); + } else if (typeof js === "string") { + code = js; + } + code &&= stringToPDFString(code, true).replaceAll("\x00", ""); + if (code) { + list.push(code.trim()); + } + } + _collectJS(entry.getRaw("Next"), xref, list, parents); + } + if (parent) { + parents.remove(parent); + } +} +function collectActions(xref, dict, eventType) { + const actions = Object.create(null); + const additionalActionsDicts = getInheritableProperty({ + dict, + key: "AA", + stopWhenFound: false + }); + if (additionalActionsDicts) { + for (let i = additionalActionsDicts.length - 1; i >= 0; i--) { + const additionalActions = additionalActionsDicts[i]; + if (!(additionalActions instanceof Dict)) { + continue; + } + for (const [key, rawActionDict] of additionalActions.getRawEntries()) { + const action = eventType[key]; + if (!action) { + continue; + } + const parents = new RefSet(); + const list = []; + _collectJS(rawActionDict, xref, list, parents); + if (list.length > 0) { + actions[action] = list; + } + } + } + } + if (dict.has("A")) { + const actionDict = dict.get("A"); + const parents = new RefSet(); + const list = []; + _collectJS(actionDict, xref, list, parents); + if (list.length > 0) { + actions.Action = list; + } + } + return objectSize(actions) > 0 ? actions : null; +} +const XMLEntities = { + 0x3c: "<", + 0x3e: ">", + 0x26: "&", + 0x22: """, + 0x27: "'" +}; +function* codePointIter(str) { + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.codePointAt(i); + if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) { + i++; + } + yield char; + } +} +function encodeToXmlString(str) { + const buffer = []; + let start = 0; + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.codePointAt(i); + if (0x20 <= char && char <= 0x7e) { + const entity = XMLEntities[char]; + if (entity) { + if (start < i) { + buffer.push(str.substring(start, i)); + } + buffer.push(entity); + start = i + 1; + } + } else { + if (start < i) { + buffer.push(str.substring(start, i)); + } + buffer.push(`&#x${char.toString(16).toUpperCase()};`); + if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) { + i++; + } + start = i + 1; + } + } + if (buffer.length === 0) { + return str; + } + if (start < str.length) { + buffer.push(str.substring(start, str.length)); + } + return buffer.join(""); +} +function validateFontName(fontFamily, mustWarn = false) { + const m = /^("|').*("|')$/.exec(fontFamily); + if (m && m[1] === m[2]) { + const re = new RegExp(`[^\\\\]${m[1]}`); + if (re.test(fontFamily.slice(1, -1))) { + if (mustWarn) { + warn(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`); + } + return false; + } + } else { + for (const ident of fontFamily.split(/[ \t]+/)) { + if (/^(\d|(-(\d|-)))/.test(ident) || !/^[\w-\\]+$/.test(ident)) { + if (mustWarn) { + warn(`FontFamily contains invalid : ${fontFamily}.`); + } + return false; + } + } + } + return true; +} +function validateCSSFont(cssFontInfo) { + const DEFAULT_CSS_FONT_OBLIQUE = "14"; + const DEFAULT_CSS_FONT_WEIGHT = "400"; + const CSS_FONT_WEIGHT_VALUES = new Set(["100", "200", "300", "400", "500", "600", "700", "800", "900", "1000", "normal", "bold", "bolder", "lighter"]); + const { + fontFamily, + fontWeight, + italicAngle + } = cssFontInfo; + if (!validateFontName(fontFamily, true)) { + return false; + } + const weight = fontWeight ? fontWeight.toString() : ""; + cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight) ? weight : DEFAULT_CSS_FONT_WEIGHT; + const angle = parseFloat(italicAngle); + cssFontInfo.italicAngle = isNaN(angle) || angle < -90 || angle > 90 ? DEFAULT_CSS_FONT_OBLIQUE : italicAngle.toString(); + return true; +} +function recoverJsURL(str) { + const URL_OPEN_METHODS = ["app.launchURL", "window.open", "xfa.host.gotoURL"]; + const regex = new RegExp("^\\s*(" + URL_OPEN_METHODS.join("|").replaceAll(".", "\\.") + ")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))", "i"); + const jsUrl = regex.exec(str); + if (jsUrl?.[2]) { + return { + url: jsUrl[2], + newWindow: jsUrl[1] === "app.launchURL" && jsUrl[3] === "true" + }; + } + return null; +} +function numberToString(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + const roundedValue = Math.round(value * 100); + if (roundedValue % 100 === 0) { + return (roundedValue / 100).toString(); + } + if (roundedValue % 10 === 0) { + return value.toFixed(1); + } + return value.toFixed(2); +} +function getNewAnnotationsMap(annotationStorage) { + if (!annotationStorage) { + return null; + } + const newAnnotationsByPage = new Map(); + for (const [key, value] of annotationStorage) { + if (!key.startsWith(AnnotationEditorPrefix)) { + continue; + } + newAnnotationsByPage.getOrInsertComputed(value.pageIndex, makeArr).push(value); + } + return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null; +} +function stringToAsciiOrUTF16BE(str) { + if (str === null || str === undefined) { + return str; + } + return isAscii(str) ? str : stringToUTF16String(str, true); +} +function isAscii(str) { + if (typeof str !== "string") { + return false; + } + return !str || /^[\x00-\x7F]*$/.test(str); +} +function stringToUTF16HexString(str) { + const buf = []; + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(hexNumbers[char >> 8 & 0xff], hexNumbers[char & 0xff]); + } + return buf.join(""); +} +function stringToUTF16String(str, bigEndian = false) { + const buf = []; + if (bigEndian) { + buf.push("\xFE\xFF"); + } + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff)); + } + return buf.join(""); +} +function getRotationMatrix(rotation, width, height) { + switch (rotation) { + case 90: + return [0, 1, -1, 0, width, 0]; + case 180: + return [-1, 0, 0, -1, width, height]; + case 270: + return [0, -1, 1, 0, 0, height]; + default: + throw new Error("Invalid rotation"); + } +} +function getSizeInBytes(x) { + return Math.ceil(Math.ceil(Math.log2(1 + x)) / 8); +} + +;// ./external/qcms/qcms_utils.js +class QCMS { + static #memoryArray = null; + static _memory = null; + static _mustAddAlpha = false; + static _destBuffer = null; + static _destOffset = 0; + static _destLength = 0; + static _cssColor = ""; + static _makeHexColor = null; + static get _memoryArray() { + const array = this.#memoryArray; + if (array?.byteLength) { + return array; + } + return this.#memoryArray = new Uint8Array(this._memory.buffer); + } +} +function copy_result(ptr, len) { + const { + _mustAddAlpha, + _destBuffer, + _destOffset, + _destLength, + _memoryArray + } = QCMS; + if (len === _destLength) { + _destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset); + return; + } + if (_mustAddAlpha) { + for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) { + _destBuffer[j] = _memoryArray[i]; + _destBuffer[j + 1] = _memoryArray[i + 1]; + _destBuffer[j + 2] = _memoryArray[i + 2]; + _destBuffer[j + 3] = 255; + } + } else { + for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) { + _destBuffer[j] = _memoryArray[i]; + _destBuffer[j + 1] = _memoryArray[i + 1]; + _destBuffer[j + 2] = _memoryArray[i + 2]; + } + } +} +function copy_rgb(ptr) { + const { + _destBuffer, + _destOffset, + _memoryArray + } = QCMS; + _destBuffer[_destOffset] = _memoryArray[ptr]; + _destBuffer[_destOffset + 1] = _memoryArray[ptr + 1]; + _destBuffer[_destOffset + 2] = _memoryArray[ptr + 2]; +} +function make_cssRGB(ptr) { + const { + _memoryArray + } = QCMS; + QCMS._cssColor = QCMS._makeHexColor(_memoryArray[ptr], _memoryArray[ptr + 1], _memoryArray[ptr + 2]); +} + +;// ./external/qcms/qcms.js + +let wasm; +const cachedTextDecoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { + ignoreBOM: true, + fatal: true +}) : { + decode: () => { + throw Error('TextDecoder not available'); + } +}; +if (typeof TextDecoder !== 'undefined') { + cachedTextDecoder.decode(); +} +; +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} +let WASM_VECTOR_LEN = 0; +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1, 1) >>> 0; + getUint8ArrayMemory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} +function qcms_convert_array(transformer, src) { + const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.qcms_convert_array(transformer, ptr0, len0); +} +function qcms_convert_one(transformer, src, css) { + wasm.qcms_convert_one(transformer, src, css); +} +function qcms_convert_three(transformer, src1, src2, src3, css) { + wasm.qcms_convert_three(transformer, src1, src2, src3, css); +} +function qcms_convert_four(transformer, src1, src2, src3, src4, css) { + wasm.qcms_convert_four(transformer, src1, src2, src3, src4, css); +} +function qcms_transformer_from_memory(mem, in_type, intent) { + const ptr0 = passArray8ToWasm0(mem, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.qcms_transformer_from_memory(ptr0, len0, in_type, intent); + return ret >>> 0; +} +function qcms_drop_transformer(transformer) { + wasm.qcms_drop_transformer(transformer); +} +const DataType = Object.freeze({ + RGB8: 0, + "0": "RGB8", + RGBA8: 1, + "1": "RGBA8", + BGRA8: 2, + "2": "BGRA8", + Gray8: 3, + "3": "Gray8", + GrayA8: 4, + "4": "GrayA8", + CMYK: 5, + "5": "CMYK" +}); +const Intent = Object.freeze({ + Perceptual: 0, + "0": "Perceptual", + RelativeColorimetric: 1, + "1": "RelativeColorimetric", + Saturation: 2, + "2": "Saturation", + AbsoluteColorimetric: 3, + "3": "AbsoluteColorimetric" +}); +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + } else { + throw e; + } + } + } + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + if (instance instanceof WebAssembly.Instance) { + return { + instance, + module + }; + } else { + return instance; + } + } +} +function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbg_copyresult_b08ee7d273f295dd = function (arg0, arg1) { + copy_result(arg0 >>> 0, arg1 >>> 0); + }; + imports.wbg.__wbg_copyrgb_d60ce17bb05d9b67 = function (arg0) { + copy_rgb(arg0 >>> 0); + }; + imports.wbg.__wbg_makecssRGB_893bf0cd9fdb302d = function (arg0) { + make_cssRGB(arg0 >>> 0); + }; + imports.wbg.__wbindgen_init_externref_table = function () { + const table = wasm.__wbindgen_export_0; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); + }; + imports.wbg.__wbindgen_throw = function (arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + return imports; +} +function __wbg_init_memory(imports, memory) {} +function __wbg_finalize_init(instance, module) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedUint8ArrayMemory0 = null; + wasm.__wbindgen_start(); + return wasm; +} +function initSync(module) { + if (wasm !== undefined) return wasm; + if (typeof module !== 'undefined') { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({ + module + } = module); + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead'); + } + } + const imports = __wbg_get_imports(); + __wbg_init_memory(imports); + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + const instance = new WebAssembly.Instance(module, imports); + return __wbg_finalize_init(instance, module); +} +async function __wbg_init(module_or_path) { + if (wasm !== undefined) return wasm; + if (typeof module_or_path !== 'undefined') { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({ + module_or_path + } = module_or_path); + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead'); + } + } + const imports = __wbg_get_imports(); + if (typeof module_or_path === 'string' || typeof Request === 'function' && module_or_path instanceof Request || typeof URL === 'function' && module_or_path instanceof URL) { + module_or_path = fetch(module_or_path); + } + __wbg_init_memory(imports); + const { + instance, + module + } = await __wbg_load(await module_or_path, imports); + return __wbg_finalize_init(instance, module); +} + +/* harmony default export */ const qcms = ((/* unused pure expression or super */ null && (__wbg_init))); +;// ./src/core/colorspace.js + + +function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) { + const COMPONENTS = 3; + alpha01 = alpha01 !== 1 ? 0 : alpha01; + const xRatio = w1 / w2; + const yRatio = h1 / h2; + let newIndex = 0, + oldIndex; + const xScaled = new Uint16Array(w2); + const w1Scanline = w1 * COMPONENTS; + for (let i = 0; i < w2; i++) { + xScaled[i] = Math.floor(i * xRatio) * COMPONENTS; + } + for (let i = 0; i < h2; i++) { + const py = Math.floor(i * yRatio) * w1Scanline; + for (let j = 0; j < w2; j++) { + oldIndex = py + xScaled[j]; + dest[newIndex++] = src[oldIndex++]; + dest[newIndex++] = src[oldIndex++]; + dest[newIndex++] = src[oldIndex++]; + newIndex += alpha01; + } + } +} +function resizeRgbaImage(src, dest, w1, h1, w2, h2, alpha01) { + const xRatio = w1 / w2; + const yRatio = h1 / h2; + let newIndex = 0; + const xScaled = new Uint16Array(w2); + if (alpha01 === 1) { + for (let i = 0; i < w2; i++) { + xScaled[i] = Math.floor(i * xRatio); + } + const src32 = new Uint32Array(src.buffer); + const dest32 = new Uint32Array(dest.buffer); + const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00; + for (let i = 0; i < h2; i++) { + const buf = src32.subarray(Math.floor(i * yRatio) * w1); + for (let j = 0; j < w2; j++) { + dest32[newIndex++] |= buf[xScaled[j]] & rgbMask; + } + } + } else { + const COMPONENTS = 4; + const w1Scanline = w1 * COMPONENTS; + for (let i = 0; i < w2; i++) { + xScaled[i] = Math.floor(i * xRatio) * COMPONENTS; + } + for (let i = 0; i < h2; i++) { + const buf = src.subarray(Math.floor(i * yRatio) * w1Scanline); + for (let j = 0; j < w2; j++) { + const oldIndex = xScaled[j]; + dest[newIndex++] = buf[oldIndex]; + dest[newIndex++] = buf[oldIndex + 1]; + dest[newIndex++] = buf[oldIndex + 2]; + } + } + } +} +function copyRgbaImage(src, dest, alpha01) { + if (alpha01 === 1) { + const src32 = new Uint32Array(src.buffer); + const dest32 = new Uint32Array(dest.buffer); + const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00; + for (let i = 0, ii = src32.length; i < ii; i++) { + dest32[i] |= src32[i] & rgbMask; + } + } else { + let j = 0; + for (let i = 0, ii = src.length; i < ii; i += 4) { + dest[j++] = src[i]; + dest[j++] = src[i + 1]; + dest[j++] = src[i + 2]; + } + } +} +function isDefaultDecodeHelper(decode, expectedLen) { + if (!Array.isArray(decode)) { + return true; + } + const decodeLen = decode.length; + if (decodeLen < expectedLen) { + warn("Decode map length is too short."); + return true; + } + if (decodeLen > expectedLen) { + info("Truncating too long decode map."); + decode.length = expectedLen; + } + return false; +} +class ColorSpace { + static #rgbBuf = new Uint8ClampedArray(3); + constructor(name, numComps) { + this.name = name; + this.numComps = numComps; + } + getRgb(src, srcOffset, output = new Uint8ClampedArray(3)) { + this.getRgbItem(src, srcOffset, output, 0); + return output; + } + getRgbHex(src, srcOffset) { + const buffer = this.getRgb(src, srcOffset, ColorSpace.#rgbBuf); + return Util.makeHexColor(buffer[0], buffer[1], buffer[2]); + } + getRgbItem(src, srcOffset, dest, destOffset) { + unreachable("Should not call ColorSpace.getRgbItem"); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + unreachable("Should not call ColorSpace.getRgbBuffer"); + } + getOutputLength(inputLength, alpha01) { + unreachable("Should not call ColorSpace.getOutputLength"); + } + isPassthrough(bits) { + return false; + } + isDefaultDecode(decode, bpc) { + return ColorSpace.isDefaultDecode(decode, this.numComps); + } + fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) { + const count = originalWidth * originalHeight; + let rgbBuf = null; + const numComponentColors = 1 << bpc; + const needsResizing = originalHeight !== height || originalWidth !== width; + if (this.isPassthrough(bpc)) { + rgbBuf = comps; + } else if (this.numComps === 1 && count > numComponentColors && this.name !== "DeviceGray" && this.name !== "DeviceRGB") { + const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors); + for (let i = 0; i < numComponentColors; i++) { + allColors[i] = i; + } + const colorMap = new Uint8ClampedArray(numComponentColors * 3); + this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0); + if (!needsResizing) { + let destPos = 0; + for (let i = 0; i < count; ++i) { + const key = comps[i] * 3; + dest[destPos++] = colorMap[key]; + dest[destPos++] = colorMap[key + 1]; + dest[destPos++] = colorMap[key + 2]; + destPos += alpha01; + } + } else { + rgbBuf = new Uint8Array(count * 3); + let rgbPos = 0; + for (let i = 0; i < count; ++i) { + const key = comps[i] * 3; + rgbBuf[rgbPos++] = colorMap[key]; + rgbBuf[rgbPos++] = colorMap[key + 1]; + rgbBuf[rgbPos++] = colorMap[key + 2]; + } + } + } else if (!needsResizing) { + this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01); + } else { + rgbBuf = new Uint8ClampedArray(count * 3); + this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0); + } + if (rgbBuf) { + if (needsResizing) { + resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01); + } else { + let destPos = 0, + rgbPos = 0; + for (let i = 0, ii = width * actualHeight; i < ii; i++) { + dest[destPos++] = rgbBuf[rgbPos++]; + dest[destPos++] = rgbBuf[rgbPos++]; + dest[destPos++] = rgbBuf[rgbPos++]; + destPos += alpha01; + } + } + } + } + get usesZeroToOneRange() { + return shadow(this, "usesZeroToOneRange", true); + } + static isDefaultDecode(decode, numComps) { + if (isDefaultDecodeHelper(decode, numComps * 2)) { + return true; + } + for (let i = 0, ii = decode.length; i < ii; i += 2) { + if (decode[i] !== 0 || decode[i + 1] !== 1) { + return false; + } + } + return true; + } +} +class AlternateCS extends ColorSpace { + constructor(numComps, base, tintFn) { + super("Alternate", numComps); + this.base = base; + this.tintFn = tintFn; + this.tmpBuf = new Float32Array(base.numComps); + } + getRgbItem(src, srcOffset, dest, destOffset) { + const tmpBuf = this.tmpBuf; + this.tintFn(src, srcOffset, tmpBuf, 0); + this.base.getRgbItem(tmpBuf, 0, dest, destOffset); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const tintFn = this.tintFn; + const base = this.base; + const scale = 1 / ((1 << bits) - 1); + const baseNumComps = base.numComps; + const usesZeroToOneRange = base.usesZeroToOneRange; + const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0; + let pos = isPassthrough ? destOffset : 0; + const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count); + const numComps = this.numComps; + const scaled = new Float32Array(numComps); + const tinted = new Float32Array(baseNumComps); + let i, j; + for (i = 0; i < count; i++) { + for (j = 0; j < numComps; j++) { + scaled[j] = src[srcOffset++] * scale; + } + tintFn(scaled, 0, tinted, 0); + if (usesZeroToOneRange) { + for (j = 0; j < baseNumComps; j++) { + baseBuf[pos++] = tinted[j] * 255; + } + } else { + base.getRgbItem(tinted, 0, baseBuf, pos); + pos += baseNumComps; + } + } + if (!isPassthrough) { + base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01); + } + } + getOutputLength(inputLength, alpha01) { + return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01); + } +} +class PatternCS extends ColorSpace { + constructor(baseCS) { + super("Pattern", null); + this.base = baseCS; + } + isDefaultDecode(decode, bpc) { + unreachable("Should not call PatternCS.isDefaultDecode"); + } +} +class IndexedCS extends ColorSpace { + constructor(base, highVal, lookup) { + super("Indexed", 1); + this.base = base; + this.highVal = highVal; + const length = base.numComps * (highVal + 1); + this.lookup = new Uint8Array(length); + if (lookup instanceof BaseStream) { + const bytes = lookup.getBytes(length); + this.lookup.set(bytes); + } else if (typeof lookup === "string") { + for (let i = 0; i < length; ++i) { + this.lookup[i] = lookup.charCodeAt(i) & 0xff; + } + } else { + throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`); + } + } + getRgbItem(src, srcOffset, dest, destOffset) { + const { + base, + highVal, + lookup + } = this; + const start = MathClamp(Math.round(src[srcOffset]), 0, highVal) * base.numComps; + base.getRgbBuffer(lookup, start, 1, dest, destOffset, 8, 0); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const { + base, + highVal, + lookup + } = this; + const { + numComps + } = base; + const outputDelta = base.getOutputLength(numComps, alpha01); + for (let i = 0; i < count; ++i) { + const lookupPos = MathClamp(Math.round(src[srcOffset++]), 0, highVal) * numComps; + base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01); + destOffset += outputDelta; + } + } + getOutputLength(inputLength, alpha01) { + return this.base.getOutputLength(inputLength * this.base.numComps, alpha01); + } + isDefaultDecode(decode, bpc) { + if (isDefaultDecodeHelper(decode, 2)) { + return true; + } + if (!Number.isInteger(bpc) || bpc < 1) { + warn("Bits per component is not correct"); + return true; + } + return decode[0] === 0 && decode[1] === (1 << bpc) - 1; + } +} +class DeviceGrayCS extends ColorSpace { + constructor() { + super("DeviceGray", 1); + } + getRgbItem(src, srcOffset, dest, destOffset) { + const c = src[srcOffset] * 255; + dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c; + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 255 / ((1 << bits) - 1); + let j = srcOffset, + q = destOffset; + for (let i = 0; i < count; ++i) { + const c = scale * src[j++]; + dest[q++] = c; + dest[q++] = c; + dest[q++] = c; + q += alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01); + } +} +class DeviceRgbCS extends ColorSpace { + constructor() { + super("DeviceRGB", 3); + } + getRgbItem(src, srcOffset, dest, destOffset) { + dest[destOffset] = src[srcOffset] * 255; + dest[destOffset + 1] = src[srcOffset + 1] * 255; + dest[destOffset + 2] = src[srcOffset + 2] * 255; + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + if (bits === 8 && alpha01 === 0) { + dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset); + return; + } + const scale = 255 / ((1 << bits) - 1); + let j = srcOffset, + q = destOffset; + for (let i = 0; i < count; ++i) { + dest[q++] = scale * src[j++]; + dest[q++] = scale * src[j++]; + dest[q++] = scale * src[j++]; + q += alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + } + isPassthrough(bits) { + return bits === 8; + } +} +class DeviceRgbaCS extends ColorSpace { + constructor() { + super("DeviceRGBA", 4); + } + getOutputLength(inputLength, _alpha01) { + return inputLength * 4; + } + isPassthrough(bits) { + return bits === 8; + } + fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) { + if (originalHeight !== height || originalWidth !== width) { + resizeRgbaImage(comps, dest, originalWidth, originalHeight, width, height, alpha01); + } else { + copyRgbaImage(comps, dest, alpha01); + } + } +} +class DeviceCmykCS extends ColorSpace { + constructor() { + super("DeviceCMYK", 4); + } + #toRgb(src, srcOffset, srcScale, dest, destOffset) { + const c = src[srcOffset] * srcScale; + const m = src[srcOffset + 1] * srcScale; + const y = src[srcOffset + 2] * srcScale; + const k = src[srcOffset + 3] * srcScale; + dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747); + dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578); + dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367); + } + getRgbItem(src, srcOffset, dest, destOffset) { + this.#toRgb(src, srcOffset, 1, dest, destOffset); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 1 / ((1 << bits) - 1); + for (let i = 0; i < count; i++) { + this.#toRgb(src, srcOffset, scale, dest, destOffset); + srcOffset += 4; + destOffset += 3 + alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength / 4 * (3 + alpha01) | 0; + } +} +class CalGrayCS extends ColorSpace { + constructor(whitePoint, blackPoint, gamma) { + super("CalGray", 1); + if (!whitePoint) { + throw new FormatError("WhitePoint missing - required for color space CalGray"); + } + [this.XW, this.YW, this.ZW] = whitePoint; + [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0]; + this.G = gamma || 1; + if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { + throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`); + } + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + info(`Invalid BlackPoint for ${this.name}, falling back to default.`); + this.XB = this.YB = this.ZB = 0; + } + if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) { + warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`); + } + if (this.G < 1) { + info(`Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`); + this.G = 1; + } + } + #toRgb(src, srcOffset, dest, destOffset, scale) { + const A = src[srcOffset] * scale; + const AG = A ** this.G; + const L = this.YW * AG; + const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0); + dest[destOffset] = val; + dest[destOffset + 1] = val; + dest[destOffset + 2] = val; + } + getRgbItem(src, srcOffset, dest, destOffset) { + this.#toRgb(src, srcOffset, dest, destOffset, 1); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 1 / ((1 << bits) - 1); + for (let i = 0; i < count; ++i) { + this.#toRgb(src, srcOffset, dest, destOffset, scale); + srcOffset += 1; + destOffset += 3 + alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01); + } +} +class CalRGBCS extends ColorSpace { + static #BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]); + static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]); + static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]); + static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]); + static #tempNormalizeMatrix = new Float32Array(3); + static #tempConvertMatrix1 = new Float32Array(3); + static #tempConvertMatrix2 = new Float32Array(3); + static #DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0; + constructor(whitePoint, blackPoint, gamma, matrix) { + super("CalRGB", 3); + if (!whitePoint) { + throw new FormatError("WhitePoint missing - required for color space CalRGB"); + } + const [XW, YW, ZW] = this.whitePoint = whitePoint; + const [XB, YB, ZB] = this.blackPoint = blackPoint || new Float32Array(3); + [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]); + [this.MXA, this.MYA, this.MZA, this.MXB, this.MYB, this.MZB, this.MXC, this.MYC, this.MZC] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); + if (XW < 0 || ZW < 0 || YW !== 1) { + throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`); + } + if (XB < 0 || YB < 0 || ZB < 0) { + info(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + "falling back to default."); + this.blackPoint = new Float32Array(3); + } + if (this.GR < 0 || this.GG < 0 || this.GB < 0) { + info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`); + this.GR = this.GG = this.GB = 1; + } + } + #matrixProduct(a, b, result) { + result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2]; + result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2]; + } + #toFlat(sourceWhitePoint, LMS, result) { + result[0] = LMS[0] * 1 / sourceWhitePoint[0]; + result[1] = LMS[1] * 1 / sourceWhitePoint[1]; + result[2] = LMS[2] * 1 / sourceWhitePoint[2]; + } + #toD65(sourceWhitePoint, LMS, result) { + const D65X = 0.95047; + const D65Y = 1; + const D65Z = 1.08883; + result[0] = LMS[0] * D65X / sourceWhitePoint[0]; + result[1] = LMS[1] * D65Y / sourceWhitePoint[1]; + result[2] = LMS[2] * D65Z / sourceWhitePoint[2]; + } + #sRGBTransferFunction(color) { + if (color <= 0.0031308) { + return MathClamp(12.92 * color, 0, 1); + } + if (color >= 0.99554525) { + return 1; + } + return MathClamp((1 + 0.055) * color ** (1 / 2.4) - 0.055, 0, 1); + } + #decodeL(L) { + if (L < 0) { + return -this.#decodeL(-L); + } + if (L > 8.0) { + return ((L + 16) / 116) ** 3; + } + return L * CalRGBCS.#DECODE_L_CONSTANT; + } + #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) { + if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) { + result[0] = XYZ_Flat[0]; + result[1] = XYZ_Flat[1]; + result[2] = XYZ_Flat[2]; + return; + } + const zeroDecodeL = this.#decodeL(0); + const X_DST = zeroDecodeL; + const X_SRC = this.#decodeL(sourceBlackPoint[0]); + const Y_DST = zeroDecodeL; + const Y_SRC = this.#decodeL(sourceBlackPoint[1]); + const Z_DST = zeroDecodeL; + const Z_SRC = this.#decodeL(sourceBlackPoint[2]); + const X_Scale = (1 - X_DST) / (1 - X_SRC); + const X_Offset = 1 - X_Scale; + const Y_Scale = (1 - Y_DST) / (1 - Y_SRC); + const Y_Offset = 1 - Y_Scale; + const Z_Scale = (1 - Z_DST) / (1 - Z_SRC); + const Z_Offset = 1 - Z_Scale; + result[0] = XYZ_Flat[0] * X_Scale + X_Offset; + result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset; + result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset; + } + #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) { + if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) { + result[0] = XYZ_In[0]; + result[1] = XYZ_In[1]; + result[2] = XYZ_In[2]; + return; + } + const LMS = result; + this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS); + const LMS_Flat = CalRGBCS.#tempNormalizeMatrix; + this.#toFlat(sourceWhitePoint, LMS, LMS_Flat); + this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result); + } + #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) { + const LMS = result; + this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS); + const LMS_D65 = CalRGBCS.#tempNormalizeMatrix; + this.#toD65(sourceWhitePoint, LMS, LMS_D65); + this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result); + } + #toRgb(src, srcOffset, dest, destOffset, scale) { + const A = MathClamp(src[srcOffset] * scale, 0, 1); + const B = MathClamp(src[srcOffset + 1] * scale, 0, 1); + const C = MathClamp(src[srcOffset + 2] * scale, 0, 1); + const AGR = A === 1 ? 1 : A ** this.GR; + const BGG = B === 1 ? 1 : B ** this.GG; + const CGB = C === 1 ? 1 : C ** this.GB; + const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB; + const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB; + const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB; + const XYZ = CalRGBCS.#tempConvertMatrix1; + XYZ[0] = X; + XYZ[1] = Y; + XYZ[2] = Z; + const XYZ_Flat = CalRGBCS.#tempConvertMatrix2; + this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat); + const XYZ_Black = CalRGBCS.#tempConvertMatrix1; + this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black); + const XYZ_D65 = CalRGBCS.#tempConvertMatrix2; + this.#normalizeWhitePointToD65(CalRGBCS.#FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65); + const SRGB = CalRGBCS.#tempConvertMatrix1; + this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB); + dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255; + dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255; + dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255; + } + getRgbItem(src, srcOffset, dest, destOffset) { + this.#toRgb(src, srcOffset, dest, destOffset, 1); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 1 / ((1 << bits) - 1); + for (let i = 0; i < count; ++i) { + this.#toRgb(src, srcOffset, dest, destOffset, scale); + srcOffset += 3; + destOffset += 3 + alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + } +} +class LabCS extends ColorSpace { + constructor(whitePoint, blackPoint, range) { + super("Lab", 3); + if (!whitePoint) { + throw new FormatError("WhitePoint missing - required for color space Lab"); + } + [this.XW, this.YW, this.ZW] = whitePoint; + [this.amin, this.amax, this.bmin, this.bmax] = range || [-100, 100, -100, 100]; + [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0]; + if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { + throw new FormatError("Invalid WhitePoint components, no fallback available"); + } + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + info("Invalid BlackPoint, falling back to default"); + this.XB = this.YB = this.ZB = 0; + } + if (this.amin > this.amax || this.bmin > this.bmax) { + info("Invalid Range, falling back to defaults"); + this.amin = -100; + this.amax = 100; + this.bmin = -100; + this.bmax = 100; + } + } + #fn_g(x) { + return x >= 6 / 29 ? x ** 3 : 108 / 841 * (x - 4 / 29); + } + #decode(value, high1, low2, high2) { + return low2 + value * (high2 - low2) / high1; + } + #toRgb(src, srcOffset, maxVal, dest, destOffset) { + let Ls = src[srcOffset]; + let as = src[srcOffset + 1]; + let bs = src[srcOffset + 2]; + if (maxVal !== false) { + Ls = this.#decode(Ls, maxVal, 0, 100); + as = this.#decode(as, maxVal, this.amin, this.amax); + bs = this.#decode(bs, maxVal, this.bmin, this.bmax); + } + if (as > this.amax) { + as = this.amax; + } else if (as < this.amin) { + as = this.amin; + } + if (bs > this.bmax) { + bs = this.bmax; + } else if (bs < this.bmin) { + bs = this.bmin; + } + const M = (Ls + 16) / 116; + const L = M + as / 500; + const N = M - bs / 200; + const X = this.XW * this.#fn_g(L); + const Y = this.YW * this.#fn_g(M); + const Z = this.ZW * this.#fn_g(N); + let r, g, b; + if (this.ZW < 1) { + r = X * 3.1339 + Y * -1.617 + Z * -0.4906; + g = X * -0.9785 + Y * 1.916 + Z * 0.0333; + b = X * 0.072 + Y * -0.229 + Z * 1.4057; + } else { + r = X * 3.2406 + Y * -1.5372 + Z * -0.4986; + g = X * -0.9689 + Y * 1.8758 + Z * 0.0415; + b = X * 0.0557 + Y * -0.204 + Z * 1.057; + } + dest[destOffset] = Math.sqrt(r) * 255; + dest[destOffset + 1] = Math.sqrt(g) * 255; + dest[destOffset + 2] = Math.sqrt(b) * 255; + } + getRgbItem(src, srcOffset, dest, destOffset) { + this.#toRgb(src, srcOffset, false, dest, destOffset); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const maxVal = (1 << bits) - 1; + for (let i = 0; i < count; i++) { + this.#toRgb(src, srcOffset, maxVal, dest, destOffset); + srcOffset += 3; + destOffset += 3 + alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + } + isDefaultDecode(decode, bpc) { + return true; + } + get usesZeroToOneRange() { + return shadow(this, "usesZeroToOneRange", false); + } +} + +;// ./src/core/icc_colorspace.js + + + + +function fetchSync(url) { + const xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return xhr.response; +} +class IccColorSpace extends ColorSpace { + #transformer; + #convertPixel; + static #useWasm = true; + static #wasmUrl = null; + static #finalizer = null; + constructor(iccProfile, name, numComps) { + if (!IccColorSpace.isUsable) { + throw new Error("No ICC color space support"); + } + super(name, numComps); + let inType; + switch (numComps) { + case 1: + inType = DataType.Gray8; + this.#convertPixel = (src, srcOffset, css) => qcms_convert_one(this.#transformer, src[srcOffset] * 255, css); + break; + case 3: + inType = DataType.RGB8; + this.#convertPixel = (src, srcOffset, css) => qcms_convert_three(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, css); + break; + case 4: + inType = DataType.CMYK; + this.#convertPixel = (src, srcOffset, css) => qcms_convert_four(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, src[srcOffset + 3] * 255, css); + break; + default: + throw new Error(`Unsupported number of components: ${numComps}`); + } + this.#transformer = qcms_transformer_from_memory(iccProfile, inType, Intent.Perceptual); + if (!this.#transformer) { + throw new Error("Failed to create ICC color space"); + } + IccColorSpace.#finalizer ||= new FinalizationRegistry(transformer => { + qcms_drop_transformer(transformer); + }); + IccColorSpace.#finalizer.register(this, this.#transformer); + } + getRgbHex(src, srcOffset) { + this.#convertPixel(src, srcOffset, true); + return QCMS._cssColor; + } + getRgbItem(src, srcOffset, dest, destOffset) { + QCMS._destBuffer = dest; + QCMS._destOffset = destOffset; + QCMS._destLength = 3; + this.#convertPixel(src, srcOffset, false); + QCMS._destBuffer = null; + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + src = src.subarray(srcOffset, srcOffset + count * this.numComps); + if (bits !== 8) { + const scale = 255 / ((1 << bits) - 1); + for (let i = 0, ii = src.length; i < ii; i++) { + src[i] *= scale; + } + } + QCMS._mustAddAlpha = alpha01 && dest.buffer === src.buffer; + QCMS._destBuffer = dest; + QCMS._destOffset = destOffset; + QCMS._destLength = count * (3 + alpha01); + qcms_convert_array(this.#transformer, src); + QCMS._mustAddAlpha = false; + QCMS._destBuffer = null; + } + getOutputLength(inputLength, alpha01) { + return inputLength / this.numComps * (3 + alpha01) | 0; + } + static setOptions({ + useWasm, + useWorkerFetch, + wasmUrl + }) { + if (!useWorkerFetch) { + this.#useWasm = false; + return; + } + this.#useWasm = useWasm; + this.#wasmUrl = wasmUrl; + } + static get isUsable() { + let isUsable = false; + if (this.#useWasm) { + if (this.#wasmUrl) { + try { + this._module = initSync({ + module: fetchSync(`${this.#wasmUrl}qcms_bg.wasm`) + }); + isUsable = !!this._module; + QCMS._memory = this._module.memory; + QCMS._makeHexColor = Util.makeHexColor; + } catch (e) { + warn(`ICCBased color space: "${e}".`); + } + } else { + warn("No ICC color space support due to missing `wasmUrl` API option"); + } + } + return shadow(this, "isUsable", isUsable); + } +} +class CmykICCBasedCS extends IccColorSpace { + static #iccUrl; + constructor() { + const iccProfile = new Uint8Array(fetchSync(`${CmykICCBasedCS.#iccUrl}CGATS001Compat-v2-micro.icc`)); + super(iccProfile, "DeviceCMYK", 4); + } + static setOptions({ + iccUrl + }) { + this.#iccUrl = iccUrl; + } + static get isUsable() { + let isUsable = false; + if (IccColorSpace.isUsable) { + if (this.#iccUrl) { + isUsable = true; + } else { + warn("No CMYK ICC profile support due to missing `iccUrl` API option"); + } + } + return shadow(this, "isUsable", isUsable); + } +} + +;// ./src/core/stream.js + + +class Stream extends BaseStream { + constructor(arrayBuffer, start, length, dict) { + super(); + this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer); + this.start = start || 0; + this.pos = this.start; + this.end = start + length || this.bytes.length; + this.dict = dict; + } + get length() { + return this.end - this.start; + } + get isEmpty() { + return this.length === 0; + } + getByte() { + if (this.pos >= this.end) { + return -1; + } + return this.bytes[this.pos++]; + } + getBytes(length) { + const bytes = this.bytes; + const pos = this.pos; + const strEnd = this.end; + if (!length) { + this.pos = strEnd; + return bytes.subarray(pos, strEnd); + } + let end = pos + length; + if (end > strEnd) { + end = strEnd; + } + this.pos = end; + return bytes.subarray(pos, end); + } + getByteRange(begin, end) { + if (begin < 0) { + begin = 0; + } + if (end > this.end) { + end = this.end; + } + return this.bytes.subarray(begin, end); + } + reset() { + this.pos = this.start; + } + moveStart() { + this.start = this.pos; + } + makeSubStream(start, length, dict = null) { + return new Stream(this.bytes.buffer, start, length, dict); + } + clone() { + return new Stream(this.bytes.buffer, this.start, this.end - this.start, this.dict.clone()); + } +} +class StringStream extends Stream { + constructor(str) { + super(stringToBytes(str)); + } +} +class NullStream extends Stream { + constructor() { + super(new Uint8Array(0)); + } +} + +;// ./src/core/chunked_stream.js + + + +class ChunkedStream extends Stream { + progressiveDataLength = 0; + _lastSuccessfulEnsureByteChunk = -1; + _loadedChunks = new Set(); + constructor(length, chunkSize, manager) { + super(new Uint8Array(length), 0, length, null); + this.chunkSize = chunkSize; + this.numChunks = Math.ceil(length / chunkSize); + this.manager = manager; + } + getMissingChunks() { + const chunks = []; + for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) { + if (!this._loadedChunks.has(chunk)) { + chunks.push(chunk); + } + } + return chunks; + } + get numChunksLoaded() { + return this._loadedChunks.size; + } + get isDataLoaded() { + return this.numChunksLoaded === this.numChunks; + } + onReceiveData(begin, chunk) { + const chunkSize = this.chunkSize; + if (begin % chunkSize !== 0) { + throw new Error(`Bad begin offset: ${begin}`); + } + const end = begin + chunk.byteLength; + if (end % chunkSize !== 0 && end !== this.bytes.length) { + throw new Error(`Bad end offset: ${end}`); + } + this.bytes.set(new Uint8Array(chunk), begin); + const beginChunk = Math.floor(begin / chunkSize); + const endChunk = Math.floor((end - 1) / chunkSize) + 1; + for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + this._loadedChunks.add(curChunk); + } + } + onReceiveProgressiveData(data) { + let position = this.progressiveDataLength; + const beginChunk = Math.floor(position / this.chunkSize); + this.bytes.set(new Uint8Array(data), position); + position += data.byteLength; + this.progressiveDataLength = position; + const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize); + for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + this._loadedChunks.add(curChunk); + } + } + ensureByte(pos) { + if (pos < this.progressiveDataLength) { + return; + } + const chunk = Math.floor(pos / this.chunkSize); + if (chunk > this.numChunks) { + return; + } + if (chunk === this._lastSuccessfulEnsureByteChunk) { + return; + } + if (!this._loadedChunks.has(chunk)) { + throw new MissingDataException(pos, pos + 1); + } + this._lastSuccessfulEnsureByteChunk = chunk; + } + ensureRange(begin, end) { + if (begin >= end) { + return; + } + if (end <= this.progressiveDataLength) { + return; + } + const beginChunk = Math.floor(begin / this.chunkSize); + if (beginChunk > this.numChunks) { + return; + } + const endChunk = Math.min(Math.floor((end - 1) / this.chunkSize) + 1, this.numChunks); + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!this._loadedChunks.has(chunk)) { + throw new MissingDataException(begin, end); + } + } + } + nextEmptyChunk(beginChunk) { + const numChunks = this.numChunks; + for (let i = 0; i < numChunks; ++i) { + const chunk = (beginChunk + i) % numChunks; + if (!this._loadedChunks.has(chunk)) { + return chunk; + } + } + return null; + } + hasChunk(chunk) { + return this._loadedChunks.has(chunk); + } + getByte() { + const pos = this.pos; + if (pos >= this.end) { + return -1; + } + if (pos >= this.progressiveDataLength) { + this.ensureByte(pos); + } + return this.bytes[this.pos++]; + } + getBytes(length) { + const bytes = this.bytes; + const pos = this.pos; + const strEnd = this.end; + if (!length) { + if (strEnd > this.progressiveDataLength) { + this.ensureRange(pos, strEnd); + } + return bytes.subarray(pos, strEnd); + } + let end = pos + length; + if (end > strEnd) { + end = strEnd; + } + if (end > this.progressiveDataLength) { + this.ensureRange(pos, end); + } + this.pos = end; + return bytes.subarray(pos, end); + } + getByteRange(begin, end) { + if (begin < 0) { + begin = 0; + } + if (end > this.end) { + end = this.end; + } + if (end > this.progressiveDataLength) { + this.ensureRange(begin, end); + } + return this.bytes.subarray(begin, end); + } + makeSubStream(start, length, dict = null) { + if (length) { + if (start + length > this.progressiveDataLength) { + this.ensureRange(start, start + length); + } + } else if (start >= this.progressiveDataLength) { + this.ensureByte(start); + } + function ChunkedStreamSubstream() {} + ChunkedStreamSubstream.prototype = Object.create(this); + ChunkedStreamSubstream.prototype.getMissingChunks = function () { + const chunkSize = this.chunkSize; + const beginChunk = Math.floor(this.start / chunkSize); + const endChunk = Math.floor((this.end - 1) / chunkSize) + 1; + const missingChunks = []; + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!this._loadedChunks.has(chunk)) { + missingChunks.push(chunk); + } + } + return missingChunks; + }; + Object.defineProperty(ChunkedStreamSubstream.prototype, "isDataLoaded", { + get() { + if (this.numChunksLoaded === this.numChunks) { + return true; + } + return this.getMissingChunks().length === 0; + }, + configurable: true + }); + const subStream = new ChunkedStreamSubstream(); + subStream.pos = subStream.start = start; + subStream.end = start + length || this.end; + subStream.dict = dict; + return subStream; + } + getBaseStreams() { + return [this]; + } +} +class ChunkedStreamManager { + aborted = false; + currRequestId = 0; + _chunksNeededByRequest = new Map(); + _loadedStreamCapability = Promise.withResolvers(); + _promisesByRequest = new Map(); + _requestsByChunk = new Map(); + constructor(pdfStream, args) { + this.length = args.length; + this.chunkSize = args.rangeChunkSize; + this.stream = new ChunkedStream(this.length, this.chunkSize, this); + this.pdfStream = pdfStream; + this.disableAutoFetch = args.disableAutoFetch; + this.msgHandler = args.msgHandler; + } + async sendRequest(begin, end) { + const rangeReader = this.pdfStream.getRangeReader(begin, end); + let chunks = []; + while (true) { + const { + value, + done + } = await rangeReader.read(); + if (this.aborted) { + chunks = null; + return; + } + if (done) { + break; + } + chunks.push(value); + } + if (chunks.length === 0 && this.disableAutoFetch) { + return; + } + const data = arrayBuffersToBytes(chunks); + chunks = null; + this.onReceiveData({ + chunk: data.buffer, + begin + }); + } + requestAllChunks(noFetch = false) { + if (!noFetch) { + const missingChunks = this.stream.getMissingChunks(); + this._requestChunks(missingChunks); + } + return this._loadedStreamCapability.promise; + } + _requestChunks(chunks) { + const requestId = this.currRequestId++; + const chunksNeeded = new Set(); + this._chunksNeededByRequest.set(requestId, chunksNeeded); + for (const chunk of chunks) { + if (!this.stream.hasChunk(chunk)) { + chunksNeeded.add(chunk); + } + } + if (chunksNeeded.size === 0) { + return Promise.resolve(); + } + const capability = Promise.withResolvers(); + this._promisesByRequest.set(requestId, capability); + const chunksToRequest = []; + for (const chunk of chunksNeeded) { + let requestIds = this._requestsByChunk.get(chunk); + if (!requestIds) { + requestIds = []; + this._requestsByChunk.set(chunk, requestIds); + chunksToRequest.push(chunk); + } + requestIds.push(requestId); + } + if (chunksToRequest.length > 0) { + const groupedChunksToRequest = this.groupChunks(chunksToRequest); + for (const groupedChunk of groupedChunksToRequest) { + const begin = groupedChunk.beginChunk * this.chunkSize; + const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length); + this.sendRequest(begin, end).catch(capability.reject); + } + } + return capability.promise.catch(reason => { + if (this.aborted) { + return; + } + throw reason; + }); + } + getStream() { + return this.stream; + } + requestRange(begin, end) { + end = Math.min(end, this.length); + const beginChunk = this.getBeginChunk(begin); + const endChunk = this.getEndChunk(end); + const chunks = []; + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + chunks.push(chunk); + } + return this._requestChunks(chunks); + } + requestRanges(ranges = []) { + const chunksToRequest = []; + for (const range of ranges) { + const beginChunk = this.getBeginChunk(range.begin); + const endChunk = this.getEndChunk(range.end); + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!chunksToRequest.includes(chunk)) { + chunksToRequest.push(chunk); + } + } + } + chunksToRequest.sort((a, b) => a - b); + return this._requestChunks(chunksToRequest); + } + groupChunks(chunks) { + const groupedChunks = []; + let beginChunk = -1; + let prevChunk = -1; + for (let i = 0, ii = chunks.length; i < ii; ++i) { + const chunk = chunks[i]; + if (beginChunk < 0) { + beginChunk = chunk; + } + if (prevChunk >= 0 && prevChunk + 1 !== chunk) { + groupedChunks.push({ + beginChunk, + endChunk: prevChunk + 1 + }); + beginChunk = chunk; + } + if (i + 1 === chunks.length) { + groupedChunks.push({ + beginChunk, + endChunk: chunk + 1 + }); + } + prevChunk = chunk; + } + return groupedChunks; + } + onReceiveData(args) { + const { + chunkSize, + length, + stream + } = this; + const chunk = args.chunk; + const isProgressive = args.begin === undefined; + const begin = isProgressive ? stream.progressiveDataLength : args.begin; + const end = begin + chunk.byteLength; + const beginChunk = Math.floor(begin / chunkSize); + const endChunk = end < length ? Math.floor(end / chunkSize) : Math.ceil(end / chunkSize); + if (isProgressive) { + stream.onReceiveProgressiveData(chunk); + } else { + stream.onReceiveData(begin, chunk); + } + if (stream.isDataLoaded) { + this._loadedStreamCapability.resolve(stream); + } + const loadedRequests = []; + for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + const requestIds = this._requestsByChunk.get(curChunk); + if (!requestIds) { + continue; + } + this._requestsByChunk.delete(curChunk); + for (const requestId of requestIds) { + const chunksNeeded = this._chunksNeededByRequest.get(requestId); + if (chunksNeeded.has(curChunk)) { + chunksNeeded.delete(curChunk); + } + if (chunksNeeded.size > 0) { + continue; + } + loadedRequests.push(requestId); + } + } + if (!this.disableAutoFetch && this._requestsByChunk.size === 0) { + let nextEmptyChunk; + if (stream.numChunksLoaded === 1) { + const lastChunk = stream.numChunks - 1; + if (!stream.hasChunk(lastChunk)) { + nextEmptyChunk = lastChunk; + } + } else { + nextEmptyChunk = stream.nextEmptyChunk(endChunk); + } + if (Number.isInteger(nextEmptyChunk)) { + this._requestChunks([nextEmptyChunk]); + } + } + for (const requestId of loadedRequests) { + const capability = this._promisesByRequest.get(requestId); + this._promisesByRequest.delete(requestId); + capability.resolve(); + } + this.msgHandler.send("DocProgress", { + loaded: MathClamp(stream.numChunksLoaded * chunkSize, stream.progressiveDataLength, length), + total: length + }); + } + onError(err) { + this._loadedStreamCapability.reject(err); + } + getBeginChunk(begin) { + return Math.floor(begin / this.chunkSize); + } + getEndChunk(end) { + return Math.floor((end - 1) / this.chunkSize) + 1; + } + abort(reason) { + this.aborted = true; + this.pdfStream?.cancelAllRequests(reason); + for (const capability of this._promisesByRequest.values()) { + capability.reject(reason); + } + } +} + +;// ./src/shared/image_utils.js + +function convertToRGBA(params) { + switch (params.kind) { + case ImageKind.GRAYSCALE_1BPP: + return convertBlackAndWhiteToRGBA(params); + case ImageKind.RGB_24BPP: + return convertRGBToRGBA(params); + } + return null; +} +function convertBlackAndWhiteToRGBA({ + src, + srcPos = 0, + dest, + width, + height, + nonBlackColor = 0xffffffff, + inverseDecode = false +}) { + const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const xorMask = zeroMapping ^ oneMapping; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); + let destPos = 0; + for (let i = 0; i < height; ++i) { + for (const max = srcPos + widthInSource; srcPos < max; ++srcPos, destPos += 8) { + const elem = src[srcPos]; + dest[destPos] = zeroMapping ^ -(elem >> 7 & 1) & xorMask; + dest[destPos + 1] = zeroMapping ^ -(elem >> 6 & 1) & xorMask; + dest[destPos + 2] = zeroMapping ^ -(elem >> 5 & 1) & xorMask; + dest[destPos + 3] = zeroMapping ^ -(elem >> 4 & 1) & xorMask; + dest[destPos + 4] = zeroMapping ^ -(elem >> 3 & 1) & xorMask; + dest[destPos + 5] = zeroMapping ^ -(elem >> 2 & 1) & xorMask; + dest[destPos + 6] = zeroMapping ^ -(elem >> 1 & 1) & xorMask; + dest[destPos + 7] = zeroMapping ^ -(elem & 1) & xorMask; + } + if (widthRemainder === 0) { + continue; + } + const elem = srcPos < srcLength ? src[srcPos++] : 255; + for (let j = 0; j < widthRemainder; ++j, ++destPos) { + dest[destPos] = zeroMapping ^ -(elem >> 7 - j & 1) & xorMask; + } + } + return { + srcPos, + destPos + }; +} +function convertRGBToRGBA({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height +}) { + let i = 0; + const len = width * height * 3; + const len32 = len >> 2; + const src32 = new Uint32Array(src.buffer, srcPos, len32); + const alphaMask = FeatureTest.isLittleEndian ? 0xff000000 : 0xff; + if (FeatureTest.isLittleEndian) { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i], + s2 = src32[i + 1], + s3 = src32[i + 2]; + dest[destPos] = s1 | alphaMask; + dest[destPos + 1] = s1 >>> 24 | s2 << 8 | alphaMask; + dest[destPos + 2] = s2 >>> 16 | s3 << 16 | alphaMask; + dest[destPos + 3] = s3 >>> 8 | alphaMask; + } + for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) { + dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | alphaMask; + } + } else { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i], + s2 = src32[i + 1], + s3 = src32[i + 2]; + dest[destPos] = s1 | alphaMask; + dest[destPos + 1] = s1 << 24 | s2 >>> 8 | alphaMask; + dest[destPos + 2] = s2 << 16 | s3 >>> 16 | alphaMask; + dest[destPos + 3] = s3 << 8 | alphaMask; + } + for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) { + dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | alphaMask; + } + } + return { + srcPos: srcPos + len, + destPos + }; +} +function grayToRGBA(src, dest) { + if (FeatureTest.isLittleEndian) { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x10101 | 0xff000000; + } + } else { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x1010100 | 0x000000ff; + } + } +} + +;// ./src/core/image_resizer.js + + + +const MIN_IMAGE_DIM = 2048; +const MAX_IMAGE_DIM = 32768; +const MAX_ERROR = 128; +class ImageResizer { + static #goodSquareLength = MIN_IMAGE_DIM; + static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported; + constructor(imgData, isMask) { + this._imgData = imgData; + this._isMask = isMask; + } + static get canUseImageDecoder() { + return shadow(this, "canUseImageDecoder", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported("image/bmp") : Promise.resolve(false)); + } + static needsToBeResized(width, height) { + if (width <= this.#goodSquareLength && height <= this.#goodSquareLength) { + return false; + } + const { + MAX_DIM + } = this; + if (width > MAX_DIM || height > MAX_DIM) { + return true; + } + const area = width * height; + if (this._hasMaxArea) { + return area > this.MAX_AREA; + } + if (area < this.#goodSquareLength ** 2) { + return false; + } + if (this._areGoodDims(width, height)) { + this.#goodSquareLength = Math.max(this.#goodSquareLength, Math.floor(Math.sqrt(width * height))); + return false; + } + this.#goodSquareLength = this._guessMax(this.#goodSquareLength, MAX_DIM, MAX_ERROR, 0); + const maxArea = this.MAX_AREA = this.#goodSquareLength ** 2; + return area > maxArea; + } + static getReducePowerForJPX(width, height, componentsCount) { + const area = width * height; + const maxJPXArea = 2 ** 30 / (componentsCount * 4); + if (!this.needsToBeResized(width, height)) { + if (area > maxJPXArea) { + return Math.ceil(Math.log2(area / maxJPXArea)); + } + return 0; + } + const { + MAX_DIM, + MAX_AREA + } = this; + const minFactor = Math.max(width / MAX_DIM, height / MAX_DIM, Math.sqrt(area / Math.min(maxJPXArea, MAX_AREA))); + return Math.ceil(Math.log2(minFactor)); + } + static get MAX_DIM() { + return shadow(this, "MAX_DIM", this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1)); + } + static get MAX_AREA() { + this._hasMaxArea = true; + return shadow(this, "MAX_AREA", this._guessMax(this.#goodSquareLength, this.MAX_DIM, MAX_ERROR, 0) ** 2); + } + static set MAX_AREA(area) { + if (area >= 0) { + this._hasMaxArea = true; + shadow(this, "MAX_AREA", area); + } + } + static setOptions({ + canvasMaxAreaInBytes = -1, + isImageDecoderSupported = false + }) { + if (!this._hasMaxArea) { + this.MAX_AREA = canvasMaxAreaInBytes >> 2; + } + this.#isImageDecoderSupported = isImageDecoderSupported; + } + static _areGoodDims(width, height) { + try { + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d"); + ctx.fillRect(0, 0, 1, 1); + const opacity = ctx.getImageData(0, 0, 1, 1).data[3]; + canvas.width = canvas.height = 1; + return opacity !== 0; + } catch { + return false; + } + } + static _guessMax(start, end, tolerance, defaultHeight) { + while (start + tolerance + 1 < end) { + const middle = Math.floor((start + end) / 2); + const height = defaultHeight || middle; + if (this._areGoodDims(middle, height)) { + start = middle; + } else { + end = middle; + } + } + return start; + } + static async createImage(imgData, isMask = false) { + return new ImageResizer(imgData, isMask)._createImage(); + } + async _createImage() { + const { + _imgData: imgData + } = this; + const { + width, + height + } = imgData; + if (width * height * 4 > MAX_INT_32) { + const result = this.#rescaleImageData(); + if (result) { + return result; + } + } + const data = this._encodeBMP(); + let decoder, imagePromise; + if (await ImageResizer.canUseImageDecoder) { + decoder = new ImageDecoder({ + data, + type: "image/bmp", + preferAnimation: false, + transfer: [data.buffer] + }); + imagePromise = decoder.decode().catch(reason => { + warn(`BMP image decoding failed: ${reason}`); + return createImageBitmap(new Blob([this._encodeBMP().buffer], { + type: "image/bmp" + })); + }).finally(() => { + decoder.close(); + }); + } else { + imagePromise = createImageBitmap(new Blob([data.buffer], { + type: "image/bmp" + })); + } + const { + MAX_AREA, + MAX_DIM + } = ImageResizer; + const minFactor = Math.max(width / MAX_DIM, height / MAX_DIM, Math.sqrt(width * height / MAX_AREA)); + const firstFactor = Math.max(minFactor, 2); + const factor = Math.round(10 * (minFactor + 1.25)) / 10 / firstFactor; + const N = Math.floor(Math.log2(factor)); + const steps = new Array(N + 2).fill(2); + steps[0] = firstFactor; + steps.splice(-1, 1, factor / (1 << N)); + let newWidth = width; + let newHeight = height; + const result = await imagePromise; + let bitmap = result.image || result; + for (const step of steps) { + const prevWidth = newWidth; + const prevHeight = newHeight; + newWidth = Math.floor(newWidth / step) - 1; + newHeight = Math.floor(newHeight / step) - 1; + const canvas = new OffscreenCanvas(newWidth, newHeight); + const ctx = canvas.getContext("2d"); + ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight); + bitmap.close(); + bitmap = canvas.transferToImageBitmap(); + } + imgData.data = null; + imgData.bitmap = bitmap; + imgData.width = newWidth; + imgData.height = newHeight; + return imgData; + } + #rescaleImageData() { + const { + _imgData: imgData + } = this; + const { + data, + width, + height, + kind + } = imgData; + const rgbaSize = width * height * 4; + const K = Math.ceil(Math.log2(rgbaSize / MAX_INT_32)); + const newWidth = width >> K; + const newHeight = height >> K; + let rgbaData; + let maxHeight = height; + try { + rgbaData = new Uint8Array(rgbaSize); + } catch { + let n = Math.floor(Math.log2(rgbaSize + 1)); + while (true) { + try { + rgbaData = new Uint8Array(2 ** n - 1); + break; + } catch { + n -= 1; + } + } + maxHeight = Math.floor((2 ** n - 1) / (width * 4)); + const newSize = width * maxHeight * 4; + if (newSize < rgbaData.length) { + rgbaData = new Uint8Array(newSize); + } + } + const src32 = new Uint32Array(rgbaData.buffer); + const dest32 = new Uint32Array(newWidth * newHeight); + let srcPos = 0; + let newIndex = 0; + const step = Math.ceil(height / maxHeight); + const remainder = height % maxHeight === 0 ? height : height % maxHeight; + for (let k = 0; k < step; k++) { + const h = k < step - 1 ? maxHeight : remainder; + ({ + srcPos + } = convertToRGBA({ + kind, + src: data, + dest: src32, + width, + height: h, + inverseDecode: this._isMask, + srcPos + })); + for (let i = 0, ii = h >> K; i < ii; i++) { + const buf = src32.subarray((i << K) * width); + for (let j = 0; j < newWidth; j++) { + dest32[newIndex++] = buf[j << K]; + } + } + } + if (ImageResizer.needsToBeResized(newWidth, newHeight)) { + imgData.data = dest32; + imgData.width = newWidth; + imgData.height = newHeight; + imgData.kind = ImageKind.RGBA_32BPP; + return null; + } + const canvas = new OffscreenCanvas(newWidth, newHeight); + const ctx = canvas.getContext("2d", { + willReadFrequently: true + }); + ctx.putImageData(new ImageData(new Uint8ClampedArray(dest32.buffer), newWidth, newHeight), 0, 0); + imgData.data = null; + imgData.bitmap = canvas.transferToImageBitmap(); + imgData.width = newWidth; + imgData.height = newHeight; + return imgData; + } + _encodeBMP() { + const { + width, + height, + kind + } = this._imgData; + let data = this._imgData.data; + let bitPerPixel; + let colorTable = new Uint8Array(0); + let maskTable = colorTable; + let compression = 0; + switch (kind) { + case ImageKind.GRAYSCALE_1BPP: + { + bitPerPixel = 1; + colorTable = new Uint8Array(this._isMask ? [255, 255, 255, 255, 0, 0, 0, 0] : [0, 0, 0, 0, 255, 255, 255, 255]); + const rowLen = width + 7 >> 3; + const rowSize = rowLen + 3 & -4; + if (rowLen !== rowSize) { + const newData = new Uint8Array(rowSize * height); + let k = 0; + for (let i = 0, ii = height * rowLen; i < ii; i += rowLen, k += rowSize) { + newData.set(data.subarray(i, i + rowLen), k); + } + data = newData; + } + break; + } + case ImageKind.RGB_24BPP: + { + bitPerPixel = 24; + if (width & 3) { + const rowLen = 3 * width; + const rowSize = rowLen + 3 & -4; + const extraLen = rowSize - rowLen; + const newData = new Uint8Array(rowSize * height); + let k = 0; + for (let i = 0, ii = height * rowLen; i < ii; i += rowLen) { + const row = data.subarray(i, i + rowLen); + for (let j = 0; j < rowLen; j += 3) { + newData[k++] = row[j + 2]; + newData[k++] = row[j + 1]; + newData[k++] = row[j]; + } + k += extraLen; + } + data = newData; + } else { + for (let i = 0, ii = data.length; i < ii; i += 3) { + const tmp = data[i]; + data[i] = data[i + 2]; + data[i + 2] = tmp; + } + } + break; + } + case ImageKind.RGBA_32BPP: + bitPerPixel = 32; + compression = 3; + maskTable = new Uint8Array(4 + 4 + 4 + 4 + 52); + const view = new DataView(maskTable.buffer); + if (FeatureTest.isLittleEndian) { + view.setUint32(0, 0x000000ff, true); + view.setUint32(4, 0x0000ff00, true); + view.setUint32(8, 0x00ff0000, true); + view.setUint32(12, 0xff000000, true); + } else { + view.setUint32(0, 0xff000000, true); + view.setUint32(4, 0x00ff0000, true); + view.setUint32(8, 0x0000ff00, true); + view.setUint32(12, 0x000000ff, true); + } + break; + default: + throw new Error("invalid format"); + } + let i = 0; + const headerLength = 40 + maskTable.length; + const fileLength = 14 + headerLength + colorTable.length + data.length; + const bmpData = new Uint8Array(fileLength); + const view = new DataView(bmpData.buffer); + view.setUint16(i, 0x4d42, true); + i += 2; + view.setUint32(i, fileLength, true); + i += 4; + view.setUint32(i, 0, true); + i += 4; + view.setUint32(i, 14 + headerLength + colorTable.length, true); + i += 4; + view.setUint32(i, headerLength, true); + i += 4; + view.setInt32(i, width, true); + i += 4; + view.setInt32(i, -height, true); + i += 4; + view.setUint16(i, 1, true); + i += 2; + view.setUint16(i, bitPerPixel, true); + i += 2; + view.setUint32(i, compression, true); + i += 4; + view.setUint32(i, 0, true); + i += 4; + view.setInt32(i, 0, true); + i += 4; + view.setInt32(i, 0, true); + i += 4; + view.setUint32(i, colorTable.length / 4, true); + i += 4; + view.setUint32(i, 0, true); + i += 4; + bmpData.set(maskTable, i); + i += maskTable.length; + bmpData.set(colorTable, i); + i += colorTable.length; + bmpData.set(data, i); + return bmpData; + } +} + +;// ./external/jbig2/jbig2.js +async function JBig2(moduleArg = {}) { + var moduleRtn; + var Module = moduleArg; + var ENVIRONMENT_IS_WEB = true; + var ENVIRONMENT_IS_WORKER = false; + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = (status, toThrow) => { + throw toThrow; + }; + var _scriptName = import.meta.url; + var scriptDirectory = ""; + var readAsync, readBinary; + if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + try { + scriptDirectory = new URL(".", _scriptName).href; + } catch {} + readAsync = async url => { + var response = await fetch(url, { + credentials: "same-origin" + }); + if (response.ok) { + return response.arrayBuffer(); + } + throw new Error(response.status + " : " + response.url); + }; + } else {} + var out = console.log.bind(console); + var err = console.error.bind(console); + var wasmBinary; + var ABORT = false; + var EXITSTATUS; + var readyPromiseResolve, readyPromiseReject; + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + var HEAP64, HEAPU64; + var runtimeInitialized = false; + function updateMemoryViews() { + var b = wasmMemory.buffer; + HEAP8 = new Int8Array(b); + HEAP16 = new Int16Array(b); + HEAPU8 = new Uint8Array(b); + HEAPU16 = new Uint16Array(b); + HEAP32 = new Int32Array(b); + HEAPU32 = new Uint32Array(b); + HEAPF32 = new Float32Array(b); + HEAPF64 = new Float64Array(b); + HEAP64 = new BigInt64Array(b); + HEAPU64 = new BigUint64Array(b); + } + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(onPreRuns); + } + function initRuntime() { + runtimeInitialized = true; + wasmExports["j"](); + } + function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(onPostRuns); + } + function abort(what) { + Module["onAbort"]?.(what); + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject?.(e); + throw e; + } + var wasmBinaryFile; + function getWasmImports() { + var imports = { + a: wasmImports + }; + return imports; + } + async function createWasm() { + function receiveInstance(instance, module) { + wasmExports = instance.exports; + assignWasmExports(wasmExports); + updateMemoryViews(); + return wasmExports; + } + var info = getWasmImports(); + return new Promise((resolve, reject) => { + Module["instantiateWasm"](info, (inst, mod) => { + resolve(receiveInstance(inst, mod)); + }); + }); + } + class ExitStatus { + name = "ExitStatus"; + constructor(status) { + this.message = `Program terminated with exit(${status})`; + this.status = status; + } + } + var callRuntimeCallbacks = callbacks => { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } + }; + var onPostRuns = []; + var addOnPostRun = cb => onPostRuns.push(cb); + var onPreRuns = []; + var addOnPreRun = cb => onPreRuns.push(cb); + var noExitRuntime = true; + var __abort_js = () => abort(""); + var runtimeKeepaliveCounter = 0; + var __emscripten_runtime_keepalive_clear = () => { + noExitRuntime = false; + runtimeKeepaliveCounter = 0; + }; + var timers = {}; + var handleException = e => { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + quit_(1, e); + }; + var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0; + var _proc_exit = code => { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + Module["onExit"]?.(code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); + }; + var exitJS = (status, implicit) => { + EXITSTATUS = status; + _proc_exit(status); + }; + var _exit = exitJS; + var maybeExit = () => { + if (!keepRuntimeAlive()) { + try { + _exit(EXITSTATUS); + } catch (e) { + handleException(e); + } + } + }; + var callUserCallback = func => { + if (ABORT) { + return; + } + try { + return func(); + } catch (e) { + handleException(e); + } finally { + maybeExit(); + } + }; + var _emscripten_get_now = () => performance.now(); + var __setitimer_js = (which, timeout_ms) => { + if (timers[which]) { + clearTimeout(timers[which].id); + delete timers[which]; + } + if (!timeout_ms) return 0; + var id = setTimeout(() => { + delete timers[which]; + callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now())); + }, timeout_ms); + timers[which] = { + id, + timeout_ms + }; + return 0; + }; + function _createImageData(size) { + Module.imageData = new Uint8Array(size); + } + var getHeapMax = () => 2147483648; + var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment; + var growMemory = size => { + var oldHeapSize = wasmMemory.buffer.byteLength; + var pages = (size - oldHeapSize + 65535) / 65536 | 0; + try { + wasmMemory.grow(pages); + updateMemoryViews(); + return 1; + } catch (e) {} + }; + var _emscripten_resize_heap = requestedSize => { + var oldSize = HEAPU8.length; + requestedSize >>>= 0; + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = growMemory(newSize); + if (replacement) { + return true; + } + } + return false; + }; + function _setImageData(array_ptr, pitch8, pitch32, height) { + if (pitch32 === pitch8) { + Module.imageData = new Uint8ClampedArray(HEAPU8.subarray(array_ptr, array_ptr + pitch32 * height)); + return; + } + const destSize = pitch8 * height; + const imageData = Module.imageData = new Uint8ClampedArray(destSize); + for (let srcStart = array_ptr, destStart = 0; destStart < destSize; srcStart += pitch32, destStart += pitch8) { + imageData.set(HEAPU8.subarray(srcStart, srcStart + pitch8), destStart); + } + } + function _setLineData(line_ptr, pitch8, offset) { + Module.imageData.set(HEAPU8.subarray(line_ptr, line_ptr + pitch8), offset); + } + var writeArrayToMemory = (array, buffer) => { + HEAP8.set(array, buffer); + }; + if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"]; + if (Module["print"]) out = Module["print"]; + if (Module["printErr"]) err = Module["printErr"]; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + if (Module["arguments"]) arguments_ = Module["arguments"]; + if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].shift()(); + } + } + Module["writeArrayToMemory"] = writeArrayToMemory; + var _malloc, _free, _jbig2_decode, _ccitt_decode, __emscripten_timeout, memory, __indirect_function_table, wasmMemory; + function assignWasmExports(wasmExports) { + _malloc = Module["_malloc"] = wasmExports["k"]; + _free = Module["_free"] = wasmExports["l"]; + _jbig2_decode = Module["_jbig2_decode"] = wasmExports["m"]; + _ccitt_decode = Module["_ccitt_decode"] = wasmExports["n"]; + __emscripten_timeout = wasmExports["o"]; + memory = wasmMemory = wasmExports["i"]; + __indirect_function_table = wasmExports["__indirect_function_table"]; + } + var wasmImports = { + e: __abort_js, + b: __emscripten_runtime_keepalive_clear, + c: __setitimer_js, + g: _createImageData, + d: _emscripten_resize_heap, + a: _proc_exit, + h: _setImageData, + f: _setLineData + }; + function run() { + preRun(); + function doRun() { + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + readyPromiseResolve?.(Module); + Module["onRuntimeInitialized"]?.(); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(() => { + setTimeout(() => Module["setStatus"](""), 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + var wasmExports; + wasmExports = await createWasm(); + run(); + if (runtimeInitialized) { + moduleRtn = Module; + } else { + moduleRtn = new Promise((resolve, reject) => { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + } + return moduleRtn; +} +/* harmony default export */ const jbig2 = (JBig2); +;// ./src/core/arithmetic_decoder.js +const QeTable = [{ + qe: 0x5601, + nmps: 1, + nlps: 1, + switchFlag: 1 +}, { + qe: 0x3401, + nmps: 2, + nlps: 6, + switchFlag: 0 +}, { + qe: 0x1801, + nmps: 3, + nlps: 9, + switchFlag: 0 +}, { + qe: 0x0ac1, + nmps: 4, + nlps: 12, + switchFlag: 0 +}, { + qe: 0x0521, + nmps: 5, + nlps: 29, + switchFlag: 0 +}, { + qe: 0x0221, + nmps: 38, + nlps: 33, + switchFlag: 0 +}, { + qe: 0x5601, + nmps: 7, + nlps: 6, + switchFlag: 1 +}, { + qe: 0x5401, + nmps: 8, + nlps: 14, + switchFlag: 0 +}, { + qe: 0x4801, + nmps: 9, + nlps: 14, + switchFlag: 0 +}, { + qe: 0x3801, + nmps: 10, + nlps: 14, + switchFlag: 0 +}, { + qe: 0x3001, + nmps: 11, + nlps: 17, + switchFlag: 0 +}, { + qe: 0x2401, + nmps: 12, + nlps: 18, + switchFlag: 0 +}, { + qe: 0x1c01, + nmps: 13, + nlps: 20, + switchFlag: 0 +}, { + qe: 0x1601, + nmps: 29, + nlps: 21, + switchFlag: 0 +}, { + qe: 0x5601, + nmps: 15, + nlps: 14, + switchFlag: 1 +}, { + qe: 0x5401, + nmps: 16, + nlps: 14, + switchFlag: 0 +}, { + qe: 0x5101, + nmps: 17, + nlps: 15, + switchFlag: 0 +}, { + qe: 0x4801, + nmps: 18, + nlps: 16, + switchFlag: 0 +}, { + qe: 0x3801, + nmps: 19, + nlps: 17, + switchFlag: 0 +}, { + qe: 0x3401, + nmps: 20, + nlps: 18, + switchFlag: 0 +}, { + qe: 0x3001, + nmps: 21, + nlps: 19, + switchFlag: 0 +}, { + qe: 0x2801, + nmps: 22, + nlps: 19, + switchFlag: 0 +}, { + qe: 0x2401, + nmps: 23, + nlps: 20, + switchFlag: 0 +}, { + qe: 0x2201, + nmps: 24, + nlps: 21, + switchFlag: 0 +}, { + qe: 0x1c01, + nmps: 25, + nlps: 22, + switchFlag: 0 +}, { + qe: 0x1801, + nmps: 26, + nlps: 23, + switchFlag: 0 +}, { + qe: 0x1601, + nmps: 27, + nlps: 24, + switchFlag: 0 +}, { + qe: 0x1401, + nmps: 28, + nlps: 25, + switchFlag: 0 +}, { + qe: 0x1201, + nmps: 29, + nlps: 26, + switchFlag: 0 +}, { + qe: 0x1101, + nmps: 30, + nlps: 27, + switchFlag: 0 +}, { + qe: 0x0ac1, + nmps: 31, + nlps: 28, + switchFlag: 0 +}, { + qe: 0x09c1, + nmps: 32, + nlps: 29, + switchFlag: 0 +}, { + qe: 0x08a1, + nmps: 33, + nlps: 30, + switchFlag: 0 +}, { + qe: 0x0521, + nmps: 34, + nlps: 31, + switchFlag: 0 +}, { + qe: 0x0441, + nmps: 35, + nlps: 32, + switchFlag: 0 +}, { + qe: 0x02a1, + nmps: 36, + nlps: 33, + switchFlag: 0 +}, { + qe: 0x0221, + nmps: 37, + nlps: 34, + switchFlag: 0 +}, { + qe: 0x0141, + nmps: 38, + nlps: 35, + switchFlag: 0 +}, { + qe: 0x0111, + nmps: 39, + nlps: 36, + switchFlag: 0 +}, { + qe: 0x0085, + nmps: 40, + nlps: 37, + switchFlag: 0 +}, { + qe: 0x0049, + nmps: 41, + nlps: 38, + switchFlag: 0 +}, { + qe: 0x0025, + nmps: 42, + nlps: 39, + switchFlag: 0 +}, { + qe: 0x0015, + nmps: 43, + nlps: 40, + switchFlag: 0 +}, { + qe: 0x0009, + nmps: 44, + nlps: 41, + switchFlag: 0 +}, { + qe: 0x0005, + nmps: 45, + nlps: 42, + switchFlag: 0 +}, { + qe: 0x0001, + nmps: 45, + nlps: 43, + switchFlag: 0 +}, { + qe: 0x5601, + nmps: 46, + nlps: 46, + switchFlag: 0 +}]; +class ArithmeticDecoder { + constructor(data, start, end) { + this.data = data; + this.bp = start; + this.dataEnd = end; + this.chigh = data[start]; + this.clow = 0; + this.byteIn(); + this.chigh = this.chigh << 7 & 0xffff | this.clow >> 9 & 0x7f; + this.clow = this.clow << 7 & 0xffff; + this.ct -= 7; + this.a = 0x8000; + } + byteIn() { + const data = this.data; + let bp = this.bp; + if (data[bp] === 0xff) { + if (data[bp + 1] > 0x8f) { + this.clow += 0xff00; + this.ct = 8; + } else { + bp++; + this.clow += data[bp] << 9; + this.ct = 7; + this.bp = bp; + } + } else { + bp++; + this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00; + this.ct = 8; + this.bp = bp; + } + if (this.clow > 0xffff) { + this.chigh += this.clow >> 16; + this.clow &= 0xffff; + } + } + readBit(contexts, pos) { + let cx_index = contexts[pos] >> 1, + cx_mps = contexts[pos] & 1; + const qeTableIcx = QeTable[cx_index]; + const qeIcx = qeTableIcx.qe; + let d; + let a = this.a - qeIcx; + if (this.chigh < qeIcx) { + if (a < qeIcx) { + a = qeIcx; + d = cx_mps; + cx_index = qeTableIcx.nmps; + } else { + a = qeIcx; + d = 1 ^ cx_mps; + if (qeTableIcx.switchFlag === 1) { + cx_mps = d; + } + cx_index = qeTableIcx.nlps; + } + } else { + this.chigh -= qeIcx; + if ((a & 0x8000) !== 0) { + this.a = a; + return cx_mps; + } + if (a < qeIcx) { + d = 1 ^ cx_mps; + if (qeTableIcx.switchFlag === 1) { + cx_mps = d; + } + cx_index = qeTableIcx.nlps; + } else { + d = cx_mps; + cx_index = qeTableIcx.nmps; + } + } + do { + if (this.ct === 0) { + this.byteIn(); + } + a <<= 1; + this.chigh = this.chigh << 1 & 0xffff | this.clow >> 15 & 1; + this.clow = this.clow << 1 & 0xffff; + this.ct--; + } while ((a & 0x8000) === 0); + this.a = a; + contexts[pos] = cx_index << 1 | cx_mps; + return d; + } +} + +;// ./src/core/ccitt.js + +const ccittEOL = -2; +const ccittEOF = -1; +const twoDimPass = 0; +const twoDimHoriz = 1; +const twoDimVert0 = 2; +const twoDimVertR1 = 3; +const twoDimVertL1 = 4; +const twoDimVertR2 = 5; +const twoDimVertL2 = 6; +const twoDimVertR3 = 7; +const twoDimVertL3 = 8; +const twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]]; +const whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]]; +const whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]]; +const blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]]; +const blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]]; +const blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]]; +class CCITTFaxDecoder { + constructor(source, options = { + K: 0, + EndOfLine: false, + EncodedByteAlign: false, + Columns: 1728, + Rows: 0, + EndOfBlock: true, + BlackIs1: false + }) { + if (typeof source?.next !== "function") { + throw new Error('CCITTFaxDecoder - invalid "source" parameter.'); + } + this.source = source; + this.eof = false; + ({ + K: this.encoding, + EndOfLine: this.eoline, + EncodedByteAlign: this.byteAlign, + Columns: this.columns, + Rows: this.rows, + EndOfBlock: this.eoblock, + BlackIs1: this.black + } = options); + this.codingLine = new Uint32Array(this.columns + 1); + this.refLine = new Uint32Array(this.columns + 2); + this.codingLine[0] = this.columns; + this.codingPos = 0; + this.row = 0; + this.nextLine2D = this.encoding < 0; + this.inputBits = 0; + this.inputBuf = 0; + this.outputBits = 0; + this.rowsDone = false; + let code1; + while ((code1 = this._lookBits(12)) === 0) { + this._eatBits(1); + } + if (code1 === 1) { + this._eatBits(12); + } + if (this.encoding > 0) { + this.nextLine2D = !this._lookBits(1); + this._eatBits(1); + } + } + readNextChar() { + if (this.eof) { + return -1; + } + const refLine = this.refLine; + const codingLine = this.codingLine; + const columns = this.columns; + let refPos, blackPixels, bits, i; + if (this.outputBits === 0) { + if (this.rowsDone) { + this.eof = true; + } + if (this.eof) { + return -1; + } + this.err = false; + let code1, code2, code3; + if (this.nextLine2D) { + for (i = 0; codingLine[i] < columns; ++i) { + refLine[i] = codingLine[i]; + } + refLine[i++] = columns; + refLine[i] = columns; + codingLine[0] = 0; + this.codingPos = 0; + refPos = 0; + blackPixels = 0; + while (codingLine[this.codingPos] < columns) { + code1 = this._getTwoDimCode(); + switch (code1) { + case twoDimPass: + this._addPixels(refLine[refPos + 1], blackPixels); + if (refLine[refPos + 1] < columns) { + refPos += 2; + } + break; + case twoDimHoriz: + code1 = code2 = 0; + if (blackPixels) { + do { + code1 += code3 = this._getBlackCode(); + } while (code3 >= 64); + do { + code2 += code3 = this._getWhiteCode(); + } while (code3 >= 64); + } else { + do { + code1 += code3 = this._getWhiteCode(); + } while (code3 >= 64); + do { + code2 += code3 = this._getBlackCode(); + } while (code3 >= 64); + } + this._addPixels(codingLine[this.codingPos] + code1, blackPixels); + if (codingLine[this.codingPos] < columns) { + this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1); + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + break; + case twoDimVertR3: + this._addPixels(refLine[refPos] + 3, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertR2: + this._addPixels(refLine[refPos] + 2, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertR1: + this._addPixels(refLine[refPos] + 1, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVert0: + this._addPixels(refLine[refPos], blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertL3: + this._addPixelsNeg(refLine[refPos] - 3, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertL2: + this._addPixelsNeg(refLine[refPos] - 2, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertL1: + this._addPixelsNeg(refLine[refPos] - 1, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case ccittEOF: + this._addPixels(columns, 0); + this.eof = true; + break; + default: + info("bad 2d code"); + this._addPixels(columns, 0); + this.err = true; + } + } + } else { + codingLine[0] = 0; + this.codingPos = 0; + blackPixels = 0; + while (codingLine[this.codingPos] < columns) { + code1 = 0; + if (blackPixels) { + do { + code1 += code3 = this._getBlackCode(); + } while (code3 >= 64); + } else { + do { + code1 += code3 = this._getWhiteCode(); + } while (code3 >= 64); + } + this._addPixels(codingLine[this.codingPos] + code1, blackPixels); + blackPixels ^= 1; + } + } + let gotEOL = false; + if (this.byteAlign) { + this.inputBits &= ~7; + } + if (!this.eoblock && this.row === this.rows - 1) { + this.rowsDone = true; + } else { + code1 = this._lookBits(12); + if (this.eoline) { + while (code1 !== ccittEOF && code1 !== 1) { + this._eatBits(1); + code1 = this._lookBits(12); + } + } else { + while (code1 === 0) { + this._eatBits(1); + code1 = this._lookBits(12); + } + } + if (code1 === 1) { + this._eatBits(12); + gotEOL = true; + } else if (code1 === ccittEOF) { + this.eof = true; + } + } + if (!this.eof && this.encoding > 0 && !this.rowsDone) { + this.nextLine2D = !this._lookBits(1); + this._eatBits(1); + } + if (this.eoblock && gotEOL && this.byteAlign) { + code1 = this._lookBits(12); + if (code1 === 1) { + this._eatBits(12); + if (this.encoding > 0) { + this._lookBits(1); + this._eatBits(1); + } + if (this.encoding >= 0) { + for (i = 0; i < 4; ++i) { + code1 = this._lookBits(12); + if (code1 !== 1) { + info("bad rtc code: " + code1); + } + this._eatBits(12); + if (this.encoding > 0) { + this._lookBits(1); + this._eatBits(1); + } + } + } + this.eof = true; + } + } else if (this.err && this.eoline) { + while (true) { + code1 = this._lookBits(13); + if (code1 === ccittEOF) { + this.eof = true; + return -1; + } + if (code1 >> 1 === 1) { + break; + } + this._eatBits(1); + } + this._eatBits(12); + if (this.encoding > 0) { + this._eatBits(1); + this.nextLine2D = !(code1 & 1); + } + } + this.outputBits = codingLine[0] > 0 ? codingLine[this.codingPos = 0] : codingLine[this.codingPos = 1]; + this.row++; + } + let c; + if (this.outputBits >= 8) { + c = this.codingPos & 1 ? 0 : 0xff; + this.outputBits -= 8; + if (this.outputBits === 0 && codingLine[this.codingPos] < columns) { + this.codingPos++; + this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; + } + } else { + bits = 8; + c = 0; + do { + if (typeof this.outputBits !== "number") { + throw new FormatError('Invalid /CCITTFaxDecode data, "outputBits" must be a number.'); + } + if (this.outputBits > bits) { + c <<= bits; + if (!(this.codingPos & 1)) { + c |= 0xff >> 8 - bits; + } + this.outputBits -= bits; + bits = 0; + } else { + c <<= this.outputBits; + if (!(this.codingPos & 1)) { + c |= 0xff >> 8 - this.outputBits; + } + bits -= this.outputBits; + this.outputBits = 0; + if (codingLine[this.codingPos] < columns) { + this.codingPos++; + this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; + } else if (bits > 0) { + c <<= bits; + bits = 0; + } + } + } while (bits); + } + if (this.black) { + c ^= 0xff; + } + return c; + } + _addPixels(a1, blackPixels) { + const codingLine = this.codingLine; + let codingPos = this.codingPos; + if (a1 > codingLine[codingPos]) { + if (a1 > this.columns) { + info("row is wrong length"); + this.err = true; + a1 = this.columns; + } + if (codingPos & 1 ^ blackPixels) { + ++codingPos; + } + codingLine[codingPos] = a1; + } + this.codingPos = codingPos; + } + _addPixelsNeg(a1, blackPixels) { + const codingLine = this.codingLine; + let codingPos = this.codingPos; + if (a1 > codingLine[codingPos]) { + if (a1 > this.columns) { + info("row is wrong length"); + this.err = true; + a1 = this.columns; + } + if (codingPos & 1 ^ blackPixels) { + ++codingPos; + } + codingLine[codingPos] = a1; + } else if (a1 < codingLine[codingPos]) { + if (a1 < 0) { + info("invalid code"); + this.err = true; + a1 = 0; + } + while (codingPos > 0 && a1 < codingLine[codingPos - 1]) { + --codingPos; + } + codingLine[codingPos] = a1; + } + this.codingPos = codingPos; + } + _findTableCode(start, end, table, limit) { + const limitValue = limit || 0; + for (let i = start; i <= end; ++i) { + let code = this._lookBits(i); + if (code === ccittEOF) { + return [true, 1, false]; + } + if (i < end) { + code <<= end - i; + } + if (!limitValue || code >= limitValue) { + const p = table[code - limitValue]; + if (p[0] === i) { + this._eatBits(i); + return [true, p[1], true]; + } + } + } + return [false, 0, false]; + } + _getTwoDimCode() { + let code = 0; + let p; + if (this.eoblock) { + code = this._lookBits(7); + p = twoDimTable[code]; + if (p?.[0] > 0) { + this._eatBits(p[0]); + return p[1]; + } + } else { + const result = this._findTableCode(1, 7, twoDimTable); + if (result[0] && result[2]) { + return result[1]; + } + } + info("Bad two dim code"); + return ccittEOF; + } + _getWhiteCode() { + let code = 0; + let p; + if (this.eoblock) { + code = this._lookBits(12); + if (code === ccittEOF) { + return 1; + } + p = code >> 5 === 0 ? whiteTable1[code] : whiteTable2[code >> 3]; + if (p[0] > 0) { + this._eatBits(p[0]); + return p[1]; + } + } else { + let result = this._findTableCode(1, 9, whiteTable2); + if (result[0]) { + return result[1]; + } + result = this._findTableCode(11, 12, whiteTable1); + if (result[0]) { + return result[1]; + } + } + info("bad white code"); + this._eatBits(1); + return 1; + } + _getBlackCode() { + let code, p; + if (this.eoblock) { + code = this._lookBits(13); + if (code === ccittEOF) { + return 1; + } + if (code >> 7 === 0) { + p = blackTable1[code]; + } else if (code >> 9 === 0 && code >> 7 !== 0) { + p = blackTable2[(code >> 1) - 64]; + } else { + p = blackTable3[code >> 7]; + } + if (p[0] > 0) { + this._eatBits(p[0]); + return p[1]; + } + } else { + let result = this._findTableCode(2, 6, blackTable3); + if (result[0]) { + return result[1]; + } + result = this._findTableCode(7, 12, blackTable2, 64); + if (result[0]) { + return result[1]; + } + result = this._findTableCode(10, 13, blackTable1); + if (result[0]) { + return result[1]; + } + } + info("bad black code"); + this._eatBits(1); + return 1; + } + _lookBits(n) { + let c; + while (this.inputBits < n) { + if ((c = this.source.next()) === -1) { + if (this.inputBits === 0) { + return ccittEOF; + } + return this.inputBuf << n - this.inputBits & 0xffff >> 16 - n; + } + this.inputBuf = this.inputBuf << 8 | c; + this.inputBits += 8; + } + return this.inputBuf >> this.inputBits - n & 0xffff >> 16 - n; + } + _eatBits(n) { + if ((this.inputBits -= n) < 0) { + this.inputBits = 0; + } + } +} + +;// ./src/core/jbig2.js + + + + +class Jbig2Error extends BaseException { + constructor(msg) { + super(msg, "Jbig2Error"); + } +} +class ContextCache { + getContexts(id) { + if (id in this) { + return this[id]; + } + return this[id] = new Int8Array(1 << 16); + } +} +class DecodingContext { + constructor(data, start, end) { + this.data = data; + this.start = start; + this.end = end; + } + get decoder() { + const decoder = new ArithmeticDecoder(this.data, this.start, this.end); + return shadow(this, "decoder", decoder); + } + get contextCache() { + const cache = new ContextCache(); + return shadow(this, "contextCache", cache); + } +} +function decodeInteger(contextCache, procedure, decoder) { + const contexts = contextCache.getContexts(procedure); + let prev = 1; + function readBits(length) { + let v = 0; + for (let i = 0; i < length; i++) { + const bit = decoder.readBit(contexts, prev); + prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256; + v = v << 1 | bit; + } + return v >>> 0; + } + const sign = readBits(1); + const value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2); + let signedValue; + if (sign === 0) { + signedValue = value; + } else if (value > 0) { + signedValue = -value; + } + if (signedValue >= MIN_INT_32 && signedValue <= MAX_INT_32) { + return signedValue; + } + return null; +} +function decodeIAID(contextCache, decoder, codeLength) { + const contexts = contextCache.getContexts("IAID"); + let prev = 1; + for (let i = 0; i < codeLength; i++) { + const bit = decoder.readBit(contexts, prev); + prev = prev << 1 | bit; + } + if (codeLength < 31) { + return prev & (1 << codeLength) - 1; + } + return prev & 0x7fffffff; +} +const SegmentTypes = ["SymbolDictionary", null, null, null, "IntermediateTextRegion", null, "ImmediateTextRegion", "ImmediateLosslessTextRegion", null, null, null, null, null, null, null, null, "PatternDictionary", null, null, null, "IntermediateHalftoneRegion", null, "ImmediateHalftoneRegion", "ImmediateLosslessHalftoneRegion", null, null, null, null, null, null, null, null, null, null, null, null, "IntermediateGenericRegion", null, "ImmediateGenericRegion", "ImmediateLosslessGenericRegion", "IntermediateGenericRefinementRegion", null, "ImmediateGenericRefinementRegion", "ImmediateLosslessGenericRefinementRegion", null, null, null, null, "PageInformation", "EndOfPage", "EndOfStripe", "EndOfFile", "Profiles", "Tables", null, null, null, null, null, null, null, null, "Extension"]; +const CodingTemplates = [[{ + x: -1, + y: -2 +}, { + x: 0, + y: -2 +}, { + x: 1, + y: -2 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: 2, + y: -1 +}, { + x: -4, + y: 0 +}, { + x: -3, + y: 0 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}], [{ + x: -1, + y: -2 +}, { + x: 0, + y: -2 +}, { + x: 1, + y: -2 +}, { + x: 2, + y: -2 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: 2, + y: -1 +}, { + x: -3, + y: 0 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}], [{ + x: -1, + y: -2 +}, { + x: 0, + y: -2 +}, { + x: 1, + y: -2 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}], [{ + x: -3, + y: -1 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: -4, + y: 0 +}, { + x: -3, + y: 0 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}]]; +const RefinementTemplates = [{ + coding: [{ + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }], + reference: [{ + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }, { + x: 0, + y: 0 + }, { + x: 1, + y: 0 + }, { + x: -1, + y: 1 + }, { + x: 0, + y: 1 + }, { + x: 1, + y: 1 + }] +}, { + coding: [{ + x: -1, + y: -1 + }, { + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }], + reference: [{ + x: 0, + y: -1 + }, { + x: -1, + y: 0 + }, { + x: 0, + y: 0 + }, { + x: 1, + y: 0 + }, { + x: 0, + y: 1 + }, { + x: 1, + y: 1 + }] +}]; +const ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195]; +const RefinementReusedContexts = [0x0020, 0x0008]; +function decodeBitmapTemplate0(width, height, decodingContext) { + const decoder = decodingContext.decoder; + const contexts = decodingContext.contextCache.getContexts("GB"); + const bitmap = []; + let contextLabel, i, j, pixel, row, row1, row2; + const OLD_PIXEL_MASK = 0x7bf7; + for (i = 0; i < height; i++) { + row = bitmap[i] = new Uint8Array(width); + row1 = i < 1 ? row : bitmap[i - 1]; + row2 = i < 2 ? row : bitmap[i - 2]; + contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4; + for (j = 0; j < width; j++) { + row[j] = pixel = decoder.readBit(contexts, contextLabel); + contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel; + } + } + return bitmap; +} +function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) { + if (mmr) { + const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); + return decodeMMRBitmap(input, width, height, false); + } + if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) { + return decodeBitmapTemplate0(width, height, decodingContext); + } + const useskip = !!skip; + const template = CodingTemplates[templateIndex].concat(at); + template.sort((a, b) => a.y - b.y || a.x - b.x); + const templateLength = template.length; + const templateX = new Int8Array(templateLength); + const templateY = new Int8Array(templateLength); + const changingTemplateEntries = []; + let reuseMask = 0, + minX = 0, + maxX = 0, + minY = 0; + let c, k; + for (k = 0; k < templateLength; k++) { + templateX[k] = template[k].x; + templateY[k] = template[k].y; + minX = Math.min(minX, template[k].x); + maxX = Math.max(maxX, template[k].x); + minY = Math.min(minY, template[k].y); + if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) { + reuseMask |= 1 << templateLength - 1 - k; + } else { + changingTemplateEntries.push(k); + } + } + const changingEntriesLength = changingTemplateEntries.length; + const changingTemplateX = new Int8Array(changingEntriesLength); + const changingTemplateY = new Int8Array(changingEntriesLength); + const changingTemplateBit = new Uint16Array(changingEntriesLength); + for (c = 0; c < changingEntriesLength; c++) { + k = changingTemplateEntries[c]; + changingTemplateX[c] = template[k].x; + changingTemplateY[c] = template[k].y; + changingTemplateBit[c] = 1 << templateLength - 1 - k; + } + const sbb_left = -minX; + const sbb_top = -minY; + const sbb_right = width - maxX; + const pseudoPixelContext = ReusedContexts[templateIndex]; + let row = new Uint8Array(width); + const bitmap = []; + const decoder = decodingContext.decoder; + const contexts = decodingContext.contextCache.getContexts("GB"); + let ltp = 0, + j, + i0, + j0, + contextLabel = 0, + bit, + shift; + for (let i = 0; i < height; i++) { + if (prediction) { + const sltp = decoder.readBit(contexts, pseudoPixelContext); + ltp ^= sltp; + if (ltp) { + bitmap.push(row); + continue; + } + } + row = new Uint8Array(row); + bitmap.push(row); + for (j = 0; j < width; j++) { + if (useskip && skip[i][j]) { + row[j] = 0; + continue; + } + if (j >= sbb_left && j < sbb_right && i >= sbb_top) { + contextLabel = contextLabel << 1 & reuseMask; + for (k = 0; k < changingEntriesLength; k++) { + i0 = i + changingTemplateY[k]; + j0 = j + changingTemplateX[k]; + bit = bitmap[i0][j0]; + if (bit) { + bit = changingTemplateBit[k]; + contextLabel |= bit; + } + } + } else { + contextLabel = 0; + shift = templateLength - 1; + for (k = 0; k < templateLength; k++, shift--) { + j0 = j + templateX[k]; + if (j0 >= 0 && j0 < width) { + i0 = i + templateY[k]; + if (i0 >= 0) { + bit = bitmap[i0][j0]; + if (bit) { + contextLabel |= bit << shift; + } + } + } + } + } + const pixel = decoder.readBit(contexts, contextLabel); + row[j] = pixel; + } + } + return bitmap; +} +function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) { + let codingTemplate = RefinementTemplates[templateIndex].coding; + if (templateIndex === 0) { + codingTemplate = codingTemplate.concat([at[0]]); + } + const codingTemplateLength = codingTemplate.length; + const codingTemplateX = new Int32Array(codingTemplateLength); + const codingTemplateY = new Int32Array(codingTemplateLength); + let k; + for (k = 0; k < codingTemplateLength; k++) { + codingTemplateX[k] = codingTemplate[k].x; + codingTemplateY[k] = codingTemplate[k].y; + } + let referenceTemplate = RefinementTemplates[templateIndex].reference; + if (templateIndex === 0) { + referenceTemplate = referenceTemplate.concat([at[1]]); + } + const referenceTemplateLength = referenceTemplate.length; + const referenceTemplateX = new Int32Array(referenceTemplateLength); + const referenceTemplateY = new Int32Array(referenceTemplateLength); + for (k = 0; k < referenceTemplateLength; k++) { + referenceTemplateX[k] = referenceTemplate[k].x; + referenceTemplateY[k] = referenceTemplate[k].y; + } + const referenceWidth = referenceBitmap[0].length; + const referenceHeight = referenceBitmap.length; + const pseudoPixelContext = RefinementReusedContexts[templateIndex]; + const bitmap = []; + const decoder = decodingContext.decoder; + const contexts = decodingContext.contextCache.getContexts("GR"); + let ltp = 0; + for (let i = 0; i < height; i++) { + if (prediction) { + const sltp = decoder.readBit(contexts, pseudoPixelContext); + ltp ^= sltp; + if (ltp) { + throw new Jbig2Error("prediction is not supported"); + } + } + const row = new Uint8Array(width); + bitmap.push(row); + for (let j = 0; j < width; j++) { + let i0, j0; + let contextLabel = 0; + for (k = 0; k < codingTemplateLength; k++) { + i0 = i + codingTemplateY[k]; + j0 = j + codingTemplateX[k]; + if (i0 < 0 || j0 < 0 || j0 >= width) { + contextLabel <<= 1; + } else { + contextLabel = contextLabel << 1 | bitmap[i0][j0]; + } + } + for (k = 0; k < referenceTemplateLength; k++) { + i0 = i + referenceTemplateY[k] - offsetY; + j0 = j + referenceTemplateX[k] - offsetX; + if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) { + contextLabel <<= 1; + } else { + contextLabel = contextLabel << 1 | referenceBitmap[i0][j0]; + } + } + const pixel = decoder.readBit(contexts, contextLabel); + row[j] = pixel; + } + } + return bitmap; +} +function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) { + if (huffman && refinement) { + throw new Jbig2Error("symbol refinement with Huffman is not supported"); + } + const newSymbols = []; + let currentHeight = 0; + let symbolCodeLength = log2(symbols.length + numberOfNewSymbols); + const decoder = decodingContext.decoder; + const contextCache = decodingContext.contextCache; + let tableB1, symbolWidths; + if (huffman) { + tableB1 = getStandardTable(1); + symbolWidths = []; + symbolCodeLength = Math.max(symbolCodeLength, 1); + } + while (newSymbols.length < numberOfNewSymbols) { + const deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, "IADH", decoder); + currentHeight += deltaHeight; + let currentWidth = 0, + totalWidth = 0; + const firstSymbol = huffman ? symbolWidths.length : 0; + while (true) { + const deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, "IADW", decoder); + if (deltaWidth === null) { + break; + } + currentWidth += deltaWidth; + totalWidth += currentWidth; + let bitmap; + if (refinement) { + const numberOfInstances = decodeInteger(contextCache, "IAAI", decoder); + if (numberOfInstances > 1) { + bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput); + } else { + const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); + const rdx = decodeInteger(contextCache, "IARDX", decoder); + const rdy = decodeInteger(contextCache, "IARDY", decoder); + const symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length]; + bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext); + } + newSymbols.push(bitmap); + } else if (huffman) { + symbolWidths.push(currentWidth); + } else { + bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext); + newSymbols.push(bitmap); + } + } + if (huffman && !refinement) { + const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput); + huffmanInput.byteAlign(); + let collectiveBitmap; + if (bitmapSize === 0) { + collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight); + } else { + const originalEnd = huffmanInput.end; + const bitmapEnd = huffmanInput.position + bitmapSize; + huffmanInput.end = bitmapEnd; + collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false); + huffmanInput.end = originalEnd; + huffmanInput.position = bitmapEnd; + } + const numberOfSymbolsDecoded = symbolWidths.length; + if (firstSymbol === numberOfSymbolsDecoded - 1) { + newSymbols.push(collectiveBitmap); + } else { + let i, + y, + xMin = 0, + xMax, + bitmapWidth, + symbolBitmap; + for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) { + bitmapWidth = symbolWidths[i]; + xMax = xMin + bitmapWidth; + symbolBitmap = []; + for (y = 0; y < currentHeight; y++) { + symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); + } + newSymbols.push(symbolBitmap); + xMin = xMax; + } + } + } + } + const exportedSymbols = [], + flags = []; + let currentFlag = false, + i, + ii; + const totalSymbolsLength = symbols.length + numberOfNewSymbols; + while (flags.length < totalSymbolsLength) { + let runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, "IAEX", decoder); + while (runLength--) { + flags.push(currentFlag); + } + currentFlag = !currentFlag; + } + for (i = 0, ii = symbols.length; i < ii; i++) { + if (flags[i]) { + exportedSymbols.push(symbols[i]); + } + } + for (let j = 0; j < numberOfNewSymbols; i++, j++) { + if (flags[i]) { + exportedSymbols.push(newSymbols[j]); + } + } + return exportedSymbols; +} +function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) { + if (huffman && refinement) { + throw new Jbig2Error("refinement with Huffman is not supported"); + } + const bitmap = []; + let i, row; + for (i = 0; i < height; i++) { + row = new Uint8Array(width); + if (defaultPixelValue) { + row.fill(defaultPixelValue); + } + bitmap.push(row); + } + const decoder = decodingContext.decoder; + const contextCache = decodingContext.contextCache; + let stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, "IADT", decoder); + let firstS = 0; + i = 0; + while (i < numberOfSymbolInstances) { + const deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, "IADT", decoder); + stripT += deltaT; + const deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, "IAFS", decoder); + firstS += deltaFirstS; + let currentS = firstS; + do { + let currentT = 0; + if (stripSize > 1) { + currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, "IAIT", decoder); + } + const t = stripSize * stripT + currentT; + const symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength); + const applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, "IARI", decoder)); + let symbolBitmap = inputSymbols[symbolId]; + let symbolWidth = symbolBitmap[0].length; + let symbolHeight = symbolBitmap.length; + if (applyRefinement) { + const rdw = decodeInteger(contextCache, "IARDW", decoder); + const rdh = decodeInteger(contextCache, "IARDH", decoder); + const rdx = decodeInteger(contextCache, "IARDX", decoder); + const rdy = decodeInteger(contextCache, "IARDY", decoder); + symbolWidth += rdw; + symbolHeight += rdh; + symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext); + } + let increment = 0; + if (!transposed) { + if (referenceCorner > 1) { + currentS += symbolWidth - 1; + } else { + increment = symbolWidth - 1; + } + } else if (!(referenceCorner & 1)) { + currentS += symbolHeight - 1; + } else { + increment = symbolHeight - 1; + } + const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1); + const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0); + let s2, t2, symbolRow; + if (transposed) { + for (s2 = 0; s2 < symbolHeight; s2++) { + row = bitmap[offsetS + s2]; + if (!row) { + continue; + } + symbolRow = symbolBitmap[s2]; + const maxWidth = Math.min(width - offsetT, symbolWidth); + switch (combinationOperator) { + case 0: + for (t2 = 0; t2 < maxWidth; t2++) { + row[offsetT + t2] |= symbolRow[t2]; + } + break; + case 2: + for (t2 = 0; t2 < maxWidth; t2++) { + row[offsetT + t2] ^= symbolRow[t2]; + } + break; + default: + throw new Jbig2Error(`operator ${combinationOperator} is not supported`); + } + } + } else { + for (t2 = 0; t2 < symbolHeight; t2++) { + row = bitmap[offsetT + t2]; + if (!row) { + continue; + } + symbolRow = symbolBitmap[t2]; + switch (combinationOperator) { + case 0: + for (s2 = 0; s2 < symbolWidth; s2++) { + row[offsetS + s2] |= symbolRow[s2]; + } + break; + case 2: + for (s2 = 0; s2 < symbolWidth; s2++) { + row[offsetS + s2] ^= symbolRow[s2]; + } + break; + default: + throw new Jbig2Error(`operator ${combinationOperator} is not supported`); + } + } + } + i++; + const deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, "IADS", decoder); + if (deltaS === null) { + break; + } + currentS += increment + deltaS + dsOffset; + } while (true); + } + return bitmap; +} +function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) { + const at = []; + if (!mmr) { + at.push({ + x: -patternWidth, + y: 0 + }); + if (template === 0) { + at.push({ + x: -3, + y: -1 + }, { + x: 2, + y: -2 + }, { + x: -2, + y: -2 + }); + } + } + const collectiveWidth = (maxPatternIndex + 1) * patternWidth; + const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext); + const patterns = []; + for (let i = 0; i <= maxPatternIndex; i++) { + const patternBitmap = []; + const xMin = patternWidth * i; + const xMax = xMin + patternWidth; + for (let y = 0; y < patternHeight; y++) { + patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); + } + patterns.push(patternBitmap); + } + return patterns; +} +function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) { + const skip = null; + if (enableSkip) { + throw new Jbig2Error("skip is not supported"); + } + if (combinationOperator !== 0) { + throw new Jbig2Error(`operator "${combinationOperator}" is not supported in halftone region`); + } + const regionBitmap = []; + let i, j, row; + for (i = 0; i < regionHeight; i++) { + row = new Uint8Array(regionWidth); + if (defaultPixelValue) { + row.fill(defaultPixelValue); + } + regionBitmap.push(row); + } + const numberOfPatterns = patterns.length; + const pattern0 = patterns[0]; + const patternWidth = pattern0[0].length, + patternHeight = pattern0.length; + const bitsPerValue = log2(numberOfPatterns); + const at = []; + if (!mmr) { + at.push({ + x: template <= 1 ? 3 : 2, + y: -1 + }); + if (template === 0) { + at.push({ + x: -3, + y: -1 + }, { + x: 2, + y: -2 + }, { + x: -2, + y: -2 + }); + } + } + const grayScaleBitPlanes = []; + let mmrInput, bitmap; + if (mmr) { + mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); + } + for (i = bitsPerValue - 1; i >= 0; i--) { + if (mmr) { + bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true); + } else { + bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext); + } + grayScaleBitPlanes[i] = bitmap; + } + let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow; + for (mg = 0; mg < gridHeight; mg++) { + for (ng = 0; ng < gridWidth; ng++) { + bit = 0; + patternIndex = 0; + for (j = bitsPerValue - 1; j >= 0; j--) { + bit ^= grayScaleBitPlanes[j][mg][ng]; + patternIndex |= bit << j; + } + patternBitmap = patterns[patternIndex]; + x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8; + y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8; + if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) { + for (i = 0; i < patternHeight; i++) { + regionRow = regionBitmap[y + i]; + patternRow = patternBitmap[i]; + for (j = 0; j < patternWidth; j++) { + regionRow[x + j] |= patternRow[j]; + } + } + } else { + let regionX, regionY; + for (i = 0; i < patternHeight; i++) { + regionY = y + i; + if (regionY < 0 || regionY >= regionHeight) { + continue; + } + regionRow = regionBitmap[regionY]; + patternRow = patternBitmap[i]; + for (j = 0; j < patternWidth; j++) { + regionX = x + j; + if (regionX >= 0 && regionX < regionWidth) { + regionRow[regionX] |= patternRow[j]; + } + } + } + } + } + } + return regionBitmap; +} +function readSegmentHeader(data, start) { + const segmentHeader = {}; + segmentHeader.number = readUint32(data, start); + const flags = data[start + 4]; + const segmentType = flags & 0x3f; + if (!SegmentTypes[segmentType]) { + throw new Jbig2Error("invalid segment type: " + segmentType); + } + segmentHeader.type = segmentType; + segmentHeader.typeName = SegmentTypes[segmentType]; + segmentHeader.deferredNonRetain = !!(flags & 0x80); + const pageAssociationFieldSize = !!(flags & 0x40); + const referredFlags = data[start + 5]; + let referredToCount = referredFlags >> 5 & 7; + const retainBits = [referredFlags & 31]; + let position = start + 6; + if (referredToCount === 7) { + referredToCount = readUint32(data, position - 1) & 0x1fffffff; + position += 3; + let bytes = referredToCount + 8 >> 3; + retainBits[0] = data[position++]; + while (--bytes > 0) { + retainBits.push(data[position++]); + } + } else if (referredToCount === 5 || referredToCount === 6) { + throw new Jbig2Error("invalid referred-to flags"); + } + segmentHeader.retainBits = retainBits; + let referredToSegmentNumberSize = 4; + if (segmentHeader.number <= 256) { + referredToSegmentNumberSize = 1; + } else if (segmentHeader.number <= 65536) { + referredToSegmentNumberSize = 2; + } + const referredTo = []; + let i, ii; + for (i = 0; i < referredToCount; i++) { + let number; + if (referredToSegmentNumberSize === 1) { + number = data[position]; + } else if (referredToSegmentNumberSize === 2) { + number = readUint16(data, position); + } else { + number = readUint32(data, position); + } + referredTo.push(number); + position += referredToSegmentNumberSize; + } + segmentHeader.referredTo = referredTo; + if (!pageAssociationFieldSize) { + segmentHeader.pageAssociation = data[position++]; + } else { + segmentHeader.pageAssociation = readUint32(data, position); + position += 4; + } + segmentHeader.length = readUint32(data, position); + position += 4; + if (segmentHeader.length === 0xffffffff) { + if (segmentType === 38) { + const genericRegionInfo = readRegionSegmentInformation(data, position); + const genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength]; + const genericRegionMmr = !!(genericRegionSegmentFlags & 1); + const searchPatternLength = 6; + const searchPattern = new Uint8Array(searchPatternLength); + if (!genericRegionMmr) { + searchPattern[0] = 0xff; + searchPattern[1] = 0xac; + } + searchPattern[2] = genericRegionInfo.height >>> 24 & 0xff; + searchPattern[3] = genericRegionInfo.height >> 16 & 0xff; + searchPattern[4] = genericRegionInfo.height >> 8 & 0xff; + searchPattern[5] = genericRegionInfo.height & 0xff; + for (i = position, ii = data.length; i < ii; i++) { + let j = 0; + while (j < searchPatternLength && searchPattern[j] === data[i + j]) { + j++; + } + if (j === searchPatternLength) { + segmentHeader.length = i + searchPatternLength; + break; + } + } + if (segmentHeader.length === 0xffffffff) { + throw new Jbig2Error("segment end was not found"); + } + } else { + throw new Jbig2Error("invalid unknown segment length"); + } + } + segmentHeader.headerEnd = position; + return segmentHeader; +} +function readSegments(header, data, start, end) { + const segments = []; + let position = start; + while (position < end) { + const segmentHeader = readSegmentHeader(data, position); + position = segmentHeader.headerEnd; + const segment = { + header: segmentHeader, + data + }; + if (!header.randomAccess) { + segment.start = position; + position += segmentHeader.length; + segment.end = position; + } + segments.push(segment); + if (segmentHeader.type === 51) { + break; + } + } + if (header.randomAccess) { + for (let i = 0, ii = segments.length; i < ii; i++) { + segments[i].start = position; + position += segments[i].header.length; + segments[i].end = position; + } + } + return segments; +} +function readRegionSegmentInformation(data, start) { + return { + width: readUint32(data, start), + height: readUint32(data, start + 4), + x: readUint32(data, start + 8), + y: readUint32(data, start + 12), + combinationOperator: data[start + 16] & 7 + }; +} +const RegionSegmentInformationFieldLength = 17; +function processSegment(segment, visitor) { + const header = segment.header; + const data = segment.data, + end = segment.end; + let position = segment.start; + let args, at, i, atLength; + switch (header.type) { + case 0: + const dictionary = {}; + const dictionaryFlags = readUint16(data, position); + dictionary.huffman = !!(dictionaryFlags & 1); + dictionary.refinement = !!(dictionaryFlags & 2); + dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3; + dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3; + dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1; + dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1; + dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256); + dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512); + dictionary.template = dictionaryFlags >> 10 & 3; + dictionary.refinementTemplate = dictionaryFlags >> 12 & 1; + position += 2; + if (!dictionary.huffman) { + atLength = dictionary.template === 0 ? 4 : 1; + at = []; + for (i = 0; i < atLength; i++) { + at.push({ + x: readInt8(data, position), + y: readInt8(data, position + 1) + }); + position += 2; + } + dictionary.at = at; + } + if (dictionary.refinement && !dictionary.refinementTemplate) { + at = []; + for (i = 0; i < 2; i++) { + at.push({ + x: readInt8(data, position), + y: readInt8(data, position + 1) + }); + position += 2; + } + dictionary.refinementAt = at; + } + dictionary.numberOfExportedSymbols = readUint32(data, position); + position += 4; + dictionary.numberOfNewSymbols = readUint32(data, position); + position += 4; + args = [dictionary, header.number, header.referredTo, data, position, end]; + break; + case 6: + case 7: + const textRegion = {}; + textRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + const textRegionSegmentFlags = readUint16(data, position); + position += 2; + textRegion.huffman = !!(textRegionSegmentFlags & 1); + textRegion.refinement = !!(textRegionSegmentFlags & 2); + textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3; + textRegion.stripSize = 1 << textRegion.logStripSize; + textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3; + textRegion.transposed = !!(textRegionSegmentFlags & 64); + textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3; + textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1; + textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27; + textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1; + if (textRegion.huffman) { + const textRegionHuffmanFlags = readUint16(data, position); + position += 2; + textRegion.huffmanFS = textRegionHuffmanFlags & 3; + textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3; + textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3; + textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3; + textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3; + textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3; + textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3; + textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000); + } + if (textRegion.refinement && !textRegion.refinementTemplate) { + at = []; + for (i = 0; i < 2; i++) { + at.push({ + x: readInt8(data, position), + y: readInt8(data, position + 1) + }); + position += 2; + } + textRegion.refinementAt = at; + } + textRegion.numberOfSymbolInstances = readUint32(data, position); + position += 4; + args = [textRegion, header.referredTo, data, position, end]; + break; + case 16: + const patternDictionary = {}; + const patternDictionaryFlags = data[position++]; + patternDictionary.mmr = !!(patternDictionaryFlags & 1); + patternDictionary.template = patternDictionaryFlags >> 1 & 3; + patternDictionary.patternWidth = data[position++]; + patternDictionary.patternHeight = data[position++]; + patternDictionary.maxPatternIndex = readUint32(data, position); + position += 4; + args = [patternDictionary, header.number, data, position, end]; + break; + case 22: + case 23: + const halftoneRegion = {}; + halftoneRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + const halftoneRegionFlags = data[position++]; + halftoneRegion.mmr = !!(halftoneRegionFlags & 1); + halftoneRegion.template = halftoneRegionFlags >> 1 & 3; + halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8); + halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7; + halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1; + halftoneRegion.gridWidth = readUint32(data, position); + position += 4; + halftoneRegion.gridHeight = readUint32(data, position); + position += 4; + halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff; + position += 4; + halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff; + position += 4; + halftoneRegion.gridVectorX = readUint16(data, position); + position += 2; + halftoneRegion.gridVectorY = readUint16(data, position); + position += 2; + args = [halftoneRegion, header.referredTo, data, position, end]; + break; + case 38: + case 39: + const genericRegion = {}; + genericRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + const genericRegionSegmentFlags = data[position++]; + genericRegion.mmr = !!(genericRegionSegmentFlags & 1); + genericRegion.template = genericRegionSegmentFlags >> 1 & 3; + genericRegion.prediction = !!(genericRegionSegmentFlags & 8); + if (!genericRegion.mmr) { + atLength = genericRegion.template === 0 ? 4 : 1; + at = []; + for (i = 0; i < atLength; i++) { + at.push({ + x: readInt8(data, position), + y: readInt8(data, position + 1) + }); + position += 2; + } + genericRegion.at = at; + } + args = [genericRegion, data, position, end]; + break; + case 48: + const pageInfo = { + width: readUint32(data, position), + height: readUint32(data, position + 4), + resolutionX: readUint32(data, position + 8), + resolutionY: readUint32(data, position + 12) + }; + if (pageInfo.height === 0xffffffff) { + delete pageInfo.height; + } + const pageSegmentFlags = data[position + 16]; + readUint16(data, position + 17); + pageInfo.lossless = !!(pageSegmentFlags & 1); + pageInfo.refinement = !!(pageSegmentFlags & 2); + pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1; + pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3; + pageInfo.requiresBuffer = !!(pageSegmentFlags & 32); + pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64); + args = [pageInfo]; + break; + case 49: + break; + case 50: + break; + case 51: + break; + case 53: + args = [header.number, data, position, end]; + break; + case 62: + break; + default: + throw new Jbig2Error(`segment type ${header.typeName}(${header.type}) is not implemented`); + } + const callbackName = "on" + header.typeName; + if (callbackName in visitor) { + visitor[callbackName].apply(visitor, args); + } +} +function processSegments(segments, visitor) { + for (let i = 0, ii = segments.length; i < ii; i++) { + processSegment(segments[i], visitor); + } +} +function parseJbig2Chunks(chunks) { + const visitor = new SimpleSegmentVisitor(); + for (let i = 0, ii = chunks.length; i < ii; i++) { + const chunk = chunks[i]; + const segments = readSegments({}, chunk.data, chunk.start, chunk.end); + processSegments(segments, visitor); + } + return visitor.buffer; +} +class SimpleSegmentVisitor { + onPageInformation(info) { + this.currentPageInfo = info; + const rowSize = info.width + 7 >> 3; + const buffer = new Uint8ClampedArray(rowSize * info.height); + if (info.defaultPixelValue) { + buffer.fill(0xff); + } + this.buffer = buffer; + } + drawBitmap(regionInfo, bitmap) { + const pageInfo = this.currentPageInfo; + const width = regionInfo.width, + height = regionInfo.height; + const rowSize = pageInfo.width + 7 >> 3; + const combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator; + const buffer = this.buffer; + const mask0 = 128 >> (regionInfo.x & 7); + let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3); + let i, j, mask, offset; + switch (combinationOperator) { + case 0: + for (i = 0; i < height; i++) { + mask = mask0; + offset = offset0; + for (j = 0; j < width; j++) { + if (bitmap[i][j]) { + buffer[offset] |= mask; + } + mask >>= 1; + if (!mask) { + mask = 128; + offset++; + } + } + offset0 += rowSize; + } + break; + case 2: + for (i = 0; i < height; i++) { + mask = mask0; + offset = offset0; + for (j = 0; j < width; j++) { + if (bitmap[i][j]) { + buffer[offset] ^= mask; + } + mask >>= 1; + if (!mask) { + mask = 128; + offset++; + } + } + offset0 += rowSize; + } + break; + default: + throw new Jbig2Error(`operator ${combinationOperator} is not supported`); + } + } + onImmediateGenericRegion(region, data, start, end) { + const regionInfo = region.info; + const decodingContext = new DecodingContext(data, start, end); + const bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext); + this.drawBitmap(regionInfo, bitmap); + } + onImmediateLosslessGenericRegion() { + this.onImmediateGenericRegion(...arguments); + } + onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) { + let huffmanTables, huffmanInput; + if (dictionary.huffman) { + huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables); + huffmanInput = new Reader(data, start, end); + } + const symbols = this.symbols ||= {}; + const inputSymbols = []; + for (const referredSegment of referredSegments) { + const referredSymbols = symbols[referredSegment]; + if (referredSymbols) { + inputSymbols.push(...referredSymbols); + } + } + const decodingContext = new DecodingContext(data, start, end); + symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput); + } + onImmediateTextRegion(region, referredSegments, data, start, end) { + const regionInfo = region.info; + let huffmanTables, huffmanInput; + const symbols = this.symbols; + const inputSymbols = []; + for (const referredSegment of referredSegments) { + const referredSymbols = symbols[referredSegment]; + if (referredSymbols) { + inputSymbols.push(...referredSymbols); + } + } + const symbolCodeLength = log2(inputSymbols.length); + if (region.huffman) { + huffmanInput = new Reader(data, start, end); + huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput); + } + const decodingContext = new DecodingContext(data, start, end); + const bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput); + this.drawBitmap(regionInfo, bitmap); + } + onImmediateLosslessTextRegion() { + this.onImmediateTextRegion(...arguments); + } + onPatternDictionary(dictionary, currentSegment, data, start, end) { + const patterns = this.patterns ||= {}; + const decodingContext = new DecodingContext(data, start, end); + patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext); + } + onImmediateHalftoneRegion(region, referredSegments, data, start, end) { + const patterns = this.patterns[referredSegments[0]]; + const regionInfo = region.info; + const decodingContext = new DecodingContext(data, start, end); + const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext); + this.drawBitmap(regionInfo, bitmap); + } + onImmediateLosslessHalftoneRegion() { + this.onImmediateHalftoneRegion(...arguments); + } + onTables(currentSegment, data, start, end) { + const customTables = this.customTables ||= {}; + customTables[currentSegment] = decodeTablesSegment(data, start, end); + } +} +class HuffmanLine { + constructor(lineData) { + if (lineData.length === 2) { + this.isOOB = true; + this.rangeLow = 0; + this.prefixLength = lineData[0]; + this.rangeLength = 0; + this.prefixCode = lineData[1]; + this.isLowerRange = false; + } else { + this.isOOB = false; + this.rangeLow = lineData[0]; + this.prefixLength = lineData[1]; + this.rangeLength = lineData[2]; + this.prefixCode = lineData[3]; + this.isLowerRange = lineData[4] === "lower"; + } + } +} +class HuffmanTreeNode { + constructor(line) { + this.children = []; + if (line) { + this.isLeaf = true; + this.rangeLength = line.rangeLength; + this.rangeLow = line.rangeLow; + this.isLowerRange = line.isLowerRange; + this.isOOB = line.isOOB; + } else { + this.isLeaf = false; + } + } + buildTree(line, shift) { + const bit = line.prefixCode >> shift & 1; + if (shift <= 0) { + this.children[bit] = new HuffmanTreeNode(line); + } else { + const node = this.children[bit] ||= new HuffmanTreeNode(null); + node.buildTree(line, shift - 1); + } + } + decodeNode(reader) { + if (this.isLeaf) { + if (this.isOOB) { + return null; + } + const htOffset = reader.readBits(this.rangeLength); + return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset); + } + const node = this.children[reader.readBit()]; + if (!node) { + throw new Jbig2Error("invalid Huffman data"); + } + return node.decodeNode(reader); + } +} +class HuffmanTable { + constructor(lines, prefixCodesDone) { + if (!prefixCodesDone) { + this.assignPrefixCodes(lines); + } + this.rootNode = new HuffmanTreeNode(null); + for (let i = 0, ii = lines.length; i < ii; i++) { + const line = lines[i]; + if (line.prefixLength > 0) { + this.rootNode.buildTree(line, line.prefixLength - 1); + } + } + } + decode(reader) { + return this.rootNode.decodeNode(reader); + } + assignPrefixCodes(lines) { + const linesLength = lines.length; + let prefixLengthMax = 0; + for (let i = 0; i < linesLength; i++) { + prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength); + } + const histogram = new Uint32Array(prefixLengthMax + 1); + for (let i = 0; i < linesLength; i++) { + histogram[lines[i].prefixLength]++; + } + let currentLength = 1, + firstCode = 0, + currentCode, + currentTemp, + line; + histogram[0] = 0; + while (currentLength <= prefixLengthMax) { + firstCode = firstCode + histogram[currentLength - 1] << 1; + currentCode = firstCode; + currentTemp = 0; + while (currentTemp < linesLength) { + line = lines[currentTemp]; + if (line.prefixLength === currentLength) { + line.prefixCode = currentCode; + currentCode++; + } + currentTemp++; + } + currentLength++; + } + } +} +function decodeTablesSegment(data, start, end) { + const flags = data[start]; + const lowestValue = readUint32(data, start + 1) & 0xffffffff; + const highestValue = readUint32(data, start + 5) & 0xffffffff; + const reader = new Reader(data, start + 9, end); + const prefixSizeBits = (flags >> 1 & 7) + 1; + const rangeSizeBits = (flags >> 4 & 7) + 1; + const lines = []; + let prefixLength, + rangeLength, + currentRangeLow = lowestValue; + do { + prefixLength = reader.readBits(prefixSizeBits); + rangeLength = reader.readBits(rangeSizeBits); + lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])); + currentRangeLow += 1 << rangeLength; + } while (currentRangeLow < highestValue); + prefixLength = reader.readBits(prefixSizeBits); + lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, "lower"])); + prefixLength = reader.readBits(prefixSizeBits); + lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0])); + if (flags & 1) { + prefixLength = reader.readBits(prefixSizeBits); + lines.push(new HuffmanLine([prefixLength, 0])); + } + return new HuffmanTable(lines, false); +} +const standardTablesCache = {}; +function getStandardTable(number) { + let table = standardTablesCache[number]; + if (table) { + return table; + } + let lines; + switch (number) { + case 1: + lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]]; + break; + case 2: + lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 0x3e], [6, 0x3f]]; + break; + case 3: + lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [-257, 8, 32, 0xff, "lower"], [75, 7, 32, 0x7e], [6, 0x3e]]; + break; + case 4: + lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 0x1f]]; + break; + case 5: + lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [-256, 7, 32, 0x7f, "lower"], [76, 6, 32, 0x3e]]; + break; + case 6: + lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, "lower"], [2048, 6, 32, 0x3f]]; + break; + case 7: + lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, "lower"], [2048, 5, 32, 0x1f]]; + break; + case 8: + lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], [-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 10, 0x3d], [-16, 9, 32, 0x1fe, "lower"], [1670, 9, 32, 0x1ff], [2, 0x1]]; + break; + case 9: + lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], [39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], [779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, "lower"], [3339, 9, 32, 0x1ff], [2, 0x0]]; + break; + case 10: + lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], [2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, "lower"], [4166, 8, 32, 0xff], [2, 0x2]]; + break; + case 11: + lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]]; + break; + case 12: + lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 0xfe], [73, 8, 32, 0xff]]; + break; + case 13: + lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]]; + break; + case 14: + lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]]; + break; + case 15: + lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 0x7e, "lower"], [25, 7, 32, 0x7f]]; + break; + default: + throw new Jbig2Error(`standard table B.${number} does not exist`); + } + for (let i = 0, ii = lines.length; i < ii; i++) { + lines[i] = new HuffmanLine(lines[i]); + } + table = new HuffmanTable(lines, true); + standardTablesCache[number] = table; + return table; +} +class Reader { + constructor(data, start, end) { + this.data = data; + this.start = start; + this.end = end; + this.position = start; + this.shift = -1; + this.currentByte = 0; + } + readBit() { + if (this.shift < 0) { + if (this.position >= this.end) { + throw new Jbig2Error("end of data while reading bit"); + } + this.currentByte = this.data[this.position++]; + this.shift = 7; + } + const bit = this.currentByte >> this.shift & 1; + this.shift--; + return bit; + } + readBits(numBits) { + let result = 0, + i; + for (i = numBits - 1; i >= 0; i--) { + result |= this.readBit() << i; + } + return result; + } + byteAlign() { + this.shift = -1; + } + next() { + if (this.position >= this.end) { + return -1; + } + return this.data[this.position++]; + } +} +function getCustomHuffmanTable(index, referredTo, customTables) { + let currentIndex = 0; + for (let i = 0, ii = referredTo.length; i < ii; i++) { + const table = customTables[referredTo[i]]; + if (table) { + if (index === currentIndex) { + return table; + } + currentIndex++; + } + } + throw new Jbig2Error("can't find custom Huffman table"); +} +function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) { + const codes = []; + for (let i = 0; i <= 34; i++) { + const codeLength = reader.readBits(4); + codes.push(new HuffmanLine([i, codeLength, 0, 0])); + } + const runCodesTable = new HuffmanTable(codes, false); + codes.length = 0; + for (let i = 0; i < numberOfSymbols;) { + const codeLength = runCodesTable.decode(reader); + if (codeLength >= 32) { + let repeatedLength, numberOfRepeats, j; + switch (codeLength) { + case 32: + if (i === 0) { + throw new Jbig2Error("no previous value in symbol ID table"); + } + numberOfRepeats = reader.readBits(2) + 3; + repeatedLength = codes[i - 1].prefixLength; + break; + case 33: + numberOfRepeats = reader.readBits(3) + 3; + repeatedLength = 0; + break; + case 34: + numberOfRepeats = reader.readBits(7) + 11; + repeatedLength = 0; + break; + default: + throw new Jbig2Error("invalid code length in symbol ID table"); + } + for (j = 0; j < numberOfRepeats; j++) { + codes.push(new HuffmanLine([i, repeatedLength, 0, 0])); + i++; + } + } else { + codes.push(new HuffmanLine([i, codeLength, 0, 0])); + i++; + } + } + reader.byteAlign(); + const symbolIDTable = new HuffmanTable(codes, false); + let customIndex = 0, + tableFirstS, + tableDeltaS, + tableDeltaT; + switch (textRegion.huffmanFS) { + case 0: + case 1: + tableFirstS = getStandardTable(textRegion.huffmanFS + 6); + break; + case 3: + tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman FS selector"); + } + switch (textRegion.huffmanDS) { + case 0: + case 1: + case 2: + tableDeltaS = getStandardTable(textRegion.huffmanDS + 8); + break; + case 3: + tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman DS selector"); + } + switch (textRegion.huffmanDT) { + case 0: + case 1: + case 2: + tableDeltaT = getStandardTable(textRegion.huffmanDT + 11); + break; + case 3: + tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman DT selector"); + } + if (textRegion.refinement) { + throw new Jbig2Error("refinement with Huffman is not supported"); + } + return { + symbolIDTable, + tableFirstS, + tableDeltaS, + tableDeltaT + }; +} +function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) { + let customIndex = 0, + tableDeltaHeight, + tableDeltaWidth; + switch (dictionary.huffmanDHSelector) { + case 0: + case 1: + tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4); + break; + case 3: + tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman DH selector"); + } + switch (dictionary.huffmanDWSelector) { + case 0: + case 1: + tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2); + break; + case 3: + tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman DW selector"); + } + let tableBitmapSize, tableAggregateInstances; + if (dictionary.bitmapSizeSelector) { + tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + } else { + tableBitmapSize = getStandardTable(1); + } + if (dictionary.aggregationInstancesSelector) { + tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables); + } else { + tableAggregateInstances = getStandardTable(1); + } + return { + tableDeltaHeight, + tableDeltaWidth, + tableBitmapSize, + tableAggregateInstances + }; +} +function readUncompressedBitmap(reader, width, height) { + const bitmap = []; + for (let y = 0; y < height; y++) { + const row = new Uint8Array(width); + bitmap.push(row); + for (let x = 0; x < width; x++) { + row[x] = reader.readBit(); + } + reader.byteAlign(); + } + return bitmap; +} +function decodeMMRBitmap(input, width, height, endOfBlock) { + const params = { + K: -1, + Columns: width, + Rows: height, + BlackIs1: true, + EndOfBlock: endOfBlock + }; + const decoder = new CCITTFaxDecoder(input, params); + const bitmap = []; + let currentByte, + eof = false; + for (let y = 0; y < height; y++) { + const row = new Uint8Array(width); + bitmap.push(row); + let shift = -1; + for (let x = 0; x < width; x++) { + if (shift < 0) { + currentByte = decoder.readNextChar(); + if (currentByte === -1) { + currentByte = 0; + eof = true; + } + shift = 7; + } + row[x] = currentByte >> shift & 1; + shift--; + } + } + if (endOfBlock && !eof) { + const lookForEOFLimit = 5; + for (let i = 0; i < lookForEOFLimit; i++) { + if (decoder.readNextChar() === -1) { + break; + } + } + } + return bitmap; +} +class Jbig2Image { + parseChunks(chunks) { + return parseJbig2Chunks(chunks); + } + parse(data) { + throw new Error("Not implemented: Jbig2Image.parse"); + } +} + +;// ./src/core/jbig2_ccittFax_wasm.js + + + + +class JBig2CCITTFaxWasmImage { + static #buffer = null; + static #handler = null; + static #modulePromise = null; + static #useWasm = true; + static #useWorkerFetch = true; + static #wasmUrl = null; + static setOptions({ + handler, + useWasm, + useWorkerFetch, + wasmUrl + }) { + this.#useWasm = useWasm; + this.#useWorkerFetch = useWorkerFetch; + this.#wasmUrl = wasmUrl; + if (!useWorkerFetch) { + this.#handler = handler; + } + } + static async #instantiateWasm(fallbackCallback, imports, successCallback) { + const filename = "jbig2.wasm"; + try { + if (!this.#buffer) { + if (this.#useWorkerFetch) { + this.#buffer = await fetchBinaryData(`${this.#wasmUrl}${filename}`); + } else { + this.#buffer = await this.#handler.sendWithPromise("FetchBinaryData", { + kind: "wasmUrl", + filename + }); + } + } + const results = await WebAssembly.instantiate(this.#buffer, imports); + return successCallback(results.instance); + } catch (reason) { + warn(`JBig2Image#instantiateWasm: ${reason}`); + return fallbackCallback(null); + } finally { + this.#handler = null; + } + } + static async decode(bytes, width, height, globals, CCITTOptions) { + if (!this.#modulePromise) { + const { + promise, + resolve + } = Promise.withResolvers(); + const promises = [promise]; + if (this.#useWasm) { + promises.push(jbig2({ + warn: warn, + instantiateWasm: this.#instantiateWasm.bind(this, resolve) + })); + } else { + resolve(null); + } + this.#modulePromise = Promise.race(promises); + } + const module = await this.#modulePromise; + if (!module) { + throw new Jbig2Error("JBig2 failed to initialize"); + } + let ptr, globalsPtr; + try { + const size = bytes.length; + ptr = module._malloc(size); + module.writeArrayToMemory(bytes, ptr); + if (CCITTOptions) { + module._ccitt_decode(ptr, size, width, height, CCITTOptions.K, CCITTOptions.EndOfLine ? 1 : 0, CCITTOptions.EncodedByteAlign ? 1 : 0, CCITTOptions.BlackIs1 ? 1 : 0, CCITTOptions.Columns, CCITTOptions.Rows); + } else { + const globalsSize = globals ? globals.length : 0; + if (globalsSize > 0) { + globalsPtr = module._malloc(globalsSize); + module.writeArrayToMemory(globals, globalsPtr); + } + module._jbig2_decode(ptr, size, width, height, globalsPtr, globalsSize); + } + if (!module.imageData) { + throw new Jbig2Error("Unknown error"); + } + const { + imageData + } = module; + module.imageData = null; + return imageData; + } finally { + if (ptr) { + module._free(ptr); + } + if (globalsPtr) { + module._free(globalsPtr); + } + } + } + static cleanup() { + this.#modulePromise = null; + } +} + +;// ./src/core/decode_stream.js + + +const emptyBuffer = new Uint8Array(0); +class DecodeStream extends BaseStream { + constructor(maybeMinBufferLength) { + super(); + this._rawMinBufferLength = maybeMinBufferLength || 0; + this.pos = 0; + this.bufferLength = 0; + this.eof = false; + this.buffer = emptyBuffer; + this.minBufferLength = 512; + if (maybeMinBufferLength) { + while (this.minBufferLength < maybeMinBufferLength) { + this.minBufferLength *= 2; + } + } + } + get isEmpty() { + while (!this.eof && this.bufferLength === 0) { + this.readBlock(); + } + return this.bufferLength === 0; + } + ensureBuffer(requested) { + const buffer = this.buffer; + if (requested <= buffer.byteLength) { + return buffer; + } + let size = this.minBufferLength; + while (size < requested) { + size *= 2; + } + const buffer2 = new Uint8Array(size); + buffer2.set(buffer); + return this.buffer = buffer2; + } + getByte() { + const pos = this.pos; + while (this.bufferLength <= pos) { + if (this.eof) { + return -1; + } + this.readBlock(); + } + return this.buffer[this.pos++]; + } + getBytes(length, decoderOptions = null) { + const pos = this.pos; + let end; + if (length) { + this.ensureBuffer(pos + length); + end = pos + length; + while (!this.eof && this.bufferLength < end) { + this.readBlock(decoderOptions); + } + const bufEnd = this.bufferLength; + if (end > bufEnd) { + end = bufEnd; + } + } else { + while (!this.eof) { + this.readBlock(decoderOptions); + } + end = this.bufferLength; + } + this.pos = end; + return this.buffer.subarray(pos, end); + } + async getImageData(length, decoderOptions) { + if (!this.canAsyncDecodeImageFromBuffer) { + if (this.isAsyncDecoder) { + return this.decodeImage(null, length, decoderOptions); + } + return this.getBytes(length, decoderOptions); + } + const data = await this.stream.asyncGetBytes(); + return this.decodeImage(data, length, decoderOptions); + } + async asyncGetBytesFromDecompressionStream(name) { + this.stream.reset(); + const bytes = this.stream.isAsync ? await this.stream.asyncGetBytes() : this.stream.getBytes(); + try { + const { + readable, + writable + } = new DecompressionStream(name); + const writer = writable.getWriter(); + await writer.ready; + writer.write(bytes).then(async () => { + await writer.ready; + await writer.close(); + }).catch(() => {}); + const chunks = []; + let totalLength = 0; + for await (const chunk of readable) { + chunks.push(chunk); + totalLength += chunk.byteLength; + } + const data = new Uint8Array(totalLength); + let offset = 0; + for (const chunk of chunks) { + data.set(chunk, offset); + offset += chunk.byteLength; + } + return { + decompressed: data, + compressed: bytes + }; + } catch { + return { + decompressed: null, + compressed: bytes + }; + } + } + reset() { + this.pos = 0; + } + makeSubStream(start, length, dict = null) { + if (length === undefined) { + while (!this.eof) { + this.readBlock(); + } + } else { + const end = start + length; + while (this.bufferLength <= end && !this.eof) { + this.readBlock(); + } + } + return new Stream(this.buffer, start, length, dict); + } + getBaseStreams() { + return this.stream ? this.stream.getBaseStreams() : null; + } + clone() { + while (!this.eof) { + this.readBlock(); + } + return new Stream(this.buffer, this.start, this.end - this.start, this.dict.clone()); + } +} +class StreamsSequenceStream extends DecodeStream { + constructor(streams, onError = null) { + streams = streams.filter(s => s instanceof BaseStream && !s.isImageStream); + let maybeLength = 0; + for (const stream of streams) { + maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length; + } + super(maybeLength); + this.streams = streams; + this._onError = onError; + } + readBlock() { + const streams = this.streams; + if (streams.length === 0) { + this.eof = true; + return; + } + const stream = streams.shift(); + let chunk; + try { + chunk = stream.getBytes(); + } catch (reason) { + if (this._onError) { + this._onError(reason, stream.dict?.objId); + return; + } + throw reason; + } + const bufferLength = this.bufferLength; + const newLength = bufferLength + chunk.length; + const buffer = this.ensureBuffer(newLength); + buffer.set(chunk, bufferLength); + this.bufferLength = newLength; + } + getBaseStreams() { + const baseStreamsBuf = []; + for (const stream of this.streams) { + const baseStreams = stream.getBaseStreams(); + if (baseStreams) { + baseStreamsBuf.push(...baseStreams); + } + } + return baseStreamsBuf.length > 0 ? baseStreamsBuf : null; + } +} + +;// ./src/core/colorspace_utils.js + + + + + +class ColorSpaceUtils { + static parse({ + cs, + xref, + resources = null, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache, + asyncIfNotCached = false + }) { + const options = { + xref, + resources, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }; + let csName, csRef, parsedCS; + if (cs instanceof Ref) { + csRef = cs; + const cachedCS = globalColorSpaceCache.getByRef(csRef) || localColorSpaceCache.getByRef(csRef); + if (cachedCS) { + return cachedCS; + } + cs = xref.fetch(cs); + } + if (cs instanceof Name) { + csName = cs.name; + const cachedCS = localColorSpaceCache.getByName(csName); + if (cachedCS) { + return cachedCS; + } + } + try { + parsedCS = this.#parse(cs, options); + } catch (ex) { + if (asyncIfNotCached && !(ex instanceof MissingDataException)) { + return Promise.reject(ex); + } + throw ex; + } + if (csName || csRef) { + localColorSpaceCache.set(csName, csRef, parsedCS); + if (csRef) { + globalColorSpaceCache.set(null, csRef, parsedCS); + } + } + return asyncIfNotCached ? Promise.resolve(parsedCS) : parsedCS; + } + static #subParse(cs, options) { + const { + globalColorSpaceCache + } = options; + let csRef; + if (cs instanceof Ref) { + csRef = cs; + const cachedCS = globalColorSpaceCache.getByRef(csRef); + if (cachedCS) { + return cachedCS; + } + } + const parsedCS = this.#parse(cs, options); + if (csRef) { + globalColorSpaceCache.set(null, csRef, parsedCS); + } + return parsedCS; + } + static #parse(cs, options) { + const { + xref, + resources, + pdfFunctionFactory, + globalColorSpaceCache + } = options; + cs = xref.fetchIfRef(cs); + if (cs instanceof Name) { + switch (cs.name) { + case "G": + case "DeviceGray": + return this.gray; + case "RGB": + case "DeviceRGB": + return this.rgb; + case "DeviceRGBA": + return this.rgba; + case "CMYK": + case "DeviceCMYK": + return this.cmyk; + case "Pattern": + return new PatternCS(null); + default: + if (resources instanceof Dict) { + const colorSpaces = resources.get("ColorSpace"); + if (colorSpaces instanceof Dict) { + const resourcesCS = colorSpaces.get(cs.name); + if (resourcesCS) { + if (resourcesCS instanceof Name) { + return this.#parse(resourcesCS, options); + } + cs = resourcesCS; + break; + } + } + } + warn(`Unrecognized ColorSpace: ${cs.name}`); + return this.gray; + } + } + if (Array.isArray(cs)) { + const mode = xref.fetchIfRef(cs[0]).name; + let params, numComps, baseCS, whitePoint, blackPoint, gamma; + switch (mode) { + case "G": + case "DeviceGray": + return this.gray; + case "RGB": + case "DeviceRGB": + return this.rgb; + case "CMYK": + case "DeviceCMYK": + return this.cmyk; + case "CalGray": + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray("WhitePoint"); + blackPoint = params.getArray("BlackPoint"); + gamma = params.get("Gamma"); + return new CalGrayCS(whitePoint, blackPoint, gamma); + case "CalRGB": + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray("WhitePoint"); + blackPoint = params.getArray("BlackPoint"); + gamma = params.getArray("Gamma"); + const matrix = params.getArray("Matrix"); + return new CalRGBCS(whitePoint, blackPoint, gamma, matrix); + case "ICCBased": + const isRef = cs[1] instanceof Ref; + if (isRef) { + const cachedCS = globalColorSpaceCache.getByRef(cs[1]); + if (cachedCS) { + return cachedCS; + } + } + const stream = xref.fetchIfRef(cs[1]); + const dict = stream.dict; + numComps = dict.get("N"); + if (IccColorSpace.isUsable) { + try { + const iccCS = new IccColorSpace(stream.getBytes(), "ICCBased", numComps); + if (isRef) { + globalColorSpaceCache.set(null, cs[1], iccCS); + } + return iccCS; + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn(`ICCBased color space (${cs[1]}): "${ex}".`); + } + } + const altRaw = dict.getRaw("Alternate"); + if (altRaw) { + const altCS = this.#subParse(altRaw, options); + if (altCS.numComps === numComps) { + return altCS; + } + warn("ICCBased color space: Ignoring incorrect /Alternate entry."); + } + if (numComps === 1) { + return this.gray; + } else if (numComps === 3) { + return this.rgb; + } else if (numComps === 4) { + return this.cmyk; + } + break; + case "Pattern": + baseCS = cs[1] || null; + if (baseCS) { + baseCS = this.#subParse(baseCS, options); + } + return new PatternCS(baseCS); + case "I": + case "Indexed": + baseCS = this.#subParse(cs[1], options); + const hiVal = MathClamp(xref.fetchIfRef(cs[2]), 0, 255); + const lookup = xref.fetchIfRef(cs[3]); + return new IndexedCS(baseCS, hiVal, lookup); + case "Separation": + case "DeviceN": + const name = xref.fetchIfRef(cs[1]); + numComps = Array.isArray(name) ? name.length : 1; + baseCS = this.#subParse(cs[2], options); + const tintFn = pdfFunctionFactory.create(cs[3]); + return new AlternateCS(numComps, baseCS, tintFn); + case "Lab": + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray("WhitePoint"); + blackPoint = params.getArray("BlackPoint"); + const range = params.getArray("Range"); + return new LabCS(whitePoint, blackPoint, range); + default: + warn(`Unimplemented ColorSpace object: ${mode}`); + return this.gray; + } + } + warn(`Unrecognized ColorSpace object: ${cs}`); + return this.gray; + } + static get gray() { + return shadow(this, "gray", new DeviceGrayCS()); + } + static get rgb() { + return shadow(this, "rgb", new DeviceRgbCS()); + } + static get rgba() { + return shadow(this, "rgba", new DeviceRgbaCS()); + } + static get cmyk() { + if (CmykICCBasedCS.isUsable) { + try { + return shadow(this, "cmyk", new CmykICCBasedCS()); + } catch { + warn("CMYK fallback: DeviceCMYK"); + } + } + return shadow(this, "cmyk", new DeviceCmykCS()); + } +} + +;// ./src/core/jpg.js + + + + + +class JpegError extends BaseException { + constructor(msg) { + super(msg, "JpegError"); + } +} +class DNLMarkerError extends BaseException { + constructor(message, scanLines) { + super(message, "DNLMarkerError"); + this.scanLines = scanLines; + } +} +class EOIMarkerError extends BaseException { + constructor(msg) { + super(msg, "EOIMarkerError"); + } +} +const dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]); +const dctCos1 = 4017; +const dctSin1 = 799; +const dctCos3 = 3406; +const dctSin3 = 2276; +const dctCos6 = 1567; +const dctSin6 = 3784; +const dctSqrt2 = 5793; +const dctSqrt1d2 = 2896; +function buildHuffmanTable(codeLengths, values) { + let k = 0, + i, + j, + length = 16; + while (length > 0 && !codeLengths[length - 1]) { + length--; + } + const code = [{ + children: [], + index: 0 + }]; + let p = code[0], + q; + for (i = 0; i < length; i++) { + for (j = 0; j < codeLengths[i]; j++) { + p = code.pop(); + p.children[p.index] = values[k]; + while (p.index > 0) { + p = code.pop(); + } + p.index++; + code.push(p); + while (code.length <= i) { + code.push(q = { + children: [], + index: 0 + }); + p.children[p.index] = q.children; + p = q; + } + k++; + } + if (i + 1 < length) { + code.push(q = { + children: [], + index: 0 + }); + p.children[p.index] = q.children; + p = q; + } + } + return code[0].children; +} +function getBlockBufferOffset(component, row, col) { + return 64 * ((component.blocksPerLine + 1) * row + col); +} +function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) { + const mcusPerLine = frame.mcusPerLine; + const progressive = frame.progressive; + const startOffset = offset; + let bitsData = 0, + bitsCount = 0; + function readBit() { + if (bitsCount > 0) { + bitsCount--; + return bitsData >> bitsCount & 1; + } + bitsData = data[offset++]; + if (bitsData === 0xff) { + const nextByte = data[offset++]; + if (nextByte) { + if (nextByte === 0xdc && parseDNLMarker) { + offset += 2; + const scanLines = readUint16(data, offset); + offset += 2; + if (scanLines > 0 && scanLines !== frame.scanLines) { + throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data", scanLines); + } + } else if (nextByte === 0xd9) { + if (parseDNLMarker) { + const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0); + if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 5) { + throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, " + "possibly caused by incorrect `scanLines` parameter", maybeScanLines); + } + } + throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data"); + } + throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`); + } + } + bitsCount = 7; + return bitsData >>> 7; + } + function decodeHuffman(tree) { + let node = tree; + while (true) { + node = node[readBit()]; + switch (typeof node) { + case "number": + return node; + case "object": + continue; + } + throw new JpegError("invalid huffman sequence"); + } + } + function receive(length) { + let n = 0; + while (length > 0) { + n = n << 1 | readBit(); + length--; + } + return n; + } + function receiveAndExtend(length) { + if (length === 1) { + return readBit() === 1 ? 1 : -1; + } + const n = receive(length); + if (n >= 1 << length - 1) { + return n; + } + return n + (-1 << length) + 1; + } + function decodeBaseline(component, blockOffset) { + const t = decodeHuffman(component.huffmanTableDC); + const diff = t === 0 ? 0 : receiveAndExtend(t); + component.blockData[blockOffset] = component.pred += diff; + let k = 1; + while (k < 64) { + const rs = decodeHuffman(component.huffmanTableAC); + const s = rs & 15, + r = rs >> 4; + if (s === 0) { + if (r < 15) { + break; + } + k += 16; + continue; + } + k += r; + const z = dctZigZag[k]; + component.blockData[blockOffset + z] = receiveAndExtend(s); + k++; + } + } + function decodeDCFirst(component, blockOffset) { + const t = decodeHuffman(component.huffmanTableDC); + const diff = t === 0 ? 0 : receiveAndExtend(t) << successive; + component.blockData[blockOffset] = component.pred += diff; + } + function decodeDCSuccessive(component, blockOffset) { + component.blockData[blockOffset] |= readBit() << successive; + } + let eobrun = 0; + function decodeACFirst(component, blockOffset) { + if (eobrun > 0) { + eobrun--; + return; + } + let k = spectralStart; + const e = spectralEnd; + while (k <= e) { + const rs = decodeHuffman(component.huffmanTableAC); + const s = rs & 15, + r = rs >> 4; + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r) - 1; + break; + } + k += 16; + continue; + } + k += r; + const z = dctZigZag[k]; + component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive); + k++; + } + } + let successiveACState = 0, + successiveACNextValue; + function decodeACSuccessive(component, blockOffset) { + let k = spectralStart; + const e = spectralEnd; + let r = 0; + let s; + let rs; + while (k <= e) { + const offsetZ = blockOffset + dctZigZag[k]; + const sign = component.blockData[offsetZ] < 0 ? -1 : 1; + switch (successiveACState) { + case 0: + rs = decodeHuffman(component.huffmanTableAC); + s = rs & 15; + r = rs >> 4; + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r); + successiveACState = 4; + } else { + r = 16; + successiveACState = 1; + } + } else { + if (s !== 1) { + throw new JpegError("invalid ACn encoding"); + } + successiveACNextValue = receiveAndExtend(s); + successiveACState = r ? 2 : 3; + } + continue; + case 1: + case 2: + if (component.blockData[offsetZ]) { + component.blockData[offsetZ] += sign * (readBit() << successive); + } else { + r--; + if (r === 0) { + successiveACState = successiveACState === 2 ? 3 : 0; + } + } + break; + case 3: + if (component.blockData[offsetZ]) { + component.blockData[offsetZ] += sign * (readBit() << successive); + } else { + component.blockData[offsetZ] = successiveACNextValue << successive; + successiveACState = 0; + } + break; + case 4: + if (component.blockData[offsetZ]) { + component.blockData[offsetZ] += sign * (readBit() << successive); + } + break; + } + k++; + } + if (successiveACState === 4) { + eobrun--; + if (eobrun === 0) { + successiveACState = 0; + } + } + } + let blockRow = 0; + function decodeMcu(component, decode, mcu, row, col) { + const mcuRow = mcu / mcusPerLine | 0; + const mcuCol = mcu % mcusPerLine; + blockRow = mcuRow * component.v + row; + const blockCol = mcuCol * component.h + col; + const blockOffset = getBlockBufferOffset(component, blockRow, blockCol); + decode(component, blockOffset); + } + function decodeBlock(component, decode, mcu) { + blockRow = mcu / component.blocksPerLine | 0; + const blockCol = mcu % component.blocksPerLine; + const blockOffset = getBlockBufferOffset(component, blockRow, blockCol); + decode(component, blockOffset); + } + const componentsLength = components.length; + let component, i, j, k, n; + let decodeFn; + if (progressive) { + if (spectralStart === 0) { + decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; + } else { + decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; + } + } else { + decodeFn = decodeBaseline; + } + let mcu = 0, + fileMarker; + const mcuExpected = componentsLength === 1 ? components[0].blocksPerLine * components[0].blocksPerColumn : mcusPerLine * frame.mcusPerColumn; + let h, v; + while (mcu <= mcuExpected) { + const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected; + if (mcuToRead > 0) { + for (i = 0; i < componentsLength; i++) { + components[i].pred = 0; + } + eobrun = 0; + if (componentsLength === 1) { + component = components[0]; + for (n = 0; n < mcuToRead; n++) { + decodeBlock(component, decodeFn, mcu); + mcu++; + } + } else { + for (n = 0; n < mcuToRead; n++) { + for (i = 0; i < componentsLength; i++) { + component = components[i]; + h = component.h; + v = component.v; + for (j = 0; j < v; j++) { + for (k = 0; k < h; k++) { + decodeMcu(component, decodeFn, mcu, j, k); + } + } + } + mcu++; + } + } + } + bitsCount = 0; + fileMarker = findNextFileMarker(data, offset); + if (!fileMarker) { + break; + } + if (fileMarker.invalid) { + const partialMsg = mcuToRead > 0 ? "unexpected" : "excessive"; + warn(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`); + offset = fileMarker.offset; + } + if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) { + offset += 2; + } else { + break; + } + } + return offset - startOffset; +} +function quantizeAndInverse(component, blockBufferOffset, p) { + const qt = component.quantizationTable, + blockData = component.blockData; + let v0, v1, v2, v3, v4, v5, v6, v7; + let p0, p1, p2, p3, p4, p5, p6, p7; + let t; + if (!qt) { + throw new JpegError("missing required Quantization Table."); + } + for (let row = 0; row < 64; row += 8) { + p0 = blockData[blockBufferOffset + row]; + p1 = blockData[blockBufferOffset + row + 1]; + p2 = blockData[blockBufferOffset + row + 2]; + p3 = blockData[blockBufferOffset + row + 3]; + p4 = blockData[blockBufferOffset + row + 4]; + p5 = blockData[blockBufferOffset + row + 5]; + p6 = blockData[blockBufferOffset + row + 6]; + p7 = blockData[blockBufferOffset + row + 7]; + p0 *= qt[row]; + if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { + t = dctSqrt2 * p0 + 512 >> 10; + p[row] = t; + p[row + 1] = t; + p[row + 2] = t; + p[row + 3] = t; + p[row + 4] = t; + p[row + 5] = t; + p[row + 6] = t; + p[row + 7] = t; + continue; + } + p1 *= qt[row + 1]; + p2 *= qt[row + 2]; + p3 *= qt[row + 3]; + p4 *= qt[row + 4]; + p5 *= qt[row + 5]; + p6 *= qt[row + 6]; + p7 *= qt[row + 7]; + v0 = dctSqrt2 * p0 + 128 >> 8; + v1 = dctSqrt2 * p4 + 128 >> 8; + v2 = p2; + v3 = p6; + v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8; + v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8; + v5 = p3 << 4; + v6 = p5 << 4; + v0 = v0 + v1 + 1 >> 1; + v1 = v0 - v1; + t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8; + v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8; + v3 = t; + v4 = v4 + v6 + 1 >> 1; + v6 = v4 - v6; + v7 = v7 + v5 + 1 >> 1; + v5 = v7 - v5; + v0 = v0 + v3 + 1 >> 1; + v3 = v0 - v3; + v1 = v1 + v2 + 1 >> 1; + v2 = v1 - v2; + t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; + v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; + v7 = t; + t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; + v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; + v6 = t; + p[row] = v0 + v7; + p[row + 7] = v0 - v7; + p[row + 1] = v1 + v6; + p[row + 6] = v1 - v6; + p[row + 2] = v2 + v5; + p[row + 5] = v2 - v5; + p[row + 3] = v3 + v4; + p[row + 4] = v3 - v4; + } + for (let col = 0; col < 8; ++col) { + p0 = p[col]; + p1 = p[col + 8]; + p2 = p[col + 16]; + p3 = p[col + 24]; + p4 = p[col + 32]; + p5 = p[col + 40]; + p6 = p[col + 48]; + p7 = p[col + 56]; + if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { + t = dctSqrt2 * p0 + 8192 >> 14; + if (t < -2040) { + t = 0; + } else if (t >= 2024) { + t = 255; + } else { + t = t + 2056 >> 4; + } + blockData[blockBufferOffset + col] = t; + blockData[blockBufferOffset + col + 8] = t; + blockData[blockBufferOffset + col + 16] = t; + blockData[blockBufferOffset + col + 24] = t; + blockData[blockBufferOffset + col + 32] = t; + blockData[blockBufferOffset + col + 40] = t; + blockData[blockBufferOffset + col + 48] = t; + blockData[blockBufferOffset + col + 56] = t; + continue; + } + v0 = dctSqrt2 * p0 + 2048 >> 12; + v1 = dctSqrt2 * p4 + 2048 >> 12; + v2 = p2; + v3 = p6; + v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12; + v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12; + v5 = p3; + v6 = p5; + v0 = (v0 + v1 + 1 >> 1) + 4112; + v1 = v0 - v1; + t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12; + v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12; + v3 = t; + v4 = v4 + v6 + 1 >> 1; + v6 = v4 - v6; + v7 = v7 + v5 + 1 >> 1; + v5 = v7 - v5; + v0 = v0 + v3 + 1 >> 1; + v3 = v0 - v3; + v1 = v1 + v2 + 1 >> 1; + v2 = v1 - v2; + t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; + v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; + v7 = t; + t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; + v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; + v6 = t; + p0 = v0 + v7; + p7 = v0 - v7; + p1 = v1 + v6; + p6 = v1 - v6; + p2 = v2 + v5; + p5 = v2 - v5; + p3 = v3 + v4; + p4 = v3 - v4; + if (p0 < 16) { + p0 = 0; + } else if (p0 >= 4080) { + p0 = 255; + } else { + p0 >>= 4; + } + if (p1 < 16) { + p1 = 0; + } else if (p1 >= 4080) { + p1 = 255; + } else { + p1 >>= 4; + } + if (p2 < 16) { + p2 = 0; + } else if (p2 >= 4080) { + p2 = 255; + } else { + p2 >>= 4; + } + if (p3 < 16) { + p3 = 0; + } else if (p3 >= 4080) { + p3 = 255; + } else { + p3 >>= 4; + } + if (p4 < 16) { + p4 = 0; + } else if (p4 >= 4080) { + p4 = 255; + } else { + p4 >>= 4; + } + if (p5 < 16) { + p5 = 0; + } else if (p5 >= 4080) { + p5 = 255; + } else { + p5 >>= 4; + } + if (p6 < 16) { + p6 = 0; + } else if (p6 >= 4080) { + p6 = 255; + } else { + p6 >>= 4; + } + if (p7 < 16) { + p7 = 0; + } else if (p7 >= 4080) { + p7 = 255; + } else { + p7 >>= 4; + } + blockData[blockBufferOffset + col] = p0; + blockData[blockBufferOffset + col + 8] = p1; + blockData[blockBufferOffset + col + 16] = p2; + blockData[blockBufferOffset + col + 24] = p3; + blockData[blockBufferOffset + col + 32] = p4; + blockData[blockBufferOffset + col + 40] = p5; + blockData[blockBufferOffset + col + 48] = p6; + blockData[blockBufferOffset + col + 56] = p7; + } +} +function buildComponentData(frame, component) { + const blocksPerLine = component.blocksPerLine; + const blocksPerColumn = component.blocksPerColumn; + const computationBuffer = new Int16Array(64); + for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) { + for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) { + const offset = getBlockBufferOffset(component, blockRow, blockCol); + quantizeAndInverse(component, offset, computationBuffer); + } + } + return component.blockData; +} +function findNextFileMarker(data, currentPos, startPos = currentPos) { + const maxPos = data.length - 1; + let newPos = startPos < currentPos ? startPos : currentPos; + if (currentPos >= maxPos) { + return null; + } + const currentMarker = readUint16(data, currentPos); + if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) { + return { + invalid: null, + marker: currentMarker, + offset: currentPos + }; + } + let newMarker = readUint16(data, newPos); + while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) { + if (++newPos >= maxPos) { + return null; + } + newMarker = readUint16(data, newPos); + } + return { + invalid: currentMarker.toString(16), + marker: newMarker, + offset: newPos + }; +} +function prepareComponents(frame) { + const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH); + const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV); + for (const component of frame.components) { + const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH); + const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV); + const blocksPerLineForMcu = mcusPerLine * component.h; + const blocksPerColumnForMcu = mcusPerColumn * component.v; + const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1); + component.blockData = new Int16Array(blocksBufferSize); + component.blocksPerLine = blocksPerLine; + component.blocksPerColumn = blocksPerColumn; + } + frame.mcusPerLine = mcusPerLine; + frame.mcusPerColumn = mcusPerColumn; +} +function readDataBlock(data, offset) { + const length = readUint16(data, offset); + offset += 2; + let endOffset = offset + length - 2; + const fileMarker = findNextFileMarker(data, endOffset, offset); + if (fileMarker?.invalid) { + warn("readDataBlock - incorrect length, current marker is: " + fileMarker.invalid); + endOffset = fileMarker.offset; + } + const array = data.subarray(offset, endOffset); + return { + appData: array, + oldOffset: offset, + newOffset: offset + array.length + }; +} +function skipData(data, offset) { + const length = readUint16(data, offset); + offset += 2; + const endOffset = offset + length - 2; + const fileMarker = findNextFileMarker(data, endOffset, offset); + if (fileMarker?.invalid) { + return fileMarker.offset; + } + return endOffset; +} +class JpegImage { + constructor({ + decodeTransform = null, + colorTransform = -1 + } = {}) { + this._decodeTransform = decodeTransform; + this._colorTransform = colorTransform; + } + static canUseImageDecoder(data, colorTransform = -1) { + let exifOffsets = null; + let offset = 0; + let numComponents = null; + let fileMarker = readUint16(data, offset); + offset += 2; + if (fileMarker !== 0xffd8) { + throw new JpegError("SOI not found"); + } + fileMarker = readUint16(data, offset); + offset += 2; + markerLoop: while (fileMarker !== 0xffd9) { + switch (fileMarker) { + case 0xffe1: + const { + appData, + oldOffset, + newOffset + } = readDataBlock(data, offset); + offset = newOffset; + if (appData[0] === 0x45 && appData[1] === 0x78 && appData[2] === 0x69 && appData[3] === 0x66 && appData[4] === 0 && appData[5] === 0) { + if (exifOffsets) { + throw new JpegError("Duplicate EXIF-blocks found."); + } + exifOffsets = { + exifStart: oldOffset + 6, + exifEnd: newOffset + }; + } + fileMarker = readUint16(data, offset); + offset += 2; + continue; + case 0xffc0: + case 0xffc1: + case 0xffc2: + numComponents = data[offset + (2 + 1 + 2 + 2)]; + break markerLoop; + case 0xffff: + if (data[offset] !== 0xff) { + offset--; + } + break; + } + offset = skipData(data, offset); + fileMarker = readUint16(data, offset); + offset += 2; + } + if (numComponents === 4) { + return null; + } + if (numComponents === 3 && colorTransform === 0) { + return null; + } + return exifOffsets || {}; + } + parse(data, { + dnlScanLines = null + } = {}) { + let offset = 0; + let jfif = null; + let adobe = null; + let frame, resetInterval; + let numSOSMarkers = 0; + const quantizationTables = []; + const huffmanTablesAC = [], + huffmanTablesDC = []; + let fileMarker = readUint16(data, offset); + offset += 2; + if (fileMarker !== 0xffd8) { + throw new JpegError("SOI not found"); + } + fileMarker = readUint16(data, offset); + offset += 2; + markerLoop: while (fileMarker !== 0xffd9) { + let i, j, l; + switch (fileMarker) { + case 0xffe0: + case 0xffe1: + case 0xffe2: + case 0xffe3: + case 0xffe4: + case 0xffe5: + case 0xffe6: + case 0xffe7: + case 0xffe8: + case 0xffe9: + case 0xffea: + case 0xffeb: + case 0xffec: + case 0xffed: + case 0xffee: + case 0xffef: + case 0xfffe: + const { + appData, + newOffset + } = readDataBlock(data, offset); + offset = newOffset; + if (fileMarker === 0xffe0) { + if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) { + jfif = { + version: { + major: appData[5], + minor: appData[6] + }, + densityUnits: appData[7], + xDensity: appData[8] << 8 | appData[9], + yDensity: appData[10] << 8 | appData[11], + thumbWidth: appData[12], + thumbHeight: appData[13], + thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13]) + }; + } + } + if (fileMarker === 0xffee) { + if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) { + adobe = { + version: appData[5] << 8 | appData[6], + flags0: appData[7] << 8 | appData[8], + flags1: appData[9] << 8 | appData[10], + transformCode: appData[11] + }; + } + } + break; + case 0xffdb: + const quantizationTablesLength = readUint16(data, offset); + offset += 2; + const quantizationTablesEnd = quantizationTablesLength + offset - 2; + let z; + while (offset < quantizationTablesEnd) { + const quantizationTableSpec = data[offset++]; + const tableData = new Uint16Array(64); + if (quantizationTableSpec >> 4 === 0) { + for (j = 0; j < 64; j++) { + z = dctZigZag[j]; + tableData[z] = data[offset++]; + } + } else if (quantizationTableSpec >> 4 === 1) { + for (j = 0; j < 64; j++) { + z = dctZigZag[j]; + tableData[z] = readUint16(data, offset); + offset += 2; + } + } else { + throw new JpegError("DQT - invalid table spec"); + } + quantizationTables[quantizationTableSpec & 15] = tableData; + } + break; + case 0xffc0: + case 0xffc1: + case 0xffc2: + if (frame) { + throw new JpegError("Only single frame JPEGs supported"); + } + offset += 2; + frame = {}; + frame.extended = fileMarker === 0xffc1; + frame.progressive = fileMarker === 0xffc2; + frame.precision = data[offset++]; + const sofScanLines = readUint16(data, offset); + offset += 2; + frame.scanLines = dnlScanLines || sofScanLines; + frame.samplesPerLine = readUint16(data, offset); + offset += 2; + frame.components = []; + frame.componentIds = {}; + const componentsCount = data[offset++]; + let maxH = 0, + maxV = 0; + for (i = 0; i < componentsCount; i++) { + const componentId = data[offset]; + const h = data[offset + 1] >> 4; + const v = data[offset + 1] & 15; + if (maxH < h) { + maxH = h; + } + if (maxV < v) { + maxV = v; + } + const qId = data[offset + 2]; + l = frame.components.push({ + h, + v, + quantizationId: qId, + quantizationTable: null + }); + frame.componentIds[componentId] = l - 1; + offset += 3; + } + frame.maxH = maxH; + frame.maxV = maxV; + prepareComponents(frame); + break; + case 0xffc4: + const huffmanLength = readUint16(data, offset); + offset += 2; + for (i = 2; i < huffmanLength;) { + const huffmanTableSpec = data[offset++]; + const codeLengths = new Uint8Array(16); + let codeLengthSum = 0; + for (j = 0; j < 16; j++, offset++) { + codeLengthSum += codeLengths[j] = data[offset]; + } + const huffmanValues = new Uint8Array(codeLengthSum); + for (j = 0; j < codeLengthSum; j++, offset++) { + huffmanValues[j] = data[offset]; + } + i += 17 + codeLengthSum; + (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues); + } + break; + case 0xffdd: + offset += 2; + resetInterval = readUint16(data, offset); + offset += 2; + break; + case 0xffda: + const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines; + offset += 2; + const selectorsCount = data[offset++], + components = []; + for (i = 0; i < selectorsCount; i++) { + const index = data[offset++]; + const componentIndex = frame.componentIds[index]; + const component = frame.components[componentIndex]; + component.index = index; + const tableSpec = data[offset++]; + component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; + component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; + components.push(component); + } + const spectralStart = data[offset++], + spectralEnd = data[offset++], + successiveApproximation = data[offset++]; + try { + const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker); + offset += processed; + } catch (ex) { + if (ex instanceof DNLMarkerError) { + warn(`${ex.message} -- attempting to re-parse the JPEG image.`); + return this.parse(data, { + dnlScanLines: ex.scanLines + }); + } else if (ex instanceof EOIMarkerError) { + warn(`${ex.message} -- ignoring the rest of the image data.`); + break markerLoop; + } + throw ex; + } + break; + case 0xffdc: + offset += 4; + break; + case 0xffff: + if (data[offset] !== 0xff) { + offset--; + } + break; + default: + const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3); + if (nextFileMarker?.invalid) { + warn("JpegImage.parse - unexpected data, current marker is: " + nextFileMarker.invalid); + offset = nextFileMarker.offset; + break; + } + if (!nextFileMarker || offset >= data.length - 1) { + warn("JpegImage.parse - reached the end of the image data " + "without finding an EOI marker (0xFFD9)."); + break markerLoop; + } + throw new JpegError("JpegImage.parse - unknown marker: " + fileMarker.toString(16)); + } + fileMarker = readUint16(data, offset); + offset += 2; + } + if (!frame) { + throw new JpegError("JpegImage.parse - no frame data found."); + } + this.width = frame.samplesPerLine; + this.height = frame.scanLines; + this.jfif = jfif; + this.adobe = adobe; + this.components = []; + for (const component of frame.components) { + const quantizationTable = quantizationTables[component.quantizationId]; + if (quantizationTable) { + component.quantizationTable = quantizationTable; + } + this.components.push({ + index: component.index, + output: buildComponentData(frame, component), + scaleX: component.h / frame.maxH, + scaleY: component.v / frame.maxV, + blocksPerLine: component.blocksPerLine, + blocksPerColumn: component.blocksPerColumn + }); + } + this.numComponents = this.components.length; + return undefined; + } + _getLinearizedBlockData(width, height, isSourcePDF = false) { + const scaleX = this.width / width, + scaleY = this.height / height; + let component, componentScaleX, componentScaleY, blocksPerScanline; + let x, y, i, j, k; + let index; + let offset = 0; + let output; + const numComponents = this.components.length; + const dataLength = width * height * numComponents; + const data = new Uint8ClampedArray(dataLength); + const xScaleBlockOffset = new Uint32Array(width); + const mask3LSB = 0xfffffff8; + let lastComponentScaleX; + for (i = 0; i < numComponents; i++) { + component = this.components[i]; + componentScaleX = component.scaleX * scaleX; + componentScaleY = component.scaleY * scaleY; + offset = i; + output = component.output; + blocksPerScanline = component.blocksPerLine + 1 << 3; + if (componentScaleX !== lastComponentScaleX) { + for (x = 0; x < width; x++) { + j = 0 | x * componentScaleX; + xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7; + } + lastComponentScaleX = componentScaleX; + } + for (y = 0; y < height; y++) { + j = 0 | y * componentScaleY; + index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3; + for (x = 0; x < width; x++) { + data[offset] = output[index + xScaleBlockOffset[x]]; + offset += numComponents; + } + } + } + let transform = this._decodeTransform; + if (!isSourcePDF && numComponents === 4 && !transform) { + transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]); + } + if (transform) { + for (i = 0; i < dataLength;) { + for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) { + data[i] = (data[i] * transform[k] >> 8) + transform[k + 1]; + } + } + } + return data; + } + get _isColorConversionNeeded() { + if (this.adobe) { + return !!this.adobe.transformCode; + } + if (this.numComponents === 3) { + if (this._colorTransform === 0) { + return false; + } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) { + return false; + } + return true; + } + if (this._colorTransform === 1) { + return true; + } + return false; + } + _convertYccToRgb(data) { + let Y, Cb, Cr; + for (let i = 0, length = data.length; i < length; i += 3) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + data[i] = Y - 179.456 + 1.402 * Cr; + data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr; + data[i + 2] = Y - 226.816 + 1.772 * Cb; + } + return data; + } + _convertYccToRgba(data, out) { + for (let i = 0, j = 0, length = data.length; i < length; i += 3, j += 4) { + const Y = data[i]; + const Cb = data[i + 1]; + const Cr = data[i + 2]; + out[j] = Y - 179.456 + 1.402 * Cr; + out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr; + out[j + 2] = Y - 226.816 + 1.772 * Cb; + out[j + 3] = 255; + } + return out; + } + _convertYcckToRgb(data) { + this._convertYcckToCmyk(data); + return this._convertCmykToRgb(data); + } + _convertYcckToRgba(data) { + this._convertYcckToCmyk(data); + return this._convertCmykToRgba(data); + } + _convertYcckToCmyk(data) { + let Y, Cb, Cr; + for (let i = 0, length = data.length; i < length; i += 4) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + data[i] = 434.456 - Y - 1.402 * Cr; + data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr; + data[i + 2] = 481.816 - Y - 1.772 * Cb; + } + return data; + } + _convertCmykToRgb(data) { + const count = data.length / 4; + ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, count, data, 0, 8, 0); + return data.subarray(0, count * 3); + } + _convertCmykToRgba(data) { + ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, data.length / 4, data, 0, 8, 1); + if (ColorSpaceUtils.cmyk instanceof DeviceCmykCS) { + for (let i = 3, ii = data.length; i < ii; i += 4) { + data[i] = 255; + } + } + return data; + } + getData({ + width, + height, + forceRGBA = false, + forceRGB = false, + isSourcePDF = false + }) { + if (this.numComponents > 4) { + throw new JpegError("Unsupported color mode"); + } + const data = this._getLinearizedBlockData(width, height, isSourcePDF); + if (this.numComponents === 1 && (forceRGBA || forceRGB)) { + const len = data.length * (forceRGBA ? 4 : 3); + const rgbaData = new Uint8ClampedArray(len); + let offset = 0; + if (forceRGBA) { + grayToRGBA(data, new Uint32Array(rgbaData.buffer)); + } else { + for (const grayColor of data) { + rgbaData[offset++] = grayColor; + rgbaData[offset++] = grayColor; + rgbaData[offset++] = grayColor; + } + } + return rgbaData; + } else if (this.numComponents === 3 && this._isColorConversionNeeded) { + if (forceRGBA) { + const rgbaData = new Uint8ClampedArray(data.length / 3 * 4); + return this._convertYccToRgba(data, rgbaData); + } + return this._convertYccToRgb(data); + } else if (this.numComponents === 4) { + if (this._isColorConversionNeeded) { + if (forceRGBA) { + return this._convertYcckToRgba(data); + } + if (forceRGB) { + return this._convertYcckToRgb(data); + } + return this._convertYcckToCmyk(data); + } else if (forceRGBA) { + return this._convertCmykToRgba(data); + } else if (forceRGB) { + return this._convertCmykToRgb(data); + } + } + return data; + } +} + +;// ./src/core/jpeg_stream.js + + + + +class JpegStream extends DecodeStream { + static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported; + constructor(stream, maybeLength, params) { + super(maybeLength); + this.stream = stream; + this.dict = stream.dict; + this.maybeLength = maybeLength; + this.params = params; + } + static get canUseImageDecoder() { + return shadow(this, "canUseImageDecoder", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported("image/jpeg") : Promise.resolve(false)); + } + static setOptions({ + isImageDecoderSupported = false + }) { + this.#isImageDecoderSupported = isImageDecoderSupported; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(requested) {} + readBlock() { + this.decodeImage(); + } + get jpegOptions() { + const jpegOptions = { + decodeTransform: undefined, + colorTransform: undefined + }; + const decodeArr = this.dict.getArray("D", "Decode"); + if ((this.forceRGBA || this.forceRGB) && Array.isArray(decodeArr)) { + const bitsPerComponent = this.dict.get("BPC", "BitsPerComponent") || 8; + const decodeArrLength = decodeArr.length; + const transform = new Int32Array(decodeArrLength); + let transformNeeded = false; + const maxValue = (1 << bitsPerComponent) - 1; + for (let i = 0; i < decodeArrLength; i += 2) { + transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0; + transform[i + 1] = decodeArr[i] * maxValue | 0; + if (transform[i] !== 256 || transform[i + 1] !== 0) { + transformNeeded = true; + } + } + if (transformNeeded) { + jpegOptions.decodeTransform = transform; + } + } + if (this.params instanceof Dict) { + const colorTransform = this.params.get("ColorTransform"); + if (Number.isInteger(colorTransform)) { + jpegOptions.colorTransform = colorTransform; + } + } + return shadow(this, "jpegOptions", jpegOptions); + } + #skipUselessBytes(data) { + for (let i = 0, ii = data.length - 1; i < ii; i++) { + if (data[i] === 0xff && data[i + 1] === 0xd8) { + if (i > 0) { + data = data.subarray(i); + } + break; + } + } + return data; + } + decodeImage(bytes) { + if (this.eof) { + return this.buffer; + } + bytes = this.#skipUselessBytes(bytes || this.bytes); + const jpegImage = new JpegImage(this.jpegOptions); + jpegImage.parse(bytes); + const data = jpegImage.getData({ + width: this.drawWidth, + height: this.drawHeight, + forceRGBA: this.forceRGBA, + forceRGB: this.forceRGB, + isSourcePDF: true + }); + this.buffer = data; + this.bufferLength = data.length; + this.eof = true; + return this.buffer; + } + get canAsyncDecodeImageFromBuffer() { + return this.stream.isAsync; + } + async getTransferableImage() { + if (!(await JpegStream.canUseImageDecoder)) { + return null; + } + const jpegOptions = this.jpegOptions; + if (jpegOptions.decodeTransform) { + return null; + } + let decoder; + try { + const bytes = this.canAsyncDecodeImageFromBuffer && (await this.stream.asyncGetBytes()) || this.bytes; + if (!bytes) { + return null; + } + let data = this.#skipUselessBytes(bytes); + const useImageDecoder = JpegImage.canUseImageDecoder(data, jpegOptions.colorTransform); + if (!useImageDecoder) { + return null; + } + if (useImageDecoder.exifStart) { + data = data.slice(); + data.fill(0x00, useImageDecoder.exifStart, useImageDecoder.exifEnd); + } + decoder = new ImageDecoder({ + data, + type: "image/jpeg", + preferAnimation: false + }); + return (await decoder.decode()).image; + } catch (reason) { + warn(`getTransferableImage - failed: "${reason}".`); + return null; + } finally { + decoder?.close(); + } + } + get isImageStream() { + return true; + } +} + +;// ./external/openjpeg/openjpeg.js +async function OpenJPEG(moduleArg = {}) { + var moduleRtn; + var Module = moduleArg; + var ENVIRONMENT_IS_WEB = true; + var ENVIRONMENT_IS_WORKER = false; + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = (status, toThrow) => { + throw toThrow; + }; + var _scriptName = import.meta.url; + var scriptDirectory = ""; + var readAsync, readBinary; + if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + try { + scriptDirectory = new URL(".", _scriptName).href; + } catch {} + readAsync = async url => { + var response = await fetch(url, { + credentials: "same-origin" + }); + if (response.ok) { + return response.arrayBuffer(); + } + throw new Error(response.status + " : " + response.url); + }; + } else {} + var out = console.log.bind(console); + var err = console.error.bind(console); + var wasmBinary; + var ABORT = false; + var EXITSTATUS; + var readyPromiseResolve, readyPromiseReject; + var wasmMemory; + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + var HEAP64, HEAPU64; + var runtimeInitialized = false; + function updateMemoryViews() { + var b = wasmMemory.buffer; + HEAP8 = new Int8Array(b); + HEAP16 = new Int16Array(b); + HEAPU8 = new Uint8Array(b); + HEAPU16 = new Uint16Array(b); + HEAP32 = new Int32Array(b); + HEAPU32 = new Uint32Array(b); + HEAPF32 = new Float32Array(b); + HEAPF64 = new Float64Array(b); + HEAP64 = new BigInt64Array(b); + HEAPU64 = new BigUint64Array(b); + } + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(onPreRuns); + } + function initRuntime() { + runtimeInitialized = true; + wasmExports["s"](); + } + function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(onPostRuns); + } + function abort(what) { + Module["onAbort"]?.(what); + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + what += ". Build with -sASSERTIONS for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject?.(e); + throw e; + } + var wasmBinaryFile; + function getWasmImports() { + return { + a: wasmImports + }; + } + async function createWasm() { + function receiveInstance(instance, module) { + wasmExports = instance.exports; + wasmMemory = wasmExports["r"]; + updateMemoryViews(); + assignWasmExports(wasmExports); + return wasmExports; + } + var info = getWasmImports(); + return new Promise((resolve, reject) => { + Module["instantiateWasm"](info, (mod, inst) => { + resolve(receiveInstance(mod, inst)); + }); + }); + } + class ExitStatus { + name = "ExitStatus"; + constructor(status) { + this.message = `Program terminated with exit(${status})`; + this.status = status; + } + } + var callRuntimeCallbacks = callbacks => { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } + }; + var onPostRuns = []; + var addOnPostRun = cb => onPostRuns.push(cb); + var onPreRuns = []; + var addOnPreRun = cb => onPreRuns.push(cb); + var noExitRuntime = true; + var __abort_js = () => abort(""); + var runtimeKeepaliveCounter = 0; + var __emscripten_runtime_keepalive_clear = () => { + noExitRuntime = false; + runtimeKeepaliveCounter = 0; + }; + var timers = {}; + var handleException = e => { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + quit_(1, e); + }; + var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0; + var _proc_exit = code => { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + Module["onExit"]?.(code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); + }; + var exitJS = (status, implicit) => { + EXITSTATUS = status; + _proc_exit(status); + }; + var _exit = exitJS; + var maybeExit = () => { + if (!keepRuntimeAlive()) { + try { + _exit(EXITSTATUS); + } catch (e) { + handleException(e); + } + } + }; + var callUserCallback = func => { + if (ABORT) { + return; + } + try { + func(); + maybeExit(); + } catch (e) { + handleException(e); + } + }; + var _emscripten_get_now = () => performance.now(); + var __setitimer_js = (which, timeout_ms) => { + if (timers[which]) { + clearTimeout(timers[which].id); + delete timers[which]; + } + if (!timeout_ms) return 0; + var id = setTimeout(() => { + delete timers[which]; + callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now())); + }, timeout_ms); + timers[which] = { + id, + timeout_ms + }; + return 0; + }; + function _copy_pixels_1(compG_ptr, nb_pixels) { + compG_ptr >>= 2; + const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels); + const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels); + imageData.set(compG); + } + function _copy_pixels_3(compR_ptr, compG_ptr, compB_ptr, nb_pixels) { + compR_ptr >>= 2; + compG_ptr >>= 2; + compB_ptr >>= 2; + const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 3); + const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels); + const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels); + const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels); + for (let i = 0; i < nb_pixels; i++) { + imageData[3 * i] = compR[i]; + imageData[3 * i + 1] = compG[i]; + imageData[3 * i + 2] = compB[i]; + } + } + function _copy_pixels_4(compR_ptr, compG_ptr, compB_ptr, compA_ptr, nb_pixels) { + compR_ptr >>= 2; + compG_ptr >>= 2; + compB_ptr >>= 2; + compA_ptr >>= 2; + const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4); + const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels); + const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels); + const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels); + const compA = HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels); + for (let i = 0; i < nb_pixels; i++) { + imageData[4 * i] = compR[i]; + imageData[4 * i + 1] = compG[i]; + imageData[4 * i + 2] = compB[i]; + imageData[4 * i + 3] = compA[i]; + } + } + var getHeapMax = () => 2147483648; + var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment; + var growMemory = size => { + var oldHeapSize = wasmMemory.buffer.byteLength; + var pages = (size - oldHeapSize + 65535) / 65536 | 0; + try { + wasmMemory.grow(pages); + updateMemoryViews(); + return 1; + } catch (e) {} + }; + var _emscripten_resize_heap = requestedSize => { + var oldSize = HEAPU8.length; + requestedSize >>>= 0; + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = growMemory(newSize); + if (replacement) { + return true; + } + } + return false; + }; + var ENV = {}; + var getExecutableName = () => thisProgram || "./this.program"; + var getEnvStrings = () => { + if (!getEnvStrings.strings) { + var lang = (typeof navigator == "object" && navigator.language || "C").replace("-", "_") + ".UTF-8"; + var env = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: lang, + _: getExecutableName() + }; + for (var x in ENV) { + if (ENV[x] === undefined) delete env[x];else env[x] = ENV[x]; + } + var strings = []; + for (var x in env) { + strings.push(`${x}=${env[x]}`); + } + getEnvStrings.strings = strings; + } + return getEnvStrings.strings; + }; + var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.codePointAt(i); + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + i++; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + }; + var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + var _environ_get = (__environ, environ_buf) => { + var bufSize = 0; + var envp = 0; + for (var string of getEnvStrings()) { + var ptr = environ_buf + bufSize; + HEAPU32[__environ + envp >> 2] = ptr; + bufSize += stringToUTF8(string, ptr, Infinity) + 1; + envp += 4; + } + return 0; + }; + var lengthBytesUTF8 = str => { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; + }; + var _environ_sizes_get = (penviron_count, penviron_buf_size) => { + var strings = getEnvStrings(); + HEAPU32[penviron_count >> 2] = strings.length; + var bufSize = 0; + for (var string of strings) { + bufSize += lengthBytesUTF8(string) + 1; + } + HEAPU32[penviron_buf_size >> 2] = bufSize; + return 0; + }; + var INT53_MAX = 9007199254740992; + var INT53_MIN = -9007199254740992; + var bigintToI53Checked = num => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num); + function _fd_seek(fd, offset, whence, newOffset) { + offset = bigintToI53Checked(offset); + return 70; + } + var printCharBuffers = [null, [], []]; + var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder() : undefined; + var findStringEnd = (heapOrArray, idx, maxBytesToRead, ignoreNul) => { + var maxIdx = idx + maxBytesToRead; + if (ignoreNul) return maxIdx; + while (heapOrArray[idx] && !(idx >= maxIdx)) ++idx; + return idx; + }; + var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead, ignoreNul) => { + var endPtr = findStringEnd(heapOrArray, idx, maxBytesToRead, ignoreNul); + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); + } + var str = ""; + while (idx < endPtr) { + var u0 = heapOrArray[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heapOrArray[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + var u2 = heapOrArray[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63; + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } + } + return str; + }; + var printChar = (stream, curr) => { + var buffer = printCharBuffers[stream]; + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer)); + buffer.length = 0; + } else { + buffer.push(curr); + } + }; + var UTF8ToString = (ptr, maxBytesToRead, ignoreNul) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead, ignoreNul) : ""; + var _fd_write = (fd, iov, iovcnt, pnum) => { + var num = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[iov + 4 >> 2]; + iov += 8; + for (var j = 0; j < len; j++) { + printChar(fd, HEAPU8[ptr + j]); + } + num += len; + } + HEAPU32[pnum >> 2] = num; + return 0; + }; + function _gray_to_rgba(compG_ptr, nb_pixels) { + compG_ptr >>= 2; + const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4); + const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels); + for (let i = 0; i < nb_pixels; i++) { + imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i]; + imageData[4 * i + 3] = 255; + } + } + function _graya_to_rgba(compG_ptr, compA_ptr, nb_pixels) { + compG_ptr >>= 2; + compA_ptr >>= 2; + const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4); + const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels); + const compA = HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels); + for (let i = 0; i < nb_pixels; i++) { + imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i]; + imageData[4 * i + 3] = compA[i]; + } + } + function _jsPrintWarning(message_ptr) { + const message = UTF8ToString(message_ptr); + (Module.warn || console.warn)(`OpenJPEG: ${message}`); + } + function _rgb_to_rgba(compR_ptr, compG_ptr, compB_ptr, nb_pixels) { + compR_ptr >>= 2; + compG_ptr >>= 2; + compB_ptr >>= 2; + const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4); + const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels); + const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels); + const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels); + for (let i = 0; i < nb_pixels; i++) { + imageData[4 * i] = compR[i]; + imageData[4 * i + 1] = compG[i]; + imageData[4 * i + 2] = compB[i]; + imageData[4 * i + 3] = 255; + } + } + function _storeErrorMessage(message_ptr) { + const message = UTF8ToString(message_ptr); + if (!Module.errorMessages) { + Module.errorMessages = message; + } else { + Module.errorMessages += "\n" + message; + } + } + var writeArrayToMemory = (array, buffer) => { + HEAP8.set(array, buffer); + }; + if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"]; + if (Module["print"]) out = Module["print"]; + if (Module["printErr"]) err = Module["printErr"]; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + if (Module["arguments"]) arguments_ = Module["arguments"]; + if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].shift()(); + } + } + Module["writeArrayToMemory"] = writeArrayToMemory; + var _malloc, _free, _jp2_decode, __emscripten_timeout; + function assignWasmExports(wasmExports) { + Module["_malloc"] = _malloc = wasmExports["t"]; + Module["_free"] = _free = wasmExports["u"]; + Module["_jp2_decode"] = _jp2_decode = wasmExports["v"]; + __emscripten_timeout = wasmExports["w"]; + } + var wasmImports = { + k: __abort_js, + j: __emscripten_runtime_keepalive_clear, + l: __setitimer_js, + f: _copy_pixels_1, + e: _copy_pixels_3, + d: _copy_pixels_4, + m: _emscripten_resize_heap, + o: _environ_get, + p: _environ_sizes_get, + n: _fd_seek, + b: _fd_write, + q: _gray_to_rgba, + h: _graya_to_rgba, + c: _jsPrintWarning, + i: _proc_exit, + g: _rgb_to_rgba, + a: _storeErrorMessage + }; + function run() { + preRun(); + function doRun() { + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + readyPromiseResolve?.(Module); + Module["onRuntimeInitialized"]?.(); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(() => { + setTimeout(() => Module["setStatus"](""), 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + var wasmExports; + wasmExports = await createWasm(); + run(); + if (runtimeInitialized) { + moduleRtn = Module; + } else { + moduleRtn = new Promise((resolve, reject) => { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + } + return moduleRtn; +} +/* harmony default export */ const openjpeg = (OpenJPEG); +;// ./src/core/jpx.js + + + + +class JpxError extends BaseException { + constructor(msg) { + super(msg, "JpxError"); + } +} +class JpxImage { + static #buffer = null; + static #handler = null; + static #modulePromise = null; + static #useWasm = true; + static #useWorkerFetch = true; + static #wasmUrl = null; + static setOptions({ + handler, + useWasm, + useWorkerFetch, + wasmUrl + }) { + this.#useWasm = useWasm; + this.#useWorkerFetch = useWorkerFetch; + this.#wasmUrl = wasmUrl; + if (!useWorkerFetch) { + this.#handler = handler; + } + } + static async #getJsModule(fallbackCallback) { + const path = `${this.#wasmUrl}openjpeg_nowasm_fallback.js`; + let instance = null; + try { + const mod = await import( + /*webpackIgnore: true*/ + /*@vite-ignore*/ + path); + instance = mod.default(); + } catch (e) { + warn(`JpxImage#getJsModule: ${e}`); + } + fallbackCallback(instance); + } + static async #instantiateWasm(fallbackCallback, imports, successCallback) { + const filename = "openjpeg.wasm"; + try { + if (!this.#buffer) { + if (this.#useWorkerFetch) { + this.#buffer = await fetchBinaryData(`${this.#wasmUrl}${filename}`); + } else { + this.#buffer = await this.#handler.sendWithPromise("FetchBinaryData", { + kind: "wasmUrl", + filename + }); + } + } + const results = await WebAssembly.instantiate(this.#buffer, imports); + return successCallback(results.instance); + } catch (reason) { + warn(`JpxImage#instantiateWasm: ${reason}`); + this.#getJsModule(fallbackCallback); + return null; + } finally { + this.#handler = null; + } + } + static async decode(bytes, { + numComponents = 4, + isIndexedColormap = false, + smaskInData = false, + reducePower = 0 + } = {}) { + if (!this.#modulePromise) { + const { + promise, + resolve + } = Promise.withResolvers(); + const promises = [promise]; + if (!this.#useWasm) { + this.#getJsModule(resolve); + } else { + promises.push(openjpeg({ + warn: warn, + instantiateWasm: this.#instantiateWasm.bind(this, resolve) + })); + } + this.#modulePromise = Promise.race(promises); + } + const module = await this.#modulePromise; + if (!module) { + throw new JpxError("OpenJPEG failed to initialize"); + } + let ptr; + try { + const size = bytes.length; + ptr = module._malloc(size); + module.writeArrayToMemory(bytes, ptr); + const ret = module._jp2_decode(ptr, size, numComponents > 0 ? numComponents : 0, !!isIndexedColormap, !!smaskInData, reducePower); + if (ret) { + const { + errorMessages + } = module; + if (errorMessages) { + delete module.errorMessages; + throw new JpxError(errorMessages); + } + throw new JpxError("Unknown error"); + } + const { + imageData + } = module; + module.imageData = null; + return imageData; + } finally { + if (ptr) { + module._free(ptr); + } + } + } + static cleanup() { + this.#modulePromise = null; + } + static parseImageProperties(stream) { + let newByte = stream.getByte(); + while (newByte >= 0) { + const oldByte = newByte; + newByte = stream.getByte(); + const code = oldByte << 8 | newByte; + if (code === 0xff51) { + stream.skip(4); + const Xsiz = stream.getInt32() >>> 0; + const Ysiz = stream.getInt32() >>> 0; + const XOsiz = stream.getInt32() >>> 0; + const YOsiz = stream.getInt32() >>> 0; + stream.skip(16); + const Csiz = stream.getUint16(); + return { + width: Xsiz - XOsiz, + height: Ysiz - YOsiz, + bitsPerComponent: 8, + componentsCount: Csiz + }; + } + } + throw new JpxError("No size marker found in JPX stream"); + } +} + +;// ./src/core/operator_list.js + +function addState(parentState, pattern, checkFn, iterateFn, processFn) { + let state = parentState; + for (let i = 0, ii = pattern.length - 1; i < ii; i++) { + const item = pattern[i]; + state = state[item] ||= []; + } + state[pattern.at(-1)] = { + checkFn, + iterateFn, + processFn + }; +} +const InitialState = []; +addState(InitialState, [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore], null, function iterateInlineImageGroup(context, i) { + const fnArray = context.fnArray; + const iFirstSave = context.iCurr - 3; + const pos = (i - iFirstSave) % 4; + switch (pos) { + case 0: + return fnArray[i] === OPS.save; + case 1: + return fnArray[i] === OPS.transform; + case 2: + return fnArray[i] === OPS.paintInlineImageXObject; + case 3: + return fnArray[i] === OPS.restore; + } + throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`); +}, function foundInlineImageGroup(context, i) { + const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; + const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; + const MAX_WIDTH = 1000; + const IMAGE_PADDING = 1; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstPIIXO = curr - 1; + const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK); + if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) { + return i - (i - iFirstSave) % 4; + } + let maxX = 0; + const map = []; + let maxLineHeight = 0; + let currentX = IMAGE_PADDING, + currentY = IMAGE_PADDING; + for (let q = 0; q < count; q++) { + const transform = argsArray[iFirstTransform + (q << 2)]; + const img = argsArray[iFirstPIIXO + (q << 2)][0]; + if (currentX + img.width > MAX_WIDTH) { + maxX = Math.max(maxX, currentX); + currentY += maxLineHeight + 2 * IMAGE_PADDING; + currentX = 0; + maxLineHeight = 0; + } + map.push({ + transform, + x: currentX, + y: currentY, + w: img.width, + h: img.height + }); + currentX += img.width + 2 * IMAGE_PADDING; + maxLineHeight = Math.max(maxLineHeight, img.height); + } + const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; + const imgHeight = currentY + maxLineHeight + IMAGE_PADDING; + const imgData = new Uint8Array(imgWidth * imgHeight * 4); + const imgRowSize = imgWidth << 2; + for (let q = 0; q < count; q++) { + const data = argsArray[iFirstPIIXO + (q << 2)][0].data; + const rowSize = map[q].w << 2; + let dataOffset = 0; + let offset = map[q].x + map[q].y * imgWidth << 2; + imgData.set(data.subarray(0, rowSize), offset - imgRowSize); + for (let k = 0, kk = map[q].h; k < kk; k++) { + imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset); + dataOffset += rowSize; + offset += imgRowSize; + } + imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset); + while (offset >= 0) { + data[offset - 4] = data[offset]; + data[offset - 3] = data[offset + 1]; + data[offset - 2] = data[offset + 2]; + data[offset - 1] = data[offset + 3]; + data[offset + rowSize] = data[offset + rowSize - 4]; + data[offset + rowSize + 1] = data[offset + rowSize - 3]; + data[offset + rowSize + 2] = data[offset + rowSize - 2]; + data[offset + rowSize + 3] = data[offset + rowSize - 1]; + offset -= imgRowSize; + } + } + const img = { + width: imgWidth, + height: imgHeight + }; + if (context.isOffscreenCanvasSupported) { + const canvas = new OffscreenCanvas(imgWidth, imgHeight); + const ctx = canvas.getContext("2d"); + ctx.putImageData(new ImageData(new Uint8ClampedArray(imgData.buffer), imgWidth, imgHeight), 0, 0); + img.bitmap = canvas.transferToImageBitmap(); + img.data = null; + } else { + img.kind = ImageKind.RGBA_32BPP; + img.data = imgData; + } + fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [img, map]); + return iFirstSave + 1; +}); +addState(InitialState, [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore], null, function iterateImageMaskGroup(context, i) { + const fnArray = context.fnArray; + const iFirstSave = context.iCurr - 3; + const pos = (i - iFirstSave) % 4; + switch (pos) { + case 0: + return fnArray[i] === OPS.save; + case 1: + return fnArray[i] === OPS.transform; + case 2: + return fnArray[i] === OPS.paintImageMaskXObject; + case 3: + return fnArray[i] === OPS.restore; + } + throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`); +}, function foundImageMaskGroup(context, i) { + const MIN_IMAGES_IN_MASKS_BLOCK = 10; + const MAX_IMAGES_IN_MASKS_BLOCK = 100; + const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstPIMXO = curr - 1; + let count = Math.floor((i - iFirstSave) / 4); + if (count < MIN_IMAGES_IN_MASKS_BLOCK) { + return i - (i - iFirstSave) % 4; + } + let isSameImage = false; + let iTransform, transformArgs; + const firstPIMXOArg0 = argsArray[iFirstPIMXO][0]; + const firstTransformArg0 = argsArray[iFirstTransform][0], + firstTransformArg1 = argsArray[iFirstTransform][1], + firstTransformArg2 = argsArray[iFirstTransform][2], + firstTransformArg3 = argsArray[iFirstTransform][3]; + if (firstTransformArg1 === firstTransformArg2) { + isSameImage = true; + iTransform = iFirstTransform + 4; + let iPIMXO = iFirstPIMXO + 4; + for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) { + transformArgs = argsArray[iTransform]; + if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) { + if (q < MIN_IMAGES_IN_MASKS_BLOCK) { + isSameImage = false; + } else { + count = q; + } + break; + } + } + } + if (isSameImage) { + count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK); + const positions = new Float32Array(count * 2); + iTransform = iFirstTransform; + for (let q = 0; q < count; q++, iTransform += 4) { + transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]); + } else { + count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK); + const images = []; + for (let q = 0; q < count; q++) { + transformArgs = argsArray[iFirstTransform + (q << 2)]; + const maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; + images.push({ + data: maskParams.data, + width: maskParams.width, + height: maskParams.height, + interpolate: maskParams.interpolate, + count: maskParams.count, + transform: transformArgs + }); + } + fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [images]); + } + return iFirstSave + 1; +}); +addState(InitialState, [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore], function (context) { + const argsArray = context.argsArray; + const iFirstTransform = context.iCurr - 2; + return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0; +}, function iterateImageGroup(context, i) { + const fnArray = context.fnArray, + argsArray = context.argsArray; + const iFirstSave = context.iCurr - 3; + const pos = (i - iFirstSave) % 4; + switch (pos) { + case 0: + return fnArray[i] === OPS.save; + case 1: + if (fnArray[i] !== OPS.transform) { + return false; + } + const iFirstTransform = context.iCurr - 2; + const firstTransformArg0 = argsArray[iFirstTransform][0]; + const firstTransformArg3 = argsArray[iFirstTransform][3]; + if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) { + return false; + } + return true; + case 2: + if (fnArray[i] !== OPS.paintImageXObject) { + return false; + } + const iFirstPIXO = context.iCurr - 1; + const firstPIXOArg0 = argsArray[iFirstPIXO][0]; + if (argsArray[i][0] !== firstPIXOArg0) { + return false; + } + return true; + case 3: + return fnArray[i] === OPS.restore; + } + throw new Error(`iterateImageGroup - invalid pos: ${pos}`); +}, function (context, i) { + const MIN_IMAGES_IN_BLOCK = 3; + const MAX_IMAGES_IN_BLOCK = 1000; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstPIXO = curr - 1; + const firstPIXOArg0 = argsArray[iFirstPIXO][0]; + const firstTransformArg0 = argsArray[iFirstTransform][0]; + const firstTransformArg3 = argsArray[iFirstTransform][3]; + const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK); + if (count < MIN_IMAGES_IN_BLOCK) { + return i - (i - iFirstSave) % 4; + } + const positions = new Float32Array(count * 2); + let iTransform = iFirstTransform; + for (let q = 0; q < count; q++, iTransform += 4) { + const transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions]; + fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, args); + return iFirstSave + 1; +}); +addState(InitialState, [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText], null, function iterateShowTextGroup(context, i) { + const fnArray = context.fnArray, + argsArray = context.argsArray; + const iFirstSave = context.iCurr - 4; + const pos = (i - iFirstSave) % 5; + switch (pos) { + case 0: + return fnArray[i] === OPS.beginText; + case 1: + return fnArray[i] === OPS.setFont; + case 2: + return fnArray[i] === OPS.setTextMatrix; + case 3: + if (fnArray[i] !== OPS.showText) { + return false; + } + const iFirstSetFont = context.iCurr - 3; + const firstSetFontArg0 = argsArray[iFirstSetFont][0]; + const firstSetFontArg1 = argsArray[iFirstSetFont][1]; + if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) { + return false; + } + return true; + case 4: + return fnArray[i] === OPS.endText; + } + throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`); +}, function (context, i) { + const MIN_CHARS_IN_BLOCK = 3; + const MAX_CHARS_IN_BLOCK = 1000; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstBeginText = curr - 4; + const iFirstSetFont = curr - 3; + const iFirstSetTextMatrix = curr - 2; + const iFirstShowText = curr - 1; + const iFirstEndText = curr; + const firstSetFontArg0 = argsArray[iFirstSetFont][0]; + const firstSetFontArg1 = argsArray[iFirstSetFont][1]; + let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK); + if (count < MIN_CHARS_IN_BLOCK) { + return i - (i - iFirstBeginText) % 5; + } + let iFirst = iFirstBeginText; + if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) { + count++; + iFirst -= 5; + } + let iEndText = iFirst + 4; + for (let q = 1; q < count; q++) { + fnArray.splice(iEndText, 3); + argsArray.splice(iEndText, 3); + iEndText += 2; + } + return iEndText + 1; +}); +addState(InitialState, [OPS.save, OPS.transform, OPS.constructPath, OPS.restore], context => { + const argsArray = context.argsArray; + const iFirstConstructPath = context.iCurr - 1; + const op = argsArray[iFirstConstructPath][0]; + if (op !== OPS.stroke && op !== OPS.closeStroke && op !== OPS.fillStroke && op !== OPS.eoFillStroke && op !== OPS.closeFillStroke && op !== OPS.closeEOFillStroke) { + return true; + } + const iFirstTransform = context.iCurr - 2; + const transform = argsArray[iFirstTransform]; + return transform[0] === 1 && transform[1] === 0 && transform[2] === 0 && transform[3] === 1; +}, () => false, (context, i) => { + const { + fnArray, + argsArray + } = context; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstConstructPath = curr - 1; + const args = argsArray[iFirstConstructPath]; + const transform = argsArray[iFirstTransform]; + const [, [buffer], minMax] = args; + if (minMax) { + Util.scaleMinMax(transform, minMax); + for (let k = 0, kk = buffer.length; k < kk;) { + switch (buffer[k++]) { + case DrawOPS.moveTo: + case DrawOPS.lineTo: + Util.applyTransform(buffer, transform, k); + k += 2; + break; + case DrawOPS.curveTo: + Util.applyTransformToBezier(buffer, transform, k); + k += 6; + break; + } + } + } + fnArray.splice(iFirstSave, 4, OPS.constructPath); + argsArray.splice(iFirstSave, 4, args); + return iFirstSave + 1; +}); +class NullOptimizer { + constructor(queue) { + this.queue = queue; + } + _optimize() {} + push(fn, args) { + this.queue.fnArray.push(fn); + this.queue.argsArray.push(args); + this._optimize(); + } + flush() {} + reset() {} +} +class QueueOptimizer extends NullOptimizer { + constructor(queue) { + super(queue); + this.state = null; + this.context = { + iCurr: 0, + fnArray: queue.fnArray, + argsArray: queue.argsArray, + isOffscreenCanvasSupported: OperatorList.isOffscreenCanvasSupported + }; + this.match = null; + this.lastProcessed = 0; + } + _optimize() { + const fnArray = this.queue.fnArray; + let i = this.lastProcessed, + ii = fnArray.length; + let state = this.state; + let match = this.match; + if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) { + this.lastProcessed = ii; + return; + } + const context = this.context; + while (i < ii) { + if (match) { + const iterate = (0, match.iterateFn)(context, i); + if (iterate) { + i++; + continue; + } + i = (0, match.processFn)(context, i + 1); + ii = fnArray.length; + match = null; + state = null; + if (i >= ii) { + break; + } + } + state = (state || InitialState)[fnArray[i]]; + if (!state || Array.isArray(state)) { + i++; + continue; + } + context.iCurr = i; + i++; + if (state.checkFn && !(0, state.checkFn)(context)) { + state = null; + continue; + } + match = state; + state = null; + } + this.state = state; + this.match = match; + this.lastProcessed = i; + } + flush() { + while (this.match) { + const length = this.queue.fnArray.length; + this.lastProcessed = (0, this.match.processFn)(this.context, length); + this.match = null; + this.state = null; + this._optimize(); + } + } + reset() { + this.state = null; + this.match = null; + this.lastProcessed = 0; + } +} +class OperatorList { + static CHUNK_SIZE = 1000; + static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5; + static isOffscreenCanvasSupported = false; + constructor(intent = 0, streamSink) { + this._streamSink = streamSink; + this.fnArray = []; + this.argsArray = []; + this.optimizer = streamSink && !(intent & RenderingIntentFlag.OPLIST) ? new QueueOptimizer(this) : new NullOptimizer(this); + this.dependencies = new Set(); + this._totalLength = 0; + this.weight = 0; + this._resolved = streamSink ? null : Promise.resolve(); + } + static setOptions({ + isOffscreenCanvasSupported + }) { + this.isOffscreenCanvasSupported = isOffscreenCanvasSupported; + } + get length() { + return this.argsArray.length; + } + get ready() { + return this._resolved || this._streamSink.ready; + } + get totalLength() { + return this._totalLength + this.length; + } + addOp(fn, args) { + this.optimizer.push(fn, args); + this.weight++; + if (this._streamSink) { + if (this.weight >= OperatorList.CHUNK_SIZE) { + this.flush(); + } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === OPS.restore || fn === OPS.endText)) { + this.flush(); + } + } + } + addImageOps(fn, args, optionalContent, hasMask = false) { + if (hasMask) { + this.addOp(OPS.save); + this.addOp(OPS.setGState, [[["SMask", false]]]); + } + if (optionalContent !== undefined) { + this.addOp(OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + this.addOp(fn, args); + if (optionalContent !== undefined) { + this.addOp(OPS.endMarkedContent, []); + } + if (hasMask) { + this.addOp(OPS.restore); + } + } + addDependency(dependency) { + if (this.dependencies.has(dependency)) { + return; + } + this.dependencies.add(dependency); + this.addOp(OPS.dependency, [dependency]); + } + addDependencies(dependencies) { + for (const dependency of dependencies) { + this.addDependency(dependency); + } + } + addOpList(opList) { + if (!(opList instanceof OperatorList)) { + warn('addOpList - ignoring invalid "opList" parameter.'); + return; + } + for (const dependency of opList.dependencies) { + this.dependencies.add(dependency); + } + for (let i = 0, ii = opList.length; i < ii; i++) { + this.addOp(opList.fnArray[i], opList.argsArray[i]); + } + } + getIR() { + return { + fnArray: this.fnArray, + argsArray: this.argsArray, + length: this.length + }; + } + get _transfers() { + const transfers = []; + const { + fnArray, + argsArray, + length + } = this; + for (let i = 0; i < length; i++) { + switch (fnArray[i]) { + case OPS.paintInlineImageXObject: + case OPS.paintInlineImageXObjectGroup: + case OPS.paintImageMaskXObject: + { + const { + bitmap, + data + } = argsArray[i][0]; + if (bitmap || data?.buffer) { + transfers.push(bitmap || data.buffer); + } + break; + } + case OPS.constructPath: + { + const [, [data], minMax] = argsArray[i]; + if (data) { + transfers.push(data.buffer, minMax.buffer); + } + break; + } + case OPS.paintFormXObjectBegin: + const [matrix, bbox] = argsArray[i]; + if (matrix) { + transfers.push(matrix.buffer); + } + if (bbox) { + transfers.push(bbox.buffer); + } + break; + case OPS.setTextMatrix: + transfers.push(argsArray[i][0].buffer); + break; + } + } + return transfers; + } + flush(lastChunk = false, separateAnnots = null) { + this.optimizer.flush(); + const length = this.length; + this._totalLength += length; + this._streamSink.enqueue({ + fnArray: this.fnArray, + argsArray: this.argsArray, + lastChunk, + separateAnnots, + length + }, 1, this._transfers); + this.dependencies.clear(); + this.fnArray.length = 0; + this.argsArray.length = 0; + this.weight = 0; + this.optimizer.reset(); + } +} + +;// ./src/core/binary_cmap.js + + +function hexToInt(a, size) { + let n = 0; + for (let i = 0; i <= size; i++) { + n = n << 8 | a[i]; + } + return n >>> 0; +} +function hexToStr(a, size) { + if (size === 1) { + return String.fromCharCode(a[0], a[1]); + } + if (size === 3) { + return String.fromCharCode(a[0], a[1], a[2], a[3]); + } + return String.fromCharCode(...a.subarray(0, size + 1)); +} +function addHex(a, b, size) { + let c = 0; + for (let i = size; i >= 0; i--) { + c += a[i] + b[i]; + a[i] = c & 255; + c >>= 8; + } +} +function incHex(a, size) { + let c = 1; + for (let i = size; i >= 0 && c > 0; i--) { + c += a[i]; + a[i] = c & 255; + c >>= 8; + } +} +const MAX_NUM_SIZE = 16; +const MAX_ENCODED_NUM_SIZE = 19; +class BinaryCMapStream extends Stream { + tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE); + constructor(data) { + super(data, 0, data.length, null); + } + readNumber() { + let n = 0; + let last; + do { + const b = this.getByte(); + if (b < 0) { + throw new FormatError("unexpected EOF in bcmap"); + } + last = !(b & 0x80); + n = n << 7 | b & 0x7f; + } while (!last); + return n; + } + readSigned() { + const n = this.readNumber(); + return n & 1 ? ~(n >>> 1) : n >>> 1; + } + readHex(num, size) { + num.set(this.getBytes(size + 1)); + } + readHexNumber(num, size) { + let last; + const stack = this.tmpBuf; + let sp = 0; + do { + const b = this.getByte(); + if (b < 0) { + throw new FormatError("unexpected EOF in bcmap"); + } + last = !(b & 0x80); + stack[sp++] = b & 0x7f; + } while (!last); + let i = size, + buffer = 0, + bufferSize = 0; + while (i >= 0) { + while (bufferSize < 8 && stack.length > 0) { + buffer |= stack[--sp] << bufferSize; + bufferSize += 7; + } + num[i] = buffer & 255; + i--; + buffer >>= 8; + bufferSize -= 8; + } + } + readHexSigned(num, size) { + this.readHexNumber(num, size); + const sign = num[size] & 1 ? 255 : 0; + let c = 0; + for (let i = 0; i <= size; i++) { + c = (c & 1) << 8 | num[i]; + num[i] = c >> 1 ^ sign; + } + } + readString() { + const len = this.readNumber(), + buf = new Array(len); + for (let i = 0; i < len; i++) { + buf[i] = this.readNumber(); + } + return String.fromCharCode(...buf); + } +} +class BinaryCMapReader { + async process(data, cMap, extend) { + const stream = new BinaryCMapStream(data); + const header = stream.getByte(); + cMap.vertical = !!(header & 1); + let useCMap = null; + const start = new Uint8Array(MAX_NUM_SIZE); + const end = new Uint8Array(MAX_NUM_SIZE); + const char = new Uint8Array(MAX_NUM_SIZE); + const charCode = new Uint8Array(MAX_NUM_SIZE); + const tmp = new Uint8Array(MAX_NUM_SIZE); + let code; + let b; + while ((b = stream.getByte()) >= 0) { + const type = b >> 5; + if (type === 7) { + switch (b & 0x1f) { + case 0: + stream.readString(); + break; + case 1: + useCMap = stream.readString(); + break; + } + continue; + } + const sequence = !!(b & 0x10); + const dataSize = b & 15; + if (dataSize + 1 > MAX_NUM_SIZE) { + throw new Error("BinaryCMapReader.process: Invalid dataSize."); + } + const ucs2DataSize = 1; + const subitemsCount = stream.readNumber(); + switch (type) { + case 0: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); + for (let i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); + } + break; + case 1: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + stream.readNumber(); + for (let i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + stream.readNumber(); + } + break; + case 2: + stream.readHex(char, dataSize); + code = stream.readNumber(); + cMap.mapOne(hexToInt(char, dataSize), code); + for (let i = 1; i < subitemsCount; i++) { + incHex(char, dataSize); + if (!sequence) { + stream.readHexNumber(tmp, dataSize); + addHex(char, tmp, dataSize); + } + code = stream.readSigned() + (code + 1); + cMap.mapOne(hexToInt(char, dataSize), code); + } + break; + case 3: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); + for (let i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + if (!sequence) { + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + } else { + start.set(end); + } + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); + } + break; + case 4: + stream.readHex(char, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); + for (let i = 1; i < subitemsCount; i++) { + incHex(char, ucs2DataSize); + if (!sequence) { + stream.readHexNumber(tmp, ucs2DataSize); + addHex(char, tmp, ucs2DataSize); + } + incHex(charCode, dataSize); + stream.readHexSigned(tmp, dataSize); + addHex(charCode, tmp, dataSize); + cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); + } + break; + case 5: + stream.readHex(start, ucs2DataSize); + stream.readHexNumber(end, ucs2DataSize); + addHex(end, start, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); + for (let i = 1; i < subitemsCount; i++) { + incHex(end, ucs2DataSize); + if (!sequence) { + stream.readHexNumber(start, ucs2DataSize); + addHex(start, end, ucs2DataSize); + } else { + start.set(end); + } + stream.readHexNumber(end, ucs2DataSize); + addHex(end, start, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); + } + break; + default: + throw new Error(`BinaryCMapReader.process - unknown type: ${type}`); + } + } + if (useCMap) { + return extend(useCMap); + } + return cMap; + } +} + +;// ./src/core/ascii_85_stream.js + + +class Ascii85Stream extends DecodeStream { + constructor(str, maybeLength) { + if (maybeLength) { + maybeLength *= 0.8; + } + super(maybeLength); + this.stream = str; + this.dict = str.dict; + this.input = new Uint8Array(5); + } + readBlock() { + const TILDA_CHAR = 0x7e; + const Z_LOWER_CHAR = 0x7a; + const EOF = -1; + const str = this.stream; + let c = str.getByte(); + while (isWhiteSpace(c)) { + c = str.getByte(); + } + if (c === EOF || c === TILDA_CHAR) { + this.eof = true; + return; + } + const bufferLength = this.bufferLength; + let buffer, i; + if (c === Z_LOWER_CHAR) { + buffer = this.ensureBuffer(bufferLength + 4); + for (i = 0; i < 4; ++i) { + buffer[bufferLength + i] = 0; + } + this.bufferLength += 4; + } else { + const input = this.input; + input[0] = c; + for (i = 1; i < 5; ++i) { + c = str.getByte(); + while (isWhiteSpace(c)) { + c = str.getByte(); + } + input[i] = c; + if (c === EOF || c === TILDA_CHAR) { + break; + } + } + buffer = this.ensureBuffer(bufferLength + i - 1); + this.bufferLength += i - 1; + if (i < 5) { + for (; i < 5; ++i) { + input[i] = 0x21 + 84; + } + this.eof = true; + } + let t = 0; + for (i = 0; i < 5; ++i) { + t = t * 85 + (input[i] - 0x21); + } + for (i = 3; i >= 0; --i) { + buffer[bufferLength + i] = t & 0xff; + t >>= 8; + } + } + } +} + +;// ./src/core/ascii_hex_stream.js + +class AsciiHexStream extends DecodeStream { + constructor(str, maybeLength) { + if (maybeLength) { + maybeLength *= 0.5; + } + super(maybeLength); + this.stream = str; + this.dict = str.dict; + this.firstDigit = -1; + } + readBlock() { + const UPSTREAM_BLOCK_SIZE = 8000; + const bytes = this.stream.getBytes(UPSTREAM_BLOCK_SIZE); + if (!bytes.length) { + this.eof = true; + return; + } + const maxDecodeLength = bytes.length + 1 >> 1; + const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength); + let bufferLength = this.bufferLength; + let firstDigit = this.firstDigit; + for (const ch of bytes) { + let digit; + if (ch >= 0x30 && ch <= 0x39) { + digit = ch & 0x0f; + } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { + digit = (ch & 0x0f) + 9; + } else if (ch === 0x3e) { + this.eof = true; + break; + } else { + continue; + } + if (firstDigit < 0) { + firstDigit = digit; + } else { + buffer[bufferLength++] = firstDigit << 4 | digit; + firstDigit = -1; + } + } + if (firstDigit >= 0 && this.eof) { + buffer[bufferLength++] = firstDigit << 4; + firstDigit = -1; + } + this.firstDigit = firstDigit; + this.bufferLength = bufferLength; + } +} + +;// ./external/brotli/decode.js +let Options; +let makeBrotliDecode = () => { + const MAX_HUFFMAN_TABLE_SIZE = Int32Array.from([256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048, 1080]); + const CODE_LENGTH_CODE_ORDER = Int32Array.from([1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15]); + const DISTANCE_SHORT_CODE_INDEX_OFFSET = Int32Array.from([0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3]); + const DISTANCE_SHORT_CODE_VALUE_OFFSET = Int32Array.from([0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3]); + const FIXED_TABLE = Int32Array.from([0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040001, 0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040005]); + const BLOCK_LENGTH_OFFSET = Int32Array.from([1, 5, 9, 13, 17, 25, 33, 41, 49, 65, 81, 97, 113, 145, 177, 209, 241, 305, 369, 497, 753, 1265, 2289, 4337, 8433, 16625]); + const BLOCK_LENGTH_N_BITS = Int32Array.from([2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 24]); + const INSERT_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x0E, 0x18]); + const COPY_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x18]); + const CMD_LOOKUP = new Int16Array(2816); + unpackCommandLookupTable(CMD_LOOKUP); + function log2floor(i) { + let result = -1; + let step = 16; + let v = i; + while (step > 0) { + let next = v >> step; + if (next !== 0) { + result += step; + v = next; + } + step = step >> 1; + } + return result + v; + } + function calculateDistanceAlphabetSize(npostfix, ndirect, maxndistbits) { + return 16 + ndirect + 2 * (maxndistbits << npostfix); + } + function calculateDistanceAlphabetLimit(s, maxDistance, npostfix, ndirect) { + if (maxDistance < ndirect + (2 << npostfix)) { + return makeError(s, -23); + } + const offset = (maxDistance - ndirect >> npostfix) + 4; + const ndistbits = log2floor(offset) - 1; + const group = ndistbits - 1 << 1 | offset >> ndistbits & 1; + return (group - 1 << npostfix) + (1 << npostfix) + ndirect + 16; + } + function unpackCommandLookupTable(cmdLookup) { + const insertLengthOffsets = new Int32Array(24); + const copyLengthOffsets = new Int32Array(24); + copyLengthOffsets[0] = 2; + for (let i = 0; i < 23; ++i) { + insertLengthOffsets[i + 1] = insertLengthOffsets[i] + (1 << INSERT_LENGTH_N_BITS[i]); + copyLengthOffsets[i + 1] = copyLengthOffsets[i] + (1 << COPY_LENGTH_N_BITS[i]); + } + for (let cmdCode = 0; cmdCode < 704; ++cmdCode) { + let rangeIdx = cmdCode >> 6; + let distanceContextOffset = -4; + if (rangeIdx >= 2) { + rangeIdx -= 2; + distanceContextOffset = 0; + } + const insertCode = (0x29850 >> rangeIdx * 2 & 0x3) << 3 | cmdCode >> 3 & 7; + const copyCode = (0x26244 >> rangeIdx * 2 & 0x3) << 3 | cmdCode & 7; + const copyLengthOffset = copyLengthOffsets[copyCode]; + const distanceContext = distanceContextOffset + Math.min(copyLengthOffset, 5) - 2; + const index = cmdCode * 4; + cmdLookup[index] = INSERT_LENGTH_N_BITS[insertCode] | COPY_LENGTH_N_BITS[copyCode] << 8; + cmdLookup[index + 1] = insertLengthOffsets[insertCode]; + cmdLookup[index + 2] = copyLengthOffsets[copyCode]; + cmdLookup[index + 3] = distanceContext; + } + } + function decodeWindowBits(s) { + const largeWindowEnabled = s.isLargeWindow; + s.isLargeWindow = 0; + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + if (readFewBits(s, 1) === 0) { + return 16; + } + let n = readFewBits(s, 3); + if (n !== 0) { + return 17 + n; + } + n = readFewBits(s, 3); + if (n !== 0) { + if (n === 1) { + if (largeWindowEnabled === 0) { + return -1; + } + s.isLargeWindow = 1; + if (readFewBits(s, 1) === 1) { + return -1; + } + n = readFewBits(s, 6); + if (n < 10 || n > 30) { + return -1; + } + return n; + } + return 8 + n; + } + return 17; + } + function attachDictionaryChunk(s, data) { + if (s.runningState !== 1) { + return makeError(s, -24); + } + if (s.cdNumChunks === 0) { + s.cdChunks = new Array(16); + s.cdChunkOffsets = new Int32Array(16); + s.cdBlockBits = -1; + } + if (s.cdNumChunks === 15) { + return makeError(s, -27); + } + s.cdChunks[s.cdNumChunks] = data; + s.cdNumChunks++; + s.cdTotalSize += data.length; + s.cdChunkOffsets[s.cdNumChunks] = s.cdTotalSize; + return 0; + } + function initState(s) { + if (s.runningState !== 0) { + return makeError(s, -26); + } + s.blockTrees = new Int32Array(3091); + s.blockTrees[0] = 7; + s.distRbIdx = 3; + let result = calculateDistanceAlphabetLimit(s, 0x7FFFFFFC, 3, 120); + if (result < 0) { + return result; + } + const maxDistanceAlphabetLimit = result; + s.distExtraBits = new Int8Array(maxDistanceAlphabetLimit); + s.distOffset = new Int32Array(maxDistanceAlphabetLimit); + result = initBitReader(s); + if (result < 0) { + return result; + } + s.runningState = 1; + return 0; + } + function close(s) { + if (s.runningState === 0) { + return makeError(s, -25); + } + if (s.runningState > 0) { + s.runningState = 11; + } + return 0; + } + function decodeVarLenUnsignedByte(s) { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + if (readFewBits(s, 1) !== 0) { + const n = readFewBits(s, 3); + if (n === 0) { + return 1; + } + return readFewBits(s, n) + (1 << n); + } + return 0; + } + function decodeMetaBlockLength(s) { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + s.inputEnd = readFewBits(s, 1); + s.metaBlockLength = 0; + s.isUncompressed = 0; + s.isMetadata = 0; + if (s.inputEnd !== 0 && readFewBits(s, 1) !== 0) { + return 0; + } + const sizeNibbles = readFewBits(s, 2) + 4; + if (sizeNibbles === 7) { + s.isMetadata = 1; + if (readFewBits(s, 1) !== 0) { + return makeError(s, -6); + } + const sizeBytes = readFewBits(s, 2); + if (sizeBytes === 0) { + return 0; + } + for (let i = 0; i < sizeBytes; ++i) { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const bits = readFewBits(s, 8); + if (bits === 0 && i + 1 === sizeBytes && sizeBytes > 1) { + return makeError(s, -8); + } + s.metaBlockLength += bits << i * 8; + } + } else { + for (let i = 0; i < sizeNibbles; ++i) { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const bits = readFewBits(s, 4); + if (bits === 0 && i + 1 === sizeNibbles && sizeNibbles > 4) { + return makeError(s, -8); + } + s.metaBlockLength += bits << i * 4; + } + } + s.metaBlockLength++; + if (s.inputEnd === 0) { + s.isUncompressed = readFewBits(s, 1); + } + return 0; + } + function readSymbol(tableGroup, tableIdx, s) { + let offset = tableGroup[tableIdx]; + const v = s.accumulator32 >>> s.bitOffset; + offset += v & 0xFF; + const bits = tableGroup[offset] >> 16; + const sym = tableGroup[offset] & 0xFFFF; + if (bits <= 8) { + s.bitOffset += bits; + return sym; + } + offset += sym; + const mask = (1 << bits) - 1; + offset += (v & mask) >>> 8; + s.bitOffset += (tableGroup[offset] >> 16) + 8; + return tableGroup[offset] & 0xFFFF; + } + function readBlockLength(tableGroup, tableIdx, s) { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const code = readSymbol(tableGroup, tableIdx, s); + const n = BLOCK_LENGTH_N_BITS[code]; + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + return BLOCK_LENGTH_OFFSET[code] + (n <= 16 ? readFewBits(s, n) : readManyBits(s, n)); + } + function moveToFront(v, index) { + let i = index; + const value = v[i]; + while (i > 0) { + v[i] = v[i - 1]; + i--; + } + v[0] = value; + } + function inverseMoveToFrontTransform(v, vLen) { + const mtf = new Int32Array(256); + for (let i = 0; i < 256; ++i) { + mtf[i] = i; + } + for (let i = 0; i < vLen; ++i) { + const index = v[i] & 0xFF; + v[i] = mtf[index]; + if (index !== 0) { + moveToFront(mtf, index); + } + } + } + function readHuffmanCodeLengths(codeLengthCodeLengths, numSymbols, codeLengths, s) { + let symbol = 0; + let prevCodeLen = 8; + let repeat = 0; + let repeatCodeLen = 0; + let space = 32768; + const table = new Int32Array(33); + const tableIdx = table.length - 1; + buildHuffmanTable(table, tableIdx, 5, codeLengthCodeLengths, 18); + while (symbol < numSymbols && space > 0) { + if (s.halfOffset > 2030) { + const result = readMoreInput(s); + if (result < 0) { + return result; + } + } + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const p = s.accumulator32 >>> s.bitOffset & 31; + s.bitOffset += table[p] >> 16; + const codeLen = table[p] & 0xFFFF; + if (codeLen < 16) { + repeat = 0; + codeLengths[symbol++] = codeLen; + if (codeLen !== 0) { + prevCodeLen = codeLen; + space -= 32768 >> codeLen; + } + } else { + const extraBits = codeLen - 14; + let newLen = 0; + if (codeLen === 16) { + newLen = prevCodeLen; + } + if (repeatCodeLen !== newLen) { + repeat = 0; + repeatCodeLen = newLen; + } + const oldRepeat = repeat; + if (repeat > 0) { + repeat -= 2; + repeat = repeat << extraBits; + } + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + repeat += readFewBits(s, extraBits) + 3; + const repeatDelta = repeat - oldRepeat; + if (symbol + repeatDelta > numSymbols) { + return makeError(s, -2); + } + for (let i = 0; i < repeatDelta; ++i) { + codeLengths[symbol++] = repeatCodeLen; + } + if (repeatCodeLen !== 0) { + space -= repeatDelta << 15 - repeatCodeLen; + } + } + } + if (space !== 0) { + return makeError(s, -18); + } + codeLengths.fill(0, symbol, numSymbols); + return 0; + } + function checkDupes(s, symbols, length) { + for (let i = 0; i < length - 1; ++i) { + for (let j = i + 1; j < length; ++j) { + if (symbols[i] === symbols[j]) { + return makeError(s, -7); + } + } + } + return 0; + } + function readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) { + const codeLengths = new Int32Array(alphabetSizeLimit); + const symbols = new Int32Array(4); + const maxBits = 1 + log2floor(alphabetSizeMax - 1); + const numSymbols = readFewBits(s, 2) + 1; + for (let i = 0; i < numSymbols; ++i) { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const symbol = readFewBits(s, maxBits); + if (symbol >= alphabetSizeLimit) { + return makeError(s, -15); + } + symbols[i] = symbol; + } + const result = checkDupes(s, symbols, numSymbols); + if (result < 0) { + return result; + } + let histogramId = numSymbols; + if (numSymbols === 4) { + histogramId += readFewBits(s, 1); + } + switch (histogramId) { + case 1: + codeLengths[symbols[0]] = 1; + break; + case 2: + codeLengths[symbols[0]] = 1; + codeLengths[symbols[1]] = 1; + break; + case 3: + codeLengths[symbols[0]] = 1; + codeLengths[symbols[1]] = 2; + codeLengths[symbols[2]] = 2; + break; + case 4: + codeLengths[symbols[0]] = 2; + codeLengths[symbols[1]] = 2; + codeLengths[symbols[2]] = 2; + codeLengths[symbols[3]] = 2; + break; + case 5: + codeLengths[symbols[0]] = 1; + codeLengths[symbols[1]] = 2; + codeLengths[symbols[2]] = 3; + codeLengths[symbols[3]] = 3; + break; + default: + break; + } + return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit); + } + function readComplexHuffmanCode(alphabetSizeLimit, skip, tableGroup, tableIdx, s) { + const codeLengths = new Int32Array(alphabetSizeLimit); + const codeLengthCodeLengths = new Int32Array(18); + let space = 32; + let numCodes = 0; + for (let i = skip; i < 18; ++i) { + const codeLenIdx = CODE_LENGTH_CODE_ORDER[i]; + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const p = s.accumulator32 >>> s.bitOffset & 15; + s.bitOffset += FIXED_TABLE[p] >> 16; + const v = FIXED_TABLE[p] & 0xFFFF; + codeLengthCodeLengths[codeLenIdx] = v; + if (v !== 0) { + space -= 32 >> v; + numCodes++; + if (space <= 0) { + break; + } + } + } + if (space !== 0 && numCodes !== 1) { + return makeError(s, -4); + } + const result = readHuffmanCodeLengths(codeLengthCodeLengths, alphabetSizeLimit, codeLengths, s); + if (result < 0) { + return result; + } + return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit); + } + function readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) { + if (s.halfOffset > 2030) { + const result = readMoreInput(s); + if (result < 0) { + return result; + } + } + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const simpleCodeOrSkip = readFewBits(s, 2); + if (simpleCodeOrSkip === 1) { + return readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s); + } + return readComplexHuffmanCode(alphabetSizeLimit, simpleCodeOrSkip, tableGroup, tableIdx, s); + } + function decodeContextMap(contextMapSize, contextMap, s) { + let result; + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + const numTrees = decodeVarLenUnsignedByte(s) + 1; + if (numTrees === 1) { + contextMap.fill(0, 0, contextMapSize); + return numTrees; + } + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const useRleForZeros = readFewBits(s, 1); + let maxRunLengthPrefix = 0; + if (useRleForZeros !== 0) { + maxRunLengthPrefix = readFewBits(s, 4) + 1; + } + const alphabetSize = numTrees + maxRunLengthPrefix; + const tableSize = MAX_HUFFMAN_TABLE_SIZE[alphabetSize + 31 >> 5]; + const table = new Int32Array(tableSize + 1); + const tableIdx = table.length - 1; + result = readHuffmanCode(alphabetSize, alphabetSize, table, tableIdx, s); + if (result < 0) { + return result; + } + let i = 0; + while (i < contextMapSize) { + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const code = readSymbol(table, tableIdx, s); + if (code === 0) { + contextMap[i] = 0; + i++; + } else if (code <= maxRunLengthPrefix) { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + let reps = (1 << code) + readFewBits(s, code); + while (reps !== 0) { + if (i >= contextMapSize) { + return makeError(s, -3); + } + contextMap[i] = 0; + i++; + reps--; + } + } else { + contextMap[i] = code - maxRunLengthPrefix; + i++; + } + } + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + if (readFewBits(s, 1) === 1) { + inverseMoveToFrontTransform(contextMap, contextMapSize); + } + return numTrees; + } + function decodeBlockTypeAndLength(s, treeType, numBlockTypes) { + const ringBuffers = s.rings; + const offset = 4 + treeType * 2; + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + let blockType = readSymbol(s.blockTrees, 2 * treeType, s); + const result = readBlockLength(s.blockTrees, 2 * treeType + 1, s); + if (blockType === 1) { + blockType = ringBuffers[offset + 1] + 1; + } else if (blockType === 0) { + blockType = ringBuffers[offset]; + } else { + blockType -= 2; + } + if (blockType >= numBlockTypes) { + blockType -= numBlockTypes; + } + ringBuffers[offset] = ringBuffers[offset + 1]; + ringBuffers[offset + 1] = blockType; + return result; + } + function decodeLiteralBlockSwitch(s) { + s.literalBlockLength = decodeBlockTypeAndLength(s, 0, s.numLiteralBlockTypes); + const literalBlockType = s.rings[5]; + s.contextMapSlice = literalBlockType << 6; + s.literalTreeIdx = s.contextMap[s.contextMapSlice] & 0xFF; + const contextMode = s.contextModes[literalBlockType]; + s.contextLookupOffset1 = contextMode << 9; + s.contextLookupOffset2 = s.contextLookupOffset1 + 256; + } + function decodeCommandBlockSwitch(s) { + s.commandBlockLength = decodeBlockTypeAndLength(s, 1, s.numCommandBlockTypes); + s.commandTreeIdx = s.rings[7]; + } + function decodeDistanceBlockSwitch(s) { + s.distanceBlockLength = decodeBlockTypeAndLength(s, 2, s.numDistanceBlockTypes); + s.distContextMapSlice = s.rings[9] << 2; + } + function maybeReallocateRingBuffer(s) { + let newSize = s.maxRingBufferSize; + if (newSize > s.expectedTotalSize) { + const minimalNewSize = s.expectedTotalSize; + while (newSize >> 1 > minimalNewSize) { + newSize = newSize >> 1; + } + if (s.inputEnd === 0 && newSize < 16384 && s.maxRingBufferSize >= 16384) { + newSize = 16384; + } + } + if (newSize <= s.ringBufferSize) { + return; + } + const ringBufferSizeWithSlack = newSize + 37; + const newBuffer = new Int8Array(ringBufferSizeWithSlack); + const oldBuffer = s.ringBuffer; + if (oldBuffer.length !== 0) { + newBuffer.set(oldBuffer.subarray(0, s.ringBufferSize), 0); + } + s.ringBuffer = newBuffer; + s.ringBufferSize = newSize; + } + function readNextMetablockHeader(s) { + if (s.inputEnd !== 0) { + s.nextRunningState = 10; + s.runningState = 12; + return 0; + } + s.literalTreeGroup = new Int32Array(0); + s.commandTreeGroup = new Int32Array(0); + s.distanceTreeGroup = new Int32Array(0); + let result; + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + result = decodeMetaBlockLength(s); + if (result < 0) { + return result; + } + if (s.metaBlockLength === 0 && s.isMetadata === 0) { + return 0; + } + if (s.isUncompressed !== 0 || s.isMetadata !== 0) { + result = jumpToByteBoundary(s); + if (result < 0) { + return result; + } + if (s.isMetadata === 0) { + s.runningState = 6; + } else { + s.runningState = 5; + } + } else { + s.runningState = 3; + } + if (s.isMetadata !== 0) { + return 0; + } + s.expectedTotalSize += s.metaBlockLength; + if (s.expectedTotalSize > 1 << 30) { + s.expectedTotalSize = 1 << 30; + } + if (s.ringBufferSize < s.maxRingBufferSize) { + maybeReallocateRingBuffer(s); + } + return 0; + } + function readMetablockPartition(s, treeType, numBlockTypes) { + let offset = s.blockTrees[2 * treeType]; + if (numBlockTypes <= 1) { + s.blockTrees[2 * treeType + 1] = offset; + s.blockTrees[2 * treeType + 2] = offset; + return 1 << 28; + } + const blockTypeAlphabetSize = numBlockTypes + 2; + let result = readHuffmanCode(blockTypeAlphabetSize, blockTypeAlphabetSize, s.blockTrees, 2 * treeType, s); + if (result < 0) { + return result; + } + offset += result; + s.blockTrees[2 * treeType + 1] = offset; + const blockLengthAlphabetSize = 26; + result = readHuffmanCode(blockLengthAlphabetSize, blockLengthAlphabetSize, s.blockTrees, 2 * treeType + 1, s); + if (result < 0) { + return result; + } + offset += result; + s.blockTrees[2 * treeType + 2] = offset; + return readBlockLength(s.blockTrees, 2 * treeType + 1, s); + } + function calculateDistanceLut(s, alphabetSizeLimit) { + const distExtraBits = s.distExtraBits; + const distOffset = s.distOffset; + const npostfix = s.distancePostfixBits; + const ndirect = s.numDirectDistanceCodes; + const postfix = 1 << npostfix; + let bits = 1; + let half = 0; + let i = 16; + for (let j = 0; j < ndirect; ++j) { + distExtraBits[i] = 0; + distOffset[i] = j + 1; + ++i; + } + while (i < alphabetSizeLimit) { + const base = ndirect + ((2 + half << bits) - 4 << npostfix) + 1; + for (let j = 0; j < postfix; ++j) { + distExtraBits[i] = bits; + distOffset[i] = base + j; + ++i; + } + bits = bits + half; + half = half ^ 1; + } + } + function readMetablockHuffmanCodesAndContextMaps(s) { + s.numLiteralBlockTypes = decodeVarLenUnsignedByte(s) + 1; + let result = readMetablockPartition(s, 0, s.numLiteralBlockTypes); + if (result < 0) { + return result; + } + s.literalBlockLength = result; + s.numCommandBlockTypes = decodeVarLenUnsignedByte(s) + 1; + result = readMetablockPartition(s, 1, s.numCommandBlockTypes); + if (result < 0) { + return result; + } + s.commandBlockLength = result; + s.numDistanceBlockTypes = decodeVarLenUnsignedByte(s) + 1; + result = readMetablockPartition(s, 2, s.numDistanceBlockTypes); + if (result < 0) { + return result; + } + s.distanceBlockLength = result; + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + s.distancePostfixBits = readFewBits(s, 2); + s.numDirectDistanceCodes = readFewBits(s, 4) << s.distancePostfixBits; + s.contextModes = new Int8Array(s.numLiteralBlockTypes); + let i = 0; + while (i < s.numLiteralBlockTypes) { + const limit = Math.min(i + 96, s.numLiteralBlockTypes); + while (i < limit) { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + s.contextModes[i] = readFewBits(s, 2); + i++; + } + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + } + const contextMapLength = s.numLiteralBlockTypes << 6; + s.contextMap = new Int8Array(contextMapLength); + result = decodeContextMap(contextMapLength, s.contextMap, s); + if (result < 0) { + return result; + } + const numLiteralTrees = result; + s.trivialLiteralContext = 1; + for (let j = 0; j < contextMapLength; ++j) { + if (s.contextMap[j] !== j >> 6) { + s.trivialLiteralContext = 0; + break; + } + } + s.distContextMap = new Int8Array(s.numDistanceBlockTypes << 2); + result = decodeContextMap(s.numDistanceBlockTypes << 2, s.distContextMap, s); + if (result < 0) { + return result; + } + const numDistTrees = result; + s.literalTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(256, numLiteralTrees)); + result = decodeHuffmanTreeGroup(256, 256, numLiteralTrees, s, s.literalTreeGroup); + if (result < 0) { + return result; + } + s.commandTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(704, s.numCommandBlockTypes)); + result = decodeHuffmanTreeGroup(704, 704, s.numCommandBlockTypes, s, s.commandTreeGroup); + if (result < 0) { + return result; + } + let distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 24); + let distanceAlphabetSizeLimit = distanceAlphabetSizeMax; + if (s.isLargeWindow === 1) { + distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 62); + result = calculateDistanceAlphabetLimit(s, 0x7FFFFFFC, s.distancePostfixBits, s.numDirectDistanceCodes); + if (result < 0) { + return result; + } + distanceAlphabetSizeLimit = result; + } + s.distanceTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(distanceAlphabetSizeLimit, numDistTrees)); + result = decodeHuffmanTreeGroup(distanceAlphabetSizeMax, distanceAlphabetSizeLimit, numDistTrees, s, s.distanceTreeGroup); + if (result < 0) { + return result; + } + calculateDistanceLut(s, distanceAlphabetSizeLimit); + s.contextMapSlice = 0; + s.distContextMapSlice = 0; + s.contextLookupOffset1 = s.contextModes[0] * 512; + s.contextLookupOffset2 = s.contextLookupOffset1 + 256; + s.literalTreeIdx = 0; + s.commandTreeIdx = 0; + s.rings[4] = 1; + s.rings[5] = 0; + s.rings[6] = 1; + s.rings[7] = 0; + s.rings[8] = 1; + s.rings[9] = 0; + return 0; + } + function copyUncompressedData(s) { + const ringBuffer = s.ringBuffer; + let result; + if (s.metaBlockLength <= 0) { + result = reload(s); + if (result < 0) { + return result; + } + s.runningState = 2; + return 0; + } + const chunkLength = Math.min(s.ringBufferSize - s.pos, s.metaBlockLength); + result = copyRawBytes(s, ringBuffer, s.pos, chunkLength); + if (result < 0) { + return result; + } + s.metaBlockLength -= chunkLength; + s.pos += chunkLength; + if (s.pos === s.ringBufferSize) { + s.nextRunningState = 6; + s.runningState = 12; + return 0; + } + result = reload(s); + if (result < 0) { + return result; + } + s.runningState = 2; + return 0; + } + function writeRingBuffer(s) { + const toWrite = Math.min(s.outputLength - s.outputUsed, s.ringBufferBytesReady - s.ringBufferBytesWritten); + if (toWrite !== 0) { + s.output.set(s.ringBuffer.subarray(s.ringBufferBytesWritten, s.ringBufferBytesWritten + toWrite), s.outputOffset + s.outputUsed); + s.outputUsed += toWrite; + s.ringBufferBytesWritten += toWrite; + } + if (s.outputUsed < s.outputLength) { + return 0; + } + return 2; + } + function huffmanTreeGroupAllocSize(alphabetSizeLimit, n) { + const maxTableSize = MAX_HUFFMAN_TABLE_SIZE[alphabetSizeLimit + 31 >> 5]; + return n + n * maxTableSize; + } + function decodeHuffmanTreeGroup(alphabetSizeMax, alphabetSizeLimit, n, s, group) { + let next = n; + for (let i = 0; i < n; ++i) { + group[i] = next; + const result = readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, group, i, s); + if (result < 0) { + return result; + } + next += result; + } + return 0; + } + function calculateFence(s) { + let result = s.ringBufferSize; + if (s.isEager !== 0) { + result = Math.min(result, s.ringBufferBytesWritten + s.outputLength - s.outputUsed); + } + return result; + } + function doUseDictionary(s, fence) { + if (s.distance > 0x7FFFFFFC) { + return makeError(s, -9); + } + const address = s.distance - s.maxDistance - 1 - s.cdTotalSize; + if (address < 0) { + const result = initializeCompoundDictionaryCopy(s, -address - 1, s.copyLength); + if (result < 0) { + return result; + } + s.runningState = 14; + } else { + const dictionaryData = data; + const wordLength = s.copyLength; + if (wordLength > 31) { + return makeError(s, -9); + } + const shift = sizeBits[wordLength]; + if (shift === 0) { + return makeError(s, -9); + } + let offset = offsets[wordLength]; + const mask = (1 << shift) - 1; + const wordIdx = address & mask; + const transformIdx = address >> shift; + offset += wordIdx * wordLength; + const transforms = RFC_TRANSFORMS; + if (transformIdx >= transforms.numTransforms) { + return makeError(s, -9); + } + const len = transformDictionaryWord(s.ringBuffer, s.pos, dictionaryData, offset, wordLength, transforms, transformIdx); + s.pos += len; + s.metaBlockLength -= len; + if (s.pos >= fence) { + s.nextRunningState = 4; + s.runningState = 12; + return 0; + } + s.runningState = 4; + } + return 0; + } + function initializeCompoundDictionary(s) { + s.cdBlockMap = new Int8Array(256); + let blockBits = 8; + while (s.cdTotalSize - 1 >> blockBits !== 0) { + blockBits++; + } + blockBits -= 8; + s.cdBlockBits = blockBits; + let cursor = 0; + let index = 0; + while (cursor < s.cdTotalSize) { + while (s.cdChunkOffsets[index + 1] < cursor) { + index++; + } + s.cdBlockMap[cursor >> blockBits] = index; + cursor += 1 << blockBits; + } + } + function initializeCompoundDictionaryCopy(s, address, length) { + if (s.cdBlockBits === -1) { + initializeCompoundDictionary(s); + } + let index = s.cdBlockMap[address >> s.cdBlockBits]; + while (address >= s.cdChunkOffsets[index + 1]) { + index++; + } + if (s.cdTotalSize > address + length) { + return makeError(s, -9); + } + s.distRbIdx = s.distRbIdx + 1 & 0x3; + s.rings[s.distRbIdx] = s.distance; + s.metaBlockLength -= length; + s.cdBrIndex = index; + s.cdBrOffset = address - s.cdChunkOffsets[index]; + s.cdBrLength = length; + s.cdBrCopied = 0; + return 0; + } + function copyFromCompoundDictionary(s, fence) { + let pos = s.pos; + const origPos = pos; + while (s.cdBrLength !== s.cdBrCopied) { + const space = fence - pos; + const chunkLength = s.cdChunkOffsets[s.cdBrIndex + 1] - s.cdChunkOffsets[s.cdBrIndex]; + const remChunkLength = chunkLength - s.cdBrOffset; + let length = s.cdBrLength - s.cdBrCopied; + if (length > remChunkLength) { + length = remChunkLength; + } + if (length > space) { + length = space; + } + s.ringBuffer.set(s.cdChunks[s.cdBrIndex].subarray(s.cdBrOffset, s.cdBrOffset + length), pos); + pos += length; + s.cdBrOffset += length; + s.cdBrCopied += length; + if (length === remChunkLength) { + s.cdBrIndex++; + s.cdBrOffset = 0; + } + if (pos >= fence) { + break; + } + } + return pos - origPos; + } + function decompress(s) { + let result; + if (s.runningState === 0) { + return makeError(s, -25); + } + if (s.runningState < 0) { + return makeError(s, -28); + } + if (s.runningState === 11) { + return makeError(s, -22); + } + if (s.runningState === 1) { + const windowBits = decodeWindowBits(s); + if (windowBits === -1) { + return makeError(s, -11); + } + s.maxRingBufferSize = 1 << windowBits; + s.maxBackwardDistance = s.maxRingBufferSize - 16; + s.runningState = 2; + } + let fence = calculateFence(s); + let ringBufferMask = s.ringBufferSize - 1; + let ringBuffer = s.ringBuffer; + while (s.runningState !== 10) { + switch (s.runningState) { + case 2: + if (s.metaBlockLength < 0) { + return makeError(s, -10); + } + result = readNextMetablockHeader(s); + if (result < 0) { + return result; + } + fence = calculateFence(s); + ringBufferMask = s.ringBufferSize - 1; + ringBuffer = s.ringBuffer; + continue; + case 3: + result = readMetablockHuffmanCodesAndContextMaps(s); + if (result < 0) { + return result; + } + s.runningState = 4; + continue; + case 4: + if (s.metaBlockLength <= 0) { + s.runningState = 2; + continue; + } + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + if (s.commandBlockLength === 0) { + decodeCommandBlockSwitch(s); + } + s.commandBlockLength--; + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const cmdCode = readSymbol(s.commandTreeGroup, s.commandTreeIdx, s) << 2; + const insertAndCopyExtraBits = CMD_LOOKUP[cmdCode]; + const insertLengthOffset = CMD_LOOKUP[cmdCode + 1]; + const copyLengthOffset = CMD_LOOKUP[cmdCode + 2]; + s.distanceCode = CMD_LOOKUP[cmdCode + 3]; + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const insertLengthExtraBits = insertAndCopyExtraBits & 0xFF; + s.insertLength = insertLengthOffset + (insertLengthExtraBits <= 16 ? readFewBits(s, insertLengthExtraBits) : readManyBits(s, insertLengthExtraBits)); + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const copyLengthExtraBits = insertAndCopyExtraBits >> 8; + s.copyLength = copyLengthOffset + (copyLengthExtraBits <= 16 ? readFewBits(s, copyLengthExtraBits) : readManyBits(s, copyLengthExtraBits)); + s.j = 0; + s.runningState = 7; + continue; + case 7: + if (s.trivialLiteralContext !== 0) { + while (s.j < s.insertLength) { + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + if (s.literalBlockLength === 0) { + decodeLiteralBlockSwitch(s); + } + s.literalBlockLength--; + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + ringBuffer[s.pos] = readSymbol(s.literalTreeGroup, s.literalTreeIdx, s); + s.pos++; + s.j++; + if (s.pos >= fence) { + s.nextRunningState = 7; + s.runningState = 12; + break; + } + } + } else { + let prevByte1 = ringBuffer[s.pos - 1 & ringBufferMask] & 0xFF; + let prevByte2 = ringBuffer[s.pos - 2 & ringBufferMask] & 0xFF; + while (s.j < s.insertLength) { + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + if (s.literalBlockLength === 0) { + decodeLiteralBlockSwitch(s); + } + const literalContext = LOOKUP[s.contextLookupOffset1 + prevByte1] | LOOKUP[s.contextLookupOffset2 + prevByte2]; + const literalTreeIdx = s.contextMap[s.contextMapSlice + literalContext] & 0xFF; + s.literalBlockLength--; + prevByte2 = prevByte1; + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + prevByte1 = readSymbol(s.literalTreeGroup, literalTreeIdx, s); + ringBuffer[s.pos] = prevByte1; + s.pos++; + s.j++; + if (s.pos >= fence) { + s.nextRunningState = 7; + s.runningState = 12; + break; + } + } + } + if (s.runningState !== 7) { + continue; + } + s.metaBlockLength -= s.insertLength; + if (s.metaBlockLength <= 0) { + s.runningState = 4; + continue; + } + let distanceCode = s.distanceCode; + if (distanceCode < 0) { + s.distance = s.rings[s.distRbIdx]; + } else { + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + if (s.distanceBlockLength === 0) { + decodeDistanceBlockSwitch(s); + } + s.distanceBlockLength--; + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + const distTreeIdx = s.distContextMap[s.distContextMapSlice + distanceCode] & 0xFF; + distanceCode = readSymbol(s.distanceTreeGroup, distTreeIdx, s); + if (distanceCode < 16) { + const index = s.distRbIdx + DISTANCE_SHORT_CODE_INDEX_OFFSET[distanceCode] & 0x3; + s.distance = s.rings[index] + DISTANCE_SHORT_CODE_VALUE_OFFSET[distanceCode]; + if (s.distance < 0) { + return makeError(s, -12); + } + } else { + const extraBits = s.distExtraBits[distanceCode]; + let bits; + if (s.bitOffset + extraBits <= 32) { + bits = readFewBits(s, extraBits); + } else { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + bits = extraBits <= 16 ? readFewBits(s, extraBits) : readManyBits(s, extraBits); + } + s.distance = s.distOffset[distanceCode] + (bits << s.distancePostfixBits); + } + } + if (s.maxDistance !== s.maxBackwardDistance && s.pos < s.maxBackwardDistance) { + s.maxDistance = s.pos; + } else { + s.maxDistance = s.maxBackwardDistance; + } + if (s.distance > s.maxDistance) { + s.runningState = 9; + continue; + } + if (distanceCode > 0) { + s.distRbIdx = s.distRbIdx + 1 & 0x3; + s.rings[s.distRbIdx] = s.distance; + } + if (s.copyLength > s.metaBlockLength) { + return makeError(s, -9); + } + s.j = 0; + s.runningState = 8; + continue; + case 8: + let src = s.pos - s.distance & ringBufferMask; + let dst = s.pos; + const copyLength = s.copyLength - s.j; + const srcEnd = src + copyLength; + const dstEnd = dst + copyLength; + if (srcEnd < ringBufferMask && dstEnd < ringBufferMask) { + if (copyLength < 12 || srcEnd > dst && dstEnd > src) { + const numQuads = copyLength + 3 >> 2; + for (let k = 0; k < numQuads; ++k) { + ringBuffer[dst++] = ringBuffer[src++]; + ringBuffer[dst++] = ringBuffer[src++]; + ringBuffer[dst++] = ringBuffer[src++]; + ringBuffer[dst++] = ringBuffer[src++]; + } + } else { + ringBuffer.copyWithin(dst, src, srcEnd); + } + s.j += copyLength; + s.metaBlockLength -= copyLength; + s.pos += copyLength; + } else { + while (s.j < s.copyLength) { + ringBuffer[s.pos] = ringBuffer[s.pos - s.distance & ringBufferMask]; + s.metaBlockLength--; + s.pos++; + s.j++; + if (s.pos >= fence) { + s.nextRunningState = 8; + s.runningState = 12; + break; + } + } + } + if (s.runningState === 8) { + s.runningState = 4; + } + continue; + case 9: + result = doUseDictionary(s, fence); + if (result < 0) { + return result; + } + continue; + case 14: + s.pos += copyFromCompoundDictionary(s, fence); + if (s.pos >= fence) { + s.nextRunningState = 14; + s.runningState = 12; + return 2; + } + s.runningState = 4; + continue; + case 5: + while (s.metaBlockLength > 0) { + if (s.halfOffset > 2030) { + result = readMoreInput(s); + if (result < 0) { + return result; + } + } + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + readFewBits(s, 8); + s.metaBlockLength--; + } + s.runningState = 2; + continue; + case 6: + result = copyUncompressedData(s); + if (result < 0) { + return result; + } + continue; + case 12: + s.ringBufferBytesReady = Math.min(s.pos, s.ringBufferSize); + s.runningState = 13; + continue; + case 13: + result = writeRingBuffer(s); + if (result !== 0) { + return result; + } + if (s.pos >= s.maxBackwardDistance) { + s.maxDistance = s.maxBackwardDistance; + } + if (s.pos >= s.ringBufferSize) { + if (s.pos > s.ringBufferSize) { + ringBuffer.copyWithin(0, s.ringBufferSize, s.pos); + } + s.pos = s.pos & ringBufferMask; + s.ringBufferBytesWritten = 0; + } + s.runningState = s.nextRunningState; + continue; + default: + return makeError(s, -28); + } + } + if (s.runningState !== 10) { + return makeError(s, -29); + } + if (s.metaBlockLength < 0) { + return makeError(s, -10); + } + result = jumpToByteBoundary(s); + if (result !== 0) { + return result; + } + result = checkHealth(s, 1); + if (result !== 0) { + return result; + } + return 1; + } + function Transforms(numTransforms, prefixSuffixLen, prefixSuffixCount) { + this.numTransforms = 0; + this.triplets = new Int32Array(0); + this.prefixSuffixStorage = new Int8Array(0); + this.prefixSuffixHeads = new Int32Array(0); + this.params = new Int16Array(0); + this.numTransforms = numTransforms; + this.triplets = new Int32Array(numTransforms * 3); + this.params = new Int16Array(numTransforms); + this.prefixSuffixStorage = new Int8Array(prefixSuffixLen); + this.prefixSuffixHeads = new Int32Array(prefixSuffixCount + 1); + } + const RFC_TRANSFORMS = new Transforms(121, 167, 50); + function unpackTransforms(prefixSuffix, prefixSuffixHeads, transforms, prefixSuffixSrc, transformsSrc) { + const prefixSuffixBytes = toUtf8Runes(prefixSuffixSrc); + const n = prefixSuffixBytes.length; + let index = 1; + let j = 0; + for (let i = 0; i < n; ++i) { + const c = prefixSuffixBytes[i]; + if (c === 35) { + prefixSuffixHeads[index++] = j; + } else { + prefixSuffix[j++] = c; + } + } + for (let i = 0; i < 363; ++i) { + transforms[i] = transformsSrc.charCodeAt(i) - 32; + } + } + unpackTransforms(RFC_TRANSFORMS.prefixSuffixStorage, RFC_TRANSFORMS.prefixSuffixHeads, RFC_TRANSFORMS.triplets, "# #s #, #e #.# the #.com/#\xC2\xA0# of # and # in # to #\"#\">#\n#]# for # a # that #. # with #'# from # by #. The # on # as # is #ing #\n\t#:#ed #(# at #ly #=\"# of the #. This #,# not #er #al #='#ful #ive #less #est #ize #ous #", " !! ! , *! &! \" ! ) * * - ! # ! #!*! + ,$ ! - % . / # 0 1 . \" 2 3!* 4% ! # / 5 6 7 8 0 1 & $ 9 + : ; < ' != > ?! 4 @ 4 2 & A *# ( B C& ) % ) !*# *-% A +! *. D! %' & E *6 F G% ! *A *% H! D I!+! J!+ K +- *4! A L!*4 M N +6 O!*% +.! K *G P +%( ! G *D +D Q +# *K!*G!+D!+# +G +A +4!+% +K!+4!*D!+K!*K"); + function transformDictionaryWord(dst, dstOffset, src, srcOffset, wordLen, transforms, transformIndex) { + let offset = dstOffset; + const triplets = transforms.triplets; + const prefixSuffixStorage = transforms.prefixSuffixStorage; + const prefixSuffixHeads = transforms.prefixSuffixHeads; + const transformOffset = 3 * transformIndex; + const prefixIdx = triplets[transformOffset]; + const transformType = triplets[transformOffset + 1]; + const suffixIdx = triplets[transformOffset + 2]; + let prefix = prefixSuffixHeads[prefixIdx]; + const prefixEnd = prefixSuffixHeads[prefixIdx + 1]; + let suffix = prefixSuffixHeads[suffixIdx]; + const suffixEnd = prefixSuffixHeads[suffixIdx + 1]; + let omitFirst = transformType - 11; + let omitLast = transformType; + if (omitFirst < 1 || omitFirst > 9) { + omitFirst = 0; + } + if (omitLast < 1 || omitLast > 9) { + omitLast = 0; + } + while (prefix !== prefixEnd) { + dst[offset++] = prefixSuffixStorage[prefix++]; + } + let len = wordLen; + if (omitFirst > len) { + omitFirst = len; + } + let dictOffset = srcOffset + omitFirst; + len -= omitFirst; + len -= omitLast; + let i = len; + while (i > 0) { + dst[offset++] = src[dictOffset++]; + i--; + } + if (transformType === 10 || transformType === 11) { + let uppercaseOffset = offset - len; + if (transformType === 10) { + len = 1; + } + while (len > 0) { + const c0 = dst[uppercaseOffset] & 0xFF; + if (c0 < 0xC0) { + if (c0 >= 97 && c0 <= 122) { + dst[uppercaseOffset] = dst[uppercaseOffset] ^ 32; + } + uppercaseOffset += 1; + len -= 1; + } else if (c0 < 0xE0) { + dst[uppercaseOffset + 1] = dst[uppercaseOffset + 1] ^ 32; + uppercaseOffset += 2; + len -= 2; + } else { + dst[uppercaseOffset + 2] = dst[uppercaseOffset + 2] ^ 5; + uppercaseOffset += 3; + len -= 3; + } + } + } else if (transformType === 21 || transformType === 22) { + let shiftOffset = offset - len; + const param = transforms.params[transformIndex]; + let scalar = (param & 0x7FFF) + (0x1000000 - (param & 0x8000)); + while (len > 0) { + let step = 1; + const c0 = dst[shiftOffset] & 0xFF; + if (c0 < 0x80) { + scalar += c0; + dst[shiftOffset] = scalar & 0x7F; + } else if (c0 < 0xC0) {} else if (c0 < 0xE0) { + if (len >= 2) { + const c1 = dst[shiftOffset + 1]; + scalar += c1 & 0x3F | (c0 & 0x1F) << 6; + dst[shiftOffset] = 0xC0 | scalar >> 6 & 0x1F; + dst[shiftOffset + 1] = c1 & 0xC0 | scalar & 0x3F; + step = 2; + } else { + step = len; + } + } else if (c0 < 0xF0) { + if (len >= 3) { + const c1 = dst[shiftOffset + 1]; + const c2 = dst[shiftOffset + 2]; + scalar += c2 & 0x3F | (c1 & 0x3F) << 6 | (c0 & 0x0F) << 12; + dst[shiftOffset] = 0xE0 | scalar >> 12 & 0x0F; + dst[shiftOffset + 1] = c1 & 0xC0 | scalar >> 6 & 0x3F; + dst[shiftOffset + 2] = c2 & 0xC0 | scalar & 0x3F; + step = 3; + } else { + step = len; + } + } else if (c0 < 0xF8) { + if (len >= 4) { + const c1 = dst[shiftOffset + 1]; + const c2 = dst[shiftOffset + 2]; + const c3 = dst[shiftOffset + 3]; + scalar += c3 & 0x3F | (c2 & 0x3F) << 6 | (c1 & 0x3F) << 12 | (c0 & 0x07) << 18; + dst[shiftOffset] = 0xF0 | scalar >> 18 & 0x07; + dst[shiftOffset + 1] = c1 & 0xC0 | scalar >> 12 & 0x3F; + dst[shiftOffset + 2] = c2 & 0xC0 | scalar >> 6 & 0x3F; + dst[shiftOffset + 3] = c3 & 0xC0 | scalar & 0x3F; + step = 4; + } else { + step = len; + } + } + shiftOffset += step; + len -= step; + if (transformType === 21) { + len = 0; + } + } + } + while (suffix !== suffixEnd) { + dst[offset++] = prefixSuffixStorage[suffix++]; + } + return offset - dstOffset; + } + function getNextKey(key, len) { + let step = 1 << len - 1; + while ((key & step) !== 0) { + step = step >> 1; + } + return (key & step - 1) + step; + } + function replicateValue(table, offset, step, end, item) { + let pos = end; + while (pos > 0) { + pos -= step; + table[offset + pos] = item; + } + } + function nextTableBitSize(count, len, rootBits) { + let bits = len; + let left = 1 << bits - rootBits; + while (bits < 15) { + left -= count[bits]; + if (left <= 0) { + break; + } + bits++; + left = left << 1; + } + return bits - rootBits; + } + function buildHuffmanTable(tableGroup, tableIdx, rootBits, codeLengths, codeLengthsSize) { + const tableOffset = tableGroup[tableIdx]; + const sorted = new Int32Array(codeLengthsSize); + const count = new Int32Array(16); + const offset = new Int32Array(16); + for (let sym = 0; sym < codeLengthsSize; ++sym) { + count[codeLengths[sym]]++; + } + offset[1] = 0; + for (let len = 1; len < 15; ++len) { + offset[len + 1] = offset[len] + count[len]; + } + for (let sym = 0; sym < codeLengthsSize; ++sym) { + if (codeLengths[sym] !== 0) { + sorted[offset[codeLengths[sym]]++] = sym; + } + } + let tableBits = rootBits; + let tableSize = 1 << tableBits; + let totalSize = tableSize; + if (offset[15] === 1) { + for (let k = 0; k < totalSize; ++k) { + tableGroup[tableOffset + k] = sorted[0]; + } + return totalSize; + } + let key = 0; + let symbol = 0; + let step = 1; + for (let len = 1; len <= rootBits; ++len) { + step = step << 1; + while (count[len] > 0) { + replicateValue(tableGroup, tableOffset + key, step, tableSize, len << 16 | sorted[symbol++]); + key = getNextKey(key, len); + count[len]--; + } + } + const mask = totalSize - 1; + let low = -1; + let currentOffset = tableOffset; + step = 1; + for (let len = rootBits + 1; len <= 15; ++len) { + step = step << 1; + while (count[len] > 0) { + if ((key & mask) !== low) { + currentOffset += tableSize; + tableBits = nextTableBitSize(count, len, rootBits); + tableSize = 1 << tableBits; + totalSize += tableSize; + low = key & mask; + tableGroup[tableOffset + low] = tableBits + rootBits << 16 | currentOffset - tableOffset - low; + } + replicateValue(tableGroup, currentOffset + (key >> rootBits), step, tableSize, len - rootBits << 16 | sorted[symbol++]); + key = getNextKey(key, len); + count[len]--; + } + } + return totalSize; + } + function readMoreInput(s) { + if (s.endOfStreamReached !== 0) { + if (halfAvailable(s) >= -2) { + return 0; + } + return makeError(s, -16); + } + const readOffset = s.halfOffset << 1; + let bytesInBuffer = 4096 - readOffset; + s.byteBuffer.copyWithin(0, readOffset, 4096); + s.halfOffset = 0; + while (bytesInBuffer < 4096) { + const spaceLeft = 4096 - bytesInBuffer; + const len = readInput(s, s.byteBuffer, bytesInBuffer, spaceLeft); + if (len < -1) { + return len; + } + if (len <= 0) { + s.endOfStreamReached = 1; + s.tailBytes = bytesInBuffer; + bytesInBuffer += 1; + break; + } + bytesInBuffer += len; + } + bytesToNibbles(s, bytesInBuffer); + return 0; + } + function checkHealth(s, endOfStream) { + if (s.endOfStreamReached === 0) { + return 0; + } + const byteOffset = (s.halfOffset << 1) + (s.bitOffset + 7 >> 3) - 4; + if (byteOffset > s.tailBytes) { + return makeError(s, -13); + } + if (endOfStream !== 0 && byteOffset !== s.tailBytes) { + return makeError(s, -17); + } + return 0; + } + function readFewBits(s, n) { + const v = s.accumulator32 >>> s.bitOffset & (1 << n) - 1; + s.bitOffset += n; + return v; + } + function readManyBits(s, n) { + const low = readFewBits(s, 16); + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + return low | readFewBits(s, n - 16) << 16; + } + function initBitReader(s) { + s.byteBuffer = new Int8Array(4160); + s.accumulator32 = 0; + s.shortBuffer = new Int16Array(2080); + s.bitOffset = 32; + s.halfOffset = 2048; + s.endOfStreamReached = 0; + return prepare(s); + } + function prepare(s) { + if (s.halfOffset > 2030) { + const result = readMoreInput(s); + if (result !== 0) { + return result; + } + } + let health = checkHealth(s, 0); + if (health !== 0) { + return health; + } + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + return 0; + } + function reload(s) { + if (s.bitOffset === 32) { + return prepare(s); + } + return 0; + } + function jumpToByteBoundary(s) { + const padding = 32 - s.bitOffset & 7; + if (padding !== 0) { + const paddingBits = readFewBits(s, padding); + if (paddingBits !== 0) { + return makeError(s, -5); + } + } + return 0; + } + function halfAvailable(s) { + let limit = 2048; + if (s.endOfStreamReached !== 0) { + limit = s.tailBytes + 1 >> 1; + } + return limit - s.halfOffset; + } + function copyRawBytes(s, data, offset, length) { + let pos = offset; + let len = length; + if ((s.bitOffset & 7) !== 0) { + return makeError(s, -30); + } + while (s.bitOffset !== 32 && len !== 0) { + data[pos++] = s.accumulator32 >>> s.bitOffset; + s.bitOffset += 8; + len--; + } + if (len === 0) { + return 0; + } + const copyNibbles = Math.min(halfAvailable(s), len >> 1); + if (copyNibbles > 0) { + const readOffset = s.halfOffset << 1; + const delta = copyNibbles << 1; + data.set(s.byteBuffer.subarray(readOffset, readOffset + delta), pos); + pos += delta; + len -= delta; + s.halfOffset += copyNibbles; + } + if (len === 0) { + return 0; + } + if (halfAvailable(s) > 0) { + if (s.bitOffset >= 16) { + s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16; + s.bitOffset -= 16; + } + while (len !== 0) { + data[pos++] = s.accumulator32 >>> s.bitOffset; + s.bitOffset += 8; + len--; + } + return checkHealth(s, 0); + } + while (len > 0) { + const chunkLen = readInput(s, data, pos, len); + if (chunkLen < -1) { + return chunkLen; + } + if (chunkLen <= 0) { + return makeError(s, -16); + } + pos += chunkLen; + len -= chunkLen; + } + return 0; + } + function bytesToNibbles(s, byteLen) { + const byteBuffer = s.byteBuffer; + const halfLen = byteLen >> 1; + const shortBuffer = s.shortBuffer; + for (let i = 0; i < halfLen; ++i) { + shortBuffer[i] = byteBuffer[i * 2] & 0xFF | (byteBuffer[i * 2 + 1] & 0xFF) << 8; + } + } + const LOOKUP = new Int32Array(2048); + function unpackLookupTable(lookup, utfMap, utfRle) { + for (let i = 0; i < 256; ++i) { + lookup[i] = i & 0x3F; + lookup[512 + i] = i >> 2; + lookup[1792 + i] = 2 + (i >> 6); + } + for (let i = 0; i < 128; ++i) { + lookup[1024 + i] = 4 * (utfMap.charCodeAt(i) - 32); + } + for (let i = 0; i < 64; ++i) { + lookup[1152 + i] = i & 1; + lookup[1216 + i] = 2 + (i & 1); + } + let offset = 1280; + for (let k = 0; k < 19; ++k) { + const value = k & 3; + const rep = utfRle.charCodeAt(k) - 32; + for (let i = 0; i < rep; ++i) { + lookup[offset++] = value; + } + } + for (let i = 0; i < 16; ++i) { + lookup[1792 + i] = 1; + lookup[2032 + i] = 6; + } + lookup[1792] = 0; + lookup[2047] = 7; + for (let i = 0; i < 256; ++i) { + lookup[1536 + i] = lookup[1792 + i] << 3; + } + } + unpackLookupTable(LOOKUP, " !! ! \"#$##%#$&'##(#)#++++++++++((&*'##,---,---,-----,-----,-----&#'###.///.///./////./////./////&#'# ", "A/* ': & : $ \x81 @"); + function State() { + this.ringBuffer = new Int8Array(0); + this.contextModes = new Int8Array(0); + this.contextMap = new Int8Array(0); + this.distContextMap = new Int8Array(0); + this.distExtraBits = new Int8Array(0); + this.output = new Int8Array(0); + this.byteBuffer = new Int8Array(0); + this.shortBuffer = new Int16Array(0); + this.intBuffer = new Int32Array(0); + this.rings = new Int32Array(0); + this.blockTrees = new Int32Array(0); + this.literalTreeGroup = new Int32Array(0); + this.commandTreeGroup = new Int32Array(0); + this.distanceTreeGroup = new Int32Array(0); + this.distOffset = new Int32Array(0); + this.accumulator64 = 0; + this.runningState = 0; + this.nextRunningState = 0; + this.accumulator32 = 0; + this.bitOffset = 0; + this.halfOffset = 0; + this.tailBytes = 0; + this.endOfStreamReached = 0; + this.metaBlockLength = 0; + this.inputEnd = 0; + this.isUncompressed = 0; + this.isMetadata = 0; + this.literalBlockLength = 0; + this.numLiteralBlockTypes = 0; + this.commandBlockLength = 0; + this.numCommandBlockTypes = 0; + this.distanceBlockLength = 0; + this.numDistanceBlockTypes = 0; + this.pos = 0; + this.maxDistance = 0; + this.distRbIdx = 0; + this.trivialLiteralContext = 0; + this.literalTreeIdx = 0; + this.commandTreeIdx = 0; + this.j = 0; + this.insertLength = 0; + this.contextMapSlice = 0; + this.distContextMapSlice = 0; + this.contextLookupOffset1 = 0; + this.contextLookupOffset2 = 0; + this.distanceCode = 0; + this.numDirectDistanceCodes = 0; + this.distancePostfixBits = 0; + this.distance = 0; + this.copyLength = 0; + this.maxBackwardDistance = 0; + this.maxRingBufferSize = 0; + this.ringBufferSize = 0; + this.expectedTotalSize = 0; + this.outputOffset = 0; + this.outputLength = 0; + this.outputUsed = 0; + this.ringBufferBytesWritten = 0; + this.ringBufferBytesReady = 0; + this.isEager = 0; + this.isLargeWindow = 0; + this.cdNumChunks = 0; + this.cdTotalSize = 0; + this.cdBrIndex = 0; + this.cdBrOffset = 0; + this.cdBrLength = 0; + this.cdBrCopied = 0; + this.cdChunks = new Array(0); + this.cdChunkOffsets = new Int32Array(0); + this.cdBlockBits = 0; + this.cdBlockMap = new Int8Array(0); + this.input = new InputStream(new Int8Array(0)); + this.ringBuffer = new Int8Array(0); + this.rings = new Int32Array(10); + this.rings[0] = 16; + this.rings[1] = 15; + this.rings[2] = 11; + this.rings[3] = 4; + } + let data = new Int8Array(0); + const offsets = new Int32Array(32); + const sizeBits = new Int32Array(32); + function setData(newData, newSizeBits) { + const dictionaryOffsets = offsets; + const dictionarySizeBits = sizeBits; + for (let i = 0; i < newSizeBits.length; ++i) { + dictionarySizeBits[i] = newSizeBits[i]; + } + let pos = 0; + for (let i = 0; i < newSizeBits.length; ++i) { + dictionaryOffsets[i] = pos; + const bits = dictionarySizeBits[i]; + if (bits !== 0) { + pos += i << (bits & 31); + } + } + for (let i = newSizeBits.length; i < 32; ++i) { + dictionaryOffsets[i] = pos; + } + data = newData; + } + function unpackDictionaryData(dictionary, data0, data1, skipFlip, sizeBits, sizeBitsData) { + const dict = toUsAsciiBytes(data0 + data1); + const skipFlipRunes = toUtf8Runes(skipFlip); + let offset = 0; + const n = skipFlipRunes.length >> 1; + for (let i = 0; i < n; ++i) { + const skip = skipFlipRunes[2 * i] - 36; + const flip = skipFlipRunes[2 * i + 1] - 36; + for (let j = 0; j < skip; ++j) { + dict[offset] = dict[offset] ^ 3; + offset++; + } + for (let j = 0; j < flip; ++j) { + dict[offset] = dict[offset] ^ 236; + offset++; + } + } + for (let i = 0; i < sizeBitsData.length; ++i) { + sizeBits[i] = sizeBitsData.charCodeAt(i) - 65; + } + dictionary.set(dict); + } + const dictionaryData = new Int8Array(122784); + const dictionarySizeBits = new Int32Array(25); + unpackDictionaryData(dictionaryData, "wjnfgltmojefofewab`h`lgfgbwbpkltlmozpjwf`jwzlsfmivpwojhfeqfftlqhwf{wzfbqlufqalgzolufelqnallhsobzojufojmfkfosklnfpjgfnlqftlqgolmdwkfnujftejmgsbdfgbzpevookfbgwfqnfb`kbqfbeqlnwqvfnbqhbaofvslmkjdkgbwfobmgmftpfufmmf{w`bpfalwkslpwvpfgnbgfkbmgkfqftkbwmbnfOjmhaoldpjyfabpfkfognbhfnbjmvpfq$*#(klogfmgptjwkMftpqfbgtfqfpjdmwbhfkbufdbnfpffm`boosbwktfoosovpnfmvejonsbqwiljmwkjpojpwdllgmffgtbzptfpwilapnjmgboploldlqj`kvpfpobpwwfbnbqnzellghjmdtjoofbpwtbqgafpwejqfSbdfhmltbtbz-smdnlufwkbmolbgdjufpfoemlwfnv`keffgnbmzql`hj`lmlm`follhkjgfgjfgKlnfqvofklpwbib{jmel`ovaobtpofppkboeplnfpv`kylmf233&lmfp`bqfWjnfqb`faovfelvqtffheb`fklsfdbufkbqgolpwtkfmsbqhhfswsbpppkjsqllnKWNOsobmWzsfglmfpbufhffseobdojmhplogejufwllhqbwfwltmivnswkvpgbqh`bqgejofefbqpwbzhjoowkbweboobvwlfufq-`lnwbohpklsulwfgffsnlgfqfpwwvqmalqmabmgefooqlpfvqo+phjmqlof`lnfb`wpbdfpnffwdlog-isdjwfnubqzefowwkfmpfmggqlsUjft`lsz2-3!?,b=pwlsfopfojfpwlvqsb`h-djesbpw`pp!pfwp6s{8-ip<73s{je#+pllmpfbwmlmfwvafyfqlpfmwqffgeb`wjmwldjewkbqn2;s{`bnfkjooalogyllnuljgfbpzqjmdejoosfbhjmjw`lpw0s{8ib`hwbdpajwpqloofgjwhmftmfbq?\"..dqltIPLMgvwzMbnfpbofzlv#olwpsbjmibyy`logfzfpejpkttt-qjphwbapsqfu23s{qjpf16s{Aovfgjmd033/abooelqgfbqmtjogal{-ebjqob`hufqpsbjqivmfwf`kje+\"sj`hfujo'+! tbqnolqgglfpsvoo/333jgfbgqbtkvdfpslwevmgavqmkqfe`foohfzpwj`hklvqolppevfo21s{pvjwgfboQPP!bdfgdqfzDFW!fbpfbjnpdjqobjgp;s{8mbuzdqjgwjsp :::tbqpobgz`bqp*8#~sksolpfmvooubpwtjmgQPP#tfbqqfozaffmpbnfgvhfmbpb`bsftjpkdvoeW109kjwppolwdbwfhj`haovqwkfz26s{$$*8*8!=npjftjmpajqgplqwafwbpffhW2;9lqgpwqffnboo53s{ebqn\x0ElupalzpX3^-$*8!SLPWafbqhjgp*8~~nbqzwfmg+VH*rvbgyk9\n.pjy....sqls$*8\x0EojewW2:9uj`fbmgzgfaw=QPPsllomf`haoltW259gllqfuboW249ofwpebjolqbosloomlub`lopdfmf#\x0Elxplewqlnfwjooqlpp?k0=slvqebgfsjmh?wq=njmj*\x7F\"+njmfyk9\x04abqpkfbq33*8njoh#..=jqlmeqfggjphtfmwpljosvwp,ip,klozW119JPAMW139bgbnpffp?k1=iplm$/#$`lmwW129#QPPollsbpjbnllm?,s=plvoOJMFelqw`bqwW279?k2=;3s{\"..?:s{8W379njhf975Ymj`fjm`kZlqhqj`fyk9\b$**8svqfnbdfsbqbwlmfalmg904Y\\le\\$^*8333/yk9\x0Bwbmhzbqgaltoavpk965YIbub03s{\t\x7F~\t&@0&907YifeeF[SJ`bpkujpbdloepmltyk9\x05rvfq-`pppj`hnfbwnjm-ajmggfookjqfsj`pqfmw905YKWWS.132elwltloeFMG#{al{967YALGZgj`h8\t~\tf{jw906Yubqpafbw$~*8gjfw:::8bmmf~~?,Xj^-Obmdhn.^tjqfwlzpbggppfbobof{8\t\n~f`klmjmf-lqd336*wlmziftppbmgofdpqlle333*#133tjmfdfbqgldpallwdbqz`vwpwzofwfnswjlm-{no`l`hdbmd'+$-63s{Sk-Gnjp`bobmolbmgfphnjofqzbmvmj{gjp`*8~\tgvpw`ojs*-\t\t43s{.133GUGp4^=?wbsfgfnlj((*tbdffvqlskjolswpklofEBRpbpjm.15WobapsfwpVQO#avoh`llh8~\x0E\tKFBGX3^*baaqivbm+2:;ofpkwtjm?,j=plmzdvzpev`hsjsf\x7F.\t\"331*mgltX2^8X^8\tOld#pbow\x0E\t\n\nabmdwqjnabwk*x\x0E\t33s{\t~*8hl9\0effpbg=\x0Ep9,,#X^8wloosovd+*x\tx\x0E\t#-ip$133sgvboalbw-ISD*8\t~rvlw*8\t\t$*8\t\x0E\t~\x0E1327132613251324132;132:13131312131113101317131613151314131;131:130313021301130013071306130513041320132113221323133:133;133413351336133713301331133213332:::2::;2::42::52::62::72::02::12::22::32:;:2:;;2:;42:;52:;62:;72:;02:;12:;22:;32:4:2:4;2:442:452:462:472:402:412:422:432:5:2:5;2:542:552:562:572:502:512:522:532:6:2:6;2:642:652:662:672:602:612:622:632333231720:73333::::`lnln/Mpfpwffpwbsfqlwlglkb`f`bgbb/]lajfmg/Abbp/Aujgb`bpllwqlelqlplollwqb`vbogjilpjgldqbmwjslwfnbgfafbodlrv/Efpwlmbgbwqfpsl`l`bpbabilwlgbpjmlbdvbsvfpvmlpbmwfgj`fovjpfoobnbzlylmbbnlqsjpllaqb`oj`foolgjlpklqb`bpj<[<\\!sbqhpnlvpfNlpw#---?,bnlmdaqbjmalgz#mlmf8abpfg`bqqzgqbewqfefqsbdf\\klnf-nfwfqgfobzgqfbnsqlufiljmw?,wq=gqvdp?\"..#bsqjojgfboboofmf{b`welqwk`lgfpoldj`Ujft#pffnpaobmhslqwp#+133pbufg\\ojmhdlbopdqbmwdqffhklnfpqjmdpqbwfg03s{8tklpfsbqpf+*8!#Aol`hojmv{ilmfpsj{fo$*8!=*8je+.ofewgbujgklqpfEl`vpqbjpfal{fpWqb`hfnfmw?,fn=abq!=-pq`>wltfqbow>!`baofkfmqz17s{8pfwvsjwbozpkbqsnjmlqwbpwftbmwpwkjp-qfpfwtkffodjqop,`pp,233&8`ovappwveeajaofulwfp#2333hlqfb~*8\x0E\tabmgprvfvf>#x~8;3s{8`hjmdx\x0E\t\n\nbkfbg`ol`hjqjpkojhf#qbwjlpwbwpElqn!zbkll*X3^8Balvwejmgp?,k2=gfavdwbphpVQO#>`foop~*+*821s{8sqjnfwfoopwvqmp3{533-isd!psbjmafb`kwb{fpnj`qlbmdfo..=?,djewppwfuf.ojmhalgz-~*8\t\nnlvmw#+2::EBR?,qldfqeqbmh@obpp1;s{8effgp?k2=?p`lwwwfpwp11s{8gqjmh*#\x7F\x7F#oftjppkboo 30:8#elq#olufgtbpwf33s{8ib9\x0Fnpjnlm?elmwqfsoznffwpvmwfq`kfbswjdkwAqbmg*#\">#gqfpp`ojspqllnplmhfznlajonbjm-Mbnf#sobwfevmmzwqffp`ln,!2-isdtnlgfsbqbnPWBQWofew#jggfm/#132*8\t~\telqn-ujqvp`kbjqwqbmptlqpwSbdfpjwjlmsbw`k?\"..\tl.`b`ejqnpwlvqp/333#bpjbmj((*xbglaf$*X3^jg>23alwk8nfmv#-1-nj-smd!hfujm`lb`k@kjogaqv`f1-isdVQO*(-isd\x7Fpvjwfpoj`fkbqqz213!#ptffwwq=\x0E\tmbnf>gjfdlsbdf#ptjpp..=\t\t eee8!=Old-`ln!wqfbwpkffw*#%%#27s{8poffsmwfmwejofgib9\x0Fojg>!`Mbnf!tlqpfpklwp.al{.gfowb\t%ow8afbqp97;Y?gbwb.qvqbo?,b=#psfmgabhfqpklsp>#!!8sks!=`wjlm20s{8aqjbmkfoolpjyf>l>&1E#iljmnbzaf?jnd#jnd!=/#eipjnd!#!*X3^NWlsAWzsf!mftozGbmph`yf`kwqbjohmltp?,k6=ebr!=yk.`m23*8\t.2!*8wzsf>aovfpwqvozgbujp-ip$8=\x0E\t?\"pwffo#zlv#k1=\x0E\telqn#ifpvp233&#nfmv-\x0E\t\n\x0E\ttbofpqjphpvnfmwggjmda.ojhwfb`kdje!#ufdbpgbmphffpwjpkrjspvlnjplaqfgfpgffmwqfwlglpsvfgfb/]lpfpw/Mwjfmfkbpwblwqlpsbqwfglmgfmvfulkb`fqelqnbnjpnlnfilqnvmglbrv/Ag/Abpp/_olbzvgbef`kbwlgbpwbmwlnfmlpgbwlplwqbppjwjlnv`klbklqbovdbqnbzlqfpwlpklqbpwfmfqbmwfpelwlpfpwbpsb/Apmvfubpbovgelqlpnfgjlrvjfmnfpfpslgfq`kjofpfq/Muf`fpgf`jqilp/Efpwbqufmwbdqvslkf`klfoolpwfmdlbnjdl`lpbpmjufodfmwfnjpnbbjqfpivojlwfnbpkb`jbebulqivmjlojaqfsvmwlavfmlbvwlqbaqjoavfmbwf{wlnbqylpbafqojpwbovfdl`/_nlfmfqlivfdlsfq/Vkbafqfpwlzmvm`bnvifqubolqevfqbojaqldvpwbjdvboulwlp`bplpdv/Absvfglplnlpbujplvpwfggfafmml`kfavp`bebowbfvqlppfqjfgj`kl`vqpl`obuf`bpbpof/_msobylobqdllaqbpujpwbbslzlivmwlwqbwbujpwl`qfbq`bnslkfnlp`jm`l`bqdlsjplplqgfmkb`fm/Mqfbgjp`lsfgql`fq`bsvfgbsbsfonfmlq/Vwjo`obqlilqdf`boofslmfqwbqgfmbgjfnbq`bpjdvffoobppjdol`l`kfnlwlpnbgqf`obpfqfpwlmj/]lrvfgbsbpbqabm`lkjilpujbifsbaol/Epwfujfmfqfjmlgfibqelmgl`bmbomlqwfofwqb`bvpbwlnbqnbmlpovmfpbvwlpujoobufmglsfpbqwjslpwfmdbnbq`loofubsbgqfvmjglubnlpylmbpbnalpabmgbnbqjbbavplnv`kbpvajqqjlibujujqdqbgl`kj`bboo/Ailufmgj`kbfpwbmwbofppbojqpvfolsfplpejmfpoobnbavp`l/Epwboofdbmfdqlsobybkvnlqsbdbqivmwbglaofjpobpalopbab/]lkbaobov`kb/mqfbgj`fmivdbqmlwbpuboofboo/M`bqdbglolqbabilfpw/Edvpwlnfmwfnbqjlejqnb`lpwlej`kbsobwbkldbqbqwfpofzfpbrvfonvpflabpfpsl`lpnjwbg`jfol`kj`lnjfgldbmbqpbmwlfwbsbgfafpsobzbqfgfppjfwf`lqwf`lqfbgvgbpgfpflujfilgfpfbbdvbp%rvlw8glnbjm`lnnlmpwbwvpfufmwpnbpwfqpzpwfnb`wjlmabmmfqqfnlufp`qloovsgbwfdolabonfgjvnejowfqmvnafq`kbmdfqfpvowsvaoj`p`qffm`kllpfmlqnbowqbufojppvfpplvq`fwbqdfwpsqjmdnlgvofnlajofptjw`ksklwlpalqgfqqfdjlmjwpfoepl`jbob`wjuf`lovnmqf`lqgelooltwjwof=fjwkfqofmdwkebnjozeqjfmgobzlvwbvwklq`qfbwfqfujftpvnnfqpfqufqsobzfgsobzfqf{sbmgsloj`zelqnbwglvaofsljmwppfqjfpsfqplmojujmdgfpjdmnlmwkpelq`fpvmjrvftfjdkwsflsoffmfqdzmbwvqfpfbq`kejdvqfkbujmd`vpwlnleepfwofwwfqtjmgltpvanjwqfmgfqdqlvspvsolbgkfbowknfwklgujgflpp`klloevwvqfpkbgltgfabwfubovfpLaif`wlwkfqpqjdkwpofbdvf`kqlnfpjnsofmlwj`fpkbqfgfmgjmdpfbplmqfslqwlmojmfprvbqfavwwlmjnbdfpfmbaofnlujmdobwfpwtjmwfqEqbm`fsfqjlgpwqlmdqfsfbwOlmglmgfwbjoelqnfggfnbmgpf`vqfsbppfgwlddofsob`fpgfuj`fpwbwj``jwjfppwqfbnzfooltbwwb`hpwqffweojdkwkjggfmjmel!=lsfmfgvpfevouboofz`bvpfpofbgfqpf`qfwpf`lmggbnbdfpslqwpf{`fswqbwjmdpjdmfgwkjmdpfeef`wejfogppwbwfpleej`fujpvbofgjwlqulovnfQfslqwnvpfvnnlujfpsbqfmwb``fppnlpwoznlwkfq!#jg>!nbqhfwdqlvmg`kbm`fpvqufzafelqfpznalonlnfmwpsff`knlwjlmjmpjgfnbwwfq@fmwfqlaif`wf{jpwpnjggofFvqlsfdqltwkofdb`znbmmfqfmlvdk`bqffqbmptfqlqjdjmslqwbo`ojfmwpfof`wqbmgln`olpfgwlsj`p`lnjmdebwkfqlswjlmpjnsozqbjpfgfp`bsf`klpfm`kvq`kgfejmfqfbplm`lqmfqlvwsvwnfnlqzjeqbnfsloj`fnlgfopMvnafqgvqjmdleefqppwzofphjoofgojpwfg`boofgpjoufqnbqdjmgfofwfafwwfqaqltpfojnjwpDolabopjmdoftjgdfw`fmwfqavgdfwmltqbs`qfgjw`objnpfmdjmfpbefwz`klj`fpsjqjw.pwzofpsqfbgnbhjmdmffgfgqvppjbsofbpff{wfmwP`qjswaqlhfmbooltp`kbqdfgjujgfeb`wlqnfnafq.abpfgwkflqz`lmejdbqlvmgtlqhfgkfosfg@kvq`kjnsb`wpklvogbotbzpoldl!#alwwlnojpw!=*xubq#sqfej{lqbmdfKfbgfq-svpk+`lvsofdbqgfmaqjgdfobvm`kQfujftwbhjmdujpjlmojwwofgbwjmdAvwwlmafbvwzwkfnfpelqdlwPfbq`kbm`klqbonlpwolbgfg@kbmdfqfwvqmpwqjmdqfolbgNlajofjm`lnfpvssozPlvq`flqgfqpujftfg%maps8`lvqpfBalvw#jpobmg?kwno#`llhjfmbnf>!bnbylmnlgfqmbguj`fjm?,b=9#Wkf#gjboldklvpfpAFDJM#Nf{j`lpwbqwp`fmwqfkfjdkwbggjmdJpobmgbppfwpFnsjqfP`kllofeelqwgjqf`wmfbqoznbmvboPfof`w-\t\tLmfiljmfgnfmv!=SkjojsbtbqgpkbmgofjnslqwLeej`fqfdbqgphjoopmbwjlmPslqwpgfdqfftffhoz#+f-d-afkjmggl`wlqolddfgvmjwfg?,a=?,afdjmpsobmwpbppjpwbqwjpwjppvfg033s{\x7F`bmbgbbdfm`zp`kfnfqfnbjmAqbyjopbnsofoldl!=afzlmg.p`bofb``fswpfqufgnbqjmfEllwfq`bnfqb?,k2=\t\\elqn!ofbufppwqfpp!#,=\x0E\t-dje!#lmolbgolbgfqL{elqgpjpwfqpvqujuojpwfmefnbofGfpjdmpjyf>!bssfbowf{w!=ofufopwkbmhpkjdkfqelq`fgbmjnbobmzlmfBeqj`bbdqffgqf`fmwSflsof?aq#,=tlmgfqsqj`fpwvqmfg\x7F\x7F#x~8nbjm!=jmojmfpvmgbztqbs!=ebjofg`fmpvpnjmvwfafb`lmrvlwfp263s{\x7Ffpwbwfqfnlwffnbjo!ojmhfgqjdkw8pjdmboelqnbo2-kwnopjdmvssqjm`feolbw9-smd!#elqvn-B``fppsbsfqpplvmgpf{wfmgKfjdkwpojgfqVWE.;!%bns8#Afelqf-#TjwkpwvgjlltmfqpnbmbdfsqlejwiRvfqzbmmvbosbqbnpalvdkwebnlvpdlldofolmdfqj((*#xjpqbfopbzjmdgf`jgfklnf!=kfbgfqfmpvqfaqbm`ksjf`fpaol`h8pwbwfgwls!=?qb`jmdqfpjyf..%dw8sb`jwzpf{vboavqfbv-isd!#23/333lawbjmwjwofpbnlvmw/#Jm`-`lnfgznfmv!#ozqj`pwlgbz-jmgffg`lvmwz\\oldl-EbnjozollhfgNbqhfwopf#jeSobzfqwvqhfz*8ubq#elqfpwdjujmdfqqlqpGlnbjm~fopfxjmpfqwAold?,ellwfqoldjm-ebpwfqbdfmwp?algz#23s{#3sqbdnbeqjgbzivmjlqgloobqsob`fg`lufqpsovdjm6/333#sbdf!=alpwlm-wfpw+bubwbqwfpwfg\\`lvmwelqvnpp`kfnbjmgf{/ejoofgpkbqfpqfbgfqbofqw+bssfbqPvanjwojmf!=algz!=\t)#WkfWklvdkpffjmdifqpfzMftp?,ufqjezf{sfqwjmivqztjgwk>@llhjfPWBQW#b`qlpp\\jnbdfwkqfbgmbwjufsl`hfwal{!=\tPzpwfn#Gbujg`bm`fqwbaofpsqlufgBsqjo#qfboozgqjufqjwfn!=nlqf!=albqgp`lolqp`bnsvpejqpw#\x7F\x7F#X^8nfgjb-dvjwbqejmjpktjgwk9pkltfgLwkfq#-sks!#bppvnfobzfqptjoplmpwlqfpqfojfeptfgfm@vpwlnfbpjoz#zlvq#Pwqjmd\t\tTkjowbzolq`ofbq9qfplqweqfm`kwklvdk!*#(#!?algz=avzjmdaqbmgpNfnafqmbnf!=lssjmdpf`wlq6s{8!=upsb`fslpwfqnbilq#`leeffnbqwjmnbwvqfkbssfm?,mbu=hbmpbpojmh!=Jnbdfp>ebopftkjof#kpsb`f3%bns8#\t\tJm##sltfqSlophj.`lolqilqgbmAlwwlnPwbqw#.`lvmw1-kwnomftp!=32-isdLmojmf.qjdkwnjoofqpfmjlqJPAM#33/333#dvjgfpubovf*f`wjlmqfsbjq-{no!##qjdkwp-kwno.aol`hqfdF{s9klufqtjwkjmujqdjmsklmfp?,wq=\x0Evpjmd#\t\nubq#=$*8\t\n?,wg=\t?,wq=\tabkbpbaqbpjodbofdlnbdzbqslophjpqsphj4]4C5d\bTA\nzk\x0BBl\bQ\x7F\x0BUm\x05Gx\bSM\nmC\bTA\twQ\nd}\bW@\bTl\bTF\ti@\tcT\x0BBM\x0B|j\x04BV\tqw\tcC\bWI\npa\tfM\n{Z\x05{X\bTF\bVV\bVK\t\x7Fm\x04kF\t[]\bPm\bTv\nsI\x0Bpg\t[I\bQp\x04mx\x0B_W\n^M\npe\x0BQ}\x0BGu\nel\npe\x04Ch\x04BV\bTA\tSo\nzk\x0BGL\x0BxD\nd[\x05Jz\x05MY\bQp\x04li\nfl\npC\x05{B\x05Nt\x0BwT\ti_\bTg\x04QQ\n|p\x0BXN\bQS\x0BxD\x04QC\bWZ\tpD\x0BVS\bTW\x05Nt\x04Yh\nzu\x04Kj\x05N}\twr\tHa\n_D\tj`\x0BQ}\x0BWp\nxZ\x04{c\tji\tBU\nbD\x04a|\tTn\tpV\nZd\nmC\x0BEV\x05{X\tc}\tTo\bWl\bUd\tIQ\tcg\x0Bxs\nXW\twR\x0Bek\tc}\t]y\tJn\nrp\neg\npV\nz\\\x05{W\npl\nz\\\nzU\tPc\t`{\bV@\nc|\bRw\ti_\bVb\nwX\tHv\x04Su\bTF\x0B_W\x0BWs\x0BsI\x05m\x7F\nTT\ndc\tUS\t}f\tiZ\bWz\tc}\x04MD\tBe\tiD\x0B@@\bTl\bPv\t}t\x04Sw\x04M`\x0BnU\tkW\x0Bed\nqo\x0BxY\tA|\bTz\x0By`\x04BR\x04BM\tia\x04XU\nyu\x04n^\tfL\tiI\nXW\tfD\bWz\bW@\tyj\t\x7Fm\tav\tBN\x0Bb\\\tpD\bTf\nY[\tJn\bQy\t[^\x0BWc\x0Byu\x04Dl\x04CJ\x0BWj\x0BHR\t`V\x0BuW\tQy\np@\x0BGu\x05pl\x04Jm\bW[\nLP\nxC\n`m\twQ\x05ui\x05\x7FR\nbI\twQ\tBZ\tWV\x04BR\npg\tcg\x05ti\x04CW\n_y\tRg\bQa\x0BQB\x0BWc\nYb\x05le\ngE\x04Su\nL[\tQ\x7F\tea\tdj\x0B]W\nb~\x04M`\twL\bTV\bVH\nt\x7F\npl\t|b\x05s_\bU|\bTa\x04oQ\x05lv\x04Sk\x04M`\bTv\x0BK}\nfl\tcC\x04oQ\x04BR\tHk\t|d\bQp\tHK\tBZ\x0BHR\bPv\x0BLx\x0BEZ\bT\x7F\bTv\tiD\x05oD\x05MU\x0BwB\x04Su\x05k`\x04St\ntC\tPl\tKg\noi\tjY\x0BxY\x04h}\nzk\bWZ\t\x7Fm\x0Be`\tTB\tfE\nzk\t`z\x04Yh\nV|\tHK\tAJ\tAJ\bUL\tp\\\tql\nYc\x04Kd\nfy\x04Yh\t[I\x0BDg\x04Jm\n]n\nlb\bUd\n{Z\tlu\tfs\x04oQ\bTW\x04Jm\x0BwB\tea\x04Yh\x04BC\tsb\tTn\nzU\n_y\x0BxY\tQ]\ngw\x04mt\tO\\\ntb\bWW\bQy\tmI\tV[\ny\\\naB\x0BRb\twQ\n]Q\x04QJ\bWg\x0BWa\bQj\ntC\bVH\nYm\x0Bxs\bVK\nel\bWI\x0BxY\x04Cq\ntR\x0BHV\bTl\bVw\tay\bQa\bVV\t}t\tdj\nr|\tp\\\twR\n{i\nTT\t[I\ti[\tAJ\x0Bxs\x0B_W\td{\x0BQ}\tcg\tTz\tA|\tCj\x0BLm\x05N}\x05m\x7F\nbK\tdZ\tp\\\t`V\tsV\np@\tiD\twQ\x0BQ}\bTf\x05ka\x04Jm\x0B@@\bV`\tzp\n@N\x04Sw\tiI\tcg\noi\x04Su\bVw\x04lo\x04Cy\tc}\x0Bb\\\tsU\x04BA\bWI\bTf\nxS\tVp\nd|\bTV\x0BbC\tNo\x05Ju\nTC\t|`\n{Z\tD]\bU|\tc}\x05lm\bTl\tBv\tPl\tc}\bQp\t\x7Fm\nLk\tkj\n@N\x04Sb\x04KO\tj_\tp\\\nzU\bTl\bTg\bWI\tcf\x04XO\bWW\ndz\x04li\tBN\nd[\bWO\x04MD\x0BKC\tdj\tI_\bVV\ny\\\x0BLm\x05xl\txB\tkV\x0Bb\\\x0BJW\x0BVS\tVx\x0BxD\td{\x04MD\bTa\t|`\x0BPz\x04R}\x0BWs\x04BM\nsI\x04CN\bTa\x04Jm\npe\ti_\npV\nrh\tRd\tHv\n~A\nxR\x0BWh\x0BWk\nxS\x0BAz\x0BwX\nbI\x04oQ\tfw\nqI\nV|\nun\x05z\x7F\x0Bpg\td\\\x0BoA\x05{D\ti_\x05xB\bT\x7F\t`V\x05qr\tTT\x04g]\x04CA\x0BuR\tVJ\tT`\npw\x0BRb\tI_\nCx\x04Ro\x0BsI\x04Cj\x04Kh\tBv\tWV\x04BB\x05oD\x05{D\nhc\x04Km\x0B^R\tQE\n{I\np@\nc|\x05Gt\tc}\x04Dl\nzU\x05qN\tsV\x05k}\tHh\x0B|j\nqo\x05u|\tQ]\x0Bek\x05\x7FZ\x04M`\x04St\npe\tdj\bVG\x0BeE\t\x7Fm\x0BWc\x04|I\n[W\tfL\bT\x7F\tBZ\x04Su\x0BKa\x04Cq\x05Nt\x04Y[\nqI\bTv\tfM\ti@\t}f\x04B\\\tQy\x0BBl\bWg\x04XD\x05kc\x0Bx[\bVV\tQ]\t\x7Fa\tPy\x0BxD\nfI\t}f\x05oD\tdj\tSG\x05ls\t~D\x04CN\n{Z\t\\v\n_D\nhc\x0Bx_\x04C[\tAJ\nLM\tVx\x04CI\tbj\tc^\tcF\ntC\x04Sx\twr\x04XA\bU\\\t|a\x0BK\\\bTV\bVj\nd|\tfs\x04CX\ntb\bRw\tVx\tAE\tA|\bT\x7F\x05Nt\x0BDg\tVc\bTl\x04d@\npo\t\x7FM\tcF\npe\tiZ\tBo\bSq\nfH\x04l`\bTx\bWf\tHE\x0BF{\tcO\tfD\nlm\x0BfZ\nlm\x0BeU\tdG\x04BH\bTV\tSi\x05MW\nwX\nz\\\t\\c\x04CX\nd}\tl}\bQp\bTV\tF~\bQ\x7F\t`i\ng@\x05nO\bUd\bTl\nL[\twQ\tji\ntC\t|J\nLU\naB\x0BxY\x04Kj\tAJ\x05uN\ti[\npe\x04Sk\x0BDg\x0Bx]\bVb\bVV\nea\tkV\nqI\bTa\x04Sk\nAO\tpD\ntb\nts\nyi\bVg\ti_\x0B_W\nLk\x05Nt\tyj\tfM\x04R\x7F\tiI\bTl\x0BwX\tsV\x0BMl\nyu\tAJ\bVj\x04KO\tWV\x0BA}\x0BW\x7F\nrp\tiD\x0B|o\x05lv\x0BsI\x04BM\td~\tCU\bVb\x04eV\npC\x0BwT\tj`\tc}\x0Bxs\x0Bps\x0Bvh\tWV\x0BGg\x0BAe\x0BVK\x0B]W\trg\x0BWc\x05F`\tBr\x0Bb\\\tdZ\bQp\nqI\x04kF\nLk\x0BAR\bWI\bTg\tbs\tdw\n{L\n_y\tiZ\bTA\tlg\bVV\bTl\tdk\n`k\ta{\ti_\x05{A\x05wj\twN\x0B@@\bTe\ti_\n_D\twL\nAH\x0BiK\x0Bek\n[]\tp_\tyj\bTv\tUS\t[r\n{I\nps\x05Gt\x0BVK\npl\x04S}\x0BWP\t|d\x04MD\x0BHV\bT\x7F\x04R}\x04M`\bTV\bVH\x05lv\x04Ch\bW[\x04Ke\tR{\x0B^R\tab\tBZ\tVA\tB`\nd|\nhs\x04Ke\tBe\x04Oi\tR{\td\\\x05nB\bWZ\tdZ\tVJ\x05Os\t\x7Fm\x04uQ\x0BhZ\x04Q@\x04QQ\nfI\bW[\x04B\\\x04li\nzU\nMd\x04M`\nxS\bVV\n\\}\x0BxD\t\x7Fm\bTp\x04IS\nc|\tkV\x05i~\tV{\x0BhZ\t|b\bWt\n@R\x0BoA\x0BnU\bWI\tea\tB`\tiD\tc}\tTz\x04BR\x0BQB\x05Nj\tCP\t[I\bTv\t`W\x05uN\x0Bpg\x0Bpg\x0BWc\tiT\tbs\twL\tU_\tc\\\t|h\x0BKa\tNr\tfL\nq|\nzu\nz\\\tNr\bUg\t|b\x04m`\bTv\nyd\nrp\bWf\tUX\x04BV\nzk\nd}\twQ\t}f\x04Ce\x0Bed\bTW\bSB\nxU\tcn\bTb\ne\x7F\ta\\\tSG\bU|\npV\nN\\\x04Kn\x0BnU\tAt\tpD\x0B^R\x0BIr\x04b[\tR{\tdE\x0BxD\x0BWK\x0BWA\bQL\bW@\x04Su\bUd\nDM\tPc\x04CA\x04Dl\x04oQ\tHs\x05wi\x04ub\n\x7Fa\bQp\x05Ob\nLP\bTl\x04Y[\x0BK}\tAJ\bQ\x7F\x04n^\x0BsA\bSM\nqM\bWZ\n^W\x0Bz{\x04S|\tfD\bVK\bTv\bPv\x04BB\tCP\x04dF\tid\x0Bxs\x04mx\x0Bws\tcC\ntC\tyc\x05M`\x0BW\x7F\nrh\bQp\x0BxD\x04\\o\nsI\x04_k\nzu\x04kF\tfD\x04Xs\x04XO\tjp\bTv\x04BS\x05{B\tBr\nzQ\nbI\tc{\x04BD\x04BV\x05nO\bTF\tca\x05Jd\tfL\tPV\tI_\nlK\x04`o\twX\npa\tgu\bP}\x05{^\bWf\n{I\tBN\npa\x04Kl\x0Bpg\tcn\tfL\x0Bvh\x04Cq\bTl\x0BnU\bSq\x04Cm\twR\bUJ\npe\nyd\nYg\x04Cy\x0BKW\tfD\nea\x04oQ\tj_\tBv\x04nM\x0BID\bTa\nzA\x05pl\n]n\bTa\tR{\tfr\n_y\bUg\x05{X\x05kk\x0BxD\x04|I\x05xl\nfy\x04Ce\x0BwB\nLk\x0Bd]\noi\n}h\tQ]\npe\bVw\x04Hk\x04OQ\nzk\tAJ\npV\bPv\ny\\\tA{\x04Oi\bSB\x04XA\x0BeE\tjp\nq}\tiD\x05qN\x0B^R\t\x7Fm\tiZ\tBr\bVg\noi\n\\X\tU_\nc|\x0BHV\bTf\tTn\x04\\N\x04\\N\nuB\x05lv\nyu\tTd\bTf\bPL\x0B]W\tdG\nA`\nw^\ngI\npe\tdw\nz\\\x05ia\bWZ\tcF\x04Jm\n{Z\bWO\x04_k\x04Df\x04RR\td\\\bVV\x0Bxs\x04BN\x05ti\x04lm\tTd\t]y\x0BHV\tSo\x0B|j\x04XX\tA|\x0BZ^\x0BGu\bTW\x05M`\x04kF\x0BhZ\x0BVK\tdG\x0BBl\tay\nxU\x05qE\x05nO\bVw\nqI\x04CX\ne\x7F\tPl\bWO\x0BLm\tdL\x05uH\x04Cm\tdT\x04fn\x0BwB\x05ka\x0BnU\n@M\nyT\tHv\t\\}\x04Kh\td~\x04Yh\x05k}\neR\td\\\bWI\t|b\tHK\tiD\bTW\x05MY\npl\bQ_\twr\x0BAx\tHE\bTg\bSq\x05vp\x0Bb\\\bWO\nOl\nsI\nfy\x0BID\t\\c\n{Z\n^~\npe\nAO\tTT\x0Bxv\x04k_\bWO\x0B|j\x0BwB\tQy\ti@\tPl\tHa\tdZ\x05k}\x04ra\tUT\x0BJc\x0Bed\np@\tQN\nd|\tkj\tHk\x04M`\noi\twr\td\\\nlq\no_\nlb\nL[\tac\x04BB\x04BH\x04Cm\npl\tIQ\bVK\x0Bxs\n`e\x0BiK\npa\x04Oi\tUS\bTp\tfD\nPG\x05kk\x04XA\nz\\\neg\x0BWh\twR\x05qN\nqS\tcn\x04lo\nxS\n^W\tBU\nt\x7F\tHE\tp\\\tfF\tfw\bVV\bW@\tak\x0BVK\x05ls\tVJ\bVV\x0BeE\x04\\o\nyX\nYm\x04M`\x05lL\nd|\nzk\tA{\x05sE\twQ\x04XT\nt\x7F\tPl\t]y\x0BwT\x05{p\x04MD\x0Bb\\\tQ]\x04Kj\tJn\nAH\x0BRb\tBU\tHK\t\\c\nfI\x05m\x7F\nqM\n@R\tSo\noi\x04BT\tHv\n_y\x04Kh\tBZ\t]i\bUJ\tV{\x04Sr\nbI\x0BGg\ta_\bTR\nfI\nfl\t[K\tII\x04S|\x0BuW\tiI\bWI\nqI\x0B|j\x04BV\bVg\bWZ\x04kF\x0Bx]\bTA\tab\tfr\ti@\tJd\tJd\x0Bps\nAO\bTa\x05xu\tiD\nzk\t|d\t|`\bW[\tlP\tdG\bVV\x0Bw}\x0BqO\ti[\bQ\x7F\bTz\x0BVF\twN\x05ts\tdw\bTv\neS\ngi\tNr\x05yS\npe\bVV\bSq\n`m\tyj\tBZ\x0BWX\bSB\tc\\\nUR\t[J\tc_\x04nM\bWQ\x0BAx\nMd\tBr\x05ui\x0BxY\bSM\x0BWc\x0B|j\x0Bxs\t}Q\tBO\bPL\bWW\tfM\nAO\tPc\x0BeU\x04e^\bTg\nqI\tac\bPv\tcF\x04oQ\tQ\x7F\x0BhZ\x05ka\nz\\\tiK\tBU\n`k\tCP\x04S|\x04M`\n{I\tS{\x04_O\tBZ\x04Zi\x04Sk\tps\tp\\\nYu\n]s\nxC\bWt\nbD\tkV\x0BGu\x05yS\nqA\t[r\neK\x04M`\tdZ\x05lL\bUg\bTl\nbD\tUS\x0Bb\\\tpV\ncc\x04S\\\tct\t`z\bPL\x0BWs\nA`\neg\bSq\x05uE\x04CR\x0BDg\t`W\x0Bz{\x0BWc\x04Sk\x04Sk\tbW\bUg\tea\nxZ\tiI\tUX\tVJ\nqn\tS{\x0BRb\bTQ\npl\x05Gt\x0BuW\x05uj\npF\nqI\tfL\t[I\tia\x04XO\nyu\x0BDg\x0Bed\tq{\x04VG\bQ\x7F\x05ka\tVj\tkV\txB\nd|\np@\tQN\tPc\tps\x04]j\tkV\toU\bTp\nzU\x05nB\x0BB]\ta{\bV@\n]n\x04m`\tcz\tR{\x04m`\bQa\x0BwT\bSM\x05MY\x05qN\tdj\x05~s\x0BQ}\x05MY\x0BMB\tBv\twR\bRg\x0BQ}\tql\x0BKC\nrm\x05xu\x04CC\x0BwB\x0Bvh\tBq\x04Xq\npV\ti_\x05Ob\x05uE\nbd\nqo\x0B{i\nC~\tBL\x0BeE\x05uH\bVj\x04Ey\x04Gz\x0BzR\x0B{i\tcf\n{Z\n]n\x04XA\x0BGu\x0BnU\thS\x0BGI\nCc\tHE\bTA\tHB\x04BH\x04Cj\nCc\bTF\tHE\nXI\tA{\bQ\x7F\tc\\\x0BmO\x0BWX\nfH\np@\x05MY\bTF\nlK\tBt\nzU\tTT\x04Km\x0BwT\npV\ndt\x0ByI\tVx\tQ\x7F\tRg\tTd\nzU\bRS\nLM\twA\x04nM\tTn\ndS\t]g\nLc\x0BwB\t}t\t[I\tCP\x04kX\x0BFm\x0BhZ\x05m\x7F\ti[\np@\x0BQ}\x0BW\x7F\t|d\nMO\nMd\tf_\tfD\tcJ\tHz\x0BRb\tio\tPy\x04Y[\nxU\tct\x0B@@\tww\bPv\x04BM\x04FF\ntb\x05v|\x0BKm\tBq\tBq\x04Kh\x04`o\nZd\x04XU\ti]\t|`\tSt\x04B\\\bQ\x7F\x0B_W\tTJ\nqI\t|a\tA{\x0BuP\x04MD\tPl\nxR\tfL\x0Bws\tc{\td\\\bV`\neg\tHK\x05kc\nd|\bVV\ny\\\x05kc\ti]\bVG\t`V\tss\tI_\tAE\tbs\tdu\nel\tpD\x0BW\x7F\nqs\x05lv\bSM\x04Zi\x0BVK\x05ia\x0BQB\tQ\x7F\n{Z\bPt\x0BKl\nlK\nhs\ndS\bVK\x05mf\nd^\tkV\tcO\nc|\bVH\t\\]\bTv\bSq\tmI\x0BDg\tVJ\tcn\ny\\\bVg\bTv\nyX\bTF\t]]\bTp\noi\nhs\x0BeU\nBf\tdj\x05Mr\n|p\t\\g\t]r\bVb\x05{D\nd[\x04XN\tfM\tO\\\x05s_\tcf\tiZ\x04XN\x0BWc\tqv\n`m\tU^\x05oD\nd|\x0BGg\tdE\x0Bwf\x04lo\x04u}\nd|\x05oQ\t`i\x04Oi\x0BxD\ndZ\nCx\x04Yw\nzk\ntb\ngw\tyj\tB`\nyX\x0Bps\ntC\x0BpP\x0Bqw\bPu\bPX\tDm\npw\x05Nj\tss\taG\x0Bxs\bPt\noL\x04Gz\tOk\ti@\ti]\x04eC\tIQ\tii\tdj\x0B@J\t|d\x05uh\bWZ\x0BeU\x0BnU\bTa\tcC\x04g]\nzk\x04Yh\bVK\nLU\np@\ntb\ntR\tCj\x0BNP\ti@\bP{\n\\}\n{c\nwX\tfL\bVG\tc{\t|`\tAJ\t|C\tfD\x05ln\t|d\tbs\nqI\x05{B\x0BAx\np@\nzk\x0BRb\x05Os\x0BWS\x04e^\x0BD_\tBv\x0BWd\bVb\x0Bxs\x0BeE\bRw\n]n\n|p\x0Bg|\tfw\x05kc\bTI\x05ka\n\\T\x04Sp\tju\x0Bps\npe\x05u|\x0BGr\bVe\tCU\x04]M\x04XU\x0BxD\bTa\tIQ\x0BWq\tCU\tam\tdj\bSo\x04Sw\x0BnU\x04Ch\tQ]\x05s_\bPt\tfS\bTa\t\\}\n@O\x04Yc\tUZ\bTx\npe\x0BnU\nzU\t|}\tiD\nz\\\bSM\x0BxD\x04BR\nzQ\tQN\x04]M\x04Yh\nLP\x0BFm\x0BLX\x05vc\x0Bql\x05ka\tHK\bVb\ntC\nCy\bTv\nuV\x04oQ\t`z\t[I\tB`\x0BRb\tyj\tsb\x0BWs\bTl\tkV\x0Bed\ne\x7F\x05lL\x0BxN\t\x7Fm\nJn\tjY\x0BxD\bVb\bSq\x0Byu\twL\x0BXL\bTA\tpg\tAt\tnD\x04XX\twR\npl\nhw\x05yS\nps\tcO\bW[\x0B|j\x04XN\tsV\tp\\\tBe\nb~\nAJ\n]e\x05k`\x05qN\tdw\tWV\tHE\x0BEV\x05Jz\tid\tB`\tzh\x05E]\tfD\bTg\x05qN\bTa\tja\x04Cv\bSM\nhc\bUe\x05t_\tie\x04g]\twQ\nPn\bVB\tjw\bVg\x0BbE\tBZ\x0BRH\bP{\tjp\n\\}\ta_\tcC\t|a\x0BD]\tBZ\ti[\tfD\x0BxW\no_\td\\\n_D\ntb\t\\c\tAJ\nlK\x04oQ\x04lo\x0BLx\x0BM@\bWZ\x04Kn\x0Bpg\nTi\nIv\n|r\x0B@}\x05Jz\x05Lm\x05Wh\x05k}\x05ln\x0BxD\n]s\x04gc\x0Bps\tBr\bTW\x0BBM\x05tZ\nBY\x04DW\tjf\x0BSW\x04C}\nqo\tdE\tmv\tIQ\bPP\bUb\x05lv\x04BC\nzQ\t[I\x0Bgl\nig\bUs\x04BT\x0BbC\bSq\tsU\tiW\nJn\tSY\tHK\trg\npV\x0BID\x0B|j\x04KO\t`S\t|a`vbmglfmujbqnbgqjgavp`bqjmj`jlwjfnslslqrvf`vfmwbfpwbglsvfgfmivfdlp`lmwqbfpw/Mmmlnaqfwjfmfmsfqejonbmfqbbnjdlp`jvgbg`fmwqlbvmrvfsvfgfpgfmwqlsqjnfqsqf`jlpfd/Vmavfmlpuloufqsvmwlppfnbmbkba/Abbdlpwlmvfulpvmjglp`bqolpfrvjslmj/]lpnv`klpbodvmb`lqqfljnbdfmsbqwjqbqqjabnbq/Abklnaqffnsoflufqgbg`bnajlnv`kbpevfqlmsbpbglo/Amfbsbqf`fmvfubp`vqplpfpwbabrvjfqlojaqlp`vbmwlb``fplnjdvfoubqjlp`vbwqlwjfmfpdqvslppfq/Mmfvqlsbnfgjlpeqfmwfb`fq`bgfn/Mplefqwb`l`kfpnlgfoljwbojbofwqbpbod/Vm`lnsqb`vbofpf{jpwf`vfqslpjfmglsqfmpboofdbqujbifpgjmfqlnvq`jbslgq/Msvfpwlgjbqjlsvfaolrvjfqfnbmvfosqlsjl`qjpjp`jfqwlpfdvqlnvfqwfevfmwf`fqqbqdqbmgffef`wlsbqwfpnfgjgbsqlsjbleqf`fwjfqqbf.nbjoubqjbpelqnbpevwvqllaifwlpfdvjqqjfpdlmlqnbpnjpnlp/Vmj`l`bnjmlpjwjlpqby/_mgfajglsqvfabwlofglwfm/Abifp/Vpfpsfql`l`jmblqjdfmwjfmgb`jfmwl`/Mgjykbaobqpfq/Abobwjmbevfqybfpwjoldvfqqbfmwqbq/E{jwlo/_sfybdfmgbu/Agflfujwbqsbdjmbnfwqlpibujfqsbgqfpe/M`jo`bafyb/Mqfbppbojgbfmu/Alibs/_mbavplpajfmfpwf{wlpoofubqsvfgbmevfqwf`ln/Vm`obpfpkvnbmlwfmjglajoablvmjgbgfpw/Mpfgjwbq`qfbgl2%bns8Kjpwlqz#>#mft#@fmwqbovsgbwfgPsf`jboMfwtlqhqfrvjqf`lnnfmwtbqmjmd@loofdfwlloabqqfnbjmpaf`bvpffof`wfgGfvwp`kejmbm`ftlqhfqprvj`hozafwtffmf{b`wozpfwwjmdgjpfbpfPl`jfwztfbslmpf{kjajw%ow8\"..@lmwqlo`obppfp`lufqfglvwojmfbwwb`hpgfuj`fp+tjmgltsvqslpfwjwof>!Nlajof#hjoojmdpkltjmdJwbojbmgqlssfgkfbujozfeef`wp.2$^*8\t`lmejqn@vqqfmwbgubm`fpkbqjmdlsfmjmdgqbtjmdajoojlmlqgfqfgDfqnbmzqfobwfg?,elqn=jm`ovgftkfwkfqgfejmfgP`jfm`f`bwboldBqwj`ofavwwlmpobqdfpwvmjelqnilvqmfzpjgfabq@kj`bdlklojgbzDfmfqbosbppbdf/%rvlw8bmjnbwfeffojmdbqqjufgsbppjmdmbwvqboqlvdkoz-\t\tWkf#avw#mlwgfmpjwzAqjwbjm@kjmfpfob`h#lewqjavwfJqfobmg!#gbwb.eb`wlqpqf`fjufwkbw#jpOjaqbqzkvpabmgjm#eb`wbeebjqp@kbqofpqbgj`boaqlvdkwejmgjmdobmgjmd9obmd>!qfwvqm#ofbgfqpsobmmfgsqfnjvnsb`hbdfBnfqj`bFgjwjlm^%rvlw8Nfppbdfmffg#wlubovf>!`lnsof{ollhjmdpwbwjlmafojfufpnboofq.nlajofqf`lqgptbmw#wlhjmg#leEjqfel{zlv#bqfpjnjobqpwvgjfgnb{jnvnkfbgjmdqbsjgoz`ojnbwfhjmdglnfnfqdfgbnlvmwpelvmgfgsjlmffqelqnvobgzmbpwzklt#wl#Pvsslqwqfufmvff`lmlnzQfpvowpaqlwkfqplogjfqobqdfoz`boojmd-%rvlw8B``lvmwFgtbqg#pfdnfmwQlafqw#feelqwpSb`jej`ofbqmfgvs#tjwkkfjdkw9tf#kbufBmdfofpmbwjlmp\\pfbq`kbssojfgb`rvjqfnbppjufdqbmwfg9#ebopfwqfbwfgajddfpwafmfejwgqjujmdPwvgjfpnjmjnvnsfqkbspnlqmjmdpfoojmdjp#vpfgqfufqpfubqjbmw#qlof>!njppjmdb`kjfufsqlnlwfpwvgfmwplnflmff{wqfnfqfpwlqfalwwln9fuloufgboo#wkfpjwfnbsfmdojpktbz#wl##Bvdvpwpznalop@lnsbmznbwwfqpnvpj`bobdbjmpwpfqujmd~*+*8\x0E\tsbznfmwwqlvaof`lm`fsw`lnsbqfsbqfmwpsobzfqpqfdjlmpnlmjwlq#$$Wkf#tjmmjmdf{solqfbgbswfgDboofqzsqlgv`fbajojwzfmkbm`f`bqffqp*-#Wkf#`loof`wPfbq`k#bm`jfmwf{jpwfgellwfq#kbmgofqsqjmwfg`lmplofFbpwfqmf{slqwptjmgltp@kbmmfojoofdbomfvwqbopvddfpw\\kfbgfqpjdmjmd-kwno!=pfwwofgtfpwfqm`bvpjmd.tfahjw`objnfgIvpwj`f`kbswfquj`wjnpWklnbp#nlyjoobsqlnjpfsbqwjfpfgjwjlmlvwpjgf9ebopf/kvmgqfgLoznsj`\\avwwlmbvwklqpqfb`kfg`kqlmj`gfnbmgppf`lmgpsqlwf`wbglswfgsqfsbqfmfjwkfqdqfbwozdqfbwfqlufqboojnsqluf`lnnbmgpsf`jbopfbq`k-tlqpkjsevmgjmdwklvdkwkjdkfpwjmpwfbgvwjojwzrvbqwfq@vowvqfwfpwjmd`ofbqozf{slpfgAqltpfqojafqbo~#`bw`kSqlif`wf{bnsofkjgf+*8EolqjgbbmptfqpbooltfgFnsfqlqgfefmpfpfqjlvpeqffglnPfufqbo.avwwlmEvqwkfqlvw#le#\">#mvoowqbjmfgGfmnbqhuljg+3*,boo-ipsqfufmwQfrvfpwPwfskfm\t\tTkfm#lapfquf?,k1=\x0E\tNlgfqm#sqlujgf!#bow>!alqgfqp-\t\tElq#\t\tNbmz#bqwjpwpsltfqfgsfqelqnej`wjlmwzsf#lenfgj`bowj`hfwplsslpfg@lvm`jotjwmfppivpwj`fDflqdf#Afodjvn---?,b=wtjwwfqmlwbaoztbjwjmdtbqebqf#Lwkfq#qbmhjmdskqbpfpnfmwjlmpvqujufp`klobq?,s=\x0E\t#@lvmwqzjdmlqfgolpp#leivpw#bpDflqdjbpwqbmdf?kfbg=?pwlssfg2$^*8\x0E\tjpobmgpmlwbaofalqgfq9ojpw#le`bqqjfg233/333?,k0=\t#pfufqboaf`lnfppfof`w#tfggjmd33-kwnonlmbq`klee#wkfwfb`kfqkjdkoz#ajloldzojef#lelq#fufmqjpf#le%qbrvl8sovplmfkvmwjmd+wklvdkGlvdobpiljmjmd`jq`ofpElq#wkfBm`jfmwUjfwmbnufkj`ofpv`k#bp`qzpwboubovf#>Tjmgltpfmilzfgb#pnboobppvnfg?b#jg>!elqfjdm#Boo#qjklt#wkfGjpsobzqfwjqfgkltfufqkjggfm8abwwofppffhjmd`bajmfwtbp#mlwollh#bw`lmgv`wdfw#wkfIbmvbqzkbssfmpwvqmjmdb9klufqLmojmf#Eqfm`k#ob`hjmdwzsj`bof{wqb`wfmfnjfpfufm#jedfmfqbwgf`jgfgbqf#mlw,pfbq`kafojfep.jnbdf9ol`bwfgpwbwj`-oldjm!=`lmufqwujlofmwfmwfqfgejqpw!=`jq`vjwEjmobmg`kfnjpwpkf#tbp23s{8!=bp#pv`kgjujgfg?,psbm=tjoo#afojmf#leb#dqfbwnzpwfqz,jmgf{-eboojmdgvf#wl#qbjotbz`loofdfnlmpwfqgfp`fmwjw#tjwkmv`ofbqIftjpk#sqlwfpwAqjwjpkeoltfqpsqfgj`wqfelqnpavwwlm#tkl#tbpof`wvqfjmpwbmwpvj`jgfdfmfqj`sfqjlgpnbqhfwpPl`jbo#ejpkjmd`lnajmfdqbskj`tjmmfqp?aq#,=?az#wkf#MbwvqboSqjub`z`llhjfplvw`lnfqfploufPtfgjpkaqjfeozSfqpjbmpl#nv`k@fmwvqzgfsj`wp`lovnmpklvpjmdp`qjswpmf{w#wlafbqjmdnbssjmdqfujpfgiRvfqz+.tjgwk9wjwof!=wllowjsPf`wjlmgfpjdmpWvqhjpkzlvmdfq-nbw`k+~*+*8\t\tavqmjmdlsfqbwfgfdqffpplvq`f>Qj`kbqg`olpfozsobpwj`fmwqjfp?,wq=\x0E\t`lolq9 vo#jg>!slppfppqloojmdskzpj`pebjojmdf{f`vwf`lmwfpwojmh#wlGfebvow?aq#,=\t9#wqvf/`kbqwfqwlvqjpn`obppj`sql`ffgf{sobjm?,k2=\x0E\tlmojmf-<{no#ufkfosjmdgjbnlmgvpf#wkfbjqojmffmg#..=*-bwwq+qfbgfqpklpwjmd eeeeeeqfbojyfUjm`fmwpjdmbop#pq`>!,Sqlgv`wgfpsjwfgjufqpfwfoojmdSvaoj`#kfog#jmIlpfsk#wkfbwqfbeef`wp?pwzof=b#obqdfglfpm$wobwfq/#Fofnfmwebuj`lm`qfbwlqKvmdbqzBjqslqwpff#wkfpl#wkbwNj`kbfoPzpwfnpSqldqbnp/#bmg##tjgwk>f%rvlw8wqbgjmdofew!=\tsfqplmpDlogfm#Beebjqpdqbnnbqelqnjmdgfpwqlzjgfb#le`bpf#lelogfpw#wkjp#jp-pq`#>#`bqwllmqfdjpwq@lnnlmpNvpojnpTkbw#jpjm#nbmznbqhjmdqfufbopJmgffg/frvbooz,pklt\\blvwgllqfp`bsf+Bvpwqjbdfmfwj`pzpwfn/Jm#wkf#pjwwjmdKf#boplJpobmgpB`bgfnz\t\n\n?\"..Gbmjfo#ajmgjmdaol`h!=jnslpfgvwjojyfBaqbkbn+f{`fswxtjgwk9svwwjmd*-kwno+\x7F\x7F#X^8\tGBWBX#)hjw`kfmnlvmwfgb`wvbo#gjbof`wnbjmoz#\\aobmh$jmpwboof{sfqwpje+wzsfJw#bopl%`lsz8#!=Wfqnpalqm#jmLswjlmpfbpwfqmwbohjmd`lm`fqmdbjmfg#lmdljmdivpwjez`qjwj`peb`wlqzjwp#ltmbppbvowjmujwfgobpwjmdkjp#ltmkqfe>!,!#qfo>!gfufols`lm`fqwgjbdqbngloobqp`ovpwfqsksbo`lklo*8~*+*8vpjmd#b=?psbm=ufppfopqfujuboBggqfppbnbwfvqbmgqljgboofdfgjoomfpptbohjmd`fmwfqprvbojeznbw`kfpvmjejfgf{wjm`wGfefmpfgjfg#jm\t\n?\"..#`vpwlnpojmhjmdOjwwof#Allh#lefufmjmdnjm-iptfbqjmdBoo#Qjd8\t~*+*8qbjpjmd#Bopl/#`qv`jbobalvw!=gf`obqf..=\t?p`ejqfel{bp#nv`kbssojfpjmgf{/#p/#avw#wzsf#>#\t\x0E\t?\"..wltbqgpQf`lqgpSqjubwfElqfjdmSqfnjfq`klj`fpUjqwvboqfwvqmp@lnnfmwSltfqfgjmojmf8slufqwz`kbnafqOjujmd#ulovnfpBmwklmzoldjm!#QfobwfgF`lmlnzqfb`kfp`vwwjmddqbujwzojef#jm@kbswfq.pkbgltMlwbaof?,wg=\x0E\t#qfwvqmpwbgjvntjgdfwpubqzjmdwqbufopkfog#aztkl#bqftlqh#jmeb`vowzbmdvobqtkl#kbgbjqslqwwltm#le\t\tPlnf#$`oj`h$`kbqdfphfztlqgjw#tjoo`jwz#le+wkjp*8Bmgqft#vmjrvf#`kf`hfglq#nlqf033s{8#qfwvqm8qpjlm>!sovdjmptjwkjm#kfqpfoePwbwjlmEfgfqboufmwvqfsvaojpkpfmw#wlwfmpjlmb`wqfpp`lnf#wlejmdfqpGvhf#lesflsof/f{soljwtkbw#jpkbqnlmzb#nbilq!9!kwwsjm#kjp#nfmv!=\tnlmwkozleej`fq`lvm`jodbjmjmdfufm#jmPvnnbqzgbwf#leolzbowzejwmfppbmg#tbpfnsfqlqpvsqfnfPf`lmg#kfbqjmdQvppjbmolmdfpwBoafqwbobwfqbopfw#le#pnboo!=-bssfmggl#tjwkefgfqboabmh#leafmfbwkGfpsjwf@bsjwbodqlvmgp*/#bmg#sfq`fmwjw#eqln`olpjmd`lmwbjmJmpwfbgejewffmbp#tfoo-zbkll-qfpslmgejdkwfqlap`vqfqfeof`wlqdbmj`>#Nbwk-fgjwjmdlmojmf#sbggjmdb#tkloflmfqqlqzfbq#lefmg#le#abqqjfqtkfm#jwkfbgfq#klnf#leqfpvnfgqfmbnfgpwqlmd=kfbwjmdqfwbjmp`olvgeqtbz#le#Nbq`k#2hmltjmdjm#sbqwAfwtffmofpplmp`olpfpwujqwvboojmhp!=`qlppfgFMG#..=ebnlvp#btbqgfgOj`fmpfKfbowk#ebjqoz#tfbowkznjmjnboBeqj`bm`lnsfwfobafo!=pjmdjmdebqnfqpAqbpjo*gjp`vppqfsob`fDqfdlqzelmw#`lsvqpvfgbssfbqpnbhf#vsqlvmgfgalwk#leaol`hfgpbt#wkfleej`fp`lolvqpje+gl`vtkfm#kffmelq`fsvpk+evBvdvpw#VWE.;!=Ebmwbpzjm#nlpwjmivqfgVpvboozebqnjmd`olpvqflaif`w#gfefm`fvpf#le#Nfgj`bo?algz=\tfujgfmwaf#vpfghfz@lgfpj{wffmJpobnj` 333333fmwjqf#tjgfoz#b`wjuf#+wzsflelmf#`bm`lolq#>psfbhfqf{wfmgpSkzpj`pwfqqbjm?walgz=evmfqboujftjmdnjggof#`qj`hfwsqlskfwpkjewfggl`wlqpQvppfoo#wbqdfw`lnsb`wbodfaqbpl`jbo.avoh#lenbm#bmg?,wg=\t#kf#ofew*-ubo+*ebopf*8oldj`boabmhjmdklnf#wlmbnjmd#Bqjylmb`qfgjwp*8\t~*8\telvmgfqjm#wvqm@loojmpafelqf#Avw#wkf`kbqdfgWjwof!=@bswbjmpsfoofgdlggfppWbd#..=Bggjmd9avw#tbpQf`fmw#sbwjfmwab`h#jm>ebopf%Ojm`lomtf#hmlt@lvmwfqIvgbjpnp`qjsw#bowfqfg$^*8\t##kbp#wkfvm`ofbqFufmw$/alwk#jmmlw#boo\t\t?\"..#sob`jmdkbqg#wl#`fmwfqplqw#le`ojfmwppwqffwpAfqmbqgbppfqwpwfmg#wlebmwbpzgltm#jmkbqalvqEqffglniftfoqz,balvw--pfbq`kofdfmgpjp#nbgfnlgfqm#lmoz#lmlmoz#wljnbdf!#ojmfbq#sbjmwfqbmg#mlwqbqfoz#b`qlmzngfojufqpklqwfq33%bns8bp#nbmztjgwk>!,)#?\"X@wjwof#>le#wkf#oltfpw#sj`hfg#fp`bsfgvpfp#lesflsofp#Svaoj`Nbwwkftwb`wj`pgbnbdfgtbz#elqobtp#lefbpz#wl#tjmgltpwqlmd##pjnsof~`bw`k+pfufmwkjmelal{tfmw#wlsbjmwfg`jwjyfmJ#glm$wqfwqfbw-#Plnf#tt-!*8\talnajmdnbjowl9nbgf#jm-#Nbmz#`bqqjfp\x7F\x7Fx~8tjtlqh#lepzmlmzngfefbwpebulqfglswj`bosbdfWqbvmofpp#pfmgjmdofew!=?`lnP`lqBoo#wkfiRvfqz-wlvqjpw@obppj`ebopf!#Tjokfonpvavqapdfmvjmfajpklsp-psojw+dolabo#elooltpalgz#lemlnjmbo@lmwb`wpf`vobqofew#wl`kjfeoz.kjggfm.abmmfq?,oj=\t\t-#Tkfm#jm#alwkgjpnjppF{solqfbotbzp#ujb#wkfpsb/]lotfoebqfqvojmd#bqqbmdf`bswbjmkjp#plmqvof#lekf#wllhjwpfoe/>3%bns8+`boofgpbnsofpwl#nbhf`ln,sbdNbqwjm#Hfmmfgzb``fswpevoo#lekbmgofgAfpjgfp,,..=?,baof#wlwbqdfwpfppfm`fkjn#wl#jwp#az#`lnnlm-njmfqbowl#wbhftbzp#wlp-lqd,obgujpfgsfmbowzpjnsof9je#wkfzOfwwfqpb#pklqwKfqafqwpwqjhfp#dqlvsp-ofmdwkeojdkwplufqobspoltoz#ofppfq#pl`jbo#?,s=\t\n\njw#jmwlqbmhfg#qbwf#levo=\x0E\t##bwwfnswsbjq#lenbhf#jwHlmwbhwBmwlmjlkbujmd#qbwjmdp#b`wjufpwqfbnpwqbssfg!*-`pp+klpwjofofbg#wlojwwof#dqlvsp/Sj`wvqf..=\x0E\t\x0E\t#qltp>!#laif`wjmufqpf?ellwfq@vpwlnU=?_,p`qploujmd@kbnafqpobufqztlvmgfgtkfqfbp\">#$vmgelq#boosbqwoz#.qjdkw9Bqbajbmab`hfg#`fmwvqzvmjw#lenlajof.Fvqlsf/jp#klnfqjph#legfpjqfg@ojmwlm`lpw#lebdf#le#af`lnf#mlmf#les%rvlw8Njggof#fbg$*X3@qjwj`ppwvgjlp=%`lsz8dqlvs!=bppfnaonbhjmd#sqfppfgtjgdfw-sp9!#<#qfavjowaz#plnfElqnfq#fgjwlqpgfobzfg@bmlmj`kbg#wkfsvpkjmd`obpp>!avw#bqfsbqwjboAbazolmalwwln#`bqqjfq@lnnbmgjwp#vpfBp#tjwk`lvqpfpb#wkjqggfmlwfpbopl#jmKlvpwlm13s{8!=b``vpfgglvaof#dlbo#leEbnlvp#*-ajmg+sqjfpwp#Lmojmfjm#Ivozpw#(#!d`lmpvowgf`jnbokfosevoqfujufgjp#ufqzq$($jswolpjmd#efnbofpjp#boplpwqjmdpgbzp#lebqqjuboevwvqf#?laif`welq`jmdPwqjmd+!#,=\t\n\nkfqf#jpfm`lgfg-##Wkf#aboollmglmf#az,`lnnlmad`lolqobt#le#Jmgjbmbbuljgfgavw#wkf1s{#0s{irvfqz-bewfq#bsloj`z-nfm#bmgellwfq.>#wqvf8elq#vpfp`qffm-Jmgjbm#jnbdf#>ebnjoz/kwws9,,#%maps8gqjufqpfwfqmbopbnf#bpmlwj`fgujftfqp~*+*8\t#jp#nlqfpfbplmpelqnfq#wkf#mftjp#ivpw`lmpfmw#Pfbq`ktbp#wkftkz#wkfpkjssfgaq=?aq=tjgwk9#kfjdkw>nbgf#le`vjpjmfjp#wkbwb#ufqz#Bgnjqbo#ej{fg8mlqnbo#NjppjlmSqfpp/#lmwbqjl`kbqpfwwqz#wl#jmubgfg>!wqvf!psb`jmdjp#nlpwb#nlqf#wlwboozeboo#le~*8\x0E\t##jnnfmpfwjnf#jmpfw#lvwpbwjpezwl#ejmggltm#wlolw#le#Sobzfqpjm#Ivmfrvbmwvnmlw#wkfwjnf#wlgjpwbmwEjmmjpkpq`#>#+pjmdof#kfos#leDfqnbm#obt#bmgobafofgelqfpwp`llhjmdpsb`f!=kfbgfq.tfoo#bpPwbmofzaqjgdfp,dolabo@qlbwjb#Balvw#X3^8\t##jw/#bmgdqlvsfgafjmd#b*xwkqltkf#nbgfojdkwfqfwkj`boEEEEEE!alwwln!ojhf#b#fnsolzpojuf#jmbp#pffmsqjmwfqnlpw#leva.ojmhqfif`wpbmg#vpfjnbdf!=pv``ffgeffgjmdMv`ofbqjmelqnbwl#kfosTlnfm$pMfjwkfqNf{j`bmsqlwfjm?wbaof#az#nbmzkfbowkzobtpvjwgfujpfg-svpk+xpfoofqppjnsoz#Wkqlvdk-`llhjf#Jnbdf+logfq!=vp-ip!=#Pjm`f#vmjufqpobqdfq#lsfm#wl\"..#fmgojfp#jm$^*8\x0E\t##nbqhfwtkl#jp#+!GLN@lnbmbdfglmf#elqwzsfle#Hjmdglnsqlejwpsqlslpfwl#pklt`fmwfq8nbgf#jwgqfppfgtfqf#jmnj{wvqfsqf`jpfbqjpjmdpq`#>#$nbhf#b#pf`vqfgAbswjpwulwjmd#\t\n\nubq#Nbq`k#1dqft#vs@ojnbwf-qfnlufphjoofgtbz#wkf?,kfbg=eb`f#leb`wjmd#qjdkw!=wl#tlqhqfgv`fpkbp#kbgfqf`wfgpklt+*8b`wjlm>allh#lebm#bqfb>>#!kww?kfbgfq\t?kwno=`lmelqneb`jmd#`llhjf-qfoz#lmklpwfg#-`vpwlnkf#tfmwavw#elqpsqfbg#Ebnjoz#b#nfbmplvw#wkfelqvnp-ellwbdf!=Nlajo@ofnfmwp!#jg>!bp#kjdkjmwfmpf..=?\"..efnbof#jp#pffmjnsojfgpfw#wkfb#pwbwfbmg#kjpebpwfpwafpjgfpavwwlm\\alvmgfg!=?jnd#Jmelal{fufmwp/b#zlvmdbmg#bqfMbwjuf#`kfbsfqWjnflvwbmg#kbpfmdjmfptlm#wkf+nlpwozqjdkw9#ejmg#b#.alwwlnSqjm`f#bqfb#lenlqf#lepfbq`k\\mbwvqf/ofdboozsfqjlg/obmg#lelq#tjwkjmgv`fgsqlujmdnjppjofol`boozBdbjmpwwkf#tbzh%rvlw8s{8!=\x0E\tsvpkfg#babmglmmvnfqbo@fqwbjmJm#wkjpnlqf#jmlq#plnfmbnf#jpbmg/#jm`qltmfgJPAM#3.`qfbwfpL`wlafqnbz#mlw`fmwfq#obwf#jmGfefm`ffmb`wfgtjpk#wlaqlbgoz`llojmdlmolbg>jw-#Wkfqf`lufqNfnafqpkfjdkw#bppvnfp?kwno=\tsflsof-jm#lmf#>tjmgltellwfq\\b#dllg#qfhobnblwkfqp/wl#wkjp\\`llhjfsbmfo!=Olmglm/gfejmfp`qvpkfgabswjpn`lbpwbopwbwvp#wjwof!#nluf#wlolpw#jmafwwfq#jnsojfpqjuboqzpfqufqp#PzpwfnSfqkbspfp#bmg#`lmwfmgeoltjmdobpwfg#qjpf#jmDfmfpjpujft#leqjpjmd#pffn#wlavw#jm#ab`hjmdkf#tjoodjufm#bdjujmd#`jwjfp-eolt#le#Obwfq#boo#avwKjdktbzlmoz#azpjdm#lekf#glfpgjeefqpabwwfqz%bns8obpjmdofpwkqfbwpjmwfdfqwbhf#lmqfevpfg`boofg#>VP%bnsPff#wkfmbwjufpaz#wkjppzpwfn-kfbg#le9klufq/ofpajbmpvqmbnfbmg#boo`lnnlm,kfbgfq\\\\sbqbnpKbqubqg,sj{fo-qfnlubopl#olmdqlof#leiljmwozphzp`qbVmj`lgfaq#,=\x0E\tBwobmwbmv`ofvp@lvmwz/svqfoz#`lvmw!=fbpjoz#avjog#blm`oj`hb#djufmsljmwfqk%rvlw8fufmwp#fopf#x\tgjwjlmpmlt#wkf/#tjwk#nbm#tkllqd,Tfalmf#bmg`buboqzKf#gjfgpfbwwof33/333#xtjmgltkbuf#wlje+tjmgbmg#jwpplofoz#n%rvlw8qfmftfgGfwqljwbnlmdpwfjwkfq#wkfn#jmPfmbwlqVp?,b=?Hjmd#leEqbm`jp.sqlgv`kf#vpfgbqw#bmgkjn#bmgvpfg#azp`lqjmdbw#klnfwl#kbufqfobwfpjajojwzeb`wjlmAveebolojmh!=?tkbw#kfeqff#wl@jwz#le`lnf#jmpf`wlqp`lvmwfglmf#gbzmfqulvpprvbqf#~8je+dljm#tkbwjnd!#bojp#lmozpfbq`k,wvfpgbzollpfozPlolnlmpf{vbo#.#?b#kqnfgjvn!GL#MLW#Eqbm`f/tjwk#b#tbq#bmgpf`lmg#wbhf#b#=\x0E\t\x0E\t\x0E\tnbqhfw-kjdktbzglmf#jm`wjujwz!obpw!=laojdfgqjpf#wl!vmgfejnbgf#wl#Fbqoz#sqbjpfgjm#jwp#elq#kjpbwkofwfIvsjwfqZbkll\"#wfqnfg#pl#nbmzqfbooz#p-#Wkf#b#tlnbmgjqf`w#qjdkw!#aj`z`ofb`jmd>!gbz#bmgpwbwjmdQbwkfq/kjdkfq#Leej`f#bqf#mltwjnfp/#tkfm#b#sbz#elqlm#wkjp.ojmh!=8alqgfqbqlvmg#bmmvbo#wkf#Mftsvw#wkf-`ln!#wbhjm#wlb#aqjfe+jm#wkfdqlvsp-8#tjgwkfmyznfppjnsof#jm#obwfxqfwvqmwkfqbszb#sljmwabmmjmdjmhp!=\t+*8!#qfb#sob`f_v330@bbalvw#bwq=\x0E\t\n\n``lvmw#djufp#b?P@QJSWQbjotbzwkfnfp,wlloal{AzJg+!{kvnbmp/tbw`kfpjm#plnf#je#+tj`lnjmd#elqnbwp#Vmgfq#avw#kbpkbmgfg#nbgf#azwkbm#jmefbq#legfmlwfg,jeqbnfofew#jmulowbdfjm#fb`kb%rvlw8abpf#leJm#nbmzvmgfqdlqfdjnfpb`wjlm#?,s=\x0E\t?vpwlnUb8%dw8?,jnslqwplq#wkbwnlpwoz#%bns8qf#pjyf>!?,b=?,kb#`obppsbppjufKlpw#>#TkfwkfqefqwjofUbqjlvp>X^8+ev`bnfqbp,=?,wg=b`wp#bpJm#plnf=\x0E\t\x0E\t?\"lqdbmjp#?aq#,=Afjijmd`bwbo/Lgfvwp`kfvqlsfvfvphbqbdbfjodfpufmphbfpsb/]bnfmpbifvpvbqjlwqbabiln/E{j`ls/Mdjmbpjfnsqfpjpwfnbl`wvaqfgvqbmwfb/]bgjqfnsqfpbnlnfmwlmvfpwqlsqjnfqbwqbu/Epdqb`jbpmvfpwqbsql`fplfpwbglp`bojgbgsfqplmbm/Vnfqlb`vfqgln/Vpj`bnjfnaqllefqwbpbodvmlpsb/Apfpfifnsolgfqf`klbgfn/Mpsqjubglbdqfdbqfmob`fpslpjaofklwfofppfujoobsqjnfql/Vowjnlfufmwlpbq`kjul`vowvqbnvifqfpfmwqbgbbmvm`jlfnabqdlnfq`bgldqbmgfpfpwvgjlnfilqfpefaqfqlgjpf/]lwvqjpnl`/_gjdlslqwbgbfpsb`jlebnjojbbmwlmjlsfqnjwfdvbqgbqbodvmbpsqf`jlpbodvjfmpfmwjglujpjwbpw/Awvol`lml`fqpfdvmgl`lmpfileqbm`jbnjmvwlppfdvmgbwfmfnlpfef`wlpn/Mobdbpfpj/_mqfujpwbdqbmbgb`lnsqbqjmdqfpldbq`/Abb``j/_mf`vbglqrvjfmfpjm`ovplgfafq/Mnbwfqjbklnaqfpnvfpwqbslgq/Abnb/]bmb/Vowjnbfpwbnlplej`jbowbnajfmmjmd/Vmpbovglpslgfnlpnfilqbqslpjwjlmavpjmfppklnfsbdfpf`vqjwzobmdvbdfpwbmgbqg`bnsbjdmefbwvqfp`bwfdlqzf{wfqmbo`kjogqfmqfpfqufgqfpfbq`kf{`kbmdfebulqjwfwfnsobwfnjojwbqzjmgvpwqzpfquj`fpnbwfqjbosqlgv`wpy.jmgf{9`lnnfmwpplewtbqf`lnsofwf`bofmgbqsobwelqnbqwj`ofpqfrvjqfgnlufnfmwrvfpwjlmavjogjmdslojwj`pslppjaofqfojdjlmskzpj`boeffgab`hqfdjpwfqsj`wvqfpgjpbaofgsqlwl`lobvgjfm`fpfwwjmdpb`wjujwzfofnfmwpofbqmjmdbmzwkjmdbapwqb`wsqldqfpplufqujftnbdbyjmff`lmlnj`wqbjmjmdsqfppvqfubqjlvp#?pwqlmd=sqlsfqwzpklssjmdwldfwkfqbgubm`fgafkbujlqgltmolbgefbwvqfgellwaboopfof`wfgObmdvbdfgjpwbm`fqfnfnafqwqb`hjmdsbpptlqgnlgjejfgpwvgfmwpgjqf`wozejdkwjmdmlqwkfqmgbwbabpfefpwjuboaqfbhjmdol`bwjlmjmwfqmfwgqlsgltmsqb`wj`ffujgfm`fevm`wjlmnbqqjbdfqfpslmpfsqlaofnpmfdbwjufsqldqbnpbmbozpjpqfofbpfgabmmfq!=svq`kbpfsloj`jfpqfdjlmbo`qfbwjufbqdvnfmwallhnbqhqfefqqfq`kfnj`bogjujpjlm`booab`hpfsbqbwfsqlif`wp`lmeoj`wkbqgtbqfjmwfqfpwgfojufqznlvmwbjmlawbjmfg>#ebopf8elq+ubq#b``fswfg`bsb`jwz`lnsvwfqjgfmwjwzbjq`qbewfnsolzfgsqlslpfgglnfpwj`jm`ovgfpsqlujgfgklpsjwboufqwj`bo`loobspfbssqlb`ksbqwmfqpoldl!=?bgbvdkwfqbvwklq!#`vowvqboebnjojfp,jnbdfp,bppfnaozsltfqevowfb`kjmdejmjpkfggjpwqj`w`qjwj`bo`dj.ajm,svqslpfpqfrvjqfpfof`wjlmaf`lnjmdsqlujgfpb`bgfnj`f{fq`jpfb`wvbooznfgj`jmf`lmpwbmwb``jgfmwNbdbyjmfgl`vnfmwpwbqwjmdalwwln!=lapfqufg9#%rvlw8f{wfmgfgsqfujlvpPlewtbqf`vpwlnfqgf`jpjlmpwqfmdwkgfwbjofgpojdkwozsobmmjmdwf{wbqfb`vqqfm`zfufqzlmfpwqbjdkwwqbmpefqslpjwjufsqlgv`fgkfqjwbdfpkjssjmdbaplovwfqf`fjufgqfofubmwavwwlm!#ujlofm`fbmztkfqfafmfejwpobvm`kfgqf`fmwozboojbm`felooltfgnvowjsofavoofwjmjm`ovgfgl``vqqfgjmwfqmbo'+wkjp*-qfsvaoj`=?wq=?wg`lmdqfppqf`lqgfgvowjnbwfplovwjlm?vo#jg>!gjp`lufqKlnf?,b=tfapjwfpmfwtlqhpbowklvdkfmwjqfoznfnlqjbonfppbdfp`lmwjmvfb`wjuf!=plnftkbwuj`wlqjbTfpwfqm##wjwof>!Ol`bwjlm`lmwqb`wujpjwlqpGltmolbgtjwklvw#qjdkw!=\tnfbpvqfptjgwk#>#ubqjbaofjmuloufgujqdjmjbmlqnboozkbssfmfgb``lvmwppwbmgjmdmbwjlmboQfdjpwfqsqfsbqfg`lmwqlopb``vqbwfajqwkgbzpwqbwfdzleej`jbodqbskj`p`qjnjmboslppjaoz`lmpvnfqSfqplmbopsfbhjmdubojgbwfb`kjfufg-isd!#,=nb`kjmfp?,k1=\t##hfztlqgpeqjfmgozaqlwkfqp`lnajmfglqjdjmbo`lnslpfgf{sf`wfgbgfrvbwfsbhjpwbmeloolt!#ubovbaof?,obafo=qfobwjufaqjmdjmdjm`qfbpfdlufqmlqsovdjmp,Ojpw#le#Kfbgfq!=!#mbnf>!#+%rvlw8dqbgvbwf?,kfbg=\t`lnnfq`fnbobzpjbgjqf`wlqnbjmwbjm8kfjdkw9p`kfgvof`kbmdjmdab`h#wl#`bwkloj`sbwwfqmp`lolq9# dqfbwfpwpvssojfpqfojbaof?,vo=\t\n\n?pfof`w#`jwjyfmp`olwkjmdtbw`kjmd?oj#jg>!psf`jej``bqqzjmdpfmwfm`f?`fmwfq=`lmwqbpwwkjmhjmd`bw`k+f*plvwkfqmNj`kbfo#nfq`kbmw`bqlvpfosbggjmd9jmwfqjlq-psojw+!ojybwjlmL`wlafq#*xqfwvqmjnsqlufg..%dw8\t\t`lufqbdf`kbjqnbm-smd!#,=pvaif`wpQj`kbqg#tkbwfufqsqlabaozqf`lufqzabpfabooivgdnfmw`lmmf`w--`pp!#,=#tfapjwfqfslqwfggfebvow!,=?,b=\x0E\tfof`wqj`p`lwobmg`qfbwjlmrvbmwjwz-#JPAM#3gjg#mlw#jmpwbm`f.pfbq`k.!#obmd>!psfbhfqp@lnsvwfq`lmwbjmpbq`kjufpnjmjpwfqqfb`wjlmgjp`lvmwJwbojbml`qjwfqjbpwqlmdoz9#$kwws9$p`qjsw$`lufqjmdleefqjmdbssfbqfgAqjwjpk#jgfmwjezEb`fallhmvnfqlvpufkj`ofp`lm`fqmpBnfqj`bmkbmgojmdgju#jg>!Tjoojbn#sqlujgfq\\`lmwfmwb``vqb`zpf`wjlm#bmgfqplmeof{jaof@bwfdlqzobtqfm`f?p`qjsw=obzlvw>!bssqlufg#nb{jnvnkfbgfq!=?,wbaof=Pfquj`fpkbnjowlm`vqqfmw#`bmbgjbm`kbmmfop,wkfnfp,,bqwj`oflswjlmboslqwvdboubovf>!!jmwfqubotjqfofppfmwjwofgbdfm`jfpPfbq`k!#nfbpvqfgwklvpbmgpsfmgjmd%kfoojs8mft#Gbwf!#pjyf>!sbdfMbnfnjggof!#!#,=?,b=kjggfm!=pfrvfm`fsfqplmbolufqeoltlsjmjlmpjoojmljpojmhp!=\t\n?wjwof=ufqpjlmppbwvqgbzwfqnjmbojwfnsqlsfmdjmffqpf`wjlmpgfpjdmfqsqlslpbo>!ebopf!Fpsb/]loqfofbpfppvanjw!#fq%rvlw8bggjwjlmpznswlnplqjfmwfgqfplvq`fqjdkw!=?sofbpvqfpwbwjlmpkjpwlqz-ofbujmd##alqgfq>`lmwfmwp`fmwfq!=-\t\tPlnf#gjqf`wfgpvjwbaofavodbqjb-pklt+*8gfpjdmfgDfmfqbo#`lm`fswpF{bnsofptjoojbnpLqjdjmbo!=?psbm=pfbq`k!=lsfqbwlqqfrvfpwpb#%rvlw8booltjmdGl`vnfmwqfujpjlm-#\t\tWkf#zlvqpfoe@lmwb`w#nj`kjdbmFmdojpk#`lovnajbsqjlqjwzsqjmwjmdgqjmhjmdeb`jojwzqfwvqmfg@lmwfmw#leej`fqpQvppjbm#dfmfqbwf.;;6:.2!jmgj`bwfebnjojbq#rvbojwznbqdjm93#`lmwfmwujftslqw`lmwb`wp.wjwof!=slqwbaof-ofmdwk#fojdjaofjmuloufpbwobmwj`lmolbg>!gfebvow-pvssojfgsbznfmwpdolppbqz\t\tBewfq#dvjgbm`f?,wg=?wgfm`lgjmdnjggof!=`bnf#wl#gjpsobzpp`lwwjpkilmbwkbmnbilqjwztjgdfwp-`ojmj`bowkbjobmgwfb`kfqp?kfbg=\t\nbeef`wfgpvsslqwpsljmwfq8wlPwqjmd?,pnboo=lhobklnbtjoo#af#jmufpwlq3!#bow>!klojgbzpQfplvq`foj`fmpfg#+tkj`k#-#Bewfq#`lmpjgfqujpjwjmdf{solqfqsqjnbqz#pfbq`k!#bmgqljg!rvj`hoz#nffwjmdpfpwjnbwf8qfwvqm#8`lolq9 #kfjdkw>bssqlubo/#%rvlw8#`kf`hfg-njm-ip!nbdmfwj`=?,b=?,kelqf`bpw-#Tkjof#wkvqpgbzgufqwjpf%fb`vwf8kbp@obppfubovbwflqgfqjmdf{jpwjmdsbwjfmwp#Lmojmf#`lolqbglLswjlmp!`bnsafoo?\"..#fmg?,psbm=??aq#,=\x0E\t\\slsvsp\x7Fp`jfm`fp/%rvlw8#rvbojwz#Tjmgltp#bppjdmfgkfjdkw9#?a#`obppof%rvlw8#ubovf>!#@lnsbmzf{bnsofp?jeqbnf#afojfufpsqfpfmwpnbqpkboosbqw#le#sqlsfqoz*-\t\tWkf#wb{lmlnznv`k#le#?,psbm=\t!#gbwb.pqwvdv/Fpp`qlooWl#sqlif`w?kfbg=\x0E\tbwwlqmfzfnskbpjppslmplqpebm`zal{tlqog$p#tjogojef`kf`hfg>pfppjlmpsqldqbnns{8elmw.#Sqlif`wilvqmbopafojfufgub`bwjlmwklnsplmojdkwjmdbmg#wkf#psf`jbo#alqgfq>3`kf`hjmd?,walgz=?avwwlm#@lnsofwf`ofbqej{\t?kfbg=\tbqwj`of#?pf`wjlmejmgjmdpqlof#jm#slsvobq##L`wlafqtfapjwf#f{slpvqfvpfg#wl##`kbmdfplsfqbwfg`oj`hjmdfmwfqjmd`lnnbmgpjmelqnfg#mvnafqp##?,gju=`qfbwjmdlmPvanjwnbqzobmg`loofdfpbmbozwj`ojpwjmdp`lmwb`w-olddfgJmbgujplqzpjaojmdp`lmwfmw!p%rvlw8*p-#Wkjp#sb`hbdfp`kf`hal{pvddfpwpsqfdmbmwwlnlqqltpsb`jmd>j`lm-smdibsbmfpf`lgfabpfavwwlm!=dbnaojmdpv`k#bp#/#tkjof#?,psbm=#njpplvqjpslqwjmdwls92s{#-?,psbm=wfmpjlmptjgwk>!1obyzolbgmlufnafqvpfg#jm#kfjdkw>!`qjsw!=\t%maps8?,?wq=?wg#kfjdkw91,sqlgv`w`lvmwqz#jm`ovgf#ellwfq!#%ow8\"..#wjwof!=?,irvfqz-?,elqn=\t+\x0BBl\bQ\x7F*+\x0BUm\x05Gx*kqubwphjjwbojbmlqln/Nm(ow/Pqh/Kf4K4]4C5dwbnaj/Emmlwj`jbpnfmpbifpsfqplmbpgfqf`klpmb`jlmbopfquj`jl`lmwb`wlvpvbqjlpsqldqbnbdlajfqmlfnsqfpbpbmvm`jlpubofm`jb`lolnajbgfpsv/Epgfslqwfpsqlzf`wlsqlgv`wls/Vaoj`lmlplwqlpkjpwlqjbsqfpfmwfnjoolmfpnfgjbmwfsqfdvmwbbmwfqjlqqf`vqplpsqlaofnbpbmwjbdlmvfpwqlplsjmj/_mjnsqjnjqnjfmwqbpbn/Eqj`bufmgfglqpl`jfgbgqfpsf`wlqfbojybqqfdjpwqlsbobaqbpjmwfq/Epfmwlm`fpfpsf`jbonjfnaqlpqfbojgbg`/_qglabybqbdlybs/Mdjmbppl`jbofpaolrvfbqdfpwj/_mborvjofqpjpwfnbp`jfm`jbp`lnsofwlufqpj/_m`lnsofwbfpwvgjlps/Vaoj`blaifwjulboj`bmwfavp`bglq`bmwjgbgfmwqbgbpb``jlmfpbq`kjulppvsfqjlqnbzlq/Abbofnbmjbevm`j/_m/Vowjnlpkb`jfmglbrvfoolpfgj`j/_mefqmbmglbnajfmwfeb`fallhmvfpwqbp`ojfmwfpsql`fplpabpwbmwfsqfpfmwbqfslqwbq`lmdqfplsvaoj`bq`lnfq`jl`lmwqbwli/_ufmfpgjpwqjwlw/E`mj`b`lmivmwlfmfqd/Abwqbabibqbpwvqjbpqf`jfmwfvwjojybqalofw/Ampboubglq`lqqf`wbwqbabilpsqjnfqlpmfdl`jlpojafqwbggfwboofpsbmwboobsq/_{jnlbonfq/Abbmjnbofprvj/Emfp`lqby/_mpf``j/_mavp`bmglls`jlmfpf{wfqjlq`lm`fswlwlgbu/Abdbofq/Abfp`qjajqnfgj`jmboj`fm`jb`lmpvowbbpsf`wlp`q/Awj`bg/_obqfpivpwj`jbgfafq/Mmsfq/Alglmf`fpjwbnbmwfmfqsfrvf/]lqf`jajgbwqjavmbowfmfqjef`bm`j/_m`bmbqjbpgfp`bqdbgjufqplpnboolq`bqfrvjfqfw/E`mj`lgfafq/Abujujfmgbejmbmybpbgfobmwfevm`jlmb`lmpfilpgje/A`jo`jvgbgfpbmwjdvbpbubmybgbw/Eqnjmlvmjgbgfpp/Mm`kfy`bnsb/]bplewlmj`qfujpwbp`lmwjfmfpf`wlqfpnlnfmwlpeb`vowbg`q/Egjwlgjufqpbppvsvfpwleb`wlqfppfdvmglpsfrvf/]b<_!?,pfof`w=Bvpwqbojb!#`obpp>!pjwvbwjlmbvwklqjwzelooltjmdsqjnbqjozlsfqbwjlm`kboofmdfgfufolsfgbmlmznlvpevm`wjlm#evm`wjlmp`lnsbmjfppwqv`wvqfbdqffnfmw!#wjwof>!slwfmwjbofgv`bwjlmbqdvnfmwppf`lmgbqz`lszqjdkwobmdvbdfpf{`ovpjuf`lmgjwjlm?,elqn=\x0E\tpwbwfnfmwbwwfmwjlmAjldqbskz~#fopf#x\tplovwjlmptkfm#wkf#Bmbozwj`pwfnsobwfpgbmdfqlvppbwfoojwfgl`vnfmwpsvaojpkfqjnslqwbmwsqlwlwzsfjmeovfm`f%qbrvl8?,feef`wjufdfmfqboozwqbmpelqnafbvwjevowqbmpslqwlqdbmjyfgsvaojpkfgsqlnjmfmwvmwjo#wkfwkvnambjoMbwjlmbo#-el`vp+*8lufq#wkf#njdqbwjlmbmmlvm`fgellwfq!=\tf{`fswjlmofpp#wkbmf{sfmpjufelqnbwjlmeqbnftlqhwfqqjwlqzmgj`bwjlm`vqqfmwoz`obppMbnf`qjwj`jpnwqbgjwjlmfopftkfqfBof{bmgfqbssljmwfgnbwfqjbopaqlbg`bpwnfmwjlmfgbeejojbwf?,lswjlm=wqfbwnfmwgjeefqfmw,gfebvow-Sqfpjgfmwlm`oj`h>!ajldqbskzlwkfqtjpfsfqnbmfmwEqbm/KbjpKlooztllgf{sbmpjlmpwbmgbqgp?,pwzof=\tqfgv`wjlmGf`fnafq#sqfefqqfg@bnaqjgdflsslmfmwpAvpjmfpp#`lmevpjlm=\t?wjwof=sqfpfmwfgf{sobjmfgglfp#mlw#tlqogtjgfjmwfqeb`fslpjwjlmpmftpsbsfq?,wbaof=\tnlvmwbjmpojhf#wkf#fppfmwjboejmbm`jbopfof`wjlmb`wjlm>!,babmglmfgFgv`bwjlmsbqpfJmw+pwbajojwzvmbaof#wl?,wjwof=\tqfobwjlmpMlwf#wkbwfeej`jfmwsfqelqnfgwtl#zfbqpPjm`f#wkfwkfqfelqftqbssfq!=bowfqmbwfjm`qfbpfgAbwwof#lesfq`fjufgwqzjmd#wlmf`fppbqzslqwqbzfgfof`wjlmpFojybafwk?,jeqbnf=gjp`lufqzjmpvqbm`fp-ofmdwk8ofdfmgbqzDfldqbskz`bmgjgbwf`lqslqbwfplnfwjnfppfquj`fp-jmkfqjwfg?,pwqlmd=@lnnvmjwzqfojdjlvpol`bwjlmp@lnnjwwffavjogjmdpwkf#tlqogml#olmdfqafdjmmjmdqfefqfm`f`bmmlw#afeqfrvfm`zwzsj`boozjmwl#wkf#qfobwjuf8qf`lqgjmdsqfpjgfmwjmjwjboozwf`kmjrvfwkf#lwkfqjw#`bm#aff{jpwfm`fvmgfqojmfwkjp#wjnfwfofsklmfjwfnp`lsfsqb`wj`fpbgubmwbdf*8qfwvqm#Elq#lwkfqsqlujgjmdgfnl`qb`zalwk#wkf#f{wfmpjufpveefqjmdpvsslqwfg`lnsvwfqp#evm`wjlmsqb`wj`bopbjg#wkbwjw#nbz#afFmdojpk?,eqln#wkf#p`kfgvofggltmolbgp?,obafo=\tpvpsf`wfgnbqdjm9#3psjqjwvbo?,kfbg=\t\tnj`qlplewdqbgvboozgjp`vppfgkf#af`bnff{f`vwjufirvfqz-ipklvpfklog`lmejqnfgsvq`kbpfgojwfqboozgfpwqlzfgvs#wl#wkfubqjbwjlmqfnbjmjmdjw#jp#mlw`fmwvqjfpIbsbmfpf#bnlmd#wkf`lnsofwfgbodlqjwknjmwfqfpwpqfafoojlmvmgfejmfgfm`lvqbdfqfpjybaofjmuloujmdpfmpjwjufvmjufqpbosqlujpjlm+bowklvdkefbwvqjmd`lmgv`wfg*/#tkj`k#`lmwjmvfg.kfbgfq!=Efaqvbqz#mvnfqlvp#lufqeolt9`lnslmfmweqbdnfmwpf{`foofmw`lopsbm>!wf`kmj`bomfbq#wkf#Bgubm`fg#plvq`f#lef{sqfppfgKlmd#Hlmd#Eb`fallhnvowjsof#nf`kbmjpnfofubwjlmleefmpjuf?,elqn=\t\npslmplqfggl`vnfmw-lq#%rvlw8wkfqf#bqfwklpf#tklnlufnfmwpsql`fppfpgjeej`vowpvanjwwfgqf`lnnfmg`lmujm`fgsqlnlwjmd!#tjgwk>!-qfsob`f+`obppj`bo`lbojwjlmkjp#ejqpwgf`jpjlmpbppjpwbmwjmgj`bwfgfulovwjlm.tqbssfq!fmlvdk#wlbolmd#wkfgfojufqfg..=\x0E\t?\"..Bnfqj`bm#sqlwf`wfgMlufnafq#?,pwzof=?evqmjwvqfJmwfqmfw##lmaovq>!pvpsfmgfgqf`jsjfmwabpfg#lm#Nlqflufq/balojpkfg`loof`wfgtfqf#nbgffnlwjlmbofnfqdfm`zmbqqbwjufbgul`bwfps{8alqgfq`lnnjwwfggjq>!owq!fnsolzffpqfpfbq`k-#pfof`wfgpv``fpplq`vpwlnfqpgjpsobzfgPfswfnafqbgg@obpp+Eb`fallh#pvddfpwfgbmg#obwfqlsfqbwjmdfobalqbwfPlnfwjnfpJmpwjwvwf`fqwbjmozjmpwboofgelooltfqpIfqvpbofnwkfz#kbuf`lnsvwjmddfmfqbwfgsqlujm`fpdvbqbmwffbqajwqbqzqf`ldmjyftbmwfg#wls{8tjgwk9wkflqz#leafkbujlvqTkjof#wkffpwjnbwfgafdbm#wl#jw#af`bnfnbdmjwvgfnvpw#kbufnlqf#wkbmGjqf`wlqzf{wfmpjlmpf`qfwbqzmbwvqboozl``vqqjmdubqjbaofpdjufm#wkfsobwelqn-?,obafo=?ebjofg#wl`lnslvmgphjmgp#le#pl`jfwjfpbolmdpjgf#..%dw8\t\tplvwktfpwwkf#qjdkwqbgjbwjlmnbz#kbuf#vmfp`bsf+pslhfm#jm!#kqfe>!,sqldqbnnflmoz#wkf#`lnf#eqlngjqf`wlqzavqjfg#jmb#pjnjobqwkfz#tfqf?,elmw=?,Mlqtfdjbmpsf`jejfgsqlgv`jmdsbppfmdfq+mft#Gbwfwfnslqbqzej`wjlmboBewfq#wkffrvbwjlmpgltmolbg-qfdvobqozgfufolsfqbaluf#wkfojmhfg#wlskfmlnfmbsfqjlg#lewllowjs!=pvapwbm`fbvwlnbwj`bpsf`w#leBnlmd#wkf`lmmf`wfgfpwjnbwfpBjq#Elq`fpzpwfn#lelaif`wjufjnnfgjbwfnbhjmd#jwsbjmwjmdp`lmrvfqfgbqf#pwjoosql`fgvqfdqltwk#lekfbgfg#azFvqlsfbm#gjujpjlmpnlof`vofpeqbm`kjpfjmwfmwjlmbwwqb`wfg`kjogkllgbopl#vpfggfgj`bwfgpjmdbslqfgfdqff#leebwkfq#le`lmeoj`wp?,b=?,s=\t`bnf#eqlntfqf#vpfgmlwf#wkbwqf`fjujmdF{f`vwjuffufm#nlqfb``fpp#wl`lnnbmgfqSlojwj`bonvpj`jbmpgfoj`jlvpsqjplmfqpbgufmw#leVWE.;!#,=?\"X@GBWBX!=@lmwb`wPlvwkfqm#ad`lolq>!pfqjfp#le-#Jw#tbp#jm#Fvqlsfsfqnjwwfgubojgbwf-bssfbqjmdleej`jboppfqjlvpoz.obmdvbdfjmjwjbwfgf{wfmgjmdolmd.wfqnjmeobwjlmpv`k#wkbwdfw@llhjfnbqhfg#az?,avwwlm=jnsofnfmwavw#jw#jpjm`qfbpfpgltm#wkf#qfrvjqjmdgfsfmgfmw..=\t?\"..#jmwfqujftTjwk#wkf#`lsjfp#le`lmpfmpvptbp#avjowUfmfyvfob+elqnfqozwkf#pwbwfsfqplmmfopwqbwfdj`ebulvq#lejmufmwjlmTjhjsfgjb`lmwjmfmwujqwvbooztkj`k#tbpsqjm`jsof@lnsofwf#jgfmwj`bopklt#wkbwsqjnjwjufbtbz#eqlnnlof`vobqsqf`jpfozgjpploufgVmgfq#wkfufqpjlm>!=%maps8?,Jw#jp#wkf#Wkjp#jp#tjoo#kbuflqdbmjpnpplnf#wjnfEqjfgqj`ktbp#ejqpwwkf#lmoz#eb`w#wkbwelqn#jg>!sqf`fgjmdWf`kmj`boskzpj`jpwl``vqp#jmmbujdbwlqpf`wjlm!=psbm#jg>!plvdkw#wlafolt#wkfpvqujujmd~?,pwzof=kjp#gfbwkbp#jm#wkf`bvpfg#azsbqwjboozf{jpwjmd#vpjmd#wkftbp#djufmb#ojpw#leofufop#lemlwjlm#leLeej`jbo#gjpnjppfgp`jfmwjpwqfpfnaofpgvsoj`bwff{solpjufqf`lufqfgboo#lwkfqdboofqjfpxsbggjmd9sflsof#leqfdjlm#lebggqfppfpbppl`jbwfjnd#bow>!jm#nlgfqmpklvog#afnfwklg#leqfslqwjmdwjnfpwbnsmffgfg#wlwkf#Dqfbwqfdbqgjmdpffnfg#wlujftfg#bpjnsb`w#lmjgfb#wkbwwkf#Tlqogkfjdkw#lef{sbmgjmdWkfpf#bqf`vqqfmw!=`bqfevooznbjmwbjmp`kbqdf#le@obppj`bobggqfppfgsqfgj`wfgltmfqpkjs?gju#jg>!qjdkw!=\x0E\tqfpjgfm`fofbuf#wkf`lmwfmw!=bqf#lewfm##~*+*8\x0E\tsqlabaoz#Sqlefpplq.avwwlm!#qfpslmgfgpbzp#wkbwkbg#wl#afsob`fg#jmKvmdbqjbmpwbwvp#lepfqufp#bpVmjufqpbof{f`vwjlmbddqfdbwfelq#tkj`kjmef`wjlmbdqffg#wlkltfufq/#slsvobq!=sob`fg#lm`lmpwqv`wfof`wlqbopznalo#lejm`ovgjmdqfwvqm#wlbq`kjwf`w@kqjpwjbmsqfujlvp#ojujmd#jmfbpjfq#wlsqlefpplq\t%ow8\"..#feef`w#lebmbozwj`ptbp#wbhfmtkfqf#wkfwllh#lufqafojfe#jmBeqjhbbmpbp#ebq#bpsqfufmwfgtlqh#tjwkb#psf`jbo?ejfogpfw@kqjpwnbpQfwqjfufg\t\tJm#wkf#ab`h#jmwlmlqwkfbpwnbdbyjmfp=?pwqlmd=`lnnjwwffdlufqmjmddqlvsp#lepwlqfg#jmfpwbaojpkb#dfmfqbojwp#ejqpwwkfjq#ltmslsvobwfgbm#laif`w@bqjaafbmboolt#wkfgjpwqj`wptjp`lmpjmol`bwjlm-8#tjgwk9#jmkbajwfgPl`jbojpwIbmvbqz#2?,ellwfq=pjnjobqoz`klj`f#lewkf#pbnf#psf`jej`#avpjmfpp#Wkf#ejqpw-ofmdwk8#gfpjqf#wlgfbo#tjwkpjm`f#wkfvpfqBdfmw`lm`fjufgjmgf{-sksbp#%rvlw8fmdbdf#jmqf`fmwoz/eft#zfbqptfqf#bopl\t?kfbg=\t?fgjwfg#azbqf#hmltm`jwjfp#jmb``fpphfz`lmgfnmfgbopl#kbufpfquj`fp/ebnjoz#leP`kllo#le`lmufqwfgmbwvqf#le#obmdvbdfnjmjpwfqp?,laif`w=wkfqf#jp#b#slsvobqpfrvfm`fpbgul`bwfgWkfz#tfqfbmz#lwkfqol`bwjlm>fmwfq#wkfnv`k#nlqfqfeof`wfgtbp#mbnfglqjdjmbo#b#wzsj`botkfm#wkfzfmdjmffqp`lvog#mlwqfpjgfmwptfgmfpgbzwkf#wkjqg#sqlgv`wpIbmvbqz#1tkbw#wkfzb#`fqwbjmqfb`wjlmpsql`fpplqbewfq#kjpwkf#obpw#`lmwbjmfg!=?,gju=\t?,b=?,wg=gfsfmg#lmpfbq`k!=\tsjf`fp#le`lnsfwjmdQfefqfm`fwfmmfppfftkj`k#kbp#ufqpjlm>?,psbm=#??,kfbgfq=djufp#wkfkjpwlqjbmubovf>!!=sbggjmd93ujft#wkbwwldfwkfq/wkf#nlpw#tbp#elvmgpvapfw#lebwwb`h#lm`kjogqfm/sljmwp#lesfqplmbo#slpjwjlm9boofdfgoz@ofufobmgtbp#obwfqbmg#bewfqbqf#djufmtbp#pwjoop`qloojmdgfpjdm#lenbhfp#wkfnv`k#ofppBnfqj`bmp-\t\tBewfq#/#avw#wkfNvpfvn#leolvjpjbmb+eqln#wkfnjmmfplwbsbqwj`ofpb#sql`fppGlnjmj`bmulovnf#leqfwvqmjmdgfefmpjuf33s{\x7Fqjdknbgf#eqlnnlvpflufq!#pwzof>!pwbwfp#le+tkj`k#jp`lmwjmvfpEqbm`jp`lavjogjmd#tjwklvw#btjwk#plnftkl#tlvogb#elqn#leb#sbqw#leafelqf#jwhmltm#bp##Pfquj`fpol`bwjlm#bmg#lewfmnfbpvqjmdbmg#jw#jpsbsfqab`hubovfp#le\x0E\t?wjwof=>#tjmglt-gfwfqnjmffq%rvlw8#sobzfg#azbmg#fbqoz?,`fmwfq=eqln#wkjpwkf#wkqffsltfq#bmgle#%rvlw8jmmfqKWNO?b#kqfe>!z9jmojmf8@kvq`k#lewkf#fufmwufqz#kjdkleej`jbo#.kfjdkw9#`lmwfmw>!,`dj.ajm,wl#`qfbwfbeqjhbbmpfpsfqbmwleqbm/Kbjpobwujf)Mvojfwvuj)_(`f)Mwjmb(af)Mwjmb\fUh\fT{\fTN\n{I\np@\x04Fr\x0BBl\bQ\x7F\tA{\x0BUm\x05Gx\tA{\x01yp\x06YA\0zX\bTV\bWl\bUd\x04BM\x0BB{\npV\x0B@x\x04B\\\np@\x04Db\x04Gz\tal\npa\tfM\tuD\bV~\x04mx\x0BQ}\ndS\tp\\\bVK\bS]\bU|\x05oD\tkV\x0Bed\x0BHR\nb~\x04M`\nJp\x05oD\x04|Q\nLP\x04Sw\bTl\nAI\nxC\bWt\tBq\x05F`\x04Cm\x0BLm\tKx\t}t\bPv\ny\\\naB\tV\x7F\nZd\x04XU\x04li\tfr\ti@\tBH\x04BD\x04BV\t`V\n[]\tp_\tTn\n~A\nxR\tuD\t`{\bV@\tTn\tHK\tAJ\x0Bxs\x04Zf\nqI\x04Zf\x0BBM\x0B|j\t}t\bSM\nmC\x0BQ}pfquj`jlpbqw/A`volbqdfmwjmbabq`folmb`vborvjfqsvaoj`bglsqlgv`wlpslo/Awj`bqfpsvfpwbtjhjsfgjbpjdvjfmwfa/Vprvfgb`lnvmjgbgpfdvqjgbgsqjm`jsbosqfdvmwbp`lmwfmjglqfpslmgfqufmfyvfobsqlaofnbpgj`jfnaqfqfob`j/_mmlujfnaqfpjnjobqfpsqlzf`wlpsqldqbnbpjmpwjwvwlb`wjujgbgfm`vfmwqbf`lmln/Abjn/Mdfmfp`lmwb`wbqgfp`bqdbqmf`fpbqjlbwfm`j/_mwfo/Eelml`lnjpj/_m`bm`jlmfp`bsb`jgbgfm`lmwqbqbm/Mojpjpebulqjwlpw/Eqnjmlpsqlujm`jbfwjrvfwbpfofnfmwlpevm`jlmfpqfpvowbgl`bq/M`wfqsqlsjfgbgsqjm`jsjlmf`fpjgbgnvmj`jsbo`qfb`j/_mgfp`bqdbpsqfpfm`jb`lnfq`jbolsjmjlmfpfifq`j`jlfgjwlqjbopbobnbm`bdlmy/Mofygl`vnfmwlsfo/A`vobqf`jfmwfpdfmfqbofpwbqqbdlmbsq/M`wj`bmlufgbgfpsqlsvfpwbsb`jfmwfpw/E`mj`bplaifwjulp`lmwb`wlp\fHB\fIk\fHn\fH^\fHS\fHc\fHU\fId\fHn\fH{\fHC\fHR\fHT\fHR\fHI\fHc\fHY\fHn\fH\\\fHU\fIk\fHy\fIg\fHd\fHy\fIm\fHw\fH\\\fHU\fHR\fH@\fHR\fHJ\fHy\fHU\fHR\fHT\fHA\fIl\fHU\fIm\fHc\fH\\\fHU\fIl\fHB\fId\fHn\fHJ\fHS\fHD\fH@\fHR\fHHgjsolgl`p\fHT\fHB\fHC\fH\\\fIn\fHF\fHD\fHR\fHB\fHF\fHH\fHR\fHG\fHS\fH\\\fHx\fHT\fHH\fHH\fH\\\fHU\fH^\fIg\fH{\fHU\fIm\fHj\fH@\fHR\fH\\\fHJ\fIk\fHZ\fHU\fIm\fHd\fHz\fIk\fH^\fHC\fHJ\fHS\fHy\fHR\fHB\fHY\fIk\fH@\fHH\fIl\fHD\fH@\fIl\fHv\fHB\fI`\fHH\fHT\fHR\fH^\fH^\fIk\fHz\fHp\fIe\fH@\fHB\fHJ\fHJ\fHH\fHI\fHR\fHD\fHU\fIl\fHZ\fHU\fH\\\fHi\fH^\fH{\fHy\fHA\fIl\fHD\fH{\fH\\\fHF\fHR\fHT\fH\\\fHR\fHH\fHy\fHS\fHc\fHe\fHT\fIk\fH{\fHC\fIl\fHU\fIn\fHm\fHj\fH{\fIk\fHs\fIl\fHB\fHz\fIg\fHp\fHy\fHR\fH\\\fHi\fHA\fIl\fH{\fHC\fIk\fHH\fIm\fHB\fHY\fIg\fHs\fHJ\fIk\fHn\fHi\fH{\fH\\\fH|\fHT\fIk\fHB\fIk\fH^\fH^\fH{\fHR\fHU\fHR\fH^\fHf\fHF\fH\\\fHv\fHR\fH\\\fH|\fHT\fHR\fHJ\fIk\fH\\\fHp\fHS\fHT\fHJ\fHS\fH^\fH@\fHn\fHJ\fH@\fHD\fHR\fHU\fIn\fHn\fH^\fHR\fHz\fHp\fIl\fHH\fH@\fHs\fHD\fHB\fHS\fH^\fHk\fHT\fIk\fHj\fHD\fIk\fHD\fHC\fHR\fHy\fIm\fH^\fH^\fIe\fH{\fHA\fHR\fH{\fH\\\fIk\fH^\fHp\fH{\fHU\fH\\\fHR\fHB\fH^\fH{\fIk\fHF\fIk\fHp\fHU\fHR\fHI\fHk\fHT\fIl\fHT\fHU\fIl\fHy\fH^\fHR\fHL\fIl\fHy\fHU\fHR\fHm\fHJ\fIn\fH\\\fHH\fHU\fHH\fHT\fHR\fHH\fHC\fHR\fHJ\fHj\fHC\fHR\fHF\fHR\fHy\fHy\fI`\fHD\fHZ\fHR\fHB\fHJ\fIk\fHz\fHC\fHU\fIl\fH\\\fHR\fHC\fHz\fIm\fHJ\fH^\fH{\fIl`bwfdlqjfpf{sfqjfm`f?,wjwof=\x0E\t@lszqjdkw#ibubp`qjsw`lmgjwjlmpfufqzwkjmd?s#`obpp>!wf`kmloldzab`hdqlvmg?b#`obpp>!nbmbdfnfmw%`lsz8#132ibubP`qjsw`kbqb`wfqpaqfbg`qvnawkfnpfoufpklqjylmwbodlufqmnfmw@bojelqmjbb`wjujwjfpgjp`lufqfgMbujdbwjlmwqbmpjwjlm`lmmf`wjlmmbujdbwjlmbssfbqbm`f?,wjwof=?n`kf`hal{!#wf`kmjrvfpsqlwf`wjlmbssbqfmwozbp#tfoo#bpvmw$/#$VB.qfplovwjlmlsfqbwjlmpwfofujpjlmwqbmpobwfgTbpkjmdwlmmbujdbwlq-#>#tjmglt-jnsqfppjlm%ow8aq%dw8ojwfqbwvqfslsvobwjlmad`lolq>! fpsf`jbooz#`lmwfmw>!sqlgv`wjlmmftpofwwfqsqlsfqwjfpgfejmjwjlmofbgfqpkjsWf`kmloldzSbqojbnfmw`lnsbqjplmvo#`obpp>!-jmgf{Le+!`lm`ovpjlmgjp`vppjlm`lnslmfmwpajloldj`boQfulovwjlm\\`lmwbjmfqvmgfqpwllgmlp`qjsw=?sfqnjppjlmfb`k#lwkfqbwnlpskfqf#lmel`vp>!?elqn#jg>!sql`fppjmdwkjp-ubovfdfmfqbwjlm@lmefqfm`fpvapfrvfmwtfoo.hmltmubqjbwjlmpqfsvwbwjlmskfmlnfmlmgjp`jsojmfoldl-smd!#+gl`vnfmw/alvmgbqjfpf{sqfppjlmpfwwofnfmwAb`hdqlvmglvw#le#wkffmwfqsqjpf+!kwwsp9!#vmfp`bsf+!sbpptlqg!#gfnl`qbwj`?b#kqfe>!,tqbssfq!=\tnfnafqpkjsojmdvjpwj`s{8sbggjmdskjolplskzbppjpwbm`fvmjufqpjwzeb`jojwjfpqf`ldmjyfgsqfefqfm`fje#+wzsflenbjmwbjmfgul`bavobqzkzslwkfpjp-pvanjw+*8%bns8maps8bmmlwbwjlmafkjmg#wkfElvmgbwjlmsvaojpkfq!bppvnswjlmjmwqlgv`fg`lqqvswjlmp`jfmwjpwpf{soj`jwozjmpwfbg#legjnfmpjlmp#lm@oj`h>!`lmpjgfqfggfsbqwnfmwl``vsbwjlmpllm#bewfqjmufpwnfmwsqlmlvm`fgjgfmwjejfgf{sfqjnfmwNbmbdfnfmwdfldqbskj`!#kfjdkw>!ojmh#qfo>!-qfsob`f+,gfsqfppjlm`lmefqfm`fsvmjpknfmwfojnjmbwfgqfpjpwbm`fbgbswbwjlmlsslpjwjlmtfoo#hmltmpvssofnfmwgfwfqnjmfgk2#`obpp>!3s{8nbqdjmnf`kbmj`bopwbwjpwj`p`fofaqbwfgDlufqmnfmw\t\tGvqjmd#wgfufolsfqpbqwjej`jbofrvjubofmwlqjdjmbwfg@lnnjppjlmbwwb`knfmw?psbm#jg>!wkfqf#tfqfMfgfqobmgpafzlmg#wkfqfdjpwfqfgilvqmbojpweqfrvfmwozboo#le#wkfobmd>!fm!#?,pwzof=\x0E\tbaplovwf8#pvsslqwjmdf{wqfnfoz#nbjmpwqfbn?,pwqlmd=#slsvobqjwzfnsolznfmw?,wbaof=\x0E\t#`lopsbm>!?,elqn=\t##`lmufqpjlmbalvw#wkf#?,s=?,gju=jmwfdqbwfg!#obmd>!fmSlqwvdvfpfpvapwjwvwfjmgjujgvbojnslppjaofnvowjnfgjbbonlpw#boos{#plojg# bsbqw#eqlnpvaif`w#wljm#Fmdojpk`qjwj`jyfgf{`fsw#elqdvjgfojmfplqjdjmboozqfnbqhbaofwkf#pf`lmgk1#`obpp>!?b#wjwof>!+jm`ovgjmdsbqbnfwfqpsqlkjajwfg>#!kwws9,,gj`wjlmbqzsfq`fswjlmqfulovwjlmelvmgbwjlms{8kfjdkw9pv``fppevopvsslqwfqpnjoofmmjvnkjp#ebwkfqwkf#%rvlw8ml.qfsfbw8`lnnfq`jbojmgvpwqjbofm`lvqbdfgbnlvmw#le#vmleej`jbofeej`jfm`zQfefqfm`fp`llqgjmbwfgjp`objnfqf{sfgjwjlmgfufolsjmd`bo`vobwfgpjnsojejfgofdjwjnbwfpvapwqjmd+3!#`obpp>!`lnsofwfozjoovpwqbwfejuf#zfbqpjmpwqvnfmwSvaojpkjmd2!#`obpp>!spz`kloldz`lmejgfm`fmvnafq#le#bapfm`f#leel`vpfg#lmiljmfg#wkfpwqv`wvqfpsqfujlvpoz=?,jeqbnf=lm`f#bdbjmavw#qbwkfqjnnjdqbmwple#`lvqpf/b#dqlvs#leOjwfqbwvqfVmojhf#wkf?,b=%maps8\tevm`wjlm#jw#tbp#wkf@lmufmwjlmbvwlnlajofSqlwfpwbmwbddqfppjufbewfq#wkf#Pjnjobqoz/!#,=?,gju=`loof`wjlm\x0E\tevm`wjlmujpjajojwzwkf#vpf#leulovmwffqpbwwqb`wjlmvmgfq#wkf#wkqfbwfmfg)?\"X@GBWBXjnslqwbm`fjm#dfmfqbowkf#obwwfq?,elqn=\t?,-jmgf{Le+$j#>#38#j#?gjeefqfm`fgfulwfg#wlwqbgjwjlmppfbq`k#elqvowjnbwfozwlvqmbnfmwbwwqjavwfppl.`boofg#~\t?,pwzof=fubovbwjlmfnskbpjyfgb``fppjaof?,pf`wjlm=pv``fppjlmbolmd#tjwkNfbmtkjof/jmgvpwqjfp?,b=?aq#,=kbp#af`lnfbpsf`wp#leWfofujpjlmpveej`jfmwabphfwabooalwk#pjgfp`lmwjmvjmdbm#bqwj`of?jnd#bow>!bgufmwvqfpkjp#nlwkfqnbm`kfpwfqsqjm`jsofpsbqwj`vobq`lnnfmwbqzfeef`wp#legf`jgfg#wl!=?pwqlmd=svaojpkfqpIlvqmbo#legjeej`vowzeb`jojwbwfb``fswbaofpwzof-`pp!\nevm`wjlm#jmmlubwjlm=@lszqjdkwpjwvbwjlmptlvog#kbufavpjmfppfpGj`wjlmbqzpwbwfnfmwplewfm#vpfgsfqpjpwfmwjm#Ibmvbqz`lnsqjpjmd?,wjwof=\t\ngjsolnbwj``lmwbjmjmdsfqelqnjmdf{wfmpjlmpnbz#mlw#af`lm`fsw#le#lm`oj`h>!Jw#jp#boplejmbm`jbo#nbhjmd#wkfOv{fnalvqdbggjwjlmbobqf#`boofgfmdbdfg#jm!p`qjsw!*8avw#jw#tbpfof`wqlmj`lmpvanjw>!\t?\"..#Fmg#fof`wqj`boleej`jboozpvddfpwjlmwls#le#wkfvmojhf#wkfBvpwqbojbmLqjdjmboozqfefqfm`fp\t?,kfbg=\x0E\tqf`ldmjpfgjmjwjbojyfojnjwfg#wlBof{bmgqjbqfwjqfnfmwBgufmwvqfpelvq#zfbqp\t\t%ow8\"..#jm`qfbpjmdgf`lqbwjlmk0#`obpp>!lqjdjmp#lelaojdbwjlmqfdvobwjlm`obppjejfg+evm`wjlm+bgubmwbdfpafjmd#wkf#kjpwlqjbmp?abpf#kqfeqfsfbwfgoztjoojmd#wl`lnsbqbaofgfpjdmbwfgmlnjmbwjlmevm`wjlmbojmpjgf#wkfqfufobwjlmfmg#le#wkfp#elq#wkf#bvwklqjyfgqfevpfg#wlwbhf#sob`fbvwlmlnlvp`lnsqlnjpfslojwj`bo#qfpwbvqbmwwtl#le#wkfEfaqvbqz#1rvbojwz#leptelaif`w-vmgfqpwbmgmfbqoz#bootqjwwfm#azjmwfqujftp!#tjgwk>!2tjwkgqbtboeolbw9ofewjp#vpvbooz`bmgjgbwfpmftpsbsfqpnzpwfqjlvpGfsbqwnfmwafpw#hmltmsbqojbnfmwpvssqfppfg`lmufmjfmwqfnfnafqfggjeefqfmw#pzpwfnbwj`kbp#ofg#wlsqlsbdbmgb`lmwqloofgjmeovfm`fp`fqfnlmjbosql`objnfgSqlwf`wjlmoj#`obpp>!P`jfmwjej``obpp>!ml.wqbgfnbqhpnlqf#wkbm#tjgfpsqfbgOjafqbwjlmwllh#sob`fgbz#le#wkfbp#olmd#bpjnsqjplmfgBggjwjlmbo\t?kfbg=\t?nObalqbwlqzMlufnafq#1f{`fswjlmpJmgvpwqjboubqjfwz#leeolbw9#ofeGvqjmd#wkfbppfppnfmwkbuf#affm#gfbop#tjwkPwbwjpwj`pl``vqqfm`f,vo=?,gju=`ofbqej{!=wkf#svaoj`nbmz#zfbqptkj`k#tfqflufq#wjnf/pzmlmznlvp`lmwfmw!=\tsqfpvnbaozkjp#ebnjozvpfqBdfmw-vmf{sf`wfgjm`ovgjmd#`kboofmdfgb#njmlqjwzvmgfejmfg!afolmdp#wlwbhfm#eqlnjm#L`wlafqslpjwjlm9#pbjg#wl#afqfojdjlvp#Efgfqbwjlm#qltpsbm>!lmoz#b#eftnfbmw#wkbwofg#wl#wkf..=\x0E\t?gju#?ejfogpfw=Bq`kajpkls#`obpp>!mlafjmd#vpfgbssqlb`kfpsqjujofdfpmlp`qjsw=\tqfpvowp#jmnbz#af#wkfFbpwfq#fddnf`kbmjpnpqfbplmbaofSlsvobwjlm@loof`wjlmpfof`wfg!=mlp`qjsw=\x0E,jmgf{-sksbqqjubo#le.ippgh$**8nbmbdfg#wljm`lnsofwf`bpvbowjfp`lnsofwjlm@kqjpwjbmpPfswfnafq#bqjwknfwj`sql`fgvqfpnjdkw#kbufSqlgv`wjlmjw#bssfbqpSkjolplskzeqjfmgpkjsofbgjmd#wldjujmd#wkfwltbqg#wkfdvbqbmwffggl`vnfmwfg`lolq9 333ujgfl#dbnf`lnnjppjlmqfeof`wjmd`kbmdf#wkfbppl`jbwfgpbmp.pfqjelmhfzsqfpp8#sbggjmd9Kf#tbp#wkfvmgfqozjmdwzsj`booz#/#bmg#wkf#pq`Fofnfmwpv``fppjufpjm`f#wkf#pklvog#af#mfwtlqhjmdb``lvmwjmdvpf#le#wkfoltfq#wkbmpkltp#wkbw?,psbm=\t\n\n`lnsobjmwp`lmwjmvlvprvbmwjwjfpbpwqlmlnfqkf#gjg#mlwgvf#wl#jwpbssojfg#wlbm#bufqbdffeelqwp#wlwkf#evwvqfbwwfnsw#wlWkfqfelqf/`bsbajojwzQfsvaoj`bmtbp#elqnfgFof`wqlmj`hjolnfwfqp`kboofmdfpsvaojpkjmdwkf#elqnfqjmgjdfmlvpgjqf`wjlmppvapjgjbqz`lmpsjqb`zgfwbjop#lebmg#jm#wkfbeelqgbaofpvapwbm`fpqfbplm#elq`lmufmwjlmjwfnwzsf>!baplovwfozpvsslpfgozqfnbjmfg#bbwwqb`wjufwqbufoojmdpfsbqbwfozel`vpfp#lmfofnfmwbqzbssoj`baofelvmg#wkbwpwzofpkffwnbmvp`qjswpwbmgp#elq#ml.qfsfbw+plnfwjnfp@lnnfq`jbojm#Bnfqj`bvmgfqwbhfmrvbqwfq#lebm#f{bnsofsfqplmboozjmgf{-sks!owqOjfvwfmbmw\t?gju#jg>!wkfz#tlvogbajojwz#lenbgf#vs#lemlwfg#wkbw`ofbq#wkbwbqdvf#wkbwwl#bmlwkfq`kjogqfm$psvqslpf#leelqnvobwfgabpfg#vslmwkf#qfdjlmpvaif`w#lesbppfmdfqpslppfppjlm-\t\tJm#wkf#Afelqf#wkfbewfqtbqgp`vqqfmwoz#b`qlpp#wkfp`jfmwjej``lnnvmjwz-`bsjwbojpnjm#Dfqnbmzqjdkw.tjmdwkf#pzpwfnPl`jfwz#leslojwj`jbmgjqf`wjlm9tfmw#lm#wlqfnlubo#le#Mft#Zlqh#bsbqwnfmwpjmgj`bwjlmgvqjmd#wkfvmofpp#wkfkjpwlqj`bokbg#affm#bgfejmjwjufjmdqfgjfmwbwwfmgbm`f@fmwfq#elqsqlnjmfm`fqfbgzPwbwfpwqbwfdjfpavw#jm#wkfbp#sbqw#le`lmpwjwvwf`objn#wkbwobalqbwlqz`lnsbwjaofebjovqf#le/#pv`k#bp#afdbm#tjwkvpjmd#wkf#wl#sqlujgfefbwvqf#leeqln#tkj`k,!#`obpp>!dfloldj`bopfufqbo#legfojafqbwfjnslqwbmw#klogp#wkbwjmd%rvlw8#ubojdm>wlswkf#Dfqnbmlvwpjgf#lemfdlwjbwfgkjp#`bqffqpfsbqbwjlmjg>!pfbq`ktbp#`boofgwkf#elvqwkqf`qfbwjlmlwkfq#wkbmsqfufmwjlmtkjof#wkf#fgv`bwjlm/`lmmf`wjmdb``vqbwfoztfqf#avjowtbp#hjoofgbdqffnfmwpnv`k#nlqf#Gvf#wl#wkftjgwk9#233plnf#lwkfqHjmdgln#lewkf#fmwjqfebnlvp#elqwl#`lmmf`wlaif`wjufpwkf#Eqfm`ksflsof#bmgefbwvqfg!=jp#pbjg#wlpwqv`wvqboqfefqfmgvnnlpw#lewfmb#pfsbqbwf.=\t?gju#jg#Leej`jbo#tlqogtjgf-bqjb.obafowkf#sobmfwbmg#jw#tbpg!#ubovf>!ollhjmd#bwafmfej`jbobqf#jm#wkfnlmjwlqjmdqfslqwfgozwkf#nlgfqmtlqhjmd#lmbooltfg#wltkfqf#wkf#jmmlubwjuf?,b=?,gju=plvmgwqb`hpfbq`kElqnwfmg#wl#afjmsvw#jg>!lsfmjmd#leqfpwqj`wfgbglswfg#azbggqfppjmdwkfloldjbmnfwklgp#leubqjbmw#le@kqjpwjbm#ufqz#obqdfbvwlnlwjufaz#ebq#wkfqbmdf#eqlnsvqpvjw#leeloolt#wkfaqlvdkw#wljm#Fmdobmgbdqff#wkbwb``vpfg#le`lnfp#eqlnsqfufmwjmdgju#pwzof>kjp#lq#kfqwqfnfmglvpeqffgln#le`lm`fqmjmd3#2fn#2fn8Abphfwaboo,pwzof-`ppbm#fbqojfqfufm#bewfq,!#wjwof>!-`ln,jmgf{wbhjmd#wkfsjwwpavqdk`lmwfmw!=\x0E?p`qjsw=+ewvqmfg#lvwkbujmd#wkf?,psbm=\x0E\t#l``bpjlmboaf`bvpf#jwpwbqwfg#wlskzpj`booz=?,gju=\t##`qfbwfg#az@vqqfmwoz/#ad`lolq>!wbajmgf{>!gjpbpwqlvpBmbozwj`p#bopl#kbp#b=?gju#jg>!?,pwzof=\t?`boofg#elqpjmdfq#bmg-pq`#>#!,,ujlobwjlmpwkjp#sljmw`lmpwbmwozjp#ol`bwfgqf`lqgjmdpg#eqln#wkfmfgfqobmgpslqwvdv/Fp;N;};D;u;F5m4K4]4_7`gfpbqqlool`lnfmwbqjlfgv`b`j/_mpfswjfnaqfqfdjpwqbglgjqf``j/_mvaj`b`j/_msvaoj`jgbgqfpsvfpwbpqfpvowbglpjnslqwbmwfqfpfqubglpbqw/A`volpgjefqfmwfppjdvjfmwfpqfs/Vaoj`bpjwvb`j/_mnjmjpwfqjlsqjub`jgbggjqf`wlqjlelqnb`j/_mslaob`j/_msqfpjgfmwf`lmw", "fmjglpb``fplqjlpwf`kmlqbwjsfqplmbofp`bwfdlq/Abfpsf`jbofpgjpslmjaofb`wvbojgbgqfefqfm`jbuboobglojgajaojlwf`bqfob`jlmfp`bofmgbqjlslo/Awj`bpbmwfqjlqfpgl`vnfmwlpmbwvqbofybnbwfqjbofpgjefqfm`jbf`lm/_nj`bwqbmpslqwfqlgq/Advfysbqwj`jsbqfm`vfmwqbmgjp`vpj/_mfpwqv`wvqbevmgb`j/_meqf`vfmwfpsfqnbmfmwfwlwbonfmwf!2s{#plojg# -dje!#bow>!wqbmpsbqfmwjmelqnbwjlmbssoj`bwjlm!#lm`oj`h>!fpwbaojpkfgbgufqwjpjmd-smd!#bow>!fmujqlmnfmwsfqelqnbm`fbssqlsqjbwf%bns8ngbpk8jnnfgjbwfoz?,pwqlmd=?,qbwkfq#wkbmwfnsfqbwvqfgfufolsnfmw`lnsfwjwjlmsob`fklogfqujpjajojwz9`lszqjdkw!=3!#kfjdkw>!fufm#wklvdkqfsob`fnfmwgfpwjmbwjlm@lqslqbwjlm?vo#`obpp>!Bppl`jbwjlmjmgjujgvbopsfqpsf`wjufpfwWjnflvw+vqo+kwws9,,nbwkfnbwj`pnbqdjm.wls9fufmwvbooz#gfp`qjswjlm*#ml.qfsfbw`loof`wjlmp-ISD\x7Fwkvna\x7Fsbqwj`jsbwf,kfbg=?algzeolbw9ofew8?oj#`obpp>!kvmgqfgp#le\t\tKltfufq/#`lnslpjwjlm`ofbq9alwk8`llsfqbwjlmtjwkjm#wkf#obafo#elq>!alqgfq.wls9Mft#Yfbobmgqf`lnnfmgfgsklwldqbskzjmwfqfpwjmd%ow8pvs%dw8`lmwqlufqpzMfwkfqobmgpbowfqmbwjufnb{ofmdwk>!ptjwyfqobmgGfufolsnfmwfppfmwjbooz\t\tBowklvdk#?,wf{wbqfb=wkvmgfqajqgqfsqfpfmwfg%bns8mgbpk8psf`vobwjlm`lnnvmjwjfpofdjpobwjlmfof`wqlmj`p\t\n?gju#jg>!joovpwqbwfgfmdjmffqjmdwfqqjwlqjfpbvwklqjwjfpgjpwqjavwfg5!#kfjdkw>!pbmp.pfqje8`bsbaof#le#gjpbssfbqfgjmwfqb`wjufollhjmd#elqjw#tlvog#afBedkbmjpwbmtbp#`qfbwfgNbwk-eollq+pvqqlvmgjmd`bm#bopl#aflapfqubwjlmnbjmwfmbm`ffm`lvmwfqfg?k1#`obpp>!nlqf#qf`fmwjw#kbp#affmjmubpjlm#le*-dfwWjnf+*evmgbnfmwboGfpsjwf#wkf!=?gju#jg>!jmpsjqbwjlmf{bnjmbwjlmsqfsbqbwjlmf{sobmbwjlm?jmsvw#jg>!?,b=?,psbm=ufqpjlmp#lejmpwqvnfmwpafelqf#wkf##>#$kwws9,,Gfp`qjswjlmqfobwjufoz#-pvapwqjmd+fb`k#le#wkff{sfqjnfmwpjmeovfmwjbojmwfdqbwjlmnbmz#sflsofgvf#wl#wkf#`lnajmbwjlmgl#mlw#kbufNjggof#Fbpw?mlp`qjsw=?`lszqjdkw!#sfqkbsp#wkfjmpwjwvwjlmjm#Gf`fnafqbqqbmdfnfmwnlpw#ebnlvpsfqplmbojwz`qfbwjlm#leojnjwbwjlmpf{`ovpjufozplufqfjdmwz.`lmwfmw!=\t?wg#`obpp>!vmgfqdqlvmgsbqboofo#wlgl`wqjmf#lel``vsjfg#azwfqnjmloldzQfmbjppbm`fb#mvnafq#lepvsslqw#elqf{solqbwjlmqf`ldmjwjlmsqfgf`fpplq?jnd#pq`>!,?k2#`obpp>!svaoj`bwjlmnbz#bopl#afpsf`jbojyfg?,ejfogpfw=sqldqfppjufnjoojlmp#lepwbwfp#wkbwfmelq`fnfmwbqlvmg#wkf#lmf#bmlwkfq-sbqfmwMlgfbdqj`vowvqfBowfqmbwjufqfpfbq`kfqpwltbqgp#wkfNlpw#le#wkfnbmz#lwkfq#+fpsf`jbooz?wg#tjgwk>!8tjgwk9233&jmgfsfmgfmw?k0#`obpp>!#lm`kbmdf>!*-bgg@obpp+jmwfqb`wjlmLmf#le#wkf#gbvdkwfq#leb``fpplqjfpaqbm`kfp#le\x0E\t?gju#jg>!wkf#obqdfpwgf`obqbwjlmqfdvobwjlmpJmelqnbwjlmwqbmpobwjlmgl`vnfmwbqzjm#lqgfq#wl!=\t?kfbg=\t?!#kfjdkw>!2b`qlpp#wkf#lqjfmwbwjlm*8?,p`qjsw=jnsofnfmwfg`bm#af#pffmwkfqf#tbp#bgfnlmpwqbwf`lmwbjmfq!=`lmmf`wjlmpwkf#Aqjwjpktbp#tqjwwfm\"jnslqwbmw8s{8#nbqdjm.elooltfg#azbajojwz#wl#`lnsoj`bwfggvqjmd#wkf#jnnjdqbwjlmbopl#`boofg?k7#`obpp>!gjpwjm`wjlmqfsob`fg#azdlufqmnfmwpol`bwjlm#lejm#Mlufnafqtkfwkfq#wkf?,s=\t?,gju=b`rvjpjwjlm`boofg#wkf#sfqpf`vwjlmgfpjdmbwjlmxelmw.pjyf9bssfbqfg#jmjmufpwjdbwff{sfqjfm`fgnlpw#ojhfoztjgfoz#vpfggjp`vppjlmpsqfpfm`f#le#+gl`vnfmw-f{wfmpjufozJw#kbp#affmjw#glfp#mlw`lmwqbqz#wljmkbajwbmwpjnsqlufnfmwp`klobqpkjs`lmpvnswjlmjmpwqv`wjlmelq#f{bnsoflmf#lq#nlqfs{8#sbggjmdwkf#`vqqfmwb#pfqjfp#lebqf#vpvboozqlof#jm#wkfsqfujlvpoz#gfqjubwjufpfujgfm`f#lef{sfqjfm`fp`lolqp`kfnfpwbwfg#wkbw`fqwjej`bwf?,b=?,gju=\t#pfof`wfg>!kjdk#p`klloqfpslmpf#wl`lnelqwbaofbglswjlm#lewkqff#zfbqpwkf#`lvmwqzjm#Efaqvbqzpl#wkbw#wkfsflsof#tkl#sqlujgfg#az?sbqbn#mbnfbeef`wfg#azjm#wfqnp#lebssljmwnfmwJPL.;;6:.2!tbp#alqm#jmkjpwlqj`bo#qfdbqgfg#bpnfbpvqfnfmwjp#abpfg#lm#bmg#lwkfq#9#evm`wjlm+pjdmjej`bmw`fofaqbwjlmwqbmpnjwwfg,ip,irvfqz-jp#hmltm#bpwkflqfwj`bo#wbajmgf{>!jw#`lvog#af?mlp`qjsw=\tkbujmd#affm\x0E\t?kfbg=\x0E\t?#%rvlw8Wkf#`lnsjobwjlmkf#kbg#affmsqlgv`fg#azskjolplskfq`lmpwqv`wfgjmwfmgfg#wlbnlmd#lwkfq`lnsbqfg#wlwl#pbz#wkbwFmdjmffqjmdb#gjeefqfmwqfefqqfg#wlgjeefqfm`fpafojfe#wkbwsklwldqbskpjgfmwjezjmdKjpwlqz#le#Qfsvaoj`#lemf`fppbqjozsqlabajojwzwf`kmj`boozofbujmd#wkfpsf`wb`vobqeqb`wjlm#lefof`wqj`jwzkfbg#le#wkfqfpwbvqbmwpsbqwmfqpkjsfnskbpjp#lmnlpw#qf`fmwpkbqf#tjwk#pbzjmd#wkbwejoofg#tjwkgfpjdmfg#wljw#jp#lewfm!=?,jeqbnf=bp#elooltp9nfqdfg#tjwkwkqlvdk#wkf`lnnfq`jbo#sljmwfg#lvwlsslqwvmjwzujft#le#wkfqfrvjqfnfmwgjujpjlm#lesqldqbnnjmdkf#qf`fjufgpfwJmwfqubo!=?,psbm=?,jm#Mft#Zlqhbggjwjlmbo#`lnsqfppjlm\t\t?gju#jg>!jm`lqslqbwf8?,p`qjsw=?bwwb`kFufmwaf`bnf#wkf#!#wbqdfw>!\\`bqqjfg#lvwPlnf#le#wkfp`jfm`f#bmgwkf#wjnf#le@lmwbjmfq!=nbjmwbjmjmd@kqjpwlskfqNv`k#le#wkftqjwjmdp#le!#kfjdkw>!1pjyf#le#wkfufqpjlm#le#nj{wvqf#le#afwtffm#wkfF{bnsofp#lefgv`bwjlmbo`lnsfwjwjuf#lmpvanjw>!gjqf`wlq#legjpwjm`wjuf,GWG#[KWNO#qfobwjmd#wlwfmgfm`z#wlsqlujm`f#letkj`k#tlvoggfpsjwf#wkfp`jfmwjej`#ofdjpobwvqf-jmmfqKWNO#boofdbwjlmpBdqj`vowvqftbp#vpfg#jmbssqlb`k#wljmwfoojdfmwzfbqp#obwfq/pbmp.pfqjegfwfqnjmjmdSfqelqnbm`fbssfbqbm`fp/#tkj`k#jp#elvmgbwjlmpbaaqfujbwfgkjdkfq#wkbmp#eqln#wkf#jmgjujgvbo#`lnslpfg#lepvsslpfg#wl`objnp#wkbwbwwqjavwjlmelmw.pjyf92fofnfmwp#leKjpwlqj`bo#kjp#aqlwkfqbw#wkf#wjnfbmmjufqpbqzdlufqmfg#azqfobwfg#wl#vowjnbwfoz#jmmlubwjlmpjw#jp#pwjoo`bm#lmoz#afgfejmjwjlmpwlDNWPwqjmdB#mvnafq#lejnd#`obpp>!Fufmwvbooz/tbp#`kbmdfgl``vqqfg#jmmfjdkalqjmdgjpwjmdvjpktkfm#kf#tbpjmwqlgv`jmdwfqqfpwqjboNbmz#le#wkfbqdvfp#wkbwbm#Bnfqj`bm`lmrvfpw#letjgfpsqfbg#tfqf#hjoofgp`qffm#bmg#Jm#lqgfq#wlf{sf`wfg#wlgfp`fmgbmwpbqf#ol`bwfgofdjpobwjufdfmfqbwjlmp#ab`hdqlvmgnlpw#sflsofzfbqp#bewfqwkfqf#jp#mlwkf#kjdkfpweqfrvfmwoz#wkfz#gl#mlwbqdvfg#wkbwpkltfg#wkbwsqfglnjmbmwwkfloldj`boaz#wkf#wjnf`lmpjgfqjmdpklqw.ojufg?,psbm=?,b=`bm#af#vpfgufqz#ojwwoflmf#le#wkf#kbg#boqfbgzjmwfqsqfwfg`lnnvmj`bwfefbwvqfp#ledlufqmnfmw/?,mlp`qjsw=fmwfqfg#wkf!#kfjdkw>!0Jmgfsfmgfmwslsvobwjlmpobqdf.p`bof-#Bowklvdk#vpfg#jm#wkfgfpwqv`wjlmslppjajojwzpwbqwjmd#jmwtl#lq#nlqff{sqfppjlmppvalqgjmbwfobqdfq#wkbmkjpwlqz#bmg?,lswjlm=\x0E\t@lmwjmfmwbofojnjmbwjmdtjoo#mlw#afsqb`wj`f#lejm#eqlmw#lepjwf#le#wkffmpvqf#wkbwwl#`qfbwf#bnjppjppjssjslwfmwjboozlvwpwbmgjmdafwwfq#wkbmtkbw#jp#mltpjwvbwfg#jmnfwb#mbnf>!WqbgjwjlmbopvddfpwjlmpWqbmpobwjlmwkf#elqn#lebwnlpskfqj`jgfloldj`bofmwfqsqjpfp`bo`vobwjmdfbpw#le#wkfqfnmbmwp#lesovdjmpsbdf,jmgf{-sks!Wkjp#jp#wkf#?b#kqfe>!,slsvobqjyfgjmuloufg#jmbqf#vpfg#wlbmg#pfufqbonbgf#az#wkfpffnp#wl#afojhfoz#wkbwSbofpwjmjbmmbnfg#bewfqjw#kbg#affmnlpw#`lnnlmwl#qfefq#wlavw#wkjp#jp`lmpf`vwjufwfnslqbqjozJm#dfmfqbo/`lmufmwjlmpwbhfp#sob`fpvagjujpjlmwfqqjwlqjbolsfqbwjlmbosfqnbmfmwoztbp#obqdfozlvwaqfbh#lejm#wkf#sbpwelooltjmd#b#{nomp9ld>!=?b#`obpp>!`obpp>!wf{w@lmufqpjlm#nbz#af#vpfgnbmveb`wvqfbewfq#afjmd`ofbqej{!=\trvfpwjlm#letbp#fof`wfgwl#af`lnf#baf`bvpf#le#plnf#sflsofjmpsjqfg#azpv``fppevo#b#wjnf#tkfmnlqf#`lnnlmbnlmdpw#wkfbm#leej`jbotjgwk9233&8wf`kmloldz/tbp#bglswfgwl#hffs#wkfpfwwofnfmwpojuf#ajqwkpjmgf{-kwno!@lmmf`wj`vwbppjdmfg#wl%bns8wjnfp8b``lvmw#elqbojdm>qjdkwwkf#`lnsbmzbotbzp#affmqfwvqmfg#wljmuloufnfmwAf`bvpf#wkfwkjp#sfqjlg!#mbnf>!r!#`lmejmfg#wlb#qfpvow#leubovf>!!#,=jp#b`wvboozFmujqlmnfmw\x0E\t?,kfbg=\x0E\t@lmufqpfoz/=\t?gju#jg>!3!#tjgwk>!2jp#sqlabaozkbuf#af`lnf`lmwqloojmdwkf#sqlaofn`jwjyfmp#leslojwj`jbmpqfb`kfg#wkfbp#fbqoz#bp9mlmf8#lufq?wbaof#`fooubojgjwz#legjqf`woz#wllmnlvpfgltmtkfqf#jw#jptkfm#jw#tbpnfnafqp#le#qfobwjlm#wlb``lnnlgbwfbolmd#tjwk#Jm#wkf#obwfwkf#Fmdojpkgfoj`jlvp!=wkjp#jp#mlwwkf#sqfpfmwje#wkfz#bqfbmg#ejmboozb#nbwwfq#le\x0E\t\n?,gju=\x0E\t\x0E\t?,p`qjsw=ebpwfq#wkbmnbilqjwz#lebewfq#tkj`k`lnsbqbwjufwl#nbjmwbjmjnsqluf#wkfbtbqgfg#wkffq!#`obpp>!eqbnfalqgfqqfpwlqbwjlmjm#wkf#pbnfbmbozpjp#lewkfjq#ejqpwGvqjmd#wkf#`lmwjmfmwbopfrvfm`f#leevm`wjlm+*xelmw.pjyf9#tlqh#lm#wkf?,p`qjsw=\t?afdjmp#tjwkibubp`qjsw9`lmpwjwvfmwtbp#elvmgfgfrvjojaqjvnbppvnf#wkbwjp#djufm#azmffgp#wl#af`llqgjmbwfpwkf#ubqjlvpbqf#sbqw#lelmoz#jm#wkfpf`wjlmp#lejp#b#`lnnlmwkflqjfp#legjp`lufqjfpbppl`jbwjlmfgdf#le#wkfpwqfmdwk#leslpjwjlm#jmsqfpfmw.gbzvmjufqpboozwl#elqn#wkfavw#jmpwfbg`lqslqbwjlmbwwb`kfg#wljp#`lnnlmozqfbplmp#elq#%rvlw8wkf#`bm#af#nbgftbp#baof#wltkj`k#nfbmpavw#gjg#mlwlmNlvpfLufqbp#slppjaoflsfqbwfg#az`lnjmd#eqlnwkf#sqjnbqzbggjwjlm#leelq#pfufqbowqbmpefqqfgb#sfqjlg#lebqf#baof#wlkltfufq/#jwpklvog#kbufnv`k#obqdfq\t\n?,p`qjsw=bglswfg#wkfsqlsfqwz#legjqf`wfg#azfeef`wjufoztbp#aqlvdkw`kjogqfm#leSqldqbnnjmdolmdfq#wkbmnbmvp`qjswptbq#bdbjmpwaz#nfbmp#lebmg#nlpw#lepjnjobq#wl#sqlsqjfwbqzlqjdjmbwjmdsqfpwjdjlvpdqbnnbwj`bof{sfqjfm`f-wl#nbhf#wkfJw#tbp#bopljp#elvmg#jm`lnsfwjwlqpjm#wkf#V-P-qfsob`f#wkfaqlvdkw#wkf`bo`vobwjlmeboo#le#wkfwkf#dfmfqbosqb`wj`boozjm#klmlq#leqfofbpfg#jmqfpjgfmwjbobmg#plnf#lehjmd#le#wkfqfb`wjlm#wl2pw#Fbqo#le`vowvqf#bmgsqjm`jsbooz?,wjwof=\t##wkfz#`bm#afab`h#wl#wkfplnf#le#kjpf{slpvqf#wlbqf#pjnjobqelqn#le#wkfbggEbulqjwf`jwjyfmpkjssbqw#jm#wkfsflsof#tjwkjm#sqb`wj`fwl#`lmwjmvf%bns8njmvp8bssqlufg#az#wkf#ejqpw#booltfg#wkfbmg#elq#wkfevm`wjlmjmdsobzjmd#wkfplovwjlm#wlkfjdkw>!3!#jm#kjp#allhnlqf#wkbm#belooltp#wkf`qfbwfg#wkfsqfpfm`f#jm%maps8?,wg=mbwjlmbojpwwkf#jgfb#leb#`kbqb`wfqtfqf#elq`fg#`obpp>!awmgbzp#le#wkfefbwvqfg#jmpkltjmd#wkfjmwfqfpw#jmjm#sob`f#lewvqm#le#wkfwkf#kfbg#leOlqg#le#wkfslojwj`boozkbp#jwp#ltmFgv`bwjlmbobssqlubo#leplnf#le#wkffb`k#lwkfq/afkbujlq#lebmg#af`bvpfbmg#bmlwkfqbssfbqfg#lmqf`lqgfg#jmaob`h%rvlw8nbz#jm`ovgfwkf#tlqog$p`bm#ofbg#wlqfefqp#wl#balqgfq>!3!#dlufqmnfmw#tjmmjmd#wkfqfpvowfg#jm#tkjof#wkf#Tbpkjmdwlm/wkf#pvaif`w`jwz#jm#wkf=?,gju=\x0E\t\n\nqfeof`w#wkfwl#`lnsofwfaf`bnf#nlqfqbgjlb`wjufqfif`wfg#aztjwklvw#bmzkjp#ebwkfq/tkj`k#`lvog`lsz#le#wkfwl#jmgj`bwfb#slojwj`bob``lvmwp#le`lmpwjwvwfptlqhfg#tjwkfq?,b=?,oj=le#kjp#ojefb``lnsbmjfg`ojfmwTjgwksqfufmw#wkfOfdjpobwjufgjeefqfmwozwldfwkfq#jmkbp#pfufqboelq#bmlwkfqwf{w#le#wkfelvmgfg#wkff#tjwk#wkf#jp#vpfg#elq`kbmdfg#wkfvpvbooz#wkfsob`f#tkfqftkfqfbp#wkf=#?b#kqfe>!!=?b#kqfe>!wkfnpfoufp/bowklvdk#kfwkbw#`bm#afwqbgjwjlmboqlof#le#wkfbp#b#qfpvowqfnluf@kjoggfpjdmfg#aztfpw#le#wkfPlnf#sflsofsqlgv`wjlm/pjgf#le#wkfmftpofwwfqpvpfg#az#wkfgltm#wl#wkfb``fswfg#azojuf#jm#wkfbwwfnswp#wllvwpjgf#wkfeqfrvfm`jfpKltfufq/#jmsqldqbnnfqpbw#ofbpw#jmbssql{jnbwfbowklvdk#jwtbp#sbqw#lebmg#ubqjlvpDlufqmlq#lewkf#bqwj`ofwvqmfg#jmwl=?b#kqfe>!,wkf#f`lmlnzjp#wkf#nlpwnlpw#tjgfoztlvog#obwfqbmg#sfqkbspqjpf#wl#wkfl``vqp#tkfmvmgfq#tkj`k`lmgjwjlmp-wkf#tfpwfqmwkflqz#wkbwjp#sqlgv`fgwkf#`jwz#lejm#tkj`k#kfpffm#jm#wkfwkf#`fmwqboavjogjmd#lenbmz#le#kjpbqfb#le#wkfjp#wkf#lmoznlpw#le#wkfnbmz#le#wkfwkf#TfpwfqmWkfqf#jp#mlf{wfmgfg#wlPwbwjpwj`bo`lopsbm>1#\x7Fpklqw#pwlqzslppjaof#wlwlsloldj`bo`qjwj`bo#leqfslqwfg#wlb#@kqjpwjbmgf`jpjlm#wljp#frvbo#wlsqlaofnp#leWkjp#`bm#afnfq`kbmgjpfelq#nlpw#leml#fujgfm`ffgjwjlmp#lefofnfmwp#jm%rvlw8-#Wkf`ln,jnbdfp,tkj`k#nbhfpwkf#sql`fppqfnbjmp#wkfojwfqbwvqf/jp#b#nfnafqwkf#slsvobqwkf#bm`jfmwsqlaofnp#jmwjnf#le#wkfgfefbwfg#azalgz#le#wkfb#eft#zfbqpnv`k#le#wkfwkf#tlqh#le@bojelqmjb/pfqufg#bp#bdlufqmnfmw-`lm`fswp#lenlufnfmw#jm\n\n?gju#jg>!jw!#ubovf>!obmdvbdf#lebp#wkfz#bqfsqlgv`fg#jmjp#wkbw#wkff{sobjm#wkfgju=?,gju=\tKltfufq#wkfofbg#wl#wkf\n?b#kqfe>!,tbp#dqbmwfgsflsof#kbuf`lmwjmvbooztbp#pffm#bpbmg#qfobwfgwkf#qlof#lesqlslpfg#azle#wkf#afpwfb`k#lwkfq-@lmpwbmwjmfsflsof#eqlngjbof`wp#lewl#qfujpjlmtbp#qfmbnfgb#plvq`f#lewkf#jmjwjboobvm`kfg#jmsqlujgf#wkfwl#wkf#tfpwtkfqf#wkfqfbmg#pjnjobqafwtffm#wtljp#bopl#wkfFmdojpk#bmg`lmgjwjlmp/wkbw#jw#tbpfmwjwofg#wlwkfnpfoufp-rvbmwjwz#leqbmpsbqfm`zwkf#pbnf#bpwl#iljm#wkf`lvmwqz#bmgwkjp#jp#wkfWkjp#ofg#wlb#pwbwfnfmw`lmwqbpw#wlobpwJmgf{Lewkqlvdk#kjpjp#gfpjdmfgwkf#wfqn#jpjp#sqlujgfgsqlwf`w#wkfmd?,b=?,oj=Wkf#`vqqfmwwkf#pjwf#lepvapwbmwjbof{sfqjfm`f/jm#wkf#Tfpwwkfz#pklvogpolufm(ajmb`lnfmwbqjlpvmjufqpjgbg`lmgj`jlmfpb`wjujgbgfpf{sfqjfm`jbwf`mlold/Absqlgv``j/_msvmwvb`j/_mbsoj`b`j/_m`lmwqbpf/]b`bwfdlq/Abpqfdjpwqbqpfsqlefpjlmbowqbwbnjfmwlqfd/Apwqbwfpf`qfwbq/Absqjm`jsbofpsqlwf``j/_mjnslqwbmwfpjnslqwbm`jbslpjajojgbgjmwfqfpbmwf`qf`jnjfmwlmf`fpjgbgfppvp`qjajqpfbpl`jb`j/_mgjpslmjaofpfubovb`j/_mfpwvgjbmwfpqfpslmpbaofqfplov`j/_mdvbgbobibqbqfdjpwqbglplslqwvmjgbg`lnfq`jbofpelwldqbe/Abbvwlqjgbgfpjmdfmjfq/Abwfofujpj/_m`lnsfwfm`jblsfqb`jlmfpfpwbaof`jglpjnsofnfmwfb`wvbonfmwfmbufdb`j/_m`lmelqnjgbgojmf.kfjdkw9elmw.ebnjoz9!#9#!kwws9,,bssoj`bwjlmpojmh!#kqfe>!psf`jej`booz,,?\"X@GBWBX\tLqdbmjybwjlmgjpwqjavwjlm3s{8#kfjdkw9qfobwjlmpkjsgfuj`f.tjgwk?gju#`obpp>!?obafo#elq>!qfdjpwqbwjlm?,mlp`qjsw=\t,jmgf{-kwno!tjmglt-lsfm+#\"jnslqwbmw8bssoj`bwjlm,jmgfsfmgfm`f,,ttt-dlldoflqdbmjybwjlmbvwl`lnsofwfqfrvjqfnfmwp`lmpfqubwjuf?elqn#mbnf>!jmwfoof`wvbonbqdjm.ofew92;wk#`fmwvqzbm#jnslqwbmwjmpwjwvwjlmpbaaqfujbwjlm?jnd#`obpp>!lqdbmjpbwjlm`jujojybwjlm2:wk#`fmwvqzbq`kjwf`wvqfjm`lqslqbwfg13wk#`fmwvqz.`lmwbjmfq!=nlpw#mlwbaoz,=?,b=?,gju=mlwjej`bwjlm$vmgfejmfg$*Evqwkfqnlqf/afojfuf#wkbwjmmfqKWNO#>#sqjlq#wl#wkfgqbnbwj`boozqfefqqjmd#wlmfdlwjbwjlmpkfbgrvbqwfqpPlvwk#Beqj`bvmpv``fppevoSfmmpzoubmjbBp#b#qfpvow/?kwno#obmd>!%ow8,pvs%dw8gfbojmd#tjwkskjobgfoskjbkjpwlqj`booz*8?,p`qjsw=\tsbggjmd.wls9f{sfqjnfmwbodfwBwwqjavwfjmpwqv`wjlmpwf`kmloldjfpsbqw#le#wkf#>evm`wjlm+*xpvap`qjswjlmo-gwg!=\x0E\t?kwdfldqbskj`bo@lmpwjwvwjlm$/#evm`wjlm+pvsslqwfg#azbdqj`vowvqbo`lmpwqv`wjlmsvaoj`bwjlmpelmw.pjyf9#2b#ubqjfwz#le?gju#pwzof>!Fm`z`olsfgjbjeqbnf#pq`>!gfnlmpwqbwfgb``lnsojpkfgvmjufqpjwjfpGfnldqbskj`p*8?,p`qjsw=?gfgj`bwfg#wlhmltofgdf#lepbwjpeb`wjlmsbqwj`vobqoz?,gju=?,gju=Fmdojpk#+VP*bssfmg@kjog+wqbmpnjppjlmp-#Kltfufq/#jmwfoojdfm`f!#wbajmgf{>!eolbw9qjdkw8@lnnlmtfbowkqbmdjmd#eqlnjm#tkj`k#wkfbw#ofbpw#lmfqfsqlgv`wjlmfm`z`olsfgjb8elmw.pjyf92ivqjpgj`wjlmbw#wkbw#wjnf!=?b#`obpp>!Jm#bggjwjlm/gfp`qjswjlm(`lmufqpbwjlm`lmwb`w#tjwkjp#dfmfqboozq!#`lmwfmw>!qfsqfpfmwjmd%ow8nbwk%dw8sqfpfmwbwjlml``bpjlmbooz?jnd#tjgwk>!mbujdbwjlm!=`lnsfmpbwjlm`kbnsjlmpkjsnfgjb>!boo!#ujlobwjlm#leqfefqfm`f#wlqfwvqm#wqvf8Pwqj`w,,FM!#wqbmpb`wjlmpjmwfqufmwjlmufqjej`bwjlmJmelqnbwjlm#gjeej`vowjfp@kbnsjlmpkjs`bsbajojwjfp?\"Xfmgje^..=~\t?,p`qjsw=\t@kqjpwjbmjwzelq#f{bnsof/Sqlefppjlmboqfpwqj`wjlmppvddfpw#wkbwtbp#qfofbpfg+pv`k#bp#wkfqfnluf@obpp+vmfnsolznfmwwkf#Bnfqj`bmpwqv`wvqf#le,jmgf{-kwno#svaojpkfg#jmpsbm#`obpp>!!=?b#kqfe>!,jmwqlgv`wjlmafolmdjmd#wl`objnfg#wkbw`lmpfrvfm`fp?nfwb#mbnf>!Dvjgf#wl#wkflufqtkfonjmdbdbjmpw#wkf#`lm`fmwqbwfg/\t-mlmwlv`k#lapfqubwjlmp?,b=\t?,gju=\te#+gl`vnfmw-alqgfq9#2s{#xelmw.pjyf92wqfbwnfmw#le3!#kfjdkw>!2nlgjej`bwjlmJmgfsfmgfm`fgjujgfg#jmwldqfbwfq#wkbmb`kjfufnfmwpfpwbaojpkjmdIbubP`qjsw!#mfufqwkfofpppjdmjej`bm`fAqlbg`bpwjmd=%maps8?,wg=`lmwbjmfq!=\tpv`k#bp#wkf#jmeovfm`f#leb#sbqwj`vobqpq`>$kwws9,,mbujdbwjlm!#kboe#le#wkf#pvapwbmwjbo#%maps8?,gju=bgubmwbdf#legjp`lufqz#leevmgbnfmwbo#nfwqlslojwbmwkf#lsslpjwf!#{no9obmd>!gfojafqbwfozbojdm>`fmwfqfulovwjlm#lesqfpfqubwjlmjnsqlufnfmwpafdjmmjmd#jmIfpvp#@kqjpwSvaoj`bwjlmpgjpbdqffnfmwwf{w.bojdm9q/#evm`wjlm+*pjnjobqjwjfpalgz=?,kwno=jp#`vqqfmwozboskbafwj`bojp#plnfwjnfpwzsf>!jnbdf,nbmz#le#wkf#eolt9kjggfm8bubjobaof#jmgfp`qjaf#wkff{jpwfm`f#leboo#lufq#wkfwkf#Jmwfqmfw\n?vo#`obpp>!jmpwboobwjlmmfjdkalqkllgbqnfg#elq`fpqfgv`jmd#wkf`lmwjmvfp#wlMlmfwkfofpp/wfnsfqbwvqfp\t\n\n?b#kqfe>!`olpf#wl#wkff{bnsofp#le#jp#balvw#wkf+pff#afolt*-!#jg>!pfbq`ksqlefppjlmbojp#bubjobaofwkf#leej`jbo\n\n?,p`qjsw=\t\t\n\n?gju#jg>!b``fofqbwjlmwkqlvdk#wkf#Kboo#le#Ebnfgfp`qjswjlmpwqbmpobwjlmpjmwfqefqfm`f#wzsf>$wf{w,qf`fmw#zfbqpjm#wkf#tlqogufqz#slsvobqxab`hdqlvmg9wqbgjwjlmbo#plnf#le#wkf#`lmmf`wfg#wlf{soljwbwjlmfnfqdfm`f#le`lmpwjwvwjlmB#Kjpwlqz#lepjdmjej`bmw#nbmveb`wvqfgf{sf`wbwjlmp=?mlp`qjsw=?`bm#af#elvmgaf`bvpf#wkf#kbp#mlw#affmmfjdkalvqjmdtjwklvw#wkf#bggfg#wl#wkf\n?oj#`obpp>!jmpwqvnfmwboPlujfw#Vmjlmb`hmltofgdfgtkj`k#`bm#afmbnf#elq#wkfbwwfmwjlm#wlbwwfnswp#wl#gfufolsnfmwpJm#eb`w/#wkf?oj#`obpp>!bjnsoj`bwjlmppvjwbaof#elqnv`k#le#wkf#`lolmjybwjlmsqfpjgfmwjbo`bm`foAvaaof#Jmelqnbwjlmnlpw#le#wkf#jp#gfp`qjafgqfpw#le#wkf#nlqf#lq#ofppjm#PfswfnafqJmwfoojdfm`fpq`>!kwws9,,s{8#kfjdkw9#bubjobaof#wlnbmveb`wvqfqkvnbm#qjdkwpojmh#kqfe>!,bubjobajojwzsqlslqwjlmbolvwpjgf#wkf#bpwqlmlnj`bokvnbm#afjmdpmbnf#le#wkf#bqf#elvmg#jmbqf#abpfg#lmpnboofq#wkbmb#sfqplm#tklf{sbmpjlm#lebqdvjmd#wkbwmlt#hmltm#bpJm#wkf#fbqozjmwfqnfgjbwfgfqjufg#eqlnP`bmgjmbujbm?,b=?,gju=\x0E\t`lmpjgfq#wkfbm#fpwjnbwfgwkf#Mbwjlmbo?gju#jg>!sbdqfpvowjmd#jm`lnnjppjlmfgbmboldlvp#wlbqf#qfrvjqfg,vo=\t?,gju=\ttbp#abpfg#lmbmg#af`bnf#b%maps8%maps8w!#ubovf>!!#tbp#`bswvqfgml#nlqf#wkbmqfpsf`wjufoz`lmwjmvf#wl#=\x0E\t?kfbg=\x0E\t?tfqf#`qfbwfgnlqf#dfmfqbojmelqnbwjlm#vpfg#elq#wkfjmgfsfmgfmw#wkf#Jnsfqjbo`lnslmfmw#lewl#wkf#mlqwkjm`ovgf#wkf#@lmpwqv`wjlmpjgf#le#wkf#tlvog#mlw#afelq#jmpwbm`fjmufmwjlm#lenlqf#`lnsof{`loof`wjufozab`hdqlvmg9#wf{w.bojdm9#jwp#lqjdjmbojmwl#b``lvmwwkjp#sql`fppbm#f{wfmpjufkltfufq/#wkfwkfz#bqf#mlwqfif`wfg#wkf`qjwj`jpn#legvqjmd#tkj`ksqlabaoz#wkfwkjp#bqwj`of+evm`wjlm+*xJw#pklvog#afbm#bdqffnfmwb``jgfmwboozgjeefqp#eqlnBq`kjwf`wvqfafwwfq#hmltmbqqbmdfnfmwpjmeovfm`f#lmbwwfmgfg#wkfjgfmwj`bo#wlplvwk#le#wkfsbpp#wkqlvdk{no!#wjwof>!tfjdkw9alog8`qfbwjmd#wkfgjpsobz9mlmfqfsob`fg#wkf?jnd#pq`>!,jkwwsp9,,ttt-Tlqog#Tbq#JJwfpwjnlmjbopelvmg#jm#wkfqfrvjqfg#wl#bmg#wkbw#wkfafwtffm#wkf#tbp#gfpjdmfg`lmpjpwp#le#`lmpjgfqbaozsvaojpkfg#azwkf#obmdvbdf@lmpfqubwjlm`lmpjpwfg#leqfefq#wl#wkfab`h#wl#wkf#`pp!#nfgjb>!Sflsof#eqln#bubjobaof#lmsqlufg#wl#afpvddfpwjlmp!tbp#hmltm#bpubqjfwjfp#leojhfoz#wl#af`lnsqjpfg#lepvsslqw#wkf#kbmgp#le#wkf`lvsofg#tjwk`lmmf`w#bmg#alqgfq9mlmf8sfqelqnbm`fpafelqf#afjmdobwfq#af`bnf`bo`vobwjlmplewfm#`boofgqfpjgfmwp#lenfbmjmd#wkbw=?oj#`obpp>!fujgfm`f#elqf{sobmbwjlmpfmujqlmnfmwp!=?,b=?,gju=tkj`k#booltpJmwqlgv`wjlmgfufolsfg#azb#tjgf#qbmdflm#afkboe#leubojdm>!wls!sqjm`jsof#lebw#wkf#wjnf/?,mlp`qjsw=\x0Epbjg#wl#kbufjm#wkf#ejqpwtkjof#lwkfqpkzslwkfwj`boskjolplskfqpsltfq#le#wkf`lmwbjmfg#jmsfqelqnfg#azjmbajojwz#wltfqf#tqjwwfmpsbm#pwzof>!jmsvw#mbnf>!wkf#rvfpwjlmjmwfmgfg#elqqfif`wjlm#lejnsojfp#wkbwjmufmwfg#wkfwkf#pwbmgbqgtbp#sqlabaozojmh#afwtffmsqlefpplq#lejmwfqb`wjlmp`kbmdjmd#wkfJmgjbm#L`fbm#`obpp>!obpwtlqhjmd#tjwk$kwws9,,ttt-zfbqp#afelqfWkjp#tbp#wkfqf`qfbwjlmbofmwfqjmd#wkfnfbpvqfnfmwpbm#f{wqfnfozubovf#le#wkfpwbqw#le#wkf\t?,p`qjsw=\t\tbm#feelqw#wljm`qfbpf#wkfwl#wkf#plvwkpsb`jmd>!3!=pveej`jfmwozwkf#Fvqlsfbm`lmufqwfg#wl`ofbqWjnflvwgjg#mlw#kbuf`lmpfrvfmwozelq#wkf#mf{wf{wfmpjlm#lef`lmlnj`#bmgbowklvdk#wkfbqf#sqlgv`fgbmg#tjwk#wkfjmpveej`jfmwdjufm#az#wkfpwbwjmd#wkbwf{sfmgjwvqfp?,psbm=?,b=\twklvdkw#wkbwlm#wkf#abpjp`foosbggjmd>jnbdf#le#wkfqfwvqmjmd#wljmelqnbwjlm/pfsbqbwfg#azbppbppjmbwfgp!#`lmwfmw>!bvwklqjwz#lemlqwktfpwfqm?,gju=\t?gju#!=?,gju=\x0E\t##`lmpvowbwjlm`lnnvmjwz#lewkf#mbwjlmbojw#pklvog#afsbqwj`jsbmwp#bojdm>!ofewwkf#dqfbwfpwpfof`wjlm#lepvsfqmbwvqbogfsfmgfmw#lmjp#nfmwjlmfgbooltjmd#wkftbp#jmufmwfgb``lnsbmzjmdkjp#sfqplmbobubjobaof#bwpwvgz#le#wkflm#wkf#lwkfqf{f`vwjlm#leKvnbm#Qjdkwpwfqnp#le#wkfbppl`jbwjlmpqfpfbq`k#bmgpv``ffgfg#azgfefbwfg#wkfbmg#eqln#wkfavw#wkfz#bqf`lnnbmgfq#lepwbwf#le#wkfzfbqp#le#bdfwkf#pwvgz#le?vo#`obpp>!psob`f#jm#wkftkfqf#kf#tbp?oj#`obpp>!ewkfqf#bqf#mltkj`k#af`bnfkf#svaojpkfgf{sqfppfg#jmwl#tkj`k#wkf`lnnjppjlmfqelmw.tfjdkw9wfqqjwlqz#lef{wfmpjlmp!=Qlnbm#Fnsjqffrvbo#wl#wkfJm#`lmwqbpw/kltfufq/#bmgjp#wzsj`boozbmg#kjp#tjef+bopl#`boofg=?vo#`obpp>!feef`wjufoz#fuloufg#jmwlpffn#wl#kbuftkj`k#jp#wkfwkfqf#tbp#mlbm#f{`foofmwboo#le#wkfpfgfp`qjafg#azJm#sqb`wj`f/aqlbg`bpwjmd`kbqdfg#tjwkqfeof`wfg#jmpvaif`wfg#wlnjojwbqz#bmgwl#wkf#sljmwf`lmlnj`boozpfwWbqdfwjmdbqf#b`wvboozuj`wlqz#lufq+*8?,p`qjsw=`lmwjmvlvpozqfrvjqfg#elqfulovwjlmbqzbm#feef`wjufmlqwk#le#wkf/#tkj`k#tbp#eqlmw#le#wkflq#lwkfqtjpfplnf#elqn#lekbg#mlw#affmdfmfqbwfg#azjmelqnbwjlm-sfqnjwwfg#wljm`ovgfp#wkfgfufolsnfmw/fmwfqfg#jmwlwkf#sqfujlvp`lmpjpwfmwozbqf#hmltm#bpwkf#ejfog#lewkjp#wzsf#ledjufm#wl#wkfwkf#wjwof#le`lmwbjmp#wkfjmpwbm`fp#lejm#wkf#mlqwkgvf#wl#wkfjqbqf#gfpjdmfg`lqslqbwjlmptbp#wkbw#wkflmf#le#wkfpfnlqf#slsvobqpv``ffgfg#jmpvsslqw#eqlnjm#gjeefqfmwglnjmbwfg#azgfpjdmfg#elqltmfqpkjs#lebmg#slppjaozpwbmgbqgjyfgqfpslmpfWf{wtbp#jmwfmgfgqf`fjufg#wkfbppvnfg#wkbwbqfbp#le#wkfsqjnbqjoz#jmwkf#abpjp#lejm#wkf#pfmpfb``lvmwp#elqgfpwqlzfg#azbw#ofbpw#wtltbp#gf`obqfg`lvog#mlw#afPf`qfwbqz#lebssfbq#wl#afnbqdjm.wls92,]_p(\x7F_p(',df*xwkqlt#f~8wkf#pwbqw#lewtl#pfsbqbwfobmdvbdf#bmgtkl#kbg#affmlsfqbwjlm#legfbwk#le#wkfqfbo#mvnafqp\n?ojmh#qfo>!sqlujgfg#wkfwkf#pwlqz#le`lnsfwjwjlmpfmdojpk#+VH*fmdojpk#+VP*#evm`wjlm+*-isd!#tjgwk>!`lmejdvqbwjlm-smd!#tjgwk>!?algz#`obpp>!Nbwk-qbmgln+*`lmwfnslqbqz#Vmjwfg#Pwbwfp`jq`vnpwbm`fp-bssfmg@kjog+lqdbmjybwjlmp?psbm#`obpp>!!=?jnd#pq`>!,gjpwjmdvjpkfgwklvpbmgp#le#`lnnvmj`bwjlm`ofbq!=?,gju=jmufpwjdbwjlmebuj`lm-j`l!#nbqdjm.qjdkw9abpfg#lm#wkf#Nbppb`kvpfwwpwbaof#alqgfq>jmwfqmbwjlmbobopl#hmltm#bpsqlmvm`jbwjlmab`hdqlvmg9 esbggjmd.ofew9Elq#f{bnsof/#njp`foobmflvp%ow8,nbwk%dw8spz`kloldj`bojm#sbqwj`vobqfbq`k!#wzsf>!elqn#nfwklg>!bp#lsslpfg#wlPvsqfnf#@lvqwl``bpjlmbooz#Bggjwjlmbooz/Mlqwk#Bnfqj`bs{8ab`hdqlvmglsslqwvmjwjfpFmwfqwbjmnfmw-wlOltfq@bpf+nbmveb`wvqjmdsqlefppjlmbo#`lnajmfg#tjwkElq#jmpwbm`f/`lmpjpwjmd#le!#nb{ofmdwk>!qfwvqm#ebopf8`lmp`jlvpmfppNfgjwfqqbmfbmf{wqblqgjmbqzbppbppjmbwjlmpvapfrvfmwoz#avwwlm#wzsf>!wkf#mvnafq#lewkf#lqjdjmbo#`lnsqfkfmpjufqfefqp#wl#wkf?,vo=\t?,gju=\tskjolplskj`bool`bwjlm-kqfetbp#svaojpkfgPbm#Eqbm`jp`l+evm`wjlm+*x\t?gju#jg>!nbjmplskjpwj`bwfgnbwkfnbwj`bo#,kfbg=\x0E\t?algzpvddfpwp#wkbwgl`vnfmwbwjlm`lm`fmwqbwjlmqfobwjlmpkjspnbz#kbuf#affm+elq#f{bnsof/Wkjp#bqwj`of#jm#plnf#`bpfpsbqwp#le#wkf#gfejmjwjlm#leDqfbw#Aqjwbjm#`foosbggjmd>frvjubofmw#wlsob`fklogfq>!8#elmw.pjyf9#ivpwjej`bwjlmafojfufg#wkbwpveefqfg#eqlnbwwfnswfg#wl#ofbgfq#le#wkf`qjsw!#pq`>!,+evm`wjlm+*#xbqf#bubjobaof\t\n?ojmh#qfo>!#pq`>$kwws9,,jmwfqfpwfg#jm`lmufmwjlmbo#!#bow>!!#,=?,bqf#dfmfqboozkbp#bopl#affmnlpw#slsvobq#`lqqfpslmgjmd`qfgjwfg#tjwkwzof>!alqgfq9?,b=?,psbm=?,-dje!#tjgwk>!?jeqbnf#pq`>!wbaof#`obpp>!jmojmf.aol`h8b``lqgjmd#wl#wldfwkfq#tjwkbssql{jnbwfozsbqojbnfmwbqznlqf#bmg#nlqfgjpsobz9mlmf8wqbgjwjlmboozsqfglnjmbmwoz%maps8\x7F%maps8%maps8?,psbm=#`foopsb`jmd>?jmsvw#mbnf>!lq!#`lmwfmw>!`lmwqlufqpjbosqlsfqwz>!ld9,{.pkl`htbuf.gfnlmpwqbwjlmpvqqlvmgfg#azMfufqwkfofpp/tbp#wkf#ejqpw`lmpjgfqbaof#Bowklvdk#wkf#`loobalqbwjlmpklvog#mlw#afsqlslqwjlm#le?psbm#pwzof>!hmltm#bp#wkf#pklqwoz#bewfqelq#jmpwbm`f/gfp`qjafg#bp#,kfbg=\t?algz#pwbqwjmd#tjwkjm`qfbpjmdoz#wkf#eb`w#wkbwgjp`vppjlm#lenjggof#le#wkfbm#jmgjujgvbogjeej`vow#wl#sljmw#le#ujftklnlpf{vbojwzb``fswbm`f#le?,psbm=?,gju=nbmveb`wvqfqplqjdjm#le#wkf`lnnlmoz#vpfgjnslqwbm`f#legfmlnjmbwjlmpab`hdqlvmg9# ofmdwk#le#wkfgfwfqnjmbwjlmb#pjdmjej`bmw!#alqgfq>!3!=qfulovwjlmbqzsqjm`jsofp#lejp#`lmpjgfqfgtbp#gfufolsfgJmgl.Fvqlsfbmuvomfqbaof#wlsqlslmfmwp#lebqf#plnfwjnfp`olpfq#wl#wkfMft#Zlqh#@jwz#mbnf>!pfbq`kbwwqjavwfg#wl`lvqpf#le#wkfnbwkfnbwj`jbmaz#wkf#fmg#lebw#wkf#fmg#le!#alqgfq>!3!#wf`kmloldj`bo-qfnluf@obpp+aqbm`k#le#wkffujgfm`f#wkbw\"Xfmgje^..=\x0E\tJmpwjwvwf#le#jmwl#b#pjmdofqfpsf`wjufoz-bmg#wkfqfelqfsqlsfqwjfp#lejp#ol`bwfg#jmplnf#le#tkj`kWkfqf#jp#bopl`lmwjmvfg#wl#bssfbqbm`f#le#%bns8mgbpk8#gfp`qjafp#wkf`lmpjgfqbwjlmbvwklq#le#wkfjmgfsfmgfmwozfrvjssfg#tjwkglfp#mlw#kbuf?,b=?b#kqfe>!`lmevpfg#tjwk?ojmh#kqfe>!,bw#wkf#bdf#lebssfbq#jm#wkfWkfpf#jm`ovgfqfdbqgofpp#le`lvog#af#vpfg#pwzof>%rvlw8pfufqbo#wjnfpqfsqfpfmw#wkfalgz=\t?,kwno=wklvdkw#wl#afslsvobwjlm#leslppjajojwjfpsfq`fmwbdf#leb``fpp#wl#wkfbm#bwwfnsw#wlsqlgv`wjlm#leirvfqz,irvfqzwtl#gjeefqfmwafolmd#wl#wkffpwbaojpknfmwqfsob`jmd#wkfgfp`qjswjlm!#gfwfqnjmf#wkfbubjobaof#elqB``lqgjmd#wl#tjgf#qbmdf#le\n?gju#`obpp>!nlqf#`lnnlmozlqdbmjpbwjlmpevm`wjlmbojwztbp#`lnsofwfg#%bns8ngbpk8#sbqwj`jsbwjlmwkf#`kbqb`wfqbm#bggjwjlmbobssfbqp#wl#afeb`w#wkbw#wkfbm#f{bnsof#lepjdmjej`bmwozlmnlvpflufq>!af`bvpf#wkfz#bpzm`#>#wqvf8sqlaofnp#tjwkpffnp#wl#kbufwkf#qfpvow#le#pq`>!kwws9,,ebnjojbq#tjwkslppfppjlm#leevm`wjlm#+*#xwllh#sob`f#jmbmg#plnfwjnfppvapwbmwjbooz?psbm=?,psbm=jp#lewfm#vpfgjm#bm#bwwfnswdqfbw#gfbo#leFmujqlmnfmwbopv``fppevooz#ujqwvbooz#boo13wk#`fmwvqz/sqlefppjlmbopmf`fppbqz#wl#gfwfqnjmfg#az`lnsbwjajojwzaf`bvpf#jw#jpGj`wjlmbqz#lenlgjej`bwjlmpWkf#elooltjmdnbz#qfefq#wl9@lmpfrvfmwoz/Jmwfqmbwjlmbobowklvdk#plnfwkbw#tlvog#aftlqog$p#ejqpw`obppjejfg#bpalwwln#le#wkf+sbqwj`vobqozbojdm>!ofew!#nlpw#`lnnlmozabpjp#elq#wkfelvmgbwjlm#le`lmwqjavwjlmpslsvobqjwz#le`fmwfq#le#wkfwl#qfgv`f#wkfivqjpgj`wjlmpbssql{jnbwjlm#lmnlvpflvw>!Mft#Wfpwbnfmw`loof`wjlm#le?,psbm=?,b=?,jm#wkf#Vmjwfgejon#gjqf`wlq.pwqj`w-gwg!=kbp#affm#vpfgqfwvqm#wl#wkfbowklvdk#wkjp`kbmdf#jm#wkfpfufqbo#lwkfqavw#wkfqf#bqfvmsqf`fgfmwfgjp#pjnjobq#wlfpsf`jbooz#jmtfjdkw9#alog8jp#`boofg#wkf`lnsvwbwjlmbojmgj`bwf#wkbwqfpwqj`wfg#wl\n?nfwb#mbnf>!bqf#wzsj`booz`lmeoj`w#tjwkKltfufq/#wkf#Bm#f{bnsof#le`lnsbqfg#tjwkrvbmwjwjfp#leqbwkfq#wkbm#b`lmpwfoobwjlmmf`fppbqz#elqqfslqwfg#wkbwpsf`jej`bwjlmslojwj`bo#bmg%maps8%maps8?qfefqfm`fp#wlwkf#pbnf#zfbqDlufqmnfmw#ledfmfqbwjlm#lekbuf#mlw#affmpfufqbo#zfbqp`lnnjwnfmw#wl\n\n?vo#`obpp>!ujpvbojybwjlm2:wk#`fmwvqz/sqb`wjwjlmfqpwkbw#kf#tlvogbmg#`lmwjmvfgl``vsbwjlm#lejp#gfejmfg#bp`fmwqf#le#wkfwkf#bnlvmw#le=?gju#pwzof>!frvjubofmw#legjeefqfmwjbwfaqlvdkw#balvwnbqdjm.ofew9#bvwlnbwj`boozwklvdkw#le#bpPlnf#le#wkfpf\t?gju#`obpp>!jmsvw#`obpp>!qfsob`fg#tjwkjp#lmf#le#wkffgv`bwjlm#bmgjmeovfm`fg#azqfsvwbwjlm#bp\t?nfwb#mbnf>!b``lnnlgbwjlm?,gju=\t?,gju=obqdf#sbqw#leJmpwjwvwf#elqwkf#pl.`boofg#bdbjmpw#wkf#Jm#wkjp#`bpf/tbp#bssljmwfg`objnfg#wl#afKltfufq/#wkjpGfsbqwnfmw#lewkf#qfnbjmjmdfeef`w#lm#wkfsbqwj`vobqoz#gfbo#tjwk#wkf\t?gju#pwzof>!bonlpw#botbzpbqf#`vqqfmwozf{sqfppjlm#leskjolplskz#leelq#nlqf#wkbm`jujojybwjlmplm#wkf#jpobmgpfof`wfgJmgf{`bm#qfpvow#jm!#ubovf>!!#,=wkf#pwqv`wvqf#,=?,b=?,gju=Nbmz#le#wkfpf`bvpfg#az#wkfle#wkf#Vmjwfgpsbm#`obpp>!n`bm#af#wqb`fgjp#qfobwfg#wlaf`bnf#lmf#lejp#eqfrvfmwozojujmd#jm#wkfwkflqfwj`boozElooltjmd#wkfQfulovwjlmbqzdlufqmnfmw#jmjp#gfwfqnjmfgwkf#slojwj`bojmwqlgv`fg#jmpveej`jfmw#wlgfp`qjswjlm!=pklqw#pwlqjfppfsbqbwjlm#lebp#wl#tkfwkfqhmltm#elq#jwptbp#jmjwjboozgjpsobz9aol`hjp#bm#f{bnsofwkf#sqjm`jsbo`lmpjpwp#le#bqf`ldmjyfg#bp,algz=?,kwno=b#pvapwbmwjboqf`lmpwqv`wfgkfbg#le#pwbwfqfpjpwbm`f#wlvmgfqdqbgvbwfWkfqf#bqf#wtldqbujwbwjlmbobqf#gfp`qjafgjmwfmwjlmboozpfqufg#bp#wkf`obpp>!kfbgfqlsslpjwjlm#wlevmgbnfmwboozglnjmbwfg#wkfbmg#wkf#lwkfqboojbm`f#tjwktbp#elq`fg#wlqfpsf`wjufoz/bmg#slojwj`bojm#pvsslqw#lesflsof#jm#wkf13wk#`fmwvqz-bmg#svaojpkfgolbg@kbqwafbwwl#vmgfqpwbmgnfnafq#pwbwfpfmujqlmnfmwboejqpw#kboe#le`lvmwqjfp#bmgbq`kjwf`wvqboaf#`lmpjgfqfg`kbqb`wfqjyfg`ofbqJmwfqubobvwklqjwbwjufEfgfqbwjlm#letbp#pv``ffgfgbmg#wkfqf#bqfb#`lmpfrvfm`fwkf#Sqfpjgfmwbopl#jm`ovgfgeqff#plewtbqfpv``fppjlm#legfufolsfg#wkftbp#gfpwqlzfgbtbz#eqln#wkf8\t?,p`qjsw=\t?bowklvdk#wkfzelooltfg#az#bnlqf#sltfqevoqfpvowfg#jm#bVmjufqpjwz#leKltfufq/#nbmzwkf#sqfpjgfmwKltfufq/#plnfjp#wklvdkw#wlvmwjo#wkf#fmgtbp#bmmlvm`fgbqf#jnslqwbmwbopl#jm`ovgfp=?jmsvw#wzsf>wkf#`fmwfq#le#GL#MLW#BOWFQvpfg#wl#qfefqwkfnfp,wkbw#kbg#affmwkf#abpjp#elqkbp#gfufolsfgjm#wkf#pvnnfq`lnsbqbwjufozgfp`qjafg#wkfpv`k#bp#wklpfwkf#qfpvowjmdjp#jnslppjaofubqjlvp#lwkfqPlvwk#Beqj`bmkbuf#wkf#pbnffeef`wjufmfppjm#tkj`k#`bpf8#wf{w.bojdm9pwqv`wvqf#bmg8#ab`hdqlvmg9qfdbqgjmd#wkfpvsslqwfg#wkfjp#bopl#hmltmpwzof>!nbqdjmjm`ovgjmd#wkfabkbpb#Nfobzvmlqph#alhn/Iomlqph#mzmlqphpolufm)M(ajmbjmwfqmb`jlmbo`bojej`b`j/_m`lnvmj`b`j/_m`lmpwqv``j/_m!=?gju#`obpp>!gjpbnajdvbwjlmGlnbjmMbnf$/#$bgnjmjpwqbwjlmpjnvowbmflvpozwqbmpslqwbwjlmJmwfqmbwjlmbo#nbqdjm.alwwln9qfpslmpjajojwz?\"Xfmgje^..=\t?,=?nfwb#mbnf>!jnsofnfmwbwjlmjmeqbpwqv`wvqfqfsqfpfmwbwjlmalqgfq.alwwln9?,kfbg=\t?algz=>kwws&0B&1E&1E?elqn#nfwklg>!nfwklg>!slpw!#,ebuj`lm-j`l!#~*8\t?,p`qjsw=\t-pfwBwwqjavwf+Bgnjmjpwqbwjlm>#mft#Bqqbz+*8?\"Xfmgje^..=\x0E\tgjpsobz9aol`h8Vmelqwvmbwfoz/!=%maps8?,gju=,ebuj`lm-j`l!=>$pwzofpkffw$#jgfmwjej`bwjlm/#elq#f{bnsof/?oj=?b#kqfe>!,bm#bowfqmbwjufbp#b#qfpvow#lesw!=?,p`qjsw=\twzsf>!pvanjw!#\t+evm`wjlm+*#xqf`lnnfmgbwjlmelqn#b`wjlm>!,wqbmpelqnbwjlmqf`lmpwqv`wjlm-pwzof-gjpsobz#B``lqgjmd#wl#kjggfm!#mbnf>!bolmd#tjwk#wkfgl`vnfmw-algz-bssql{jnbwfoz#@lnnvmj`bwjlmpslpw!#b`wjlm>!nfbmjmd#%rvlw8..?\"Xfmgje^..=Sqjnf#Njmjpwfq`kbqb`wfqjpwj`?,b=#?b#`obpp>wkf#kjpwlqz#le#lmnlvpflufq>!wkf#dlufqmnfmwkqfe>!kwwsp9,,tbp#lqjdjmbooztbp#jmwqlgv`fg`obppjej`bwjlmqfsqfpfmwbwjufbqf#`lmpjgfqfg?\"Xfmgje^..=\t\tgfsfmgp#lm#wkfVmjufqpjwz#le#jm#`lmwqbpw#wl#sob`fklogfq>!jm#wkf#`bpf#lejmwfqmbwjlmbo#`lmpwjwvwjlmbopwzof>!alqgfq.9#evm`wjlm+*#xAf`bvpf#le#wkf.pwqj`w-gwg!=\t?wbaof#`obpp>!b``lnsbmjfg#azb``lvmw#le#wkf?p`qjsw#pq`>!,mbwvqf#le#wkf#wkf#sflsof#jm#jm#bggjwjlm#wlp*8#ip-jg#>#jg!#tjgwk>!233&!qfdbqgjmd#wkf#Qlnbm#@bwkloj`bm#jmgfsfmgfmwelooltjmd#wkf#-dje!#tjgwk>!2wkf#elooltjmd#gjp`qjnjmbwjlmbq`kbfloldj`bosqjnf#njmjpwfq-ip!=?,p`qjsw=`lnajmbwjlm#le#nbqdjmtjgwk>!`qfbwfFofnfmw+t-bwwb`kFufmw+?,b=?,wg=?,wq=pq`>!kwwsp9,,bJm#sbqwj`vobq/#bojdm>!ofew!#@yf`k#Qfsvaoj`Vmjwfg#Hjmdgln`lqqfpslmgfm`f`lm`ovgfg#wkbw-kwno!#wjwof>!+evm`wjlm#+*#x`lnfp#eqln#wkfbssoj`bwjlm#le?psbm#`obpp>!pafojfufg#wl#affnfmw+$p`qjsw$?,b=\t?,oj=\t?ojufqz#gjeefqfmw=?psbm#`obpp>!lswjlm#ubovf>!+bopl#hmltm#bp\n?oj=?b#kqfe>!=?jmsvw#mbnf>!pfsbqbwfg#eqlnqfefqqfg#wl#bp#ubojdm>!wls!=elvmgfq#le#wkfbwwfnswjmd#wl#`bqalm#gjl{jgf\t\t?gju#`obpp>!`obpp>!pfbq`k.,algz=\t?,kwno=lsslqwvmjwz#wl`lnnvmj`bwjlmp?,kfbg=\x0E\t?algz#pwzof>!tjgwk9Wj\rVSmd#Uj\rWkw`kbmdfp#jm#wkfalqgfq.`lolq9 3!#alqgfq>!3!#?,psbm=?,gju=?tbp#gjp`lufqfg!#wzsf>!wf{w!#*8\t?,p`qjsw=\t\tGfsbqwnfmw#le#f``ofpjbpwj`bowkfqf#kbp#affmqfpvowjmd#eqln?,algz=?,kwno=kbp#mfufq#affmwkf#ejqpw#wjnfjm#qfpslmpf#wlbvwlnbwj`booz#?,gju=\t\t?gju#jtbp#`lmpjgfqfgsfq`fmw#le#wkf!#,=?,b=?,gju=`loof`wjlm#le#gfp`fmgfg#eqlnpf`wjlm#le#wkfb``fsw.`kbqpfwwl#af#`lmevpfgnfnafq#le#wkf#sbggjmd.qjdkw9wqbmpobwjlm#lejmwfqsqfwbwjlm#kqfe>$kwws9,,tkfwkfq#lq#mlwWkfqf#bqf#boplwkfqf#bqf#nbmzb#pnboo#mvnafqlwkfq#sbqwp#lejnslppjaof#wl##`obpp>!avwwlmol`bwfg#jm#wkf-#Kltfufq/#wkfbmg#fufmwvboozBw#wkf#fmg#le#af`bvpf#le#jwpqfsqfpfmwp#wkf?elqn#b`wjlm>!#nfwklg>!slpw!jw#jp#slppjaofnlqf#ojhfoz#wlbm#jm`qfbpf#jmkbuf#bopl#affm`lqqfpslmgp#wlbmmlvm`fg#wkbwbojdm>!qjdkw!=nbmz#`lvmwqjfpelq#nbmz#zfbqpfbqojfpw#hmltmaf`bvpf#jw#tbpsw!=?,p`qjsw=\x0E#ubojdm>!wls!#jmkbajwbmwp#leelooltjmd#zfbq\x0E\t?gju#`obpp>!njoojlm#sflsof`lmwqlufqpjbo#`lm`fqmjmd#wkfbqdvf#wkbw#wkfdlufqmnfmw#bmgb#qfefqfm`f#wlwqbmpefqqfg#wlgfp`qjajmd#wkf#pwzof>!`lolq9bowklvdk#wkfqfafpw#hmltm#elqpvanjw!#mbnf>!nvowjsoj`bwjlmnlqf#wkbm#lmf#qf`ldmjwjlm#le@lvm`jo#le#wkffgjwjlm#le#wkf##?nfwb#mbnf>!Fmwfqwbjmnfmw#btbz#eqln#wkf#8nbqdjm.qjdkw9bw#wkf#wjnf#lejmufpwjdbwjlmp`lmmf`wfg#tjwkbmg#nbmz#lwkfqbowklvdk#jw#jpafdjmmjmd#tjwk#?psbm#`obpp>!gfp`fmgbmwp#le?psbm#`obpp>!j#bojdm>!qjdkw!?,kfbg=\t?algz#bpsf`wp#le#wkfkbp#pjm`f#affmFvqlsfbm#Vmjlmqfnjmjp`fmw#lenlqf#gjeej`vowUj`f#Sqfpjgfmw`lnslpjwjlm#lesbppfg#wkqlvdknlqf#jnslqwbmwelmw.pjyf922s{f{sobmbwjlm#lewkf#`lm`fsw#letqjwwfm#jm#wkf\n?psbm#`obpp>!jp#lmf#le#wkf#qfpfnaobm`f#wllm#wkf#dqlvmgptkj`k#`lmwbjmpjm`ovgjmd#wkf#gfejmfg#az#wkfsvaoj`bwjlm#lenfbmp#wkbw#wkflvwpjgf#le#wkfpvsslqw#le#wkf?jmsvw#`obpp>!?psbm#`obpp>!w+Nbwk-qbmgln+*nlpw#sqlnjmfmwgfp`qjswjlm#le@lmpwbmwjmlsoftfqf#svaojpkfg?gju#`obpp>!pfbssfbqp#jm#wkf2!#kfjdkw>!2!#nlpw#jnslqwbmwtkj`k#jm`ovgfptkj`k#kbg#affmgfpwqv`wjlm#lewkf#slsvobwjlm\t\n?gju#`obpp>!slppjajojwz#leplnfwjnfp#vpfgbssfbq#wl#kbufpv``fpp#le#wkfjmwfmgfg#wl#afsqfpfmw#jm#wkfpwzof>!`ofbq9a\x0E\t?,p`qjsw=\x0E\t?tbp#elvmgfg#jmjmwfqujft#tjwk\\jg!#`lmwfmw>!`bsjwbo#le#wkf\x0E\t?ojmh#qfo>!pqfofbpf#le#wkfsljmw#lvw#wkbw{NOKwwsQfrvfpwbmg#pvapfrvfmwpf`lmg#obqdfpwufqz#jnslqwbmwpsf`jej`bwjlmppvqeb`f#le#wkfbssojfg#wl#wkfelqfjdm#sloj`z\\pfwGlnbjmMbnffpwbaojpkfg#jmjp#afojfufg#wlJm#bggjwjlm#wlnfbmjmd#le#wkfjp#mbnfg#bewfqwl#sqlwf`w#wkfjp#qfsqfpfmwfgGf`obqbwjlm#lenlqf#feej`jfmw@obppjej`bwjlmlwkfq#elqnp#lekf#qfwvqmfg#wl?psbm#`obpp>!`sfqelqnbm`f#le+evm`wjlm+*#x\x0Eje#bmg#lmoz#jeqfdjlmp#le#wkfofbgjmd#wl#wkfqfobwjlmp#tjwkVmjwfg#Mbwjlmppwzof>!kfjdkw9lwkfq#wkbm#wkfzsf!#`lmwfmw>!Bppl`jbwjlm#le\t?,kfbg=\t?algzol`bwfg#lm#wkfjp#qfefqqfg#wl+jm`ovgjmd#wkf`lm`fmwqbwjlmpwkf#jmgjujgvbobnlmd#wkf#nlpwwkbm#bmz#lwkfq,=\t?ojmh#qfo>!#qfwvqm#ebopf8wkf#svqslpf#lewkf#bajojwz#wl8`lolq9 eee~\t-\t?psbm#`obpp>!wkf#pvaif`w#legfejmjwjlmp#le=\x0E\t?ojmh#qfo>!`objn#wkbw#wkfkbuf#gfufolsfg?wbaof#tjgwk>!`fofaqbwjlm#leElooltjmd#wkf#wl#gjpwjmdvjpk?psbm#`obpp>!awbhfp#sob`f#jmvmgfq#wkf#mbnfmlwfg#wkbw#wkf=?\"Xfmgje^..=\tpwzof>!nbqdjm.jmpwfbg#le#wkfjmwqlgv`fg#wkfwkf#sql`fpp#lejm`qfbpjmd#wkfgjeefqfm`fp#jmfpwjnbwfg#wkbwfpsf`jbooz#wkf,gju=?gju#jg>!tbp#fufmwvboozwkqlvdklvw#kjpwkf#gjeefqfm`fplnfwkjmd#wkbwpsbm=?,psbm=?,pjdmjej`bmwoz#=?,p`qjsw=\x0E\t\x0E\tfmujqlmnfmwbo#wl#sqfufmw#wkfkbuf#affm#vpfgfpsf`jbooz#elqvmgfqpwbmg#wkfjp#fppfmwjbooztfqf#wkf#ejqpwjp#wkf#obqdfpwkbuf#affm#nbgf!#pq`>!kwws9,,jmwfqsqfwfg#bppf`lmg#kboe#le`qloojmd>!ml!#jp#`lnslpfg#leJJ/#Kloz#Qlnbmjp#f{sf`wfg#wlkbuf#wkfjq#ltmgfejmfg#bp#wkfwqbgjwjlmbooz#kbuf#gjeefqfmwbqf#lewfm#vpfgwl#fmpvqf#wkbwbdqffnfmw#tjwk`lmwbjmjmd#wkfbqf#eqfrvfmwozjmelqnbwjlm#lmf{bnsof#jp#wkfqfpvowjmd#jm#b?,b=?,oj=?,vo=#`obpp>!ellwfqbmg#fpsf`jboozwzsf>!avwwlm!#?,psbm=?,psbm=tkj`k#jm`ovgfg=\t?nfwb#mbnf>!`lmpjgfqfg#wkf`bqqjfg#lvw#azKltfufq/#jw#jpaf`bnf#sbqw#lejm#qfobwjlm#wlslsvobq#jm#wkfwkf#`bsjwbo#letbp#leej`jbooztkj`k#kbp#affmwkf#Kjpwlqz#lebowfqmbwjuf#wlgjeefqfmw#eqlnwl#pvsslqw#wkfpvddfpwfg#wkbwjm#wkf#sql`fpp##?gju#`obpp>!wkf#elvmgbwjlmaf`bvpf#le#kjp`lm`fqmfg#tjwkwkf#vmjufqpjwzlsslpfg#wl#wkfwkf#`lmwf{w#le?psbm#`obpp>!swf{w!#mbnf>!r!\n\n?gju#`obpp>!wkf#p`jfmwjej`qfsqfpfmwfg#aznbwkfnbwj`jbmpfof`wfg#az#wkfwkbw#kbuf#affm=?gju#`obpp>!`gju#jg>!kfbgfqjm#sbqwj`vobq/`lmufqwfg#jmwl*8\t?,p`qjsw=\t?skjolplskj`bo#pqsphlkqubwphjwj\rVSmd#Uj\rWkw!kwws9,,!=?psbm#`obpp>!nfnafqp#le#wkf#tjmglt-ol`bwjlmufqwj`bo.bojdm9,b=#\x7F#?b#kqfe>!?\"gl`wzsf#kwno=nfgjb>!p`qffm!#?lswjlm#ubovf>!ebuj`lm-j`l!#,=\t\n\n?gju#`obpp>!`kbqb`wfqjpwj`p!#nfwklg>!dfw!#,algz=\t?,kwno=\tpklqw`vw#j`lm!#gl`vnfmw-tqjwf+sbggjmd.alwwln9qfsqfpfmwbwjufppvanjw!#ubovf>!bojdm>!`fmwfq!#wkqlvdklvw#wkf#p`jfm`f#ej`wjlm\t##?gju#`obpp>!pvanjw!#`obpp>!lmf#le#wkf#nlpw#ubojdm>!wls!=?tbp#fpwbaojpkfg*8\x0E\t?,p`qjsw=\x0E\tqfwvqm#ebopf8!=*-pwzof-gjpsobzaf`bvpf#le#wkf#gl`vnfmw-`llhjf?elqn#b`wjlm>!,~algzxnbqdjm938Fm`z`olsfgjb#leufqpjlm#le#wkf#-`qfbwfFofnfmw+mbnf!#`lmwfmw>!?,gju=\t?,gju=\t\tbgnjmjpwqbwjuf#?,algz=\t?,kwno=kjpwlqz#le#wkf#!=?jmsvw#wzsf>!slqwjlm#le#wkf#bp#sbqw#le#wkf#%maps8?b#kqfe>!lwkfq#`lvmwqjfp!=\t?gju#`obpp>!?,psbm=?,psbm=?Jm#lwkfq#tlqgp/gjpsobz9#aol`h8`lmwqlo#le#wkf#jmwqlgv`wjlm#le,=\t?nfwb#mbnf>!bp#tfoo#bp#wkf#jm#qf`fmw#zfbqp\x0E\t\n?gju#`obpp>!?,gju=\t\n?,gju=\tjmpsjqfg#az#wkfwkf#fmg#le#wkf#`lnsbwjaof#tjwkaf`bnf#hmltm#bp#pwzof>!nbqdjm9-ip!=?,p`qjsw=?#Jmwfqmbwjlmbo#wkfqf#kbuf#affmDfqnbm#obmdvbdf#pwzof>!`lolq9 @lnnvmjpw#Sbqwz`lmpjpwfmw#tjwkalqgfq>!3!#`foo#nbqdjmkfjdkw>!wkf#nbilqjwz#le!#bojdm>!`fmwfqqfobwfg#wl#wkf#nbmz#gjeefqfmw#Lqwklgl{#@kvq`kpjnjobq#wl#wkf#,=\t?ojmh#qfo>!ptbp#lmf#le#wkf#vmwjo#kjp#gfbwk~*+*8\t?,p`qjsw=lwkfq#obmdvbdfp`lnsbqfg#wl#wkfslqwjlmp#le#wkfwkf#Mfwkfqobmgpwkf#nlpw#`lnnlmab`hdqlvmg9vqo+bqdvfg#wkbw#wkfp`qloojmd>!ml!#jm`ovgfg#jm#wkfMlqwk#Bnfqj`bm#wkf#mbnf#le#wkfjmwfqsqfwbwjlmpwkf#wqbgjwjlmbogfufolsnfmw#le#eqfrvfmwoz#vpfgb#`loof`wjlm#leufqz#pjnjobq#wlpvqqlvmgjmd#wkff{bnsof#le#wkjpbojdm>!`fmwfq!=tlvog#kbuf#affmjnbdf\\`bswjlm#>bwwb`kfg#wl#wkfpvddfpwjmd#wkbwjm#wkf#elqn#le#jmuloufg#jm#wkfjp#gfqjufg#eqlnmbnfg#bewfq#wkfJmwqlgv`wjlm#wlqfpwqj`wjlmp#lm#pwzof>!tjgwk9#`bm#af#vpfg#wl#wkf#`qfbwjlm#lenlpw#jnslqwbmw#jmelqnbwjlm#bmgqfpvowfg#jm#wkf`loobspf#le#wkfWkjp#nfbmp#wkbwfofnfmwp#le#wkftbp#qfsob`fg#azbmbozpjp#le#wkfjmpsjqbwjlm#elqqfdbqgfg#bp#wkfnlpw#pv``fppevohmltm#bp#%rvlw8b#`lnsqfkfmpjufKjpwlqz#le#wkf#tfqf#`lmpjgfqfgqfwvqmfg#wl#wkfbqf#qfefqqfg#wlVmplvq`fg#jnbdf=\t\n?gju#`obpp>!`lmpjpwp#le#wkfpwlsSqlsbdbwjlmjmwfqfpw#jm#wkfbubjobajojwz#lebssfbqp#wl#kbuffof`wqlnbdmfwj`fmbaofPfquj`fp+evm`wjlm#le#wkfJw#jp#jnslqwbmw?,p`qjsw=?,gju=evm`wjlm+*xubq#qfobwjuf#wl#wkfbp#b#qfpvow#le#wkf#slpjwjlm#leElq#f{bnsof/#jm#nfwklg>!slpw!#tbp#elooltfg#az%bns8ngbpk8#wkfwkf#bssoj`bwjlmip!=?,p`qjsw=\x0E\tvo=?,gju=?,gju=bewfq#wkf#gfbwktjwk#qfpsf`w#wlpwzof>!sbggjmd9jp#sbqwj`vobqozgjpsobz9jmojmf8#wzsf>!pvanjw!#jp#gjujgfg#jmwl\bTA\nzk#+\x0BBl\bQ\x7F*qfpslmpbajojgbgbgnjmjpwqb`j/_mjmwfqmb`jlmbofp`lqqfpslmgjfmwf\fHe\fHF\fHC\fIg\fH{\fHF\fIn\fH\\\fIa\fHY\fHU\fHB\fHR\fH\\\fIk\fH^\fIg\fH{\fIg\fHn\fHv\fIm\fHD\fHR\fHY\fH^\fIk\fHy\fHS\fHD\fHT\fH\\\fHy\fHR\fH\\\fHF\fIm\fH^\fHS\fHT\fHz\fIg\fHp\fIk\fHn\fHv\fHR\fHU\fHS\fHc\fHA\fIk\fHp\fIk\fHn\fHZ\fHR\fHB\fHS\fH^\fHU\fHB\fHR\fH\\\fIl\fHp\fHR\fH{\fH\\\fHO\fH@\fHD\fHR\fHD\fIk\fHy\fIm\fHB\fHR\fH\\\fH@\fIa\fH^\fIe\fH{\fHB\fHR\fH^\fHS\fHy\fHB\fHU\fHS\fH^\fHR\fHF\fIo\fH[\fIa\fHL\fH@\fHN\fHP\fHH\fIk\fHA\fHR\fHp\fHF\fHR\fHy\fIa\fH^\fHS\fHy\fHs\fIa\fH\\\fIk\fHD\fHz\fHS\fH^\fHR\fHG\fHJ\fI`\fH\\\fHR\fHD\fHB\fHR\fHB\fH^\fIk\fHB\fHH\fHJ\fHR\fHD\fH@\fHR\fHp\fHR\fH\\\fHY\fHS\fHy\fHR\fHT\fHy\fIa\fHC\fIg\fHn\fHv\fHR\fHU\fHH\fIk\fHF\fHU\fIm\fHm\fHv\fH@\fHH\fHR\fHC\fHR\fHT\fHn\fHY\fHR\fHJ\fHJ\fIk\fHz\fHD\fIk\fHF\fHS\fHw\fH^\fIk\fHY\fHS\fHZ\fIk\fH[\fH\\\fHR\fHp\fIa\fHC\fHe\fHH\fIa\fHH\fH\\\fHB\fIm\fHn\fH@\fHd\fHJ\fIg\fHD\fIg\fHn\fHe\fHF\fHy\fH\\\fHO\fHF\fHN\fHP\fIk\fHn\fHT\fIa\fHI\fHS\fHH\fHG\fHS\fH^\fIa\fHB\fHB\fIm\fHz\fIa\fHC\fHi\fHv\fIa\fHw\fHR\fHw\fIn\fHs\fHH\fIl\fHT\fHn\fH{\fIl\fHH\fHp\fHR\fHc\fH{\fHR\fHY\fHS\fHA\fHR\fH{\fHt\fHO\fIa\fHs\fIk\fHJ\fIn\fHT\fH\\\fIk\fHJ\fHS\fHD\fIg\fHn\fHU\fHH\fIa\fHC\fHR\fHT\fIk\fHy\fIa\fHT\fH{\fHR\fHn\fHK\fIl\fHY\fHS\fHZ\fIa\fHY\fH\\\fHR\fHH\fIk\fHn\fHJ\fId\fHs\fIa\fHT\fHD\fHy\fIa\fHZ\fHR\fHT\fHR\fHB\fHD\fIk\fHi\fHJ\fHR\fH^\fHH\fH@\fHS\fHp\fH^\fIl\fHF\fIm\fH\\\fIn\fH[\fHU\fHS\fHn\fHJ\fIl\fHB\fHS\fHH\fIa\fH\\\fHy\fHY\fHS\fHH\fHR\fH\\\fIm\fHF\fHC\fIk\fHT\fIa\fHI\fHR\fHD\fHy\fH\\\fIg\fHM\fHP\fHB\fIm\fHy\fIa\fHH\fHC\fIg\fHp\fHD\fHR\fHy\fIo\fHF\fHC\fHR\fHF\fIg\fHT\fIa\fHs\fHt\fH\\\fIk\fH^\fIn\fHy\fHR\fH\\\fIa\fHC\fHY\fHS\fHv\fHR\fH\\\fHT\fIn\fHv\fHD\fHR\fHB\fIn\fH^\fIa\fHC\fHJ\fIk\fHz\fIk\fHn\fHU\fHB\fIk\fHZ\fHR\fHT\fIa\fHy\fIn\fH^\fHB\fId\fHn\fHD\fIk\fHH\fId\fHC\fHR\fH\\\fHp\fHS\fHT\fHy\fIkqpp({no!#wjwof>!.wzsf!#`lmwfmw>!wjwof!#`lmwfmw>!bw#wkf#pbnf#wjnf-ip!=?,p`qjsw=\t?!#nfwklg>!slpw!#?,psbm=?,b=?,oj=ufqwj`bo.bojdm9w,irvfqz-njm-ip!=-`oj`h+evm`wjlm+#pwzof>!sbggjmd.~*+*8\t?,p`qjsw=\t?,psbm=?b#kqfe>!?b#kqfe>!kwws9,,*8#qfwvqm#ebopf8wf{w.gf`lqbwjlm9#p`qloojmd>!ml!#alqgfq.`loobspf9bppl`jbwfg#tjwk#Abkbpb#JmglmfpjbFmdojpk#obmdvbdf?wf{w#{no9psb`f>-dje!#alqgfq>!3!?,algz=\t?,kwno=\tlufqeolt9kjggfm8jnd#pq`>!kwws9,,bggFufmwOjpwfmfqqfpslmpjaof#elq#p-ip!=?,p`qjsw=\t,ebuj`lm-j`l!#,=lsfqbwjmd#pzpwfn!#pwzof>!tjgwk92wbqdfw>!\\aobmh!=Pwbwf#Vmjufqpjwzwf{w.bojdm9ofew8\tgl`vnfmw-tqjwf+/#jm`ovgjmd#wkf#bqlvmg#wkf#tlqog*8\x0E\t?,p`qjsw=\x0E\t?!#pwzof>!kfjdkw98lufqeolt9kjggfmnlqf#jmelqnbwjlmbm#jmwfqmbwjlmbob#nfnafq#le#wkf#lmf#le#wkf#ejqpw`bm#af#elvmg#jm#?,gju=\t\n\n?,gju=\tgjpsobz9#mlmf8!=!#,=\t?ojmh#qfo>!\t##+evm`wjlm+*#xwkf#26wk#`fmwvqz-sqfufmwGfebvow+obqdf#mvnafq#le#Azybmwjmf#Fnsjqf-isd\x7Fwkvna\x7Fofew\x7Fubpw#nbilqjwz#lenbilqjwz#le#wkf##bojdm>!`fmwfq!=Vmjufqpjwz#Sqfppglnjmbwfg#az#wkfPf`lmg#Tlqog#Tbqgjpwqjavwjlm#le#pwzof>!slpjwjlm9wkf#qfpw#le#wkf#`kbqb`wfqjyfg#az#qfo>!mleloolt!=gfqjufp#eqln#wkfqbwkfq#wkbm#wkf#b#`lnajmbwjlm#lepwzof>!tjgwk9233Fmdojpk.psfbhjmd`lnsvwfq#p`jfm`falqgfq>!3!#bow>!wkf#f{jpwfm`f#leGfnl`qbwj`#Sbqwz!#pwzof>!nbqdjm.Elq#wkjp#qfbplm/-ip!=?,p`qjsw=\t\npAzWbdMbnf+p*X3^ip!=?,p`qjsw=\x0E\t?-ip!=?,p`qjsw=\x0E\tojmh#qfo>!j`lm!#$#bow>$$#`obpp>$elqnbwjlm#le#wkfufqpjlmp#le#wkf#?,b=?,gju=?,gju=,sbdf=\t##?sbdf=\t?gju#`obpp>!`lmwaf`bnf#wkf#ejqpwabkbpb#Jmglmfpjbfmdojpk#+pjnsof*\"y\"W\"W\"[\"Q\"U\"V\"@=i=l<^<\\=n=m!?gju#jg>!ellwfq!=wkf#Vmjwfg#Pwbwfp?jnd#pq`>!kwws9,,-isd\x7Fqjdkw\x7Fwkvna\x7F-ip!=?,p`qjsw=\x0E\t?ol`bwjlm-sqlwl`loeqbnfalqgfq>!3!#p!#,=\t?nfwb#mbnf>!?,b=?,gju=?,gju=?elmw.tfjdkw9alog8%rvlw8#bmg#%rvlw8gfsfmgjmd#lm#wkf#nbqdjm938sbggjmd9!#qfo>!mleloolt!#Sqfpjgfmw#le#wkf#wtfmwjfwk#`fmwvqzfujpjlm=\t##?,sbdfJmwfqmfw#F{solqfqb-bpzm`#>#wqvf8\x0E\tjmelqnbwjlm#balvw?gju#jg>!kfbgfq!=!#b`wjlm>!kwws9,,?b#kqfe>!kwwsp9,,?gju#jg>!`lmwfmw!?,gju=\x0E\t?,gju=\x0E\t?gfqjufg#eqln#wkf#?jnd#pq`>$kwws9,,b``lqgjmd#wl#wkf#\t?,algz=\t?,kwno=\tpwzof>!elmw.pjyf9p`qjsw#obmdvbdf>!Bqjbo/#Kfoufwj`b/?,b=?psbm#`obpp>!?,p`qjsw=?p`qjsw#slojwj`bo#sbqwjfpwg=?,wq=?,wbaof=?kqfe>!kwws9,,ttt-jmwfqsqfwbwjlm#leqfo>!pwzofpkffw!#gl`vnfmw-tqjwf+$?`kbqpfw>!vwe.;!=\tafdjmmjmd#le#wkf#qfufbofg#wkbw#wkfwfofujpjlm#pfqjfp!#qfo>!mleloolt!=#wbqdfw>!\\aobmh!=`objnjmd#wkbw#wkfkwws&0B&1E&1Ettt-nbmjefpwbwjlmp#leSqjnf#Njmjpwfq#lejmeovfm`fg#az#wkf`obpp>!`ofbqej{!=,gju=\x0E\t?,gju=\x0E\t\x0E\twkqff.gjnfmpjlmbo@kvq`k#le#Fmdobmgle#Mlqwk#@bqlojmbprvbqf#hjolnfwqfp-bggFufmwOjpwfmfqgjpwjm`w#eqln#wkf`lnnlmoz#hmltm#bpSklmfwj`#Boskbafwgf`obqfg#wkbw#wkf`lmwqloofg#az#wkfAfmibnjm#Eqbmhojmqlof.sobzjmd#dbnfwkf#Vmjufqpjwz#lejm#Tfpwfqm#Fvqlsfsfqplmbo#`lnsvwfqSqlif`w#Dvwfmafqdqfdbqgofpp#le#wkfkbp#affm#sqlslpfgwldfwkfq#tjwk#wkf=?,oj=?oj#`obpp>!jm#plnf#`lvmwqjfpnjm-ip!=?,p`qjsw=le#wkf#slsvobwjlmleej`jbo#obmdvbdf?jnd#pq`>!jnbdfp,jgfmwjejfg#az#wkfmbwvqbo#qfplvq`fp`obppjej`bwjlm#le`bm#af#`lmpjgfqfgrvbmwvn#nf`kbmj`pMfufqwkfofpp/#wkfnjoojlm#zfbqp#bdl?,algz=\x0E\t?,kwno=\x0E\"y\"W\"W\"[\"Q\"U\"V\"@\twbhf#bgubmwbdf#lebmg/#b``lqgjmd#wlbwwqjavwfg#wl#wkfNj`qlplew#Tjmgltpwkf#ejqpw#`fmwvqzvmgfq#wkf#`lmwqlogju#`obpp>!kfbgfqpklqwoz#bewfq#wkfmlwbaof#f{`fswjlmwfmp#le#wklvpbmgppfufqbo#gjeefqfmwbqlvmg#wkf#tlqog-qfb`kjmd#njojwbqzjplobwfg#eqln#wkflsslpjwjlm#wl#wkfwkf#Log#WfpwbnfmwBeqj`bm#Bnfqj`bmpjmpfqwfg#jmwl#wkfpfsbqbwf#eqln#wkfnfwqlslojwbm#bqfbnbhfp#jw#slppjaofb`hmltofgdfg#wkbwbqdvbaoz#wkf#nlpwwzsf>!wf{w,`pp!=\twkf#JmwfqmbwjlmboB``lqgjmd#wl#wkf#sf>!wf{w,`pp!#,=\t`ljm`jgf#tjwk#wkfwtl.wkjqgp#le#wkfGvqjmd#wkjp#wjnf/gvqjmd#wkf#sfqjlgbmmlvm`fg#wkbw#kfwkf#jmwfqmbwjlmbobmg#nlqf#qf`fmwozafojfufg#wkbw#wkf`lmp`jlvpmfpp#bmgelqnfqoz#hmltm#bppvqqlvmgfg#az#wkfejqpw#bssfbqfg#jml``bpjlmbooz#vpfgslpjwjlm9baplovwf8!#wbqdfw>!\\aobmh!#slpjwjlm9qfobwjuf8wf{w.bojdm9`fmwfq8ib{,ojap,irvfqz,2-ab`hdqlvmg.`lolq9 wzsf>!bssoj`bwjlm,bmdvbdf!#`lmwfmw>!?nfwb#kwws.frvju>!Sqjub`z#Sloj`z?,b=f+!&0@p`qjsw#pq`>$!#wbqdfw>!\\aobmh!=Lm#wkf#lwkfq#kbmg/-isd\x7Fwkvna\x7Fqjdkw\x7F1?,gju=?gju#`obpp>!?gju#pwzof>!eolbw9mjmfwffmwk#`fmwvqz?,algz=\x0E\t?,kwno=\x0E\t?jnd#pq`>!kwws9,,p8wf{w.bojdm9`fmwfqelmw.tfjdkw9#alog8#B``lqgjmd#wl#wkf#gjeefqfm`f#afwtffm!#eqbnfalqgfq>!3!#!#pwzof>!slpjwjlm9ojmh#kqfe>!kwws9,,kwno7,ollpf-gwg!=\tgvqjmd#wkjp#sfqjlg?,wg=?,wq=?,wbaof=`olpfoz#qfobwfg#wlelq#wkf#ejqpw#wjnf8elmw.tfjdkw9alog8jmsvw#wzsf>!wf{w!#?psbm#pwzof>!elmw.lmqfbgzpwbwf`kbmdf\n?gju#`obpp>!`ofbqgl`vnfmw-ol`bwjlm-#Elq#f{bnsof/#wkf#b#tjgf#ubqjfwz#le#?\"GL@WZSF#kwno=\x0E\t?%maps8%maps8%maps8!=?b#kqfe>!kwws9,,pwzof>!eolbw9ofew8`lm`fqmfg#tjwk#wkf>kwws&0B&1E&1Ettt-jm#slsvobq#`vowvqfwzsf>!wf{w,`pp!#,=jw#jp#slppjaof#wl#Kbqubqg#Vmjufqpjwzwzofpkffw!#kqfe>!,wkf#nbjm#`kbqb`wfqL{elqg#Vmjufqpjwz##mbnf>!hfztlqgp!#`pwzof>!wf{w.bojdm9wkf#Vmjwfg#Hjmdglnefgfqbo#dlufqmnfmw?gju#pwzof>!nbqdjm#gfsfmgjmd#lm#wkf#gfp`qjswjlm#le#wkf?gju#`obpp>!kfbgfq-njm-ip!=?,p`qjsw=gfpwqv`wjlm#le#wkfpojdkwoz#gjeefqfmwjm#b``lqgbm`f#tjwkwfof`lnnvmj`bwjlmpjmgj`bwfp#wkbw#wkfpklqwoz#wkfqfbewfqfpsf`jbooz#jm#wkf#Fvqlsfbm#`lvmwqjfpKltfufq/#wkfqf#bqfpq`>!kwws9,,pwbwj`pvddfpwfg#wkbw#wkf!#pq`>!kwws9,,ttt-b#obqdf#mvnafq#le#Wfof`lnnvmj`bwjlmp!#qfo>!mleloolt!#wKloz#Qlnbm#Fnsfqlqbonlpw#f{`ovpjufoz!#alqgfq>!3!#bow>!Pf`qfwbqz#le#Pwbwf`vonjmbwjmd#jm#wkf@JB#Tlqog#Eb`wallhwkf#nlpw#jnslqwbmwbmmjufqpbqz#le#wkfpwzof>!ab`hdqlvmg.?oj=?fn=?b#kqfe>!,wkf#Bwobmwj`#L`fbmpwqj`woz#psfbhjmd/pklqwoz#afelqf#wkfgjeefqfmw#wzsfp#lewkf#Lwwlnbm#Fnsjqf=?jnd#pq`>!kwws9,,Bm#Jmwqlgv`wjlm#wl`lmpfrvfm`f#le#wkfgfsbqwvqf#eqln#wkf@lmefgfqbwf#Pwbwfpjmgjdfmlvp#sflsofpSql`ffgjmdp#le#wkfjmelqnbwjlm#lm#wkfwkflqjfp#kbuf#affmjmuloufnfmw#jm#wkfgjujgfg#jmwl#wkqffbgib`fmw#`lvmwqjfpjp#qfpslmpjaof#elqgjpplovwjlm#le#wkf`loobalqbwjlm#tjwktjgfoz#qfdbqgfg#bpkjp#`lmwfnslqbqjfpelvmgjmd#nfnafq#leGlnjmj`bm#Qfsvaoj`dfmfqbooz#b``fswfgwkf#slppjajojwz#lebqf#bopl#bubjobaofvmgfq#`lmpwqv`wjlmqfpwlqbwjlm#le#wkfwkf#dfmfqbo#svaoj`jp#bonlpw#fmwjqfozsbppfp#wkqlvdk#wkfkbp#affm#pvddfpwfg`lnsvwfq#bmg#ujgflDfqnbmj`#obmdvbdfp#b``lqgjmd#wl#wkf#gjeefqfmw#eqln#wkfpklqwoz#bewfqtbqgpkqfe>!kwwsp9,,ttt-qf`fmw#gfufolsnfmwAlbqg#le#Gjqf`wlqp?gju#`obpp>!pfbq`k\x7F#?b#kqfe>!kwws9,,Jm#sbqwj`vobq/#wkfNvowjsof#ellwmlwfplq#lwkfq#pvapwbm`fwklvpbmgp#le#zfbqpwqbmpobwjlm#le#wkf?,gju=\x0E\t?,gju=\x0E\t\x0E\t?b#kqfe>!jmgf{-skstbp#fpwbaojpkfg#jmnjm-ip!=?,p`qjsw=\tsbqwj`jsbwf#jm#wkfb#pwqlmd#jmeovfm`fpwzof>!nbqdjm.wls9qfsqfpfmwfg#az#wkfdqbgvbwfg#eqln#wkfWqbgjwjlmbooz/#wkfFofnfmw+!p`qjsw!*8Kltfufq/#pjm`f#wkf,gju=\t?,gju=\t?gju#ofew8#nbqdjm.ofew9sqlwf`wjlm#bdbjmpw38#ufqwj`bo.bojdm9Vmelqwvmbwfoz/#wkfwzsf>!jnbdf,{.j`lm,gju=\t?gju#`obpp>!#`obpp>!`ofbqej{!=?gju#`obpp>!ellwfq\n\n?,gju=\t\n\n?,gju=\twkf#nlwjlm#sj`wvqf<}=f!t0-lqd,2:::,{kwno!=?b#wbqdfw>!\\aobmh!#wf{w,kwno8#`kbqpfw>!#wbqdfw>!\\aobmh!=?wbaof#`foosbggjmd>!bvwl`lnsofwf>!lee!#wf{w.bojdm9#`fmwfq8wl#obpw#ufqpjlm#az#ab`hdqlvmg.`lolq9# !#kqfe>!kwws9,,ttt-,gju=?,gju=?gju#jg>?b#kqfe>! !#`obpp>!!=?jnd#pq`>!kwws9,,`qjsw!#pq`>!kwws9,,\t?p`qjsw#obmdvbdf>!,,FM!#!kwws9,,ttt-tfm`lgfVQJ@lnslmfmw+!#kqfe>!ibubp`qjsw9?gju#`obpp>!`lmwfmwgl`vnfmw-tqjwf+$?p`slpjwjlm9#baplovwf8p`qjsw#pq`>!kwws9,,#pwzof>!nbqdjm.wls9-njm-ip!=?,p`qjsw=\t?,gju=\t?gju#`obpp>!t0-lqd,2:::,{kwno!#\t\x0E\t?,algz=\x0E\t?,kwno=gjpwjm`wjlm#afwtffm,!#wbqdfw>!\\aobmh!=?ojmh#kqfe>!kwws9,,fm`lgjmd>!vwe.;!<=\tt-bggFufmwOjpwfmfq!kwws9,,ttt-j`lm!#kqfe>!kwws9,,#pwzof>!ab`hdqlvmg9wzsf>!wf{w,`pp!#,=\tnfwb#sqlsfqwz>!ld9w?jmsvw#wzsf>!wf{w!##pwzof>!wf{w.bojdm9wkf#gfufolsnfmw#le#wzofpkffw!#wzsf>!wfkwno8#`kbqpfw>vwe.;jp#`lmpjgfqfg#wl#afwbaof#tjgwk>!233&!#Jm#bggjwjlm#wl#wkf#`lmwqjavwfg#wl#wkf#gjeefqfm`fp#afwtffmgfufolsnfmw#le#wkf#Jw#jp#jnslqwbmw#wl#?,p`qjsw=\t\t?p`qjsw##pwzof>!elmw.pjyf92=?,psbm=?psbm#jg>daOjaqbqz#le#@lmdqfpp?jnd#pq`>!kwws9,,jnFmdojpk#wqbmpobwjlmB`bgfnz#le#P`jfm`fpgju#pwzof>!gjpsobz9`lmpwqv`wjlm#le#wkf-dfwFofnfmwAzJg+jg*jm#`lmivm`wjlm#tjwkFofnfmw+$p`qjsw$*8#?nfwb#sqlsfqwz>!ld9<}=f!wf{w!#mbnf>!=Sqjub`z#Sloj`z?,b=bgnjmjpwfqfg#az#wkffmbaofPjmdofQfrvfpwpwzof>%rvlw8nbqdjm9?,gju=?,gju=?,gju=?=?jnd#pq`>!kwws9,,j#pwzof>%rvlw8eolbw9qfefqqfg#wl#bp#wkf#wlwbo#slsvobwjlm#lejm#Tbpkjmdwlm/#G-@-#pwzof>!ab`hdqlvmg.bnlmd#lwkfq#wkjmdp/lqdbmjybwjlm#le#wkfsbqwj`jsbwfg#jm#wkfwkf#jmwqlgv`wjlm#lejgfmwjejfg#tjwk#wkfej`wjlmbo#`kbqb`wfq#L{elqg#Vmjufqpjwz#njpvmgfqpwbmgjmd#leWkfqf#bqf/#kltfufq/pwzofpkffw!#kqfe>!,@lovnajb#Vmjufqpjwzf{sbmgfg#wl#jm`ovgfvpvbooz#qfefqqfg#wljmgj`bwjmd#wkbw#wkfkbuf#pvddfpwfg#wkbwbeejojbwfg#tjwk#wkf`lqqfobwjlm#afwtffmmvnafq#le#gjeefqfmw=?,wg=?,wq=?,wbaof=Qfsvaoj`#le#Jqfobmg\t?,p`qjsw=\t?p`qjsw#vmgfq#wkf#jmeovfm`f`lmwqjavwjlm#wl#wkfLeej`jbo#tfapjwf#lekfbgrvbqwfqp#le#wkf`fmwfqfg#bqlvmg#wkfjnsoj`bwjlmp#le#wkfkbuf#affm#gfufolsfgEfgfqbo#Qfsvaoj`#leaf`bnf#jm`qfbpjmdoz`lmwjmvbwjlm#le#wkfMlwf/#kltfufq/#wkbwpjnjobq#wl#wkbw#le#`bsbajojwjfp#le#wkfb``lqgbm`f#tjwk#wkfsbqwj`jsbmwp#jm#wkfevqwkfq#gfufolsnfmwvmgfq#wkf#gjqf`wjlmjp#lewfm#`lmpjgfqfgkjp#zlvmdfq#aqlwkfq?,wg=?,wq=?,wbaof=?b#kwws.frvju>![.VB.skzpj`bo#sqlsfqwjfple#Aqjwjpk#@lovnajbkbp#affm#`qjwj`jyfg+tjwk#wkf#f{`fswjlmrvfpwjlmp#balvw#wkfsbppjmd#wkqlvdk#wkf3!#`foosbggjmd>!3!#wklvpbmgp#le#sflsofqfgjqf`wp#kfqf-#Elqkbuf#`kjogqfm#vmgfq&0F&0@,p`qjsw&0F!**8?b#kqfe>!kwws9,,ttt-?oj=?b#kqfe>!kwws9,,pjwf\\mbnf!#`lmwfmw>!wf{w.gf`lqbwjlm9mlmfpwzof>!gjpsobz9#mlmf?nfwb#kwws.frvju>![.mft#Gbwf+*-dfwWjnf+*#wzsf>!jnbdf,{.j`lm!?,psbm=?psbm#`obpp>!obmdvbdf>!ibubp`qjswtjmglt-ol`bwjlm-kqfe?b#kqfe>!ibubp`qjsw9..=\x0E\t?p`qjsw#wzsf>!w?b#kqfe>$kwws9,,ttt-klqw`vw#j`lm!#kqfe>!?,gju=\x0E\t?gju#`obpp>!?p`qjsw#pq`>!kwws9,,!#qfo>!pwzofpkffw!#w?,gju=\t?p`qjsw#wzsf>,b=#?b#kqfe>!kwws9,,#booltWqbmpsbqfm`z>![.VB.@lnsbwjaof!#`lmqfobwjlmpkjs#afwtffm\t?,p`qjsw=\x0E\t?p`qjsw#?,b=?,oj=?,vo=?,gju=bppl`jbwfg#tjwk#wkf#sqldqbnnjmd#obmdvbdf?,b=?b#kqfe>!kwws9,,?,b=?,oj=?oj#`obpp>!elqn#b`wjlm>!kwws9,,?gju#pwzof>!gjpsobz9wzsf>!wf{w!#mbnf>!r!?wbaof#tjgwk>!233&!#ab`hdqlvmg.slpjwjlm9!#alqgfq>!3!#tjgwk>!qfo>!pklqw`vw#j`lm!#k5=?vo=?oj=?b#kqfe>!##?nfwb#kwws.frvju>!`pp!#nfgjb>!p`qffm!#qfpslmpjaof#elq#wkf#!#wzsf>!bssoj`bwjlm,!#pwzof>!ab`hdqlvmg.kwno8#`kbqpfw>vwe.;!#booltwqbmpsbqfm`z>!pwzofpkffw!#wzsf>!wf\x0E\t?nfwb#kwws.frvju>!=?,psbm=?psbm#`obpp>!3!#`foopsb`jmd>!3!=8\t?,p`qjsw=\t?p`qjsw#plnfwjnfp#`boofg#wkfglfp#mlw#mf`fppbqjozElq#nlqf#jmelqnbwjlmbw#wkf#afdjmmjmd#le#?\"GL@WZSF#kwno=?kwnosbqwj`vobqoz#jm#wkf#wzsf>!kjggfm!#mbnf>!ibubp`qjsw9uljg+3*8!feef`wjufmfpp#le#wkf#bvwl`lnsofwf>!lee!#dfmfqbooz#`lmpjgfqfg=?jmsvw#wzsf>!wf{w!#!=?,p`qjsw=\x0E\t?p`qjswwkqlvdklvw#wkf#tlqog`lnnlm#njp`lm`fswjlmbppl`jbwjlm#tjwk#wkf?,gju=\t?,gju=\t?gju#`gvqjmd#kjp#ojefwjnf/`lqqfpslmgjmd#wl#wkfwzsf>!jnbdf,{.j`lm!#bm#jm`qfbpjmd#mvnafqgjsolnbwj`#qfobwjlmpbqf#lewfm#`lmpjgfqfgnfwb#`kbqpfw>!vwe.;!#?jmsvw#wzsf>!wf{w!#f{bnsofp#jm`ovgf#wkf!=?jnd#pq`>!kwws9,,jsbqwj`jsbwjlm#jm#wkfwkf#fpwbaojpknfmw#le\t?,gju=\t?gju#`obpp>!%bns8maps8%bns8maps8wl#gfwfqnjmf#tkfwkfqrvjwf#gjeefqfmw#eqlnnbqhfg#wkf#afdjmmjmdgjpwbm`f#afwtffm#wkf`lmwqjavwjlmp#wl#wkf`lmeoj`w#afwtffm#wkftjgfoz#`lmpjgfqfg#wltbp#lmf#le#wkf#ejqpwtjwk#ubqzjmd#gfdqffpkbuf#psf`vobwfg#wkbw+gl`vnfmw-dfwFofnfmwsbqwj`jsbwjmd#jm#wkflqjdjmbooz#gfufolsfgfwb#`kbqpfw>!vwe.;!=#wzsf>!wf{w,`pp!#,=\tjmwfq`kbmdfbaoz#tjwknlqf#`olpfoz#qfobwfgpl`jbo#bmg#slojwj`bowkbw#tlvog#lwkfqtjpfsfqsfmgj`vobq#wl#wkfpwzof#wzsf>!wf{w,`ppwzsf>!pvanjw!#mbnf>!ebnjojfp#qfpjgjmd#jmgfufolsjmd#`lvmwqjfp`lnsvwfq#sqldqbnnjmdf`lmlnj`#gfufolsnfmwgfwfqnjmbwjlm#le#wkfelq#nlqf#jmelqnbwjlmlm#pfufqbo#l``bpjlmpslqwvdv/Fp#+Fvqlsfv*VWE.;!#pfwWjnflvw+evm`wjlm+*gjpsobz9jmojmf.aol`h8?jmsvw#wzsf>!pvanjw!#wzsf#>#$wf{w,ibubp`qj?jnd#pq`>!kwws9,,ttt-!#!kwws9,,ttt-t0-lqd,pklqw`vw#j`lm!#kqfe>!!#bvwl`lnsofwf>!lee!#?,b=?,gju=?gju#`obpp>?,b=?,oj=\t?oj#`obpp>!`pp!#wzsf>!wf{w,`pp!#?elqn#b`wjlm>!kwws9,,{w,`pp!#kqfe>!kwws9,,ojmh#qfo>!bowfqmbwf!#\x0E\t?p`qjsw#wzsf>!wf{w,#lm`oj`h>!ibubp`qjsw9+mft#Gbwf*-dfwWjnf+*~kfjdkw>!2!#tjgwk>!2!#Sflsof$p#Qfsvaoj`#le##?b#kqfe>!kwws9,,ttt-wf{w.gf`lqbwjlm9vmgfqwkf#afdjmmjmd#le#wkf#?,gju=\t?,gju=\t?,gju=\tfpwbaojpknfmw#le#wkf#?,gju=?,gju=?,gju=?,g ujftslqwxnjm.kfjdkw9\t?p`qjsw#pq`>!kwws9,,lswjlm=?lswjlm#ubovf>lewfm#qfefqqfg#wl#bp#,lswjlm=\t?lswjlm#ubov?\"GL@WZSF#kwno=\t?\"..XJmwfqmbwjlmbo#Bjqslqw=\t?b#kqfe>!kwws9,,ttt?,b=?b#kqfe>!kwws9,,t\fTL\fT^\fTE\fT^\fUh\fT{\fTN\roI\ro|\roL\ro{\roO\rov\rot\nAO\x05Gx\bTA\nzk#+\x0BUm\x05Gx*\fHD\fHS\fH\\\fIa\fHJ\fIk\fHZ\fHM\fHR\fHe\fHD\fH^\fIg\fHM\fHy\fIa\fH[\fIk\fHH\fIa\fH\\\fHp\fHR\fHD\fHy\fHR\fH\\\fIl\fHT\fHn\fH@\fHn\fHK\fHS\fHH\fHT\fIa\fHI\fHR\fHF\fHD\fHR\fHT\fIa\fHY\fIl\fHy\fHR\fH\\\fHT\fHn\fHT\fIa\fHy\fH\\\fHO\fHT\fHR\fHB\fH{\fIa\fH\\\fIl\fHv\fHS\fHs\fIa\fHL\fIg\fHn\fHY\fHS\fHp\fIa\fHr\fHR\fHD\fHi\fHB\fIk\fH\\\fHS\fHy\fHR\fHY\fHS\fHA\fHS\fHD\fIa\fHD\fH{\fHR\fHM\fHS\fHC\fHR\fHm\fHy\fIa\fHC\fIg\fHn\fHy\fHS\fHT\fIm\fH\\\fHy\fIa\fH[\fHR\fHF\fHU\fIm\fHm\fHv\fHH\fIl\fHF\fIa\fH\\\fH@\fHn\fHK\fHD\fHs\fHS\fHF\fIa\fHF\fHO\fIl\fHy\fIa\fH\\\fHS\fHy\fIk\fHs\fHF\fIa\fH\\\fHR\fH\\\fHn\fHA\fHF\fIa\fH\\\fHR\fHF\fIa\fHH\fHB\fHR\fH^\fHS\fHy\fIg\fHn\fH\\\fHG\fHP\fIa\fHH\fHR\fH\\\fHD\fHS\fH\\\fIa\fHB\fHR\fHO\fH^\fHS\fHB\fHS\fHs\fIk\fHMgfp`qjswjlm!#`lmwfmw>!gl`vnfmw-ol`bwjlm-sqlw-dfwFofnfmwpAzWbdMbnf+?\"GL@WZSF#kwno=\t?kwno#?nfwb#`kbqpfw>!vwe.;!=9vqo!#`lmwfmw>!kwws9,,-`pp!#qfo>!pwzofpkffw!pwzof#wzsf>!wf{w,`pp!=wzsf>!wf{w,`pp!#kqfe>!t0-lqd,2:::,{kwno!#{nowzsf>!wf{w,ibubp`qjsw!#nfwklg>!dfw!#b`wjlm>!ojmh#qfo>!pwzofpkffw!##>#gl`vnfmw-dfwFofnfmwwzsf>!jnbdf,{.j`lm!#,=`foosbggjmd>!3!#`foops-`pp!#wzsf>!wf{w,`pp!#?,b=?,oj=?oj=?b#kqfe>!!#tjgwk>!2!#kfjdkw>!2!!=?b#kqfe>!kwws9,,ttt-pwzof>!gjpsobz9mlmf8!=bowfqmbwf!#wzsf>!bssoj.,,T0@,,GWG#[KWNO#2-3#foopsb`jmd>!3!#`foosbg#wzsf>!kjggfm!#ubovf>!,b=%maps8?psbm#qlof>!p\t?jmsvw#wzsf>!kjggfm!#obmdvbdf>!IbubP`qjsw!##gl`vnfmw-dfwFofnfmwpAd>!3!#`foopsb`jmd>!3!#zsf>!wf{w,`pp!#nfgjb>!wzsf>$wf{w,ibubp`qjsw$tjwk#wkf#f{`fswjlm#le#zsf>!wf{w,`pp!#qfo>!pw#kfjdkw>!2!#tjgwk>!2!#>$(fm`lgfVQJ@lnslmfmw+?ojmh#qfo>!bowfqmbwf!#\talgz/#wq/#jmsvw/#wf{wnfwb#mbnf>!qlalwp!#`lmnfwklg>!slpw!#b`wjlm>!=\t?b#kqfe>!kwws9,,ttt-`pp!#qfo>!pwzofpkffw!#?,gju=?,gju=?gju#`obppobmdvbdf>!ibubp`qjsw!=bqjb.kjggfm>!wqvf!=.[?qjsw!#wzsf>!wf{w,ibubpo>38~*+*8\t+evm`wjlm+*xab`hdqlvmg.jnbdf9#vqo+,b=?,oj=?oj=?b#kqfe>!k\n\n?oj=?b#kqfe>!kwws9,,bwlq!#bqjb.kjggfm>!wqv=#?b#kqfe>!kwws9,,ttt-obmdvbdf>!ibubp`qjsw!#,lswjlm=\t?lswjlm#ubovf,gju=?,gju=?gju#`obpp>qbwlq!#bqjb.kjggfm>!wqf>+mft#Gbwf*-dfwWjnf+*slqwvdv/Fp#+gl#Aqbpjo*!wf{w,?nfwb#kwws.frvju>!@lmwfqbmpjwjlmbo,,FM!#!kwws9?kwno#{nomp>!kwws9,,ttt.,,T0@,,GWG#[KWNO#2-3#WGWG,{kwno2.wqbmpjwjlmbo,,ttt-t0-lqd,WQ,{kwno2,sf#>#$wf{w,ibubp`qjsw$8?nfwb#mbnf>!gfp`qjswjlmsbqfmwMlgf-jmpfqwAfelqf?jmsvw#wzsf>!kjggfm!#mbip!#wzsf>!wf{w,ibubp`qj+gl`vnfmw*-qfbgz+evm`wjp`qjsw#wzsf>!wf{w,ibubpjnbdf!#`lmwfmw>!kwws9,,VB.@lnsbwjaof!#`lmwfmw>wno8#`kbqpfw>vwe.;!#,=\tojmh#qfo>!pklqw`vw#j`lm?ojmh#qfo>!pwzofpkffw!#?,p`qjsw=\t?p`qjsw#wzsf>>#gl`vnfmw-`qfbwfFofnfm?b#wbqdfw>!\\aobmh!#kqfe>#gl`vnfmw-dfwFofnfmwpAjmsvw#wzsf>!wf{w!#mbnf>b-wzsf#>#$wf{w,ibubp`qjmsvw#wzsf>!kjggfm!#mbnfkwno8#`kbqpfw>vwe.;!#,=gwg!=\t?kwno#{nomp>!kwws.,,T0@,,GWG#KWNO#7-32#WfmwpAzWbdMbnf+$p`qjsw$*jmsvw#wzsf>!kjggfm!#mbn?p`qjsw#wzsf>!wf{w,ibubp!#pwzof>!gjpsobz9mlmf8!=gl`vnfmw-dfwFofnfmwAzJg+>gl`vnfmw-`qfbwfFofnfmw+$#wzsf>$wf{w,ibubp`qjsw$jmsvw#wzsf>!wf{w!#mbnf>!g-dfwFofnfmwpAzWbdMbnf+pmj`bo!#kqfe>!kwws9,,ttt-@,,GWG#KWNO#7-32#Wqbmpjw?pwzof#wzsf>!wf{w,`pp!=\t\t?pwzof#wzsf>!wf{w,`pp!=jlmbo-gwg!=\t?kwno#{nomp>kwws.frvju>!@lmwfmw.Wzsfgjmd>!3!#`foopsb`jmd>!3!kwno8#`kbqpfw>vwe.;!#,=\t#pwzof>!gjpsobz9mlmf8!=??oj=?b#kqfe>!kwws9,,ttt-#wzsf>$wf{w,ibubp`qjsw$=&*&'&^&\x88\u0178\u0C3E&\u01AD&\u0192&)&^&%&'&\x82&P&1&\xB1&3&]&m&u&E&t&C&\xCF&V&V&/&>&6&\u0F76\u177Co&p&@&E&M&P&x&@&F&e&\xCC&7&:&(&D&0&C&)&.&F&-&1&(&L&F&1\u025E*\u03EA\u21F3&\u1372&K&;&)&E&H&P&0&?&9&V&\x81&-&v&a&,&E&)&?&=&'&'&B&\u0D2E&\u0503&\u0316*&*8&%&%&&&%,)&\x9A&>&\x86&7&]&F&2&>&J&6&n&2&%&?&\x8E&2&6&J&g&-&0&,&*&J&*&O&)&6&(&<&B&N&.&P&@&2&.&W&M&%\u053C\x84(,(<&,&\u03DA&\u18C7&-&,(%&(&%&(\u013B0&X&D&\x81&j&'&J&(&.&B&3&Z&R&h&3&E&E&<\xC6-\u0360\u1EF3&%8?&@&,&Z&@&0&J&,&^&x&_&6&C&6&C\u072C\u2A25&f&-&-&-&-&,&J&2&8&z&8&C&Y&8&-&d&\u1E78\xCC-&7&1&F&7&t&W&7&I&.&.&^&=\u0F9C\u19D3&8(>&/&/&\u077B')'\u1065')'%@/&0&%\u043E\u09C0*&*@&C\u053D\u05D4\u0274\u05EB4\u0DD7\u071A\u04D16\u0D84&/\u0178\u0303Z&*%\u0246\u03FF&\u0134&1\xA8\u04B4\u0174", dictionarySizeBits, "AAAAKKLLKKKKKJJIHHIHHGGFF"); + setData(dictionaryData, dictionarySizeBits); + function InputStream(data) { + this.data = new Int8Array(0); + this.offset = 0; + this.data = data; + } + function readInput(s, dst, offset, length) { + if (s.input === null) { + return -1; + } + const src = s.input; + const end = Math.min(src.offset + length, src.data.length); + const bytesRead = end - src.offset; + dst.set(src.data.subarray(src.offset, end), offset); + src.offset += bytesRead; + return bytesRead; + } + function closeInput(s) { + s.input = new InputStream(new Int8Array(0)); + } + function toUsAsciiBytes(src) { + const n = src.length; + const result = new Int8Array(n); + for (let i = 0; i < n; ++i) { + result[i] = src.charCodeAt(i); + } + return result; + } + function toUtf8Runes(src) { + const n = src.length; + const result = new Int32Array(n); + for (let i = 0; i < n; ++i) { + result[i] = src.charCodeAt(i); + } + return result; + } + function makeError(s, code) { + if (code >= 0) { + return code; + } + if (s.runningState >= 0) { + s.runningState = code; + } + throw new Error("Brotli error code: " + code); + } + let ByteBuffer; + function decode(bytes, options) { + let s = new State(); + s.input = new InputStream(bytes); + initState(s); + if (options) { + let customDictionary = options["customDictionary"]; + if (customDictionary) attachDictionaryChunk(s, customDictionary); + } + let totalOutput = 0; + let chunks = []; + while (true) { + let chunk = new Int8Array(16384); + chunks.push(chunk); + s.output = chunk; + s.outputOffset = 0; + s.outputLength = 16384; + s.outputUsed = 0; + decompress(s); + totalOutput += s.outputUsed; + if (s.outputUsed < 16384) break; + } + close(s); + closeInput(s); + let result = new Int8Array(totalOutput); + let offset = 0; + for (let i = 0; i < chunks.length; ++i) { + let chunk = chunks[i]; + let end = Math.min(totalOutput, offset + 16384); + let len = end - offset; + if (len < 16384) { + result.set(chunk.subarray(0, len), offset); + } else { + result.set(chunk, offset); + } + offset += len; + } + return result; + } + return decode; +}; +let BrotliDecode = makeBrotliDecode(); +;// ./src/core/brotli_stream.js + + + +class BrotliStream extends DecodeStream { + #isAsync = true; + constructor(stream, maybeLength) { + super(maybeLength); + this.stream = stream; + this.dict = stream.dict; + } + readBlock() { + const bytes = this.stream.getBytes(); + const decodedData = BrotliDecode(new Int8Array(bytes.buffer, bytes.byteOffset, bytes.length)); + this.buffer = new Uint8Array(decodedData.buffer, decodedData.byteOffset, decodedData.length); + this.bufferLength = this.buffer.length; + this.eof = true; + } + async getImageData(length, _decoderOptions) { + const data = await this.asyncGetBytes(); + if (!data) { + return this.getBytes(length); + } + if (data.length <= length) { + return data; + } + return data.subarray(0, length); + } + async asyncGetBytes() { + const { + decompressed, + compressed + } = await this.asyncGetBytesFromDecompressionStream("brotli"); + if (decompressed) { + return decompressed; + } + this.#isAsync = false; + this.stream = new Stream(compressed, 0, compressed.length, this.stream.dict); + this.reset(); + return null; + } + get isAsync() { + return this.#isAsync; + } +} + +;// ./src/core/ccitt_stream.js + + + + + +class CCITTFaxStream extends DecodeStream { + constructor(str, maybeLength, params) { + super(maybeLength); + this.stream = str; + this.maybeLength = maybeLength; + this.dict = str.dict; + if (!(params instanceof Dict)) { + params = Dict.empty; + } + this.params = { + K: params.get("K") || 0, + EndOfLine: !!params.get("EndOfLine"), + EncodedByteAlign: !!params.get("EncodedByteAlign"), + Columns: params.get("Columns") || 1728, + Rows: params.get("Rows") || 0, + EndOfBlock: !!(params.get("EndOfBlock") ?? true), + BlackIs1: !!params.get("BlackIs1") + }; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + readBlock() { + this.decodeImageFallback(); + } + get isImageStream() { + return true; + } + get isAsyncDecoder() { + return true; + } + async decodeImage(bytes, length, _decoderOptions) { + if (this.eof) { + return this.buffer; + } + if (!bytes) { + bytes = this.stream.isAsync ? (await this.stream.asyncGetBytes()) || this.bytes : this.bytes; + } + try { + this.buffer = await JBig2CCITTFaxWasmImage.decode(bytes, this.dict.get("W", "Width"), this.dict.get("H", "Height"), null, this.params); + } catch { + warn("CCITTFaxStream: Falling back to JS CCITTFax decoder."); + return this.decodeImageFallback(bytes, length); + } + this.bufferLength = this.buffer.length; + this.eof = true; + return this.buffer; + } + decodeImageFallback(bytes, length) { + if (this.eof) { + return this.buffer; + } + const { + params + } = this; + if (!bytes) { + this.stream.reset(); + bytes = this.bytes; + } + let pos = 0; + const source = { + next() { + return bytes[pos++] ?? -1; + } + }; + if (length && this.buffer.byteLength < length) { + this.buffer = new Uint8Array(length); + } + this.ccittFaxDecoder = new CCITTFaxDecoder(source, params); + let outPos = 0; + while (!this.eof) { + const c = this.ccittFaxDecoder.readNextChar(); + if (c === -1) { + this.eof = true; + break; + } + if (!length) { + this.ensureBuffer(outPos + 1); + } + this.buffer[outPos++] = c; + } + this.bufferLength = this.buffer.length; + return this.buffer.subarray(0, length || this.bufferLength); + } +} + +;// ./src/core/flate_stream.js + + + +const codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +const lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]); +const distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]); +const fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9]; +const fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5]; +class FlateStream extends DecodeStream { + #isAsync = true; + constructor(str, maybeLength) { + super(maybeLength); + this.stream = str; + this.dict = str.dict; + const cmf = str.getByte(); + const flg = str.getByte(); + if (cmf === -1 || flg === -1) { + throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`); + } + if ((cmf & 0x0f) !== 0x08) { + throw new FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`); + } + if (((cmf << 8) + flg) % 31 !== 0) { + throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`); + } + if (flg & 0x20) { + throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`); + } + this.codeSize = 0; + this.codeBuf = 0; + } + async getImageData(length, _decoderOptions) { + const data = await this.asyncGetBytes(); + if (!data) { + return this.getBytes(length); + } + if (data.length <= length) { + return data; + } + return data.subarray(0, length); + } + async asyncGetBytes() { + const { + decompressed, + compressed + } = await this.asyncGetBytesFromDecompressionStream("deflate"); + if (decompressed) { + return decompressed; + } + this.#isAsync = false; + this.stream = new Stream(compressed, 2, compressed.length, this.stream.dict); + this.reset(); + return null; + } + get isAsync() { + return this.#isAsync; + } + getBits(bits) { + const str = this.stream; + let codeSize = this.codeSize; + let codeBuf = this.codeBuf; + let b; + while (codeSize < bits) { + if ((b = str.getByte()) === -1) { + throw new FormatError("Bad encoding in flate stream"); + } + codeBuf |= b << codeSize; + codeSize += 8; + } + b = codeBuf & (1 << bits) - 1; + this.codeBuf = codeBuf >> bits; + this.codeSize = codeSize -= bits; + return b; + } + getCode(table) { + const str = this.stream; + const codes = table[0]; + const maxLen = table[1]; + let codeSize = this.codeSize; + let codeBuf = this.codeBuf; + let b; + while (codeSize < maxLen) { + if ((b = str.getByte()) === -1) { + break; + } + codeBuf |= b << codeSize; + codeSize += 8; + } + const code = codes[codeBuf & (1 << maxLen) - 1]; + const codeLen = code >> 16; + const codeVal = code & 0xffff; + if (codeLen < 1 || codeSize < codeLen) { + throw new FormatError("Bad encoding in flate stream"); + } + this.codeBuf = codeBuf >> codeLen; + this.codeSize = codeSize - codeLen; + return codeVal; + } + generateHuffmanTable(lengths) { + const n = lengths.length; + let maxLen = 0; + let i; + for (i = 0; i < n; ++i) { + if (lengths[i] > maxLen) { + maxLen = lengths[i]; + } + } + const size = 1 << maxLen; + const codes = new Int32Array(size); + for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) { + for (let val = 0; val < n; ++val) { + if (lengths[val] === len) { + let code2 = 0; + let t = code; + for (i = 0; i < len; ++i) { + code2 = code2 << 1 | t & 1; + t >>= 1; + } + for (i = code2; i < size; i += skip) { + codes[i] = len << 16 | val; + } + ++code; + } + } + } + return [codes, maxLen]; + } + #endsStreamOnError(err) { + info(err); + this.eof = true; + } + readBlock() { + let buffer, hdr, len; + const str = this.stream; + try { + hdr = this.getBits(3); + } catch (ex) { + this.#endsStreamOnError(ex.message); + return; + } + if (hdr & 1) { + this.eof = true; + } + hdr >>= 1; + if (hdr === 0) { + let b; + if ((b = str.getByte()) === -1) { + this.#endsStreamOnError("Bad block header in flate stream"); + return; + } + let blockLen = b; + if ((b = str.getByte()) === -1) { + this.#endsStreamOnError("Bad block header in flate stream"); + return; + } + blockLen |= b << 8; + if ((b = str.getByte()) === -1) { + this.#endsStreamOnError("Bad block header in flate stream"); + return; + } + let check = b; + if ((b = str.getByte()) === -1) { + this.#endsStreamOnError("Bad block header in flate stream"); + return; + } + check |= b << 8; + if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) { + throw new FormatError("Bad uncompressed block length in flate stream"); + } + this.codeBuf = 0; + this.codeSize = 0; + const bufferLength = this.bufferLength, + end = bufferLength + blockLen; + buffer = this.ensureBuffer(end); + this.bufferLength = end; + if (blockLen === 0) { + if (str.peekByte() === -1) { + this.eof = true; + } + } else { + const block = str.getBytes(blockLen); + buffer.set(block, bufferLength); + if (block.length < blockLen) { + this.eof = true; + } + } + return; + } + let litCodeTable; + let distCodeTable; + if (hdr === 1) { + litCodeTable = fixedLitCodeTab; + distCodeTable = fixedDistCodeTab; + } else if (hdr === 2) { + const numLitCodes = this.getBits(5) + 257; + const numDistCodes = this.getBits(5) + 1; + const numCodeLenCodes = this.getBits(4) + 4; + const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length); + let i; + for (i = 0; i < numCodeLenCodes; ++i) { + codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3); + } + const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths); + len = 0; + i = 0; + const codes = numLitCodes + numDistCodes; + const codeLengths = new Uint8Array(codes); + let bitsLength, bitsOffset, what; + while (i < codes) { + const code = this.getCode(codeLenCodeTab); + if (code === 16) { + bitsLength = 2; + bitsOffset = 3; + what = len; + } else if (code === 17) { + bitsLength = 3; + bitsOffset = 3; + what = len = 0; + } else if (code === 18) { + bitsLength = 7; + bitsOffset = 11; + what = len = 0; + } else { + codeLengths[i++] = len = code; + continue; + } + let repeatLength = this.getBits(bitsLength) + bitsOffset; + while (repeatLength-- > 0) { + codeLengths[i++] = what; + } + } + litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes)); + distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes)); + } else { + throw new FormatError("Unknown block type in flate stream"); + } + buffer = this.buffer; + let limit = buffer ? buffer.length : 0; + let pos = this.bufferLength; + while (true) { + let code1 = this.getCode(litCodeTable); + if (code1 < 256) { + if (pos + 1 >= limit) { + buffer = this.ensureBuffer(pos + 1); + limit = buffer.length; + } + buffer[pos++] = code1; + continue; + } + if (code1 === 256) { + this.bufferLength = pos; + return; + } + code1 -= 257; + code1 = lengthDecode[code1]; + let code2 = code1 >> 16; + if (code2 > 0) { + code2 = this.getBits(code2); + } + len = (code1 & 0xffff) + code2; + code1 = this.getCode(distCodeTable); + code1 = distDecode[code1]; + code2 = code1 >> 16; + if (code2 > 0) { + code2 = this.getBits(code2); + } + const dist = (code1 & 0xffff) + code2; + if (pos + len >= limit) { + buffer = this.ensureBuffer(pos + len); + limit = buffer.length; + } + for (let k = 0; k < len; ++k, ++pos) { + buffer[pos] = buffer[pos - dist]; + } + } + } +} + +;// ./src/core/jbig2_stream.js + + + + + + +class Jbig2Stream extends DecodeStream { + constructor(stream, maybeLength, params) { + super(maybeLength); + this.stream = stream; + this.dict = stream.dict; + this.maybeLength = maybeLength; + this.params = params; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(requested) {} + readBlock() { + this.decodeImageFallback(); + } + get isAsyncDecoder() { + return true; + } + get isImageStream() { + return true; + } + async decodeImage(bytes, length, _decoderOptions) { + if (this.eof) { + return this.buffer; + } + bytes ||= this.bytes; + try { + let globals = null; + if (this.params instanceof Dict) { + const globalsStream = this.params.get("JBIG2Globals"); + if (globalsStream instanceof BaseStream) { + globals = globalsStream.getBytes(); + } + } + this.buffer = await JBig2CCITTFaxWasmImage.decode(bytes, this.dict.get("Width"), this.dict.get("Height"), globals); + } catch { + warn("Jbig2Stream: Falling back to JS JBIG2 decoder."); + return this.decodeImageFallback(bytes, length); + } + this.bufferLength = this.buffer.length; + this.eof = true; + return this.buffer; + } + decodeImageFallback(bytes, _length) { + if (this.eof) { + return this.buffer; + } + bytes ||= this.bytes; + const jbig2Image = new Jbig2Image(); + const chunks = []; + if (this.params instanceof Dict) { + const globalsStream = this.params.get("JBIG2Globals"); + if (globalsStream instanceof BaseStream) { + const globals = globalsStream.getBytes(); + chunks.push({ + data: globals, + start: 0, + end: globals.length + }); + } + } + chunks.push({ + data: bytes, + start: 0, + end: bytes.length + }); + const data = jbig2Image.parseChunks(chunks); + const dataLength = data.length; + for (let i = 0; i < dataLength; i++) { + data[i] ^= 0xff; + } + this.buffer = data; + this.bufferLength = dataLength; + this.eof = true; + return this.buffer; + } + get canAsyncDecodeImageFromBuffer() { + return this.stream.isAsync; + } +} + +;// ./src/core/jpx_stream.js + + + +class JpxStream extends DecodeStream { + constructor(stream, maybeLength, params) { + super(maybeLength); + this.stream = stream; + this.dict = stream.dict; + this.maybeLength = maybeLength; + this.params = params; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(requested) {} + readBlock(decoderOptions) { + unreachable("JpxStream.readBlock"); + } + get isAsyncDecoder() { + return true; + } + async decodeImage(bytes, _length, decoderOptions) { + if (this.eof) { + return this.buffer; + } + bytes ||= this.bytes; + this.buffer = await JpxImage.decode(bytes, decoderOptions); + this.bufferLength = this.buffer.length; + this.eof = true; + return this.buffer; + } + get canAsyncDecodeImageFromBuffer() { + return this.stream.isAsync; + } + get isImageStream() { + return true; + } +} + +;// ./src/core/lzw_stream.js + +class LZWStream extends DecodeStream { + constructor(str, maybeLength, earlyChange) { + super(maybeLength); + this.stream = str; + this.dict = str.dict; + this.cachedData = 0; + this.bitsCached = 0; + const maxLzwDictionarySize = 4096; + const lzwState = { + earlyChange, + codeLength: 9, + nextCode: 258, + dictionaryValues: new Uint8Array(maxLzwDictionarySize), + dictionaryLengths: new Uint16Array(maxLzwDictionarySize), + dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize), + currentSequence: new Uint8Array(maxLzwDictionarySize), + currentSequenceLength: 0 + }; + for (let i = 0; i < 256; ++i) { + lzwState.dictionaryValues[i] = i; + lzwState.dictionaryLengths[i] = 1; + } + this.lzwState = lzwState; + } + readBits(n) { + let bitsCached = this.bitsCached; + let cachedData = this.cachedData; + while (bitsCached < n) { + const c = this.stream.getByte(); + if (c === -1) { + this.eof = true; + return null; + } + cachedData = cachedData << 8 | c; + bitsCached += 8; + } + this.bitsCached = bitsCached -= n; + this.cachedData = cachedData; + return cachedData >>> bitsCached & (1 << n) - 1; + } + readBlock() { + const blockSize = 512, + decodedSizeDelta = blockSize; + let estimatedDecodedSize = blockSize * 2; + let i, j, q; + const lzwState = this.lzwState; + if (!lzwState) { + return; + } + const earlyChange = lzwState.earlyChange; + let nextCode = lzwState.nextCode; + const dictionaryValues = lzwState.dictionaryValues; + const dictionaryLengths = lzwState.dictionaryLengths; + const dictionaryPrevCodes = lzwState.dictionaryPrevCodes; + let codeLength = lzwState.codeLength; + let prevCode = lzwState.prevCode; + const currentSequence = lzwState.currentSequence; + let currentSequenceLength = lzwState.currentSequenceLength; + let decodedLength = 0; + let currentBufferLength = this.bufferLength; + let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); + for (i = 0; i < blockSize; i++) { + const code = this.readBits(codeLength); + const hasPrev = currentSequenceLength > 0; + if (code < 256) { + currentSequence[0] = code; + currentSequenceLength = 1; + } else if (code >= 258) { + if (code < nextCode) { + currentSequenceLength = dictionaryLengths[code]; + for (j = currentSequenceLength - 1, q = code; j >= 0; j--) { + currentSequence[j] = dictionaryValues[q]; + q = dictionaryPrevCodes[q]; + } + } else { + currentSequence[currentSequenceLength++] = currentSequence[0]; + } + } else if (code === 256) { + codeLength = 9; + nextCode = 258; + currentSequenceLength = 0; + continue; + } else { + this.eof = true; + delete this.lzwState; + break; + } + if (hasPrev) { + dictionaryPrevCodes[nextCode] = prevCode; + dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1; + dictionaryValues[nextCode] = currentSequence[0]; + nextCode++; + codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0; + } + prevCode = code; + decodedLength += currentSequenceLength; + if (estimatedDecodedSize < decodedLength) { + do { + estimatedDecodedSize += decodedSizeDelta; + } while (estimatedDecodedSize < decodedLength); + buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); + } + for (j = 0; j < currentSequenceLength; j++) { + buffer[currentBufferLength++] = currentSequence[j]; + } + } + lzwState.nextCode = nextCode; + lzwState.codeLength = codeLength; + lzwState.prevCode = prevCode; + lzwState.currentSequenceLength = currentSequenceLength; + this.bufferLength = currentBufferLength; + } +} + +;// ./src/core/predictor_stream.js + + + +class PredictorStream extends DecodeStream { + constructor(str, maybeLength, params) { + super(maybeLength); + if (!(params instanceof Dict)) { + return str; + } + const predictor = this.predictor = params.get("Predictor") || 1; + if (predictor <= 1) { + return str; + } + if (predictor !== 2 && (predictor < 10 || predictor > 15)) { + throw new FormatError(`Unsupported predictor: ${predictor}`); + } + this.readBlock = predictor === 2 ? this.readBlockTiff : this.readBlockPng; + this.stream = str; + this.dict = str.dict; + const colors = this.colors = params.get("Colors") || 1; + const bits = this.bits = params.get("BPC", "BitsPerComponent") || 8; + const columns = this.columns = params.get("Columns") || 1; + this.pixBytes = colors * bits + 7 >> 3; + this.rowBytes = columns * colors * bits + 7 >> 3; + return this; + } + readBlockTiff() { + const rowBytes = this.rowBytes; + const bufferLength = this.bufferLength; + const buffer = this.ensureBuffer(bufferLength + rowBytes); + const bits = this.bits; + const colors = this.colors; + const rawBytes = this.stream.getBytes(rowBytes); + this.eof = !rawBytes.length; + if (this.eof) { + return; + } + let inbuf = 0, + outbuf = 0; + let inbits = 0, + outbits = 0; + let pos = bufferLength; + let i; + if (bits === 1 && colors === 1) { + for (i = 0; i < rowBytes; ++i) { + let c = rawBytes[i] ^ inbuf; + c ^= c >> 1; + c ^= c >> 2; + c ^= c >> 4; + inbuf = (c & 1) << 7; + buffer[pos++] = c; + } + } else if (bits === 8) { + for (i = 0; i < colors; ++i) { + buffer[pos++] = rawBytes[i]; + } + for (; i < rowBytes; ++i) { + buffer[pos] = buffer[pos - colors] + rawBytes[i]; + pos++; + } + } else if (bits === 16) { + const bytesPerPixel = colors * 2; + for (i = 0; i < bytesPerPixel; ++i) { + buffer[pos++] = rawBytes[i]; + } + for (; i < rowBytes; i += 2) { + const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff); + buffer[pos++] = sum >> 8 & 0xff; + buffer[pos++] = sum & 0xff; + } + } else { + const compArray = new Uint8Array(colors + 1); + const bitMask = (1 << bits) - 1; + let j = 0, + k = bufferLength; + const columns = this.columns; + for (i = 0; i < columns; ++i) { + for (let kk = 0; kk < colors; ++kk) { + if (inbits < bits) { + inbuf = inbuf << 8 | rawBytes[j++] & 0xff; + inbits += 8; + } + compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask; + inbits -= bits; + outbuf = outbuf << bits | compArray[kk]; + outbits += bits; + if (outbits >= 8) { + buffer[k++] = outbuf >> outbits - 8 & 0xff; + outbits -= 8; + } + } + } + if (outbits > 0) { + buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1); + } + } + this.bufferLength += rowBytes; + } + readBlockPng() { + const rowBytes = this.rowBytes; + const pixBytes = this.pixBytes; + const predictor = this.stream.getByte(); + const rawBytes = this.stream.getBytes(rowBytes); + this.eof = !rawBytes.length; + if (this.eof) { + return; + } + const bufferLength = this.bufferLength; + const buffer = this.ensureBuffer(bufferLength + rowBytes); + let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength); + if (prevRow.length === 0) { + prevRow = new Uint8Array(rowBytes); + } + let i, + j = bufferLength, + up, + c; + switch (predictor) { + case 0: + for (i = 0; i < rowBytes; ++i) { + buffer[j++] = rawBytes[i]; + } + break; + case 1: + for (i = 0; i < pixBytes; ++i) { + buffer[j++] = rawBytes[i]; + } + for (; i < rowBytes; ++i) { + buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff; + j++; + } + break; + case 2: + for (i = 0; i < rowBytes; ++i) { + buffer[j++] = prevRow[i] + rawBytes[i] & 0xff; + } + break; + case 3: + for (i = 0; i < pixBytes; ++i) { + buffer[j++] = (prevRow[i] >> 1) + rawBytes[i]; + } + for (; i < rowBytes; ++i) { + buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff; + j++; + } + break; + case 4: + for (i = 0; i < pixBytes; ++i) { + up = prevRow[i]; + c = rawBytes[i]; + buffer[j++] = up + c; + } + for (; i < rowBytes; ++i) { + up = prevRow[i]; + const upLeft = prevRow[i - pixBytes]; + const left = buffer[j - pixBytes]; + const p = left + up - upLeft; + let pa = p - left; + if (pa < 0) { + pa = -pa; + } + let pb = p - up; + if (pb < 0) { + pb = -pb; + } + let pc = p - upLeft; + if (pc < 0) { + pc = -pc; + } + c = rawBytes[i]; + if (pa <= pb && pa <= pc) { + buffer[j++] = left + c; + } else if (pb <= pc) { + buffer[j++] = up + c; + } else { + buffer[j++] = upLeft + c; + } + } + break; + default: + throw new FormatError(`Unsupported predictor: ${predictor}`); + } + this.bufferLength += rowBytes; + } +} + +;// ./src/core/run_length_stream.js + +class RunLengthStream extends DecodeStream { + constructor(str, maybeLength) { + super(maybeLength); + this.stream = str; + this.dict = str.dict; + } + readBlock() { + const repeatHeader = this.stream.getBytes(2); + if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) { + this.eof = true; + return; + } + let buffer; + let bufferLength = this.bufferLength; + let n = repeatHeader[0]; + if (n < 128) { + buffer = this.ensureBuffer(bufferLength + n + 1); + buffer[bufferLength++] = repeatHeader[1]; + if (n > 0) { + const source = this.stream.getBytes(n); + buffer.set(source, bufferLength); + bufferLength += n; + } + } else { + n = 257 - n; + buffer = this.ensureBuffer(bufferLength + n + 1); + buffer.fill(repeatHeader[1], bufferLength, bufferLength + n); + bufferLength += n; + } + this.bufferLength = bufferLength; + } +} + +;// ./src/core/parser.js + + + + + + + + + + + + + + + +const MAX_LENGTH_TO_CACHE = 1000; +function getInlineImageCacheKey(bytes) { + const strBuf = [], + ii = bytes.length; + let i = 0; + while (i < ii - 1) { + strBuf.push(bytes[i++] << 8 | bytes[i++]); + } + if (i < ii) { + strBuf.push(bytes[i]); + } + return ii + "_" + String.fromCharCode.apply(null, strBuf); +} +class Parser { + constructor({ + lexer, + xref, + allowStreams = false, + recoveryMode = false + }) { + this.lexer = lexer; + this.xref = xref; + this.allowStreams = allowStreams; + this.recoveryMode = recoveryMode; + this.imageCache = Object.create(null); + this._imageId = 0; + this.refill(); + } + refill() { + this.buf1 = this.lexer.getObj(); + this.buf2 = this.lexer.getObj(); + } + shift() { + if (this.buf2 instanceof Cmd && this.buf2.cmd === "ID") { + this.buf1 = this.buf2; + this.buf2 = null; + } else { + this.buf1 = this.buf2; + this.buf2 = this.lexer.getObj(); + } + } + tryShift() { + try { + this.shift(); + return true; + } catch (e) { + if (e instanceof MissingDataException) { + throw e; + } + return false; + } + } + getObj(cipherTransform = null) { + const buf1 = this.buf1; + this.shift(); + if (buf1 instanceof Cmd) { + switch (buf1.cmd) { + case "BI": + return this.makeInlineImage(cipherTransform); + case "[": + const array = []; + while (!isCmd(this.buf1, "]") && this.buf1 !== EOF) { + array.push(this.getObj(cipherTransform)); + } + if (this.buf1 === EOF) { + if (this.recoveryMode) { + return array; + } + throw new ParserEOFException("End of file inside array."); + } + this.shift(); + return array; + case "<<": + const dict = new Dict(this.xref); + while (!isCmd(this.buf1, ">>") && this.buf1 !== EOF) { + if (!(this.buf1 instanceof Name)) { + info("Malformed dictionary: key must be a name object"); + this.shift(); + continue; + } + const key = this.buf1.name; + this.shift(); + if (this.buf1 === EOF) { + break; + } + dict.set(key, this.getObj(cipherTransform)); + } + if (this.buf1 === EOF) { + if (this.recoveryMode) { + return dict; + } + throw new ParserEOFException("End of file inside dictionary."); + } + if (isCmd(this.buf2, "stream")) { + return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict; + } + this.shift(); + return dict; + default: + return buf1; + } + } + if (Number.isInteger(buf1)) { + if (Number.isInteger(this.buf1) && isCmd(this.buf2, "R")) { + const ref = Ref.get(buf1, this.buf1); + this.shift(); + this.shift(); + return ref; + } + return buf1; + } + if (typeof buf1 === "string") { + if (cipherTransform) { + return cipherTransform.decryptString(buf1); + } + return buf1; + } + return buf1; + } + findDefaultInlineStreamEnd(stream) { + const E = 0x45, + I = 0x49, + SPACE = 0x20, + LF = 0xa, + CR = 0xd, + NUL = 0x0; + const { + knownCommands + } = this.lexer, + startPos = stream.pos, + n = 15; + let state = 0, + ch, + maybeEIPos; + while ((ch = stream.getByte()) !== -1) { + if (state === 0) { + state = ch === E ? 1 : 0; + } else if (state === 1) { + state = ch === I ? 2 : 0; + } else { + if (ch === SPACE || ch === LF || ch === CR) { + maybeEIPos = stream.pos; + const followingBytes = stream.peekBytes(n); + const ii = followingBytes.length; + if (ii === 0) { + break; + } + for (let i = 0; i < ii; i++) { + ch = followingBytes[i]; + if (ch === NUL && followingBytes[i + 1] !== NUL) { + continue; + } + if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) { + state = 0; + break; + } + } + if (state !== 2) { + continue; + } + if (!knownCommands) { + warn("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined."); + continue; + } + const tmpLexer = new Lexer(new Stream(stream.peekBytes(5 * n)), knownCommands); + tmpLexer._hexStringWarn = () => {}; + let numArgs = 0; + while (true) { + const nextObj = tmpLexer.getObj(); + if (nextObj === EOF) { + state = 0; + break; + } + if (nextObj instanceof Cmd) { + const knownCommand = knownCommands[nextObj.cmd]; + if (!knownCommand) { + state = 0; + break; + } else if (knownCommand.variableArgs ? numArgs <= knownCommand.numArgs : numArgs === knownCommand.numArgs) { + break; + } + numArgs = 0; + continue; + } + numArgs++; + } + if (state === 2) { + break; + } + } else { + state = 0; + } + } + } + if (ch === -1) { + warn("findDefaultInlineStreamEnd: " + "Reached the end of the stream without finding a valid EI marker"); + if (maybeEIPos) { + warn('... trying to recover by using the last "EI" occurrence.'); + stream.skip(-(stream.pos - maybeEIPos)); + } + } + let endOffset = 4; + stream.skip(-endOffset); + ch = stream.peekByte(); + stream.skip(endOffset); + if (!isWhiteSpace(ch)) { + endOffset--; + } + return stream.pos - endOffset - startPos; + } + findDCTDecodeInlineStreamEnd(stream) { + const startPos = stream.pos; + let foundEOI = false, + b, + markerLength; + while ((b = stream.getByte()) !== -1) { + if (b !== 0xff) { + continue; + } + switch (stream.getByte()) { + case 0x00: + break; + case 0xff: + stream.skip(-1); + break; + case 0xd9: + foundEOI = true; + break; + case 0xc0: + case 0xc1: + case 0xc2: + case 0xc3: + case 0xc5: + case 0xc6: + case 0xc7: + case 0xc9: + case 0xca: + case 0xcb: + case 0xcd: + case 0xce: + case 0xcf: + case 0xc4: + case 0xcc: + case 0xda: + case 0xdb: + case 0xdc: + case 0xdd: + case 0xde: + case 0xdf: + case 0xe0: + case 0xe1: + case 0xe2: + case 0xe3: + case 0xe4: + case 0xe5: + case 0xe6: + case 0xe7: + case 0xe8: + case 0xe9: + case 0xea: + case 0xeb: + case 0xec: + case 0xed: + case 0xee: + case 0xef: + case 0xfe: + markerLength = stream.getUint16(); + if (markerLength > 2) { + stream.skip(markerLength - 2); + } else { + stream.skip(-2); + } + break; + } + if (foundEOI) { + break; + } + } + const length = stream.pos - startPos; + if (b === -1) { + warn("Inline DCTDecode image stream: " + "EOI marker not found, searching for /EI/ instead."); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + this.inlineStreamSkipEI(stream); + return length; + } + findASCII85DecodeInlineStreamEnd(stream) { + const TILDE = 0x7e, + GT = 0x3e; + const startPos = stream.pos; + let ch; + while ((ch = stream.getByte()) !== -1) { + if (ch === TILDE) { + const tildePos = stream.pos; + ch = stream.peekByte(); + while (isWhiteSpace(ch)) { + stream.skip(); + ch = stream.peekByte(); + } + if (ch === GT) { + stream.skip(); + break; + } + if (stream.pos > tildePos) { + const maybeEI = stream.peekBytes(2); + if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) { + break; + } + } + } + } + const length = stream.pos - startPos; + if (ch === -1) { + warn("Inline ASCII85Decode image stream: " + "EOD marker not found, searching for /EI/ instead."); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + this.inlineStreamSkipEI(stream); + return length; + } + findASCIIHexDecodeInlineStreamEnd(stream) { + const GT = 0x3e; + const startPos = stream.pos; + let ch; + while ((ch = stream.getByte()) !== -1) { + if (ch === GT) { + break; + } + } + const length = stream.pos - startPos; + if (ch === -1) { + warn("Inline ASCIIHexDecode image stream: " + "EOD marker not found, searching for /EI/ instead."); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + this.inlineStreamSkipEI(stream); + return length; + } + inlineStreamSkipEI(stream) { + const E = 0x45, + I = 0x49; + let state = 0, + ch; + while ((ch = stream.getByte()) !== -1) { + if (state === 0) { + state = ch === E ? 1 : 0; + } else if (state === 1) { + state = ch === I ? 2 : 0; + } else if (state === 2) { + break; + } + } + } + makeInlineImage(cipherTransform) { + const lexer = this.lexer; + const stream = lexer.stream; + const dictMap = Object.create(null); + let dictLength; + while (!isCmd(this.buf1, "ID") && this.buf1 !== EOF) { + if (!(this.buf1 instanceof Name)) { + throw new FormatError("Dictionary key must be a name object"); + } + const key = this.buf1.name; + this.shift(); + if (this.buf1 === EOF) { + break; + } + dictMap[key] = this.getObj(cipherTransform); + } + if (lexer.beginInlineImagePos !== -1) { + dictLength = stream.pos - lexer.beginInlineImagePos; + } + const filter = this.xref.fetchIfRef(dictMap.F || dictMap.Filter); + let filterName; + if (filter instanceof Name) { + filterName = filter.name; + } else if (Array.isArray(filter)) { + const filterZero = this.xref.fetchIfRef(filter[0]); + if (filterZero instanceof Name) { + filterName = filterZero.name; + } + } + const startPos = stream.pos; + let length; + switch (filterName) { + case "DCT": + case "DCTDecode": + length = this.findDCTDecodeInlineStreamEnd(stream); + break; + case "A85": + case "ASCII85Decode": + length = this.findASCII85DecodeInlineStreamEnd(stream); + break; + case "AHx": + case "ASCIIHexDecode": + length = this.findASCIIHexDecodeInlineStreamEnd(stream); + break; + default: + length = this.findDefaultInlineStreamEnd(stream); + } + let cacheKey; + if (length < MAX_LENGTH_TO_CACHE && dictLength > 0) { + const initialStreamPos = stream.pos; + stream.pos = lexer.beginInlineImagePos; + cacheKey = getInlineImageCacheKey(stream.getBytes(dictLength + length)); + stream.pos = initialStreamPos; + const cacheEntry = this.imageCache[cacheKey]; + if (cacheEntry !== undefined) { + this.buf2 = Cmd.get("EI"); + this.shift(); + cacheEntry.reset(); + return cacheEntry; + } + } + const dict = new Dict(this.xref); + for (const key in dictMap) { + dict.set(key, dictMap[key]); + } + let imageStream = stream.makeSubStream(startPos, length, dict); + if (cipherTransform) { + imageStream = cipherTransform.createStream(imageStream, length); + } + imageStream = this.filter(imageStream, dict, length); + imageStream.dict = dict; + if (cacheKey !== undefined) { + imageStream.cacheKey = `inline_img_${++this._imageId}`; + this.imageCache[cacheKey] = imageStream; + } + this.buf2 = Cmd.get("EI"); + this.shift(); + return imageStream; + } + #findStreamLength(startPos) { + const { + stream + } = this.lexer; + stream.pos = startPos; + const SCAN_BLOCK_LENGTH = 2048; + const signatureLength = "endstream".length; + const END_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64]); + const endLength = END_SIGNATURE.length; + const PARTIAL_SIGNATURE = [new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61])]; + const normalLength = signatureLength - endLength; + while (stream.pos < stream.end) { + const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); + const scanLength = scanBytes.length - signatureLength; + if (scanLength <= 0) { + break; + } + let pos = 0; + while (pos < scanLength) { + let j = 0; + while (j < endLength && scanBytes[pos + j] === END_SIGNATURE[j]) { + j++; + } + if (j >= endLength) { + let found = false; + for (const part of PARTIAL_SIGNATURE) { + const partLen = part.length; + let k = 0; + while (k < partLen && scanBytes[pos + j + k] === part[k]) { + k++; + } + if (k >= normalLength) { + found = true; + break; + } + if (k >= partLen) { + const lastByte = scanBytes[pos + j + k]; + if (isWhiteSpace(lastByte)) { + info(`Found "${bytesToString([...END_SIGNATURE, ...part])}" when ` + "searching for endstream command."); + found = true; + } + break; + } + } + if (found) { + stream.pos += pos; + return stream.pos - startPos; + } + } + pos++; + } + stream.pos += scanLength; + } + return -1; + } + makeStream(dict, cipherTransform) { + const lexer = this.lexer; + let stream = lexer.stream; + lexer.skipToNextLine(); + const startPos = stream.pos - 1; + let length = dict.get("Length"); + if (!Number.isInteger(length)) { + info(`Bad length "${length && length.toString()}" in stream.`); + length = 0; + } + stream.pos = startPos + length; + lexer.nextChar(); + if (this.tryShift() && isCmd(this.buf2, "endstream")) { + this.shift(); + } else { + length = this.#findStreamLength(startPos); + if (length < 0) { + throw new FormatError("Missing endstream command."); + } + lexer.nextChar(); + this.shift(); + this.shift(); + } + this.shift(); + stream = stream.makeSubStream(startPos, length, dict); + if (cipherTransform) { + stream = cipherTransform.createStream(stream, length); + } + stream = this.filter(stream, dict, length); + stream.dict = dict; + return stream; + } + filter(stream, dict, length) { + let filter = dict.get("F", "Filter"); + let params = dict.get("DP", "DecodeParms"); + if (filter instanceof Name) { + if (Array.isArray(params)) { + warn("/DecodeParms should not be an Array, when /Filter is a Name."); + } + return this.makeFilter(stream, filter.name, length, params); + } + let maybeLength = length; + if (Array.isArray(filter)) { + const filterArray = filter; + const paramsArray = params; + for (let i = 0, ii = filterArray.length; i < ii; ++i) { + filter = this.xref.fetchIfRef(filterArray[i]); + if (!(filter instanceof Name)) { + throw new FormatError(`Bad filter name "${filter}"`); + } + params = null; + if (Array.isArray(paramsArray) && i in paramsArray) { + params = this.xref.fetchIfRef(paramsArray[i]); + } + stream = this.makeFilter(stream, filter.name, maybeLength, params); + maybeLength = null; + } + } + return stream; + } + makeFilter(stream, name, maybeLength, params) { + if (maybeLength === 0) { + warn(`Empty "${name}" stream.`); + return new NullStream(); + } + try { + switch (name) { + case "Fl": + case "FlateDecode": + if (params) { + return new PredictorStream(new FlateStream(stream, maybeLength), maybeLength, params); + } + return new FlateStream(stream, maybeLength); + case "LZW": + case "LZWDecode": + let earlyChange = 1; + if (params) { + if (params.has("EarlyChange")) { + earlyChange = params.get("EarlyChange"); + } + return new PredictorStream(new LZWStream(stream, maybeLength, earlyChange), maybeLength, params); + } + return new LZWStream(stream, maybeLength, earlyChange); + case "DCT": + case "DCTDecode": + return new JpegStream(stream, maybeLength, params); + case "JPX": + case "JPXDecode": + return new JpxStream(stream, maybeLength, params); + case "A85": + case "ASCII85Decode": + return new Ascii85Stream(stream, maybeLength); + case "AHx": + case "ASCIIHexDecode": + return new AsciiHexStream(stream, maybeLength); + case "CCF": + case "CCITTFaxDecode": + return new CCITTFaxStream(stream, maybeLength, params); + case "RL": + case "RunLengthDecode": + return new RunLengthStream(stream, maybeLength); + case "JBIG2Decode": + return new Jbig2Stream(stream, maybeLength, params); + case "BrotliDecode": + return new BrotliStream(stream, maybeLength); + } + warn(`Filter "${name}" is not supported.`); + return stream; + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn(`Invalid stream: "${ex}"`); + return new NullStream(); + } + } +} +const specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 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, 2, 0, 2, 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, 2, 0, 2, 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, 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, 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, 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]; +function toHexDigit(ch) { + if (ch >= 0x30 && ch <= 0x39) { + return ch & 0x0f; + } + if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { + return (ch & 0x0f) + 9; + } + return -1; +} +class Lexer { + constructor(stream, knownCommands = null) { + this.stream = stream; + this.nextChar(); + this.strBuf = []; + this.knownCommands = knownCommands; + this._hexStringNumWarn = 0; + this.beginInlineImagePos = -1; + } + nextChar() { + return this.currentChar = this.stream.getByte(); + } + peekChar() { + return this.stream.peekByte(); + } + getNumber() { + let ch = this.currentChar; + let divideBy = 0; + let sign = 1; + if (ch === 0x2d) { + sign = -1; + ch = this.nextChar(); + if (ch === 0x2d) { + ch = this.nextChar(); + } + } else if (ch === 0x2b) { + ch = this.nextChar(); + } + if (ch === 0x0a || ch === 0x0d) { + do { + ch = this.nextChar(); + } while (ch === 0x0a || ch === 0x0d); + } + if (ch === 0x2e) { + divideBy = 10; + ch = this.nextChar(); + } + if (ch < 0x30 || ch > 0x39) { + const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`; + if (isWhiteSpace(ch) || ch === 0x28 || ch === 0x3c || ch === -1) { + info(`Lexer.getNumber - "${msg}".`); + return 0; + } + throw new FormatError(msg); + } + let baseValue = ch - 0x30; + while ((ch = this.nextChar()) >= 0) { + if (ch >= 0x30 && ch <= 0x39) { + const currentDigit = ch - 0x30; + if (divideBy !== 0) { + divideBy *= 10; + } + baseValue = baseValue * 10 + currentDigit; + } else if (ch === 0x2e) { + if (divideBy === 0) { + divideBy = 1; + } else { + break; + } + } else if (ch === 0x2d) { + warn("Badly formatted number: minus sign in the middle"); + } else { + break; + } + } + if (divideBy !== 0) { + baseValue /= divideBy; + } + return sign * baseValue; + } + getString() { + let numParen = 1; + let done = false; + const strBuf = this.strBuf; + strBuf.length = 0; + let ch = this.nextChar(); + while (true) { + let charBuffered = false; + switch (ch | 0) { + case -1: + warn("Unterminated string"); + done = true; + break; + case 0x28: + ++numParen; + strBuf.push("("); + break; + case 0x29: + if (--numParen === 0) { + this.nextChar(); + done = true; + } else { + strBuf.push(")"); + } + break; + case 0x5c: + ch = this.nextChar(); + switch (ch) { + case -1: + warn("Unterminated string"); + done = true; + break; + case 0x6e: + strBuf.push("\n"); + break; + case 0x72: + strBuf.push("\r"); + break; + case 0x74: + strBuf.push("\t"); + break; + case 0x62: + strBuf.push("\b"); + break; + case 0x66: + strBuf.push("\f"); + break; + case 0x5c: + case 0x28: + case 0x29: + strBuf.push(String.fromCharCode(ch)); + break; + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + let x = ch & 0x0f; + ch = this.nextChar(); + charBuffered = true; + if (ch >= 0x30 && ch <= 0x37) { + x = (x << 3) + (ch & 0x0f); + ch = this.nextChar(); + if (ch >= 0x30 && ch <= 0x37) { + charBuffered = false; + x = (x << 3) + (ch & 0x0f); + } + } + strBuf.push(String.fromCharCode(x)); + break; + case 0x0d: + if (this.peekChar() === 0x0a) { + this.nextChar(); + } + break; + case 0x0a: + break; + default: + strBuf.push(String.fromCharCode(ch)); + break; + } + break; + default: + strBuf.push(String.fromCharCode(ch)); + break; + } + if (done) { + break; + } + if (!charBuffered) { + ch = this.nextChar(); + } + } + return strBuf.join(""); + } + getName() { + let ch, previousCh; + const strBuf = this.strBuf; + strBuf.length = 0; + while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { + if (ch === 0x23) { + ch = this.nextChar(); + if (specialChars[ch]) { + warn("Lexer_getName: " + "NUMBER SIGN (#) should be followed by a hexadecimal number."); + strBuf.push("#"); + break; + } + const x = toHexDigit(ch); + if (x !== -1) { + previousCh = ch; + ch = this.nextChar(); + const x2 = toHexDigit(ch); + if (x2 === -1) { + warn(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + "in hexadecimal number."); + strBuf.push("#", String.fromCharCode(previousCh)); + if (specialChars[ch]) { + break; + } + strBuf.push(String.fromCharCode(ch)); + continue; + } + strBuf.push(String.fromCharCode(x << 4 | x2)); + } else { + strBuf.push("#", String.fromCharCode(ch)); + } + } else { + strBuf.push(String.fromCharCode(ch)); + } + } + if (strBuf.length > 127) { + warn(`Name token is longer than allowed by the spec: ${strBuf.length}`); + } + return Name.get(strBuf.join("")); + } + _hexStringWarn(ch) { + const MAX_HEX_STRING_NUM_WARN = 5; + if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) { + warn("getHexString - ignoring additional invalid characters."); + return; + } + if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) { + return; + } + warn(`getHexString - ignoring invalid character: ${ch}`); + } + getHexString() { + const strBuf = this.strBuf; + strBuf.length = 0; + let ch = this.currentChar; + let firstDigit = -1, + digit = -1; + this._hexStringNumWarn = 0; + while (true) { + if (ch < 0) { + warn("Unterminated hex string"); + break; + } else if (ch === 0x3e) { + this.nextChar(); + break; + } else if (specialChars[ch] === 1) { + ch = this.nextChar(); + continue; + } else { + digit = toHexDigit(ch); + if (digit === -1) { + this._hexStringWarn(ch); + } else if (firstDigit === -1) { + firstDigit = digit; + } else { + strBuf.push(String.fromCharCode(firstDigit << 4 | digit)); + firstDigit = -1; + } + ch = this.nextChar(); + } + } + if (firstDigit !== -1) { + strBuf.push(String.fromCharCode(firstDigit << 4)); + } + return strBuf.join(""); + } + getObj() { + let comment = false; + let ch = this.currentChar; + while (true) { + if (ch < 0) { + return EOF; + } + if (comment) { + if (ch === 0x0a || ch === 0x0d) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (specialChars[ch] !== 1) { + break; + } + ch = this.nextChar(); + } + switch (ch | 0) { + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x2b: + case 0x2d: + case 0x2e: + return this.getNumber(); + case 0x28: + return this.getString(); + case 0x2f: + return this.getName(); + case 0x5b: + this.nextChar(); + return Cmd.get("["); + case 0x5d: + this.nextChar(); + return Cmd.get("]"); + case 0x3c: + ch = this.nextChar(); + if (ch === 0x3c) { + this.nextChar(); + return Cmd.get("<<"); + } + return this.getHexString(); + case 0x3e: + ch = this.nextChar(); + if (ch === 0x3e) { + this.nextChar(); + return Cmd.get(">>"); + } + return Cmd.get(">"); + case 0x7b: + this.nextChar(); + return Cmd.get("{"); + case 0x7d: + this.nextChar(); + return Cmd.get("}"); + case 0x29: + this.nextChar(); + throw new FormatError(`Illegal character: ${ch}`); + } + let str = String.fromCharCode(ch); + if (ch < 0x20 || ch > 0x7f) { + const nextCh = this.peekChar(); + if (nextCh >= 0x20 && nextCh <= 0x7f) { + this.nextChar(); + return Cmd.get(str); + } + } + const knownCommands = this.knownCommands; + let knownCommandFound = knownCommands?.[str] !== undefined; + while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { + const possibleCommand = str + String.fromCharCode(ch); + if (knownCommandFound && knownCommands[possibleCommand] === undefined) { + break; + } + if (str.length === 128) { + throw new FormatError(`Command token too long: ${str.length}`); + } + str = possibleCommand; + knownCommandFound = knownCommands?.[str] !== undefined; + } + if (str === "true") { + return true; + } + if (str === "false") { + return false; + } + if (str === "null") { + return null; + } + if (str === "BI") { + this.beginInlineImagePos = this.stream.pos; + } + return Cmd.get(str); + } + skipToNextLine() { + let ch = this.currentChar; + while (ch >= 0) { + if (ch === 0x0d) { + ch = this.nextChar(); + if (ch === 0x0a) { + this.nextChar(); + } + break; + } else if (ch === 0x0a) { + this.nextChar(); + break; + } + ch = this.nextChar(); + } + } +} +class Linearization { + static create(stream) { + function getInt(linDict, name, allowZeroValue = false) { + const obj = linDict.get(name); + if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) { + return obj; + } + throw new Error(`The "${name}" parameter in the linearization ` + "dictionary is invalid."); + } + function getHints(linDict) { + const hints = linDict.get("H"); + let hintsLength; + if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) { + for (let index = 0; index < hintsLength; index++) { + const hint = hints[index]; + if (!(Number.isInteger(hint) && hint > 0)) { + throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`); + } + } + return hints; + } + throw new Error("Hint array in the linearization dictionary is invalid."); + } + const parser = new Parser({ + lexer: new Lexer(stream), + xref: null + }); + const obj1 = parser.getObj(); + const obj2 = parser.getObj(); + const obj3 = parser.getObj(); + const linDict = parser.getObj(); + let obj, length; + if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && isCmd(obj3, "obj") && linDict instanceof Dict && typeof (obj = linDict.get("Linearized")) === "number" && obj > 0)) { + return null; + } else if ((length = getInt(linDict, "L")) !== stream.length) { + throw new Error('The "L" parameter in the linearization dictionary ' + "does not equal the stream length."); + } + return { + length, + hints: getHints(linDict), + objectNumberFirst: getInt(linDict, "O"), + endFirst: getInt(linDict, "E"), + numPages: getInt(linDict, "N"), + mainXRefEntriesOffset: getInt(linDict, "T"), + pageFirst: linDict.has("P") ? getInt(linDict, "P", true) : 0 + }; + } +} + +;// ./src/core/cmap.js + + + + + + + +const BUILT_IN_CMAPS = ["Adobe-GB1-UCS2", "Adobe-CNS1-UCS2", "Adobe-Japan1-UCS2", "Adobe-Korea1-UCS2", "78-EUC-H", "78-EUC-V", "78-H", "78-RKSJ-H", "78-RKSJ-V", "78-V", "78ms-RKSJ-H", "78ms-RKSJ-V", "83pv-RKSJ-H", "90ms-RKSJ-H", "90ms-RKSJ-V", "90msp-RKSJ-H", "90msp-RKSJ-V", "90pv-RKSJ-H", "90pv-RKSJ-V", "Add-H", "Add-RKSJ-H", "Add-RKSJ-V", "Add-V", "Adobe-CNS1-0", "Adobe-CNS1-1", "Adobe-CNS1-2", "Adobe-CNS1-3", "Adobe-CNS1-4", "Adobe-CNS1-5", "Adobe-CNS1-6", "Adobe-GB1-0", "Adobe-GB1-1", "Adobe-GB1-2", "Adobe-GB1-3", "Adobe-GB1-4", "Adobe-GB1-5", "Adobe-Japan1-0", "Adobe-Japan1-1", "Adobe-Japan1-2", "Adobe-Japan1-3", "Adobe-Japan1-4", "Adobe-Japan1-5", "Adobe-Japan1-6", "Adobe-Korea1-0", "Adobe-Korea1-1", "Adobe-Korea1-2", "B5-H", "B5-V", "B5pc-H", "B5pc-V", "CNS-EUC-H", "CNS-EUC-V", "CNS1-H", "CNS1-V", "CNS2-H", "CNS2-V", "ETHK-B5-H", "ETHK-B5-V", "ETen-B5-H", "ETen-B5-V", "ETenms-B5-H", "ETenms-B5-V", "EUC-H", "EUC-V", "Ext-H", "Ext-RKSJ-H", "Ext-RKSJ-V", "Ext-V", "GB-EUC-H", "GB-EUC-V", "GB-H", "GB-V", "GBK-EUC-H", "GBK-EUC-V", "GBK2K-H", "GBK2K-V", "GBKp-EUC-H", "GBKp-EUC-V", "GBT-EUC-H", "GBT-EUC-V", "GBT-H", "GBT-V", "GBTpc-EUC-H", "GBTpc-EUC-V", "GBpc-EUC-H", "GBpc-EUC-V", "H", "HKdla-B5-H", "HKdla-B5-V", "HKdlb-B5-H", "HKdlb-B5-V", "HKgccs-B5-H", "HKgccs-B5-V", "HKm314-B5-H", "HKm314-B5-V", "HKm471-B5-H", "HKm471-B5-V", "HKscs-B5-H", "HKscs-B5-V", "Hankaku", "Hiragana", "KSC-EUC-H", "KSC-EUC-V", "KSC-H", "KSC-Johab-H", "KSC-Johab-V", "KSC-V", "KSCms-UHC-H", "KSCms-UHC-HW-H", "KSCms-UHC-HW-V", "KSCms-UHC-V", "KSCpc-EUC-H", "KSCpc-EUC-V", "Katakana", "NWP-H", "NWP-V", "RKSJ-H", "RKSJ-V", "Roman", "UniCNS-UCS2-H", "UniCNS-UCS2-V", "UniCNS-UTF16-H", "UniCNS-UTF16-V", "UniCNS-UTF32-H", "UniCNS-UTF32-V", "UniCNS-UTF8-H", "UniCNS-UTF8-V", "UniGB-UCS2-H", "UniGB-UCS2-V", "UniGB-UTF16-H", "UniGB-UTF16-V", "UniGB-UTF32-H", "UniGB-UTF32-V", "UniGB-UTF8-H", "UniGB-UTF8-V", "UniJIS-UCS2-H", "UniJIS-UCS2-HW-H", "UniJIS-UCS2-HW-V", "UniJIS-UCS2-V", "UniJIS-UTF16-H", "UniJIS-UTF16-V", "UniJIS-UTF32-H", "UniJIS-UTF32-V", "UniJIS-UTF8-H", "UniJIS-UTF8-V", "UniJIS2004-UTF16-H", "UniJIS2004-UTF16-V", "UniJIS2004-UTF32-H", "UniJIS2004-UTF32-V", "UniJIS2004-UTF8-H", "UniJIS2004-UTF8-V", "UniJISPro-UCS2-HW-V", "UniJISPro-UCS2-V", "UniJISPro-UTF8-V", "UniJISX0213-UTF32-H", "UniJISX0213-UTF32-V", "UniJISX02132004-UTF32-H", "UniJISX02132004-UTF32-V", "UniKS-UCS2-H", "UniKS-UCS2-V", "UniKS-UTF16-H", "UniKS-UTF16-V", "UniKS-UTF32-H", "UniKS-UTF32-V", "UniKS-UTF8-H", "UniKS-UTF8-V", "V", "WP-Symbol"]; +const MAX_MAP_RANGE = 2 ** 24 - 1; +class CMap { + constructor(builtInCMap = false) { + this.codespaceRanges = [[], [], [], []]; + this.numCodespaceRanges = 0; + this._map = []; + this.name = ""; + this.vertical = false; + this.useCMap = null; + this.builtInCMap = builtInCMap; + } + addCodespaceRange(n, low, high) { + this.codespaceRanges[n - 1].push(low, high); + this.numCodespaceRanges++; + } + mapCidRange(low, high, dstLow) { + if (high - low > MAX_MAP_RANGE) { + throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE."); + } + while (low <= high) { + this._map[low++] = dstLow++; + } + } + mapBfRange(low, high, dstLow) { + if (high - low > MAX_MAP_RANGE) { + throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE."); + } + const lastByte = dstLow.length - 1; + while (low <= high) { + this._map[low++] = dstLow; + const nextCharCode = dstLow.charCodeAt(lastByte) + 1; + if (nextCharCode > 0xff) { + dstLow = dstLow.substring(0, lastByte - 1) + String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) + "\x00"; + continue; + } + dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode); + } + } + mapBfRangeToArray(low, high, array) { + if (high - low > MAX_MAP_RANGE) { + throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE."); + } + const ii = array.length; + let i = 0; + while (low <= high && i < ii) { + this._map[low] = array[i++]; + ++low; + } + } + mapOne(src, dst) { + this._map[src] = dst; + } + lookup(code) { + return this._map[code]; + } + contains(code) { + return this._map[code] !== undefined; + } + forEach(callback) { + const map = this._map; + const length = map.length; + if (length <= 0x10000) { + for (let i = 0; i < length; i++) { + if (map[i] !== undefined) { + callback(i, map[i]); + } + } + } else { + for (const i in map) { + callback(i, map[i]); + } + } + } + charCodeOf(value) { + const map = this._map; + if (map.length <= 0x10000) { + return map.indexOf(value); + } + for (const charCode in map) { + if (map[charCode] === value) { + return charCode | 0; + } + } + return -1; + } + getMap() { + return this._map; + } + readCharCode(str, offset, out) { + let c = 0; + const codespaceRanges = this.codespaceRanges; + for (let n = 0, nn = codespaceRanges.length; n < nn; n++) { + c = (c << 8 | str.charCodeAt(offset + n)) >>> 0; + const codespaceRange = codespaceRanges[n]; + for (let k = 0, kk = codespaceRange.length; k < kk;) { + const low = codespaceRange[k++]; + const high = codespaceRange[k++]; + if (c >= low && c <= high) { + out.charcode = c; + out.length = n + 1; + return; + } + } + } + out.charcode = 0; + out.length = 1; + } + getCharCodeLength(charCode) { + const codespaceRanges = this.codespaceRanges; + for (let n = 0, nn = codespaceRanges.length; n < nn; n++) { + const codespaceRange = codespaceRanges[n]; + for (let k = 0, kk = codespaceRange.length; k < kk;) { + const low = codespaceRange[k++]; + const high = codespaceRange[k++]; + if (charCode >= low && charCode <= high) { + return n + 1; + } + } + } + return 1; + } + get length() { + return this._map.length; + } + get isIdentityCMap() { + if (!(this.name === "Identity-H" || this.name === "Identity-V")) { + return false; + } + if (this._map.length !== 0x10000) { + return false; + } + for (let i = 0; i < 0x10000; i++) { + if (this._map[i] !== i) { + return false; + } + } + return true; + } +} +class IdentityCMap extends CMap { + constructor(vertical, n) { + super(); + this.vertical = vertical; + this.addCodespaceRange(n, 0, 0xffff); + } + mapCidRange(low, high, dstLow) { + unreachable("should not call mapCidRange"); + } + mapBfRange(low, high, dstLow) { + unreachable("should not call mapBfRange"); + } + mapBfRangeToArray(low, high, array) { + unreachable("should not call mapBfRangeToArray"); + } + mapOne(src, dst) { + unreachable("should not call mapCidOne"); + } + lookup(code) { + return Number.isInteger(code) && code <= 0xffff ? code : undefined; + } + contains(code) { + return Number.isInteger(code) && code <= 0xffff; + } + forEach(callback) { + for (let i = 0; i <= 0xffff; i++) { + callback(i, i); + } + } + charCodeOf(value) { + return Number.isInteger(value) && value <= 0xffff ? value : -1; + } + getMap() { + const map = new Array(0x10000); + for (let i = 0; i <= 0xffff; i++) { + map[i] = i; + } + return map; + } + get length() { + return 0x10000; + } + get isIdentityCMap() { + unreachable("should not access .isIdentityCMap"); + } +} +function strToInt(str) { + let a = 0; + for (let i = 0; i < str.length; i++) { + a = a << 8 | str.charCodeAt(i); + } + return a >>> 0; +} +function expectString(obj) { + if (typeof obj !== "string") { + throw new FormatError("Malformed CMap: expected string."); + } +} +function expectInt(obj) { + if (!Number.isInteger(obj)) { + throw new FormatError("Malformed CMap: expected int."); + } +} +function parseBfChar(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === EOF) { + break; + } + if (isCmd(obj, "endbfchar")) { + return; + } + expectString(obj); + const src = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + const dst = obj; + cMap.mapOne(src, dst); + } +} +function parseBfRange(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === EOF) { + break; + } + if (isCmd(obj, "endbfrange")) { + return; + } + expectString(obj); + const low = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + const high = strToInt(obj); + obj = lexer.getObj(); + if (Number.isInteger(obj) || typeof obj === "string") { + const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj; + cMap.mapBfRange(low, high, dstLow); + } else if (isCmd(obj, "[")) { + obj = lexer.getObj(); + const array = []; + while (!isCmd(obj, "]") && obj !== EOF) { + array.push(obj); + obj = lexer.getObj(); + } + cMap.mapBfRangeToArray(low, high, array); + } else { + break; + } + } + throw new FormatError("Invalid bf range."); +} +function parseCidChar(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === EOF) { + break; + } + if (isCmd(obj, "endcidchar")) { + return; + } + expectString(obj); + const src = strToInt(obj); + obj = lexer.getObj(); + expectInt(obj); + const dst = obj; + cMap.mapOne(src, dst); + } +} +function parseCidRange(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === EOF) { + break; + } + if (isCmd(obj, "endcidrange")) { + return; + } + expectString(obj); + const low = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + const high = strToInt(obj); + obj = lexer.getObj(); + expectInt(obj); + const dstLow = obj; + cMap.mapCidRange(low, high, dstLow); + } +} +function parseCodespaceRange(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === EOF) { + break; + } + if (isCmd(obj, "endcodespacerange")) { + return; + } + if (typeof obj !== "string") { + break; + } + const low = strToInt(obj); + obj = lexer.getObj(); + if (typeof obj !== "string") { + break; + } + const high = strToInt(obj); + cMap.addCodespaceRange(obj.length, low, high); + } + throw new FormatError("Invalid codespace range."); +} +function parseWMode(cMap, lexer) { + const obj = lexer.getObj(); + if (Number.isInteger(obj)) { + cMap.vertical = !!obj; + } +} +function parseCMapName(cMap, lexer) { + const obj = lexer.getObj(); + if (obj instanceof Name) { + cMap.name = obj.name; + } +} +async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) { + let previous, embeddedUseCMap; + objLoop: while (true) { + try { + const obj = lexer.getObj(); + if (obj === EOF) { + break; + } else if (obj instanceof Name) { + if (obj.name === "WMode") { + parseWMode(cMap, lexer); + } else if (obj.name === "CMapName") { + parseCMapName(cMap, lexer); + } + previous = obj; + } else if (obj instanceof Cmd) { + switch (obj.cmd) { + case "endcmap": + break objLoop; + case "usecmap": + if (previous instanceof Name) { + embeddedUseCMap = previous.name; + } + break; + case "begincodespacerange": + parseCodespaceRange(cMap, lexer); + break; + case "beginbfchar": + parseBfChar(cMap, lexer); + break; + case "begincidchar": + parseCidChar(cMap, lexer); + break; + case "beginbfrange": + parseBfRange(cMap, lexer); + break; + case "begincidrange": + parseCidRange(cMap, lexer); + break; + } + } + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn("Invalid cMap data: " + ex); + continue; + } + } + if (!useCMap && embeddedUseCMap) { + useCMap = embeddedUseCMap; + } + if (useCMap) { + return extendCMap(cMap, fetchBuiltInCMap, useCMap); + } + return cMap; +} +async function extendCMap(cMap, fetchBuiltInCMap, useCMap) { + cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap); + if (cMap.numCodespaceRanges === 0) { + const useCodespaceRanges = cMap.useCMap.codespaceRanges; + for (let i = 0; i < useCodespaceRanges.length; i++) { + cMap.codespaceRanges[i] = useCodespaceRanges[i].slice(); + } + cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges; + } + cMap.useCMap.forEach(function (key, value) { + if (!cMap.contains(key)) { + cMap.mapOne(key, value); + } + }); + return cMap; +} +async function createBuiltInCMap(name, fetchBuiltInCMap) { + if (name === "Identity-H") { + return new IdentityCMap(false, 2); + } else if (name === "Identity-V") { + return new IdentityCMap(true, 2); + } + if (!BUILT_IN_CMAPS.includes(name)) { + throw new Error("Unknown CMap name: " + name); + } + if (!fetchBuiltInCMap) { + throw new Error("Built-in CMap parameters are not provided."); + } + const { + cMapData, + isCompressed + } = await fetchBuiltInCMap(name); + const cMap = new CMap(true); + if (isCompressed) { + return new BinaryCMapReader().process(cMapData, cMap, useCMap => extendCMap(cMap, fetchBuiltInCMap, useCMap)); + } + const lexer = new Lexer(new Stream(cMapData)); + return parseCMap(cMap, lexer, fetchBuiltInCMap, null); +} +class CMapFactory { + static async create({ + encoding, + fetchBuiltInCMap, + useCMap + }) { + if (encoding instanceof Name) { + return createBuiltInCMap(encoding.name, fetchBuiltInCMap); + } else if (encoding instanceof BaseStream) { + if (encoding.isAsync) { + const bytes = await encoding.asyncGetBytes(); + if (bytes) { + encoding = new Stream(bytes, 0, bytes.length, encoding.dict); + } + } + const parsedCMap = await parseCMap(new CMap(), new Lexer(encoding), fetchBuiltInCMap, useCMap); + if (parsedCMap.isIdentityCMap) { + return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap); + } + return parsedCMap; + } + throw new Error("Encoding required."); + } +} + +;// ./src/shared/obj_bin_transform_utils.js +class CSS_FONT_INFO { + static strings = ["fontFamily", "fontWeight", "italicAngle"]; +} +class SYSTEM_FONT_INFO { + static strings = ["css", "loadedName", "baseFontName", "src"]; +} +class FONT_INFO { + static bools = ["black", "bold", "disableFontFace", "fontExtraProperties", "isInvalidPDFjsFont", "isType3Font", "italic", "missingFile", "remeasure", "vertical"]; + static numbers = ["ascent", "defaultWidth", "descent"]; + static strings = ["fallbackName", "loadedName", "mimetype", "name"]; + static OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8); + static OFFSET_BBOX = this.OFFSET_NUMBERS + this.numbers.length * 8; + static OFFSET_FONT_MATRIX = this.OFFSET_BBOX + 1 + 2 * 4; + static OFFSET_DEFAULT_VMETRICS = this.OFFSET_FONT_MATRIX + 1 + 8 * 6; + static OFFSET_STRINGS = this.OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3; +} +class PATTERN_INFO { + static KIND = 0; + static HAS_BBOX = 1; + static HAS_BACKGROUND = 2; + static SHADING_TYPE = 3; + static N_COORD = 4; + static N_COLOR = 8; + static N_STOP = 12; + static N_FIGURES = 16; +} + +;// ./src/core/obj_bin_transform_core.js + + +function compileCssFontInfo(info) { + const encoder = new TextEncoder(); + const encodedStrings = {}; + let stringsLength = 0; + for (const prop of CSS_FONT_INFO.strings) { + const encoded = encoder.encode(info[prop]); + encodedStrings[prop] = encoded; + stringsLength += 4 + encoded.length; + } + const buffer = new ArrayBuffer(stringsLength); + const data = new Uint8Array(buffer); + const view = new DataView(buffer); + let offset = 0; + for (const prop of CSS_FONT_INFO.strings) { + const encoded = encodedStrings[prop]; + const length = encoded.length; + view.setUint32(offset, length); + data.set(encoded, offset + 4); + offset += 4 + length; + } + assert(offset === buffer.byteLength, "compileCssFontInfo: Buffer overflow"); + return buffer; +} +function compileSystemFontInfo(info) { + const encoder = new TextEncoder(); + const encodedStrings = {}; + let stringsLength = 0; + for (const prop of SYSTEM_FONT_INFO.strings) { + const encoded = encoder.encode(info[prop]); + encodedStrings[prop] = encoded; + stringsLength += 4 + encoded.length; + } + stringsLength += 4; + let encodedStyleStyle, + encodedStyleWeight, + lengthEstimate = 1 + stringsLength; + if (info.style) { + encodedStyleStyle = encoder.encode(info.style.style); + encodedStyleWeight = encoder.encode(info.style.weight); + lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length; + } + const buffer = new ArrayBuffer(lengthEstimate); + const data = new Uint8Array(buffer); + const view = new DataView(buffer); + let offset = 0; + view.setUint8(offset++, info.guessFallback ? 1 : 0); + view.setUint32(offset, 0); + offset += 4; + stringsLength = 0; + for (const prop of SYSTEM_FONT_INFO.strings) { + const encoded = encodedStrings[prop]; + const length = encoded.length; + stringsLength += 4 + length; + view.setUint32(offset, length); + data.set(encoded, offset + 4); + offset += 4 + length; + } + view.setUint32(offset - stringsLength - 4, stringsLength); + if (info.style) { + view.setUint32(offset, encodedStyleStyle.length); + data.set(encodedStyleStyle, offset + 4); + offset += 4 + encodedStyleStyle.length; + view.setUint32(offset, encodedStyleWeight.length); + data.set(encodedStyleWeight, offset + 4); + offset += 4 + encodedStyleWeight.length; + } + assert(offset <= buffer.byteLength, "compileSystemFontInfo: Buffer overflow"); + return buffer.transferToFixedLength(offset); +} +function compileFontInfo(font) { + const systemFontInfoBuffer = font.systemFontInfo ? compileSystemFontInfo(font.systemFontInfo) : null; + const cssFontInfoBuffer = font.cssFontInfo ? compileCssFontInfo(font.cssFontInfo) : null; + const encoder = new TextEncoder(); + const encodedStrings = {}; + let stringsLength = 0; + for (const prop of FONT_INFO.strings) { + encodedStrings[prop] = encoder.encode(font[prop]); + stringsLength += 4 + encodedStrings[prop].length; + } + const lengthEstimate = FONT_INFO.OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer?.byteLength ?? 0) + 4 + (cssFontInfoBuffer?.byteLength ?? 0) + 4 + (font.data?.length ?? 0); + const buffer = new ArrayBuffer(lengthEstimate); + const data = new Uint8Array(buffer); + const view = new DataView(buffer); + let offset = 0; + const numBools = FONT_INFO.bools.length; + let boolByte = 0, + boolBit = 0; + for (let i = 0; i < numBools; i++) { + const value = font[FONT_INFO.bools[i]]; + const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01; + boolByte |= bits << boolBit; + boolBit += 2; + if (boolBit === 8 || i === numBools - 1) { + view.setUint8(offset++, boolByte); + boolByte = 0; + boolBit = 0; + } + } + assert(offset === FONT_INFO.OFFSET_NUMBERS, "compileFontInfo: Boolean properties offset mismatch"); + for (const prop of FONT_INFO.numbers) { + view.setFloat64(offset, font[prop]); + offset += 8; + } + assert(offset === FONT_INFO.OFFSET_BBOX, "compileFontInfo: Number properties offset mismatch"); + if (font.bbox) { + view.setUint8(offset++, 4); + for (const coord of font.bbox) { + view.setInt16(offset, coord, true); + offset += 2; + } + } else { + view.setUint8(offset++, 0); + offset += 2 * 4; + } + assert(offset === FONT_INFO.OFFSET_FONT_MATRIX, "compileFontInfo: BBox properties offset mismatch"); + if (font.fontMatrix) { + view.setUint8(offset++, 6); + for (const point of font.fontMatrix) { + view.setFloat64(offset, point, true); + offset += 8; + } + } else { + view.setUint8(offset++, 0); + offset += 8 * 6; + } + assert(offset === FONT_INFO.OFFSET_DEFAULT_VMETRICS, "compileFontInfo: FontMatrix properties offset mismatch"); + if (font.defaultVMetrics) { + view.setUint8(offset++, 3); + for (const metric of font.defaultVMetrics) { + view.setInt16(offset, metric, true); + offset += 2; + } + } else { + view.setUint8(offset++, 0); + offset += 3 * 2; + } + assert(offset === FONT_INFO.OFFSET_STRINGS, "compileFontInfo: DefaultVMetrics properties offset mismatch"); + view.setUint32(FONT_INFO.OFFSET_STRINGS, 0); + offset += 4; + for (const prop of FONT_INFO.strings) { + const encoded = encodedStrings[prop]; + const length = encoded.length; + view.setUint32(offset, length); + data.set(encoded, offset + 4); + offset += 4 + length; + } + view.setUint32(FONT_INFO.OFFSET_STRINGS, offset - FONT_INFO.OFFSET_STRINGS - 4); + if (!systemFontInfoBuffer) { + view.setUint32(offset, 0); + offset += 4; + } else { + const length = systemFontInfoBuffer.byteLength; + view.setUint32(offset, length); + assert(offset + 4 + length <= buffer.byteLength, "compileFontInfo: Buffer overflow at systemFontInfo"); + data.set(new Uint8Array(systemFontInfoBuffer), offset + 4); + offset += 4 + length; + } + if (!cssFontInfoBuffer) { + view.setUint32(offset, 0); + offset += 4; + } else { + const length = cssFontInfoBuffer.byteLength; + view.setUint32(offset, length); + assert(offset + 4 + length <= buffer.byteLength, "compileFontInfo: Buffer overflow at cssFontInfo"); + data.set(new Uint8Array(cssFontInfoBuffer), offset + 4); + offset += 4 + length; + } + if (font.data === undefined) { + view.setUint32(offset, 0); + offset += 4; + } else { + view.setUint32(offset, font.data.length); + data.set(font.data, offset + 4); + offset += 4 + font.data.length; + } + assert(offset <= buffer.byteLength, "compileFontInfo: Buffer overflow"); + return buffer.transferToFixedLength(offset); +} +function compilePatternInfo(ir) { + let kind, + bbox = null, + coords = [], + colors = [], + colorStops = [], + figures = [], + shadingType = null, + background = null; + switch (ir[0]) { + case "RadialAxial": + kind = ir[1] === "axial" ? 1 : 2; + bbox = ir[2]; + colorStops = ir[3]; + if (kind === 1) { + coords.push(...ir[4], ...ir[5]); + } else { + coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]); + } + break; + case "Mesh": + kind = 3; + shadingType = ir[1]; + coords = ir[2]; + colors = ir[3]; + figures = ir[4] || []; + bbox = ir[6]; + background = ir[7]; + break; + default: + throw new Error(`Unsupported pattern type: ${ir[0]}`); + } + const nCoord = Math.floor(coords.length / 2); + const nColor = Math.floor(colors.length / 3); + const nStop = colorStops.length; + const nFigures = figures.length; + let figuresSize = 0; + for (const figure of figures) { + figuresSize += 1; + figuresSize = Math.ceil(figuresSize / 4) * 4; + figuresSize += 4 + figure.coords.length * 4; + figuresSize += 4 + figure.colors.length * 4; + if (figure.verticesPerRow !== undefined) { + figuresSize += 4; + } + } + const byteLen = 20 + nCoord * 8 + nColor * 3 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0) + figuresSize; + const buffer = new ArrayBuffer(byteLen); + const dataView = new DataView(buffer); + const u8data = new Uint8Array(buffer); + dataView.setUint8(PATTERN_INFO.KIND, kind); + dataView.setUint8(PATTERN_INFO.HAS_BBOX, bbox ? 1 : 0); + dataView.setUint8(PATTERN_INFO.HAS_BACKGROUND, background ? 1 : 0); + dataView.setUint8(PATTERN_INFO.SHADING_TYPE, shadingType); + dataView.setUint32(PATTERN_INFO.N_COORD, nCoord, true); + dataView.setUint32(PATTERN_INFO.N_COLOR, nColor, true); + dataView.setUint32(PATTERN_INFO.N_STOP, nStop, true); + dataView.setUint32(PATTERN_INFO.N_FIGURES, nFigures, true); + let offset = 20; + const coordsView = new Float32Array(buffer, offset, nCoord * 2); + coordsView.set(coords); + offset += nCoord * 8; + u8data.set(colors, offset); + offset += nColor * 3; + for (const [pos, hex] of colorStops) { + dataView.setFloat32(offset, pos, true); + offset += 4; + dataView.setUint32(offset, parseInt(hex.slice(1), 16), true); + offset += 4; + } + if (bbox) { + for (const v of bbox) { + dataView.setFloat32(offset, v, true); + offset += 4; + } + } + if (background) { + u8data.set(background, offset); + offset += 3; + } + for (let i = 0; i < figures.length; i++) { + const figure = figures[i]; + dataView.setUint8(offset, figure.type); + offset += 1; + offset = Math.ceil(offset / 4) * 4; + dataView.setUint32(offset, figure.coords.length, true); + offset += 4; + const figureCoordsView = new Int32Array(buffer, offset, figure.coords.length); + figureCoordsView.set(figure.coords); + offset += figure.coords.length * 4; + dataView.setUint32(offset, figure.colors.length, true); + offset += 4; + const colorsView = new Int32Array(buffer, offset, figure.colors.length); + colorsView.set(figure.colors); + offset += figure.colors.length * 4; + if (figure.verticesPerRow !== undefined) { + dataView.setUint32(offset, figure.verticesPerRow, true); + offset += 4; + } + } + return buffer; +} +function compileFontPathInfo(path) { + return path.slice().buffer; +} + +;// ./src/core/encodings.js +const ExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", "osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", "hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"]; +const MacExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "centoldstyle", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "", "threequartersemdash", "", "questionsmall", "", "", "", "", "Ethsmall", "", "", "onequarter", "onehalf", "threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "", "", "", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hypheninferior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "asuperior", "centsuperior", "", "", "", "", "Aacutesmall", "Agravesmall", "Acircumflexsmall", "Adieresissmall", "Atildesmall", "Aringsmall", "Ccedillasmall", "Eacutesmall", "Egravesmall", "Ecircumflexsmall", "Edieresissmall", "Iacutesmall", "Igravesmall", "Icircumflexsmall", "Idieresissmall", "Ntildesmall", "Oacutesmall", "Ogravesmall", "Ocircumflexsmall", "Odieresissmall", "Otildesmall", "Uacutesmall", "Ugravesmall", "Ucircumflexsmall", "Udieresissmall", "", "eightsuperior", "fourinferior", "threeinferior", "sixinferior", "eightinferior", "seveninferior", "Scaronsmall", "", "centinferior", "twoinferior", "", "Dieresissmall", "", "Caronsmall", "osuperior", "fiveinferior", "", "commainferior", "periodinferior", "Yacutesmall", "", "dollarinferior", "", "", "Thornsmall", "", "nineinferior", "zeroinferior", "Zcaronsmall", "AEsmall", "Oslashsmall", "questiondownsmall", "oneinferior", "Lslashsmall", "", "", "", "", "", "", "Cedillasmall", "", "", "", "", "", "OEsmall", "figuredash", "hyphensuperior", "", "", "", "", "exclamdownsmall", "", "Ydieresissmall", "", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "ninesuperior", "zerosuperior", "", "esuperior", "rsuperior", "tsuperior", "", "", "isuperior", "ssuperior", "dsuperior", "", "", "", "", "", "lsuperior", "Ogoneksmall", "Brevesmall", "Macronsmall", "bsuperior", "nsuperior", "msuperior", "commasuperior", "periodsuperior", "Dotaccentsmall", "Ringsmall", "", "", "", ""]; +const MacRomanEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "space", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron"]; +const StandardEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "", "endash", "dagger", "daggerdbl", "periodcentered", "", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "", "questiondown", "", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "", "ring", "cedilla", "", "hungarumlaut", "ogonek", "caron", "emdash", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AE", "", "ordfeminine", "", "", "", "", "Lslash", "Oslash", "OE", "ordmasculine", "", "", "", "", "", "ae", "", "", "", "dotlessi", "", "", "lslash", "oslash", "oe", "germandbls", "", "", "", ""]; +const WinAnsiEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "bullet", "Euro", "bullet", "quotesinglbase", "florin", "quotedblbase", "ellipsis", "dagger", "daggerdbl", "circumflex", "perthousand", "Scaron", "guilsinglleft", "OE", "bullet", "Zcaron", "bullet", "bullet", "quoteleft", "quoteright", "quotedblleft", "quotedblright", "bullet", "endash", "emdash", "tilde", "trademark", "scaron", "guilsinglright", "oe", "bullet", "zcaron", "Ydieresis", "space", "exclamdown", "cent", "sterling", "currency", "yen", "brokenbar", "section", "dieresis", "copyright", "ordfeminine", "guillemotleft", "logicalnot", "hyphen", "registered", "macron", "degree", "plusminus", "twosuperior", "threesuperior", "acute", "mu", "paragraph", "periodcentered", "cedilla", "onesuperior", "ordmasculine", "guillemotright", "onequarter", "onehalf", "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex", "Atilde", "Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute", "Ecircumflex", "Edieresis", "Igrave", "Iacute", "Icircumflex", "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex", "Otilde", "Odieresis", "multiply", "Oslash", "Ugrave", "Uacute", "Ucircumflex", "Udieresis", "Yacute", "Thorn", "germandbls", "agrave", "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae", "ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave", "iacute", "icircumflex", "idieresis", "eth", "ntilde", "ograve", "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash", "ugrave", "uacute", "ucircumflex", "udieresis", "yacute", "thorn", "ydieresis"]; +const SymbolSetEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "universal", "numbersign", "existential", "percent", "ampersand", "suchthat", "parenleft", "parenright", "asteriskmath", "plus", "comma", "minus", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "congruent", "Alpha", "Beta", "Chi", "Delta", "Epsilon", "Phi", "Gamma", "Eta", "Iota", "theta1", "Kappa", "Lambda", "Mu", "Nu", "Omicron", "Pi", "Theta", "Rho", "Sigma", "Tau", "Upsilon", "sigma1", "Omega", "Xi", "Psi", "Zeta", "bracketleft", "therefore", "bracketright", "perpendicular", "underscore", "radicalex", "alpha", "beta", "chi", "delta", "epsilon", "phi", "gamma", "eta", "iota", "phi1", "kappa", "lambda", "mu", "nu", "omicron", "pi", "theta", "rho", "sigma", "tau", "upsilon", "omega1", "omega", "xi", "psi", "zeta", "braceleft", "bar", "braceright", "similar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Euro", "Upsilon1", "minute", "lessequal", "fraction", "infinity", "florin", "club", "diamond", "heart", "spade", "arrowboth", "arrowleft", "arrowup", "arrowright", "arrowdown", "degree", "plusminus", "second", "greaterequal", "multiply", "proportional", "partialdiff", "bullet", "divide", "notequal", "equivalence", "approxequal", "ellipsis", "arrowvertex", "arrowhorizex", "carriagereturn", "aleph", "Ifraktur", "Rfraktur", "weierstrass", "circlemultiply", "circleplus", "emptyset", "intersection", "union", "propersuperset", "reflexsuperset", "notsubset", "propersubset", "reflexsubset", "element", "notelement", "angle", "gradient", "registerserif", "copyrightserif", "trademarkserif", "product", "radical", "dotmath", "logicalnot", "logicaland", "logicalor", "arrowdblboth", "arrowdblleft", "arrowdblup", "arrowdblright", "arrowdbldown", "lozenge", "angleleft", "registersans", "copyrightsans", "trademarksans", "summation", "parenlefttp", "parenleftex", "parenleftbt", "bracketlefttp", "bracketleftex", "bracketleftbt", "bracelefttp", "braceleftmid", "braceleftbt", "braceex", "", "angleright", "integral", "integraltp", "integralex", "integralbt", "parenrighttp", "parenrightex", "parenrightbt", "bracketrighttp", "bracketrightex", "bracketrightbt", "bracerighttp", "bracerightmid", "bracerightbt", ""]; +const ZapfDingbatsEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "a1", "a2", "a202", "a3", "a4", "a5", "a119", "a118", "a117", "a11", "a12", "a13", "a14", "a15", "a16", "a105", "a17", "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26", "a27", "a28", "a6", "a7", "a8", "a9", "a10", "a29", "a30", "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39", "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", "a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57", "a58", "a59", "a60", "a61", "a62", "a63", "a64", "a65", "a66", "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a203", "a75", "a204", "a76", "a77", "a78", "a79", "a81", "a82", "a83", "a84", "a97", "a98", "a99", "a100", "", "a89", "a90", "a93", "a94", "a91", "a92", "a205", "a85", "a206", "a86", "a87", "a88", "a95", "a96", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "a101", "a102", "a103", "a104", "a106", "a107", "a108", "a112", "a111", "a110", "a109", "a120", "a121", "a122", "a123", "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132", "a133", "a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141", "a142", "a143", "a144", "a145", "a146", "a147", "a148", "a149", "a150", "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159", "a160", "a161", "a163", "a164", "a196", "a165", "a192", "a166", "a167", "a168", "a169", "a170", "a171", "a172", "a173", "a162", "a174", "a175", "a176", "a177", "a178", "a179", "a193", "a180", "a199", "a181", "a200", "a182", "", "a201", "a183", "a184", "a197", "a185", "a194", "a198", "a186", "a195", "a187", "a188", "a189", "a190", "a191", ""]; +function getEncoding(encodingName) { + switch (encodingName) { + case "WinAnsiEncoding": + return WinAnsiEncoding; + case "StandardEncoding": + return StandardEncoding; + case "MacRomanEncoding": + return MacRomanEncoding; + case "SymbolSetEncoding": + return SymbolSetEncoding; + case "ZapfDingbatsEncoding": + return ZapfDingbatsEncoding; + case "ExpertEncoding": + return ExpertEncoding; + case "MacExpertEncoding": + return MacExpertEncoding; + default: + return null; + } +} + +;// ./src/core/glyphlist.js + +const getGlyphsUnicode = getLookupTableFactory(function (t) { + t.A = 0x0041; + t.AE = 0x00c6; + t.AEacute = 0x01fc; + t.AEmacron = 0x01e2; + t.AEsmall = 0xf7e6; + t.Aacute = 0x00c1; + t.Aacutesmall = 0xf7e1; + t.Abreve = 0x0102; + t.Abreveacute = 0x1eae; + t.Abrevecyrillic = 0x04d0; + t.Abrevedotbelow = 0x1eb6; + t.Abrevegrave = 0x1eb0; + t.Abrevehookabove = 0x1eb2; + t.Abrevetilde = 0x1eb4; + t.Acaron = 0x01cd; + t.Acircle = 0x24b6; + t.Acircumflex = 0x00c2; + t.Acircumflexacute = 0x1ea4; + t.Acircumflexdotbelow = 0x1eac; + t.Acircumflexgrave = 0x1ea6; + t.Acircumflexhookabove = 0x1ea8; + t.Acircumflexsmall = 0xf7e2; + t.Acircumflextilde = 0x1eaa; + t.Acute = 0xf6c9; + t.Acutesmall = 0xf7b4; + t.Acyrillic = 0x0410; + t.Adblgrave = 0x0200; + t.Adieresis = 0x00c4; + t.Adieresiscyrillic = 0x04d2; + t.Adieresismacron = 0x01de; + t.Adieresissmall = 0xf7e4; + t.Adotbelow = 0x1ea0; + t.Adotmacron = 0x01e0; + t.Agrave = 0x00c0; + t.Agravesmall = 0xf7e0; + t.Ahookabove = 0x1ea2; + t.Aiecyrillic = 0x04d4; + t.Ainvertedbreve = 0x0202; + t.Alpha = 0x0391; + t.Alphatonos = 0x0386; + t.Amacron = 0x0100; + t.Amonospace = 0xff21; + t.Aogonek = 0x0104; + t.Aring = 0x00c5; + t.Aringacute = 0x01fa; + t.Aringbelow = 0x1e00; + t.Aringsmall = 0xf7e5; + t.Asmall = 0xf761; + t.Atilde = 0x00c3; + t.Atildesmall = 0xf7e3; + t.Aybarmenian = 0x0531; + t.B = 0x0042; + t.Bcircle = 0x24b7; + t.Bdotaccent = 0x1e02; + t.Bdotbelow = 0x1e04; + t.Becyrillic = 0x0411; + t.Benarmenian = 0x0532; + t.Beta = 0x0392; + t.Bhook = 0x0181; + t.Blinebelow = 0x1e06; + t.Bmonospace = 0xff22; + t.Brevesmall = 0xf6f4; + t.Bsmall = 0xf762; + t.Btopbar = 0x0182; + t.C = 0x0043; + t.Caarmenian = 0x053e; + t.Cacute = 0x0106; + t.Caron = 0xf6ca; + t.Caronsmall = 0xf6f5; + t.Ccaron = 0x010c; + t.Ccedilla = 0x00c7; + t.Ccedillaacute = 0x1e08; + t.Ccedillasmall = 0xf7e7; + t.Ccircle = 0x24b8; + t.Ccircumflex = 0x0108; + t.Cdot = 0x010a; + t.Cdotaccent = 0x010a; + t.Cedillasmall = 0xf7b8; + t.Chaarmenian = 0x0549; + t.Cheabkhasiancyrillic = 0x04bc; + t.Checyrillic = 0x0427; + t.Chedescenderabkhasiancyrillic = 0x04be; + t.Chedescendercyrillic = 0x04b6; + t.Chedieresiscyrillic = 0x04f4; + t.Cheharmenian = 0x0543; + t.Chekhakassiancyrillic = 0x04cb; + t.Cheverticalstrokecyrillic = 0x04b8; + t.Chi = 0x03a7; + t.Chook = 0x0187; + t.Circumflexsmall = 0xf6f6; + t.Cmonospace = 0xff23; + t.Coarmenian = 0x0551; + t.Csmall = 0xf763; + t.D = 0x0044; + t.DZ = 0x01f1; + t.DZcaron = 0x01c4; + t.Daarmenian = 0x0534; + t.Dafrican = 0x0189; + t.Dcaron = 0x010e; + t.Dcedilla = 0x1e10; + t.Dcircle = 0x24b9; + t.Dcircumflexbelow = 0x1e12; + t.Dcroat = 0x0110; + t.Ddotaccent = 0x1e0a; + t.Ddotbelow = 0x1e0c; + t.Decyrillic = 0x0414; + t.Deicoptic = 0x03ee; + t.Delta = 0x2206; + t.Deltagreek = 0x0394; + t.Dhook = 0x018a; + t.Dieresis = 0xf6cb; + t.DieresisAcute = 0xf6cc; + t.DieresisGrave = 0xf6cd; + t.Dieresissmall = 0xf7a8; + t.Digammagreek = 0x03dc; + t.Djecyrillic = 0x0402; + t.Dlinebelow = 0x1e0e; + t.Dmonospace = 0xff24; + t.Dotaccentsmall = 0xf6f7; + t.Dslash = 0x0110; + t.Dsmall = 0xf764; + t.Dtopbar = 0x018b; + t.Dz = 0x01f2; + t.Dzcaron = 0x01c5; + t.Dzeabkhasiancyrillic = 0x04e0; + t.Dzecyrillic = 0x0405; + t.Dzhecyrillic = 0x040f; + t.E = 0x0045; + t.Eacute = 0x00c9; + t.Eacutesmall = 0xf7e9; + t.Ebreve = 0x0114; + t.Ecaron = 0x011a; + t.Ecedillabreve = 0x1e1c; + t.Echarmenian = 0x0535; + t.Ecircle = 0x24ba; + t.Ecircumflex = 0x00ca; + t.Ecircumflexacute = 0x1ebe; + t.Ecircumflexbelow = 0x1e18; + t.Ecircumflexdotbelow = 0x1ec6; + t.Ecircumflexgrave = 0x1ec0; + t.Ecircumflexhookabove = 0x1ec2; + t.Ecircumflexsmall = 0xf7ea; + t.Ecircumflextilde = 0x1ec4; + t.Ecyrillic = 0x0404; + t.Edblgrave = 0x0204; + t.Edieresis = 0x00cb; + t.Edieresissmall = 0xf7eb; + t.Edot = 0x0116; + t.Edotaccent = 0x0116; + t.Edotbelow = 0x1eb8; + t.Efcyrillic = 0x0424; + t.Egrave = 0x00c8; + t.Egravesmall = 0xf7e8; + t.Eharmenian = 0x0537; + t.Ehookabove = 0x1eba; + t.Eightroman = 0x2167; + t.Einvertedbreve = 0x0206; + t.Eiotifiedcyrillic = 0x0464; + t.Elcyrillic = 0x041b; + t.Elevenroman = 0x216a; + t.Emacron = 0x0112; + t.Emacronacute = 0x1e16; + t.Emacrongrave = 0x1e14; + t.Emcyrillic = 0x041c; + t.Emonospace = 0xff25; + t.Encyrillic = 0x041d; + t.Endescendercyrillic = 0x04a2; + t.Eng = 0x014a; + t.Enghecyrillic = 0x04a4; + t.Enhookcyrillic = 0x04c7; + t.Eogonek = 0x0118; + t.Eopen = 0x0190; + t.Epsilon = 0x0395; + t.Epsilontonos = 0x0388; + t.Ercyrillic = 0x0420; + t.Ereversed = 0x018e; + t.Ereversedcyrillic = 0x042d; + t.Escyrillic = 0x0421; + t.Esdescendercyrillic = 0x04aa; + t.Esh = 0x01a9; + t.Esmall = 0xf765; + t.Eta = 0x0397; + t.Etarmenian = 0x0538; + t.Etatonos = 0x0389; + t.Eth = 0x00d0; + t.Ethsmall = 0xf7f0; + t.Etilde = 0x1ebc; + t.Etildebelow = 0x1e1a; + t.Euro = 0x20ac; + t.Ezh = 0x01b7; + t.Ezhcaron = 0x01ee; + t.Ezhreversed = 0x01b8; + t.F = 0x0046; + t.Fcircle = 0x24bb; + t.Fdotaccent = 0x1e1e; + t.Feharmenian = 0x0556; + t.Feicoptic = 0x03e4; + t.Fhook = 0x0191; + t.Fitacyrillic = 0x0472; + t.Fiveroman = 0x2164; + t.Fmonospace = 0xff26; + t.Fourroman = 0x2163; + t.Fsmall = 0xf766; + t.G = 0x0047; + t.GBsquare = 0x3387; + t.Gacute = 0x01f4; + t.Gamma = 0x0393; + t.Gammaafrican = 0x0194; + t.Gangiacoptic = 0x03ea; + t.Gbreve = 0x011e; + t.Gcaron = 0x01e6; + t.Gcedilla = 0x0122; + t.Gcircle = 0x24bc; + t.Gcircumflex = 0x011c; + t.Gcommaaccent = 0x0122; + t.Gdot = 0x0120; + t.Gdotaccent = 0x0120; + t.Gecyrillic = 0x0413; + t.Ghadarmenian = 0x0542; + t.Ghemiddlehookcyrillic = 0x0494; + t.Ghestrokecyrillic = 0x0492; + t.Gheupturncyrillic = 0x0490; + t.Ghook = 0x0193; + t.Gimarmenian = 0x0533; + t.Gjecyrillic = 0x0403; + t.Gmacron = 0x1e20; + t.Gmonospace = 0xff27; + t.Grave = 0xf6ce; + t.Gravesmall = 0xf760; + t.Gsmall = 0xf767; + t.Gsmallhook = 0x029b; + t.Gstroke = 0x01e4; + t.H = 0x0048; + t.H18533 = 0x25cf; + t.H18543 = 0x25aa; + t.H18551 = 0x25ab; + t.H22073 = 0x25a1; + t.HPsquare = 0x33cb; + t.Haabkhasiancyrillic = 0x04a8; + t.Hadescendercyrillic = 0x04b2; + t.Hardsigncyrillic = 0x042a; + t.Hbar = 0x0126; + t.Hbrevebelow = 0x1e2a; + t.Hcedilla = 0x1e28; + t.Hcircle = 0x24bd; + t.Hcircumflex = 0x0124; + t.Hdieresis = 0x1e26; + t.Hdotaccent = 0x1e22; + t.Hdotbelow = 0x1e24; + t.Hmonospace = 0xff28; + t.Hoarmenian = 0x0540; + t.Horicoptic = 0x03e8; + t.Hsmall = 0xf768; + t.Hungarumlaut = 0xf6cf; + t.Hungarumlautsmall = 0xf6f8; + t.Hzsquare = 0x3390; + t.I = 0x0049; + t.IAcyrillic = 0x042f; + t.IJ = 0x0132; + t.IUcyrillic = 0x042e; + t.Iacute = 0x00cd; + t.Iacutesmall = 0xf7ed; + t.Ibreve = 0x012c; + t.Icaron = 0x01cf; + t.Icircle = 0x24be; + t.Icircumflex = 0x00ce; + t.Icircumflexsmall = 0xf7ee; + t.Icyrillic = 0x0406; + t.Idblgrave = 0x0208; + t.Idieresis = 0x00cf; + t.Idieresisacute = 0x1e2e; + t.Idieresiscyrillic = 0x04e4; + t.Idieresissmall = 0xf7ef; + t.Idot = 0x0130; + t.Idotaccent = 0x0130; + t.Idotbelow = 0x1eca; + t.Iebrevecyrillic = 0x04d6; + t.Iecyrillic = 0x0415; + t.Ifraktur = 0x2111; + t.Igrave = 0x00cc; + t.Igravesmall = 0xf7ec; + t.Ihookabove = 0x1ec8; + t.Iicyrillic = 0x0418; + t.Iinvertedbreve = 0x020a; + t.Iishortcyrillic = 0x0419; + t.Imacron = 0x012a; + t.Imacroncyrillic = 0x04e2; + t.Imonospace = 0xff29; + t.Iniarmenian = 0x053b; + t.Iocyrillic = 0x0401; + t.Iogonek = 0x012e; + t.Iota = 0x0399; + t.Iotaafrican = 0x0196; + t.Iotadieresis = 0x03aa; + t.Iotatonos = 0x038a; + t.Ismall = 0xf769; + t.Istroke = 0x0197; + t.Itilde = 0x0128; + t.Itildebelow = 0x1e2c; + t.Izhitsacyrillic = 0x0474; + t.Izhitsadblgravecyrillic = 0x0476; + t.J = 0x004a; + t.Jaarmenian = 0x0541; + t.Jcircle = 0x24bf; + t.Jcircumflex = 0x0134; + t.Jecyrillic = 0x0408; + t.Jheharmenian = 0x054b; + t.Jmonospace = 0xff2a; + t.Jsmall = 0xf76a; + t.K = 0x004b; + t.KBsquare = 0x3385; + t.KKsquare = 0x33cd; + t.Kabashkircyrillic = 0x04a0; + t.Kacute = 0x1e30; + t.Kacyrillic = 0x041a; + t.Kadescendercyrillic = 0x049a; + t.Kahookcyrillic = 0x04c3; + t.Kappa = 0x039a; + t.Kastrokecyrillic = 0x049e; + t.Kaverticalstrokecyrillic = 0x049c; + t.Kcaron = 0x01e8; + t.Kcedilla = 0x0136; + t.Kcircle = 0x24c0; + t.Kcommaaccent = 0x0136; + t.Kdotbelow = 0x1e32; + t.Keharmenian = 0x0554; + t.Kenarmenian = 0x053f; + t.Khacyrillic = 0x0425; + t.Kheicoptic = 0x03e6; + t.Khook = 0x0198; + t.Kjecyrillic = 0x040c; + t.Klinebelow = 0x1e34; + t.Kmonospace = 0xff2b; + t.Koppacyrillic = 0x0480; + t.Koppagreek = 0x03de; + t.Ksicyrillic = 0x046e; + t.Ksmall = 0xf76b; + t.L = 0x004c; + t.LJ = 0x01c7; + t.LL = 0xf6bf; + t.Lacute = 0x0139; + t.Lambda = 0x039b; + t.Lcaron = 0x013d; + t.Lcedilla = 0x013b; + t.Lcircle = 0x24c1; + t.Lcircumflexbelow = 0x1e3c; + t.Lcommaaccent = 0x013b; + t.Ldot = 0x013f; + t.Ldotaccent = 0x013f; + t.Ldotbelow = 0x1e36; + t.Ldotbelowmacron = 0x1e38; + t.Liwnarmenian = 0x053c; + t.Lj = 0x01c8; + t.Ljecyrillic = 0x0409; + t.Llinebelow = 0x1e3a; + t.Lmonospace = 0xff2c; + t.Lslash = 0x0141; + t.Lslashsmall = 0xf6f9; + t.Lsmall = 0xf76c; + t.M = 0x004d; + t.MBsquare = 0x3386; + t.Macron = 0xf6d0; + t.Macronsmall = 0xf7af; + t.Macute = 0x1e3e; + t.Mcircle = 0x24c2; + t.Mdotaccent = 0x1e40; + t.Mdotbelow = 0x1e42; + t.Menarmenian = 0x0544; + t.Mmonospace = 0xff2d; + t.Msmall = 0xf76d; + t.Mturned = 0x019c; + t.Mu = 0x039c; + t.N = 0x004e; + t.NJ = 0x01ca; + t.Nacute = 0x0143; + t.Ncaron = 0x0147; + t.Ncedilla = 0x0145; + t.Ncircle = 0x24c3; + t.Ncircumflexbelow = 0x1e4a; + t.Ncommaaccent = 0x0145; + t.Ndotaccent = 0x1e44; + t.Ndotbelow = 0x1e46; + t.Nhookleft = 0x019d; + t.Nineroman = 0x2168; + t.Nj = 0x01cb; + t.Njecyrillic = 0x040a; + t.Nlinebelow = 0x1e48; + t.Nmonospace = 0xff2e; + t.Nowarmenian = 0x0546; + t.Nsmall = 0xf76e; + t.Ntilde = 0x00d1; + t.Ntildesmall = 0xf7f1; + t.Nu = 0x039d; + t.O = 0x004f; + t.OE = 0x0152; + t.OEsmall = 0xf6fa; + t.Oacute = 0x00d3; + t.Oacutesmall = 0xf7f3; + t.Obarredcyrillic = 0x04e8; + t.Obarreddieresiscyrillic = 0x04ea; + t.Obreve = 0x014e; + t.Ocaron = 0x01d1; + t.Ocenteredtilde = 0x019f; + t.Ocircle = 0x24c4; + t.Ocircumflex = 0x00d4; + t.Ocircumflexacute = 0x1ed0; + t.Ocircumflexdotbelow = 0x1ed8; + t.Ocircumflexgrave = 0x1ed2; + t.Ocircumflexhookabove = 0x1ed4; + t.Ocircumflexsmall = 0xf7f4; + t.Ocircumflextilde = 0x1ed6; + t.Ocyrillic = 0x041e; + t.Odblacute = 0x0150; + t.Odblgrave = 0x020c; + t.Odieresis = 0x00d6; + t.Odieresiscyrillic = 0x04e6; + t.Odieresissmall = 0xf7f6; + t.Odotbelow = 0x1ecc; + t.Ogoneksmall = 0xf6fb; + t.Ograve = 0x00d2; + t.Ogravesmall = 0xf7f2; + t.Oharmenian = 0x0555; + t.Ohm = 0x2126; + t.Ohookabove = 0x1ece; + t.Ohorn = 0x01a0; + t.Ohornacute = 0x1eda; + t.Ohorndotbelow = 0x1ee2; + t.Ohorngrave = 0x1edc; + t.Ohornhookabove = 0x1ede; + t.Ohorntilde = 0x1ee0; + t.Ohungarumlaut = 0x0150; + t.Oi = 0x01a2; + t.Oinvertedbreve = 0x020e; + t.Omacron = 0x014c; + t.Omacronacute = 0x1e52; + t.Omacrongrave = 0x1e50; + t.Omega = 0x2126; + t.Omegacyrillic = 0x0460; + t.Omegagreek = 0x03a9; + t.Omegaroundcyrillic = 0x047a; + t.Omegatitlocyrillic = 0x047c; + t.Omegatonos = 0x038f; + t.Omicron = 0x039f; + t.Omicrontonos = 0x038c; + t.Omonospace = 0xff2f; + t.Oneroman = 0x2160; + t.Oogonek = 0x01ea; + t.Oogonekmacron = 0x01ec; + t.Oopen = 0x0186; + t.Oslash = 0x00d8; + t.Oslashacute = 0x01fe; + t.Oslashsmall = 0xf7f8; + t.Osmall = 0xf76f; + t.Ostrokeacute = 0x01fe; + t.Otcyrillic = 0x047e; + t.Otilde = 0x00d5; + t.Otildeacute = 0x1e4c; + t.Otildedieresis = 0x1e4e; + t.Otildesmall = 0xf7f5; + t.P = 0x0050; + t.Pacute = 0x1e54; + t.Pcircle = 0x24c5; + t.Pdotaccent = 0x1e56; + t.Pecyrillic = 0x041f; + t.Peharmenian = 0x054a; + t.Pemiddlehookcyrillic = 0x04a6; + t.Phi = 0x03a6; + t.Phook = 0x01a4; + t.Pi = 0x03a0; + t.Piwrarmenian = 0x0553; + t.Pmonospace = 0xff30; + t.Psi = 0x03a8; + t.Psicyrillic = 0x0470; + t.Psmall = 0xf770; + t.Q = 0x0051; + t.Qcircle = 0x24c6; + t.Qmonospace = 0xff31; + t.Qsmall = 0xf771; + t.R = 0x0052; + t.Raarmenian = 0x054c; + t.Racute = 0x0154; + t.Rcaron = 0x0158; + t.Rcedilla = 0x0156; + t.Rcircle = 0x24c7; + t.Rcommaaccent = 0x0156; + t.Rdblgrave = 0x0210; + t.Rdotaccent = 0x1e58; + t.Rdotbelow = 0x1e5a; + t.Rdotbelowmacron = 0x1e5c; + t.Reharmenian = 0x0550; + t.Rfraktur = 0x211c; + t.Rho = 0x03a1; + t.Ringsmall = 0xf6fc; + t.Rinvertedbreve = 0x0212; + t.Rlinebelow = 0x1e5e; + t.Rmonospace = 0xff32; + t.Rsmall = 0xf772; + t.Rsmallinverted = 0x0281; + t.Rsmallinvertedsuperior = 0x02b6; + t.S = 0x0053; + t.SF010000 = 0x250c; + t.SF020000 = 0x2514; + t.SF030000 = 0x2510; + t.SF040000 = 0x2518; + t.SF050000 = 0x253c; + t.SF060000 = 0x252c; + t.SF070000 = 0x2534; + t.SF080000 = 0x251c; + t.SF090000 = 0x2524; + t.SF100000 = 0x2500; + t.SF110000 = 0x2502; + t.SF190000 = 0x2561; + t.SF200000 = 0x2562; + t.SF210000 = 0x2556; + t.SF220000 = 0x2555; + t.SF230000 = 0x2563; + t.SF240000 = 0x2551; + t.SF250000 = 0x2557; + t.SF260000 = 0x255d; + t.SF270000 = 0x255c; + t.SF280000 = 0x255b; + t.SF360000 = 0x255e; + t.SF370000 = 0x255f; + t.SF380000 = 0x255a; + t.SF390000 = 0x2554; + t.SF400000 = 0x2569; + t.SF410000 = 0x2566; + t.SF420000 = 0x2560; + t.SF430000 = 0x2550; + t.SF440000 = 0x256c; + t.SF450000 = 0x2567; + t.SF460000 = 0x2568; + t.SF470000 = 0x2564; + t.SF480000 = 0x2565; + t.SF490000 = 0x2559; + t.SF500000 = 0x2558; + t.SF510000 = 0x2552; + t.SF520000 = 0x2553; + t.SF530000 = 0x256b; + t.SF540000 = 0x256a; + t.Sacute = 0x015a; + t.Sacutedotaccent = 0x1e64; + t.Sampigreek = 0x03e0; + t.Scaron = 0x0160; + t.Scarondotaccent = 0x1e66; + t.Scaronsmall = 0xf6fd; + t.Scedilla = 0x015e; + t.Schwa = 0x018f; + t.Schwacyrillic = 0x04d8; + t.Schwadieresiscyrillic = 0x04da; + t.Scircle = 0x24c8; + t.Scircumflex = 0x015c; + t.Scommaaccent = 0x0218; + t.Sdotaccent = 0x1e60; + t.Sdotbelow = 0x1e62; + t.Sdotbelowdotaccent = 0x1e68; + t.Seharmenian = 0x054d; + t.Sevenroman = 0x2166; + t.Shaarmenian = 0x0547; + t.Shacyrillic = 0x0428; + t.Shchacyrillic = 0x0429; + t.Sheicoptic = 0x03e2; + t.Shhacyrillic = 0x04ba; + t.Shimacoptic = 0x03ec; + t.Sigma = 0x03a3; + t.Sixroman = 0x2165; + t.Smonospace = 0xff33; + t.Softsigncyrillic = 0x042c; + t.Ssmall = 0xf773; + t.Stigmagreek = 0x03da; + t.T = 0x0054; + t.Tau = 0x03a4; + t.Tbar = 0x0166; + t.Tcaron = 0x0164; + t.Tcedilla = 0x0162; + t.Tcircle = 0x24c9; + t.Tcircumflexbelow = 0x1e70; + t.Tcommaaccent = 0x0162; + t.Tdotaccent = 0x1e6a; + t.Tdotbelow = 0x1e6c; + t.Tecyrillic = 0x0422; + t.Tedescendercyrillic = 0x04ac; + t.Tenroman = 0x2169; + t.Tetsecyrillic = 0x04b4; + t.Theta = 0x0398; + t.Thook = 0x01ac; + t.Thorn = 0x00de; + t.Thornsmall = 0xf7fe; + t.Threeroman = 0x2162; + t.Tildesmall = 0xf6fe; + t.Tiwnarmenian = 0x054f; + t.Tlinebelow = 0x1e6e; + t.Tmonospace = 0xff34; + t.Toarmenian = 0x0539; + t.Tonefive = 0x01bc; + t.Tonesix = 0x0184; + t.Tonetwo = 0x01a7; + t.Tretroflexhook = 0x01ae; + t.Tsecyrillic = 0x0426; + t.Tshecyrillic = 0x040b; + t.Tsmall = 0xf774; + t.Twelveroman = 0x216b; + t.Tworoman = 0x2161; + t.U = 0x0055; + t.Uacute = 0x00da; + t.Uacutesmall = 0xf7fa; + t.Ubreve = 0x016c; + t.Ucaron = 0x01d3; + t.Ucircle = 0x24ca; + t.Ucircumflex = 0x00db; + t.Ucircumflexbelow = 0x1e76; + t.Ucircumflexsmall = 0xf7fb; + t.Ucyrillic = 0x0423; + t.Udblacute = 0x0170; + t.Udblgrave = 0x0214; + t.Udieresis = 0x00dc; + t.Udieresisacute = 0x01d7; + t.Udieresisbelow = 0x1e72; + t.Udieresiscaron = 0x01d9; + t.Udieresiscyrillic = 0x04f0; + t.Udieresisgrave = 0x01db; + t.Udieresismacron = 0x01d5; + t.Udieresissmall = 0xf7fc; + t.Udotbelow = 0x1ee4; + t.Ugrave = 0x00d9; + t.Ugravesmall = 0xf7f9; + t.Uhookabove = 0x1ee6; + t.Uhorn = 0x01af; + t.Uhornacute = 0x1ee8; + t.Uhorndotbelow = 0x1ef0; + t.Uhorngrave = 0x1eea; + t.Uhornhookabove = 0x1eec; + t.Uhorntilde = 0x1eee; + t.Uhungarumlaut = 0x0170; + t.Uhungarumlautcyrillic = 0x04f2; + t.Uinvertedbreve = 0x0216; + t.Ukcyrillic = 0x0478; + t.Umacron = 0x016a; + t.Umacroncyrillic = 0x04ee; + t.Umacrondieresis = 0x1e7a; + t.Umonospace = 0xff35; + t.Uogonek = 0x0172; + t.Upsilon = 0x03a5; + t.Upsilon1 = 0x03d2; + t.Upsilonacutehooksymbolgreek = 0x03d3; + t.Upsilonafrican = 0x01b1; + t.Upsilondieresis = 0x03ab; + t.Upsilondieresishooksymbolgreek = 0x03d4; + t.Upsilonhooksymbol = 0x03d2; + t.Upsilontonos = 0x038e; + t.Uring = 0x016e; + t.Ushortcyrillic = 0x040e; + t.Usmall = 0xf775; + t.Ustraightcyrillic = 0x04ae; + t.Ustraightstrokecyrillic = 0x04b0; + t.Utilde = 0x0168; + t.Utildeacute = 0x1e78; + t.Utildebelow = 0x1e74; + t.V = 0x0056; + t.Vcircle = 0x24cb; + t.Vdotbelow = 0x1e7e; + t.Vecyrillic = 0x0412; + t.Vewarmenian = 0x054e; + t.Vhook = 0x01b2; + t.Vmonospace = 0xff36; + t.Voarmenian = 0x0548; + t.Vsmall = 0xf776; + t.Vtilde = 0x1e7c; + t.W = 0x0057; + t.Wacute = 0x1e82; + t.Wcircle = 0x24cc; + t.Wcircumflex = 0x0174; + t.Wdieresis = 0x1e84; + t.Wdotaccent = 0x1e86; + t.Wdotbelow = 0x1e88; + t.Wgrave = 0x1e80; + t.Wmonospace = 0xff37; + t.Wsmall = 0xf777; + t.X = 0x0058; + t.Xcircle = 0x24cd; + t.Xdieresis = 0x1e8c; + t.Xdotaccent = 0x1e8a; + t.Xeharmenian = 0x053d; + t.Xi = 0x039e; + t.Xmonospace = 0xff38; + t.Xsmall = 0xf778; + t.Y = 0x0059; + t.Yacute = 0x00dd; + t.Yacutesmall = 0xf7fd; + t.Yatcyrillic = 0x0462; + t.Ycircle = 0x24ce; + t.Ycircumflex = 0x0176; + t.Ydieresis = 0x0178; + t.Ydieresissmall = 0xf7ff; + t.Ydotaccent = 0x1e8e; + t.Ydotbelow = 0x1ef4; + t.Yericyrillic = 0x042b; + t.Yerudieresiscyrillic = 0x04f8; + t.Ygrave = 0x1ef2; + t.Yhook = 0x01b3; + t.Yhookabove = 0x1ef6; + t.Yiarmenian = 0x0545; + t.Yicyrillic = 0x0407; + t.Yiwnarmenian = 0x0552; + t.Ymonospace = 0xff39; + t.Ysmall = 0xf779; + t.Ytilde = 0x1ef8; + t.Yusbigcyrillic = 0x046a; + t.Yusbigiotifiedcyrillic = 0x046c; + t.Yuslittlecyrillic = 0x0466; + t.Yuslittleiotifiedcyrillic = 0x0468; + t.Z = 0x005a; + t.Zaarmenian = 0x0536; + t.Zacute = 0x0179; + t.Zcaron = 0x017d; + t.Zcaronsmall = 0xf6ff; + t.Zcircle = 0x24cf; + t.Zcircumflex = 0x1e90; + t.Zdot = 0x017b; + t.Zdotaccent = 0x017b; + t.Zdotbelow = 0x1e92; + t.Zecyrillic = 0x0417; + t.Zedescendercyrillic = 0x0498; + t.Zedieresiscyrillic = 0x04de; + t.Zeta = 0x0396; + t.Zhearmenian = 0x053a; + t.Zhebrevecyrillic = 0x04c1; + t.Zhecyrillic = 0x0416; + t.Zhedescendercyrillic = 0x0496; + t.Zhedieresiscyrillic = 0x04dc; + t.Zlinebelow = 0x1e94; + t.Zmonospace = 0xff3a; + t.Zsmall = 0xf77a; + t.Zstroke = 0x01b5; + t.a = 0x0061; + t.aabengali = 0x0986; + t.aacute = 0x00e1; + t.aadeva = 0x0906; + t.aagujarati = 0x0a86; + t.aagurmukhi = 0x0a06; + t.aamatragurmukhi = 0x0a3e; + t.aarusquare = 0x3303; + t.aavowelsignbengali = 0x09be; + t.aavowelsigndeva = 0x093e; + t.aavowelsigngujarati = 0x0abe; + t.abbreviationmarkarmenian = 0x055f; + t.abbreviationsigndeva = 0x0970; + t.abengali = 0x0985; + t.abopomofo = 0x311a; + t.abreve = 0x0103; + t.abreveacute = 0x1eaf; + t.abrevecyrillic = 0x04d1; + t.abrevedotbelow = 0x1eb7; + t.abrevegrave = 0x1eb1; + t.abrevehookabove = 0x1eb3; + t.abrevetilde = 0x1eb5; + t.acaron = 0x01ce; + t.acircle = 0x24d0; + t.acircumflex = 0x00e2; + t.acircumflexacute = 0x1ea5; + t.acircumflexdotbelow = 0x1ead; + t.acircumflexgrave = 0x1ea7; + t.acircumflexhookabove = 0x1ea9; + t.acircumflextilde = 0x1eab; + t.acute = 0x00b4; + t.acutebelowcmb = 0x0317; + t.acutecmb = 0x0301; + t.acutecomb = 0x0301; + t.acutedeva = 0x0954; + t.acutelowmod = 0x02cf; + t.acutetonecmb = 0x0341; + t.acyrillic = 0x0430; + t.adblgrave = 0x0201; + t.addakgurmukhi = 0x0a71; + t.adeva = 0x0905; + t.adieresis = 0x00e4; + t.adieresiscyrillic = 0x04d3; + t.adieresismacron = 0x01df; + t.adotbelow = 0x1ea1; + t.adotmacron = 0x01e1; + t.ae = 0x00e6; + t.aeacute = 0x01fd; + t.aekorean = 0x3150; + t.aemacron = 0x01e3; + t.afii00208 = 0x2015; + t.afii08941 = 0x20a4; + t.afii10017 = 0x0410; + t.afii10018 = 0x0411; + t.afii10019 = 0x0412; + t.afii10020 = 0x0413; + t.afii10021 = 0x0414; + t.afii10022 = 0x0415; + t.afii10023 = 0x0401; + t.afii10024 = 0x0416; + t.afii10025 = 0x0417; + t.afii10026 = 0x0418; + t.afii10027 = 0x0419; + t.afii10028 = 0x041a; + t.afii10029 = 0x041b; + t.afii10030 = 0x041c; + t.afii10031 = 0x041d; + t.afii10032 = 0x041e; + t.afii10033 = 0x041f; + t.afii10034 = 0x0420; + t.afii10035 = 0x0421; + t.afii10036 = 0x0422; + t.afii10037 = 0x0423; + t.afii10038 = 0x0424; + t.afii10039 = 0x0425; + t.afii10040 = 0x0426; + t.afii10041 = 0x0427; + t.afii10042 = 0x0428; + t.afii10043 = 0x0429; + t.afii10044 = 0x042a; + t.afii10045 = 0x042b; + t.afii10046 = 0x042c; + t.afii10047 = 0x042d; + t.afii10048 = 0x042e; + t.afii10049 = 0x042f; + t.afii10050 = 0x0490; + t.afii10051 = 0x0402; + t.afii10052 = 0x0403; + t.afii10053 = 0x0404; + t.afii10054 = 0x0405; + t.afii10055 = 0x0406; + t.afii10056 = 0x0407; + t.afii10057 = 0x0408; + t.afii10058 = 0x0409; + t.afii10059 = 0x040a; + t.afii10060 = 0x040b; + t.afii10061 = 0x040c; + t.afii10062 = 0x040e; + t.afii10063 = 0xf6c4; + t.afii10064 = 0xf6c5; + t.afii10065 = 0x0430; + t.afii10066 = 0x0431; + t.afii10067 = 0x0432; + t.afii10068 = 0x0433; + t.afii10069 = 0x0434; + t.afii10070 = 0x0435; + t.afii10071 = 0x0451; + t.afii10072 = 0x0436; + t.afii10073 = 0x0437; + t.afii10074 = 0x0438; + t.afii10075 = 0x0439; + t.afii10076 = 0x043a; + t.afii10077 = 0x043b; + t.afii10078 = 0x043c; + t.afii10079 = 0x043d; + t.afii10080 = 0x043e; + t.afii10081 = 0x043f; + t.afii10082 = 0x0440; + t.afii10083 = 0x0441; + t.afii10084 = 0x0442; + t.afii10085 = 0x0443; + t.afii10086 = 0x0444; + t.afii10087 = 0x0445; + t.afii10088 = 0x0446; + t.afii10089 = 0x0447; + t.afii10090 = 0x0448; + t.afii10091 = 0x0449; + t.afii10092 = 0x044a; + t.afii10093 = 0x044b; + t.afii10094 = 0x044c; + t.afii10095 = 0x044d; + t.afii10096 = 0x044e; + t.afii10097 = 0x044f; + t.afii10098 = 0x0491; + t.afii10099 = 0x0452; + t.afii10100 = 0x0453; + t.afii10101 = 0x0454; + t.afii10102 = 0x0455; + t.afii10103 = 0x0456; + t.afii10104 = 0x0457; + t.afii10105 = 0x0458; + t.afii10106 = 0x0459; + t.afii10107 = 0x045a; + t.afii10108 = 0x045b; + t.afii10109 = 0x045c; + t.afii10110 = 0x045e; + t.afii10145 = 0x040f; + t.afii10146 = 0x0462; + t.afii10147 = 0x0472; + t.afii10148 = 0x0474; + t.afii10192 = 0xf6c6; + t.afii10193 = 0x045f; + t.afii10194 = 0x0463; + t.afii10195 = 0x0473; + t.afii10196 = 0x0475; + t.afii10831 = 0xf6c7; + t.afii10832 = 0xf6c8; + t.afii10846 = 0x04d9; + t.afii299 = 0x200e; + t.afii300 = 0x200f; + t.afii301 = 0x200d; + t.afii57381 = 0x066a; + t.afii57388 = 0x060c; + t.afii57392 = 0x0660; + t.afii57393 = 0x0661; + t.afii57394 = 0x0662; + t.afii57395 = 0x0663; + t.afii57396 = 0x0664; + t.afii57397 = 0x0665; + t.afii57398 = 0x0666; + t.afii57399 = 0x0667; + t.afii57400 = 0x0668; + t.afii57401 = 0x0669; + t.afii57403 = 0x061b; + t.afii57407 = 0x061f; + t.afii57409 = 0x0621; + t.afii57410 = 0x0622; + t.afii57411 = 0x0623; + t.afii57412 = 0x0624; + t.afii57413 = 0x0625; + t.afii57414 = 0x0626; + t.afii57415 = 0x0627; + t.afii57416 = 0x0628; + t.afii57417 = 0x0629; + t.afii57418 = 0x062a; + t.afii57419 = 0x062b; + t.afii57420 = 0x062c; + t.afii57421 = 0x062d; + t.afii57422 = 0x062e; + t.afii57423 = 0x062f; + t.afii57424 = 0x0630; + t.afii57425 = 0x0631; + t.afii57426 = 0x0632; + t.afii57427 = 0x0633; + t.afii57428 = 0x0634; + t.afii57429 = 0x0635; + t.afii57430 = 0x0636; + t.afii57431 = 0x0637; + t.afii57432 = 0x0638; + t.afii57433 = 0x0639; + t.afii57434 = 0x063a; + t.afii57440 = 0x0640; + t.afii57441 = 0x0641; + t.afii57442 = 0x0642; + t.afii57443 = 0x0643; + t.afii57444 = 0x0644; + t.afii57445 = 0x0645; + t.afii57446 = 0x0646; + t.afii57448 = 0x0648; + t.afii57449 = 0x0649; + t.afii57450 = 0x064a; + t.afii57451 = 0x064b; + t.afii57452 = 0x064c; + t.afii57453 = 0x064d; + t.afii57454 = 0x064e; + t.afii57455 = 0x064f; + t.afii57456 = 0x0650; + t.afii57457 = 0x0651; + t.afii57458 = 0x0652; + t.afii57470 = 0x0647; + t.afii57505 = 0x06a4; + t.afii57506 = 0x067e; + t.afii57507 = 0x0686; + t.afii57508 = 0x0698; + t.afii57509 = 0x06af; + t.afii57511 = 0x0679; + t.afii57512 = 0x0688; + t.afii57513 = 0x0691; + t.afii57514 = 0x06ba; + t.afii57519 = 0x06d2; + t.afii57534 = 0x06d5; + t.afii57636 = 0x20aa; + t.afii57645 = 0x05be; + t.afii57658 = 0x05c3; + t.afii57664 = 0x05d0; + t.afii57665 = 0x05d1; + t.afii57666 = 0x05d2; + t.afii57667 = 0x05d3; + t.afii57668 = 0x05d4; + t.afii57669 = 0x05d5; + t.afii57670 = 0x05d6; + t.afii57671 = 0x05d7; + t.afii57672 = 0x05d8; + t.afii57673 = 0x05d9; + t.afii57674 = 0x05da; + t.afii57675 = 0x05db; + t.afii57676 = 0x05dc; + t.afii57677 = 0x05dd; + t.afii57678 = 0x05de; + t.afii57679 = 0x05df; + t.afii57680 = 0x05e0; + t.afii57681 = 0x05e1; + t.afii57682 = 0x05e2; + t.afii57683 = 0x05e3; + t.afii57684 = 0x05e4; + t.afii57685 = 0x05e5; + t.afii57686 = 0x05e6; + t.afii57687 = 0x05e7; + t.afii57688 = 0x05e8; + t.afii57689 = 0x05e9; + t.afii57690 = 0x05ea; + t.afii57694 = 0xfb2a; + t.afii57695 = 0xfb2b; + t.afii57700 = 0xfb4b; + t.afii57705 = 0xfb1f; + t.afii57716 = 0x05f0; + t.afii57717 = 0x05f1; + t.afii57718 = 0x05f2; + t.afii57723 = 0xfb35; + t.afii57793 = 0x05b4; + t.afii57794 = 0x05b5; + t.afii57795 = 0x05b6; + t.afii57796 = 0x05bb; + t.afii57797 = 0x05b8; + t.afii57798 = 0x05b7; + t.afii57799 = 0x05b0; + t.afii57800 = 0x05b2; + t.afii57801 = 0x05b1; + t.afii57802 = 0x05b3; + t.afii57803 = 0x05c2; + t.afii57804 = 0x05c1; + t.afii57806 = 0x05b9; + t.afii57807 = 0x05bc; + t.afii57839 = 0x05bd; + t.afii57841 = 0x05bf; + t.afii57842 = 0x05c0; + t.afii57929 = 0x02bc; + t.afii61248 = 0x2105; + t.afii61289 = 0x2113; + t.afii61352 = 0x2116; + t.afii61573 = 0x202c; + t.afii61574 = 0x202d; + t.afii61575 = 0x202e; + t.afii61664 = 0x200c; + t.afii63167 = 0x066d; + t.afii64937 = 0x02bd; + t.agrave = 0x00e0; + t.agujarati = 0x0a85; + t.agurmukhi = 0x0a05; + t.ahiragana = 0x3042; + t.ahookabove = 0x1ea3; + t.aibengali = 0x0990; + t.aibopomofo = 0x311e; + t.aideva = 0x0910; + t.aiecyrillic = 0x04d5; + t.aigujarati = 0x0a90; + t.aigurmukhi = 0x0a10; + t.aimatragurmukhi = 0x0a48; + t.ainarabic = 0x0639; + t.ainfinalarabic = 0xfeca; + t.aininitialarabic = 0xfecb; + t.ainmedialarabic = 0xfecc; + t.ainvertedbreve = 0x0203; + t.aivowelsignbengali = 0x09c8; + t.aivowelsigndeva = 0x0948; + t.aivowelsigngujarati = 0x0ac8; + t.akatakana = 0x30a2; + t.akatakanahalfwidth = 0xff71; + t.akorean = 0x314f; + t.alef = 0x05d0; + t.alefarabic = 0x0627; + t.alefdageshhebrew = 0xfb30; + t.aleffinalarabic = 0xfe8e; + t.alefhamzaabovearabic = 0x0623; + t.alefhamzaabovefinalarabic = 0xfe84; + t.alefhamzabelowarabic = 0x0625; + t.alefhamzabelowfinalarabic = 0xfe88; + t.alefhebrew = 0x05d0; + t.aleflamedhebrew = 0xfb4f; + t.alefmaddaabovearabic = 0x0622; + t.alefmaddaabovefinalarabic = 0xfe82; + t.alefmaksuraarabic = 0x0649; + t.alefmaksurafinalarabic = 0xfef0; + t.alefmaksurainitialarabic = 0xfef3; + t.alefmaksuramedialarabic = 0xfef4; + t.alefpatahhebrew = 0xfb2e; + t.alefqamatshebrew = 0xfb2f; + t.aleph = 0x2135; + t.allequal = 0x224c; + t.alpha = 0x03b1; + t.alphatonos = 0x03ac; + t.amacron = 0x0101; + t.amonospace = 0xff41; + t.ampersand = 0x0026; + t.ampersandmonospace = 0xff06; + t.ampersandsmall = 0xf726; + t.amsquare = 0x33c2; + t.anbopomofo = 0x3122; + t.angbopomofo = 0x3124; + t.angbracketleft = 0x3008; + t.angbracketright = 0x3009; + t.angkhankhuthai = 0x0e5a; + t.angle = 0x2220; + t.anglebracketleft = 0x3008; + t.anglebracketleftvertical = 0xfe3f; + t.anglebracketright = 0x3009; + t.anglebracketrightvertical = 0xfe40; + t.angleleft = 0x2329; + t.angleright = 0x232a; + t.angstrom = 0x212b; + t.anoteleia = 0x0387; + t.anudattadeva = 0x0952; + t.anusvarabengali = 0x0982; + t.anusvaradeva = 0x0902; + t.anusvaragujarati = 0x0a82; + t.aogonek = 0x0105; + t.apaatosquare = 0x3300; + t.aparen = 0x249c; + t.apostrophearmenian = 0x055a; + t.apostrophemod = 0x02bc; + t.apple = 0xf8ff; + t.approaches = 0x2250; + t.approxequal = 0x2248; + t.approxequalorimage = 0x2252; + t.approximatelyequal = 0x2245; + t.araeaekorean = 0x318e; + t.araeakorean = 0x318d; + t.arc = 0x2312; + t.arighthalfring = 0x1e9a; + t.aring = 0x00e5; + t.aringacute = 0x01fb; + t.aringbelow = 0x1e01; + t.arrowboth = 0x2194; + t.arrowdashdown = 0x21e3; + t.arrowdashleft = 0x21e0; + t.arrowdashright = 0x21e2; + t.arrowdashup = 0x21e1; + t.arrowdblboth = 0x21d4; + t.arrowdbldown = 0x21d3; + t.arrowdblleft = 0x21d0; + t.arrowdblright = 0x21d2; + t.arrowdblup = 0x21d1; + t.arrowdown = 0x2193; + t.arrowdownleft = 0x2199; + t.arrowdownright = 0x2198; + t.arrowdownwhite = 0x21e9; + t.arrowheaddownmod = 0x02c5; + t.arrowheadleftmod = 0x02c2; + t.arrowheadrightmod = 0x02c3; + t.arrowheadupmod = 0x02c4; + t.arrowhorizex = 0xf8e7; + t.arrowleft = 0x2190; + t.arrowleftdbl = 0x21d0; + t.arrowleftdblstroke = 0x21cd; + t.arrowleftoverright = 0x21c6; + t.arrowleftwhite = 0x21e6; + t.arrowright = 0x2192; + t.arrowrightdblstroke = 0x21cf; + t.arrowrightheavy = 0x279e; + t.arrowrightoverleft = 0x21c4; + t.arrowrightwhite = 0x21e8; + t.arrowtableft = 0x21e4; + t.arrowtabright = 0x21e5; + t.arrowup = 0x2191; + t.arrowupdn = 0x2195; + t.arrowupdnbse = 0x21a8; + t.arrowupdownbase = 0x21a8; + t.arrowupleft = 0x2196; + t.arrowupleftofdown = 0x21c5; + t.arrowupright = 0x2197; + t.arrowupwhite = 0x21e7; + t.arrowvertex = 0xf8e6; + t.asciicircum = 0x005e; + t.asciicircummonospace = 0xff3e; + t.asciitilde = 0x007e; + t.asciitildemonospace = 0xff5e; + t.ascript = 0x0251; + t.ascriptturned = 0x0252; + t.asmallhiragana = 0x3041; + t.asmallkatakana = 0x30a1; + t.asmallkatakanahalfwidth = 0xff67; + t.asterisk = 0x002a; + t.asteriskaltonearabic = 0x066d; + t.asteriskarabic = 0x066d; + t.asteriskmath = 0x2217; + t.asteriskmonospace = 0xff0a; + t.asterisksmall = 0xfe61; + t.asterism = 0x2042; + t.asuperior = 0xf6e9; + t.asymptoticallyequal = 0x2243; + t.at = 0x0040; + t.atilde = 0x00e3; + t.atmonospace = 0xff20; + t.atsmall = 0xfe6b; + t.aturned = 0x0250; + t.aubengali = 0x0994; + t.aubopomofo = 0x3120; + t.audeva = 0x0914; + t.augujarati = 0x0a94; + t.augurmukhi = 0x0a14; + t.aulengthmarkbengali = 0x09d7; + t.aumatragurmukhi = 0x0a4c; + t.auvowelsignbengali = 0x09cc; + t.auvowelsigndeva = 0x094c; + t.auvowelsigngujarati = 0x0acc; + t.avagrahadeva = 0x093d; + t.aybarmenian = 0x0561; + t.ayin = 0x05e2; + t.ayinaltonehebrew = 0xfb20; + t.ayinhebrew = 0x05e2; + t.b = 0x0062; + t.babengali = 0x09ac; + t.backslash = 0x005c; + t.backslashmonospace = 0xff3c; + t.badeva = 0x092c; + t.bagujarati = 0x0aac; + t.bagurmukhi = 0x0a2c; + t.bahiragana = 0x3070; + t.bahtthai = 0x0e3f; + t.bakatakana = 0x30d0; + t.bar = 0x007c; + t.barmonospace = 0xff5c; + t.bbopomofo = 0x3105; + t.bcircle = 0x24d1; + t.bdotaccent = 0x1e03; + t.bdotbelow = 0x1e05; + t.beamedsixteenthnotes = 0x266c; + t.because = 0x2235; + t.becyrillic = 0x0431; + t.beharabic = 0x0628; + t.behfinalarabic = 0xfe90; + t.behinitialarabic = 0xfe91; + t.behiragana = 0x3079; + t.behmedialarabic = 0xfe92; + t.behmeeminitialarabic = 0xfc9f; + t.behmeemisolatedarabic = 0xfc08; + t.behnoonfinalarabic = 0xfc6d; + t.bekatakana = 0x30d9; + t.benarmenian = 0x0562; + t.bet = 0x05d1; + t.beta = 0x03b2; + t.betasymbolgreek = 0x03d0; + t.betdagesh = 0xfb31; + t.betdageshhebrew = 0xfb31; + t.bethebrew = 0x05d1; + t.betrafehebrew = 0xfb4c; + t.bhabengali = 0x09ad; + t.bhadeva = 0x092d; + t.bhagujarati = 0x0aad; + t.bhagurmukhi = 0x0a2d; + t.bhook = 0x0253; + t.bihiragana = 0x3073; + t.bikatakana = 0x30d3; + t.bilabialclick = 0x0298; + t.bindigurmukhi = 0x0a02; + t.birusquare = 0x3331; + t.blackcircle = 0x25cf; + t.blackdiamond = 0x25c6; + t.blackdownpointingtriangle = 0x25bc; + t.blackleftpointingpointer = 0x25c4; + t.blackleftpointingtriangle = 0x25c0; + t.blacklenticularbracketleft = 0x3010; + t.blacklenticularbracketleftvertical = 0xfe3b; + t.blacklenticularbracketright = 0x3011; + t.blacklenticularbracketrightvertical = 0xfe3c; + t.blacklowerlefttriangle = 0x25e3; + t.blacklowerrighttriangle = 0x25e2; + t.blackrectangle = 0x25ac; + t.blackrightpointingpointer = 0x25ba; + t.blackrightpointingtriangle = 0x25b6; + t.blacksmallsquare = 0x25aa; + t.blacksmilingface = 0x263b; + t.blacksquare = 0x25a0; + t.blackstar = 0x2605; + t.blackupperlefttriangle = 0x25e4; + t.blackupperrighttriangle = 0x25e5; + t.blackuppointingsmalltriangle = 0x25b4; + t.blackuppointingtriangle = 0x25b2; + t.blank = 0x2423; + t.blinebelow = 0x1e07; + t.block = 0x2588; + t.bmonospace = 0xff42; + t.bobaimaithai = 0x0e1a; + t.bohiragana = 0x307c; + t.bokatakana = 0x30dc; + t.bparen = 0x249d; + t.bqsquare = 0x33c3; + t.braceex = 0xf8f4; + t.braceleft = 0x007b; + t.braceleftbt = 0xf8f3; + t.braceleftmid = 0xf8f2; + t.braceleftmonospace = 0xff5b; + t.braceleftsmall = 0xfe5b; + t.bracelefttp = 0xf8f1; + t.braceleftvertical = 0xfe37; + t.braceright = 0x007d; + t.bracerightbt = 0xf8fe; + t.bracerightmid = 0xf8fd; + t.bracerightmonospace = 0xff5d; + t.bracerightsmall = 0xfe5c; + t.bracerighttp = 0xf8fc; + t.bracerightvertical = 0xfe38; + t.bracketleft = 0x005b; + t.bracketleftbt = 0xf8f0; + t.bracketleftex = 0xf8ef; + t.bracketleftmonospace = 0xff3b; + t.bracketlefttp = 0xf8ee; + t.bracketright = 0x005d; + t.bracketrightbt = 0xf8fb; + t.bracketrightex = 0xf8fa; + t.bracketrightmonospace = 0xff3d; + t.bracketrighttp = 0xf8f9; + t.breve = 0x02d8; + t.brevebelowcmb = 0x032e; + t.brevecmb = 0x0306; + t.breveinvertedbelowcmb = 0x032f; + t.breveinvertedcmb = 0x0311; + t.breveinverteddoublecmb = 0x0361; + t.bridgebelowcmb = 0x032a; + t.bridgeinvertedbelowcmb = 0x033a; + t.brokenbar = 0x00a6; + t.bstroke = 0x0180; + t.bsuperior = 0xf6ea; + t.btopbar = 0x0183; + t.buhiragana = 0x3076; + t.bukatakana = 0x30d6; + t.bullet = 0x2022; + t.bulletinverse = 0x25d8; + t.bulletoperator = 0x2219; + t.bullseye = 0x25ce; + t.c = 0x0063; + t.caarmenian = 0x056e; + t.cabengali = 0x099a; + t.cacute = 0x0107; + t.cadeva = 0x091a; + t.cagujarati = 0x0a9a; + t.cagurmukhi = 0x0a1a; + t.calsquare = 0x3388; + t.candrabindubengali = 0x0981; + t.candrabinducmb = 0x0310; + t.candrabindudeva = 0x0901; + t.candrabindugujarati = 0x0a81; + t.capslock = 0x21ea; + t.careof = 0x2105; + t.caron = 0x02c7; + t.caronbelowcmb = 0x032c; + t.caroncmb = 0x030c; + t.carriagereturn = 0x21b5; + t.cbopomofo = 0x3118; + t.ccaron = 0x010d; + t.ccedilla = 0x00e7; + t.ccedillaacute = 0x1e09; + t.ccircle = 0x24d2; + t.ccircumflex = 0x0109; + t.ccurl = 0x0255; + t.cdot = 0x010b; + t.cdotaccent = 0x010b; + t.cdsquare = 0x33c5; + t.cedilla = 0x00b8; + t.cedillacmb = 0x0327; + t.cent = 0x00a2; + t.centigrade = 0x2103; + t.centinferior = 0xf6df; + t.centmonospace = 0xffe0; + t.centoldstyle = 0xf7a2; + t.centsuperior = 0xf6e0; + t.chaarmenian = 0x0579; + t.chabengali = 0x099b; + t.chadeva = 0x091b; + t.chagujarati = 0x0a9b; + t.chagurmukhi = 0x0a1b; + t.chbopomofo = 0x3114; + t.cheabkhasiancyrillic = 0x04bd; + t.checkmark = 0x2713; + t.checyrillic = 0x0447; + t.chedescenderabkhasiancyrillic = 0x04bf; + t.chedescendercyrillic = 0x04b7; + t.chedieresiscyrillic = 0x04f5; + t.cheharmenian = 0x0573; + t.chekhakassiancyrillic = 0x04cc; + t.cheverticalstrokecyrillic = 0x04b9; + t.chi = 0x03c7; + t.chieuchacirclekorean = 0x3277; + t.chieuchaparenkorean = 0x3217; + t.chieuchcirclekorean = 0x3269; + t.chieuchkorean = 0x314a; + t.chieuchparenkorean = 0x3209; + t.chochangthai = 0x0e0a; + t.chochanthai = 0x0e08; + t.chochingthai = 0x0e09; + t.chochoethai = 0x0e0c; + t.chook = 0x0188; + t.cieucacirclekorean = 0x3276; + t.cieucaparenkorean = 0x3216; + t.cieuccirclekorean = 0x3268; + t.cieuckorean = 0x3148; + t.cieucparenkorean = 0x3208; + t.cieucuparenkorean = 0x321c; + t.circle = 0x25cb; + t.circlecopyrt = 0x00a9; + t.circlemultiply = 0x2297; + t.circleot = 0x2299; + t.circleplus = 0x2295; + t.circlepostalmark = 0x3036; + t.circlewithlefthalfblack = 0x25d0; + t.circlewithrighthalfblack = 0x25d1; + t.circumflex = 0x02c6; + t.circumflexbelowcmb = 0x032d; + t.circumflexcmb = 0x0302; + t.clear = 0x2327; + t.clickalveolar = 0x01c2; + t.clickdental = 0x01c0; + t.clicklateral = 0x01c1; + t.clickretroflex = 0x01c3; + t.club = 0x2663; + t.clubsuitblack = 0x2663; + t.clubsuitwhite = 0x2667; + t.cmcubedsquare = 0x33a4; + t.cmonospace = 0xff43; + t.cmsquaredsquare = 0x33a0; + t.coarmenian = 0x0581; + t.colon = 0x003a; + t.colonmonetary = 0x20a1; + t.colonmonospace = 0xff1a; + t.colonsign = 0x20a1; + t.colonsmall = 0xfe55; + t.colontriangularhalfmod = 0x02d1; + t.colontriangularmod = 0x02d0; + t.comma = 0x002c; + t.commaabovecmb = 0x0313; + t.commaaboverightcmb = 0x0315; + t.commaaccent = 0xf6c3; + t.commaarabic = 0x060c; + t.commaarmenian = 0x055d; + t.commainferior = 0xf6e1; + t.commamonospace = 0xff0c; + t.commareversedabovecmb = 0x0314; + t.commareversedmod = 0x02bd; + t.commasmall = 0xfe50; + t.commasuperior = 0xf6e2; + t.commaturnedabovecmb = 0x0312; + t.commaturnedmod = 0x02bb; + t.compass = 0x263c; + t.congruent = 0x2245; + t.contourintegral = 0x222e; + t.control = 0x2303; + t.controlACK = 0x0006; + t.controlBEL = 0x0007; + t.controlBS = 0x0008; + t.controlCAN = 0x0018; + t.controlCR = 0x000d; + t.controlDC1 = 0x0011; + t.controlDC2 = 0x0012; + t.controlDC3 = 0x0013; + t.controlDC4 = 0x0014; + t.controlDEL = 0x007f; + t.controlDLE = 0x0010; + t.controlEM = 0x0019; + t.controlENQ = 0x0005; + t.controlEOT = 0x0004; + t.controlESC = 0x001b; + t.controlETB = 0x0017; + t.controlETX = 0x0003; + t.controlFF = 0x000c; + t.controlFS = 0x001c; + t.controlGS = 0x001d; + t.controlHT = 0x0009; + t.controlLF = 0x000a; + t.controlNAK = 0x0015; + t.controlNULL = 0x0000; + t.controlRS = 0x001e; + t.controlSI = 0x000f; + t.controlSO = 0x000e; + t.controlSOT = 0x0002; + t.controlSTX = 0x0001; + t.controlSUB = 0x001a; + t.controlSYN = 0x0016; + t.controlUS = 0x001f; + t.controlVT = 0x000b; + t.copyright = 0x00a9; + t.copyrightsans = 0xf8e9; + t.copyrightserif = 0xf6d9; + t.cornerbracketleft = 0x300c; + t.cornerbracketlefthalfwidth = 0xff62; + t.cornerbracketleftvertical = 0xfe41; + t.cornerbracketright = 0x300d; + t.cornerbracketrighthalfwidth = 0xff63; + t.cornerbracketrightvertical = 0xfe42; + t.corporationsquare = 0x337f; + t.cosquare = 0x33c7; + t.coverkgsquare = 0x33c6; + t.cparen = 0x249e; + t.cruzeiro = 0x20a2; + t.cstretched = 0x0297; + t.curlyand = 0x22cf; + t.curlyor = 0x22ce; + t.currency = 0x00a4; + t.cyrBreve = 0xf6d1; + t.cyrFlex = 0xf6d2; + t.cyrbreve = 0xf6d4; + t.cyrflex = 0xf6d5; + t.d = 0x0064; + t.daarmenian = 0x0564; + t.dabengali = 0x09a6; + t.dadarabic = 0x0636; + t.dadeva = 0x0926; + t.dadfinalarabic = 0xfebe; + t.dadinitialarabic = 0xfebf; + t.dadmedialarabic = 0xfec0; + t.dagesh = 0x05bc; + t.dageshhebrew = 0x05bc; + t.dagger = 0x2020; + t.daggerdbl = 0x2021; + t.dagujarati = 0x0aa6; + t.dagurmukhi = 0x0a26; + t.dahiragana = 0x3060; + t.dakatakana = 0x30c0; + t.dalarabic = 0x062f; + t.dalet = 0x05d3; + t.daletdagesh = 0xfb33; + t.daletdageshhebrew = 0xfb33; + t.dalethebrew = 0x05d3; + t.dalfinalarabic = 0xfeaa; + t.dammaarabic = 0x064f; + t.dammalowarabic = 0x064f; + t.dammatanaltonearabic = 0x064c; + t.dammatanarabic = 0x064c; + t.danda = 0x0964; + t.dargahebrew = 0x05a7; + t.dargalefthebrew = 0x05a7; + t.dasiapneumatacyrilliccmb = 0x0485; + t.dblGrave = 0xf6d3; + t.dblanglebracketleft = 0x300a; + t.dblanglebracketleftvertical = 0xfe3d; + t.dblanglebracketright = 0x300b; + t.dblanglebracketrightvertical = 0xfe3e; + t.dblarchinvertedbelowcmb = 0x032b; + t.dblarrowleft = 0x21d4; + t.dblarrowright = 0x21d2; + t.dbldanda = 0x0965; + t.dblgrave = 0xf6d6; + t.dblgravecmb = 0x030f; + t.dblintegral = 0x222c; + t.dbllowline = 0x2017; + t.dbllowlinecmb = 0x0333; + t.dbloverlinecmb = 0x033f; + t.dblprimemod = 0x02ba; + t.dblverticalbar = 0x2016; + t.dblverticallineabovecmb = 0x030e; + t.dbopomofo = 0x3109; + t.dbsquare = 0x33c8; + t.dcaron = 0x010f; + t.dcedilla = 0x1e11; + t.dcircle = 0x24d3; + t.dcircumflexbelow = 0x1e13; + t.dcroat = 0x0111; + t.ddabengali = 0x09a1; + t.ddadeva = 0x0921; + t.ddagujarati = 0x0aa1; + t.ddagurmukhi = 0x0a21; + t.ddalarabic = 0x0688; + t.ddalfinalarabic = 0xfb89; + t.dddhadeva = 0x095c; + t.ddhabengali = 0x09a2; + t.ddhadeva = 0x0922; + t.ddhagujarati = 0x0aa2; + t.ddhagurmukhi = 0x0a22; + t.ddotaccent = 0x1e0b; + t.ddotbelow = 0x1e0d; + t.decimalseparatorarabic = 0x066b; + t.decimalseparatorpersian = 0x066b; + t.decyrillic = 0x0434; + t.degree = 0x00b0; + t.dehihebrew = 0x05ad; + t.dehiragana = 0x3067; + t.deicoptic = 0x03ef; + t.dekatakana = 0x30c7; + t.deleteleft = 0x232b; + t.deleteright = 0x2326; + t.delta = 0x03b4; + t.deltaturned = 0x018d; + t.denominatorminusonenumeratorbengali = 0x09f8; + t.dezh = 0x02a4; + t.dhabengali = 0x09a7; + t.dhadeva = 0x0927; + t.dhagujarati = 0x0aa7; + t.dhagurmukhi = 0x0a27; + t.dhook = 0x0257; + t.dialytikatonos = 0x0385; + t.dialytikatonoscmb = 0x0344; + t.diamond = 0x2666; + t.diamondsuitwhite = 0x2662; + t.dieresis = 0x00a8; + t.dieresisacute = 0xf6d7; + t.dieresisbelowcmb = 0x0324; + t.dieresiscmb = 0x0308; + t.dieresisgrave = 0xf6d8; + t.dieresistonos = 0x0385; + t.dihiragana = 0x3062; + t.dikatakana = 0x30c2; + t.dittomark = 0x3003; + t.divide = 0x00f7; + t.divides = 0x2223; + t.divisionslash = 0x2215; + t.djecyrillic = 0x0452; + t.dkshade = 0x2593; + t.dlinebelow = 0x1e0f; + t.dlsquare = 0x3397; + t.dmacron = 0x0111; + t.dmonospace = 0xff44; + t.dnblock = 0x2584; + t.dochadathai = 0x0e0e; + t.dodekthai = 0x0e14; + t.dohiragana = 0x3069; + t.dokatakana = 0x30c9; + t.dollar = 0x0024; + t.dollarinferior = 0xf6e3; + t.dollarmonospace = 0xff04; + t.dollaroldstyle = 0xf724; + t.dollarsmall = 0xfe69; + t.dollarsuperior = 0xf6e4; + t.dong = 0x20ab; + t.dorusquare = 0x3326; + t.dotaccent = 0x02d9; + t.dotaccentcmb = 0x0307; + t.dotbelowcmb = 0x0323; + t.dotbelowcomb = 0x0323; + t.dotkatakana = 0x30fb; + t.dotlessi = 0x0131; + t.dotlessj = 0xf6be; + t.dotlessjstrokehook = 0x0284; + t.dotmath = 0x22c5; + t.dottedcircle = 0x25cc; + t.doubleyodpatah = 0xfb1f; + t.doubleyodpatahhebrew = 0xfb1f; + t.downtackbelowcmb = 0x031e; + t.downtackmod = 0x02d5; + t.dparen = 0x249f; + t.dsuperior = 0xf6eb; + t.dtail = 0x0256; + t.dtopbar = 0x018c; + t.duhiragana = 0x3065; + t.dukatakana = 0x30c5; + t.dz = 0x01f3; + t.dzaltone = 0x02a3; + t.dzcaron = 0x01c6; + t.dzcurl = 0x02a5; + t.dzeabkhasiancyrillic = 0x04e1; + t.dzecyrillic = 0x0455; + t.dzhecyrillic = 0x045f; + t.e = 0x0065; + t.eacute = 0x00e9; + t.earth = 0x2641; + t.ebengali = 0x098f; + t.ebopomofo = 0x311c; + t.ebreve = 0x0115; + t.ecandradeva = 0x090d; + t.ecandragujarati = 0x0a8d; + t.ecandravowelsigndeva = 0x0945; + t.ecandravowelsigngujarati = 0x0ac5; + t.ecaron = 0x011b; + t.ecedillabreve = 0x1e1d; + t.echarmenian = 0x0565; + t.echyiwnarmenian = 0x0587; + t.ecircle = 0x24d4; + t.ecircumflex = 0x00ea; + t.ecircumflexacute = 0x1ebf; + t.ecircumflexbelow = 0x1e19; + t.ecircumflexdotbelow = 0x1ec7; + t.ecircumflexgrave = 0x1ec1; + t.ecircumflexhookabove = 0x1ec3; + t.ecircumflextilde = 0x1ec5; + t.ecyrillic = 0x0454; + t.edblgrave = 0x0205; + t.edeva = 0x090f; + t.edieresis = 0x00eb; + t.edot = 0x0117; + t.edotaccent = 0x0117; + t.edotbelow = 0x1eb9; + t.eegurmukhi = 0x0a0f; + t.eematragurmukhi = 0x0a47; + t.efcyrillic = 0x0444; + t.egrave = 0x00e8; + t.egujarati = 0x0a8f; + t.eharmenian = 0x0567; + t.ehbopomofo = 0x311d; + t.ehiragana = 0x3048; + t.ehookabove = 0x1ebb; + t.eibopomofo = 0x311f; + t.eight = 0x0038; + t.eightarabic = 0x0668; + t.eightbengali = 0x09ee; + t.eightcircle = 0x2467; + t.eightcircleinversesansserif = 0x2791; + t.eightdeva = 0x096e; + t.eighteencircle = 0x2471; + t.eighteenparen = 0x2485; + t.eighteenperiod = 0x2499; + t.eightgujarati = 0x0aee; + t.eightgurmukhi = 0x0a6e; + t.eighthackarabic = 0x0668; + t.eighthangzhou = 0x3028; + t.eighthnotebeamed = 0x266b; + t.eightideographicparen = 0x3227; + t.eightinferior = 0x2088; + t.eightmonospace = 0xff18; + t.eightoldstyle = 0xf738; + t.eightparen = 0x247b; + t.eightperiod = 0x248f; + t.eightpersian = 0x06f8; + t.eightroman = 0x2177; + t.eightsuperior = 0x2078; + t.eightthai = 0x0e58; + t.einvertedbreve = 0x0207; + t.eiotifiedcyrillic = 0x0465; + t.ekatakana = 0x30a8; + t.ekatakanahalfwidth = 0xff74; + t.ekonkargurmukhi = 0x0a74; + t.ekorean = 0x3154; + t.elcyrillic = 0x043b; + t.element = 0x2208; + t.elevencircle = 0x246a; + t.elevenparen = 0x247e; + t.elevenperiod = 0x2492; + t.elevenroman = 0x217a; + t.ellipsis = 0x2026; + t.ellipsisvertical = 0x22ee; + t.emacron = 0x0113; + t.emacronacute = 0x1e17; + t.emacrongrave = 0x1e15; + t.emcyrillic = 0x043c; + t.emdash = 0x2014; + t.emdashvertical = 0xfe31; + t.emonospace = 0xff45; + t.emphasismarkarmenian = 0x055b; + t.emptyset = 0x2205; + t.enbopomofo = 0x3123; + t.encyrillic = 0x043d; + t.endash = 0x2013; + t.endashvertical = 0xfe32; + t.endescendercyrillic = 0x04a3; + t.eng = 0x014b; + t.engbopomofo = 0x3125; + t.enghecyrillic = 0x04a5; + t.enhookcyrillic = 0x04c8; + t.enspace = 0x2002; + t.eogonek = 0x0119; + t.eokorean = 0x3153; + t.eopen = 0x025b; + t.eopenclosed = 0x029a; + t.eopenreversed = 0x025c; + t.eopenreversedclosed = 0x025e; + t.eopenreversedhook = 0x025d; + t.eparen = 0x24a0; + t.epsilon = 0x03b5; + t.epsilontonos = 0x03ad; + t.equal = 0x003d; + t.equalmonospace = 0xff1d; + t.equalsmall = 0xfe66; + t.equalsuperior = 0x207c; + t.equivalence = 0x2261; + t.erbopomofo = 0x3126; + t.ercyrillic = 0x0440; + t.ereversed = 0x0258; + t.ereversedcyrillic = 0x044d; + t.escyrillic = 0x0441; + t.esdescendercyrillic = 0x04ab; + t.esh = 0x0283; + t.eshcurl = 0x0286; + t.eshortdeva = 0x090e; + t.eshortvowelsigndeva = 0x0946; + t.eshreversedloop = 0x01aa; + t.eshsquatreversed = 0x0285; + t.esmallhiragana = 0x3047; + t.esmallkatakana = 0x30a7; + t.esmallkatakanahalfwidth = 0xff6a; + t.estimated = 0x212e; + t.esuperior = 0xf6ec; + t.eta = 0x03b7; + t.etarmenian = 0x0568; + t.etatonos = 0x03ae; + t.eth = 0x00f0; + t.etilde = 0x1ebd; + t.etildebelow = 0x1e1b; + t.etnahtafoukhhebrew = 0x0591; + t.etnahtafoukhlefthebrew = 0x0591; + t.etnahtahebrew = 0x0591; + t.etnahtalefthebrew = 0x0591; + t.eturned = 0x01dd; + t.eukorean = 0x3161; + t.euro = 0x20ac; + t.evowelsignbengali = 0x09c7; + t.evowelsigndeva = 0x0947; + t.evowelsigngujarati = 0x0ac7; + t.exclam = 0x0021; + t.exclamarmenian = 0x055c; + t.exclamdbl = 0x203c; + t.exclamdown = 0x00a1; + t.exclamdownsmall = 0xf7a1; + t.exclammonospace = 0xff01; + t.exclamsmall = 0xf721; + t.existential = 0x2203; + t.ezh = 0x0292; + t.ezhcaron = 0x01ef; + t.ezhcurl = 0x0293; + t.ezhreversed = 0x01b9; + t.ezhtail = 0x01ba; + t.f = 0x0066; + t.fadeva = 0x095e; + t.fagurmukhi = 0x0a5e; + t.fahrenheit = 0x2109; + t.fathaarabic = 0x064e; + t.fathalowarabic = 0x064e; + t.fathatanarabic = 0x064b; + t.fbopomofo = 0x3108; + t.fcircle = 0x24d5; + t.fdotaccent = 0x1e1f; + t.feharabic = 0x0641; + t.feharmenian = 0x0586; + t.fehfinalarabic = 0xfed2; + t.fehinitialarabic = 0xfed3; + t.fehmedialarabic = 0xfed4; + t.feicoptic = 0x03e5; + t.female = 0x2640; + t.ff = 0xfb00; + t.f_f = 0xfb00; + t.ffi = 0xfb03; + t.f_f_i = 0xfb03; + t.ffl = 0xfb04; + t.f_f_l = 0xfb04; + t.fi = 0xfb01; + t.f_i = 0xfb01; + t.fifteencircle = 0x246e; + t.fifteenparen = 0x2482; + t.fifteenperiod = 0x2496; + t.figuredash = 0x2012; + t.filledbox = 0x25a0; + t.filledrect = 0x25ac; + t.finalkaf = 0x05da; + t.finalkafdagesh = 0xfb3a; + t.finalkafdageshhebrew = 0xfb3a; + t.finalkafhebrew = 0x05da; + t.finalmem = 0x05dd; + t.finalmemhebrew = 0x05dd; + t.finalnun = 0x05df; + t.finalnunhebrew = 0x05df; + t.finalpe = 0x05e3; + t.finalpehebrew = 0x05e3; + t.finaltsadi = 0x05e5; + t.finaltsadihebrew = 0x05e5; + t.firsttonechinese = 0x02c9; + t.fisheye = 0x25c9; + t.fitacyrillic = 0x0473; + t.five = 0x0035; + t.fivearabic = 0x0665; + t.fivebengali = 0x09eb; + t.fivecircle = 0x2464; + t.fivecircleinversesansserif = 0x278e; + t.fivedeva = 0x096b; + t.fiveeighths = 0x215d; + t.fivegujarati = 0x0aeb; + t.fivegurmukhi = 0x0a6b; + t.fivehackarabic = 0x0665; + t.fivehangzhou = 0x3025; + t.fiveideographicparen = 0x3224; + t.fiveinferior = 0x2085; + t.fivemonospace = 0xff15; + t.fiveoldstyle = 0xf735; + t.fiveparen = 0x2478; + t.fiveperiod = 0x248c; + t.fivepersian = 0x06f5; + t.fiveroman = 0x2174; + t.fivesuperior = 0x2075; + t.fivethai = 0x0e55; + t.fl = 0xfb02; + t.f_l = 0xfb02; + t.florin = 0x0192; + t.fmonospace = 0xff46; + t.fmsquare = 0x3399; + t.fofanthai = 0x0e1f; + t.fofathai = 0x0e1d; + t.fongmanthai = 0x0e4f; + t.forall = 0x2200; + t.four = 0x0034; + t.fourarabic = 0x0664; + t.fourbengali = 0x09ea; + t.fourcircle = 0x2463; + t.fourcircleinversesansserif = 0x278d; + t.fourdeva = 0x096a; + t.fourgujarati = 0x0aea; + t.fourgurmukhi = 0x0a6a; + t.fourhackarabic = 0x0664; + t.fourhangzhou = 0x3024; + t.fourideographicparen = 0x3223; + t.fourinferior = 0x2084; + t.fourmonospace = 0xff14; + t.fournumeratorbengali = 0x09f7; + t.fouroldstyle = 0xf734; + t.fourparen = 0x2477; + t.fourperiod = 0x248b; + t.fourpersian = 0x06f4; + t.fourroman = 0x2173; + t.foursuperior = 0x2074; + t.fourteencircle = 0x246d; + t.fourteenparen = 0x2481; + t.fourteenperiod = 0x2495; + t.fourthai = 0x0e54; + t.fourthtonechinese = 0x02cb; + t.fparen = 0x24a1; + t.fraction = 0x2044; + t.franc = 0x20a3; + t.g = 0x0067; + t.gabengali = 0x0997; + t.gacute = 0x01f5; + t.gadeva = 0x0917; + t.gafarabic = 0x06af; + t.gaffinalarabic = 0xfb93; + t.gafinitialarabic = 0xfb94; + t.gafmedialarabic = 0xfb95; + t.gagujarati = 0x0a97; + t.gagurmukhi = 0x0a17; + t.gahiragana = 0x304c; + t.gakatakana = 0x30ac; + t.gamma = 0x03b3; + t.gammalatinsmall = 0x0263; + t.gammasuperior = 0x02e0; + t.gangiacoptic = 0x03eb; + t.gbopomofo = 0x310d; + t.gbreve = 0x011f; + t.gcaron = 0x01e7; + t.gcedilla = 0x0123; + t.gcircle = 0x24d6; + t.gcircumflex = 0x011d; + t.gcommaaccent = 0x0123; + t.gdot = 0x0121; + t.gdotaccent = 0x0121; + t.gecyrillic = 0x0433; + t.gehiragana = 0x3052; + t.gekatakana = 0x30b2; + t.geometricallyequal = 0x2251; + t.gereshaccenthebrew = 0x059c; + t.gereshhebrew = 0x05f3; + t.gereshmuqdamhebrew = 0x059d; + t.germandbls = 0x00df; + t.gershayimaccenthebrew = 0x059e; + t.gershayimhebrew = 0x05f4; + t.getamark = 0x3013; + t.ghabengali = 0x0998; + t.ghadarmenian = 0x0572; + t.ghadeva = 0x0918; + t.ghagujarati = 0x0a98; + t.ghagurmukhi = 0x0a18; + t.ghainarabic = 0x063a; + t.ghainfinalarabic = 0xfece; + t.ghaininitialarabic = 0xfecf; + t.ghainmedialarabic = 0xfed0; + t.ghemiddlehookcyrillic = 0x0495; + t.ghestrokecyrillic = 0x0493; + t.gheupturncyrillic = 0x0491; + t.ghhadeva = 0x095a; + t.ghhagurmukhi = 0x0a5a; + t.ghook = 0x0260; + t.ghzsquare = 0x3393; + t.gihiragana = 0x304e; + t.gikatakana = 0x30ae; + t.gimarmenian = 0x0563; + t.gimel = 0x05d2; + t.gimeldagesh = 0xfb32; + t.gimeldageshhebrew = 0xfb32; + t.gimelhebrew = 0x05d2; + t.gjecyrillic = 0x0453; + t.glottalinvertedstroke = 0x01be; + t.glottalstop = 0x0294; + t.glottalstopinverted = 0x0296; + t.glottalstopmod = 0x02c0; + t.glottalstopreversed = 0x0295; + t.glottalstopreversedmod = 0x02c1; + t.glottalstopreversedsuperior = 0x02e4; + t.glottalstopstroke = 0x02a1; + t.glottalstopstrokereversed = 0x02a2; + t.gmacron = 0x1e21; + t.gmonospace = 0xff47; + t.gohiragana = 0x3054; + t.gokatakana = 0x30b4; + t.gparen = 0x24a2; + t.gpasquare = 0x33ac; + t.gradient = 0x2207; + t.grave = 0x0060; + t.gravebelowcmb = 0x0316; + t.gravecmb = 0x0300; + t.gravecomb = 0x0300; + t.gravedeva = 0x0953; + t.gravelowmod = 0x02ce; + t.gravemonospace = 0xff40; + t.gravetonecmb = 0x0340; + t.greater = 0x003e; + t.greaterequal = 0x2265; + t.greaterequalorless = 0x22db; + t.greatermonospace = 0xff1e; + t.greaterorequivalent = 0x2273; + t.greaterorless = 0x2277; + t.greateroverequal = 0x2267; + t.greatersmall = 0xfe65; + t.gscript = 0x0261; + t.gstroke = 0x01e5; + t.guhiragana = 0x3050; + t.guillemotleft = 0x00ab; + t.guillemotright = 0x00bb; + t.guilsinglleft = 0x2039; + t.guilsinglright = 0x203a; + t.gukatakana = 0x30b0; + t.guramusquare = 0x3318; + t.gysquare = 0x33c9; + t.h = 0x0068; + t.haabkhasiancyrillic = 0x04a9; + t.haaltonearabic = 0x06c1; + t.habengali = 0x09b9; + t.hadescendercyrillic = 0x04b3; + t.hadeva = 0x0939; + t.hagujarati = 0x0ab9; + t.hagurmukhi = 0x0a39; + t.haharabic = 0x062d; + t.hahfinalarabic = 0xfea2; + t.hahinitialarabic = 0xfea3; + t.hahiragana = 0x306f; + t.hahmedialarabic = 0xfea4; + t.haitusquare = 0x332a; + t.hakatakana = 0x30cf; + t.hakatakanahalfwidth = 0xff8a; + t.halantgurmukhi = 0x0a4d; + t.hamzaarabic = 0x0621; + t.hamzalowarabic = 0x0621; + t.hangulfiller = 0x3164; + t.hardsigncyrillic = 0x044a; + t.harpoonleftbarbup = 0x21bc; + t.harpoonrightbarbup = 0x21c0; + t.hasquare = 0x33ca; + t.hatafpatah = 0x05b2; + t.hatafpatah16 = 0x05b2; + t.hatafpatah23 = 0x05b2; + t.hatafpatah2f = 0x05b2; + t.hatafpatahhebrew = 0x05b2; + t.hatafpatahnarrowhebrew = 0x05b2; + t.hatafpatahquarterhebrew = 0x05b2; + t.hatafpatahwidehebrew = 0x05b2; + t.hatafqamats = 0x05b3; + t.hatafqamats1b = 0x05b3; + t.hatafqamats28 = 0x05b3; + t.hatafqamats34 = 0x05b3; + t.hatafqamatshebrew = 0x05b3; + t.hatafqamatsnarrowhebrew = 0x05b3; + t.hatafqamatsquarterhebrew = 0x05b3; + t.hatafqamatswidehebrew = 0x05b3; + t.hatafsegol = 0x05b1; + t.hatafsegol17 = 0x05b1; + t.hatafsegol24 = 0x05b1; + t.hatafsegol30 = 0x05b1; + t.hatafsegolhebrew = 0x05b1; + t.hatafsegolnarrowhebrew = 0x05b1; + t.hatafsegolquarterhebrew = 0x05b1; + t.hatafsegolwidehebrew = 0x05b1; + t.hbar = 0x0127; + t.hbopomofo = 0x310f; + t.hbrevebelow = 0x1e2b; + t.hcedilla = 0x1e29; + t.hcircle = 0x24d7; + t.hcircumflex = 0x0125; + t.hdieresis = 0x1e27; + t.hdotaccent = 0x1e23; + t.hdotbelow = 0x1e25; + t.he = 0x05d4; + t.heart = 0x2665; + t.heartsuitblack = 0x2665; + t.heartsuitwhite = 0x2661; + t.hedagesh = 0xfb34; + t.hedageshhebrew = 0xfb34; + t.hehaltonearabic = 0x06c1; + t.heharabic = 0x0647; + t.hehebrew = 0x05d4; + t.hehfinalaltonearabic = 0xfba7; + t.hehfinalalttwoarabic = 0xfeea; + t.hehfinalarabic = 0xfeea; + t.hehhamzaabovefinalarabic = 0xfba5; + t.hehhamzaaboveisolatedarabic = 0xfba4; + t.hehinitialaltonearabic = 0xfba8; + t.hehinitialarabic = 0xfeeb; + t.hehiragana = 0x3078; + t.hehmedialaltonearabic = 0xfba9; + t.hehmedialarabic = 0xfeec; + t.heiseierasquare = 0x337b; + t.hekatakana = 0x30d8; + t.hekatakanahalfwidth = 0xff8d; + t.hekutaarusquare = 0x3336; + t.henghook = 0x0267; + t.herutusquare = 0x3339; + t.het = 0x05d7; + t.hethebrew = 0x05d7; + t.hhook = 0x0266; + t.hhooksuperior = 0x02b1; + t.hieuhacirclekorean = 0x327b; + t.hieuhaparenkorean = 0x321b; + t.hieuhcirclekorean = 0x326d; + t.hieuhkorean = 0x314e; + t.hieuhparenkorean = 0x320d; + t.hihiragana = 0x3072; + t.hikatakana = 0x30d2; + t.hikatakanahalfwidth = 0xff8b; + t.hiriq = 0x05b4; + t.hiriq14 = 0x05b4; + t.hiriq21 = 0x05b4; + t.hiriq2d = 0x05b4; + t.hiriqhebrew = 0x05b4; + t.hiriqnarrowhebrew = 0x05b4; + t.hiriqquarterhebrew = 0x05b4; + t.hiriqwidehebrew = 0x05b4; + t.hlinebelow = 0x1e96; + t.hmonospace = 0xff48; + t.hoarmenian = 0x0570; + t.hohipthai = 0x0e2b; + t.hohiragana = 0x307b; + t.hokatakana = 0x30db; + t.hokatakanahalfwidth = 0xff8e; + t.holam = 0x05b9; + t.holam19 = 0x05b9; + t.holam26 = 0x05b9; + t.holam32 = 0x05b9; + t.holamhebrew = 0x05b9; + t.holamnarrowhebrew = 0x05b9; + t.holamquarterhebrew = 0x05b9; + t.holamwidehebrew = 0x05b9; + t.honokhukthai = 0x0e2e; + t.hookabovecomb = 0x0309; + t.hookcmb = 0x0309; + t.hookpalatalizedbelowcmb = 0x0321; + t.hookretroflexbelowcmb = 0x0322; + t.hoonsquare = 0x3342; + t.horicoptic = 0x03e9; + t.horizontalbar = 0x2015; + t.horncmb = 0x031b; + t.hotsprings = 0x2668; + t.house = 0x2302; + t.hparen = 0x24a3; + t.hsuperior = 0x02b0; + t.hturned = 0x0265; + t.huhiragana = 0x3075; + t.huiitosquare = 0x3333; + t.hukatakana = 0x30d5; + t.hukatakanahalfwidth = 0xff8c; + t.hungarumlaut = 0x02dd; + t.hungarumlautcmb = 0x030b; + t.hv = 0x0195; + t.hyphen = 0x002d; + t.hypheninferior = 0xf6e5; + t.hyphenmonospace = 0xff0d; + t.hyphensmall = 0xfe63; + t.hyphensuperior = 0xf6e6; + t.hyphentwo = 0x2010; + t.i = 0x0069; + t.iacute = 0x00ed; + t.iacyrillic = 0x044f; + t.ibengali = 0x0987; + t.ibopomofo = 0x3127; + t.ibreve = 0x012d; + t.icaron = 0x01d0; + t.icircle = 0x24d8; + t.icircumflex = 0x00ee; + t.icyrillic = 0x0456; + t.idblgrave = 0x0209; + t.ideographearthcircle = 0x328f; + t.ideographfirecircle = 0x328b; + t.ideographicallianceparen = 0x323f; + t.ideographiccallparen = 0x323a; + t.ideographiccentrecircle = 0x32a5; + t.ideographicclose = 0x3006; + t.ideographiccomma = 0x3001; + t.ideographiccommaleft = 0xff64; + t.ideographiccongratulationparen = 0x3237; + t.ideographiccorrectcircle = 0x32a3; + t.ideographicearthparen = 0x322f; + t.ideographicenterpriseparen = 0x323d; + t.ideographicexcellentcircle = 0x329d; + t.ideographicfestivalparen = 0x3240; + t.ideographicfinancialcircle = 0x3296; + t.ideographicfinancialparen = 0x3236; + t.ideographicfireparen = 0x322b; + t.ideographichaveparen = 0x3232; + t.ideographichighcircle = 0x32a4; + t.ideographiciterationmark = 0x3005; + t.ideographiclaborcircle = 0x3298; + t.ideographiclaborparen = 0x3238; + t.ideographicleftcircle = 0x32a7; + t.ideographiclowcircle = 0x32a6; + t.ideographicmedicinecircle = 0x32a9; + t.ideographicmetalparen = 0x322e; + t.ideographicmoonparen = 0x322a; + t.ideographicnameparen = 0x3234; + t.ideographicperiod = 0x3002; + t.ideographicprintcircle = 0x329e; + t.ideographicreachparen = 0x3243; + t.ideographicrepresentparen = 0x3239; + t.ideographicresourceparen = 0x323e; + t.ideographicrightcircle = 0x32a8; + t.ideographicsecretcircle = 0x3299; + t.ideographicselfparen = 0x3242; + t.ideographicsocietyparen = 0x3233; + t.ideographicspace = 0x3000; + t.ideographicspecialparen = 0x3235; + t.ideographicstockparen = 0x3231; + t.ideographicstudyparen = 0x323b; + t.ideographicsunparen = 0x3230; + t.ideographicsuperviseparen = 0x323c; + t.ideographicwaterparen = 0x322c; + t.ideographicwoodparen = 0x322d; + t.ideographiczero = 0x3007; + t.ideographmetalcircle = 0x328e; + t.ideographmooncircle = 0x328a; + t.ideographnamecircle = 0x3294; + t.ideographsuncircle = 0x3290; + t.ideographwatercircle = 0x328c; + t.ideographwoodcircle = 0x328d; + t.ideva = 0x0907; + t.idieresis = 0x00ef; + t.idieresisacute = 0x1e2f; + t.idieresiscyrillic = 0x04e5; + t.idotbelow = 0x1ecb; + t.iebrevecyrillic = 0x04d7; + t.iecyrillic = 0x0435; + t.ieungacirclekorean = 0x3275; + t.ieungaparenkorean = 0x3215; + t.ieungcirclekorean = 0x3267; + t.ieungkorean = 0x3147; + t.ieungparenkorean = 0x3207; + t.igrave = 0x00ec; + t.igujarati = 0x0a87; + t.igurmukhi = 0x0a07; + t.ihiragana = 0x3044; + t.ihookabove = 0x1ec9; + t.iibengali = 0x0988; + t.iicyrillic = 0x0438; + t.iideva = 0x0908; + t.iigujarati = 0x0a88; + t.iigurmukhi = 0x0a08; + t.iimatragurmukhi = 0x0a40; + t.iinvertedbreve = 0x020b; + t.iishortcyrillic = 0x0439; + t.iivowelsignbengali = 0x09c0; + t.iivowelsigndeva = 0x0940; + t.iivowelsigngujarati = 0x0ac0; + t.ij = 0x0133; + t.ikatakana = 0x30a4; + t.ikatakanahalfwidth = 0xff72; + t.ikorean = 0x3163; + t.ilde = 0x02dc; + t.iluyhebrew = 0x05ac; + t.imacron = 0x012b; + t.imacroncyrillic = 0x04e3; + t.imageorapproximatelyequal = 0x2253; + t.imatragurmukhi = 0x0a3f; + t.imonospace = 0xff49; + t.increment = 0x2206; + t.infinity = 0x221e; + t.iniarmenian = 0x056b; + t.integral = 0x222b; + t.integralbottom = 0x2321; + t.integralbt = 0x2321; + t.integralex = 0xf8f5; + t.integraltop = 0x2320; + t.integraltp = 0x2320; + t.intersection = 0x2229; + t.intisquare = 0x3305; + t.invbullet = 0x25d8; + t.invcircle = 0x25d9; + t.invsmileface = 0x263b; + t.iocyrillic = 0x0451; + t.iogonek = 0x012f; + t.iota = 0x03b9; + t.iotadieresis = 0x03ca; + t.iotadieresistonos = 0x0390; + t.iotalatin = 0x0269; + t.iotatonos = 0x03af; + t.iparen = 0x24a4; + t.irigurmukhi = 0x0a72; + t.ismallhiragana = 0x3043; + t.ismallkatakana = 0x30a3; + t.ismallkatakanahalfwidth = 0xff68; + t.issharbengali = 0x09fa; + t.istroke = 0x0268; + t.isuperior = 0xf6ed; + t.iterationhiragana = 0x309d; + t.iterationkatakana = 0x30fd; + t.itilde = 0x0129; + t.itildebelow = 0x1e2d; + t.iubopomofo = 0x3129; + t.iucyrillic = 0x044e; + t.ivowelsignbengali = 0x09bf; + t.ivowelsigndeva = 0x093f; + t.ivowelsigngujarati = 0x0abf; + t.izhitsacyrillic = 0x0475; + t.izhitsadblgravecyrillic = 0x0477; + t.j = 0x006a; + t.jaarmenian = 0x0571; + t.jabengali = 0x099c; + t.jadeva = 0x091c; + t.jagujarati = 0x0a9c; + t.jagurmukhi = 0x0a1c; + t.jbopomofo = 0x3110; + t.jcaron = 0x01f0; + t.jcircle = 0x24d9; + t.jcircumflex = 0x0135; + t.jcrossedtail = 0x029d; + t.jdotlessstroke = 0x025f; + t.jecyrillic = 0x0458; + t.jeemarabic = 0x062c; + t.jeemfinalarabic = 0xfe9e; + t.jeeminitialarabic = 0xfe9f; + t.jeemmedialarabic = 0xfea0; + t.jeharabic = 0x0698; + t.jehfinalarabic = 0xfb8b; + t.jhabengali = 0x099d; + t.jhadeva = 0x091d; + t.jhagujarati = 0x0a9d; + t.jhagurmukhi = 0x0a1d; + t.jheharmenian = 0x057b; + t.jis = 0x3004; + t.jmonospace = 0xff4a; + t.jparen = 0x24a5; + t.jsuperior = 0x02b2; + t.k = 0x006b; + t.kabashkircyrillic = 0x04a1; + t.kabengali = 0x0995; + t.kacute = 0x1e31; + t.kacyrillic = 0x043a; + t.kadescendercyrillic = 0x049b; + t.kadeva = 0x0915; + t.kaf = 0x05db; + t.kafarabic = 0x0643; + t.kafdagesh = 0xfb3b; + t.kafdageshhebrew = 0xfb3b; + t.kaffinalarabic = 0xfeda; + t.kafhebrew = 0x05db; + t.kafinitialarabic = 0xfedb; + t.kafmedialarabic = 0xfedc; + t.kafrafehebrew = 0xfb4d; + t.kagujarati = 0x0a95; + t.kagurmukhi = 0x0a15; + t.kahiragana = 0x304b; + t.kahookcyrillic = 0x04c4; + t.kakatakana = 0x30ab; + t.kakatakanahalfwidth = 0xff76; + t.kappa = 0x03ba; + t.kappasymbolgreek = 0x03f0; + t.kapyeounmieumkorean = 0x3171; + t.kapyeounphieuphkorean = 0x3184; + t.kapyeounpieupkorean = 0x3178; + t.kapyeounssangpieupkorean = 0x3179; + t.karoriisquare = 0x330d; + t.kashidaautoarabic = 0x0640; + t.kashidaautonosidebearingarabic = 0x0640; + t.kasmallkatakana = 0x30f5; + t.kasquare = 0x3384; + t.kasraarabic = 0x0650; + t.kasratanarabic = 0x064d; + t.kastrokecyrillic = 0x049f; + t.katahiraprolongmarkhalfwidth = 0xff70; + t.kaverticalstrokecyrillic = 0x049d; + t.kbopomofo = 0x310e; + t.kcalsquare = 0x3389; + t.kcaron = 0x01e9; + t.kcedilla = 0x0137; + t.kcircle = 0x24da; + t.kcommaaccent = 0x0137; + t.kdotbelow = 0x1e33; + t.keharmenian = 0x0584; + t.kehiragana = 0x3051; + t.kekatakana = 0x30b1; + t.kekatakanahalfwidth = 0xff79; + t.kenarmenian = 0x056f; + t.kesmallkatakana = 0x30f6; + t.kgreenlandic = 0x0138; + t.khabengali = 0x0996; + t.khacyrillic = 0x0445; + t.khadeva = 0x0916; + t.khagujarati = 0x0a96; + t.khagurmukhi = 0x0a16; + t.khaharabic = 0x062e; + t.khahfinalarabic = 0xfea6; + t.khahinitialarabic = 0xfea7; + t.khahmedialarabic = 0xfea8; + t.kheicoptic = 0x03e7; + t.khhadeva = 0x0959; + t.khhagurmukhi = 0x0a59; + t.khieukhacirclekorean = 0x3278; + t.khieukhaparenkorean = 0x3218; + t.khieukhcirclekorean = 0x326a; + t.khieukhkorean = 0x314b; + t.khieukhparenkorean = 0x320a; + t.khokhaithai = 0x0e02; + t.khokhonthai = 0x0e05; + t.khokhuatthai = 0x0e03; + t.khokhwaithai = 0x0e04; + t.khomutthai = 0x0e5b; + t.khook = 0x0199; + t.khorakhangthai = 0x0e06; + t.khzsquare = 0x3391; + t.kihiragana = 0x304d; + t.kikatakana = 0x30ad; + t.kikatakanahalfwidth = 0xff77; + t.kiroguramusquare = 0x3315; + t.kiromeetorusquare = 0x3316; + t.kirosquare = 0x3314; + t.kiyeokacirclekorean = 0x326e; + t.kiyeokaparenkorean = 0x320e; + t.kiyeokcirclekorean = 0x3260; + t.kiyeokkorean = 0x3131; + t.kiyeokparenkorean = 0x3200; + t.kiyeoksioskorean = 0x3133; + t.kjecyrillic = 0x045c; + t.klinebelow = 0x1e35; + t.klsquare = 0x3398; + t.kmcubedsquare = 0x33a6; + t.kmonospace = 0xff4b; + t.kmsquaredsquare = 0x33a2; + t.kohiragana = 0x3053; + t.kohmsquare = 0x33c0; + t.kokaithai = 0x0e01; + t.kokatakana = 0x30b3; + t.kokatakanahalfwidth = 0xff7a; + t.kooposquare = 0x331e; + t.koppacyrillic = 0x0481; + t.koreanstandardsymbol = 0x327f; + t.koroniscmb = 0x0343; + t.kparen = 0x24a6; + t.kpasquare = 0x33aa; + t.ksicyrillic = 0x046f; + t.ktsquare = 0x33cf; + t.kturned = 0x029e; + t.kuhiragana = 0x304f; + t.kukatakana = 0x30af; + t.kukatakanahalfwidth = 0xff78; + t.kvsquare = 0x33b8; + t.kwsquare = 0x33be; + t.l = 0x006c; + t.labengali = 0x09b2; + t.lacute = 0x013a; + t.ladeva = 0x0932; + t.lagujarati = 0x0ab2; + t.lagurmukhi = 0x0a32; + t.lakkhangyaothai = 0x0e45; + t.lamaleffinalarabic = 0xfefc; + t.lamalefhamzaabovefinalarabic = 0xfef8; + t.lamalefhamzaaboveisolatedarabic = 0xfef7; + t.lamalefhamzabelowfinalarabic = 0xfefa; + t.lamalefhamzabelowisolatedarabic = 0xfef9; + t.lamalefisolatedarabic = 0xfefb; + t.lamalefmaddaabovefinalarabic = 0xfef6; + t.lamalefmaddaaboveisolatedarabic = 0xfef5; + t.lamarabic = 0x0644; + t.lambda = 0x03bb; + t.lambdastroke = 0x019b; + t.lamed = 0x05dc; + t.lameddagesh = 0xfb3c; + t.lameddageshhebrew = 0xfb3c; + t.lamedhebrew = 0x05dc; + t.lamfinalarabic = 0xfede; + t.lamhahinitialarabic = 0xfcca; + t.laminitialarabic = 0xfedf; + t.lamjeeminitialarabic = 0xfcc9; + t.lamkhahinitialarabic = 0xfccb; + t.lamlamhehisolatedarabic = 0xfdf2; + t.lammedialarabic = 0xfee0; + t.lammeemhahinitialarabic = 0xfd88; + t.lammeeminitialarabic = 0xfccc; + t.largecircle = 0x25ef; + t.lbar = 0x019a; + t.lbelt = 0x026c; + t.lbopomofo = 0x310c; + t.lcaron = 0x013e; + t.lcedilla = 0x013c; + t.lcircle = 0x24db; + t.lcircumflexbelow = 0x1e3d; + t.lcommaaccent = 0x013c; + t.ldot = 0x0140; + t.ldotaccent = 0x0140; + t.ldotbelow = 0x1e37; + t.ldotbelowmacron = 0x1e39; + t.leftangleabovecmb = 0x031a; + t.lefttackbelowcmb = 0x0318; + t.less = 0x003c; + t.lessequal = 0x2264; + t.lessequalorgreater = 0x22da; + t.lessmonospace = 0xff1c; + t.lessorequivalent = 0x2272; + t.lessorgreater = 0x2276; + t.lessoverequal = 0x2266; + t.lesssmall = 0xfe64; + t.lezh = 0x026e; + t.lfblock = 0x258c; + t.lhookretroflex = 0x026d; + t.lira = 0x20a4; + t.liwnarmenian = 0x056c; + t.lj = 0x01c9; + t.ljecyrillic = 0x0459; + t.ll = 0xf6c0; + t.lladeva = 0x0933; + t.llagujarati = 0x0ab3; + t.llinebelow = 0x1e3b; + t.llladeva = 0x0934; + t.llvocalicbengali = 0x09e1; + t.llvocalicdeva = 0x0961; + t.llvocalicvowelsignbengali = 0x09e3; + t.llvocalicvowelsigndeva = 0x0963; + t.lmiddletilde = 0x026b; + t.lmonospace = 0xff4c; + t.lmsquare = 0x33d0; + t.lochulathai = 0x0e2c; + t.logicaland = 0x2227; + t.logicalnot = 0x00ac; + t.logicalnotreversed = 0x2310; + t.logicalor = 0x2228; + t.lolingthai = 0x0e25; + t.longs = 0x017f; + t.lowlinecenterline = 0xfe4e; + t.lowlinecmb = 0x0332; + t.lowlinedashed = 0xfe4d; + t.lozenge = 0x25ca; + t.lparen = 0x24a7; + t.lslash = 0x0142; + t.lsquare = 0x2113; + t.lsuperior = 0xf6ee; + t.ltshade = 0x2591; + t.luthai = 0x0e26; + t.lvocalicbengali = 0x098c; + t.lvocalicdeva = 0x090c; + t.lvocalicvowelsignbengali = 0x09e2; + t.lvocalicvowelsigndeva = 0x0962; + t.lxsquare = 0x33d3; + t.m = 0x006d; + t.mabengali = 0x09ae; + t.macron = 0x00af; + t.macronbelowcmb = 0x0331; + t.macroncmb = 0x0304; + t.macronlowmod = 0x02cd; + t.macronmonospace = 0xffe3; + t.macute = 0x1e3f; + t.madeva = 0x092e; + t.magujarati = 0x0aae; + t.magurmukhi = 0x0a2e; + t.mahapakhhebrew = 0x05a4; + t.mahapakhlefthebrew = 0x05a4; + t.mahiragana = 0x307e; + t.maichattawalowleftthai = 0xf895; + t.maichattawalowrightthai = 0xf894; + t.maichattawathai = 0x0e4b; + t.maichattawaupperleftthai = 0xf893; + t.maieklowleftthai = 0xf88c; + t.maieklowrightthai = 0xf88b; + t.maiekthai = 0x0e48; + t.maiekupperleftthai = 0xf88a; + t.maihanakatleftthai = 0xf884; + t.maihanakatthai = 0x0e31; + t.maitaikhuleftthai = 0xf889; + t.maitaikhuthai = 0x0e47; + t.maitholowleftthai = 0xf88f; + t.maitholowrightthai = 0xf88e; + t.maithothai = 0x0e49; + t.maithoupperleftthai = 0xf88d; + t.maitrilowleftthai = 0xf892; + t.maitrilowrightthai = 0xf891; + t.maitrithai = 0x0e4a; + t.maitriupperleftthai = 0xf890; + t.maiyamokthai = 0x0e46; + t.makatakana = 0x30de; + t.makatakanahalfwidth = 0xff8f; + t.male = 0x2642; + t.mansyonsquare = 0x3347; + t.maqafhebrew = 0x05be; + t.mars = 0x2642; + t.masoracirclehebrew = 0x05af; + t.masquare = 0x3383; + t.mbopomofo = 0x3107; + t.mbsquare = 0x33d4; + t.mcircle = 0x24dc; + t.mcubedsquare = 0x33a5; + t.mdotaccent = 0x1e41; + t.mdotbelow = 0x1e43; + t.meemarabic = 0x0645; + t.meemfinalarabic = 0xfee2; + t.meeminitialarabic = 0xfee3; + t.meemmedialarabic = 0xfee4; + t.meemmeeminitialarabic = 0xfcd1; + t.meemmeemisolatedarabic = 0xfc48; + t.meetorusquare = 0x334d; + t.mehiragana = 0x3081; + t.meizierasquare = 0x337e; + t.mekatakana = 0x30e1; + t.mekatakanahalfwidth = 0xff92; + t.mem = 0x05de; + t.memdagesh = 0xfb3e; + t.memdageshhebrew = 0xfb3e; + t.memhebrew = 0x05de; + t.menarmenian = 0x0574; + t.merkhahebrew = 0x05a5; + t.merkhakefulahebrew = 0x05a6; + t.merkhakefulalefthebrew = 0x05a6; + t.merkhalefthebrew = 0x05a5; + t.mhook = 0x0271; + t.mhzsquare = 0x3392; + t.middledotkatakanahalfwidth = 0xff65; + t.middot = 0x00b7; + t.mieumacirclekorean = 0x3272; + t.mieumaparenkorean = 0x3212; + t.mieumcirclekorean = 0x3264; + t.mieumkorean = 0x3141; + t.mieumpansioskorean = 0x3170; + t.mieumparenkorean = 0x3204; + t.mieumpieupkorean = 0x316e; + t.mieumsioskorean = 0x316f; + t.mihiragana = 0x307f; + t.mikatakana = 0x30df; + t.mikatakanahalfwidth = 0xff90; + t.minus = 0x2212; + t.minusbelowcmb = 0x0320; + t.minuscircle = 0x2296; + t.minusmod = 0x02d7; + t.minusplus = 0x2213; + t.minute = 0x2032; + t.miribaarusquare = 0x334a; + t.mirisquare = 0x3349; + t.mlonglegturned = 0x0270; + t.mlsquare = 0x3396; + t.mmcubedsquare = 0x33a3; + t.mmonospace = 0xff4d; + t.mmsquaredsquare = 0x339f; + t.mohiragana = 0x3082; + t.mohmsquare = 0x33c1; + t.mokatakana = 0x30e2; + t.mokatakanahalfwidth = 0xff93; + t.molsquare = 0x33d6; + t.momathai = 0x0e21; + t.moverssquare = 0x33a7; + t.moverssquaredsquare = 0x33a8; + t.mparen = 0x24a8; + t.mpasquare = 0x33ab; + t.mssquare = 0x33b3; + t.msuperior = 0xf6ef; + t.mturned = 0x026f; + t.mu = 0x00b5; + t.mu1 = 0x00b5; + t.muasquare = 0x3382; + t.muchgreater = 0x226b; + t.muchless = 0x226a; + t.mufsquare = 0x338c; + t.mugreek = 0x03bc; + t.mugsquare = 0x338d; + t.muhiragana = 0x3080; + t.mukatakana = 0x30e0; + t.mukatakanahalfwidth = 0xff91; + t.mulsquare = 0x3395; + t.multiply = 0x00d7; + t.mumsquare = 0x339b; + t.munahhebrew = 0x05a3; + t.munahlefthebrew = 0x05a3; + t.musicalnote = 0x266a; + t.musicalnotedbl = 0x266b; + t.musicflatsign = 0x266d; + t.musicsharpsign = 0x266f; + t.mussquare = 0x33b2; + t.muvsquare = 0x33b6; + t.muwsquare = 0x33bc; + t.mvmegasquare = 0x33b9; + t.mvsquare = 0x33b7; + t.mwmegasquare = 0x33bf; + t.mwsquare = 0x33bd; + t.n = 0x006e; + t.nabengali = 0x09a8; + t.nabla = 0x2207; + t.nacute = 0x0144; + t.nadeva = 0x0928; + t.nagujarati = 0x0aa8; + t.nagurmukhi = 0x0a28; + t.nahiragana = 0x306a; + t.nakatakana = 0x30ca; + t.nakatakanahalfwidth = 0xff85; + t.napostrophe = 0x0149; + t.nasquare = 0x3381; + t.nbopomofo = 0x310b; + t.nbspace = 0x00a0; + t.ncaron = 0x0148; + t.ncedilla = 0x0146; + t.ncircle = 0x24dd; + t.ncircumflexbelow = 0x1e4b; + t.ncommaaccent = 0x0146; + t.ndotaccent = 0x1e45; + t.ndotbelow = 0x1e47; + t.nehiragana = 0x306d; + t.nekatakana = 0x30cd; + t.nekatakanahalfwidth = 0xff88; + t.newsheqelsign = 0x20aa; + t.nfsquare = 0x338b; + t.ngabengali = 0x0999; + t.ngadeva = 0x0919; + t.ngagujarati = 0x0a99; + t.ngagurmukhi = 0x0a19; + t.ngonguthai = 0x0e07; + t.nhiragana = 0x3093; + t.nhookleft = 0x0272; + t.nhookretroflex = 0x0273; + t.nieunacirclekorean = 0x326f; + t.nieunaparenkorean = 0x320f; + t.nieuncieuckorean = 0x3135; + t.nieuncirclekorean = 0x3261; + t.nieunhieuhkorean = 0x3136; + t.nieunkorean = 0x3134; + t.nieunpansioskorean = 0x3168; + t.nieunparenkorean = 0x3201; + t.nieunsioskorean = 0x3167; + t.nieuntikeutkorean = 0x3166; + t.nihiragana = 0x306b; + t.nikatakana = 0x30cb; + t.nikatakanahalfwidth = 0xff86; + t.nikhahitleftthai = 0xf899; + t.nikhahitthai = 0x0e4d; + t.nine = 0x0039; + t.ninearabic = 0x0669; + t.ninebengali = 0x09ef; + t.ninecircle = 0x2468; + t.ninecircleinversesansserif = 0x2792; + t.ninedeva = 0x096f; + t.ninegujarati = 0x0aef; + t.ninegurmukhi = 0x0a6f; + t.ninehackarabic = 0x0669; + t.ninehangzhou = 0x3029; + t.nineideographicparen = 0x3228; + t.nineinferior = 0x2089; + t.ninemonospace = 0xff19; + t.nineoldstyle = 0xf739; + t.nineparen = 0x247c; + t.nineperiod = 0x2490; + t.ninepersian = 0x06f9; + t.nineroman = 0x2178; + t.ninesuperior = 0x2079; + t.nineteencircle = 0x2472; + t.nineteenparen = 0x2486; + t.nineteenperiod = 0x249a; + t.ninethai = 0x0e59; + t.nj = 0x01cc; + t.njecyrillic = 0x045a; + t.nkatakana = 0x30f3; + t.nkatakanahalfwidth = 0xff9d; + t.nlegrightlong = 0x019e; + t.nlinebelow = 0x1e49; + t.nmonospace = 0xff4e; + t.nmsquare = 0x339a; + t.nnabengali = 0x09a3; + t.nnadeva = 0x0923; + t.nnagujarati = 0x0aa3; + t.nnagurmukhi = 0x0a23; + t.nnnadeva = 0x0929; + t.nohiragana = 0x306e; + t.nokatakana = 0x30ce; + t.nokatakanahalfwidth = 0xff89; + t.nonbreakingspace = 0x00a0; + t.nonenthai = 0x0e13; + t.nonuthai = 0x0e19; + t.noonarabic = 0x0646; + t.noonfinalarabic = 0xfee6; + t.noonghunnaarabic = 0x06ba; + t.noonghunnafinalarabic = 0xfb9f; + t.nooninitialarabic = 0xfee7; + t.noonjeeminitialarabic = 0xfcd2; + t.noonjeemisolatedarabic = 0xfc4b; + t.noonmedialarabic = 0xfee8; + t.noonmeeminitialarabic = 0xfcd5; + t.noonmeemisolatedarabic = 0xfc4e; + t.noonnoonfinalarabic = 0xfc8d; + t.notcontains = 0x220c; + t.notelement = 0x2209; + t.notelementof = 0x2209; + t.notequal = 0x2260; + t.notgreater = 0x226f; + t.notgreaternorequal = 0x2271; + t.notgreaternorless = 0x2279; + t.notidentical = 0x2262; + t.notless = 0x226e; + t.notlessnorequal = 0x2270; + t.notparallel = 0x2226; + t.notprecedes = 0x2280; + t.notsubset = 0x2284; + t.notsucceeds = 0x2281; + t.notsuperset = 0x2285; + t.nowarmenian = 0x0576; + t.nparen = 0x24a9; + t.nssquare = 0x33b1; + t.nsuperior = 0x207f; + t.ntilde = 0x00f1; + t.nu = 0x03bd; + t.nuhiragana = 0x306c; + t.nukatakana = 0x30cc; + t.nukatakanahalfwidth = 0xff87; + t.nuktabengali = 0x09bc; + t.nuktadeva = 0x093c; + t.nuktagujarati = 0x0abc; + t.nuktagurmukhi = 0x0a3c; + t.numbersign = 0x0023; + t.numbersignmonospace = 0xff03; + t.numbersignsmall = 0xfe5f; + t.numeralsigngreek = 0x0374; + t.numeralsignlowergreek = 0x0375; + t.numero = 0x2116; + t.nun = 0x05e0; + t.nundagesh = 0xfb40; + t.nundageshhebrew = 0xfb40; + t.nunhebrew = 0x05e0; + t.nvsquare = 0x33b5; + t.nwsquare = 0x33bb; + t.nyabengali = 0x099e; + t.nyadeva = 0x091e; + t.nyagujarati = 0x0a9e; + t.nyagurmukhi = 0x0a1e; + t.o = 0x006f; + t.oacute = 0x00f3; + t.oangthai = 0x0e2d; + t.obarred = 0x0275; + t.obarredcyrillic = 0x04e9; + t.obarreddieresiscyrillic = 0x04eb; + t.obengali = 0x0993; + t.obopomofo = 0x311b; + t.obreve = 0x014f; + t.ocandradeva = 0x0911; + t.ocandragujarati = 0x0a91; + t.ocandravowelsigndeva = 0x0949; + t.ocandravowelsigngujarati = 0x0ac9; + t.ocaron = 0x01d2; + t.ocircle = 0x24de; + t.ocircumflex = 0x00f4; + t.ocircumflexacute = 0x1ed1; + t.ocircumflexdotbelow = 0x1ed9; + t.ocircumflexgrave = 0x1ed3; + t.ocircumflexhookabove = 0x1ed5; + t.ocircumflextilde = 0x1ed7; + t.ocyrillic = 0x043e; + t.odblacute = 0x0151; + t.odblgrave = 0x020d; + t.odeva = 0x0913; + t.odieresis = 0x00f6; + t.odieresiscyrillic = 0x04e7; + t.odotbelow = 0x1ecd; + t.oe = 0x0153; + t.oekorean = 0x315a; + t.ogonek = 0x02db; + t.ogonekcmb = 0x0328; + t.ograve = 0x00f2; + t.ogujarati = 0x0a93; + t.oharmenian = 0x0585; + t.ohiragana = 0x304a; + t.ohookabove = 0x1ecf; + t.ohorn = 0x01a1; + t.ohornacute = 0x1edb; + t.ohorndotbelow = 0x1ee3; + t.ohorngrave = 0x1edd; + t.ohornhookabove = 0x1edf; + t.ohorntilde = 0x1ee1; + t.ohungarumlaut = 0x0151; + t.oi = 0x01a3; + t.oinvertedbreve = 0x020f; + t.okatakana = 0x30aa; + t.okatakanahalfwidth = 0xff75; + t.okorean = 0x3157; + t.olehebrew = 0x05ab; + t.omacron = 0x014d; + t.omacronacute = 0x1e53; + t.omacrongrave = 0x1e51; + t.omdeva = 0x0950; + t.omega = 0x03c9; + t.omega1 = 0x03d6; + t.omegacyrillic = 0x0461; + t.omegalatinclosed = 0x0277; + t.omegaroundcyrillic = 0x047b; + t.omegatitlocyrillic = 0x047d; + t.omegatonos = 0x03ce; + t.omgujarati = 0x0ad0; + t.omicron = 0x03bf; + t.omicrontonos = 0x03cc; + t.omonospace = 0xff4f; + t.one = 0x0031; + t.onearabic = 0x0661; + t.onebengali = 0x09e7; + t.onecircle = 0x2460; + t.onecircleinversesansserif = 0x278a; + t.onedeva = 0x0967; + t.onedotenleader = 0x2024; + t.oneeighth = 0x215b; + t.onefitted = 0xf6dc; + t.onegujarati = 0x0ae7; + t.onegurmukhi = 0x0a67; + t.onehackarabic = 0x0661; + t.onehalf = 0x00bd; + t.onehangzhou = 0x3021; + t.oneideographicparen = 0x3220; + t.oneinferior = 0x2081; + t.onemonospace = 0xff11; + t.onenumeratorbengali = 0x09f4; + t.oneoldstyle = 0xf731; + t.oneparen = 0x2474; + t.oneperiod = 0x2488; + t.onepersian = 0x06f1; + t.onequarter = 0x00bc; + t.oneroman = 0x2170; + t.onesuperior = 0x00b9; + t.onethai = 0x0e51; + t.onethird = 0x2153; + t.oogonek = 0x01eb; + t.oogonekmacron = 0x01ed; + t.oogurmukhi = 0x0a13; + t.oomatragurmukhi = 0x0a4b; + t.oopen = 0x0254; + t.oparen = 0x24aa; + t.openbullet = 0x25e6; + t.option = 0x2325; + t.ordfeminine = 0x00aa; + t.ordmasculine = 0x00ba; + t.orthogonal = 0x221f; + t.oshortdeva = 0x0912; + t.oshortvowelsigndeva = 0x094a; + t.oslash = 0x00f8; + t.oslashacute = 0x01ff; + t.osmallhiragana = 0x3049; + t.osmallkatakana = 0x30a9; + t.osmallkatakanahalfwidth = 0xff6b; + t.ostrokeacute = 0x01ff; + t.osuperior = 0xf6f0; + t.otcyrillic = 0x047f; + t.otilde = 0x00f5; + t.otildeacute = 0x1e4d; + t.otildedieresis = 0x1e4f; + t.oubopomofo = 0x3121; + t.overline = 0x203e; + t.overlinecenterline = 0xfe4a; + t.overlinecmb = 0x0305; + t.overlinedashed = 0xfe49; + t.overlinedblwavy = 0xfe4c; + t.overlinewavy = 0xfe4b; + t.overscore = 0x00af; + t.ovowelsignbengali = 0x09cb; + t.ovowelsigndeva = 0x094b; + t.ovowelsigngujarati = 0x0acb; + t.p = 0x0070; + t.paampssquare = 0x3380; + t.paasentosquare = 0x332b; + t.pabengali = 0x09aa; + t.pacute = 0x1e55; + t.padeva = 0x092a; + t.pagedown = 0x21df; + t.pageup = 0x21de; + t.pagujarati = 0x0aaa; + t.pagurmukhi = 0x0a2a; + t.pahiragana = 0x3071; + t.paiyannoithai = 0x0e2f; + t.pakatakana = 0x30d1; + t.palatalizationcyrilliccmb = 0x0484; + t.palochkacyrillic = 0x04c0; + t.pansioskorean = 0x317f; + t.paragraph = 0x00b6; + t.parallel = 0x2225; + t.parenleft = 0x0028; + t.parenleftaltonearabic = 0xfd3e; + t.parenleftbt = 0xf8ed; + t.parenleftex = 0xf8ec; + t.parenleftinferior = 0x208d; + t.parenleftmonospace = 0xff08; + t.parenleftsmall = 0xfe59; + t.parenleftsuperior = 0x207d; + t.parenlefttp = 0xf8eb; + t.parenleftvertical = 0xfe35; + t.parenright = 0x0029; + t.parenrightaltonearabic = 0xfd3f; + t.parenrightbt = 0xf8f8; + t.parenrightex = 0xf8f7; + t.parenrightinferior = 0x208e; + t.parenrightmonospace = 0xff09; + t.parenrightsmall = 0xfe5a; + t.parenrightsuperior = 0x207e; + t.parenrighttp = 0xf8f6; + t.parenrightvertical = 0xfe36; + t.partialdiff = 0x2202; + t.paseqhebrew = 0x05c0; + t.pashtahebrew = 0x0599; + t.pasquare = 0x33a9; + t.patah = 0x05b7; + t.patah11 = 0x05b7; + t.patah1d = 0x05b7; + t.patah2a = 0x05b7; + t.patahhebrew = 0x05b7; + t.patahnarrowhebrew = 0x05b7; + t.patahquarterhebrew = 0x05b7; + t.patahwidehebrew = 0x05b7; + t.pazerhebrew = 0x05a1; + t.pbopomofo = 0x3106; + t.pcircle = 0x24df; + t.pdotaccent = 0x1e57; + t.pe = 0x05e4; + t.pecyrillic = 0x043f; + t.pedagesh = 0xfb44; + t.pedageshhebrew = 0xfb44; + t.peezisquare = 0x333b; + t.pefinaldageshhebrew = 0xfb43; + t.peharabic = 0x067e; + t.peharmenian = 0x057a; + t.pehebrew = 0x05e4; + t.pehfinalarabic = 0xfb57; + t.pehinitialarabic = 0xfb58; + t.pehiragana = 0x307a; + t.pehmedialarabic = 0xfb59; + t.pekatakana = 0x30da; + t.pemiddlehookcyrillic = 0x04a7; + t.perafehebrew = 0xfb4e; + t.percent = 0x0025; + t.percentarabic = 0x066a; + t.percentmonospace = 0xff05; + t.percentsmall = 0xfe6a; + t.period = 0x002e; + t.periodarmenian = 0x0589; + t.periodcentered = 0x00b7; + t.periodhalfwidth = 0xff61; + t.periodinferior = 0xf6e7; + t.periodmonospace = 0xff0e; + t.periodsmall = 0xfe52; + t.periodsuperior = 0xf6e8; + t.perispomenigreekcmb = 0x0342; + t.perpendicular = 0x22a5; + t.perthousand = 0x2030; + t.peseta = 0x20a7; + t.pfsquare = 0x338a; + t.phabengali = 0x09ab; + t.phadeva = 0x092b; + t.phagujarati = 0x0aab; + t.phagurmukhi = 0x0a2b; + t.phi = 0x03c6; + t.phi1 = 0x03d5; + t.phieuphacirclekorean = 0x327a; + t.phieuphaparenkorean = 0x321a; + t.phieuphcirclekorean = 0x326c; + t.phieuphkorean = 0x314d; + t.phieuphparenkorean = 0x320c; + t.philatin = 0x0278; + t.phinthuthai = 0x0e3a; + t.phisymbolgreek = 0x03d5; + t.phook = 0x01a5; + t.phophanthai = 0x0e1e; + t.phophungthai = 0x0e1c; + t.phosamphaothai = 0x0e20; + t.pi = 0x03c0; + t.pieupacirclekorean = 0x3273; + t.pieupaparenkorean = 0x3213; + t.pieupcieuckorean = 0x3176; + t.pieupcirclekorean = 0x3265; + t.pieupkiyeokkorean = 0x3172; + t.pieupkorean = 0x3142; + t.pieupparenkorean = 0x3205; + t.pieupsioskiyeokkorean = 0x3174; + t.pieupsioskorean = 0x3144; + t.pieupsiostikeutkorean = 0x3175; + t.pieupthieuthkorean = 0x3177; + t.pieuptikeutkorean = 0x3173; + t.pihiragana = 0x3074; + t.pikatakana = 0x30d4; + t.pisymbolgreek = 0x03d6; + t.piwrarmenian = 0x0583; + t.planckover2pi = 0x210f; + t.planckover2pi1 = 0x210f; + t.plus = 0x002b; + t.plusbelowcmb = 0x031f; + t.pluscircle = 0x2295; + t.plusminus = 0x00b1; + t.plusmod = 0x02d6; + t.plusmonospace = 0xff0b; + t.plussmall = 0xfe62; + t.plussuperior = 0x207a; + t.pmonospace = 0xff50; + t.pmsquare = 0x33d8; + t.pohiragana = 0x307d; + t.pointingindexdownwhite = 0x261f; + t.pointingindexleftwhite = 0x261c; + t.pointingindexrightwhite = 0x261e; + t.pointingindexupwhite = 0x261d; + t.pokatakana = 0x30dd; + t.poplathai = 0x0e1b; + t.postalmark = 0x3012; + t.postalmarkface = 0x3020; + t.pparen = 0x24ab; + t.precedes = 0x227a; + t.prescription = 0x211e; + t.primemod = 0x02b9; + t.primereversed = 0x2035; + t.product = 0x220f; + t.projective = 0x2305; + t.prolongedkana = 0x30fc; + t.propellor = 0x2318; + t.propersubset = 0x2282; + t.propersuperset = 0x2283; + t.proportion = 0x2237; + t.proportional = 0x221d; + t.psi = 0x03c8; + t.psicyrillic = 0x0471; + t.psilipneumatacyrilliccmb = 0x0486; + t.pssquare = 0x33b0; + t.puhiragana = 0x3077; + t.pukatakana = 0x30d7; + t.pvsquare = 0x33b4; + t.pwsquare = 0x33ba; + t.q = 0x0071; + t.qadeva = 0x0958; + t.qadmahebrew = 0x05a8; + t.qafarabic = 0x0642; + t.qaffinalarabic = 0xfed6; + t.qafinitialarabic = 0xfed7; + t.qafmedialarabic = 0xfed8; + t.qamats = 0x05b8; + t.qamats10 = 0x05b8; + t.qamats1a = 0x05b8; + t.qamats1c = 0x05b8; + t.qamats27 = 0x05b8; + t.qamats29 = 0x05b8; + t.qamats33 = 0x05b8; + t.qamatsde = 0x05b8; + t.qamatshebrew = 0x05b8; + t.qamatsnarrowhebrew = 0x05b8; + t.qamatsqatanhebrew = 0x05b8; + t.qamatsqatannarrowhebrew = 0x05b8; + t.qamatsqatanquarterhebrew = 0x05b8; + t.qamatsqatanwidehebrew = 0x05b8; + t.qamatsquarterhebrew = 0x05b8; + t.qamatswidehebrew = 0x05b8; + t.qarneyparahebrew = 0x059f; + t.qbopomofo = 0x3111; + t.qcircle = 0x24e0; + t.qhook = 0x02a0; + t.qmonospace = 0xff51; + t.qof = 0x05e7; + t.qofdagesh = 0xfb47; + t.qofdageshhebrew = 0xfb47; + t.qofhebrew = 0x05e7; + t.qparen = 0x24ac; + t.quarternote = 0x2669; + t.qubuts = 0x05bb; + t.qubuts18 = 0x05bb; + t.qubuts25 = 0x05bb; + t.qubuts31 = 0x05bb; + t.qubutshebrew = 0x05bb; + t.qubutsnarrowhebrew = 0x05bb; + t.qubutsquarterhebrew = 0x05bb; + t.qubutswidehebrew = 0x05bb; + t.question = 0x003f; + t.questionarabic = 0x061f; + t.questionarmenian = 0x055e; + t.questiondown = 0x00bf; + t.questiondownsmall = 0xf7bf; + t.questiongreek = 0x037e; + t.questionmonospace = 0xff1f; + t.questionsmall = 0xf73f; + t.quotedbl = 0x0022; + t.quotedblbase = 0x201e; + t.quotedblleft = 0x201c; + t.quotedblmonospace = 0xff02; + t.quotedblprime = 0x301e; + t.quotedblprimereversed = 0x301d; + t.quotedblright = 0x201d; + t.quoteleft = 0x2018; + t.quoteleftreversed = 0x201b; + t.quotereversed = 0x201b; + t.quoteright = 0x2019; + t.quoterightn = 0x0149; + t.quotesinglbase = 0x201a; + t.quotesingle = 0x0027; + t.quotesinglemonospace = 0xff07; + t.r = 0x0072; + t.raarmenian = 0x057c; + t.rabengali = 0x09b0; + t.racute = 0x0155; + t.radeva = 0x0930; + t.radical = 0x221a; + t.radicalex = 0xf8e5; + t.radoverssquare = 0x33ae; + t.radoverssquaredsquare = 0x33af; + t.radsquare = 0x33ad; + t.rafe = 0x05bf; + t.rafehebrew = 0x05bf; + t.ragujarati = 0x0ab0; + t.ragurmukhi = 0x0a30; + t.rahiragana = 0x3089; + t.rakatakana = 0x30e9; + t.rakatakanahalfwidth = 0xff97; + t.ralowerdiagonalbengali = 0x09f1; + t.ramiddlediagonalbengali = 0x09f0; + t.ramshorn = 0x0264; + t.ratio = 0x2236; + t.rbopomofo = 0x3116; + t.rcaron = 0x0159; + t.rcedilla = 0x0157; + t.rcircle = 0x24e1; + t.rcommaaccent = 0x0157; + t.rdblgrave = 0x0211; + t.rdotaccent = 0x1e59; + t.rdotbelow = 0x1e5b; + t.rdotbelowmacron = 0x1e5d; + t.referencemark = 0x203b; + t.reflexsubset = 0x2286; + t.reflexsuperset = 0x2287; + t.registered = 0x00ae; + t.registersans = 0xf8e8; + t.registerserif = 0xf6da; + t.reharabic = 0x0631; + t.reharmenian = 0x0580; + t.rehfinalarabic = 0xfeae; + t.rehiragana = 0x308c; + t.rekatakana = 0x30ec; + t.rekatakanahalfwidth = 0xff9a; + t.resh = 0x05e8; + t.reshdageshhebrew = 0xfb48; + t.reshhebrew = 0x05e8; + t.reversedtilde = 0x223d; + t.reviahebrew = 0x0597; + t.reviamugrashhebrew = 0x0597; + t.revlogicalnot = 0x2310; + t.rfishhook = 0x027e; + t.rfishhookreversed = 0x027f; + t.rhabengali = 0x09dd; + t.rhadeva = 0x095d; + t.rho = 0x03c1; + t.rhook = 0x027d; + t.rhookturned = 0x027b; + t.rhookturnedsuperior = 0x02b5; + t.rhosymbolgreek = 0x03f1; + t.rhotichookmod = 0x02de; + t.rieulacirclekorean = 0x3271; + t.rieulaparenkorean = 0x3211; + t.rieulcirclekorean = 0x3263; + t.rieulhieuhkorean = 0x3140; + t.rieulkiyeokkorean = 0x313a; + t.rieulkiyeoksioskorean = 0x3169; + t.rieulkorean = 0x3139; + t.rieulmieumkorean = 0x313b; + t.rieulpansioskorean = 0x316c; + t.rieulparenkorean = 0x3203; + t.rieulphieuphkorean = 0x313f; + t.rieulpieupkorean = 0x313c; + t.rieulpieupsioskorean = 0x316b; + t.rieulsioskorean = 0x313d; + t.rieulthieuthkorean = 0x313e; + t.rieultikeutkorean = 0x316a; + t.rieulyeorinhieuhkorean = 0x316d; + t.rightangle = 0x221f; + t.righttackbelowcmb = 0x0319; + t.righttriangle = 0x22bf; + t.rihiragana = 0x308a; + t.rikatakana = 0x30ea; + t.rikatakanahalfwidth = 0xff98; + t.ring = 0x02da; + t.ringbelowcmb = 0x0325; + t.ringcmb = 0x030a; + t.ringhalfleft = 0x02bf; + t.ringhalfleftarmenian = 0x0559; + t.ringhalfleftbelowcmb = 0x031c; + t.ringhalfleftcentered = 0x02d3; + t.ringhalfright = 0x02be; + t.ringhalfrightbelowcmb = 0x0339; + t.ringhalfrightcentered = 0x02d2; + t.rinvertedbreve = 0x0213; + t.rittorusquare = 0x3351; + t.rlinebelow = 0x1e5f; + t.rlongleg = 0x027c; + t.rlonglegturned = 0x027a; + t.rmonospace = 0xff52; + t.rohiragana = 0x308d; + t.rokatakana = 0x30ed; + t.rokatakanahalfwidth = 0xff9b; + t.roruathai = 0x0e23; + t.rparen = 0x24ad; + t.rrabengali = 0x09dc; + t.rradeva = 0x0931; + t.rragurmukhi = 0x0a5c; + t.rreharabic = 0x0691; + t.rrehfinalarabic = 0xfb8d; + t.rrvocalicbengali = 0x09e0; + t.rrvocalicdeva = 0x0960; + t.rrvocalicgujarati = 0x0ae0; + t.rrvocalicvowelsignbengali = 0x09c4; + t.rrvocalicvowelsigndeva = 0x0944; + t.rrvocalicvowelsigngujarati = 0x0ac4; + t.rsuperior = 0xf6f1; + t.rtblock = 0x2590; + t.rturned = 0x0279; + t.rturnedsuperior = 0x02b4; + t.ruhiragana = 0x308b; + t.rukatakana = 0x30eb; + t.rukatakanahalfwidth = 0xff99; + t.rupeemarkbengali = 0x09f2; + t.rupeesignbengali = 0x09f3; + t.rupiah = 0xf6dd; + t.ruthai = 0x0e24; + t.rvocalicbengali = 0x098b; + t.rvocalicdeva = 0x090b; + t.rvocalicgujarati = 0x0a8b; + t.rvocalicvowelsignbengali = 0x09c3; + t.rvocalicvowelsigndeva = 0x0943; + t.rvocalicvowelsigngujarati = 0x0ac3; + t.s = 0x0073; + t.sabengali = 0x09b8; + t.sacute = 0x015b; + t.sacutedotaccent = 0x1e65; + t.sadarabic = 0x0635; + t.sadeva = 0x0938; + t.sadfinalarabic = 0xfeba; + t.sadinitialarabic = 0xfebb; + t.sadmedialarabic = 0xfebc; + t.sagujarati = 0x0ab8; + t.sagurmukhi = 0x0a38; + t.sahiragana = 0x3055; + t.sakatakana = 0x30b5; + t.sakatakanahalfwidth = 0xff7b; + t.sallallahoualayhewasallamarabic = 0xfdfa; + t.samekh = 0x05e1; + t.samekhdagesh = 0xfb41; + t.samekhdageshhebrew = 0xfb41; + t.samekhhebrew = 0x05e1; + t.saraaathai = 0x0e32; + t.saraaethai = 0x0e41; + t.saraaimaimalaithai = 0x0e44; + t.saraaimaimuanthai = 0x0e43; + t.saraamthai = 0x0e33; + t.saraathai = 0x0e30; + t.saraethai = 0x0e40; + t.saraiileftthai = 0xf886; + t.saraiithai = 0x0e35; + t.saraileftthai = 0xf885; + t.saraithai = 0x0e34; + t.saraothai = 0x0e42; + t.saraueeleftthai = 0xf888; + t.saraueethai = 0x0e37; + t.saraueleftthai = 0xf887; + t.sarauethai = 0x0e36; + t.sarauthai = 0x0e38; + t.sarauuthai = 0x0e39; + t.sbopomofo = 0x3119; + t.scaron = 0x0161; + t.scarondotaccent = 0x1e67; + t.scedilla = 0x015f; + t.schwa = 0x0259; + t.schwacyrillic = 0x04d9; + t.schwadieresiscyrillic = 0x04db; + t.schwahook = 0x025a; + t.scircle = 0x24e2; + t.scircumflex = 0x015d; + t.scommaaccent = 0x0219; + t.sdotaccent = 0x1e61; + t.sdotbelow = 0x1e63; + t.sdotbelowdotaccent = 0x1e69; + t.seagullbelowcmb = 0x033c; + t.second = 0x2033; + t.secondtonechinese = 0x02ca; + t.section = 0x00a7; + t.seenarabic = 0x0633; + t.seenfinalarabic = 0xfeb2; + t.seeninitialarabic = 0xfeb3; + t.seenmedialarabic = 0xfeb4; + t.segol = 0x05b6; + t.segol13 = 0x05b6; + t.segol1f = 0x05b6; + t.segol2c = 0x05b6; + t.segolhebrew = 0x05b6; + t.segolnarrowhebrew = 0x05b6; + t.segolquarterhebrew = 0x05b6; + t.segoltahebrew = 0x0592; + t.segolwidehebrew = 0x05b6; + t.seharmenian = 0x057d; + t.sehiragana = 0x305b; + t.sekatakana = 0x30bb; + t.sekatakanahalfwidth = 0xff7e; + t.semicolon = 0x003b; + t.semicolonarabic = 0x061b; + t.semicolonmonospace = 0xff1b; + t.semicolonsmall = 0xfe54; + t.semivoicedmarkkana = 0x309c; + t.semivoicedmarkkanahalfwidth = 0xff9f; + t.sentisquare = 0x3322; + t.sentosquare = 0x3323; + t.seven = 0x0037; + t.sevenarabic = 0x0667; + t.sevenbengali = 0x09ed; + t.sevencircle = 0x2466; + t.sevencircleinversesansserif = 0x2790; + t.sevendeva = 0x096d; + t.seveneighths = 0x215e; + t.sevengujarati = 0x0aed; + t.sevengurmukhi = 0x0a6d; + t.sevenhackarabic = 0x0667; + t.sevenhangzhou = 0x3027; + t.sevenideographicparen = 0x3226; + t.seveninferior = 0x2087; + t.sevenmonospace = 0xff17; + t.sevenoldstyle = 0xf737; + t.sevenparen = 0x247a; + t.sevenperiod = 0x248e; + t.sevenpersian = 0x06f7; + t.sevenroman = 0x2176; + t.sevensuperior = 0x2077; + t.seventeencircle = 0x2470; + t.seventeenparen = 0x2484; + t.seventeenperiod = 0x2498; + t.seventhai = 0x0e57; + t.sfthyphen = 0x00ad; + t.shaarmenian = 0x0577; + t.shabengali = 0x09b6; + t.shacyrillic = 0x0448; + t.shaddaarabic = 0x0651; + t.shaddadammaarabic = 0xfc61; + t.shaddadammatanarabic = 0xfc5e; + t.shaddafathaarabic = 0xfc60; + t.shaddakasraarabic = 0xfc62; + t.shaddakasratanarabic = 0xfc5f; + t.shade = 0x2592; + t.shadedark = 0x2593; + t.shadelight = 0x2591; + t.shademedium = 0x2592; + t.shadeva = 0x0936; + t.shagujarati = 0x0ab6; + t.shagurmukhi = 0x0a36; + t.shalshelethebrew = 0x0593; + t.shbopomofo = 0x3115; + t.shchacyrillic = 0x0449; + t.sheenarabic = 0x0634; + t.sheenfinalarabic = 0xfeb6; + t.sheeninitialarabic = 0xfeb7; + t.sheenmedialarabic = 0xfeb8; + t.sheicoptic = 0x03e3; + t.sheqel = 0x20aa; + t.sheqelhebrew = 0x20aa; + t.sheva = 0x05b0; + t.sheva115 = 0x05b0; + t.sheva15 = 0x05b0; + t.sheva22 = 0x05b0; + t.sheva2e = 0x05b0; + t.shevahebrew = 0x05b0; + t.shevanarrowhebrew = 0x05b0; + t.shevaquarterhebrew = 0x05b0; + t.shevawidehebrew = 0x05b0; + t.shhacyrillic = 0x04bb; + t.shimacoptic = 0x03ed; + t.shin = 0x05e9; + t.shindagesh = 0xfb49; + t.shindageshhebrew = 0xfb49; + t.shindageshshindot = 0xfb2c; + t.shindageshshindothebrew = 0xfb2c; + t.shindageshsindot = 0xfb2d; + t.shindageshsindothebrew = 0xfb2d; + t.shindothebrew = 0x05c1; + t.shinhebrew = 0x05e9; + t.shinshindot = 0xfb2a; + t.shinshindothebrew = 0xfb2a; + t.shinsindot = 0xfb2b; + t.shinsindothebrew = 0xfb2b; + t.shook = 0x0282; + t.sigma = 0x03c3; + t.sigma1 = 0x03c2; + t.sigmafinal = 0x03c2; + t.sigmalunatesymbolgreek = 0x03f2; + t.sihiragana = 0x3057; + t.sikatakana = 0x30b7; + t.sikatakanahalfwidth = 0xff7c; + t.siluqhebrew = 0x05bd; + t.siluqlefthebrew = 0x05bd; + t.similar = 0x223c; + t.sindothebrew = 0x05c2; + t.siosacirclekorean = 0x3274; + t.siosaparenkorean = 0x3214; + t.sioscieuckorean = 0x317e; + t.sioscirclekorean = 0x3266; + t.sioskiyeokkorean = 0x317a; + t.sioskorean = 0x3145; + t.siosnieunkorean = 0x317b; + t.siosparenkorean = 0x3206; + t.siospieupkorean = 0x317d; + t.siostikeutkorean = 0x317c; + t.six = 0x0036; + t.sixarabic = 0x0666; + t.sixbengali = 0x09ec; + t.sixcircle = 0x2465; + t.sixcircleinversesansserif = 0x278f; + t.sixdeva = 0x096c; + t.sixgujarati = 0x0aec; + t.sixgurmukhi = 0x0a6c; + t.sixhackarabic = 0x0666; + t.sixhangzhou = 0x3026; + t.sixideographicparen = 0x3225; + t.sixinferior = 0x2086; + t.sixmonospace = 0xff16; + t.sixoldstyle = 0xf736; + t.sixparen = 0x2479; + t.sixperiod = 0x248d; + t.sixpersian = 0x06f6; + t.sixroman = 0x2175; + t.sixsuperior = 0x2076; + t.sixteencircle = 0x246f; + t.sixteencurrencydenominatorbengali = 0x09f9; + t.sixteenparen = 0x2483; + t.sixteenperiod = 0x2497; + t.sixthai = 0x0e56; + t.slash = 0x002f; + t.slashmonospace = 0xff0f; + t.slong = 0x017f; + t.slongdotaccent = 0x1e9b; + t.smileface = 0x263a; + t.smonospace = 0xff53; + t.sofpasuqhebrew = 0x05c3; + t.softhyphen = 0x00ad; + t.softsigncyrillic = 0x044c; + t.sohiragana = 0x305d; + t.sokatakana = 0x30bd; + t.sokatakanahalfwidth = 0xff7f; + t.soliduslongoverlaycmb = 0x0338; + t.solidusshortoverlaycmb = 0x0337; + t.sorusithai = 0x0e29; + t.sosalathai = 0x0e28; + t.sosothai = 0x0e0b; + t.sosuathai = 0x0e2a; + t.space = 0x0020; + t.spacehackarabic = 0x0020; + t.spade = 0x2660; + t.spadesuitblack = 0x2660; + t.spadesuitwhite = 0x2664; + t.sparen = 0x24ae; + t.squarebelowcmb = 0x033b; + t.squarecc = 0x33c4; + t.squarecm = 0x339d; + t.squarediagonalcrosshatchfill = 0x25a9; + t.squarehorizontalfill = 0x25a4; + t.squarekg = 0x338f; + t.squarekm = 0x339e; + t.squarekmcapital = 0x33ce; + t.squareln = 0x33d1; + t.squarelog = 0x33d2; + t.squaremg = 0x338e; + t.squaremil = 0x33d5; + t.squaremm = 0x339c; + t.squaremsquared = 0x33a1; + t.squareorthogonalcrosshatchfill = 0x25a6; + t.squareupperlefttolowerrightfill = 0x25a7; + t.squareupperrighttolowerleftfill = 0x25a8; + t.squareverticalfill = 0x25a5; + t.squarewhitewithsmallblack = 0x25a3; + t.srsquare = 0x33db; + t.ssabengali = 0x09b7; + t.ssadeva = 0x0937; + t.ssagujarati = 0x0ab7; + t.ssangcieuckorean = 0x3149; + t.ssanghieuhkorean = 0x3185; + t.ssangieungkorean = 0x3180; + t.ssangkiyeokkorean = 0x3132; + t.ssangnieunkorean = 0x3165; + t.ssangpieupkorean = 0x3143; + t.ssangsioskorean = 0x3146; + t.ssangtikeutkorean = 0x3138; + t.ssuperior = 0xf6f2; + t.sterling = 0x00a3; + t.sterlingmonospace = 0xffe1; + t.strokelongoverlaycmb = 0x0336; + t.strokeshortoverlaycmb = 0x0335; + t.subset = 0x2282; + t.subsetnotequal = 0x228a; + t.subsetorequal = 0x2286; + t.succeeds = 0x227b; + t.suchthat = 0x220b; + t.suhiragana = 0x3059; + t.sukatakana = 0x30b9; + t.sukatakanahalfwidth = 0xff7d; + t.sukunarabic = 0x0652; + t.summation = 0x2211; + t.sun = 0x263c; + t.superset = 0x2283; + t.supersetnotequal = 0x228b; + t.supersetorequal = 0x2287; + t.svsquare = 0x33dc; + t.syouwaerasquare = 0x337c; + t.t = 0x0074; + t.tabengali = 0x09a4; + t.tackdown = 0x22a4; + t.tackleft = 0x22a3; + t.tadeva = 0x0924; + t.tagujarati = 0x0aa4; + t.tagurmukhi = 0x0a24; + t.taharabic = 0x0637; + t.tahfinalarabic = 0xfec2; + t.tahinitialarabic = 0xfec3; + t.tahiragana = 0x305f; + t.tahmedialarabic = 0xfec4; + t.taisyouerasquare = 0x337d; + t.takatakana = 0x30bf; + t.takatakanahalfwidth = 0xff80; + t.tatweelarabic = 0x0640; + t.tau = 0x03c4; + t.tav = 0x05ea; + t.tavdages = 0xfb4a; + t.tavdagesh = 0xfb4a; + t.tavdageshhebrew = 0xfb4a; + t.tavhebrew = 0x05ea; + t.tbar = 0x0167; + t.tbopomofo = 0x310a; + t.tcaron = 0x0165; + t.tccurl = 0x02a8; + t.tcedilla = 0x0163; + t.tcheharabic = 0x0686; + t.tchehfinalarabic = 0xfb7b; + t.tchehinitialarabic = 0xfb7c; + t.tchehmedialarabic = 0xfb7d; + t.tcircle = 0x24e3; + t.tcircumflexbelow = 0x1e71; + t.tcommaaccent = 0x0163; + t.tdieresis = 0x1e97; + t.tdotaccent = 0x1e6b; + t.tdotbelow = 0x1e6d; + t.tecyrillic = 0x0442; + t.tedescendercyrillic = 0x04ad; + t.teharabic = 0x062a; + t.tehfinalarabic = 0xfe96; + t.tehhahinitialarabic = 0xfca2; + t.tehhahisolatedarabic = 0xfc0c; + t.tehinitialarabic = 0xfe97; + t.tehiragana = 0x3066; + t.tehjeeminitialarabic = 0xfca1; + t.tehjeemisolatedarabic = 0xfc0b; + t.tehmarbutaarabic = 0x0629; + t.tehmarbutafinalarabic = 0xfe94; + t.tehmedialarabic = 0xfe98; + t.tehmeeminitialarabic = 0xfca4; + t.tehmeemisolatedarabic = 0xfc0e; + t.tehnoonfinalarabic = 0xfc73; + t.tekatakana = 0x30c6; + t.tekatakanahalfwidth = 0xff83; + t.telephone = 0x2121; + t.telephoneblack = 0x260e; + t.telishagedolahebrew = 0x05a0; + t.telishaqetanahebrew = 0x05a9; + t.tencircle = 0x2469; + t.tenideographicparen = 0x3229; + t.tenparen = 0x247d; + t.tenperiod = 0x2491; + t.tenroman = 0x2179; + t.tesh = 0x02a7; + t.tet = 0x05d8; + t.tetdagesh = 0xfb38; + t.tetdageshhebrew = 0xfb38; + t.tethebrew = 0x05d8; + t.tetsecyrillic = 0x04b5; + t.tevirhebrew = 0x059b; + t.tevirlefthebrew = 0x059b; + t.thabengali = 0x09a5; + t.thadeva = 0x0925; + t.thagujarati = 0x0aa5; + t.thagurmukhi = 0x0a25; + t.thalarabic = 0x0630; + t.thalfinalarabic = 0xfeac; + t.thanthakhatlowleftthai = 0xf898; + t.thanthakhatlowrightthai = 0xf897; + t.thanthakhatthai = 0x0e4c; + t.thanthakhatupperleftthai = 0xf896; + t.theharabic = 0x062b; + t.thehfinalarabic = 0xfe9a; + t.thehinitialarabic = 0xfe9b; + t.thehmedialarabic = 0xfe9c; + t.thereexists = 0x2203; + t.therefore = 0x2234; + t.theta = 0x03b8; + t.theta1 = 0x03d1; + t.thetasymbolgreek = 0x03d1; + t.thieuthacirclekorean = 0x3279; + t.thieuthaparenkorean = 0x3219; + t.thieuthcirclekorean = 0x326b; + t.thieuthkorean = 0x314c; + t.thieuthparenkorean = 0x320b; + t.thirteencircle = 0x246c; + t.thirteenparen = 0x2480; + t.thirteenperiod = 0x2494; + t.thonangmonthothai = 0x0e11; + t.thook = 0x01ad; + t.thophuthaothai = 0x0e12; + t.thorn = 0x00fe; + t.thothahanthai = 0x0e17; + t.thothanthai = 0x0e10; + t.thothongthai = 0x0e18; + t.thothungthai = 0x0e16; + t.thousandcyrillic = 0x0482; + t.thousandsseparatorarabic = 0x066c; + t.thousandsseparatorpersian = 0x066c; + t.three = 0x0033; + t.threearabic = 0x0663; + t.threebengali = 0x09e9; + t.threecircle = 0x2462; + t.threecircleinversesansserif = 0x278c; + t.threedeva = 0x0969; + t.threeeighths = 0x215c; + t.threegujarati = 0x0ae9; + t.threegurmukhi = 0x0a69; + t.threehackarabic = 0x0663; + t.threehangzhou = 0x3023; + t.threeideographicparen = 0x3222; + t.threeinferior = 0x2083; + t.threemonospace = 0xff13; + t.threenumeratorbengali = 0x09f6; + t.threeoldstyle = 0xf733; + t.threeparen = 0x2476; + t.threeperiod = 0x248a; + t.threepersian = 0x06f3; + t.threequarters = 0x00be; + t.threequartersemdash = 0xf6de; + t.threeroman = 0x2172; + t.threesuperior = 0x00b3; + t.threethai = 0x0e53; + t.thzsquare = 0x3394; + t.tihiragana = 0x3061; + t.tikatakana = 0x30c1; + t.tikatakanahalfwidth = 0xff81; + t.tikeutacirclekorean = 0x3270; + t.tikeutaparenkorean = 0x3210; + t.tikeutcirclekorean = 0x3262; + t.tikeutkorean = 0x3137; + t.tikeutparenkorean = 0x3202; + t.tilde = 0x02dc; + t.tildebelowcmb = 0x0330; + t.tildecmb = 0x0303; + t.tildecomb = 0x0303; + t.tildedoublecmb = 0x0360; + t.tildeoperator = 0x223c; + t.tildeoverlaycmb = 0x0334; + t.tildeverticalcmb = 0x033e; + t.timescircle = 0x2297; + t.tipehahebrew = 0x0596; + t.tipehalefthebrew = 0x0596; + t.tippigurmukhi = 0x0a70; + t.titlocyrilliccmb = 0x0483; + t.tiwnarmenian = 0x057f; + t.tlinebelow = 0x1e6f; + t.tmonospace = 0xff54; + t.toarmenian = 0x0569; + t.tohiragana = 0x3068; + t.tokatakana = 0x30c8; + t.tokatakanahalfwidth = 0xff84; + t.tonebarextrahighmod = 0x02e5; + t.tonebarextralowmod = 0x02e9; + t.tonebarhighmod = 0x02e6; + t.tonebarlowmod = 0x02e8; + t.tonebarmidmod = 0x02e7; + t.tonefive = 0x01bd; + t.tonesix = 0x0185; + t.tonetwo = 0x01a8; + t.tonos = 0x0384; + t.tonsquare = 0x3327; + t.topatakthai = 0x0e0f; + t.tortoiseshellbracketleft = 0x3014; + t.tortoiseshellbracketleftsmall = 0xfe5d; + t.tortoiseshellbracketleftvertical = 0xfe39; + t.tortoiseshellbracketright = 0x3015; + t.tortoiseshellbracketrightsmall = 0xfe5e; + t.tortoiseshellbracketrightvertical = 0xfe3a; + t.totaothai = 0x0e15; + t.tpalatalhook = 0x01ab; + t.tparen = 0x24af; + t.trademark = 0x2122; + t.trademarksans = 0xf8ea; + t.trademarkserif = 0xf6db; + t.tretroflexhook = 0x0288; + t.triagdn = 0x25bc; + t.triaglf = 0x25c4; + t.triagrt = 0x25ba; + t.triagup = 0x25b2; + t.ts = 0x02a6; + t.tsadi = 0x05e6; + t.tsadidagesh = 0xfb46; + t.tsadidageshhebrew = 0xfb46; + t.tsadihebrew = 0x05e6; + t.tsecyrillic = 0x0446; + t.tsere = 0x05b5; + t.tsere12 = 0x05b5; + t.tsere1e = 0x05b5; + t.tsere2b = 0x05b5; + t.tserehebrew = 0x05b5; + t.tserenarrowhebrew = 0x05b5; + t.tserequarterhebrew = 0x05b5; + t.tserewidehebrew = 0x05b5; + t.tshecyrillic = 0x045b; + t.tsuperior = 0xf6f3; + t.ttabengali = 0x099f; + t.ttadeva = 0x091f; + t.ttagujarati = 0x0a9f; + t.ttagurmukhi = 0x0a1f; + t.tteharabic = 0x0679; + t.ttehfinalarabic = 0xfb67; + t.ttehinitialarabic = 0xfb68; + t.ttehmedialarabic = 0xfb69; + t.tthabengali = 0x09a0; + t.tthadeva = 0x0920; + t.tthagujarati = 0x0aa0; + t.tthagurmukhi = 0x0a20; + t.tturned = 0x0287; + t.tuhiragana = 0x3064; + t.tukatakana = 0x30c4; + t.tukatakanahalfwidth = 0xff82; + t.tusmallhiragana = 0x3063; + t.tusmallkatakana = 0x30c3; + t.tusmallkatakanahalfwidth = 0xff6f; + t.twelvecircle = 0x246b; + t.twelveparen = 0x247f; + t.twelveperiod = 0x2493; + t.twelveroman = 0x217b; + t.twentycircle = 0x2473; + t.twentyhangzhou = 0x5344; + t.twentyparen = 0x2487; + t.twentyperiod = 0x249b; + t.two = 0x0032; + t.twoarabic = 0x0662; + t.twobengali = 0x09e8; + t.twocircle = 0x2461; + t.twocircleinversesansserif = 0x278b; + t.twodeva = 0x0968; + t.twodotenleader = 0x2025; + t.twodotleader = 0x2025; + t.twodotleadervertical = 0xfe30; + t.twogujarati = 0x0ae8; + t.twogurmukhi = 0x0a68; + t.twohackarabic = 0x0662; + t.twohangzhou = 0x3022; + t.twoideographicparen = 0x3221; + t.twoinferior = 0x2082; + t.twomonospace = 0xff12; + t.twonumeratorbengali = 0x09f5; + t.twooldstyle = 0xf732; + t.twoparen = 0x2475; + t.twoperiod = 0x2489; + t.twopersian = 0x06f2; + t.tworoman = 0x2171; + t.twostroke = 0x01bb; + t.twosuperior = 0x00b2; + t.twothai = 0x0e52; + t.twothirds = 0x2154; + t.u = 0x0075; + t.uacute = 0x00fa; + t.ubar = 0x0289; + t.ubengali = 0x0989; + t.ubopomofo = 0x3128; + t.ubreve = 0x016d; + t.ucaron = 0x01d4; + t.ucircle = 0x24e4; + t.ucircumflex = 0x00fb; + t.ucircumflexbelow = 0x1e77; + t.ucyrillic = 0x0443; + t.udattadeva = 0x0951; + t.udblacute = 0x0171; + t.udblgrave = 0x0215; + t.udeva = 0x0909; + t.udieresis = 0x00fc; + t.udieresisacute = 0x01d8; + t.udieresisbelow = 0x1e73; + t.udieresiscaron = 0x01da; + t.udieresiscyrillic = 0x04f1; + t.udieresisgrave = 0x01dc; + t.udieresismacron = 0x01d6; + t.udotbelow = 0x1ee5; + t.ugrave = 0x00f9; + t.ugujarati = 0x0a89; + t.ugurmukhi = 0x0a09; + t.uhiragana = 0x3046; + t.uhookabove = 0x1ee7; + t.uhorn = 0x01b0; + t.uhornacute = 0x1ee9; + t.uhorndotbelow = 0x1ef1; + t.uhorngrave = 0x1eeb; + t.uhornhookabove = 0x1eed; + t.uhorntilde = 0x1eef; + t.uhungarumlaut = 0x0171; + t.uhungarumlautcyrillic = 0x04f3; + t.uinvertedbreve = 0x0217; + t.ukatakana = 0x30a6; + t.ukatakanahalfwidth = 0xff73; + t.ukcyrillic = 0x0479; + t.ukorean = 0x315c; + t.umacron = 0x016b; + t.umacroncyrillic = 0x04ef; + t.umacrondieresis = 0x1e7b; + t.umatragurmukhi = 0x0a41; + t.umonospace = 0xff55; + t.underscore = 0x005f; + t.underscoredbl = 0x2017; + t.underscoremonospace = 0xff3f; + t.underscorevertical = 0xfe33; + t.underscorewavy = 0xfe4f; + t.union = 0x222a; + t.universal = 0x2200; + t.uogonek = 0x0173; + t.uparen = 0x24b0; + t.upblock = 0x2580; + t.upperdothebrew = 0x05c4; + t.upsilon = 0x03c5; + t.upsilondieresis = 0x03cb; + t.upsilondieresistonos = 0x03b0; + t.upsilonlatin = 0x028a; + t.upsilontonos = 0x03cd; + t.uptackbelowcmb = 0x031d; + t.uptackmod = 0x02d4; + t.uragurmukhi = 0x0a73; + t.uring = 0x016f; + t.ushortcyrillic = 0x045e; + t.usmallhiragana = 0x3045; + t.usmallkatakana = 0x30a5; + t.usmallkatakanahalfwidth = 0xff69; + t.ustraightcyrillic = 0x04af; + t.ustraightstrokecyrillic = 0x04b1; + t.utilde = 0x0169; + t.utildeacute = 0x1e79; + t.utildebelow = 0x1e75; + t.uubengali = 0x098a; + t.uudeva = 0x090a; + t.uugujarati = 0x0a8a; + t.uugurmukhi = 0x0a0a; + t.uumatragurmukhi = 0x0a42; + t.uuvowelsignbengali = 0x09c2; + t.uuvowelsigndeva = 0x0942; + t.uuvowelsigngujarati = 0x0ac2; + t.uvowelsignbengali = 0x09c1; + t.uvowelsigndeva = 0x0941; + t.uvowelsigngujarati = 0x0ac1; + t.v = 0x0076; + t.vadeva = 0x0935; + t.vagujarati = 0x0ab5; + t.vagurmukhi = 0x0a35; + t.vakatakana = 0x30f7; + t.vav = 0x05d5; + t.vavdagesh = 0xfb35; + t.vavdagesh65 = 0xfb35; + t.vavdageshhebrew = 0xfb35; + t.vavhebrew = 0x05d5; + t.vavholam = 0xfb4b; + t.vavholamhebrew = 0xfb4b; + t.vavvavhebrew = 0x05f0; + t.vavyodhebrew = 0x05f1; + t.vcircle = 0x24e5; + t.vdotbelow = 0x1e7f; + t.vecyrillic = 0x0432; + t.veharabic = 0x06a4; + t.vehfinalarabic = 0xfb6b; + t.vehinitialarabic = 0xfb6c; + t.vehmedialarabic = 0xfb6d; + t.vekatakana = 0x30f9; + t.venus = 0x2640; + t.verticalbar = 0x007c; + t.verticallineabovecmb = 0x030d; + t.verticallinebelowcmb = 0x0329; + t.verticallinelowmod = 0x02cc; + t.verticallinemod = 0x02c8; + t.vewarmenian = 0x057e; + t.vhook = 0x028b; + t.vikatakana = 0x30f8; + t.viramabengali = 0x09cd; + t.viramadeva = 0x094d; + t.viramagujarati = 0x0acd; + t.visargabengali = 0x0983; + t.visargadeva = 0x0903; + t.visargagujarati = 0x0a83; + t.vmonospace = 0xff56; + t.voarmenian = 0x0578; + t.voicediterationhiragana = 0x309e; + t.voicediterationkatakana = 0x30fe; + t.voicedmarkkana = 0x309b; + t.voicedmarkkanahalfwidth = 0xff9e; + t.vokatakana = 0x30fa; + t.vparen = 0x24b1; + t.vtilde = 0x1e7d; + t.vturned = 0x028c; + t.vuhiragana = 0x3094; + t.vukatakana = 0x30f4; + t.w = 0x0077; + t.wacute = 0x1e83; + t.waekorean = 0x3159; + t.wahiragana = 0x308f; + t.wakatakana = 0x30ef; + t.wakatakanahalfwidth = 0xff9c; + t.wakorean = 0x3158; + t.wasmallhiragana = 0x308e; + t.wasmallkatakana = 0x30ee; + t.wattosquare = 0x3357; + t.wavedash = 0x301c; + t.wavyunderscorevertical = 0xfe34; + t.wawarabic = 0x0648; + t.wawfinalarabic = 0xfeee; + t.wawhamzaabovearabic = 0x0624; + t.wawhamzaabovefinalarabic = 0xfe86; + t.wbsquare = 0x33dd; + t.wcircle = 0x24e6; + t.wcircumflex = 0x0175; + t.wdieresis = 0x1e85; + t.wdotaccent = 0x1e87; + t.wdotbelow = 0x1e89; + t.wehiragana = 0x3091; + t.weierstrass = 0x2118; + t.wekatakana = 0x30f1; + t.wekorean = 0x315e; + t.weokorean = 0x315d; + t.wgrave = 0x1e81; + t.whitebullet = 0x25e6; + t.whitecircle = 0x25cb; + t.whitecircleinverse = 0x25d9; + t.whitecornerbracketleft = 0x300e; + t.whitecornerbracketleftvertical = 0xfe43; + t.whitecornerbracketright = 0x300f; + t.whitecornerbracketrightvertical = 0xfe44; + t.whitediamond = 0x25c7; + t.whitediamondcontainingblacksmalldiamond = 0x25c8; + t.whitedownpointingsmalltriangle = 0x25bf; + t.whitedownpointingtriangle = 0x25bd; + t.whiteleftpointingsmalltriangle = 0x25c3; + t.whiteleftpointingtriangle = 0x25c1; + t.whitelenticularbracketleft = 0x3016; + t.whitelenticularbracketright = 0x3017; + t.whiterightpointingsmalltriangle = 0x25b9; + t.whiterightpointingtriangle = 0x25b7; + t.whitesmallsquare = 0x25ab; + t.whitesmilingface = 0x263a; + t.whitesquare = 0x25a1; + t.whitestar = 0x2606; + t.whitetelephone = 0x260f; + t.whitetortoiseshellbracketleft = 0x3018; + t.whitetortoiseshellbracketright = 0x3019; + t.whiteuppointingsmalltriangle = 0x25b5; + t.whiteuppointingtriangle = 0x25b3; + t.wihiragana = 0x3090; + t.wikatakana = 0x30f0; + t.wikorean = 0x315f; + t.wmonospace = 0xff57; + t.wohiragana = 0x3092; + t.wokatakana = 0x30f2; + t.wokatakanahalfwidth = 0xff66; + t.won = 0x20a9; + t.wonmonospace = 0xffe6; + t.wowaenthai = 0x0e27; + t.wparen = 0x24b2; + t.wring = 0x1e98; + t.wsuperior = 0x02b7; + t.wturned = 0x028d; + t.wynn = 0x01bf; + t.x = 0x0078; + t.xabovecmb = 0x033d; + t.xbopomofo = 0x3112; + t.xcircle = 0x24e7; + t.xdieresis = 0x1e8d; + t.xdotaccent = 0x1e8b; + t.xeharmenian = 0x056d; + t.xi = 0x03be; + t.xmonospace = 0xff58; + t.xparen = 0x24b3; + t.xsuperior = 0x02e3; + t.y = 0x0079; + t.yaadosquare = 0x334e; + t.yabengali = 0x09af; + t.yacute = 0x00fd; + t.yadeva = 0x092f; + t.yaekorean = 0x3152; + t.yagujarati = 0x0aaf; + t.yagurmukhi = 0x0a2f; + t.yahiragana = 0x3084; + t.yakatakana = 0x30e4; + t.yakatakanahalfwidth = 0xff94; + t.yakorean = 0x3151; + t.yamakkanthai = 0x0e4e; + t.yasmallhiragana = 0x3083; + t.yasmallkatakana = 0x30e3; + t.yasmallkatakanahalfwidth = 0xff6c; + t.yatcyrillic = 0x0463; + t.ycircle = 0x24e8; + t.ycircumflex = 0x0177; + t.ydieresis = 0x00ff; + t.ydotaccent = 0x1e8f; + t.ydotbelow = 0x1ef5; + t.yeharabic = 0x064a; + t.yehbarreearabic = 0x06d2; + t.yehbarreefinalarabic = 0xfbaf; + t.yehfinalarabic = 0xfef2; + t.yehhamzaabovearabic = 0x0626; + t.yehhamzaabovefinalarabic = 0xfe8a; + t.yehhamzaaboveinitialarabic = 0xfe8b; + t.yehhamzaabovemedialarabic = 0xfe8c; + t.yehinitialarabic = 0xfef3; + t.yehmedialarabic = 0xfef4; + t.yehmeeminitialarabic = 0xfcdd; + t.yehmeemisolatedarabic = 0xfc58; + t.yehnoonfinalarabic = 0xfc94; + t.yehthreedotsbelowarabic = 0x06d1; + t.yekorean = 0x3156; + t.yen = 0x00a5; + t.yenmonospace = 0xffe5; + t.yeokorean = 0x3155; + t.yeorinhieuhkorean = 0x3186; + t.yerahbenyomohebrew = 0x05aa; + t.yerahbenyomolefthebrew = 0x05aa; + t.yericyrillic = 0x044b; + t.yerudieresiscyrillic = 0x04f9; + t.yesieungkorean = 0x3181; + t.yesieungpansioskorean = 0x3183; + t.yesieungsioskorean = 0x3182; + t.yetivhebrew = 0x059a; + t.ygrave = 0x1ef3; + t.yhook = 0x01b4; + t.yhookabove = 0x1ef7; + t.yiarmenian = 0x0575; + t.yicyrillic = 0x0457; + t.yikorean = 0x3162; + t.yinyang = 0x262f; + t.yiwnarmenian = 0x0582; + t.ymonospace = 0xff59; + t.yod = 0x05d9; + t.yoddagesh = 0xfb39; + t.yoddageshhebrew = 0xfb39; + t.yodhebrew = 0x05d9; + t.yodyodhebrew = 0x05f2; + t.yodyodpatahhebrew = 0xfb1f; + t.yohiragana = 0x3088; + t.yoikorean = 0x3189; + t.yokatakana = 0x30e8; + t.yokatakanahalfwidth = 0xff96; + t.yokorean = 0x315b; + t.yosmallhiragana = 0x3087; + t.yosmallkatakana = 0x30e7; + t.yosmallkatakanahalfwidth = 0xff6e; + t.yotgreek = 0x03f3; + t.yoyaekorean = 0x3188; + t.yoyakorean = 0x3187; + t.yoyakthai = 0x0e22; + t.yoyingthai = 0x0e0d; + t.yparen = 0x24b4; + t.ypogegrammeni = 0x037a; + t.ypogegrammenigreekcmb = 0x0345; + t.yr = 0x01a6; + t.yring = 0x1e99; + t.ysuperior = 0x02b8; + t.ytilde = 0x1ef9; + t.yturned = 0x028e; + t.yuhiragana = 0x3086; + t.yuikorean = 0x318c; + t.yukatakana = 0x30e6; + t.yukatakanahalfwidth = 0xff95; + t.yukorean = 0x3160; + t.yusbigcyrillic = 0x046b; + t.yusbigiotifiedcyrillic = 0x046d; + t.yuslittlecyrillic = 0x0467; + t.yuslittleiotifiedcyrillic = 0x0469; + t.yusmallhiragana = 0x3085; + t.yusmallkatakana = 0x30e5; + t.yusmallkatakanahalfwidth = 0xff6d; + t.yuyekorean = 0x318b; + t.yuyeokorean = 0x318a; + t.yyabengali = 0x09df; + t.yyadeva = 0x095f; + t.z = 0x007a; + t.zaarmenian = 0x0566; + t.zacute = 0x017a; + t.zadeva = 0x095b; + t.zagurmukhi = 0x0a5b; + t.zaharabic = 0x0638; + t.zahfinalarabic = 0xfec6; + t.zahinitialarabic = 0xfec7; + t.zahiragana = 0x3056; + t.zahmedialarabic = 0xfec8; + t.zainarabic = 0x0632; + t.zainfinalarabic = 0xfeb0; + t.zakatakana = 0x30b6; + t.zaqefgadolhebrew = 0x0595; + t.zaqefqatanhebrew = 0x0594; + t.zarqahebrew = 0x0598; + t.zayin = 0x05d6; + t.zayindagesh = 0xfb36; + t.zayindageshhebrew = 0xfb36; + t.zayinhebrew = 0x05d6; + t.zbopomofo = 0x3117; + t.zcaron = 0x017e; + t.zcircle = 0x24e9; + t.zcircumflex = 0x1e91; + t.zcurl = 0x0291; + t.zdot = 0x017c; + t.zdotaccent = 0x017c; + t.zdotbelow = 0x1e93; + t.zecyrillic = 0x0437; + t.zedescendercyrillic = 0x0499; + t.zedieresiscyrillic = 0x04df; + t.zehiragana = 0x305c; + t.zekatakana = 0x30bc; + t.zero = 0x0030; + t.zeroarabic = 0x0660; + t.zerobengali = 0x09e6; + t.zerodeva = 0x0966; + t.zerogujarati = 0x0ae6; + t.zerogurmukhi = 0x0a66; + t.zerohackarabic = 0x0660; + t.zeroinferior = 0x2080; + t.zeromonospace = 0xff10; + t.zerooldstyle = 0xf730; + t.zeropersian = 0x06f0; + t.zerosuperior = 0x2070; + t.zerothai = 0x0e50; + t.zerowidthjoiner = 0xfeff; + t.zerowidthnonjoiner = 0x200c; + t.zerowidthspace = 0x200b; + t.zeta = 0x03b6; + t.zhbopomofo = 0x3113; + t.zhearmenian = 0x056a; + t.zhebrevecyrillic = 0x04c2; + t.zhecyrillic = 0x0436; + t.zhedescendercyrillic = 0x0497; + t.zhedieresiscyrillic = 0x04dd; + t.zihiragana = 0x3058; + t.zikatakana = 0x30b8; + t.zinorhebrew = 0x05ae; + t.zlinebelow = 0x1e95; + t.zmonospace = 0xff5a; + t.zohiragana = 0x305e; + t.zokatakana = 0x30be; + t.zparen = 0x24b5; + t.zretroflexhook = 0x0290; + t.zstroke = 0x01b6; + t.zuhiragana = 0x305a; + t.zukatakana = 0x30ba; + t[".notdef"] = 0x0000; + t.angbracketleftbig = 0x2329; + t.angbracketleftBig = 0x2329; + t.angbracketleftbigg = 0x2329; + t.angbracketleftBigg = 0x2329; + t.angbracketrightBig = 0x232a; + t.angbracketrightbig = 0x232a; + t.angbracketrightBigg = 0x232a; + t.angbracketrightbigg = 0x232a; + t.arrowhookleft = 0x21aa; + t.arrowhookright = 0x21a9; + t.arrowlefttophalf = 0x21bc; + t.arrowleftbothalf = 0x21bd; + t.arrownortheast = 0x2197; + t.arrownorthwest = 0x2196; + t.arrowrighttophalf = 0x21c0; + t.arrowrightbothalf = 0x21c1; + t.arrowsoutheast = 0x2198; + t.arrowsouthwest = 0x2199; + t.backslashbig = 0x2216; + t.backslashBig = 0x2216; + t.backslashBigg = 0x2216; + t.backslashbigg = 0x2216; + t.bardbl = 0x2016; + t.bracehtipdownleft = 0xfe37; + t.bracehtipdownright = 0xfe37; + t.bracehtipupleft = 0xfe38; + t.bracehtipupright = 0xfe38; + t.braceleftBig = 0x007b; + t.braceleftbig = 0x007b; + t.braceleftbigg = 0x007b; + t.braceleftBigg = 0x007b; + t.bracerightBig = 0x007d; + t.bracerightbig = 0x007d; + t.bracerightbigg = 0x007d; + t.bracerightBigg = 0x007d; + t.bracketleftbig = 0x005b; + t.bracketleftBig = 0x005b; + t.bracketleftbigg = 0x005b; + t.bracketleftBigg = 0x005b; + t.bracketrightBig = 0x005d; + t.bracketrightbig = 0x005d; + t.bracketrightbigg = 0x005d; + t.bracketrightBigg = 0x005d; + t.ceilingleftbig = 0x2308; + t.ceilingleftBig = 0x2308; + t.ceilingleftBigg = 0x2308; + t.ceilingleftbigg = 0x2308; + t.ceilingrightbig = 0x2309; + t.ceilingrightBig = 0x2309; + t.ceilingrightbigg = 0x2309; + t.ceilingrightBigg = 0x2309; + t.circledotdisplay = 0x2299; + t.circledottext = 0x2299; + t.circlemultiplydisplay = 0x2297; + t.circlemultiplytext = 0x2297; + t.circleplusdisplay = 0x2295; + t.circleplustext = 0x2295; + t.contintegraldisplay = 0x222e; + t.contintegraltext = 0x222e; + t.coproductdisplay = 0x2210; + t.coproducttext = 0x2210; + t.floorleftBig = 0x230a; + t.floorleftbig = 0x230a; + t.floorleftbigg = 0x230a; + t.floorleftBigg = 0x230a; + t.floorrightbig = 0x230b; + t.floorrightBig = 0x230b; + t.floorrightBigg = 0x230b; + t.floorrightbigg = 0x230b; + t.hatwide = 0x0302; + t.hatwider = 0x0302; + t.hatwidest = 0x0302; + t.intercal = 0x1d40; + t.integraldisplay = 0x222b; + t.integraltext = 0x222b; + t.intersectiondisplay = 0x22c2; + t.intersectiontext = 0x22c2; + t.logicalanddisplay = 0x2227; + t.logicalandtext = 0x2227; + t.logicalordisplay = 0x2228; + t.logicalortext = 0x2228; + t.parenleftBig = 0x0028; + t.parenleftbig = 0x0028; + t.parenleftBigg = 0x0028; + t.parenleftbigg = 0x0028; + t.parenrightBig = 0x0029; + t.parenrightbig = 0x0029; + t.parenrightBigg = 0x0029; + t.parenrightbigg = 0x0029; + t.prime = 0x2032; + t.productdisplay = 0x220f; + t.producttext = 0x220f; + t.radicalbig = 0x221a; + t.radicalBig = 0x221a; + t.radicalBigg = 0x221a; + t.radicalbigg = 0x221a; + t.radicalbt = 0x221a; + t.radicaltp = 0x221a; + t.radicalvertex = 0x221a; + t.slashbig = 0x002f; + t.slashBig = 0x002f; + t.slashBigg = 0x002f; + t.slashbigg = 0x002f; + t.summationdisplay = 0x2211; + t.summationtext = 0x2211; + t.tildewide = 0x02dc; + t.tildewider = 0x02dc; + t.tildewidest = 0x02dc; + t.uniondisplay = 0x22c3; + t.unionmultidisplay = 0x228e; + t.unionmultitext = 0x228e; + t.unionsqdisplay = 0x2294; + t.unionsqtext = 0x2294; + t.uniontext = 0x22c3; + t.vextenddouble = 0x2225; + t.vextendsingle = 0x2223; +}); +const getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) { + t.space = 0x0020; + t.a1 = 0x2701; + t.a2 = 0x2702; + t.a202 = 0x2703; + t.a3 = 0x2704; + t.a4 = 0x260e; + t.a5 = 0x2706; + t.a119 = 0x2707; + t.a118 = 0x2708; + t.a117 = 0x2709; + t.a11 = 0x261b; + t.a12 = 0x261e; + t.a13 = 0x270c; + t.a14 = 0x270d; + t.a15 = 0x270e; + t.a16 = 0x270f; + t.a105 = 0x2710; + t.a17 = 0x2711; + t.a18 = 0x2712; + t.a19 = 0x2713; + t.a20 = 0x2714; + t.a21 = 0x2715; + t.a22 = 0x2716; + t.a23 = 0x2717; + t.a24 = 0x2718; + t.a25 = 0x2719; + t.a26 = 0x271a; + t.a27 = 0x271b; + t.a28 = 0x271c; + t.a6 = 0x271d; + t.a7 = 0x271e; + t.a8 = 0x271f; + t.a9 = 0x2720; + t.a10 = 0x2721; + t.a29 = 0x2722; + t.a30 = 0x2723; + t.a31 = 0x2724; + t.a32 = 0x2725; + t.a33 = 0x2726; + t.a34 = 0x2727; + t.a35 = 0x2605; + t.a36 = 0x2729; + t.a37 = 0x272a; + t.a38 = 0x272b; + t.a39 = 0x272c; + t.a40 = 0x272d; + t.a41 = 0x272e; + t.a42 = 0x272f; + t.a43 = 0x2730; + t.a44 = 0x2731; + t.a45 = 0x2732; + t.a46 = 0x2733; + t.a47 = 0x2734; + t.a48 = 0x2735; + t.a49 = 0x2736; + t.a50 = 0x2737; + t.a51 = 0x2738; + t.a52 = 0x2739; + t.a53 = 0x273a; + t.a54 = 0x273b; + t.a55 = 0x273c; + t.a56 = 0x273d; + t.a57 = 0x273e; + t.a58 = 0x273f; + t.a59 = 0x2740; + t.a60 = 0x2741; + t.a61 = 0x2742; + t.a62 = 0x2743; + t.a63 = 0x2744; + t.a64 = 0x2745; + t.a65 = 0x2746; + t.a66 = 0x2747; + t.a67 = 0x2748; + t.a68 = 0x2749; + t.a69 = 0x274a; + t.a70 = 0x274b; + t.a71 = 0x25cf; + t.a72 = 0x274d; + t.a73 = 0x25a0; + t.a74 = 0x274f; + t.a203 = 0x2750; + t.a75 = 0x2751; + t.a204 = 0x2752; + t.a76 = 0x25b2; + t.a77 = 0x25bc; + t.a78 = 0x25c6; + t.a79 = 0x2756; + t.a81 = 0x25d7; + t.a82 = 0x2758; + t.a83 = 0x2759; + t.a84 = 0x275a; + t.a97 = 0x275b; + t.a98 = 0x275c; + t.a99 = 0x275d; + t.a100 = 0x275e; + t.a101 = 0x2761; + t.a102 = 0x2762; + t.a103 = 0x2763; + t.a104 = 0x2764; + t.a106 = 0x2765; + t.a107 = 0x2766; + t.a108 = 0x2767; + t.a112 = 0x2663; + t.a111 = 0x2666; + t.a110 = 0x2665; + t.a109 = 0x2660; + t.a120 = 0x2460; + t.a121 = 0x2461; + t.a122 = 0x2462; + t.a123 = 0x2463; + t.a124 = 0x2464; + t.a125 = 0x2465; + t.a126 = 0x2466; + t.a127 = 0x2467; + t.a128 = 0x2468; + t.a129 = 0x2469; + t.a130 = 0x2776; + t.a131 = 0x2777; + t.a132 = 0x2778; + t.a133 = 0x2779; + t.a134 = 0x277a; + t.a135 = 0x277b; + t.a136 = 0x277c; + t.a137 = 0x277d; + t.a138 = 0x277e; + t.a139 = 0x277f; + t.a140 = 0x2780; + t.a141 = 0x2781; + t.a142 = 0x2782; + t.a143 = 0x2783; + t.a144 = 0x2784; + t.a145 = 0x2785; + t.a146 = 0x2786; + t.a147 = 0x2787; + t.a148 = 0x2788; + t.a149 = 0x2789; + t.a150 = 0x278a; + t.a151 = 0x278b; + t.a152 = 0x278c; + t.a153 = 0x278d; + t.a154 = 0x278e; + t.a155 = 0x278f; + t.a156 = 0x2790; + t.a157 = 0x2791; + t.a158 = 0x2792; + t.a159 = 0x2793; + t.a160 = 0x2794; + t.a161 = 0x2192; + t.a163 = 0x2194; + t.a164 = 0x2195; + t.a196 = 0x2798; + t.a165 = 0x2799; + t.a192 = 0x279a; + t.a166 = 0x279b; + t.a167 = 0x279c; + t.a168 = 0x279d; + t.a169 = 0x279e; + t.a170 = 0x279f; + t.a171 = 0x27a0; + t.a172 = 0x27a1; + t.a173 = 0x27a2; + t.a162 = 0x27a3; + t.a174 = 0x27a4; + t.a175 = 0x27a5; + t.a176 = 0x27a6; + t.a177 = 0x27a7; + t.a178 = 0x27a8; + t.a179 = 0x27a9; + t.a193 = 0x27aa; + t.a180 = 0x27ab; + t.a199 = 0x27ac; + t.a181 = 0x27ad; + t.a200 = 0x27ae; + t.a182 = 0x27af; + t.a201 = 0x27b1; + t.a183 = 0x27b2; + t.a184 = 0x27b3; + t.a197 = 0x27b4; + t.a185 = 0x27b5; + t.a194 = 0x27b6; + t.a198 = 0x27b7; + t.a186 = 0x27b8; + t.a195 = 0x27b9; + t.a187 = 0x27ba; + t.a188 = 0x27bb; + t.a189 = 0x27bc; + t.a190 = 0x27bd; + t.a191 = 0x27be; + t.a89 = 0x2768; + t.a90 = 0x2769; + t.a93 = 0x276a; + t.a94 = 0x276b; + t.a91 = 0x276c; + t.a92 = 0x276d; + t.a205 = 0x276e; + t.a85 = 0x276f; + t.a206 = 0x2770; + t.a86 = 0x2771; + t.a87 = 0x2772; + t.a88 = 0x2773; + t.a95 = 0x2774; + t.a96 = 0x2775; + t[".notdef"] = 0x0000; +}); + +;// ./src/core/unicode.js + +const getSpecialPUASymbols = getLookupTableFactory(function (t) { + t[63721] = 0x00a9; + t[63193] = 0x00a9; + t[63720] = 0x00ae; + t[63194] = 0x00ae; + t[63722] = 0x2122; + t[63195] = 0x2122; + t[63729] = 0x23a7; + t[63730] = 0x23a8; + t[63731] = 0x23a9; + t[63740] = 0x23ab; + t[63741] = 0x23ac; + t[63742] = 0x23ad; + t[63726] = 0x23a1; + t[63727] = 0x23a2; + t[63728] = 0x23a3; + t[63737] = 0x23a4; + t[63738] = 0x23a5; + t[63739] = 0x23a6; + t[63723] = 0x239b; + t[63724] = 0x239c; + t[63725] = 0x239d; + t[63734] = 0x239e; + t[63735] = 0x239f; + t[63736] = 0x23a0; +}); +function mapSpecialUnicodeValues(code) { + if (code >= 0xfff0 && code <= 0xffff) { + return 0; + } else if (code >= 0xf600 && code <= 0xf8ff) { + return getSpecialPUASymbols()[code] || code; + } else if (code === 0x00ad) { + return 0x002d; + } + return code; +} +function getUnicodeForGlyph(name, glyphsUnicodeMap) { + let unicode = glyphsUnicodeMap[name]; + if (unicode !== undefined) { + return unicode; + } + if (!name) { + return -1; + } + if (name[0] === "u") { + const nameLen = name.length; + let hexStr; + if (nameLen === 7 && name[1] === "n" && name[2] === "i") { + hexStr = name.substring(3); + } else if (nameLen >= 5 && nameLen <= 7) { + hexStr = name.substring(1); + } else { + return -1; + } + if (hexStr === hexStr.toUpperCase()) { + unicode = parseInt(hexStr, 16); + if (unicode >= 0) { + return unicode; + } + } + } + return -1; +} +const UnicodeRanges = [[0x0000, 0x007f], [0x0080, 0x00ff], [0x0100, 0x017f], [0x0180, 0x024f], [0x0250, 0x02af, 0x1d00, 0x1d7f, 0x1d80, 0x1dbf], [0x02b0, 0x02ff, 0xa700, 0xa71f], [0x0300, 0x036f, 0x1dc0, 0x1dff], [0x0370, 0x03ff], [0x2c80, 0x2cff], [0x0400, 0x04ff, 0x0500, 0x052f, 0x2de0, 0x2dff, 0xa640, 0xa69f], [0x0530, 0x058f], [0x0590, 0x05ff], [0xa500, 0xa63f], [0x0600, 0x06ff, 0x0750, 0x077f], [0x07c0, 0x07ff], [0x0900, 0x097f], [0x0980, 0x09ff], [0x0a00, 0x0a7f], [0x0a80, 0x0aff], [0x0b00, 0x0b7f], [0x0b80, 0x0bff], [0x0c00, 0x0c7f], [0x0c80, 0x0cff], [0x0d00, 0x0d7f], [0x0e00, 0x0e7f], [0x0e80, 0x0eff], [0x10a0, 0x10ff, 0x2d00, 0x2d2f], [0x1b00, 0x1b7f], [0x1100, 0x11ff], [0x1e00, 0x1eff, 0x2c60, 0x2c7f, 0xa720, 0xa7ff], [0x1f00, 0x1fff], [0x2000, 0x206f, 0x2e00, 0x2e7f], [0x2070, 0x209f], [0x20a0, 0x20cf], [0x20d0, 0x20ff], [0x2100, 0x214f], [0x2150, 0x218f], [0x2190, 0x21ff, 0x27f0, 0x27ff, 0x2900, 0x297f, 0x2b00, 0x2bff], [0x2200, 0x22ff, 0x2a00, 0x2aff, 0x27c0, 0x27ef, 0x2980, 0x29ff], [0x2300, 0x23ff], [0x2400, 0x243f], [0x2440, 0x245f], [0x2460, 0x24ff], [0x2500, 0x257f], [0x2580, 0x259f], [0x25a0, 0x25ff], [0x2600, 0x26ff], [0x2700, 0x27bf], [0x3000, 0x303f], [0x3040, 0x309f], [0x30a0, 0x30ff, 0x31f0, 0x31ff], [0x3100, 0x312f, 0x31a0, 0x31bf], [0x3130, 0x318f], [0xa840, 0xa87f], [0x3200, 0x32ff], [0x3300, 0x33ff], [0xac00, 0xd7af], [0xd800, 0xdfff], [0x10900, 0x1091f], [0x4e00, 0x9fff, 0x2e80, 0x2eff, 0x2f00, 0x2fdf, 0x2ff0, 0x2fff, 0x3400, 0x4dbf, 0x20000, 0x2a6df, 0x3190, 0x319f], [0xe000, 0xf8ff], [0x31c0, 0x31ef, 0xf900, 0xfaff, 0x2f800, 0x2fa1f], [0xfb00, 0xfb4f], [0xfb50, 0xfdff], [0xfe20, 0xfe2f], [0xfe10, 0xfe1f], [0xfe50, 0xfe6f], [0xfe70, 0xfeff], [0xff00, 0xffef], [0xfff0, 0xffff], [0x0f00, 0x0fff], [0x0700, 0x074f], [0x0780, 0x07bf], [0x0d80, 0x0dff], [0x1000, 0x109f], [0x1200, 0x137f, 0x1380, 0x139f, 0x2d80, 0x2ddf], [0x13a0, 0x13ff], [0x1400, 0x167f], [0x1680, 0x169f], [0x16a0, 0x16ff], [0x1780, 0x17ff], [0x1800, 0x18af], [0x2800, 0x28ff], [0xa000, 0xa48f], [0x1700, 0x171f, 0x1720, 0x173f, 0x1740, 0x175f, 0x1760, 0x177f], [0x10300, 0x1032f], [0x10330, 0x1034f], [0x10400, 0x1044f], [0x1d000, 0x1d0ff, 0x1d100, 0x1d1ff, 0x1d200, 0x1d24f], [0x1d400, 0x1d7ff], [0xff000, 0xffffd], [0xfe00, 0xfe0f, 0xe0100, 0xe01ef], [0xe0000, 0xe007f], [0x1900, 0x194f], [0x1950, 0x197f], [0x1980, 0x19df], [0x1a00, 0x1a1f], [0x2c00, 0x2c5f], [0x2d30, 0x2d7f], [0x4dc0, 0x4dff], [0xa800, 0xa82f], [0x10000, 0x1007f, 0x10080, 0x100ff, 0x10100, 0x1013f], [0x10140, 0x1018f], [0x10380, 0x1039f], [0x103a0, 0x103df], [0x10450, 0x1047f], [0x10480, 0x104af], [0x10800, 0x1083f], [0x10a00, 0x10a5f], [0x1d300, 0x1d35f], [0x12000, 0x123ff, 0x12400, 0x1247f], [0x1d360, 0x1d37f], [0x1b80, 0x1bbf], [0x1c00, 0x1c4f], [0x1c50, 0x1c7f], [0xa880, 0xa8df], [0xa900, 0xa92f], [0xa930, 0xa95f], [0xaa00, 0xaa5f], [0x10190, 0x101cf], [0x101d0, 0x101ff], [0x102a0, 0x102df, 0x10280, 0x1029f, 0x10920, 0x1093f], [0x1f030, 0x1f09f, 0x1f000, 0x1f02f]]; +function getUnicodeRangeFor(value, lastPosition = -1) { + if (lastPosition !== -1) { + const range = UnicodeRanges[lastPosition]; + for (let i = 0, ii = range.length; i < ii; i += 2) { + if (value >= range[i] && value <= range[i + 1]) { + return lastPosition; + } + } + } + for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) { + const range = UnicodeRanges[i]; + for (let j = 0, jj = range.length; j < jj; j += 2) { + if (value >= range[j] && value <= range[j + 1]) { + return i; + } + } + } + return -1; +} +const SpecialCharRegExp = new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$", "u"); +const CategoryCache = new Map(); +function getCharUnicodeCategory(char) { + const cachedCategory = CategoryCache.get(char); + if (cachedCategory) { + return cachedCategory; + } + const groups = char.match(SpecialCharRegExp); + const category = { + isWhitespace: !!groups?.[1], + isZeroWidthDiacritic: !!groups?.[2], + isInvisibleFormatMark: !!groups?.[3] + }; + CategoryCache.set(char, category); + return category; +} +function clearUnicodeCaches() { + CategoryCache.clear(); +} + +;// ./src/core/fonts_utils.js + + + + + +const SEAC_ANALYSIS_ENABLED = true; +const FontFlags = { + FixedPitch: 1, + Serif: 2, + Symbolic: 4, + Script: 8, + Nonsymbolic: 32, + Italic: 64, + AllCap: 65536, + SmallCap: 131072, + ForceBold: 262144 +}; +const MacStandardGlyphOrdering = [".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", "Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", "onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", "Ccaron", "ccaron", "dcroat"]; +function recoverGlyphName(name, glyphsUnicodeMap) { + if (glyphsUnicodeMap[name] !== undefined) { + return name; + } + const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap); + if (unicode !== -1) { + for (const key in glyphsUnicodeMap) { + if (glyphsUnicodeMap[key] === unicode) { + return key; + } + } + } + info("Unable to recover a standard glyph name for: " + name); + return name; +} +function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { + const charCodeToGlyphId = Object.create(null); + let glyphId, charCode, baseEncoding; + const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); + if (properties.isInternalFont) { + baseEncoding = builtInEncoding; + for (charCode = 0; charCode < baseEncoding.length; charCode++) { + glyphId = glyphNames.indexOf(baseEncoding[charCode]); + charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0; + } + } else if (properties.baseEncodingName) { + baseEncoding = getEncoding(properties.baseEncodingName); + for (charCode = 0; charCode < baseEncoding.length; charCode++) { + glyphId = glyphNames.indexOf(baseEncoding[charCode]); + charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0; + } + } else if (isSymbolicFont) { + for (charCode in builtInEncoding) { + charCodeToGlyphId[charCode] = builtInEncoding[charCode]; + } + } else { + baseEncoding = StandardEncoding; + for (charCode = 0; charCode < baseEncoding.length; charCode++) { + glyphId = glyphNames.indexOf(baseEncoding[charCode]); + charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0; + } + } + const differences = properties.differences; + let glyphsUnicodeMap; + if (differences) { + for (charCode in differences) { + const glyphName = differences[charCode]; + glyphId = glyphNames.indexOf(glyphName); + if (glyphId === -1) { + if (!glyphsUnicodeMap) { + glyphsUnicodeMap = getGlyphsUnicode(); + } + const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); + if (standardGlyphName !== glyphName) { + glyphId = glyphNames.indexOf(standardGlyphName); + } + } + charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0; + } + } + return charCodeToGlyphId; +} +function normalizeFontName(name) { + return name.replaceAll(/[,_]/g, "-").replaceAll(/\s/g, ""); +} +const getVerticalPresentationForm = getLookupTableFactory(t => { + t[0x2013] = 0xfe32; + t[0x2014] = 0xfe31; + t[0x2025] = 0xfe30; + t[0x2026] = 0xfe19; + t[0x3001] = 0xfe11; + t[0x3002] = 0xfe12; + t[0x3008] = 0xfe3f; + t[0x3009] = 0xfe40; + t[0x300a] = 0xfe3d; + t[0x300b] = 0xfe3e; + t[0x300c] = 0xfe41; + t[0x300d] = 0xfe42; + t[0x300e] = 0xfe43; + t[0x300f] = 0xfe44; + t[0x3010] = 0xfe3b; + t[0x3011] = 0xfe3c; + t[0x3014] = 0xfe39; + t[0x3015] = 0xfe3a; + t[0x3016] = 0xfe17; + t[0x3017] = 0xfe18; + t[0xfe4f] = 0xfe34; + t[0xff01] = 0xfe15; + t[0xff08] = 0xfe35; + t[0xff09] = 0xfe36; + t[0xff0c] = 0xfe10; + t[0xff1a] = 0xfe13; + t[0xff1b] = 0xfe14; + t[0xff1f] = 0xfe16; + t[0xff3b] = 0xfe47; + t[0xff3d] = 0xfe48; + t[0xff3f] = 0xfe33; + t[0xff5b] = 0xfe37; + t[0xff5d] = 0xfe38; +}); +const MAX_SIZE_TO_COMPILE = 1000; +function compileType3Glyph({ + data: img, + width, + height +}) { + if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) { + return null; + } + const POINT_TO_PROCESS_LIMIT = 1000; + const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + const width1 = width + 1; + const points = new Uint8Array(width1 * (height + 1)); + let i, j, j0; + const lineSize = width + 7 & ~7; + const data = new Uint8Array(lineSize * height); + let pos = 0; + for (const elem of img) { + let mask = 128; + while (mask > 0) { + data[pos++] = elem & mask ? 0 : 255; + mask >>= 1; + } + } + let count = 0; + pos = 0; + if (data[pos] !== 0) { + points[0] = 1; + ++count; + } + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j] = data[pos] ? 2 : 1; + ++count; + } + pos++; + } + if (data[pos] !== 0) { + points[j] = 2; + ++count; + } + for (i = 1; i < height; i++) { + pos = i * lineSize; + j0 = i * width1; + if (data[pos - lineSize] !== data[pos]) { + points[j0] = data[pos] ? 1 : 8; + ++count; + } + let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + for (j = 1; j < width; j++) { + sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); + if (POINT_TYPES[sum]) { + points[j0 + j] = POINT_TYPES[sum]; + ++count; + } + pos++; + } + if (data[pos - lineSize] !== data[pos]) { + points[j0 + j] = data[pos] ? 2 : 4; + ++count; + } + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + } + pos = lineSize * (height - 1); + j0 = i * width1; + if (data[pos] !== 0) { + points[j0] = 8; + ++count; + } + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j0 + j] = data[pos] ? 4 : 8; + ++count; + } + pos++; + } + if (data[pos] !== 0) { + points[j0 + j] = 4; + ++count; + } + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + const pathBuf = []; + const { + a, + b, + c, + d, + e, + f + } = new DOMMatrix().scaleSelf(1 / width, -1 / height).translateSelf(0, -height); + for (i = 0; count && i <= height; i++) { + let p = i * width1; + const end = p + width; + while (p < end && !points[p]) { + p++; + } + if (p === end) { + continue; + } + let x = p % width1; + let y = i; + pathBuf.push(DrawOPS.moveTo, a * x + c * y + e, b * x + d * y + f); + const p0 = p; + let type = points[p]; + do { + const step = steps[type]; + do { + p += step; + } while (!points[p]); + const pp = points[p]; + if (pp !== 5 && pp !== 10) { + type = pp; + points[p] = 0; + } else { + type = pp & 0x33 * type >> 4; + points[p] &= type >> 2 | type << 2; + } + x = p % width1; + y = p / width1 | 0; + pathBuf.push(DrawOPS.lineTo, a * x + c * y + e, b * x + d * y + f); + if (!points[p]) { + --count; + } + } while (p0 !== p); + --i; + } + return [OPS.rawFillPath, [new Float32Array(pathBuf)], new Float32Array([0, 0, width, height])]; +} + +;// ./src/core/charsets.js +const ISOAdobeCharset = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron"]; +const ExpertCharset = [".notdef", "space", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"]; +const ExpertSubsetCharset = [".notdef", "space", "dollaroldstyle", "dollarsuperior", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "hyphensuperior", "colonmonetary", "onefitted", "rupiah", "centoldstyle", "figuredash", "hypheninferior", "onequarter", "onehalf", "threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior"]; + +;// ./src/core/cff_parser.js + + + + +const MAX_SUBR_NESTING = 10; +const CFFStandardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold"]; +const NUM_STANDARD_CFF_STRINGS = 391; +const CharstringValidationData = [null, { + id: "hstem", + min: 2, + stackClearing: true, + stem: true +}, null, { + id: "vstem", + min: 2, + stackClearing: true, + stem: true +}, { + id: "vmoveto", + min: 1, + stackClearing: true +}, { + id: "rlineto", + min: 2, + resetStack: true +}, { + id: "hlineto", + min: 1, + resetStack: true +}, { + id: "vlineto", + min: 1, + resetStack: true +}, { + id: "rrcurveto", + min: 6, + resetStack: true +}, null, { + id: "callsubr", + min: 1 +}, { + id: "return", + min: 0 +}, null, null, { + id: "endchar", + min: 0, + stackClearing: true +}, null, null, null, { + id: "hstemhm", + min: 2, + stackClearing: true, + stem: true +}, { + id: "hintmask", + min: 0, + stackClearing: true +}, { + id: "cntrmask", + min: 0, + stackClearing: true +}, { + id: "rmoveto", + min: 2, + stackClearing: true +}, { + id: "hmoveto", + min: 1, + stackClearing: true +}, { + id: "vstemhm", + min: 2, + stackClearing: true, + stem: true +}, { + id: "rcurveline", + min: 8, + resetStack: true +}, { + id: "rlinecurve", + min: 8, + resetStack: true +}, { + id: "vvcurveto", + min: 4, + resetStack: true +}, { + id: "hhcurveto", + min: 4, + resetStack: true +}, null, { + id: "callgsubr", + min: 1 +}, { + id: "vhcurveto", + min: 4, + resetStack: true +}, { + id: "hvcurveto", + min: 4, + resetStack: true +}]; +const CharstringValidationData12 = [null, null, null, { + id: "and", + min: 2, + stackDelta: -1 +}, { + id: "or", + min: 2, + stackDelta: -1 +}, { + id: "not", + min: 1, + stackDelta: 0 +}, null, null, null, { + id: "abs", + min: 1, + stackDelta: 0 +}, { + id: "add", + min: 2, + stackDelta: -1, + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] + stack[index - 1]; + } +}, { + id: "sub", + min: 2, + stackDelta: -1, + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] - stack[index - 1]; + } +}, { + id: "div", + min: 2, + stackDelta: -1, + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] / stack[index - 1]; + } +}, null, { + id: "neg", + min: 1, + stackDelta: 0, + stackFn(stack, index) { + stack[index - 1] = -stack[index - 1]; + } +}, { + id: "eq", + min: 2, + stackDelta: -1 +}, null, null, { + id: "drop", + min: 1, + stackDelta: -1 +}, null, { + id: "put", + min: 2, + stackDelta: -2 +}, { + id: "get", + min: 1, + stackDelta: 0 +}, { + id: "ifelse", + min: 4, + stackDelta: -3 +}, { + id: "random", + min: 0, + stackDelta: 1 +}, { + id: "mul", + min: 2, + stackDelta: -1, + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] * stack[index - 1]; + } +}, null, { + id: "sqrt", + min: 1, + stackDelta: 0 +}, { + id: "dup", + min: 1, + stackDelta: 1 +}, { + id: "exch", + min: 2, + stackDelta: 0 +}, { + id: "index", + min: 2, + stackDelta: 0 +}, { + id: "roll", + min: 3, + stackDelta: -2 +}, null, null, null, { + id: "hflex", + min: 7, + resetStack: true +}, { + id: "flex", + min: 13, + resetStack: true +}, { + id: "hflex1", + min: 9, + resetStack: true +}, { + id: "flex1", + min: 11, + resetStack: true +}]; +class CFFParser { + constructor(file, properties, seacAnalysisEnabled) { + this.bytes = file.getBytes(); + this.properties = properties; + this.seacAnalysisEnabled = !!seacAnalysisEnabled; + } + parse() { + const properties = this.properties; + const cff = new CFF(); + this.cff = cff; + const header = this.parseHeader(); + const nameIndex = this.parseIndex(header.endPos); + const topDictIndex = this.parseIndex(nameIndex.endPos); + const stringIndex = this.parseIndex(topDictIndex.endPos); + const globalSubrIndex = this.parseIndex(stringIndex.endPos); + const topDictParsed = this.parseDict(topDictIndex.obj.get(0)); + const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings); + cff.header = header.obj; + cff.names = this.parseNameIndex(nameIndex.obj); + cff.strings = this.parseStringIndex(stringIndex.obj); + cff.topDict = topDict; + cff.globalSubrIndex = globalSubrIndex.obj; + this.parsePrivateDict(cff.topDict); + cff.isCIDFont = topDict.hasName("ROS"); + const charStringOffset = topDict.getByName("CharStrings"); + const charStringIndex = this.parseIndex(charStringOffset).obj; + cff.charStringCount = charStringIndex.count; + const fontMatrix = topDict.getByName("FontMatrix"); + if (fontMatrix) { + properties.fontMatrix = fontMatrix; + } + const fontBBox = topDict.getByName("FontBBox"); + if (fontBBox) { + properties.ascent = Math.max(fontBBox[3], fontBBox[1]); + properties.descent = Math.min(fontBBox[1], fontBBox[3]); + properties.ascentScaled = true; + } + let charset, encoding; + if (cff.isCIDFont) { + const fdArrayIndex = this.parseIndex(topDict.getByName("FDArray")).obj; + for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) { + const dictRaw = fdArrayIndex.get(i); + const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings); + this.parsePrivateDict(fontDict); + cff.fdArray.push(fontDict); + } + encoding = null; + charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, true); + cff.fdSelect = this.parseFDSelect(topDict.getByName("FDSelect"), charStringIndex.count); + } else { + charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, false); + encoding = this.parseEncoding(topDict.getByName("Encoding"), properties, cff.strings, charset.charset); + } + cff.charset = charset; + cff.encoding = encoding; + const charStringsAndSeacs = this.parseCharStrings({ + charStrings: charStringIndex, + localSubrIndex: topDict.privateDict.subrsIndex, + globalSubrIndex: globalSubrIndex.obj, + fdSelect: cff.fdSelect, + fdArray: cff.fdArray, + privateDict: topDict.privateDict + }); + cff.charStrings = charStringsAndSeacs.charStrings; + cff.seacs = charStringsAndSeacs.seacs; + cff.widths = charStringsAndSeacs.widths; + return cff; + } + parseHeader() { + let bytes = this.bytes; + const bytesLength = bytes.length; + let offset = 0; + while (offset < bytesLength && bytes[offset] !== 1) { + ++offset; + } + if (offset >= bytesLength) { + throw new FormatError("Invalid CFF header"); + } + if (offset !== 0) { + info("cff data is shifted"); + bytes = bytes.subarray(offset); + this.bytes = bytes; + } + const major = bytes[0]; + const minor = bytes[1]; + const hdrSize = bytes[2]; + const offSize = bytes[3]; + const header = new CFFHeader(major, minor, hdrSize, offSize); + return { + obj: header, + endPos: hdrSize + }; + } + parseDict(dict) { + let pos = 0; + function parseOperand() { + let value = dict[pos++]; + if (value === 30) { + return parseFloatOperand(); + } else if (value === 28) { + value = readInt16(dict, pos); + pos += 2; + return value; + } else if (value === 29) { + value = dict[pos++]; + value = value << 8 | dict[pos++]; + value = value << 8 | dict[pos++]; + value = value << 8 | dict[pos++]; + return value; + } else if (value >= 32 && value <= 246) { + return value - 139; + } else if (value >= 247 && value <= 250) { + return (value - 247) * 256 + dict[pos++] + 108; + } else if (value >= 251 && value <= 254) { + return -((value - 251) * 256) - dict[pos++] - 108; + } + warn('CFFParser_parseDict: "' + value + '" is a reserved command.'); + return NaN; + } + function parseFloatOperand() { + let str = ""; + const eof = 15; + const lookup = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"]; + const length = dict.length; + while (pos < length) { + const b = dict[pos++]; + const b1 = b >> 4; + const b2 = b & 15; + if (b1 === eof) { + break; + } + str += lookup[b1]; + if (b2 === eof) { + break; + } + str += lookup[b2]; + } + return parseFloat(str); + } + let operands = []; + const entries = []; + pos = 0; + const end = dict.length; + while (pos < end) { + let b = dict[pos]; + if (b <= 21) { + if (b === 12) { + b = b << 8 | dict[++pos]; + } + entries.push([b, operands]); + operands = []; + ++pos; + } else { + operands.push(parseOperand()); + } + } + return entries; + } + parseIndex(pos) { + const cffIndex = new CFFIndex(); + const bytes = this.bytes; + const count = bytes[pos++] << 8 | bytes[pos++]; + const offsets = []; + let end = pos; + let i, ii; + if (count !== 0) { + const offsetSize = bytes[pos++]; + const startPos = pos + (count + 1) * offsetSize - 1; + for (i = 0, ii = count + 1; i < ii; ++i) { + let offset = 0; + for (let j = 0; j < offsetSize; ++j) { + offset <<= 8; + offset += bytes[pos++]; + } + offsets.push(startPos + offset); + } + end = offsets[count]; + } + for (i = 0, ii = offsets.length - 1; i < ii; ++i) { + const offsetStart = offsets[i]; + const offsetEnd = offsets[i + 1]; + cffIndex.add(bytes.subarray(offsetStart, offsetEnd)); + } + return { + obj: cffIndex, + endPos: end + }; + } + parseNameIndex(index) { + const names = []; + for (let i = 0, ii = index.count; i < ii; ++i) { + const name = index.get(i); + names.push(bytesToString(name)); + } + return names; + } + parseStringIndex(index) { + const strings = new CFFStrings(); + for (let i = 0, ii = index.count; i < ii; ++i) { + const data = index.get(i); + strings.add(bytesToString(data)); + } + return strings; + } + createDict(Type, dict, strings) { + const cffDict = new Type(strings); + for (const [key, value] of dict) { + cffDict.setByKey(key, value); + } + return cffDict; + } + parseCharString(state, data, localSubrIndex, globalSubrIndex) { + if (!data || state.callDepth > MAX_SUBR_NESTING) { + return false; + } + let stackSize = state.stackSize; + const stack = state.stack; + let length = data.length; + for (let j = 0; j < length;) { + const value = data[j++]; + let validationCommand = null; + if (value === 12) { + const q = data[j++]; + if (q === 0) { + data[j - 2] = 139; + data[j - 1] = 22; + stackSize = 0; + } else { + validationCommand = CharstringValidationData12[q]; + } + } else if (value === 28) { + stack[stackSize] = readInt16(data, j); + j += 2; + stackSize++; + } else if (value === 14) { + if (stackSize >= 4) { + stackSize -= 4; + if (this.seacAnalysisEnabled) { + state.seac = stack.slice(stackSize, stackSize + 4); + return false; + } + } + validationCommand = CharstringValidationData[value]; + } else if (value >= 32 && value <= 246) { + stack[stackSize] = value - 139; + stackSize++; + } else if (value >= 247 && value <= 254) { + stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108; + j++; + stackSize++; + } else if (value === 255) { + stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536; + j += 4; + stackSize++; + } else if (value === 19 || value === 20) { + state.hints += stackSize >> 1; + if (state.hints === 0) { + data.copyWithin(j - 1, j, -1); + j -= 1; + length -= 1; + continue; + } + j += state.hints + 7 >> 3; + stackSize %= 2; + validationCommand = CharstringValidationData[value]; + } else if (value === 10 || value === 29) { + const subrsIndex = value === 10 ? localSubrIndex : globalSubrIndex; + if (!subrsIndex) { + validationCommand = CharstringValidationData[value]; + warn("Missing subrsIndex for " + validationCommand.id); + return false; + } + let bias = 32768; + if (subrsIndex.count < 1240) { + bias = 107; + } else if (subrsIndex.count < 33900) { + bias = 1131; + } + const subrNumber = stack[--stackSize] + bias; + if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) { + validationCommand = CharstringValidationData[value]; + warn("Out of bounds subrIndex for " + validationCommand.id); + return false; + } + state.stackSize = stackSize; + state.callDepth++; + const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex); + if (!valid) { + return false; + } + state.callDepth--; + stackSize = state.stackSize; + continue; + } else if (value === 11) { + state.stackSize = stackSize; + return true; + } else if (value === 0 && j === data.length) { + data[j - 1] = 14; + validationCommand = CharstringValidationData[14]; + } else if (value === 9) { + data.copyWithin(j - 1, j, -1); + j -= 1; + length -= 1; + continue; + } else { + validationCommand = CharstringValidationData[value]; + } + if (validationCommand) { + if (validationCommand.stem) { + state.hints += stackSize >> 1; + if (value === 3 || value === 23) { + state.hasVStems = true; + } else if (state.hasVStems && (value === 1 || value === 18)) { + warn("CFF stem hints are in wrong order"); + data[j - 1] = value === 1 ? 3 : 23; + } + } + if (stackSize < validationCommand.min) { + warn("Not enough parameters for " + validationCommand.id + "; actual: " + stackSize + ", expected: " + validationCommand.min); + if (stackSize === 0) { + data[j - 1] = 14; + return true; + } + return false; + } + if (state.firstStackClearing && validationCommand.stackClearing) { + state.firstStackClearing = false; + stackSize -= validationCommand.min; + if (stackSize >= 2 && validationCommand.stem) { + stackSize %= 2; + } else if (stackSize > 1) { + warn("Found too many parameters for stack-clearing command"); + } + if (stackSize > 0) { + state.width = stack[stackSize - 1]; + } + } + if ("stackDelta" in validationCommand) { + if ("stackFn" in validationCommand) { + validationCommand.stackFn(stack, stackSize); + } + stackSize += validationCommand.stackDelta; + } else if (validationCommand.stackClearing || validationCommand.resetStack) { + stackSize = 0; + } + } + } + if (length < data.length) { + data.fill(14, length); + } + state.stackSize = stackSize; + return true; + } + parseCharStrings({ + charStrings, + localSubrIndex, + globalSubrIndex, + fdSelect, + fdArray, + privateDict + }) { + const seacs = []; + const widths = []; + const count = charStrings.count; + for (let i = 0; i < count; i++) { + const charstring = charStrings.get(i); + const state = { + callDepth: 0, + stackSize: 0, + stack: [], + hints: 0, + firstStackClearing: true, + seac: null, + width: null, + hasVStems: false + }; + let valid = true; + let localSubrToUse = null; + let privateDictToUse = privateDict; + if (fdSelect && fdArray.length) { + const fdIndex = fdSelect.getFDIndex(i); + if (fdIndex === -1) { + warn("Glyph index is not in fd select."); + valid = false; + } + if (fdIndex >= fdArray.length) { + warn("Invalid fd index for glyph index."); + valid = false; + } + if (valid) { + privateDictToUse = fdArray[fdIndex].privateDict; + localSubrToUse = privateDictToUse.subrsIndex; + } + } else if (localSubrIndex) { + localSubrToUse = localSubrIndex; + } + if (valid) { + valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex); + } + if (state.width !== null) { + const nominalWidth = privateDictToUse.getByName("nominalWidthX"); + widths[i] = nominalWidth + state.width; + } else { + const defaultWidth = privateDictToUse.getByName("defaultWidthX"); + widths[i] = defaultWidth; + } + if (state.seac !== null) { + seacs[i] = state.seac; + } + if (!valid) { + charStrings.set(i, new Uint8Array([14])); + } + } + return { + charStrings, + seacs, + widths + }; + } + emptyPrivateDictionary(parentDict) { + const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings); + parentDict.setByKey(18, [0, 0]); + parentDict.privateDict = privateDict; + } + parsePrivateDict(parentDict) { + if (!parentDict.hasName("Private")) { + this.emptyPrivateDictionary(parentDict); + return; + } + const privateOffset = parentDict.getByName("Private"); + if (!Array.isArray(privateOffset) || privateOffset.length !== 2) { + parentDict.removeByName("Private"); + return; + } + const size = privateOffset[0]; + const offset = privateOffset[1]; + if (size === 0 || offset >= this.bytes.length) { + this.emptyPrivateDictionary(parentDict); + return; + } + const privateDictEnd = offset + size; + const dictData = this.bytes.subarray(offset, privateDictEnd); + const dict = this.parseDict(dictData); + const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings); + parentDict.privateDict = privateDict; + if (privateDict.getByName("ExpansionFactor") === 0) { + privateDict.setByName("ExpansionFactor", 0.06); + } + if (!privateDict.getByName("Subrs")) { + return; + } + const subrsOffset = privateDict.getByName("Subrs"); + const relativeOffset = offset + subrsOffset; + if (subrsOffset === 0 || relativeOffset >= this.bytes.length) { + this.emptyPrivateDictionary(parentDict); + return; + } + const subrsIndex = this.parseIndex(relativeOffset); + privateDict.subrsIndex = subrsIndex.obj; + } + parseCharsets(pos, length, strings, cid) { + if (pos === 0) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, ISOAdobeCharset); + } else if (pos === 1) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, ExpertCharset); + } else if (pos === 2) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, ExpertSubsetCharset); + } + const bytes = this.bytes; + const start = pos; + const format = bytes[pos++]; + const charset = [cid ? 0 : ".notdef"]; + let id, count, i; + length -= 1; + switch (format) { + case 0: + for (i = 0; i < length; i++) { + id = bytes[pos++] << 8 | bytes[pos++]; + charset.push(cid ? id : strings.get(id)); + } + break; + case 1: + while (charset.length <= length) { + id = bytes[pos++] << 8 | bytes[pos++]; + count = bytes[pos++]; + for (i = 0; i <= count; i++) { + charset.push(cid ? id++ : strings.get(id++)); + } + } + break; + case 2: + while (charset.length <= length) { + id = bytes[pos++] << 8 | bytes[pos++]; + count = bytes[pos++] << 8 | bytes[pos++]; + for (i = 0; i <= count; i++) { + charset.push(cid ? id++ : strings.get(id++)); + } + } + break; + default: + throw new FormatError("Unknown charset format"); + } + const end = pos; + const raw = bytes.subarray(start, end); + return new CFFCharset(false, format, charset, raw); + } + parseEncoding(pos, properties, strings, charset) { + const encoding = Object.create(null); + const bytes = this.bytes; + let predefined = false; + let format, i, ii; + let raw = null; + function readSupplement() { + const supplementsCount = bytes[pos++]; + for (i = 0; i < supplementsCount; i++) { + const code = bytes[pos++]; + const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); + encoding[code] = charset.indexOf(strings.get(sid)); + } + } + if (pos === 0 || pos === 1) { + predefined = true; + format = pos; + const baseEncoding = pos ? ExpertEncoding : StandardEncoding; + for (i = 0, ii = charset.length; i < ii; i++) { + const index = baseEncoding.indexOf(charset[i]); + if (index !== -1) { + encoding[index] = i; + } + } + } else { + const dataStart = pos; + format = bytes[pos++]; + switch (format & 0x7f) { + case 0: + const glyphsCount = bytes[pos++]; + for (i = 1; i <= glyphsCount; i++) { + encoding[bytes[pos++]] = i; + } + break; + case 1: + const rangesCount = bytes[pos++]; + let gid = 1; + for (i = 0; i < rangesCount; i++) { + const start = bytes[pos++]; + const left = bytes[pos++]; + for (let j = start; j <= start + left; j++) { + encoding[j] = gid++; + } + } + break; + default: + throw new FormatError(`Unknown encoding format: ${format} in CFF`); + } + const dataEnd = pos; + if (format & 0x80) { + bytes[dataStart] &= 0x7f; + readSupplement(); + } + raw = bytes.subarray(dataStart, dataEnd); + } + format &= 0x7f; + return new CFFEncoding(predefined, format, encoding, raw); + } + parseFDSelect(pos, length) { + const bytes = this.bytes; + const format = bytes[pos++]; + const fdSelect = []; + let i; + switch (format) { + case 0: + for (i = 0; i < length; ++i) { + const id = bytes[pos++]; + fdSelect.push(id); + } + break; + case 3: + const rangesCount = bytes[pos++] << 8 | bytes[pos++]; + for (i = 0; i < rangesCount; ++i) { + let first = bytes[pos++] << 8 | bytes[pos++]; + if (i === 0 && first !== 0) { + warn("parseFDSelect: The first range must have a first GID of 0" + " -- trying to recover."); + first = 0; + } + const fdIndex = bytes[pos++]; + const next = bytes[pos] << 8 | bytes[pos + 1]; + for (let j = first; j < next; ++j) { + fdSelect.push(fdIndex); + } + } + pos += 2; + break; + default: + throw new FormatError(`parseFDSelect: Unknown format "${format}".`); + } + if (fdSelect.length !== length) { + throw new FormatError("parseFDSelect: Invalid font data."); + } + return new CFFFDSelect(format, fdSelect); + } +} +class CFF { + header = null; + names = []; + topDict = null; + strings = new CFFStrings(); + globalSubrIndex = null; + encoding = null; + charset = null; + charStrings = null; + fdArray = []; + fdSelect = null; + isCIDFont = false; + charStringCount = 0; + duplicateFirstGlyph() { + if (this.charStrings.count >= 65535) { + warn("Not enough space in charstrings to duplicate first glyph."); + return; + } + const glyphZero = this.charStrings.get(0); + this.charStrings.add(glyphZero); + if (this.isCIDFont) { + this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]); + } + } + hasGlyphId(id) { + if (id < 0 || id >= this.charStrings.count) { + return false; + } + const glyph = this.charStrings.get(id); + return glyph.length > 0; + } +} +class CFFHeader { + constructor(major, minor, hdrSize, offSize) { + this.major = major; + this.minor = minor; + this.hdrSize = hdrSize; + this.offSize = offSize; + } +} +class CFFStrings { + strings = []; + get(index) { + if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) { + return CFFStandardStrings[index]; + } + if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) { + return this.strings[index - NUM_STANDARD_CFF_STRINGS]; + } + return CFFStandardStrings[0]; + } + getSID(str) { + let index = CFFStandardStrings.indexOf(str); + if (index !== -1) { + return index; + } + index = this.strings.indexOf(str); + if (index !== -1) { + return index + NUM_STANDARD_CFF_STRINGS; + } + return -1; + } + add(value) { + this.strings.push(value); + } + get count() { + return this.strings.length; + } +} +class CFFIndex { + objects = []; + length = 0; + add(data) { + this.length += data.length; + this.objects.push(data); + } + set(index, data) { + this.length += data.length - this.objects[index].length; + this.objects[index] = data; + } + get(index) { + return this.objects[index]; + } + get count() { + return this.objects.length; + } +} +class CFFDict { + constructor(tables, strings) { + this.keyToNameMap = tables.keyToNameMap; + this.nameToKeyMap = tables.nameToKeyMap; + this.defaults = tables.defaults; + this.types = tables.types; + this.opcodes = tables.opcodes; + this.order = tables.order; + this.strings = strings; + this.values = Object.create(null); + } + setByKey(key, value) { + if (!(key in this.keyToNameMap)) { + return false; + } + if (value.length === 0) { + return true; + } + for (const val of value) { + if (isNaN(val)) { + warn(`Invalid CFFDict value: "${value}" for key "${key}".`); + return true; + } + } + const type = this.types[key]; + if (type === "num" || type === "sid" || type === "offset") { + value = value[0]; + } + this.values[key] = value; + return true; + } + setByName(name, value) { + if (!(name in this.nameToKeyMap)) { + throw new FormatError(`Invalid dictionary name "${name}"`); + } + this.values[this.nameToKeyMap[name]] = value; + } + hasName(name) { + return this.nameToKeyMap[name] in this.values; + } + getByName(name) { + if (!(name in this.nameToKeyMap)) { + throw new FormatError(`Invalid dictionary name ${name}"`); + } + const key = this.nameToKeyMap[name]; + if (!(key in this.values)) { + return this.defaults[key]; + } + return this.values[key]; + } + removeByName(name) { + delete this.values[this.nameToKeyMap[name]]; + } + static createTables(layout) { + const tables = { + keyToNameMap: {}, + nameToKeyMap: {}, + defaults: {}, + types: {}, + opcodes: {}, + order: [] + }; + for (const entry of layout) { + const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0]; + tables.keyToNameMap[key] = entry[1]; + tables.nameToKeyMap[entry[1]] = key; + tables.types[key] = entry[2]; + tables.defaults[key] = entry[3]; + tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]]; + tables.order.push(key); + } + return tables; + } +} +const CFFTopDictLayout = [[[12, 30], "ROS", ["sid", "sid", "num"], null], [[12, 20], "SyntheticBase", "num", null], [0, "version", "sid", null], [1, "Notice", "sid", null], [[12, 0], "Copyright", "sid", null], [2, "FullName", "sid", null], [3, "FamilyName", "sid", null], [4, "Weight", "sid", null], [[12, 1], "isFixedPitch", "num", 0], [[12, 2], "ItalicAngle", "num", 0], [[12, 3], "UnderlinePosition", "num", -100], [[12, 4], "UnderlineThickness", "num", 50], [[12, 5], "PaintType", "num", 0], [[12, 6], "CharstringType", "num", 2], [[12, 7], "FontMatrix", ["num", "num", "num", "num", "num", "num"], [0.001, 0, 0, 0.001, 0, 0]], [13, "UniqueID", "num", null], [5, "FontBBox", ["num", "num", "num", "num"], [0, 0, 0, 0]], [[12, 8], "StrokeWidth", "num", 0], [14, "XUID", "array", null], [15, "charset", "offset", 0], [16, "Encoding", "offset", 0], [17, "CharStrings", "offset", 0], [18, "Private", ["offset", "offset"], null], [[12, 21], "PostScript", "sid", null], [[12, 22], "BaseFontName", "sid", null], [[12, 23], "BaseFontBlend", "delta", null], [[12, 31], "CIDFontVersion", "num", 0], [[12, 32], "CIDFontRevision", "num", 0], [[12, 33], "CIDFontType", "num", 0], [[12, 34], "CIDCount", "num", 8720], [[12, 35], "UIDBase", "num", null], [[12, 37], "FDSelect", "offset", null], [[12, 36], "FDArray", "offset", null], [[12, 38], "FontName", "sid", null]]; +class CFFTopDict extends CFFDict { + static get tables() { + return shadow(this, "tables", this.createTables(CFFTopDictLayout)); + } + constructor(strings) { + super(CFFTopDict.tables, strings); + this.privateDict = null; + } +} +const CFFPrivateDictLayout = [[6, "BlueValues", "delta", null], [7, "OtherBlues", "delta", null], [8, "FamilyBlues", "delta", null], [9, "FamilyOtherBlues", "delta", null], [[12, 9], "BlueScale", "num", 0.039625], [[12, 10], "BlueShift", "num", 7], [[12, 11], "BlueFuzz", "num", 1], [10, "StdHW", "num", null], [11, "StdVW", "num", null], [[12, 12], "StemSnapH", "delta", null], [[12, 13], "StemSnapV", "delta", null], [[12, 14], "ForceBold", "num", 0], [[12, 17], "LanguageGroup", "num", 0], [[12, 18], "ExpansionFactor", "num", 0.06], [[12, 19], "initialRandomSeed", "num", 0], [20, "defaultWidthX", "num", 0], [21, "nominalWidthX", "num", 0], [19, "Subrs", "offset", null]]; +class CFFPrivateDict extends CFFDict { + static get tables() { + return shadow(this, "tables", this.createTables(CFFPrivateDictLayout)); + } + constructor(strings) { + super(CFFPrivateDict.tables, strings); + this.subrsIndex = null; + } +} +const CFFCharsetPredefinedTypes = { + ISO_ADOBE: 0, + EXPERT: 1, + EXPERT_SUBSET: 2 +}; +class CFFCharset { + constructor(predefined, format, charset, raw) { + this.predefined = predefined; + this.format = format; + this.charset = charset; + this.raw = raw; + } +} +class CFFEncoding { + constructor(predefined, format, encoding, raw) { + this.predefined = predefined; + this.format = format; + this.encoding = encoding; + this.raw = raw; + } +} +class CFFFDSelect { + constructor(format, fdSelect) { + this.format = format; + this.fdSelect = fdSelect; + } + getFDIndex(glyphIndex) { + if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) { + return -1; + } + return this.fdSelect[glyphIndex]; + } +} +class CFFOffsetTracker { + offsets = Object.create(null); + isTracking(key) { + return key in this.offsets; + } + track(key, location) { + if (key in this.offsets) { + throw new FormatError(`Already tracking location of ${key}`); + } + this.offsets[key] = location; + } + offset(value) { + for (const key in this.offsets) { + this.offsets[key] += value; + } + } + setEntryLocation(key, values, output) { + if (!(key in this.offsets)) { + throw new FormatError(`Not tracking location of ${key}`); + } + const data = output.data; + const dataOffset = this.offsets[key]; + const size = 5; + for (let i = 0, ii = values.length; i < ii; ++i) { + const offset0 = i * size + dataOffset; + const offset1 = offset0 + 1; + const offset2 = offset0 + 2; + const offset3 = offset0 + 3; + const offset4 = offset0 + 4; + if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) { + throw new FormatError("writing to an offset that is not empty"); + } + const value = values[i]; + data[offset0] = 0x1d; + data[offset1] = value >> 24 & 0xff; + data[offset2] = value >> 16 & 0xff; + data[offset3] = value >> 8 & 0xff; + data[offset4] = value & 0xff; + } + } +} +class CFFCompiler { + constructor(cff) { + this.cff = cff; + } + compile() { + const cff = this.cff; + const output = { + data: [], + length: 0, + add(data) { + try { + this.data.push(...data); + } catch { + this.data = this.data.concat(data); + } + this.length = this.data.length; + } + }; + const header = this.compileHeader(cff.header); + output.add(header); + const nameIndex = this.compileNameIndex(cff.names); + output.add(nameIndex); + if (cff.isCIDFont) { + if (cff.topDict.hasName("FontMatrix")) { + const base = cff.topDict.getByName("FontMatrix"); + cff.topDict.removeByName("FontMatrix"); + for (const subDict of cff.fdArray) { + let matrix = base.slice(0); + if (subDict.hasName("FontMatrix")) { + matrix = Util.transform(matrix, subDict.getByName("FontMatrix")); + } + subDict.setByName("FontMatrix", matrix); + } + } + } + const xuid = cff.topDict.getByName("XUID"); + if (xuid?.length > 16) { + cff.topDict.removeByName("XUID"); + } + cff.topDict.setByName("charset", 0); + let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont); + output.add(compiled.output); + const topDictTracker = compiled.trackers[0]; + const stringIndex = this.compileStringIndex(cff.strings.strings); + output.add(stringIndex); + const globalSubrIndex = this.compileIndex(cff.globalSubrIndex); + output.add(globalSubrIndex); + if (cff.encoding && cff.topDict.hasName("Encoding")) { + if (cff.encoding.predefined) { + topDictTracker.setEntryLocation("Encoding", [cff.encoding.format], output); + } else { + const encoding = this.compileEncoding(cff.encoding); + topDictTracker.setEntryLocation("Encoding", [output.length], output); + output.add(encoding); + } + } + const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont); + topDictTracker.setEntryLocation("charset", [output.length], output); + output.add(charset); + const charStrings = this.compileCharStrings(cff.charStrings); + topDictTracker.setEntryLocation("CharStrings", [output.length], output); + output.add(charStrings); + if (cff.isCIDFont) { + topDictTracker.setEntryLocation("FDSelect", [output.length], output); + const fdSelect = this.compileFDSelect(cff.fdSelect); + output.add(fdSelect); + compiled = this.compileTopDicts(cff.fdArray, output.length, true); + topDictTracker.setEntryLocation("FDArray", [output.length], output); + output.add(compiled.output); + const fontDictTrackers = compiled.trackers; + this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output); + } + this.compilePrivateDicts([cff.topDict], [topDictTracker], output); + output.add([0]); + return output.data; + } + encodeNumber(value) { + if (Number.isInteger(value)) { + return this.encodeInteger(value); + } + return this.encodeFloat(value); + } + static get EncodeFloatRegExp() { + return shadow(this, "EncodeFloatRegExp", /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/); + } + encodeFloat(num) { + let value = num.toString(); + const m = CFFCompiler.EncodeFloatRegExp.exec(value); + if (m) { + const epsilon = parseFloat("1e" + ((m[2] ? +m[2] : 0) + m[1].length)); + value = (Math.round(num * epsilon) / epsilon).toString(); + } + let nibbles = ""; + let i, ii; + for (i = 0, ii = value.length; i < ii; ++i) { + const a = value[i]; + if (a === "e") { + nibbles += value[++i] === "-" ? "c" : "b"; + } else if (a === ".") { + nibbles += "a"; + } else if (a === "-") { + nibbles += "e"; + } else { + nibbles += a; + } + } + nibbles += nibbles.length & 1 ? "f" : "ff"; + const out = [30]; + for (i = 0, ii = nibbles.length; i < ii; i += 2) { + out.push(parseInt(nibbles.substring(i, i + 2), 16)); + } + return out; + } + encodeInteger(value) { + let code; + if (value >= -107 && value <= 107) { + code = [value + 139]; + } else if (value >= 108 && value <= 1131) { + value -= 108; + code = [(value >> 8) + 247, value & 0xff]; + } else if (value >= -1131 && value <= -108) { + value = -value - 108; + code = [(value >> 8) + 251, value & 0xff]; + } else if (value >= -32768 && value <= 32767) { + code = [0x1c, value >> 8 & 0xff, value & 0xff]; + } else { + code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff]; + } + return code; + } + compileHeader(header) { + return [header.major, header.minor, 4, header.offSize]; + } + compileNameIndex(names) { + const nameIndex = new CFFIndex(); + for (const name of names) { + const length = Math.min(name.length, 127); + let sanitizedName = new Array(length); + for (let j = 0; j < length; j++) { + let char = name[j]; + if (char < "!" || char > "~" || char === "[" || char === "]" || char === "(" || char === ")" || char === "{" || char === "}" || char === "<" || char === ">" || char === "/" || char === "%") { + char = "_"; + } + sanitizedName[j] = char; + } + sanitizedName = sanitizedName.join(""); + if (sanitizedName === "") { + sanitizedName = "Bad_Font_Name"; + } + nameIndex.add(stringToBytes(sanitizedName)); + } + return this.compileIndex(nameIndex); + } + compileTopDicts(dicts, length, removeCidKeys) { + const fontDictTrackers = []; + let fdArrayIndex = new CFFIndex(); + for (const fontDict of dicts) { + if (removeCidKeys) { + fontDict.removeByName("CIDFontVersion"); + fontDict.removeByName("CIDFontRevision"); + fontDict.removeByName("CIDFontType"); + fontDict.removeByName("CIDCount"); + fontDict.removeByName("UIDBase"); + } + const fontDictTracker = new CFFOffsetTracker(); + const fontDictData = this.compileDict(fontDict, fontDictTracker); + fontDictTrackers.push(fontDictTracker); + fdArrayIndex.add(fontDictData); + fontDictTracker.offset(length); + } + fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers); + return { + trackers: fontDictTrackers, + output: fdArrayIndex + }; + } + compilePrivateDicts(dicts, trackers, output) { + for (let i = 0, ii = dicts.length; i < ii; ++i) { + const fontDict = dicts[i]; + const privateDict = fontDict.privateDict; + if (!privateDict || !fontDict.hasName("Private")) { + throw new FormatError("There must be a private dictionary."); + } + const privateDictTracker = new CFFOffsetTracker(); + const privateDictData = this.compileDict(privateDict, privateDictTracker); + let outputLength = output.length; + privateDictTracker.offset(outputLength); + if (!privateDictData.length) { + outputLength = 0; + } + trackers[i].setEntryLocation("Private", [privateDictData.length, outputLength], output); + output.add(privateDictData); + if (privateDict.subrsIndex && privateDict.hasName("Subrs")) { + const subrs = this.compileIndex(privateDict.subrsIndex); + privateDictTracker.setEntryLocation("Subrs", [privateDictData.length], output); + output.add(subrs); + } + } + } + compileDict(dict, offsetTracker) { + const out = []; + for (const key of dict.order) { + if (!(key in dict.values)) { + continue; + } + let values = dict.values[key]; + let types = dict.types[key]; + if (!Array.isArray(types)) { + types = [types]; + } + if (!Array.isArray(values)) { + values = [values]; + } + if (values.length === 0) { + continue; + } + for (let j = 0, jj = types.length; j < jj; ++j) { + const type = types[j]; + const value = values[j]; + switch (type) { + case "num": + case "sid": + out.push(...this.encodeNumber(value)); + break; + case "offset": + const name = dict.keyToNameMap[key]; + if (!offsetTracker.isTracking(name)) { + offsetTracker.track(name, out.length); + } + out.push(0x1d, 0, 0, 0, 0); + break; + case "array": + case "delta": + out.push(...this.encodeNumber(value)); + for (let k = 1, kk = values.length; k < kk; ++k) { + out.push(...this.encodeNumber(values[k])); + } + break; + default: + throw new FormatError(`Unknown data type of ${type}`); + } + } + out.push(...dict.opcodes[key]); + } + return out; + } + compileStringIndex(strings) { + const stringIndex = new CFFIndex(); + for (const string of strings) { + stringIndex.add(stringToBytes(string)); + } + return this.compileIndex(stringIndex); + } + compileCharStrings(charStrings) { + const charStringsIndex = new CFFIndex(); + for (let i = 0; i < charStrings.count; i++) { + const glyph = charStrings.get(i); + if (glyph.length === 0) { + charStringsIndex.add(new Uint8Array([0x8b, 0x0e])); + continue; + } + charStringsIndex.add(glyph); + } + return this.compileIndex(charStringsIndex); + } + compileCharset(charset, numGlyphs, strings, isCIDFont) { + let out; + const numGlyphsLessNotDef = numGlyphs - 1; + if (isCIDFont) { + const nLeft = numGlyphsLessNotDef - 1; + out = new Uint8Array([2, 0, 1, nLeft >> 8 & 0xff, nLeft & 0xff]); + } else { + const length = 1 + numGlyphsLessNotDef * 2; + out = new Uint8Array(length); + out[0] = 0; + let charsetIndex = 0; + const numCharsets = charset.charset.length; + let warned = false; + for (let i = 1; i < out.length; i += 2) { + let sid = 0; + if (charsetIndex < numCharsets) { + const name = charset.charset[charsetIndex++]; + sid = strings.getSID(name); + if (sid === -1) { + sid = 0; + if (!warned) { + warned = true; + warn(`Couldn't find ${name} in CFF strings`); + } + } + } + out[i] = sid >> 8 & 0xff; + out[i + 1] = sid & 0xff; + } + } + return this.compileTypedArray(out); + } + compileEncoding(encoding) { + return this.compileTypedArray(encoding.raw); + } + compileFDSelect(fdSelect) { + const format = fdSelect.format; + let out, i; + switch (format) { + case 0: + out = new Uint8Array(1 + fdSelect.fdSelect.length); + out[0] = format; + for (i = 0; i < fdSelect.fdSelect.length; i++) { + out[i + 1] = fdSelect.fdSelect[i]; + } + break; + case 3: + const start = 0; + let lastFD = fdSelect.fdSelect[0]; + const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD]; + for (i = 1; i < fdSelect.fdSelect.length; i++) { + const currentFD = fdSelect.fdSelect[i]; + if (currentFD !== lastFD) { + ranges.push(i >> 8 & 0xff, i & 0xff, currentFD); + lastFD = currentFD; + } + } + const numRanges = (ranges.length - 3) / 3; + ranges[1] = numRanges >> 8 & 0xff; + ranges[2] = numRanges & 0xff; + ranges.push(i >> 8 & 0xff, i & 0xff); + out = new Uint8Array(ranges); + break; + } + return this.compileTypedArray(out); + } + compileTypedArray(data) { + return Array.from(data); + } + compileIndex(index, trackers = []) { + const objects = index.objects; + const count = objects.length; + if (count === 0) { + return [0, 0]; + } + const data = [count >> 8 & 0xff, count & 0xff]; + let lastOffset = 1, + i; + for (i = 0; i < count; ++i) { + lastOffset += objects[i].length; + } + let offsetSize; + if (lastOffset < 0x100) { + offsetSize = 1; + } else if (lastOffset < 0x10000) { + offsetSize = 2; + } else if (lastOffset < 0x1000000) { + offsetSize = 3; + } else { + offsetSize = 4; + } + data.push(offsetSize); + let relativeOffset = 1; + for (i = 0; i < count + 1; i++) { + if (offsetSize === 1) { + data.push(relativeOffset & 0xff); + } else if (offsetSize === 2) { + data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff); + } else if (offsetSize === 3) { + data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff); + } else { + data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff); + } + if (objects[i]) { + relativeOffset += objects[i].length; + } + } + for (i = 0; i < count; i++) { + if (trackers[i]) { + trackers[i].offset(data.length); + } + data.push(...objects[i]); + } + return data; + } +} + +;// ./src/core/standard_fonts.js + + +const getStdFontMap = getLookupTableFactory(function (t) { + t["Times-Roman"] = "Times-Roman"; + t.Helvetica = "Helvetica"; + t.Courier = "Courier"; + t.Symbol = "Symbol"; + t["Times-Bold"] = "Times-Bold"; + t["Helvetica-Bold"] = "Helvetica-Bold"; + t["Courier-Bold"] = "Courier-Bold"; + t.ZapfDingbats = "ZapfDingbats"; + t["Times-Italic"] = "Times-Italic"; + t["Helvetica-Oblique"] = "Helvetica-Oblique"; + t["Courier-Oblique"] = "Courier-Oblique"; + t["Times-BoldItalic"] = "Times-BoldItalic"; + t["Helvetica-BoldOblique"] = "Helvetica-BoldOblique"; + t["Courier-BoldOblique"] = "Courier-BoldOblique"; + t.ArialNarrow = "Helvetica"; + t["ArialNarrow-Bold"] = "Helvetica-Bold"; + t["ArialNarrow-BoldItalic"] = "Helvetica-BoldOblique"; + t["ArialNarrow-Italic"] = "Helvetica-Oblique"; + t.ArialBlack = "Helvetica"; + t["ArialBlack-Bold"] = "Helvetica-Bold"; + t["ArialBlack-BoldItalic"] = "Helvetica-BoldOblique"; + t["ArialBlack-Italic"] = "Helvetica-Oblique"; + t["Arial-Black"] = "Helvetica"; + t["Arial-Black-Bold"] = "Helvetica-Bold"; + t["Arial-Black-BoldItalic"] = "Helvetica-BoldOblique"; + t["Arial-Black-Italic"] = "Helvetica-Oblique"; + t.Arial = "Helvetica"; + t["Arial-Bold"] = "Helvetica-Bold"; + t["Arial-BoldItalic"] = "Helvetica-BoldOblique"; + t["Arial-Italic"] = "Helvetica-Oblique"; + t.ArialMT = "Helvetica"; + t["Arial-BoldItalicMT"] = "Helvetica-BoldOblique"; + t["Arial-BoldMT"] = "Helvetica-Bold"; + t["Arial-ItalicMT"] = "Helvetica-Oblique"; + t["Arial-BoldItalicMT-BoldItalic"] = "Helvetica-BoldOblique"; + t["Arial-BoldMT-Bold"] = "Helvetica-Bold"; + t["Arial-ItalicMT-Italic"] = "Helvetica-Oblique"; + t.ArialUnicodeMS = "Helvetica"; + t["ArialUnicodeMS-Bold"] = "Helvetica-Bold"; + t["ArialUnicodeMS-BoldItalic"] = "Helvetica-BoldOblique"; + t["ArialUnicodeMS-Italic"] = "Helvetica-Oblique"; + t["Courier-BoldItalic"] = "Courier-BoldOblique"; + t["Courier-Italic"] = "Courier-Oblique"; + t.CourierNew = "Courier"; + t["CourierNew-Bold"] = "Courier-Bold"; + t["CourierNew-BoldItalic"] = "Courier-BoldOblique"; + t["CourierNew-Italic"] = "Courier-Oblique"; + t["CourierNewPS-BoldItalicMT"] = "Courier-BoldOblique"; + t["CourierNewPS-BoldMT"] = "Courier-Bold"; + t["CourierNewPS-ItalicMT"] = "Courier-Oblique"; + t.CourierNewPSMT = "Courier"; + t["Helvetica-BoldItalic"] = "Helvetica-BoldOblique"; + t["Helvetica-Italic"] = "Helvetica-Oblique"; + t["HelveticaLTStd-Bold"] = "Helvetica-Bold"; + t["Symbol-Bold"] = "Symbol"; + t["Symbol-BoldItalic"] = "Symbol"; + t["Symbol-Italic"] = "Symbol"; + t.TimesNewRoman = "Times-Roman"; + t["TimesNewRoman-Bold"] = "Times-Bold"; + t["TimesNewRoman-BoldItalic"] = "Times-BoldItalic"; + t["TimesNewRoman-Italic"] = "Times-Italic"; + t.TimesNewRomanPS = "Times-Roman"; + t["TimesNewRomanPS-Bold"] = "Times-Bold"; + t["TimesNewRomanPS-BoldItalic"] = "Times-BoldItalic"; + t["TimesNewRomanPS-BoldItalicMT"] = "Times-BoldItalic"; + t["TimesNewRomanPS-BoldMT"] = "Times-Bold"; + t["TimesNewRomanPS-Italic"] = "Times-Italic"; + t["TimesNewRomanPS-ItalicMT"] = "Times-Italic"; + t.TimesNewRomanPSMT = "Times-Roman"; + t["TimesNewRomanPSMT-Bold"] = "Times-Bold"; + t["TimesNewRomanPSMT-BoldItalic"] = "Times-BoldItalic"; + t["TimesNewRomanPSMT-Italic"] = "Times-Italic"; +}); +const getFontNameToFileMap = getLookupTableFactory(function (t) { + t.Courier = "FoxitFixed.pfb"; + t["Courier-Bold"] = "FoxitFixedBold.pfb"; + t["Courier-BoldOblique"] = "FoxitFixedBoldItalic.pfb"; + t["Courier-Oblique"] = "FoxitFixedItalic.pfb"; + t.Helvetica = "LiberationSans-Regular.ttf"; + t["Helvetica-Bold"] = "LiberationSans-Bold.ttf"; + t["Helvetica-BoldOblique"] = "LiberationSans-BoldItalic.ttf"; + t["Helvetica-Oblique"] = "LiberationSans-Italic.ttf"; + t["Times-Roman"] = "FoxitSerif.pfb"; + t["Times-Bold"] = "FoxitSerifBold.pfb"; + t["Times-BoldItalic"] = "FoxitSerifBoldItalic.pfb"; + t["Times-Italic"] = "FoxitSerifItalic.pfb"; + t.Symbol = "FoxitSymbol.pfb"; + t.ZapfDingbats = "FoxitDingbats.pfb"; + t["LiberationSans-Regular"] = "LiberationSans-Regular.ttf"; + t["LiberationSans-Bold"] = "LiberationSans-Bold.ttf"; + t["LiberationSans-Italic"] = "LiberationSans-Italic.ttf"; + t["LiberationSans-BoldItalic"] = "LiberationSans-BoldItalic.ttf"; +}); +const getNonStdFontMap = getLookupTableFactory(function (t) { + t.Calibri = "Helvetica"; + t["Calibri-Bold"] = "Helvetica-Bold"; + t["Calibri-BoldItalic"] = "Helvetica-BoldOblique"; + t["Calibri-Italic"] = "Helvetica-Oblique"; + t.CenturyGothic = "Helvetica"; + t["CenturyGothic-Bold"] = "Helvetica-Bold"; + t["CenturyGothic-BoldItalic"] = "Helvetica-BoldOblique"; + t["CenturyGothic-Italic"] = "Helvetica-Oblique"; + t.ComicSansMS = "Comic Sans MS"; + t["ComicSansMS-Bold"] = "Comic Sans MS-Bold"; + t["ComicSansMS-BoldItalic"] = "Comic Sans MS-BoldItalic"; + t["ComicSansMS-Italic"] = "Comic Sans MS-Italic"; + t.GillSansMT = "Helvetica"; + t["GillSansMT-Bold"] = "Helvetica-Bold"; + t["GillSansMT-BoldItalic"] = "Helvetica-BoldOblique"; + t["GillSansMT-Italic"] = "Helvetica-Oblique"; + t.Impact = "Helvetica"; + t["ItcSymbol-Bold"] = "Helvetica-Bold"; + t["ItcSymbol-BoldItalic"] = "Helvetica-BoldOblique"; + t["ItcSymbol-Book"] = "Helvetica"; + t["ItcSymbol-BookItalic"] = "Helvetica-Oblique"; + t["ItcSymbol-Medium"] = "Helvetica"; + t["ItcSymbol-MediumItalic"] = "Helvetica-Oblique"; + t.LucidaConsole = "Courier"; + t["LucidaConsole-Bold"] = "Courier-Bold"; + t["LucidaConsole-BoldItalic"] = "Courier-BoldOblique"; + t["LucidaConsole-Italic"] = "Courier-Oblique"; + t["LucidaSans-Demi"] = "Helvetica-Bold"; + t["MS-Gothic"] = "MS Gothic"; + t["MS-Gothic-Bold"] = "MS Gothic-Bold"; + t["MS-Gothic-BoldItalic"] = "MS Gothic-BoldItalic"; + t["MS-Gothic-Italic"] = "MS Gothic-Italic"; + t["MS-Mincho"] = "MS Mincho"; + t["MS-Mincho-Bold"] = "MS Mincho-Bold"; + t["MS-Mincho-BoldItalic"] = "MS Mincho-BoldItalic"; + t["MS-Mincho-Italic"] = "MS Mincho-Italic"; + t["MS-PGothic"] = "MS PGothic"; + t["MS-PGothic-Bold"] = "MS PGothic-Bold"; + t["MS-PGothic-BoldItalic"] = "MS PGothic-BoldItalic"; + t["MS-PGothic-Italic"] = "MS PGothic-Italic"; + t["MS-PMincho"] = "MS PMincho"; + t["MS-PMincho-Bold"] = "MS PMincho-Bold"; + t["MS-PMincho-BoldItalic"] = "MS PMincho-BoldItalic"; + t["MS-PMincho-Italic"] = "MS PMincho-Italic"; + t.NuptialScript = "Times-Italic"; + t.SegoeUISymbol = "Helvetica"; +}); +const getSerifFonts = getLookupTableFactory(function (t) { + t["Adobe Jenson"] = true; + t["Adobe Text"] = true; + t.Albertus = true; + t.Aldus = true; + t.Alexandria = true; + t.Algerian = true; + t["American Typewriter"] = true; + t.Antiqua = true; + t.Apex = true; + t.Arno = true; + t.Aster = true; + t.Aurora = true; + t.Baskerville = true; + t.Bell = true; + t.Bembo = true; + t["Bembo Schoolbook"] = true; + t.Benguiat = true; + t["Berkeley Old Style"] = true; + t["Bernhard Modern"] = true; + t["Berthold City"] = true; + t.Bodoni = true; + t["Bauer Bodoni"] = true; + t["Book Antiqua"] = true; + t.Bookman = true; + t["Bordeaux Roman"] = true; + t["Californian FB"] = true; + t.Calisto = true; + t.Calvert = true; + t.Capitals = true; + t.Cambria = true; + t.Cartier = true; + t.Caslon = true; + t.Catull = true; + t.Centaur = true; + t["Century Old Style"] = true; + t["Century Schoolbook"] = true; + t.Chaparral = true; + t["Charis SIL"] = true; + t.Cheltenham = true; + t["Cholla Slab"] = true; + t.Clarendon = true; + t.Clearface = true; + t.Cochin = true; + t.Colonna = true; + t["Computer Modern"] = true; + t["Concrete Roman"] = true; + t.Constantia = true; + t["Cooper Black"] = true; + t.Corona = true; + t.Ecotype = true; + t.Egyptienne = true; + t.Elephant = true; + t.Excelsior = true; + t.Fairfield = true; + t["FF Scala"] = true; + t.Folkard = true; + t.Footlight = true; + t.FreeSerif = true; + t["Friz Quadrata"] = true; + t.Garamond = true; + t.Gentium = true; + t.Georgia = true; + t.Gloucester = true; + t["Goudy Old Style"] = true; + t["Goudy Schoolbook"] = true; + t["Goudy Pro Font"] = true; + t.Granjon = true; + t["Guardian Egyptian"] = true; + t.Heather = true; + t.Hercules = true; + t["High Tower Text"] = true; + t.Hiroshige = true; + t["Hoefler Text"] = true; + t["Humana Serif"] = true; + t.Imprint = true; + t["Ionic No. 5"] = true; + t.Janson = true; + t.Joanna = true; + t.Korinna = true; + t.Lexicon = true; + t.LiberationSerif = true; + t["Liberation Serif"] = true; + t["Linux Libertine"] = true; + t.Literaturnaya = true; + t.Lucida = true; + t["Lucida Bright"] = true; + t.Melior = true; + t.Memphis = true; + t.Miller = true; + t.Minion = true; + t.Modern = true; + t["Mona Lisa"] = true; + t["Mrs Eaves"] = true; + t["MS Serif"] = true; + t["Museo Slab"] = true; + t["New York"] = true; + t["Nimbus Roman"] = true; + t["NPS Rawlinson Roadway"] = true; + t.NuptialScript = true; + t.Palatino = true; + t.Perpetua = true; + t.Plantin = true; + t["Plantin Schoolbook"] = true; + t.Playbill = true; + t["Poor Richard"] = true; + t["Rawlinson Roadway"] = true; + t.Renault = true; + t.Requiem = true; + t.Rockwell = true; + t.Roman = true; + t["Rotis Serif"] = true; + t.Sabon = true; + t.Scala = true; + t.Seagull = true; + t.Sistina = true; + t.Souvenir = true; + t.STIX = true; + t["Stone Informal"] = true; + t["Stone Serif"] = true; + t.Sylfaen = true; + t.Times = true; + t.Trajan = true; + t["Trinité"] = true; + t["Trump Mediaeval"] = true; + t.Utopia = true; + t["Vale Type"] = true; + t["Bitstream Vera"] = true; + t["Vera Serif"] = true; + t.Versailles = true; + t.Wanted = true; + t.Weiss = true; + t["Wide Latin"] = true; + t.Windsor = true; + t.XITS = true; +}); +const getSymbolsFonts = getLookupTableFactory(function (t) { + t.Dingbats = true; + t.Symbol = true; + t.ZapfDingbats = true; + t.Wingdings = true; + t["Wingdings-Bold"] = true; + t["Wingdings-Regular"] = true; +}); +const getGlyphMapForStandardFonts = getLookupTableFactory(function (t) { + t[2] = 10; + t[3] = 32; + t[4] = 33; + t[5] = 34; + t[6] = 35; + t[7] = 36; + t[8] = 37; + t[9] = 38; + t[10] = 39; + t[11] = 40; + t[12] = 41; + t[13] = 42; + t[14] = 43; + t[15] = 44; + t[16] = 45; + t[17] = 46; + t[18] = 47; + t[19] = 48; + t[20] = 49; + t[21] = 50; + t[22] = 51; + t[23] = 52; + t[24] = 53; + t[25] = 54; + t[26] = 55; + t[27] = 56; + t[28] = 57; + t[29] = 58; + t[30] = 894; + t[31] = 60; + t[32] = 61; + t[33] = 62; + t[34] = 63; + t[35] = 64; + t[36] = 65; + t[37] = 66; + t[38] = 67; + t[39] = 68; + t[40] = 69; + t[41] = 70; + t[42] = 71; + t[43] = 72; + t[44] = 73; + t[45] = 74; + t[46] = 75; + t[47] = 76; + t[48] = 77; + t[49] = 78; + t[50] = 79; + t[51] = 80; + t[52] = 81; + t[53] = 82; + t[54] = 83; + t[55] = 84; + t[56] = 85; + t[57] = 86; + t[58] = 87; + t[59] = 88; + t[60] = 89; + t[61] = 90; + t[62] = 91; + t[63] = 92; + t[64] = 93; + t[65] = 94; + t[66] = 95; + t[67] = 96; + t[68] = 97; + t[69] = 98; + t[70] = 99; + t[71] = 100; + t[72] = 101; + t[73] = 102; + t[74] = 103; + t[75] = 104; + t[76] = 105; + t[77] = 106; + t[78] = 107; + t[79] = 108; + t[80] = 109; + t[81] = 110; + t[82] = 111; + t[83] = 112; + t[84] = 113; + t[85] = 114; + t[86] = 115; + t[87] = 116; + t[88] = 117; + t[89] = 118; + t[90] = 119; + t[91] = 120; + t[92] = 121; + t[93] = 122; + t[94] = 123; + t[95] = 124; + t[96] = 125; + t[97] = 126; + t[98] = 196; + t[99] = 197; + t[100] = 199; + t[101] = 201; + t[102] = 209; + t[103] = 214; + t[104] = 220; + t[105] = 225; + t[106] = 224; + t[107] = 226; + t[108] = 228; + t[109] = 227; + t[110] = 229; + t[111] = 231; + t[112] = 233; + t[113] = 232; + t[114] = 234; + t[115] = 235; + t[116] = 237; + t[117] = 236; + t[118] = 238; + t[119] = 239; + t[120] = 241; + t[121] = 243; + t[122] = 242; + t[123] = 244; + t[124] = 246; + t[125] = 245; + t[126] = 250; + t[127] = 249; + t[128] = 251; + t[129] = 252; + t[130] = 8224; + t[131] = 176; + t[132] = 162; + t[133] = 163; + t[134] = 167; + t[135] = 8226; + t[136] = 182; + t[137] = 223; + t[138] = 174; + t[139] = 169; + t[140] = 8482; + t[141] = 180; + t[142] = 168; + t[143] = 8800; + t[144] = 198; + t[145] = 216; + t[146] = 8734; + t[147] = 177; + t[148] = 8804; + t[149] = 8805; + t[150] = 165; + t[151] = 181; + t[152] = 8706; + t[153] = 8721; + t[154] = 8719; + t[156] = 8747; + t[157] = 170; + t[158] = 186; + t[159] = 8486; + t[160] = 230; + t[161] = 248; + t[162] = 191; + t[163] = 161; + t[164] = 172; + t[165] = 8730; + t[166] = 402; + t[167] = 8776; + t[168] = 8710; + t[169] = 171; + t[170] = 187; + t[171] = 8230; + t[179] = 8220; + t[180] = 8221; + t[181] = 8216; + t[182] = 8217; + t[200] = 193; + t[203] = 205; + t[207] = 211; + t[210] = 218; + t[223] = 711; + t[224] = 321; + t[225] = 322; + t[226] = 352; + t[227] = 353; + t[228] = 381; + t[229] = 382; + t[233] = 221; + t[234] = 253; + t[252] = 263; + t[253] = 268; + t[254] = 269; + t[258] = 258; + t[260] = 260; + t[261] = 261; + t[265] = 280; + t[266] = 281; + t[267] = 282; + t[268] = 283; + t[269] = 313; + t[275] = 323; + t[276] = 324; + t[278] = 328; + t[283] = 344; + t[284] = 345; + t[285] = 346; + t[286] = 347; + t[292] = 367; + t[295] = 377; + t[296] = 378; + t[298] = 380; + t[305] = 963; + t[306] = 964; + t[307] = 966; + t[308] = 8215; + t[309] = 8252; + t[310] = 8319; + t[311] = 8359; + t[312] = 8592; + t[313] = 8593; + t[337] = 9552; + t[493] = 1039; + t[494] = 1040; + t[570] = 1040; + t[571] = 1041; + t[572] = 1042; + t[573] = 1043; + t[574] = 1044; + t[575] = 1045; + t[576] = 1046; + t[577] = 1047; + t[578] = 1048; + t[579] = 1049; + t[580] = 1050; + t[581] = 1051; + t[582] = 1052; + t[583] = 1053; + t[584] = 1054; + t[585] = 1055; + t[586] = 1056; + t[587] = 1057; + t[588] = 1058; + t[589] = 1059; + t[590] = 1060; + t[591] = 1061; + t[592] = 1062; + t[593] = 1063; + t[594] = 1064; + t[595] = 1065; + t[596] = 1066; + t[597] = 1067; + t[598] = 1068; + t[599] = 1069; + t[600] = 1070; + t[601] = 1071; + t[602] = 1072; + t[603] = 1073; + t[604] = 1074; + t[605] = 1075; + t[606] = 1076; + t[607] = 1077; + t[608] = 1078; + t[609] = 1079; + t[610] = 1080; + t[611] = 1081; + t[612] = 1082; + t[613] = 1083; + t[614] = 1084; + t[615] = 1085; + t[616] = 1086; + t[617] = 1087; + t[618] = 1088; + t[619] = 1089; + t[620] = 1090; + t[621] = 1091; + t[622] = 1092; + t[623] = 1093; + t[624] = 1094; + t[625] = 1095; + t[626] = 1096; + t[627] = 1097; + t[628] = 1098; + t[629] = 1099; + t[630] = 1100; + t[631] = 1101; + t[632] = 1102; + t[633] = 1103; + t[672] = 1488; + t[673] = 1489; + t[674] = 1490; + t[675] = 1491; + t[676] = 1492; + t[677] = 1493; + t[678] = 1494; + t[679] = 1495; + t[680] = 1496; + t[681] = 1497; + t[682] = 1498; + t[683] = 1499; + t[684] = 1500; + t[685] = 1501; + t[686] = 1502; + t[687] = 1503; + t[688] = 1504; + t[689] = 1505; + t[690] = 1506; + t[691] = 1507; + t[692] = 1508; + t[693] = 1509; + t[694] = 1510; + t[695] = 1511; + t[696] = 1512; + t[697] = 1513; + t[698] = 1514; + t[705] = 1524; + t[706] = 8362; + t[710] = 64288; + t[711] = 64298; + t[759] = 1617; + t[761] = 1776; + t[763] = 1778; + t[775] = 1652; + t[777] = 1764; + t[778] = 1780; + t[779] = 1781; + t[780] = 1782; + t[782] = 771; + t[783] = 64726; + t[786] = 8363; + t[788] = 8532; + t[790] = 768; + t[791] = 769; + t[792] = 768; + t[795] = 803; + t[797] = 64336; + t[798] = 64337; + t[799] = 64342; + t[800] = 64343; + t[801] = 64344; + t[802] = 64345; + t[803] = 64362; + t[804] = 64363; + t[805] = 64364; + t[2424] = 7821; + t[2425] = 7822; + t[2426] = 7823; + t[2427] = 7824; + t[2428] = 7825; + t[2429] = 7826; + t[2430] = 7827; + t[2433] = 7682; + t[2678] = 8045; + t[2679] = 8046; + t[2830] = 1552; + t[2838] = 686; + t[2840] = 751; + t[2842] = 753; + t[2843] = 754; + t[2844] = 755; + t[2846] = 757; + t[2856] = 767; + t[2857] = 848; + t[2858] = 849; + t[2862] = 853; + t[2863] = 854; + t[2864] = 855; + t[2865] = 861; + t[2866] = 862; + t[2906] = 7460; + t[2908] = 7462; + t[2909] = 7463; + t[2910] = 7464; + t[2912] = 7466; + t[2913] = 7467; + t[2914] = 7468; + t[2916] = 7470; + t[2917] = 7471; + t[2918] = 7472; + t[2920] = 7474; + t[2921] = 7475; + t[2922] = 7476; + t[2924] = 7478; + t[2925] = 7479; + t[2926] = 7480; + t[2928] = 7482; + t[2929] = 7483; + t[2930] = 7484; + t[2932] = 7486; + t[2933] = 7487; + t[2934] = 7488; + t[2936] = 7490; + t[2937] = 7491; + t[2938] = 7492; + t[2940] = 7494; + t[2941] = 7495; + t[2942] = 7496; + t[2944] = 7498; + t[2946] = 7500; + t[2948] = 7502; + t[2950] = 7504; + t[2951] = 7505; + t[2952] = 7506; + t[2954] = 7508; + t[2955] = 7509; + t[2956] = 7510; + t[2958] = 7512; + t[2959] = 7513; + t[2960] = 7514; + t[2962] = 7516; + t[2963] = 7517; + t[2964] = 7518; + t[2966] = 7520; + t[2967] = 7521; + t[2968] = 7522; + t[2970] = 7524; + t[2971] = 7525; + t[2972] = 7526; + t[2974] = 7528; + t[2975] = 7529; + t[2976] = 7530; + t[2978] = 1537; + t[2979] = 1538; + t[2980] = 1539; + t[2982] = 1549; + t[2983] = 1551; + t[2984] = 1552; + t[2986] = 1554; + t[2987] = 1555; + t[2988] = 1556; + t[2990] = 1623; + t[2991] = 1624; + t[2995] = 1775; + t[2999] = 1791; + t[3002] = 64290; + t[3003] = 64291; + t[3004] = 64292; + t[3006] = 64294; + t[3007] = 64295; + t[3008] = 64296; + t[3011] = 1900; + t[3014] = 8223; + t[3015] = 8244; + t[3017] = 7532; + t[3018] = 7533; + t[3019] = 7534; + t[3075] = 7590; + t[3076] = 7591; + t[3079] = 7594; + t[3080] = 7595; + t[3083] = 7598; + t[3084] = 7599; + t[3087] = 7602; + t[3088] = 7603; + t[3091] = 7606; + t[3092] = 7607; + t[3095] = 7610; + t[3096] = 7611; + t[3099] = 7614; + t[3100] = 7615; + t[3103] = 7618; + t[3104] = 7619; + t[3107] = 8337; + t[3108] = 8338; + t[3116] = 1884; + t[3119] = 1885; + t[3120] = 1885; + t[3123] = 1886; + t[3124] = 1886; + t[3127] = 1887; + t[3128] = 1887; + t[3131] = 1888; + t[3132] = 1888; + t[3135] = 1889; + t[3136] = 1889; + t[3139] = 1890; + t[3140] = 1890; + t[3143] = 1891; + t[3144] = 1891; + t[3147] = 1892; + t[3148] = 1892; + t[3153] = 580; + t[3154] = 581; + t[3157] = 584; + t[3158] = 585; + t[3161] = 588; + t[3162] = 589; + t[3165] = 891; + t[3166] = 892; + t[3169] = 1274; + t[3170] = 1275; + t[3173] = 1278; + t[3174] = 1279; + t[3181] = 7622; + t[3182] = 7623; + t[3282] = 11799; + t[3316] = 578; + t[3379] = 42785; + t[3393] = 1159; + t[3416] = 8377; +}); +const getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (t) { + t[227] = 322; + t[264] = 261; + t[291] = 346; +}); +const getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) { + t[1] = 32; + t[4] = 65; + t[5] = 192; + t[6] = 193; + t[9] = 196; + t[17] = 66; + t[18] = 67; + t[21] = 268; + t[24] = 68; + t[28] = 69; + t[29] = 200; + t[30] = 201; + t[32] = 282; + t[38] = 70; + t[39] = 71; + t[44] = 72; + t[47] = 73; + t[48] = 204; + t[49] = 205; + t[58] = 74; + t[60] = 75; + t[62] = 76; + t[68] = 77; + t[69] = 78; + t[75] = 79; + t[76] = 210; + t[80] = 214; + t[87] = 80; + t[89] = 81; + t[90] = 82; + t[92] = 344; + t[94] = 83; + t[97] = 352; + t[100] = 84; + t[104] = 85; + t[109] = 220; + t[115] = 86; + t[116] = 87; + t[121] = 88; + t[122] = 89; + t[124] = 221; + t[127] = 90; + t[129] = 381; + t[258] = 97; + t[259] = 224; + t[260] = 225; + t[263] = 228; + t[268] = 261; + t[271] = 98; + t[272] = 99; + t[273] = 263; + t[275] = 269; + t[282] = 100; + t[286] = 101; + t[287] = 232; + t[288] = 233; + t[290] = 283; + t[295] = 281; + t[296] = 102; + t[336] = 103; + t[346] = 104; + t[349] = 105; + t[350] = 236; + t[351] = 237; + t[361] = 106; + t[364] = 107; + t[367] = 108; + t[371] = 322; + t[373] = 109; + t[374] = 110; + t[381] = 111; + t[382] = 242; + t[383] = 243; + t[386] = 246; + t[393] = 112; + t[395] = 113; + t[396] = 114; + t[398] = 345; + t[400] = 115; + t[401] = 347; + t[403] = 353; + t[410] = 116; + t[437] = 117; + t[442] = 252; + t[448] = 118; + t[449] = 119; + t[454] = 120; + t[455] = 121; + t[457] = 253; + t[460] = 122; + t[462] = 382; + t[463] = 380; + t[853] = 44; + t[855] = 58; + t[856] = 46; + t[876] = 47; + t[878] = 45; + t[882] = 45; + t[894] = 40; + t[895] = 41; + t[896] = 91; + t[897] = 93; + t[923] = 64; + t[940] = 163; + t[1004] = 48; + t[1005] = 49; + t[1006] = 50; + t[1007] = 51; + t[1008] = 52; + t[1009] = 53; + t[1010] = 54; + t[1011] = 55; + t[1012] = 56; + t[1013] = 57; + t[1081] = 37; + t[1085] = 43; + t[1086] = 45; +}); +function getStandardFontName(name) { + const fontName = normalizeFontName(name); + const stdFontMap = getStdFontMap(); + return stdFontMap[fontName]; +} +function isKnownFontName(name) { + const fontName = normalizeFontName(name); + return !!(getStdFontMap()[fontName] || getNonStdFontMap()[fontName] || getSerifFonts()[fontName] || getSymbolsFonts()[fontName]); +} + +;// ./src/core/to_unicode_map.js + +class ToUnicodeMap { + constructor(cmap = []) { + this._map = cmap; + } + get length() { + return this._map.length; + } + forEach(callback) { + for (const charCode in this._map) { + callback(charCode, this._map[charCode].codePointAt(0)); + } + } + has(i) { + return this._map[i] !== undefined; + } + get(i) { + return this._map[i]; + } + charCodeOf(value) { + const map = this._map; + if (map.length <= 0x10000) { + return map.indexOf(value); + } + for (const charCode in map) { + if (map[charCode] === value) { + return charCode | 0; + } + } + return -1; + } + amend(map) { + for (const charCode in map) { + this._map[charCode] = map[charCode]; + } + } +} +class IdentityToUnicodeMap { + constructor(firstChar, lastChar) { + this.firstChar = firstChar; + this.lastChar = lastChar; + } + get length() { + return this.lastChar + 1 - this.firstChar; + } + forEach(callback) { + for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) { + callback(i, i); + } + } + has(i) { + return this.firstChar <= i && i <= this.lastChar; + } + get(i) { + if (this.firstChar <= i && i <= this.lastChar) { + return String.fromCharCode(i); + } + return undefined; + } + charCodeOf(v) { + return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1; + } + amend(map) { + unreachable("Should not call amend()"); + } +} + +;// ./src/core/cff_font.js + + + +class CFFFont { + constructor(file, properties) { + this.properties = properties; + const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED); + this.cff = parser.parse(); + this.cff.duplicateFirstGlyph(); + const compiler = new CFFCompiler(this.cff); + this.seacs = this.cff.seacs; + try { + this.data = compiler.compile(); + } catch { + warn("Failed to compile font " + properties.loadedName); + this.data = file; + } + this._createBuiltInEncoding(); + } + get numGlyphs() { + return this.cff.charStrings.count; + } + getCharset() { + return this.cff.charset.charset; + } + getGlyphMapping() { + const cff = this.cff; + const properties = this.properties; + const { + cidToGidMap, + cMap + } = properties; + const charsets = cff.charset.charset; + let charCodeToGlyphId; + let glyphId; + if (properties.composite) { + let invCidToGidMap; + if (cidToGidMap?.length > 0) { + invCidToGidMap = Object.create(null); + for (let i = 0, ii = cidToGidMap.length; i < ii; i++) { + const gid = cidToGidMap[i]; + if (gid !== undefined) { + invCidToGidMap[gid] = i; + } + } + } + charCodeToGlyphId = Object.create(null); + let charCode; + if (cff.isCIDFont) { + for (glyphId = 0; glyphId < charsets.length; glyphId++) { + const cid = charsets[glyphId]; + charCode = cMap.charCodeOf(cid); + if (invCidToGidMap?.[charCode] !== undefined) { + charCode = invCidToGidMap[charCode]; + } + charCodeToGlyphId[charCode] = glyphId; + } + } else { + for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) { + charCode = cMap.charCodeOf(glyphId); + charCodeToGlyphId[charCode] = glyphId; + } + } + return charCodeToGlyphId; + } + let encoding = cff.encoding ? cff.encoding.encoding : null; + if (properties.isInternalFont) { + encoding = properties.defaultEncoding; + } + charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets); + return charCodeToGlyphId; + } + hasGlyphId(id) { + return this.cff.hasGlyphId(id); + } + _createBuiltInEncoding() { + const { + charset, + encoding + } = this.cff; + if (!charset || !encoding) { + return; + } + const charsets = charset.charset, + encodings = encoding.encoding; + const map = []; + for (const charCode in encodings) { + const glyphId = encodings[charCode]; + if (glyphId >= 0) { + const glyphName = charsets[glyphId]; + if (glyphName) { + map[charCode] = glyphName; + } + } + } + if (map.length > 0) { + this.properties.builtInEncoding = map; + } + } +} + +;// ./src/core/font_renderer.js + + + + + + +function getFloat214(data, offset) { + return readInt16(data, offset) / 16384; +} +function getSubroutineBias(subrs) { + const numSubrs = subrs.length; + let bias = 32768; + if (numSubrs < 1240) { + bias = 107; + } else if (numSubrs < 33900) { + bias = 1131; + } + return bias; +} +function parseCmap(data, start, end) { + const offset = readUint16(data, start + 2) === 1 ? readUint32(data, start + 8) : readUint32(data, start + 16); + const format = readUint16(data, start + offset); + let ranges, p, i; + if (format === 4) { + readUint16(data, start + offset + 2); + const segCount = readUint16(data, start + offset + 6) >> 1; + p = start + offset + 14; + ranges = []; + for (i = 0; i < segCount; i++, p += 2) { + ranges[i] = { + end: readUint16(data, p) + }; + } + p += 2; + for (i = 0; i < segCount; i++, p += 2) { + ranges[i].start = readUint16(data, p); + } + for (i = 0; i < segCount; i++, p += 2) { + ranges[i].idDelta = readUint16(data, p); + } + for (i = 0; i < segCount; i++, p += 2) { + let idOffset = readUint16(data, p); + if (idOffset === 0) { + continue; + } + ranges[i].ids = []; + for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) { + ranges[i].ids[j] = readUint16(data, p + idOffset); + idOffset += 2; + } + } + return ranges; + } else if (format === 12) { + const groups = readUint32(data, start + offset + 12); + p = start + offset + 16; + ranges = []; + for (i = 0; i < groups; i++) { + start = readUint32(data, p); + ranges.push({ + start, + end: readUint32(data, p + 4), + idDelta: readUint32(data, p + 8) - start + }); + p += 12; + } + return ranges; + } + throw new FormatError(`unsupported cmap: ${format}`); +} +function parseCff(data, start, end, seacAnalysisEnabled) { + const properties = {}; + const parser = new CFFParser(new Stream(data, start, end - start), properties, seacAnalysisEnabled); + const cff = parser.parse(); + return { + glyphs: cff.charStrings.objects, + subrs: cff.topDict.privateDict?.subrsIndex?.objects, + gsubrs: cff.globalSubrIndex?.objects, + isCFFCIDFont: cff.isCIDFont, + fdSelect: cff.fdSelect, + fdArray: cff.fdArray + }; +} +function parseGlyfTable(glyf, loca, isGlyphLocationsLong) { + let itemSize, itemDecode; + if (isGlyphLocationsLong) { + itemSize = 4; + itemDecode = readUint32; + } else { + itemSize = 2; + itemDecode = (data, offset) => 2 * readUint16(data, offset); + } + const glyphs = []; + let startOffset = itemDecode(loca, 0); + for (let j = itemSize; j < loca.length; j += itemSize) { + const endOffset = itemDecode(loca, j); + glyphs.push(glyf.subarray(startOffset, endOffset)); + startOffset = endOffset; + } + return glyphs; +} +function lookupCmap(ranges, unicode) { + const code = unicode.codePointAt(0); + let gid = 0, + l = 0, + r = ranges.length - 1; + while (l < r) { + const c = l + r + 1 >> 1; + if (code < ranges[c].start) { + r = c - 1; + } else { + l = c; + } + } + if (ranges[l].start <= code && code <= ranges[l].end) { + gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff; + } + return { + charCode: code, + glyphId: gid + }; +} +function compileGlyf(code, cmds, font) { + function moveTo(x, y) { + if (firstPoint) { + cmds.add(DrawOPS.lineTo, firstPoint); + } + firstPoint = [x, y]; + cmds.add(DrawOPS.moveTo, [x, y]); + } + function lineTo(x, y) { + cmds.add(DrawOPS.lineTo, [x, y]); + } + function quadraticCurveTo(xa, ya, x, y) { + cmds.add(DrawOPS.quadraticCurveTo, [xa, ya, x, y]); + } + let i = 0; + const numberOfContours = readInt16(code, i); + let flags; + let firstPoint = null; + let x = 0, + y = 0; + i += 10; + if (numberOfContours < 0) { + do { + flags = readUint16(code, i); + const glyphIndex = readUint16(code, i + 2); + i += 4; + let arg1, arg2; + if (flags & 0x01) { + if (flags & 0x02) { + arg1 = readInt16(code, i); + arg2 = readInt16(code, i + 2); + } else { + arg1 = readUint16(code, i); + arg2 = readUint16(code, i + 2); + } + i += 4; + } else if (flags & 0x02) { + arg1 = readInt8(code, i++); + arg2 = readInt8(code, i++); + } else { + arg1 = code[i++]; + arg2 = code[i++]; + } + if (flags & 0x02) { + x = arg1; + y = arg2; + } else { + x = 0; + y = 0; + } + let scaleX = 1, + scaleY = 1, + scale01 = 0, + scale10 = 0; + if (flags & 0x08) { + scaleX = scaleY = getFloat214(code, i); + i += 2; + } else if (flags & 0x40) { + scaleX = getFloat214(code, i); + scaleY = getFloat214(code, i + 2); + i += 4; + } else if (flags & 0x80) { + scaleX = getFloat214(code, i); + scale01 = getFloat214(code, i + 2); + scale10 = getFloat214(code, i + 4); + scaleY = getFloat214(code, i + 6); + i += 8; + } + const subglyph = font.glyphs[glyphIndex]; + if (subglyph) { + cmds.save(); + cmds.transform([scaleX, scale01, scale10, scaleY, x, y]); + if (!(flags & 0x02)) {} + compileGlyf(subglyph, cmds, font); + cmds.restore(); + } + } while (flags & 0x20); + } else { + const endPtsOfContours = []; + let j, jj; + for (j = 0; j < numberOfContours; j++) { + endPtsOfContours.push(readUint16(code, i)); + i += 2; + } + const instructionLength = readUint16(code, i); + i += 2 + instructionLength; + const numberOfPoints = endPtsOfContours.at(-1) + 1; + const points = []; + while (points.length < numberOfPoints) { + flags = code[i++]; + let repeat = 1; + if (flags & 0x08) { + repeat += code[i++]; + } + while (repeat-- > 0) { + points.push({ + flags + }); + } + } + for (j = 0; j < numberOfPoints; j++) { + switch (points[j].flags & 0x12) { + case 0x00: + x += readInt16(code, i); + i += 2; + break; + case 0x02: + x -= code[i++]; + break; + case 0x12: + x += code[i++]; + break; + } + points[j].x = x; + } + for (j = 0; j < numberOfPoints; j++) { + switch (points[j].flags & 0x24) { + case 0x00: + y += readInt16(code, i); + i += 2; + break; + case 0x04: + y -= code[i++]; + break; + case 0x24: + y += code[i++]; + break; + } + points[j].y = y; + } + let startPoint = 0; + for (i = 0; i < numberOfContours; i++) { + const endPoint = endPtsOfContours[i]; + const contour = points.slice(startPoint, endPoint + 1); + if (contour[0].flags & 1) { + contour.push(contour[0]); + } else if (contour.at(-1).flags & 1) { + contour.unshift(contour.at(-1)); + } else { + const p = { + flags: 1, + x: (contour[0].x + contour.at(-1).x) / 2, + y: (contour[0].y + contour.at(-1).y) / 2 + }; + contour.unshift(p); + contour.push(p); + } + moveTo(contour[0].x, contour[0].y); + for (j = 1, jj = contour.length; j < jj; j++) { + if (contour[j].flags & 1) { + lineTo(contour[j].x, contour[j].y); + } else if (contour[j + 1].flags & 1) { + quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y); + j++; + } else { + quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2); + } + } + startPoint = endPoint + 1; + } + } +} +function compileCharString(charStringCode, cmds, font, glyphId) { + function moveTo(x, y) { + if (firstPoint) { + cmds.add(DrawOPS.lineTo, firstPoint); + } + firstPoint = [x, y]; + cmds.add(DrawOPS.moveTo, [x, y]); + } + function lineTo(x, y) { + cmds.add(DrawOPS.lineTo, [x, y]); + } + function bezierCurveTo(x1, y1, x2, y2, x, y) { + cmds.add(DrawOPS.curveTo, [x1, y1, x2, y2, x, y]); + } + const stack = []; + let x = 0, + y = 0; + let stems = 0; + let firstPoint = null; + function parse(code) { + let i = 0; + while (i < code.length) { + let stackClean = false; + let v = code[i++]; + let xa, xb, ya, yb, y1, y2, y3, n, subrCode; + switch (v) { + case 1: + stems += stack.length >> 1; + stackClean = true; + break; + case 3: + stems += stack.length >> 1; + stackClean = true; + break; + case 4: + y += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 5: + while (stack.length > 0) { + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + } + break; + case 6: + while (stack.length > 0) { + x += stack.shift(); + lineTo(x, y); + if (stack.length === 0) { + break; + } + y += stack.shift(); + lineTo(x, y); + } + break; + case 7: + while (stack.length > 0) { + y += stack.shift(); + lineTo(x, y); + if (stack.length === 0) { + break; + } + x += stack.shift(); + lineTo(x, y); + } + break; + case 8: + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 10: + n = stack.pop(); + subrCode = null; + if (font.isCFFCIDFont) { + const fdIndex = font.fdSelect.getFDIndex(glyphId); + if (fdIndex >= 0 && fdIndex < font.fdArray.length) { + const fontDict = font.fdArray[fdIndex]; + let subrs; + if (fontDict.privateDict?.subrsIndex) { + subrs = fontDict.privateDict.subrsIndex.objects; + } + if (subrs) { + n += getSubroutineBias(subrs); + subrCode = subrs[n]; + } + } else { + warn("Invalid fd index for glyph index."); + } + } else { + subrCode = font.subrs[n + font.subrsBias]; + } + if (subrCode) { + parse(subrCode); + } + break; + case 11: + return; + case 12: + v = code[i++]; + switch (v) { + case 34: + xa = x + stack.shift(); + xb = xa + stack.shift(); + y1 = y + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y, xb, y1, x, y1); + xa = x + stack.shift(); + xb = xa + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y1, xb, y, x, y); + break; + case 35: + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + stack.pop(); + break; + case 36: + xa = x + stack.shift(); + y1 = y + stack.shift(); + xb = xa + stack.shift(); + y2 = y1 + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y1, xb, y2, x, y2); + xa = x + stack.shift(); + xb = xa + stack.shift(); + y3 = y2 + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y2, xb, y3, x, y); + break; + case 37: + const x0 = x, + y0 = y; + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb; + y = yb; + if (Math.abs(x - x0) > Math.abs(y - y0)) { + x += stack.shift(); + } else { + y += stack.shift(); + } + bezierCurveTo(xa, ya, xb, yb, x, y); + break; + default: + throw new FormatError(`unknown operator: 12 ${v}`); + } + break; + case 14: + if (stack.length >= 4) { + const achar = stack.pop(); + const bchar = stack.pop(); + y = stack.pop(); + x = stack.pop(); + cmds.save(); + cmds.translate(x, y); + let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])); + compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); + cmds.restore(); + cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])); + compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); + } + return; + case 18: + stems += stack.length >> 1; + stackClean = true; + break; + case 19: + stems += stack.length >> 1; + i += stems + 7 >> 3; + stackClean = true; + break; + case 20: + stems += stack.length >> 1; + i += stems + 7 >> 3; + stackClean = true; + break; + case 21: + y += stack.pop(); + x += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 22: + x += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 23: + stems += stack.length >> 1; + stackClean = true; + break; + case 24: + while (stack.length > 2) { + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + break; + case 25: + while (stack.length > 6) { + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + } + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + break; + case 26: + if (stack.length % 2) { + x += stack.shift(); + } + while (stack.length > 0) { + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb; + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 27: + if (stack.length % 2) { + y += stack.shift(); + } + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb; + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 28: + stack.push(readInt16(code, i)); + i += 2; + break; + case 29: + n = stack.pop() + font.gsubrsBias; + subrCode = font.gsubrs[n]; + if (subrCode) { + parse(subrCode); + } + break; + case 30: + while (stack.length > 0) { + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + if (stack.length === 0) { + break; + } + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + y = yb + stack.shift(); + x = xb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 31: + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + y = yb + stack.shift(); + x = xb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + if (stack.length === 0) { + break; + } + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + default: + if (v < 32) { + throw new FormatError(`unknown operator: ${v}`); + } + if (v < 247) { + stack.push(v - 139); + } else if (v < 251) { + stack.push((v - 247) * 256 + code[i++] + 108); + } else if (v < 255) { + stack.push(-(v - 251) * 256 - code[i++] - 108); + } else { + stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536); + i += 4; + } + break; + } + if (stackClean) { + stack.length = 0; + } + } + } + parse(charStringCode); +} +class Commands { + cmds = []; + transformStack = []; + currentTransform = [1, 0, 0, 1, 0, 0]; + add(cmd, args) { + if (args) { + const { + currentTransform + } = this; + for (let i = 0, ii = args.length; i < ii; i += 2) { + Util.applyTransform(args, currentTransform, i); + } + this.cmds.push(cmd, ...args); + } else { + this.cmds.push(cmd); + } + } + transform(transf) { + this.currentTransform = Util.transform(this.currentTransform, transf); + } + translate(x, y) { + this.transform([1, 0, 0, 1, x, y]); + } + save() { + this.transformStack.push(this.currentTransform.slice()); + } + restore() { + this.currentTransform = this.transformStack.pop() || [1, 0, 0, 1, 0, 0]; + } + getPath() { + if (FeatureTest.isFloat16ArraySupported) { + return new Float16Array(this.cmds); + } + return new Float32Array(this.cmds); + } +} +class CompiledFont { + constructor(fontMatrix) { + this.fontMatrix = fontMatrix; + this.compiledGlyphs = Object.create(null); + this.compiledCharCodeToGlyphId = Object.create(null); + } + static get NOOP() { + return shadow(this, "NOOP", FeatureTest.isFloat16ArraySupported ? new Float16Array(0) : new Float32Array(0)); + } + getPathJs(unicode) { + const { + charCode, + glyphId + } = lookupCmap(this.cmap, unicode); + let fn = this.compiledGlyphs[glyphId], + compileEx; + if (fn === undefined) { + try { + fn = this.compileGlyph(this.glyphs[glyphId], glyphId); + } catch (ex) { + fn = CompiledFont.NOOP; + compileEx = ex; + } + this.compiledGlyphs[glyphId] = fn; + } + this.compiledCharCodeToGlyphId[charCode] ??= glyphId; + if (compileEx) { + throw compileEx; + } + return fn; + } + compileGlyph(code, glyphId) { + if (!code?.length || code[0] === 14) { + return CompiledFont.NOOP; + } + let fontMatrix = this.fontMatrix; + if (this.isCFFCIDFont) { + const fdIndex = this.fdSelect.getFDIndex(glyphId); + if (fdIndex >= 0 && fdIndex < this.fdArray.length) { + const fontDict = this.fdArray[fdIndex]; + fontMatrix = fontDict.getByName("FontMatrix") || FONT_IDENTITY_MATRIX; + } else { + warn("Invalid fd index for glyph index."); + } + } + assert(isNumberArray(fontMatrix, 6), "Expected a valid fontMatrix."); + const cmds = new Commands(); + cmds.transform(fontMatrix.slice()); + this.compileGlyphImpl(code, cmds, glyphId); + cmds.add(DrawOPS.closePath); + return cmds.getPath(); + } + compileGlyphImpl() { + unreachable("Children classes should implement this."); + } + hasBuiltPath(unicode) { + const { + charCode, + glyphId + } = lookupCmap(this.cmap, unicode); + return this.compiledGlyphs[glyphId] !== undefined && this.compiledCharCodeToGlyphId[charCode] !== undefined; + } +} +class TrueTypeCompiled extends CompiledFont { + constructor(glyphs, cmap, fontMatrix) { + super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]); + this.glyphs = glyphs; + this.cmap = cmap; + } + compileGlyphImpl(code, cmds) { + compileGlyf(code, cmds, this); + } +} +class Type2Compiled extends CompiledFont { + constructor(cffInfo, cmap, fontMatrix) { + super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]); + this.glyphs = cffInfo.glyphs; + this.gsubrs = cffInfo.gsubrs || []; + this.subrs = cffInfo.subrs || []; + this.cmap = cmap; + this.glyphNameMap = getGlyphsUnicode(); + this.gsubrsBias = getSubroutineBias(this.gsubrs); + this.subrsBias = getSubroutineBias(this.subrs); + this.isCFFCIDFont = cffInfo.isCFFCIDFont; + this.fdSelect = cffInfo.fdSelect; + this.fdArray = cffInfo.fdArray; + } + compileGlyphImpl(code, cmds, glyphId) { + compileCharString(code, cmds, this, glyphId); + } +} +class FontRendererFactory { + static create(font, seacAnalysisEnabled) { + const data = new Uint8Array(font.data); + let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm; + const numTables = readUint16(data, 4); + for (let i = 0, p = 12; i < numTables; i++, p += 16) { + const tag = bytesToString(data.subarray(p, p + 4)); + const offset = readUint32(data, p + 8); + const length = readUint32(data, p + 12); + switch (tag) { + case "cmap": + cmap = parseCmap(data, offset, offset + length); + break; + case "glyf": + glyf = data.subarray(offset, offset + length); + break; + case "loca": + loca = data.subarray(offset, offset + length); + break; + case "head": + unitsPerEm = readUint16(data, offset + 18); + indexToLocFormat = readUint16(data, offset + 50); + break; + case "CFF ": + cff = parseCff(data, offset, offset + length, seacAnalysisEnabled); + break; + } + } + if (glyf) { + const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]; + return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix); + } + return new Type2Compiled(cff, cmap, font.fontMatrix); + } +} + +;// ./src/core/metrics.js + +const getMetrics = getLookupTableFactory(function (t) { + t.Courier = 600; + t["Courier-Bold"] = 600; + t["Courier-BoldOblique"] = 600; + t["Courier-Oblique"] = 600; + t.Helvetica = getLookupTableFactory(function (t) { + t.space = 278; + t.exclam = 278; + t.quotedbl = 355; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 667; + t.quoteright = 222; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 278; + t.semicolon = 278; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 556; + t.at = 1015; + t.A = 667; + t.B = 667; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 500; + t.K = 667; + t.L = 556; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 278; + t.backslash = 278; + t.bracketright = 278; + t.asciicircum = 469; + t.underscore = 556; + t.quoteleft = 222; + t.a = 556; + t.b = 556; + t.c = 500; + t.d = 556; + t.e = 556; + t.f = 278; + t.g = 556; + t.h = 556; + t.i = 222; + t.j = 222; + t.k = 500; + t.l = 222; + t.m = 833; + t.n = 556; + t.o = 556; + t.p = 556; + t.q = 556; + t.r = 333; + t.s = 500; + t.t = 278; + t.u = 556; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 500; + t.braceleft = 334; + t.bar = 260; + t.braceright = 334; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 191; + t.quotedblleft = 333; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 500; + t.fl = 500; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 537; + t.bullet = 350; + t.quotesinglbase = 222; + t.quotedblbase = 333; + t.quotedblright = 333; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 556; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 222; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 556; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 667; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 500; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 500; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 222; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 500; + t.scedilla = 500; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 556; + t.acircumflex = 556; + t.Amacron = 667; + t.rcaron = 333; + t.ccedilla = 500; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 643; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 667; + t.Abreve = 667; + t.multiply = 584; + t.uacute = 556; + t.Tcaron = 611; + t.partialdiff = 476; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 500; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 260; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 333; + t.omacron = 556; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 222; + t.tcaron = 317; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 667; + t.Adieresis = 667; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 222; + t.Oacute = 778; + t.oacute = 556; + t.amacron = 556; + t.sacute = 500; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 556; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 556; + t.igrave = 278; + t.ohungarumlaut = 556; + t.Eogonek = 667; + t.dcroat = 556; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 299; + t.Kcommaaccent = 667; + t.Lacute = 556; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 556; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 556; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 556; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 556; + t.Ccaron = 722; + t.ugrave = 556; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 333; + t.Ntilde = 722; + t.otilde = 556; + t.Rcommaaccent = 722; + t.Lcommaaccent = 556; + t.Atilde = 667; + t.Aogonek = 667; + t.Aring = 667; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 500; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 556; + t.tcommaaccent = 278; + t.logicalnot = 584; + t.odieresis = 556; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 556; + t.eth = 556; + t.zcaron = 500; + t.ncommaaccent = 556; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t["Helvetica-Bold"] = getLookupTableFactory(function (t) { + t.space = 278; + t.exclam = 333; + t.quotedbl = 474; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 722; + t.quoteright = 278; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 333; + t.semicolon = 333; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 611; + t.at = 975; + t.A = 722; + t.B = 722; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 556; + t.K = 722; + t.L = 611; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 584; + t.underscore = 556; + t.quoteleft = 278; + t.a = 556; + t.b = 611; + t.c = 556; + t.d = 611; + t.e = 556; + t.f = 333; + t.g = 611; + t.h = 611; + t.i = 278; + t.j = 278; + t.k = 556; + t.l = 278; + t.m = 889; + t.n = 611; + t.o = 611; + t.p = 611; + t.q = 611; + t.r = 389; + t.s = 556; + t.t = 333; + t.u = 611; + t.v = 556; + t.w = 778; + t.x = 556; + t.y = 556; + t.z = 500; + t.braceleft = 389; + t.bar = 280; + t.braceright = 389; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 238; + t.quotedblleft = 500; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 611; + t.fl = 611; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 556; + t.bullet = 350; + t.quotesinglbase = 278; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 611; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 611; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 722; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 556; + t.scommaaccent = 556; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 611; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 556; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 556; + t.scedilla = 556; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 611; + t.acircumflex = 556; + t.Amacron = 722; + t.rcaron = 389; + t.ccedilla = 556; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 743; + t.Umacron = 722; + t.uring = 611; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 584; + t.uacute = 611; + t.Tcaron = 611; + t.partialdiff = 494; + t.ydieresis = 556; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 556; + t.nacute = 611; + t.umacron = 611; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 280; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 389; + t.omacron = 611; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 278; + t.tcaron = 389; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 278; + t.Oacute = 778; + t.oacute = 611; + t.amacron = 556; + t.sacute = 556; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 611; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 611; + t.igrave = 278; + t.ohungarumlaut = 611; + t.Eogonek = 667; + t.dcroat = 611; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 400; + t.Kcommaaccent = 722; + t.Lacute = 611; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 611; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 611; + t.ntilde = 611; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 611; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 611; + t.Ccaron = 722; + t.ugrave = 611; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 722; + t.otilde = 611; + t.Rcommaaccent = 722; + t.Lcommaaccent = 611; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 556; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 611; + t.tcommaaccent = 333; + t.logicalnot = 584; + t.odieresis = 611; + t.udieresis = 611; + t.notequal = 549; + t.gcommaaccent = 611; + t.eth = 611; + t.zcaron = 500; + t.ncommaaccent = 611; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t["Helvetica-BoldOblique"] = getLookupTableFactory(function (t) { + t.space = 278; + t.exclam = 333; + t.quotedbl = 474; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 722; + t.quoteright = 278; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 333; + t.semicolon = 333; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 611; + t.at = 975; + t.A = 722; + t.B = 722; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 556; + t.K = 722; + t.L = 611; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 584; + t.underscore = 556; + t.quoteleft = 278; + t.a = 556; + t.b = 611; + t.c = 556; + t.d = 611; + t.e = 556; + t.f = 333; + t.g = 611; + t.h = 611; + t.i = 278; + t.j = 278; + t.k = 556; + t.l = 278; + t.m = 889; + t.n = 611; + t.o = 611; + t.p = 611; + t.q = 611; + t.r = 389; + t.s = 556; + t.t = 333; + t.u = 611; + t.v = 556; + t.w = 778; + t.x = 556; + t.y = 556; + t.z = 500; + t.braceleft = 389; + t.bar = 280; + t.braceright = 389; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 238; + t.quotedblleft = 500; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 611; + t.fl = 611; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 556; + t.bullet = 350; + t.quotesinglbase = 278; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 611; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 611; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 722; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 556; + t.scommaaccent = 556; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 611; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 556; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 556; + t.scedilla = 556; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 611; + t.acircumflex = 556; + t.Amacron = 722; + t.rcaron = 389; + t.ccedilla = 556; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 743; + t.Umacron = 722; + t.uring = 611; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 584; + t.uacute = 611; + t.Tcaron = 611; + t.partialdiff = 494; + t.ydieresis = 556; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 556; + t.nacute = 611; + t.umacron = 611; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 280; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 389; + t.omacron = 611; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 278; + t.tcaron = 389; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 278; + t.Oacute = 778; + t.oacute = 611; + t.amacron = 556; + t.sacute = 556; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 611; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 611; + t.igrave = 278; + t.ohungarumlaut = 611; + t.Eogonek = 667; + t.dcroat = 611; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 400; + t.Kcommaaccent = 722; + t.Lacute = 611; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 611; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 611; + t.ntilde = 611; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 611; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 611; + t.Ccaron = 722; + t.ugrave = 611; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 722; + t.otilde = 611; + t.Rcommaaccent = 722; + t.Lcommaaccent = 611; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 556; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 611; + t.tcommaaccent = 333; + t.logicalnot = 584; + t.odieresis = 611; + t.udieresis = 611; + t.notequal = 549; + t.gcommaaccent = 611; + t.eth = 611; + t.zcaron = 500; + t.ncommaaccent = 611; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t["Helvetica-Oblique"] = getLookupTableFactory(function (t) { + t.space = 278; + t.exclam = 278; + t.quotedbl = 355; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 667; + t.quoteright = 222; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 278; + t.semicolon = 278; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 556; + t.at = 1015; + t.A = 667; + t.B = 667; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 500; + t.K = 667; + t.L = 556; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 278; + t.backslash = 278; + t.bracketright = 278; + t.asciicircum = 469; + t.underscore = 556; + t.quoteleft = 222; + t.a = 556; + t.b = 556; + t.c = 500; + t.d = 556; + t.e = 556; + t.f = 278; + t.g = 556; + t.h = 556; + t.i = 222; + t.j = 222; + t.k = 500; + t.l = 222; + t.m = 833; + t.n = 556; + t.o = 556; + t.p = 556; + t.q = 556; + t.r = 333; + t.s = 500; + t.t = 278; + t.u = 556; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 500; + t.braceleft = 334; + t.bar = 260; + t.braceright = 334; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 191; + t.quotedblleft = 333; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 500; + t.fl = 500; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 537; + t.bullet = 350; + t.quotesinglbase = 222; + t.quotedblbase = 333; + t.quotedblright = 333; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 556; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 222; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 556; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 667; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 500; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 500; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 222; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 500; + t.scedilla = 500; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 556; + t.acircumflex = 556; + t.Amacron = 667; + t.rcaron = 333; + t.ccedilla = 500; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 643; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 667; + t.Abreve = 667; + t.multiply = 584; + t.uacute = 556; + t.Tcaron = 611; + t.partialdiff = 476; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 500; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 260; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 333; + t.omacron = 556; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 222; + t.tcaron = 317; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 667; + t.Adieresis = 667; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 222; + t.Oacute = 778; + t.oacute = 556; + t.amacron = 556; + t.sacute = 500; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 556; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 556; + t.igrave = 278; + t.ohungarumlaut = 556; + t.Eogonek = 667; + t.dcroat = 556; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 299; + t.Kcommaaccent = 667; + t.Lacute = 556; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 556; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 556; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 556; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 556; + t.Ccaron = 722; + t.ugrave = 556; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 333; + t.Ntilde = 722; + t.otilde = 556; + t.Rcommaaccent = 722; + t.Lcommaaccent = 556; + t.Atilde = 667; + t.Aogonek = 667; + t.Aring = 667; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 500; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 556; + t.tcommaaccent = 278; + t.logicalnot = 584; + t.odieresis = 556; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 556; + t.eth = 556; + t.zcaron = 500; + t.ncommaaccent = 556; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t.Symbol = getLookupTableFactory(function (t) { + t.space = 250; + t.exclam = 333; + t.universal = 713; + t.numbersign = 500; + t.existential = 549; + t.percent = 833; + t.ampersand = 778; + t.suchthat = 439; + t.parenleft = 333; + t.parenright = 333; + t.asteriskmath = 500; + t.plus = 549; + t.comma = 250; + t.minus = 549; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 278; + t.semicolon = 278; + t.less = 549; + t.equal = 549; + t.greater = 549; + t.question = 444; + t.congruent = 549; + t.Alpha = 722; + t.Beta = 667; + t.Chi = 722; + t.Delta = 612; + t.Epsilon = 611; + t.Phi = 763; + t.Gamma = 603; + t.Eta = 722; + t.Iota = 333; + t.theta1 = 631; + t.Kappa = 722; + t.Lambda = 686; + t.Mu = 889; + t.Nu = 722; + t.Omicron = 722; + t.Pi = 768; + t.Theta = 741; + t.Rho = 556; + t.Sigma = 592; + t.Tau = 611; + t.Upsilon = 690; + t.sigma1 = 439; + t.Omega = 768; + t.Xi = 645; + t.Psi = 795; + t.Zeta = 611; + t.bracketleft = 333; + t.therefore = 863; + t.bracketright = 333; + t.perpendicular = 658; + t.underscore = 500; + t.radicalex = 500; + t.alpha = 631; + t.beta = 549; + t.chi = 549; + t.delta = 494; + t.epsilon = 439; + t.phi = 521; + t.gamma = 411; + t.eta = 603; + t.iota = 329; + t.phi1 = 603; + t.kappa = 549; + t.lambda = 549; + t.mu = 576; + t.nu = 521; + t.omicron = 549; + t.pi = 549; + t.theta = 521; + t.rho = 549; + t.sigma = 603; + t.tau = 439; + t.upsilon = 576; + t.omega1 = 713; + t.omega = 686; + t.xi = 493; + t.psi = 686; + t.zeta = 494; + t.braceleft = 480; + t.bar = 200; + t.braceright = 480; + t.similar = 549; + t.Euro = 750; + t.Upsilon1 = 620; + t.minute = 247; + t.lessequal = 549; + t.fraction = 167; + t.infinity = 713; + t.florin = 500; + t.club = 753; + t.diamond = 753; + t.heart = 753; + t.spade = 753; + t.arrowboth = 1042; + t.arrowleft = 987; + t.arrowup = 603; + t.arrowright = 987; + t.arrowdown = 603; + t.degree = 400; + t.plusminus = 549; + t.second = 411; + t.greaterequal = 549; + t.multiply = 549; + t.proportional = 713; + t.partialdiff = 494; + t.bullet = 460; + t.divide = 549; + t.notequal = 549; + t.equivalence = 549; + t.approxequal = 549; + t.ellipsis = 1000; + t.arrowvertex = 603; + t.arrowhorizex = 1000; + t.carriagereturn = 658; + t.aleph = 823; + t.Ifraktur = 686; + t.Rfraktur = 795; + t.weierstrass = 987; + t.circlemultiply = 768; + t.circleplus = 768; + t.emptyset = 823; + t.intersection = 768; + t.union = 768; + t.propersuperset = 713; + t.reflexsuperset = 713; + t.notsubset = 713; + t.propersubset = 713; + t.reflexsubset = 713; + t.element = 713; + t.notelement = 713; + t.angle = 768; + t.gradient = 713; + t.registerserif = 790; + t.copyrightserif = 790; + t.trademarkserif = 890; + t.product = 823; + t.radical = 549; + t.dotmath = 250; + t.logicalnot = 713; + t.logicaland = 603; + t.logicalor = 603; + t.arrowdblboth = 1042; + t.arrowdblleft = 987; + t.arrowdblup = 603; + t.arrowdblright = 987; + t.arrowdbldown = 603; + t.lozenge = 494; + t.angleleft = 329; + t.registersans = 790; + t.copyrightsans = 790; + t.trademarksans = 786; + t.summation = 713; + t.parenlefttp = 384; + t.parenleftex = 384; + t.parenleftbt = 384; + t.bracketlefttp = 384; + t.bracketleftex = 384; + t.bracketleftbt = 384; + t.bracelefttp = 494; + t.braceleftmid = 494; + t.braceleftbt = 494; + t.braceex = 494; + t.angleright = 329; + t.integral = 274; + t.integraltp = 686; + t.integralex = 686; + t.integralbt = 686; + t.parenrighttp = 384; + t.parenrightex = 384; + t.parenrightbt = 384; + t.bracketrighttp = 384; + t.bracketrightex = 384; + t.bracketrightbt = 384; + t.bracerighttp = 494; + t.bracerightmid = 494; + t.bracerightbt = 494; + t.apple = 790; + }); + t["Times-Roman"] = getLookupTableFactory(function (t) { + t.space = 250; + t.exclam = 333; + t.quotedbl = 408; + t.numbersign = 500; + t.dollar = 500; + t.percent = 833; + t.ampersand = 778; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 564; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 278; + t.semicolon = 278; + t.less = 564; + t.equal = 564; + t.greater = 564; + t.question = 444; + t.at = 921; + t.A = 722; + t.B = 667; + t.C = 667; + t.D = 722; + t.E = 611; + t.F = 556; + t.G = 722; + t.H = 722; + t.I = 333; + t.J = 389; + t.K = 722; + t.L = 611; + t.M = 889; + t.N = 722; + t.O = 722; + t.P = 556; + t.Q = 722; + t.R = 667; + t.S = 556; + t.T = 611; + t.U = 722; + t.V = 722; + t.W = 944; + t.X = 722; + t.Y = 722; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 469; + t.underscore = 500; + t.quoteleft = 333; + t.a = 444; + t.b = 500; + t.c = 444; + t.d = 500; + t.e = 444; + t.f = 333; + t.g = 500; + t.h = 500; + t.i = 278; + t.j = 278; + t.k = 500; + t.l = 278; + t.m = 778; + t.n = 500; + t.o = 500; + t.p = 500; + t.q = 500; + t.r = 333; + t.s = 389; + t.t = 278; + t.u = 500; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 444; + t.braceleft = 480; + t.bar = 200; + t.braceright = 480; + t.asciitilde = 541; + t.exclamdown = 333; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 180; + t.quotedblleft = 444; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 556; + t.fl = 556; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 453; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 444; + t.quotedblright = 444; + t.guillemotright = 500; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 444; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 889; + t.ordfeminine = 276; + t.Lslash = 611; + t.Oslash = 722; + t.OE = 889; + t.ordmasculine = 310; + t.ae = 667; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 722; + t.germandbls = 500; + t.Idieresis = 333; + t.eacute = 444; + t.abreve = 444; + t.uhungarumlaut = 500; + t.ecaron = 444; + t.Ydieresis = 722; + t.divide = 564; + t.Yacute = 722; + t.Acircumflex = 722; + t.aacute = 444; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 444; + t.Uacute = 722; + t.uogonek = 500; + t.Edieresis = 611; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 760; + t.Emacron = 611; + t.ccaron = 444; + t.aring = 444; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 444; + t.Tcommaaccent = 611; + t.Cacute = 667; + t.atilde = 444; + t.Edotaccent = 611; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 667; + t.Gcommaaccent = 722; + t.ucircumflex = 500; + t.acircumflex = 444; + t.Amacron = 722; + t.rcaron = 333; + t.ccedilla = 444; + t.Zdotaccent = 611; + t.Thorn = 556; + t.Omacron = 722; + t.Racute = 667; + t.Sacute = 556; + t.dcaron = 588; + t.Umacron = 722; + t.uring = 500; + t.threesuperior = 300; + t.Ograve = 722; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 564; + t.uacute = 500; + t.Tcaron = 611; + t.partialdiff = 476; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 611; + t.adieresis = 444; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 500; + t.umacron = 500; + t.Ncaron = 722; + t.Iacute = 333; + t.plusminus = 564; + t.brokenbar = 200; + t.registered = 760; + t.Gbreve = 722; + t.Idotaccent = 333; + t.summation = 600; + t.Egrave = 611; + t.racute = 333; + t.omacron = 500; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 667; + t.lcommaaccent = 278; + t.tcaron = 326; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 444; + t.zacute = 444; + t.iogonek = 278; + t.Oacute = 722; + t.oacute = 500; + t.amacron = 444; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 722; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 500; + t.twosuperior = 300; + t.Odieresis = 722; + t.mu = 500; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 611; + t.dcroat = 500; + t.threequarters = 750; + t.Scedilla = 556; + t.lcaron = 344; + t.Kcommaaccent = 722; + t.Lacute = 611; + t.trademark = 980; + t.edotaccent = 444; + t.Igrave = 333; + t.Imacron = 333; + t.Lcaron = 611; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 500; + t.Uhungarumlaut = 722; + t.Eacute = 611; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 556; + t.Scommaaccent = 556; + t.Ohungarumlaut = 722; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 667; + t.ugrave = 500; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 333; + t.Ntilde = 722; + t.otilde = 500; + t.Rcommaaccent = 667; + t.Lcommaaccent = 611; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 722; + t.zdotaccent = 444; + t.Ecaron = 611; + t.Iogonek = 333; + t.kcommaaccent = 500; + t.minus = 564; + t.Icircumflex = 333; + t.ncaron = 500; + t.tcommaaccent = 278; + t.logicalnot = 564; + t.odieresis = 500; + t.udieresis = 500; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 444; + t.ncommaaccent = 500; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t["Times-Bold"] = getLookupTableFactory(function (t) { + t.space = 250; + t.exclam = 333; + t.quotedbl = 555; + t.numbersign = 500; + t.dollar = 500; + t.percent = 1000; + t.ampersand = 833; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 570; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 333; + t.semicolon = 333; + t.less = 570; + t.equal = 570; + t.greater = 570; + t.question = 500; + t.at = 930; + t.A = 722; + t.B = 667; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 778; + t.I = 389; + t.J = 500; + t.K = 778; + t.L = 667; + t.M = 944; + t.N = 722; + t.O = 778; + t.P = 611; + t.Q = 778; + t.R = 722; + t.S = 556; + t.T = 667; + t.U = 722; + t.V = 722; + t.W = 1000; + t.X = 722; + t.Y = 722; + t.Z = 667; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 581; + t.underscore = 500; + t.quoteleft = 333; + t.a = 500; + t.b = 556; + t.c = 444; + t.d = 556; + t.e = 444; + t.f = 333; + t.g = 500; + t.h = 556; + t.i = 278; + t.j = 333; + t.k = 556; + t.l = 278; + t.m = 833; + t.n = 556; + t.o = 500; + t.p = 556; + t.q = 556; + t.r = 444; + t.s = 389; + t.t = 333; + t.u = 556; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 444; + t.braceleft = 394; + t.bar = 220; + t.braceright = 394; + t.asciitilde = 520; + t.exclamdown = 333; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 278; + t.quotedblleft = 500; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 556; + t.fl = 556; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 540; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 500; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 500; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 300; + t.Lslash = 667; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 330; + t.ae = 722; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 722; + t.germandbls = 556; + t.Idieresis = 389; + t.eacute = 444; + t.abreve = 500; + t.uhungarumlaut = 556; + t.ecaron = 444; + t.Ydieresis = 722; + t.divide = 570; + t.Yacute = 722; + t.Acircumflex = 722; + t.aacute = 500; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 500; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 747; + t.Emacron = 667; + t.ccaron = 444; + t.aring = 500; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 500; + t.Tcommaaccent = 667; + t.Cacute = 722; + t.atilde = 500; + t.Edotaccent = 667; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 556; + t.acircumflex = 500; + t.Amacron = 722; + t.rcaron = 444; + t.ccedilla = 444; + t.Zdotaccent = 667; + t.Thorn = 611; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 556; + t.dcaron = 672; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 300; + t.Ograve = 778; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 570; + t.uacute = 556; + t.Tcaron = 667; + t.partialdiff = 494; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 500; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 389; + t.plusminus = 570; + t.brokenbar = 220; + t.registered = 747; + t.Gbreve = 778; + t.Idotaccent = 389; + t.summation = 600; + t.Egrave = 667; + t.racute = 444; + t.omacron = 500; + t.Zacute = 667; + t.Zcaron = 667; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 278; + t.tcaron = 416; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 444; + t.zacute = 444; + t.iogonek = 278; + t.Oacute = 778; + t.oacute = 500; + t.amacron = 500; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 556; + t.twosuperior = 300; + t.Odieresis = 778; + t.mu = 556; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 667; + t.dcroat = 556; + t.threequarters = 750; + t.Scedilla = 556; + t.lcaron = 394; + t.Kcommaaccent = 778; + t.Lacute = 667; + t.trademark = 1000; + t.edotaccent = 444; + t.Igrave = 389; + t.Imacron = 389; + t.Lcaron = 667; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 556; + t.Scommaaccent = 556; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 722; + t.ugrave = 556; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 444; + t.Ntilde = 722; + t.otilde = 500; + t.Rcommaaccent = 722; + t.Lcommaaccent = 667; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 778; + t.zdotaccent = 444; + t.Ecaron = 667; + t.Iogonek = 389; + t.kcommaaccent = 556; + t.minus = 570; + t.Icircumflex = 389; + t.ncaron = 556; + t.tcommaaccent = 333; + t.logicalnot = 570; + t.odieresis = 500; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 444; + t.ncommaaccent = 556; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t["Times-BoldItalic"] = getLookupTableFactory(function (t) { + t.space = 250; + t.exclam = 389; + t.quotedbl = 555; + t.numbersign = 500; + t.dollar = 500; + t.percent = 833; + t.ampersand = 778; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 570; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 333; + t.semicolon = 333; + t.less = 570; + t.equal = 570; + t.greater = 570; + t.question = 500; + t.at = 832; + t.A = 667; + t.B = 667; + t.C = 667; + t.D = 722; + t.E = 667; + t.F = 667; + t.G = 722; + t.H = 778; + t.I = 389; + t.J = 500; + t.K = 667; + t.L = 611; + t.M = 889; + t.N = 722; + t.O = 722; + t.P = 611; + t.Q = 722; + t.R = 667; + t.S = 556; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 889; + t.X = 667; + t.Y = 611; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 570; + t.underscore = 500; + t.quoteleft = 333; + t.a = 500; + t.b = 500; + t.c = 444; + t.d = 500; + t.e = 444; + t.f = 333; + t.g = 500; + t.h = 556; + t.i = 278; + t.j = 278; + t.k = 500; + t.l = 278; + t.m = 778; + t.n = 556; + t.o = 500; + t.p = 500; + t.q = 500; + t.r = 389; + t.s = 389; + t.t = 278; + t.u = 556; + t.v = 444; + t.w = 667; + t.x = 500; + t.y = 444; + t.z = 389; + t.braceleft = 348; + t.bar = 220; + t.braceright = 348; + t.asciitilde = 570; + t.exclamdown = 389; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 278; + t.quotedblleft = 500; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 556; + t.fl = 556; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 500; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 500; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 500; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 944; + t.ordfeminine = 266; + t.Lslash = 611; + t.Oslash = 722; + t.OE = 944; + t.ordmasculine = 300; + t.ae = 722; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 722; + t.germandbls = 500; + t.Idieresis = 389; + t.eacute = 444; + t.abreve = 500; + t.uhungarumlaut = 556; + t.ecaron = 444; + t.Ydieresis = 611; + t.divide = 570; + t.Yacute = 611; + t.Acircumflex = 667; + t.aacute = 500; + t.Ucircumflex = 722; + t.yacute = 444; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 500; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 747; + t.Emacron = 667; + t.ccaron = 444; + t.aring = 500; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 500; + t.Tcommaaccent = 611; + t.Cacute = 667; + t.atilde = 500; + t.Edotaccent = 667; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 667; + t.Gcommaaccent = 722; + t.ucircumflex = 556; + t.acircumflex = 500; + t.Amacron = 667; + t.rcaron = 389; + t.ccedilla = 444; + t.Zdotaccent = 611; + t.Thorn = 611; + t.Omacron = 722; + t.Racute = 667; + t.Sacute = 556; + t.dcaron = 608; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 300; + t.Ograve = 722; + t.Agrave = 667; + t.Abreve = 667; + t.multiply = 570; + t.uacute = 556; + t.Tcaron = 611; + t.partialdiff = 494; + t.ydieresis = 444; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 500; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 389; + t.plusminus = 570; + t.brokenbar = 220; + t.registered = 747; + t.Gbreve = 722; + t.Idotaccent = 389; + t.summation = 600; + t.Egrave = 667; + t.racute = 389; + t.omacron = 500; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 667; + t.lcommaaccent = 278; + t.tcaron = 366; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 667; + t.Adieresis = 667; + t.egrave = 444; + t.zacute = 389; + t.iogonek = 278; + t.Oacute = 722; + t.oacute = 500; + t.amacron = 500; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 722; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 500; + t.twosuperior = 300; + t.Odieresis = 722; + t.mu = 576; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 667; + t.dcroat = 500; + t.threequarters = 750; + t.Scedilla = 556; + t.lcaron = 382; + t.Kcommaaccent = 667; + t.Lacute = 611; + t.trademark = 1000; + t.edotaccent = 444; + t.Igrave = 389; + t.Imacron = 389; + t.Lcaron = 611; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 556; + t.Scommaaccent = 556; + t.Ohungarumlaut = 722; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 667; + t.ugrave = 556; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 722; + t.otilde = 500; + t.Rcommaaccent = 667; + t.Lcommaaccent = 611; + t.Atilde = 667; + t.Aogonek = 667; + t.Aring = 667; + t.Otilde = 722; + t.zdotaccent = 389; + t.Ecaron = 667; + t.Iogonek = 389; + t.kcommaaccent = 500; + t.minus = 606; + t.Icircumflex = 389; + t.ncaron = 556; + t.tcommaaccent = 278; + t.logicalnot = 606; + t.odieresis = 500; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 389; + t.ncommaaccent = 556; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t["Times-Italic"] = getLookupTableFactory(function (t) { + t.space = 250; + t.exclam = 333; + t.quotedbl = 420; + t.numbersign = 500; + t.dollar = 500; + t.percent = 833; + t.ampersand = 778; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 675; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 333; + t.semicolon = 333; + t.less = 675; + t.equal = 675; + t.greater = 675; + t.question = 500; + t.at = 920; + t.A = 611; + t.B = 611; + t.C = 667; + t.D = 722; + t.E = 611; + t.F = 611; + t.G = 722; + t.H = 722; + t.I = 333; + t.J = 444; + t.K = 667; + t.L = 556; + t.M = 833; + t.N = 667; + t.O = 722; + t.P = 611; + t.Q = 722; + t.R = 611; + t.S = 500; + t.T = 556; + t.U = 722; + t.V = 611; + t.W = 833; + t.X = 611; + t.Y = 556; + t.Z = 556; + t.bracketleft = 389; + t.backslash = 278; + t.bracketright = 389; + t.asciicircum = 422; + t.underscore = 500; + t.quoteleft = 333; + t.a = 500; + t.b = 500; + t.c = 444; + t.d = 500; + t.e = 444; + t.f = 278; + t.g = 500; + t.h = 500; + t.i = 278; + t.j = 278; + t.k = 444; + t.l = 278; + t.m = 722; + t.n = 500; + t.o = 500; + t.p = 500; + t.q = 500; + t.r = 389; + t.s = 389; + t.t = 278; + t.u = 500; + t.v = 444; + t.w = 667; + t.x = 444; + t.y = 444; + t.z = 389; + t.braceleft = 400; + t.bar = 275; + t.braceright = 400; + t.asciitilde = 541; + t.exclamdown = 389; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 214; + t.quotedblleft = 556; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 500; + t.fl = 500; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 523; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 556; + t.quotedblright = 556; + t.guillemotright = 500; + t.ellipsis = 889; + t.perthousand = 1000; + t.questiondown = 500; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 889; + t.AE = 889; + t.ordfeminine = 276; + t.Lslash = 556; + t.Oslash = 722; + t.OE = 944; + t.ordmasculine = 310; + t.ae = 667; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 667; + t.germandbls = 500; + t.Idieresis = 333; + t.eacute = 444; + t.abreve = 500; + t.uhungarumlaut = 500; + t.ecaron = 444; + t.Ydieresis = 556; + t.divide = 675; + t.Yacute = 556; + t.Acircumflex = 611; + t.aacute = 500; + t.Ucircumflex = 722; + t.yacute = 444; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 500; + t.Uacute = 722; + t.uogonek = 500; + t.Edieresis = 611; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 760; + t.Emacron = 611; + t.ccaron = 444; + t.aring = 500; + t.Ncommaaccent = 667; + t.lacute = 278; + t.agrave = 500; + t.Tcommaaccent = 556; + t.Cacute = 667; + t.atilde = 500; + t.Edotaccent = 611; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 611; + t.Gcommaaccent = 722; + t.ucircumflex = 500; + t.acircumflex = 500; + t.Amacron = 611; + t.rcaron = 389; + t.ccedilla = 444; + t.Zdotaccent = 556; + t.Thorn = 611; + t.Omacron = 722; + t.Racute = 611; + t.Sacute = 500; + t.dcaron = 544; + t.Umacron = 722; + t.uring = 500; + t.threesuperior = 300; + t.Ograve = 722; + t.Agrave = 611; + t.Abreve = 611; + t.multiply = 675; + t.uacute = 500; + t.Tcaron = 556; + t.partialdiff = 476; + t.ydieresis = 444; + t.Nacute = 667; + t.icircumflex = 278; + t.Ecircumflex = 611; + t.adieresis = 500; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 500; + t.umacron = 500; + t.Ncaron = 667; + t.Iacute = 333; + t.plusminus = 675; + t.brokenbar = 275; + t.registered = 760; + t.Gbreve = 722; + t.Idotaccent = 333; + t.summation = 600; + t.Egrave = 611; + t.racute = 389; + t.omacron = 500; + t.Zacute = 556; + t.Zcaron = 556; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 667; + t.lcommaaccent = 278; + t.tcaron = 300; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 611; + t.Adieresis = 611; + t.egrave = 444; + t.zacute = 389; + t.iogonek = 278; + t.Oacute = 722; + t.oacute = 500; + t.amacron = 500; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 722; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 500; + t.twosuperior = 300; + t.Odieresis = 722; + t.mu = 500; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 611; + t.dcroat = 500; + t.threequarters = 750; + t.Scedilla = 500; + t.lcaron = 300; + t.Kcommaaccent = 667; + t.Lacute = 556; + t.trademark = 980; + t.edotaccent = 444; + t.Igrave = 333; + t.Imacron = 333; + t.Lcaron = 611; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 500; + t.Uhungarumlaut = 722; + t.Eacute = 611; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 500; + t.Scommaaccent = 500; + t.Ohungarumlaut = 722; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 667; + t.ugrave = 500; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 667; + t.otilde = 500; + t.Rcommaaccent = 611; + t.Lcommaaccent = 556; + t.Atilde = 611; + t.Aogonek = 611; + t.Aring = 611; + t.Otilde = 722; + t.zdotaccent = 389; + t.Ecaron = 611; + t.Iogonek = 333; + t.kcommaaccent = 444; + t.minus = 675; + t.Icircumflex = 333; + t.ncaron = 500; + t.tcommaaccent = 278; + t.logicalnot = 675; + t.odieresis = 500; + t.udieresis = 500; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 389; + t.ncommaaccent = 500; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t.ZapfDingbats = getLookupTableFactory(function (t) { + t.space = 278; + t.a1 = 974; + t.a2 = 961; + t.a202 = 974; + t.a3 = 980; + t.a4 = 719; + t.a5 = 789; + t.a119 = 790; + t.a118 = 791; + t.a117 = 690; + t.a11 = 960; + t.a12 = 939; + t.a13 = 549; + t.a14 = 855; + t.a15 = 911; + t.a16 = 933; + t.a105 = 911; + t.a17 = 945; + t.a18 = 974; + t.a19 = 755; + t.a20 = 846; + t.a21 = 762; + t.a22 = 761; + t.a23 = 571; + t.a24 = 677; + t.a25 = 763; + t.a26 = 760; + t.a27 = 759; + t.a28 = 754; + t.a6 = 494; + t.a7 = 552; + t.a8 = 537; + t.a9 = 577; + t.a10 = 692; + t.a29 = 786; + t.a30 = 788; + t.a31 = 788; + t.a32 = 790; + t.a33 = 793; + t.a34 = 794; + t.a35 = 816; + t.a36 = 823; + t.a37 = 789; + t.a38 = 841; + t.a39 = 823; + t.a40 = 833; + t.a41 = 816; + t.a42 = 831; + t.a43 = 923; + t.a44 = 744; + t.a45 = 723; + t.a46 = 749; + t.a47 = 790; + t.a48 = 792; + t.a49 = 695; + t.a50 = 776; + t.a51 = 768; + t.a52 = 792; + t.a53 = 759; + t.a54 = 707; + t.a55 = 708; + t.a56 = 682; + t.a57 = 701; + t.a58 = 826; + t.a59 = 815; + t.a60 = 789; + t.a61 = 789; + t.a62 = 707; + t.a63 = 687; + t.a64 = 696; + t.a65 = 689; + t.a66 = 786; + t.a67 = 787; + t.a68 = 713; + t.a69 = 791; + t.a70 = 785; + t.a71 = 791; + t.a72 = 873; + t.a73 = 761; + t.a74 = 762; + t.a203 = 762; + t.a75 = 759; + t.a204 = 759; + t.a76 = 892; + t.a77 = 892; + t.a78 = 788; + t.a79 = 784; + t.a81 = 438; + t.a82 = 138; + t.a83 = 277; + t.a84 = 415; + t.a97 = 392; + t.a98 = 392; + t.a99 = 668; + t.a100 = 668; + t.a89 = 390; + t.a90 = 390; + t.a93 = 317; + t.a94 = 317; + t.a91 = 276; + t.a92 = 276; + t.a205 = 509; + t.a85 = 509; + t.a206 = 410; + t.a86 = 410; + t.a87 = 234; + t.a88 = 234; + t.a95 = 334; + t.a96 = 334; + t.a101 = 732; + t.a102 = 544; + t.a103 = 544; + t.a104 = 910; + t.a106 = 667; + t.a107 = 760; + t.a108 = 760; + t.a112 = 776; + t.a111 = 595; + t.a110 = 694; + t.a109 = 626; + t.a120 = 788; + t.a121 = 788; + t.a122 = 788; + t.a123 = 788; + t.a124 = 788; + t.a125 = 788; + t.a126 = 788; + t.a127 = 788; + t.a128 = 788; + t.a129 = 788; + t.a130 = 788; + t.a131 = 788; + t.a132 = 788; + t.a133 = 788; + t.a134 = 788; + t.a135 = 788; + t.a136 = 788; + t.a137 = 788; + t.a138 = 788; + t.a139 = 788; + t.a140 = 788; + t.a141 = 788; + t.a142 = 788; + t.a143 = 788; + t.a144 = 788; + t.a145 = 788; + t.a146 = 788; + t.a147 = 788; + t.a148 = 788; + t.a149 = 788; + t.a150 = 788; + t.a151 = 788; + t.a152 = 788; + t.a153 = 788; + t.a154 = 788; + t.a155 = 788; + t.a156 = 788; + t.a157 = 788; + t.a158 = 788; + t.a159 = 788; + t.a160 = 894; + t.a161 = 838; + t.a163 = 1016; + t.a164 = 458; + t.a196 = 748; + t.a165 = 924; + t.a192 = 748; + t.a166 = 918; + t.a167 = 927; + t.a168 = 928; + t.a169 = 928; + t.a170 = 834; + t.a171 = 873; + t.a172 = 828; + t.a173 = 924; + t.a162 = 924; + t.a174 = 917; + t.a175 = 930; + t.a176 = 931; + t.a177 = 463; + t.a178 = 883; + t.a179 = 836; + t.a193 = 836; + t.a180 = 867; + t.a199 = 867; + t.a181 = 696; + t.a200 = 696; + t.a182 = 874; + t.a201 = 874; + t.a183 = 760; + t.a184 = 946; + t.a197 = 771; + t.a185 = 865; + t.a194 = 771; + t.a198 = 888; + t.a186 = 967; + t.a195 = 888; + t.a187 = 831; + t.a188 = 873; + t.a189 = 927; + t.a190 = 970; + t.a191 = 918; + }); +}); +const getFontBasicMetrics = getLookupTableFactory(function (t) { + t.Courier = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: -426 + }; + t["Courier-Bold"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 439 + }; + t["Courier-Oblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426 + }; + t["Courier-BoldOblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426 + }; + t.Helvetica = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 523 + }; + t["Helvetica-Bold"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532 + }; + t["Helvetica-Oblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 523 + }; + t["Helvetica-BoldOblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532 + }; + t["Times-Roman"] = { + ascent: 683, + descent: -217, + capHeight: 662, + xHeight: 450 + }; + t["Times-Bold"] = { + ascent: 683, + descent: -217, + capHeight: 676, + xHeight: 461 + }; + t["Times-Italic"] = { + ascent: 683, + descent: -217, + capHeight: 653, + xHeight: 441 + }; + t["Times-BoldItalic"] = { + ascent: 683, + descent: -217, + capHeight: 669, + xHeight: 462 + }; + t.Symbol = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN + }; + t.ZapfDingbats = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN + }; +}); + +;// ./src/core/glyf.js +const ON_CURVE_POINT = 1 << 0; +const X_SHORT_VECTOR = 1 << 1; +const Y_SHORT_VECTOR = 1 << 2; +const REPEAT_FLAG = 1 << 3; +const X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4; +const Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5; +const OVERLAP_SIMPLE = 1 << 6; +const ARG_1_AND_2_ARE_WORDS = 1 << 0; +const ARGS_ARE_XY_VALUES = 1 << 1; +const WE_HAVE_A_SCALE = 1 << 3; +const MORE_COMPONENTS = 1 << 5; +const WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6; +const WE_HAVE_A_TWO_BY_TWO = 1 << 7; +const WE_HAVE_INSTRUCTIONS = 1 << 8; +class GlyfTable { + constructor({ + glyfTable, + isGlyphLocationsLong, + locaTable, + numGlyphs + }) { + this.glyphs = []; + const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength); + const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength); + const offsetSize = isGlyphLocationsLong ? 4 : 2; + let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0); + let pos = 0; + for (let i = 0; i < numGlyphs; i++) { + pos += offsetSize; + const next = isGlyphLocationsLong ? loca.getUint32(pos) : 2 * loca.getUint16(pos); + if (next === prev) { + this.glyphs.push(new Glyph({})); + continue; + } + const glyph = Glyph.parse(prev, glyf); + this.glyphs.push(glyph); + prev = next; + } + } + getSize() { + return Math.sumPrecise(this.glyphs.map(g => g.getSize() + 3 & ~3)); + } + write() { + const totalSize = this.getSize(); + const glyfTable = new DataView(new ArrayBuffer(totalSize)); + const isLocationLong = totalSize > 0x1fffe; + const offsetSize = isLocationLong ? 4 : 2; + const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize)); + if (isLocationLong) { + locaTable.setUint32(0, 0); + } else { + locaTable.setUint16(0, 0); + } + let pos = 0; + let locaIndex = 0; + for (const glyph of this.glyphs) { + pos += glyph.write(pos, glyfTable); + pos = pos + 3 & ~3; + locaIndex += offsetSize; + if (isLocationLong) { + locaTable.setUint32(locaIndex, pos); + } else { + locaTable.setUint16(locaIndex, pos >> 1); + } + } + return { + isLocationLong, + loca: new Uint8Array(locaTable.buffer), + glyf: new Uint8Array(glyfTable.buffer) + }; + } + scale(factors) { + for (let i = 0, ii = this.glyphs.length; i < ii; i++) { + this.glyphs[i].scale(factors[i]); + } + } +} +class Glyph { + constructor({ + header = null, + simple = null, + composites = null + }) { + this.header = header; + this.simple = simple; + this.composites = composites; + } + static parse(pos, glyf) { + const [read, header] = GlyphHeader.parse(pos, glyf); + pos += read; + if (header.numberOfContours < 0) { + const composites = []; + while (true) { + const [n, composite] = CompositeGlyph.parse(pos, glyf); + pos += n; + composites.push(composite); + if (!(composite.flags & MORE_COMPONENTS)) { + break; + } + } + return new Glyph({ + header, + composites + }); + } + const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours); + return new Glyph({ + header, + simple + }); + } + getSize() { + if (!this.header) { + return 0; + } + const size = this.simple ? this.simple.getSize() : Math.sumPrecise(this.composites.map(c => c.getSize())); + return this.header.getSize() + size; + } + write(pos, buf) { + if (!this.header) { + return 0; + } + const spos = pos; + pos += this.header.write(pos, buf); + if (this.simple) { + pos += this.simple.write(pos, buf); + } else { + for (const composite of this.composites) { + pos += composite.write(pos, buf); + } + } + return pos - spos; + } + scale(factor) { + if (!this.header) { + return; + } + const xMiddle = (this.header.xMin + this.header.xMax) / 2; + this.header.scale(xMiddle, factor); + if (this.simple) { + this.simple.scale(xMiddle, factor); + } else { + for (const composite of this.composites) { + composite.scale(xMiddle, factor); + } + } + } +} +class GlyphHeader { + constructor({ + numberOfContours, + xMin, + yMin, + xMax, + yMax + }) { + this.numberOfContours = numberOfContours; + this.xMin = xMin; + this.yMin = yMin; + this.xMax = xMax; + this.yMax = yMax; + } + static parse(pos, glyf) { + return [10, new GlyphHeader({ + numberOfContours: glyf.getInt16(pos), + xMin: glyf.getInt16(pos + 2), + yMin: glyf.getInt16(pos + 4), + xMax: glyf.getInt16(pos + 6), + yMax: glyf.getInt16(pos + 8) + })]; + } + getSize() { + return 10; + } + write(pos, buf) { + buf.setInt16(pos, this.numberOfContours); + buf.setInt16(pos + 2, this.xMin); + buf.setInt16(pos + 4, this.yMin); + buf.setInt16(pos + 6, this.xMax); + buf.setInt16(pos + 8, this.yMax); + return 10; + } + scale(x, factor) { + this.xMin = Math.round(x + (this.xMin - x) * factor); + this.xMax = Math.round(x + (this.xMax - x) * factor); + } +} +class Contour { + constructor({ + flags, + xCoordinates, + yCoordinates + }) { + this.xCoordinates = xCoordinates; + this.yCoordinates = yCoordinates; + this.flags = flags; + } +} +class SimpleGlyph { + constructor({ + contours, + instructions + }) { + this.contours = contours; + this.instructions = instructions; + } + static parse(pos, glyf, numberOfContours) { + const endPtsOfContours = []; + for (let i = 0; i < numberOfContours; i++) { + const endPt = glyf.getUint16(pos); + pos += 2; + endPtsOfContours.push(endPt); + } + const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1; + const instructionLength = glyf.getUint16(pos); + pos += 2; + const instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength); + pos += instructionLength; + const flags = []; + for (let i = 0; i < numberOfPt; pos++, i++) { + let flag = glyf.getUint8(pos); + flags.push(flag); + if (flag & REPEAT_FLAG) { + const count = glyf.getUint8(++pos); + flag ^= REPEAT_FLAG; + for (let m = 0; m < count; m++) { + flags.push(flag); + } + i += count; + } + } + const allXCoordinates = []; + let xCoordinates = []; + let yCoordinates = []; + let pointFlags = []; + const contours = []; + let endPtsOfContoursIndex = 0; + let lastCoordinate = 0; + for (let i = 0; i < numberOfPt; i++) { + const flag = flags[i]; + if (flag & X_SHORT_VECTOR) { + const x = glyf.getUint8(pos++); + lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x; + xCoordinates.push(lastCoordinate); + } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) { + xCoordinates.push(lastCoordinate); + } else { + lastCoordinate += glyf.getInt16(pos); + pos += 2; + xCoordinates.push(lastCoordinate); + } + if (endPtsOfContours[endPtsOfContoursIndex] === i) { + endPtsOfContoursIndex++; + allXCoordinates.push(xCoordinates); + xCoordinates = []; + } + } + lastCoordinate = 0; + endPtsOfContoursIndex = 0; + for (let i = 0; i < numberOfPt; i++) { + const flag = flags[i]; + if (flag & Y_SHORT_VECTOR) { + const y = glyf.getUint8(pos++); + lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y; + yCoordinates.push(lastCoordinate); + } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) { + yCoordinates.push(lastCoordinate); + } else { + lastCoordinate += glyf.getInt16(pos); + pos += 2; + yCoordinates.push(lastCoordinate); + } + pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE); + if (endPtsOfContours[endPtsOfContoursIndex] === i) { + xCoordinates = allXCoordinates[endPtsOfContoursIndex]; + endPtsOfContoursIndex++; + contours.push(new Contour({ + flags: pointFlags, + xCoordinates, + yCoordinates + })); + yCoordinates = []; + pointFlags = []; + } + } + return new SimpleGlyph({ + contours, + instructions + }); + } + getSize() { + let size = this.contours.length * 2 + 2 + this.instructions.length; + let lastX = 0; + let lastY = 0; + for (const contour of this.contours) { + size += contour.flags.length; + for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { + const x = contour.xCoordinates[i]; + const y = contour.yCoordinates[i]; + let abs = Math.abs(x - lastX); + if (abs > 255) { + size += 2; + } else if (abs > 0) { + size += 1; + } + lastX = x; + abs = Math.abs(y - lastY); + if (abs > 255) { + size += 2; + } else if (abs > 0) { + size += 1; + } + lastY = y; + } + } + return size; + } + write(pos, buf) { + const spos = pos; + const xCoordinates = []; + const yCoordinates = []; + const flags = []; + let lastX = 0; + let lastY = 0; + for (const contour of this.contours) { + for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { + let flag = contour.flags[i]; + const x = contour.xCoordinates[i]; + let delta = x - lastX; + if (delta === 0) { + flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR; + xCoordinates.push(0); + } else { + const abs = Math.abs(delta); + if (abs <= 255) { + flag |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR; + xCoordinates.push(abs); + } else { + xCoordinates.push(delta); + } + } + lastX = x; + const y = contour.yCoordinates[i]; + delta = y - lastY; + if (delta === 0) { + flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR; + yCoordinates.push(0); + } else { + const abs = Math.abs(delta); + if (abs <= 255) { + flag |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR; + yCoordinates.push(abs); + } else { + yCoordinates.push(delta); + } + } + lastY = y; + flags.push(flag); + } + buf.setUint16(pos, xCoordinates.length - 1); + pos += 2; + } + buf.setUint16(pos, this.instructions.length); + pos += 2; + if (this.instructions.length) { + new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos); + pos += this.instructions.length; + } + for (const flag of flags) { + buf.setUint8(pos++, flag); + } + for (let i = 0, ii = xCoordinates.length; i < ii; i++) { + const x = xCoordinates[i]; + const flag = flags[i]; + if (flag & X_SHORT_VECTOR) { + buf.setUint8(pos++, x); + } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) { + buf.setInt16(pos, x); + pos += 2; + } + } + for (let i = 0, ii = yCoordinates.length; i < ii; i++) { + const y = yCoordinates[i]; + const flag = flags[i]; + if (flag & Y_SHORT_VECTOR) { + buf.setUint8(pos++, y); + } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) { + buf.setInt16(pos, y); + pos += 2; + } + } + return pos - spos; + } + scale(x, factor) { + for (const contour of this.contours) { + if (contour.xCoordinates.length === 0) { + continue; + } + for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { + contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor); + } + } + } +} +class CompositeGlyph { + constructor({ + flags, + glyphIndex, + argument1, + argument2, + transf, + instructions + }) { + this.flags = flags; + this.glyphIndex = glyphIndex; + this.argument1 = argument1; + this.argument2 = argument2; + this.transf = transf; + this.instructions = instructions; + } + static parse(pos, glyf) { + const spos = pos; + const transf = []; + let flags = glyf.getUint16(pos); + const glyphIndex = glyf.getUint16(pos + 2); + pos += 4; + let argument1, argument2; + if (flags & ARG_1_AND_2_ARE_WORDS) { + if (flags & ARGS_ARE_XY_VALUES) { + argument1 = glyf.getInt16(pos); + argument2 = glyf.getInt16(pos + 2); + } else { + argument1 = glyf.getUint16(pos); + argument2 = glyf.getUint16(pos + 2); + } + pos += 4; + flags ^= ARG_1_AND_2_ARE_WORDS; + } else { + if (flags & ARGS_ARE_XY_VALUES) { + argument1 = glyf.getInt8(pos); + argument2 = glyf.getInt8(pos + 1); + } else { + argument1 = glyf.getUint8(pos); + argument2 = glyf.getUint8(pos + 1); + } + pos += 2; + } + if (flags & WE_HAVE_A_SCALE) { + transf.push(glyf.getUint16(pos)); + pos += 2; + } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) { + transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2)); + pos += 4; + } else if (flags & WE_HAVE_A_TWO_BY_TWO) { + transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos + 6)); + pos += 8; + } + let instructions = null; + if (flags & WE_HAVE_INSTRUCTIONS) { + const instructionLength = glyf.getUint16(pos); + pos += 2; + instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength); + pos += instructionLength; + } + return [pos - spos, new CompositeGlyph({ + flags, + glyphIndex, + argument1, + argument2, + transf, + instructions + })]; + } + getSize() { + let size = 2 + 2 + this.transf.length * 2; + if (this.flags & WE_HAVE_INSTRUCTIONS) { + size += 2 + this.instructions.length; + } + size += 2; + if (this.flags & 2) { + if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) { + size += 2; + } + } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) { + size += 2; + } + return size; + } + write(pos, buf) { + const spos = pos; + if (this.flags & ARGS_ARE_XY_VALUES) { + if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) { + this.flags |= ARG_1_AND_2_ARE_WORDS; + } + } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) { + this.flags |= ARG_1_AND_2_ARE_WORDS; + } + buf.setUint16(pos, this.flags); + buf.setUint16(pos + 2, this.glyphIndex); + pos += 4; + if (this.flags & ARG_1_AND_2_ARE_WORDS) { + if (this.flags & ARGS_ARE_XY_VALUES) { + buf.setInt16(pos, this.argument1); + buf.setInt16(pos + 2, this.argument2); + } else { + buf.setUint16(pos, this.argument1); + buf.setUint16(pos + 2, this.argument2); + } + pos += 4; + } else { + buf.setUint8(pos, this.argument1); + buf.setUint8(pos + 1, this.argument2); + pos += 2; + } + if (this.flags & WE_HAVE_INSTRUCTIONS) { + buf.setUint16(pos, this.instructions.length); + pos += 2; + if (this.instructions.length) { + new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos); + pos += this.instructions.length; + } + } + return pos - spos; + } + scale(x, factor) {} +} + +;// ./src/core/opentype_file_builder.js + + +function writeInt16(dest, offset, num) { + dest[offset] = num >> 8 & 0xff; + dest[offset + 1] = num & 0xff; +} +function writeInt32(dest, offset, num) { + dest[offset] = num >> 24 & 0xff; + dest[offset + 1] = num >> 16 & 0xff; + dest[offset + 2] = num >> 8 & 0xff; + dest[offset + 3] = num & 0xff; +} +function writeData(dest, offset, data) { + if (data instanceof Uint8Array) { + dest.set(data, offset); + } else if (typeof data === "string") { + for (let i = 0, ii = data.length; i < ii; i++) { + dest[offset++] = data.charCodeAt(i) & 0xff; + } + } else { + for (const num of data) { + dest[offset++] = num & 0xff; + } + } +} +const OTF_HEADER_SIZE = 12; +const OTF_TABLE_ENTRY_SIZE = 16; +class OpenTypeFileBuilder { + constructor(sfnt) { + this.sfnt = sfnt; + this.tables = Object.create(null); + } + static getSearchParams(entriesCount, entrySize) { + let maxPower2 = 1, + log2 = 0; + while ((maxPower2 ^ entriesCount) > maxPower2) { + maxPower2 <<= 1; + log2++; + } + const searchRange = maxPower2 * entrySize; + return { + range: searchRange, + entry: log2, + rangeShift: entrySize * entriesCount - searchRange + }; + } + toArray() { + let sfnt = this.sfnt; + const tables = this.tables; + const tablesNames = Object.keys(tables); + tablesNames.sort(); + const numTables = tablesNames.length; + let i, j, jj, table, tableName; + let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE; + const tableOffsets = [offset]; + for (i = 0; i < numTables; i++) { + table = tables[tablesNames[i]]; + const paddedLength = (table.length + 3 & ~3) >>> 0; + offset += paddedLength; + tableOffsets.push(offset); + } + const file = new Uint8Array(offset); + for (i = 0; i < numTables; i++) { + table = tables[tablesNames[i]]; + writeData(file, tableOffsets[i], table); + } + if (sfnt === "true") { + sfnt = string32(0x00010000); + } + file[0] = sfnt.charCodeAt(0) & 0xff; + file[1] = sfnt.charCodeAt(1) & 0xff; + file[2] = sfnt.charCodeAt(2) & 0xff; + file[3] = sfnt.charCodeAt(3) & 0xff; + writeInt16(file, 4, numTables); + const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16); + writeInt16(file, 6, searchParams.range); + writeInt16(file, 8, searchParams.entry); + writeInt16(file, 10, searchParams.rangeShift); + offset = OTF_HEADER_SIZE; + for (i = 0; i < numTables; i++) { + tableName = tablesNames[i]; + file[offset] = tableName.charCodeAt(0) & 0xff; + file[offset + 1] = tableName.charCodeAt(1) & 0xff; + file[offset + 2] = tableName.charCodeAt(2) & 0xff; + file[offset + 3] = tableName.charCodeAt(3) & 0xff; + let checksum = 0; + for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) { + const quad = readUint32(file, j); + checksum = checksum + quad >>> 0; + } + writeInt32(file, offset + 4, checksum); + writeInt32(file, offset + 8, tableOffsets[i]); + writeInt32(file, offset + 12, tables[tableName].length); + offset += OTF_TABLE_ENTRY_SIZE; + } + return file; + } + addTable(tag, data) { + if (tag in this.tables) { + throw new Error("Table " + tag + " already exists"); + } + this.tables[tag] = data; + } +} + +;// ./src/core/type1_parser.js + + + + +const HINTING_ENABLED = false; +const COMMAND_MAP = { + hstem: [1], + vstem: [3], + vmoveto: [4], + rlineto: [5], + hlineto: [6], + vlineto: [7], + rrcurveto: [8], + callsubr: [10], + flex: [12, 35], + drop: [12, 18], + endchar: [14], + rmoveto: [21], + hmoveto: [22], + vhcurveto: [30], + hvcurveto: [31] +}; +class Type1CharString { + width = 0; + lsb = 0; + flexing = false; + output = []; + stack = []; + convert(encoded, subrs, seacAnalysisEnabled) { + const count = encoded.length; + let error = false; + let wx, sbx, subrNumber; + for (let i = 0; i < count; i++) { + let value = encoded[i]; + if (value < 32) { + if (value === 12) { + value = (value << 8) + encoded[++i]; + } + switch (value) { + case 1: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.hstem); + break; + case 3: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.vstem); + break; + case 4: + if (this.flexing) { + if (this.stack.length < 1) { + error = true; + break; + } + const dy = this.stack.pop(); + this.stack.push(0, dy); + break; + } + error = this.executeCommand(1, COMMAND_MAP.vmoveto); + break; + case 5: + error = this.executeCommand(2, COMMAND_MAP.rlineto); + break; + case 6: + error = this.executeCommand(1, COMMAND_MAP.hlineto); + break; + case 7: + error = this.executeCommand(1, COMMAND_MAP.vlineto); + break; + case 8: + error = this.executeCommand(6, COMMAND_MAP.rrcurveto); + break; + case 9: + this.stack = []; + break; + case 10: + if (this.stack.length < 1) { + error = true; + break; + } + subrNumber = this.stack.pop(); + if (!subrs[subrNumber]) { + error = true; + break; + } + error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled); + break; + case 11: + return error; + case 13: + if (this.stack.length < 2) { + error = true; + break; + } + wx = this.stack.pop(); + sbx = this.stack.pop(); + this.lsb = sbx; + this.width = wx; + this.stack.push(wx, sbx); + error = this.executeCommand(2, COMMAND_MAP.hmoveto); + break; + case 14: + this.output.push(COMMAND_MAP.endchar[0]); + break; + case 21: + if (this.flexing) { + break; + } + error = this.executeCommand(2, COMMAND_MAP.rmoveto); + break; + case 22: + if (this.flexing) { + this.stack.push(0); + break; + } + error = this.executeCommand(1, COMMAND_MAP.hmoveto); + break; + case 30: + error = this.executeCommand(4, COMMAND_MAP.vhcurveto); + break; + case 31: + error = this.executeCommand(4, COMMAND_MAP.hvcurveto); + break; + case (12 << 8) + 0: + this.stack = []; + break; + case (12 << 8) + 1: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.vstem); + break; + case (12 << 8) + 2: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.hstem); + break; + case (12 << 8) + 6: + if (seacAnalysisEnabled) { + const asb = this.stack.at(-5); + this.seac = this.stack.splice(-4, 4); + this.seac[0] += this.lsb - asb; + error = this.executeCommand(0, COMMAND_MAP.endchar); + } else { + error = this.executeCommand(4, COMMAND_MAP.endchar); + } + break; + case (12 << 8) + 7: + if (this.stack.length < 4) { + error = true; + break; + } + this.stack.pop(); + wx = this.stack.pop(); + const sby = this.stack.pop(); + sbx = this.stack.pop(); + this.lsb = sbx; + this.width = wx; + this.stack.push(wx, sbx, sby); + error = this.executeCommand(3, COMMAND_MAP.rmoveto); + break; + case (12 << 8) + 12: + if (this.stack.length < 2) { + error = true; + break; + } + const num2 = this.stack.pop(); + const num1 = this.stack.pop(); + this.stack.push(num1 / num2); + break; + case (12 << 8) + 16: + if (this.stack.length < 2) { + error = true; + break; + } + subrNumber = this.stack.pop(); + const numArgs = this.stack.pop(); + if (subrNumber === 0 && numArgs === 3) { + const flexArgs = this.stack.splice(-17, 17); + this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]); + error = this.executeCommand(13, COMMAND_MAP.flex, true); + this.flexing = false; + this.stack.push(flexArgs[15], flexArgs[16]); + } else if (subrNumber === 1 && numArgs === 0) { + this.flexing = true; + } + break; + case (12 << 8) + 17: + break; + case (12 << 8) + 33: + this.stack = []; + break; + default: + warn('Unknown type 1 charstring command of "' + value + '"'); + break; + } + if (error) { + break; + } + continue; + } else if (value <= 246) { + value -= 139; + } else if (value <= 250) { + value = (value - 247) * 256 + encoded[++i] + 108; + } else if (value <= 254) { + value = -((value - 251) * 256) - encoded[++i] - 108; + } else { + value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0; + } + this.stack.push(value); + } + return error; + } + executeCommand(howManyArgs, command, keepStack) { + const stackLength = this.stack.length; + if (howManyArgs > stackLength) { + return true; + } + const start = stackLength - howManyArgs; + for (let i = start; i < stackLength; i++) { + let value = this.stack[i]; + if (Number.isInteger(value)) { + this.output.push(28, value >> 8 & 0xff, value & 0xff); + } else { + value = 65536 * value | 0; + this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); + } + } + this.output.push(...command); + if (keepStack) { + this.stack.splice(start, howManyArgs); + } else { + this.stack.length = 0; + } + return false; + } +} +const EEXEC_ENCRYPT_KEY = 55665; +const CHAR_STRS_ENCRYPT_KEY = 4330; +function isHexDigit(code) { + return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102; +} +function decrypt(data, key, discardNumber) { + if (discardNumber >= data.length) { + return new Uint8Array(0); + } + const c1 = 52845, + c2 = 22719; + let r = key | 0, + i, + j; + for (i = 0; i < discardNumber; i++) { + r = (data[i] + r) * c1 + c2 & (1 << 16) - 1; + } + const count = data.length - discardNumber; + const decrypted = new Uint8Array(count); + for (i = discardNumber, j = 0; j < count; i++, j++) { + const value = data[i]; + decrypted[j] = value ^ r >> 8; + r = (value + r) * c1 + c2 & (1 << 16) - 1; + } + return decrypted; +} +function decryptAscii(data, key, discardNumber) { + const c1 = 52845, + c2 = 22719; + let r = key | 0; + const count = data.length, + maybeLength = count >>> 1; + const decrypted = new Uint8Array(maybeLength); + let i, j; + for (i = 0, j = 0; i < count; i++) { + const digit1 = data[i]; + if (!isHexDigit(digit1)) { + continue; + } + i++; + let digit2; + while (i < count && !isHexDigit(digit2 = data[i])) { + i++; + } + if (i < count) { + const value = parseInt(String.fromCharCode(digit1, digit2), 16); + decrypted[j++] = value ^ r >> 8; + r = (value + r) * c1 + c2 & (1 << 16) - 1; + } + } + return decrypted.slice(discardNumber, j); +} +function isSpecial(c) { + return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29; +} +class Type1Parser { + constructor(stream, encrypted, seacAnalysisEnabled) { + if (encrypted) { + const data = stream.getBytes(); + const isBinary = !((isHexDigit(data[0]) || isWhiteSpace(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7])); + stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)); + } + this.seacAnalysisEnabled = !!seacAnalysisEnabled; + this.stream = stream; + this.nextChar(); + } + readNumberArray() { + this.getToken(); + const array = []; + while (true) { + const token = this.getToken(); + if (token === null || token === "]" || token === "}") { + break; + } + array.push(parseFloat(token || 0)); + } + return array; + } + readNumber() { + const token = this.getToken(); + return parseFloat(token || 0); + } + readInt() { + const token = this.getToken(); + return parseInt(token || 0, 10) | 0; + } + readBoolean() { + const token = this.getToken(); + return token === "true" ? 1 : 0; + } + nextChar() { + return this.currentChar = this.stream.getByte(); + } + prevChar() { + this.stream.skip(-2); + return this.currentChar = this.stream.getByte(); + } + getToken() { + let comment = false; + let ch = this.currentChar; + while (true) { + if (ch === -1) { + return null; + } + if (comment) { + if (ch === 0x0a || ch === 0x0d) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (!isWhiteSpace(ch)) { + break; + } + ch = this.nextChar(); + } + if (isSpecial(ch)) { + this.nextChar(); + return String.fromCharCode(ch); + } + let token = ""; + do { + token += String.fromCharCode(ch); + ch = this.nextChar(); + } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch)); + return token; + } + readCharStrings(bytes, lenIV) { + if (lenIV === -1) { + return bytes; + } + return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV); + } + extractFontProgram(properties) { + const stream = this.stream; + const subrs = [], + charstrings = []; + const privateData = Object.create(null); + privateData.lenIV = 4; + const program = { + subrs: [], + charstrings: [], + properties: { + privateData + } + }; + let token, length, data, lenIV; + while ((token = this.getToken()) !== null) { + if (token !== "/") { + continue; + } + token = this.getToken(); + switch (token) { + case "CharStrings": + this.getToken(); + this.getToken(); + this.getToken(); + this.getToken(); + while (true) { + token = this.getToken(); + if (token === null || token === "end") { + break; + } + if (token !== "/") { + continue; + } + const glyph = this.getToken(); + length = this.readInt(); + this.getToken(); + data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); + lenIV = program.properties.privateData.lenIV; + const encoded = this.readCharStrings(data, lenIV); + this.nextChar(); + token = this.getToken(); + if (token === "noaccess") { + this.getToken(); + } else if (token === "/") { + this.prevChar(); + } + charstrings.push({ + glyph, + encoded + }); + } + break; + case "Subrs": + this.readInt(); + this.getToken(); + while (this.getToken() === "dup") { + const index = this.readInt(); + length = this.readInt(); + this.getToken(); + data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); + lenIV = program.properties.privateData.lenIV; + const encoded = this.readCharStrings(data, lenIV); + this.nextChar(); + token = this.getToken(); + if (token === "noaccess") { + this.getToken(); + } + subrs[index] = encoded; + } + break; + case "BlueValues": + case "OtherBlues": + case "FamilyBlues": + case "FamilyOtherBlues": + const blueArray = this.readNumberArray(); + if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) { + program.properties.privateData[token] = blueArray; + } + break; + case "StemSnapH": + case "StemSnapV": + program.properties.privateData[token] = this.readNumberArray(); + break; + case "StdHW": + case "StdVW": + program.properties.privateData[token] = this.readNumberArray()[0]; + break; + case "BlueShift": + case "lenIV": + case "BlueFuzz": + case "BlueScale": + case "LanguageGroup": + program.properties.privateData[token] = this.readNumber(); + break; + case "ExpansionFactor": + program.properties.privateData[token] = this.readNumber() || 0.06; + break; + case "ForceBold": + program.properties.privateData[token] = this.readBoolean(); + break; + } + } + for (const { + encoded, + glyph + } of charstrings) { + const charString = new Type1CharString(); + const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled); + let output = charString.output; + if (error) { + output = [14]; + } + const charStringObject = { + glyphName: glyph, + charstring: output, + width: charString.width, + lsb: charString.lsb, + seac: charString.seac + }; + if (glyph === ".notdef") { + program.charstrings.unshift(charStringObject); + } else { + program.charstrings.push(charStringObject); + } + if (properties.builtInEncoding) { + const index = properties.builtInEncoding.indexOf(glyph); + if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) { + properties.widths[index] = charString.width; + } + } + } + return program; + } + extractFontHeader(properties) { + let token; + while ((token = this.getToken()) !== null) { + if (token !== "/") { + continue; + } + token = this.getToken(); + switch (token) { + case "FontMatrix": + const matrix = this.readNumberArray(); + properties.fontMatrix = matrix; + break; + case "Encoding": + const encodingArg = this.getToken(); + let encoding; + if (!/^\d+$/.test(encodingArg)) { + encoding = getEncoding(encodingArg); + } else { + encoding = []; + const size = parseInt(encodingArg, 10) | 0; + this.getToken(); + for (let j = 0; j < size; j++) { + token = this.getToken(); + while (token !== "dup" && token !== "def") { + token = this.getToken(); + if (token === null) { + return; + } + } + if (token === "def") { + break; + } + const index = this.readInt(); + this.getToken(); + const glyph = this.getToken(); + encoding[index] = glyph; + this.getToken(); + } + } + properties.builtInEncoding = encoding; + break; + case "FontBBox": + const fontBBox = this.readNumberArray(); + properties.ascent = Math.max(fontBBox[3], fontBBox[1]); + properties.descent = Math.min(fontBBox[1], fontBBox[3]); + properties.ascentScaled = true; + break; + } + } + } +} + +;// ./src/core/type1_font.js + + + + + + +function findBlock(streamBytes, signature, startIndex) { + const streamBytesLength = streamBytes.length; + const signatureLength = signature.length; + const scanLength = streamBytesLength - signatureLength; + let i = startIndex, + found = false; + while (i < scanLength) { + let j = 0; + while (j < signatureLength && streamBytes[i + j] === signature[j]) { + j++; + } + if (j >= signatureLength) { + i += j; + while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) { + i++; + } + found = true; + break; + } + i++; + } + return { + found, + length: i + }; +} +function getHeaderBlock(stream, suggestedLength) { + const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63]; + const streamStartPos = stream.pos; + let headerBytes, headerBytesLength, block; + try { + headerBytes = stream.getBytes(suggestedLength); + headerBytesLength = headerBytes.length; + } catch {} + if (headerBytesLength === suggestedLength) { + block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length); + if (block.found && block.length === suggestedLength) { + return { + stream: new Stream(headerBytes), + length: suggestedLength + }; + } + } + warn('Invalid "Length1" property in Type1 font -- trying to recover.'); + stream.pos = streamStartPos; + const SCAN_BLOCK_LENGTH = 2048; + let actualLength; + while (true) { + const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); + block = findBlock(scanBytes, EEXEC_SIGNATURE, 0); + if (block.length === 0) { + break; + } + stream.pos += block.length; + if (block.found) { + actualLength = stream.pos - streamStartPos; + break; + } + } + stream.pos = streamStartPos; + if (actualLength) { + return { + stream: new Stream(stream.getBytes(actualLength)), + length: actualLength + }; + } + warn('Unable to recover "Length1" property in Type1 font -- using as is.'); + return { + stream: new Stream(stream.getBytes(suggestedLength)), + length: suggestedLength + }; +} +function getEexecBlock(stream, suggestedLength) { + const eexecBytes = stream.getBytes(); + if (eexecBytes.length === 0) { + throw new FormatError("getEexecBlock - no font program found."); + } + return { + stream: new Stream(eexecBytes), + length: eexecBytes.length + }; +} +class Type1Font { + constructor(name, file, properties) { + const PFB_HEADER_SIZE = 6; + let headerBlockLength = properties.length1; + let eexecBlockLength = properties.length2; + let pfbHeader = file.peekBytes(PFB_HEADER_SIZE); + const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01; + if (pfbHeaderPresent) { + file.skip(PFB_HEADER_SIZE); + headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; + } + const headerBlock = getHeaderBlock(file, headerBlockLength); + const headerBlockParser = new Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED); + headerBlockParser.extractFontHeader(properties); + if (pfbHeaderPresent) { + pfbHeader = file.getBytes(PFB_HEADER_SIZE); + eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; + } + const eexecBlock = getEexecBlock(file, eexecBlockLength); + const eexecBlockParser = new Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED); + const data = eexecBlockParser.extractFontProgram(properties); + for (const key in data.properties) { + properties[key] = data.properties[key]; + } + const charstrings = data.charstrings; + const type2Charstrings = this.getType2Charstrings(charstrings); + const subrs = this.getType2Subrs(data.subrs); + this.charstrings = charstrings; + this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties); + this.seacs = this.getSeacs(data.charstrings); + } + get numGlyphs() { + return this.charstrings.length + 1; + } + getCharset() { + const charset = [".notdef"]; + for (const { + glyphName + } of this.charstrings) { + charset.push(glyphName); + } + return charset; + } + getGlyphMapping(properties) { + const charstrings = this.charstrings; + if (properties.composite) { + const charCodeToGlyphId = Object.create(null); + for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) { + const charCode = properties.cMap.charCodeOf(glyphId); + charCodeToGlyphId[charCode] = glyphId + 1; + } + return charCodeToGlyphId; + } + const glyphNames = [".notdef"]; + let builtInEncoding, glyphId; + for (glyphId = 0; glyphId < charstrings.length; glyphId++) { + glyphNames.push(charstrings[glyphId].glyphName); + } + const encoding = properties.builtInEncoding; + if (encoding) { + builtInEncoding = Object.create(null); + for (const charCode in encoding) { + glyphId = glyphNames.indexOf(encoding[charCode]); + if (glyphId >= 0) { + builtInEncoding[charCode] = glyphId; + } + } + } + return type1FontGlyphMapping(properties, builtInEncoding, glyphNames); + } + hasGlyphId(id) { + if (id < 0 || id >= this.numGlyphs) { + return false; + } + if (id === 0) { + return true; + } + const glyph = this.charstrings[id - 1]; + return glyph.charstring.length > 0; + } + getSeacs(charstrings) { + const seacMap = []; + for (let i = 0, ii = charstrings.length; i < ii; i++) { + const charstring = charstrings[i]; + if (charstring.seac) { + seacMap[i + 1] = charstring.seac; + } + } + return seacMap; + } + getType2Charstrings(type1Charstrings) { + const type2Charstrings = []; + for (const type1Charstring of type1Charstrings) { + type2Charstrings.push(type1Charstring.charstring); + } + return type2Charstrings; + } + getType2Subrs(type1Subrs) { + let bias = 0; + const count = type1Subrs.length; + if (count < 1133) { + bias = 107; + } else if (count < 33769) { + bias = 1131; + } else { + bias = 32768; + } + const type2Subrs = []; + let i; + for (i = 0; i < bias; i++) { + type2Subrs.push([0x0b]); + } + for (i = 0; i < count; i++) { + type2Subrs.push(type1Subrs[i]); + } + return type2Subrs; + } + wrap(name, glyphs, charstrings, subrs, properties) { + const cff = new CFF(); + cff.header = new CFFHeader(1, 0, 4, 4); + cff.names = [name]; + const topDict = new CFFTopDict(); + topDict.setByName("version", 391); + topDict.setByName("Notice", 392); + topDict.setByName("FullName", 393); + topDict.setByName("FamilyName", 394); + topDict.setByName("Weight", 395); + topDict.setByName("Encoding", null); + topDict.setByName("FontMatrix", properties.fontMatrix); + topDict.setByName("FontBBox", properties.bbox); + topDict.setByName("charset", null); + topDict.setByName("CharStrings", null); + topDict.setByName("Private", null); + cff.topDict = topDict; + const strings = new CFFStrings(); + strings.add("Version 0.11"); + strings.add("See original notice"); + strings.add(name); + strings.add(name); + strings.add("Medium"); + cff.strings = strings; + cff.globalSubrIndex = new CFFIndex(); + const count = glyphs.length; + const charsetArray = [".notdef"]; + let i, ii; + for (i = 0; i < count; i++) { + const glyphName = charstrings[i].glyphName; + const index = CFFStandardStrings.indexOf(glyphName); + if (index === -1) { + strings.add(glyphName); + } + charsetArray.push(glyphName); + } + cff.charset = new CFFCharset(false, 0, charsetArray); + const charStringsIndex = new CFFIndex(); + charStringsIndex.add([0x8b, 0x0e]); + for (i = 0; i < count; i++) { + charStringsIndex.add(glyphs[i]); + } + cff.charStrings = charStringsIndex; + const privateDict = new CFFPrivateDict(); + privateDict.setByName("Subrs", null); + const fields = ["BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StemSnapH", "StemSnapV", "BlueShift", "BlueFuzz", "BlueScale", "LanguageGroup", "ExpansionFactor", "ForceBold", "StdHW", "StdVW"]; + for (i = 0, ii = fields.length; i < ii; i++) { + const field = fields[i]; + if (!(field in properties.privateData)) { + continue; + } + const value = properties.privateData[field]; + if (Array.isArray(value)) { + for (let j = value.length - 1; j > 0; j--) { + value[j] -= value[j - 1]; + } + } + privateDict.setByName(field, value); + } + cff.topDict.privateDict = privateDict; + const subrIndex = new CFFIndex(); + for (i = 0, ii = subrs.length; i < ii; i++) { + subrIndex.add(subrs[i]); + } + privateDict.subrsIndex = subrIndex; + const compiler = new CFFCompiler(cff); + return compiler.compile(); + } +} + +;// ./src/core/fonts.js + + + + + + + + + + + + + + + + + +const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]]; +const PDF_GLYPH_SPACE_UNITS = 1000; +const EXPORT_DATA_PROPERTIES = ["ascent", "bbox", "black", "bold", "cssFontInfo", "data", "defaultVMetrics", "defaultWidth", "descent", "disableFontFace", "fallbackName", "fontExtraProperties", "fontMatrix", "isInvalidPDFjsFont", "isType3Font", "italic", "loadedName", "mimetype", "missingFile", "name", "remeasure", "systemFontInfo", "vertical"]; +const EXPORT_DATA_EXTRA_PROPERTIES = ["cMap", "composite", "defaultEncoding", "differences", "isMonospace", "isSerifFont", "isSymbolicFont", "seacMap", "subtype", "toFontChar", "toUnicode", "type", "vmetrics", "widths"]; +function adjustWidths(properties) { + if (!properties.fontMatrix) { + return; + } + if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) { + return; + } + const scale = 0.001 / properties.fontMatrix[0]; + const glyphsWidths = properties.widths; + for (const glyph in glyphsWidths) { + glyphsWidths[glyph] *= scale; + } + properties.defaultWidth *= scale; +} +function adjustTrueTypeToUnicode(properties, isSymbolicFont, nameRecords) { + if (properties.isInternalFont) { + return; + } + if (properties.hasIncludedToUnicodeMap) { + return; + } + if (properties.hasEncoding) { + return; + } + if (properties.toUnicode instanceof IdentityToUnicodeMap) { + return; + } + if (!isSymbolicFont) { + return; + } + if (nameRecords.length === 0) { + return; + } + if (properties.defaultEncoding === WinAnsiEncoding) { + return; + } + for (const r of nameRecords) { + if (!isWinNameRecord(r)) { + return; + } + } + const encoding = WinAnsiEncoding; + const toUnicode = [], + glyphsUnicodeMap = getGlyphsUnicode(); + for (const charCode in encoding) { + const glyphName = encoding[charCode]; + if (glyphName === "") { + continue; + } + const unicode = glyphsUnicodeMap[glyphName]; + if (unicode === undefined) { + continue; + } + toUnicode[charCode] = String.fromCharCode(unicode); + } + if (toUnicode.length > 0) { + properties.toUnicode.amend(toUnicode); + } +} +function adjustType1ToUnicode(properties, builtInEncoding) { + if (properties.isInternalFont) { + return; + } + if (properties.hasIncludedToUnicodeMap) { + return; + } + if (builtInEncoding === properties.defaultEncoding) { + return; + } + if (properties.toUnicode instanceof IdentityToUnicodeMap) { + return; + } + const toUnicode = [], + glyphsUnicodeMap = getGlyphsUnicode(); + for (const charCode in builtInEncoding) { + if (properties.hasEncoding) { + if (properties.baseEncodingName || properties.differences[charCode] !== undefined) { + continue; + } + } + const glyphName = builtInEncoding[charCode]; + const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap); + if (unicode !== -1) { + toUnicode[charCode] = String.fromCharCode(unicode); + } + } + if (toUnicode.length > 0) { + properties.toUnicode.amend(toUnicode); + } +} +function amendFallbackToUnicode(properties) { + if (!properties.fallbackToUnicode) { + return; + } + if (properties.toUnicode instanceof IdentityToUnicodeMap) { + return; + } + const toUnicode = []; + for (const charCode in properties.fallbackToUnicode) { + if (properties.toUnicode.has(charCode)) { + continue; + } + toUnicode[charCode] = properties.fallbackToUnicode[charCode]; + } + if (toUnicode.length > 0) { + properties.toUnicode.amend(toUnicode); + } +} +class fonts_Glyph { + constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { + this.originalCharCode = originalCharCode; + this.fontChar = fontChar; + this.unicode = unicode; + this.accent = accent; + this.width = width; + this.vmetric = vmetric; + this.operatorListId = operatorListId; + this.isSpace = isSpace; + this.isInFont = isInFont; + } + get category() { + return shadow(this, "category", getCharUnicodeCategory(this.unicode), true); + } +} +function int16(b0, b1) { + return (b0 << 8) + b1; +} +function writeSignedInt16(bytes, index, value) { + bytes[index + 1] = value; + bytes[index] = value >>> 8; +} +function signedInt16(b0, b1) { + const value = (b0 << 8) + b1; + return value & 1 << 15 ? value - 0x10000 : value; +} +function writeUint32(bytes, index, value) { + bytes[index + 3] = value & 0xff; + bytes[index + 2] = value >>> 8; + bytes[index + 1] = value >>> 16; + bytes[index] = value >>> 24; +} +function int32(b0, b1, b2, b3) { + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; +} +function string16(value) { + return String.fromCharCode(value >> 8 & 0xff, value & 0xff); +} +function safeString16(value) { + if (value > 0x7fff) { + value = 0x7fff; + } else if (value < -0x8000) { + value = -0x8000; + } + return String.fromCharCode(value >> 8 & 0xff, value & 0xff); +} +function isTrueTypeFile(file) { + const header = file.peekBytes(4); + return readUint32(header, 0) === 0x00010000 || bytesToString(header) === "true"; +} +function isTrueTypeCollectionFile(file) { + const header = file.peekBytes(4); + return bytesToString(header) === "ttcf"; +} +function isOpenTypeFile(file) { + const header = file.peekBytes(4); + return bytesToString(header) === "OTTO"; +} +function isType1File(file) { + const header = file.peekBytes(2); + if (header[0] === 0x25 && header[1] === 0x21) { + return true; + } + if (header[0] === 0x80 && header[1] === 0x01) { + return true; + } + return false; +} +function isCFFFile(file) { + const header = file.peekBytes(4); + if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) { + return true; + } + return false; +} +function getFontFileType(file, { + type, + subtype, + composite +}) { + let fileType, fileSubtype; + if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) { + fileType = composite ? "CIDFontType2" : "TrueType"; + } else if (isOpenTypeFile(file)) { + fileType = composite ? "CIDFontType2" : "OpenType"; + } else if (isType1File(file)) { + if (composite) { + fileType = "CIDFontType0"; + } else { + fileType = type === "MMType1" ? "MMType1" : "Type1"; + } + } else if (isCFFFile(file)) { + if (composite) { + fileType = "CIDFontType0"; + fileSubtype = "CIDFontType0C"; + } else { + fileType = type === "MMType1" ? "MMType1" : "Type1"; + fileSubtype = "Type1C"; + } + } else { + warn("getFontFileType: Unable to detect correct font file Type/Subtype."); + fileType = type; + fileSubtype = subtype; + } + return [fileType, fileSubtype]; +} +function applyStandardFontGlyphMap(map, glyphMap) { + for (const charCode in glyphMap) { + map[+charCode] = glyphMap[charCode]; + } +} +function buildToFontChar(encoding, glyphsUnicodeMap, differences) { + const toFontChar = []; + let unicode; + for (let i = 0, ii = encoding.length; i < ii; i++) { + unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap); + if (unicode !== -1) { + toFontChar[i] = unicode; + } + } + for (const charCode in differences) { + unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap); + if (unicode !== -1) { + toFontChar[+charCode] = unicode; + } + } + return toFontChar; +} +function isMacNameRecord(r) { + return r.platform === 1 && r.encoding === 0 && r.language === 0; +} +function isWinNameRecord(r) { + return r.platform === 3 && r.encoding === 1 && r.language === 0x409; +} +function convertCidString(charCode, cid, shouldThrow = false) { + switch (cid.length) { + case 1: + return cid.charCodeAt(0); + case 2: + return cid.charCodeAt(0) << 8 | cid.charCodeAt(1); + } + const msg = `Unsupported CID string (charCode ${charCode}): "${cid}".`; + if (shouldThrow) { + throw new FormatError(msg); + } + warn(msg); + return cid; +} +function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) { + const newMap = Object.create(null); + const toUnicodeExtraMap = new Map(); + const toFontChar = []; + const usedGlyphIds = new Set(); + let privateUseAreaIndex = 0; + const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; + let nextAvailableFontCharCode = privateUseOffetStart; + let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; + const isInPrivateArea = code => PRIVATE_USE_AREAS[0][0] <= code && code <= PRIVATE_USE_AREAS[0][1] || PRIVATE_USE_AREAS[1][0] <= code && code <= PRIVATE_USE_AREAS[1][1]; + let LIGATURE_TO_UNICODE = null; + for (const originalCharCode in charCodeToGlyphId) { + let glyphId = charCodeToGlyphId[originalCharCode]; + if (!hasGlyph(glyphId)) { + continue; + } + if (nextAvailableFontCharCode > privateUseOffetEnd) { + privateUseAreaIndex++; + if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) { + warn("Ran out of space in font private use area."); + break; + } + nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; + privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; + } + const fontCharCode = nextAvailableFontCharCode++; + if (glyphId === 0) { + glyphId = newGlyphZeroId; + } + let unicode = toUnicode.get(originalCharCode); + if (typeof unicode === "string") { + if (unicode.length === 1) { + unicode = unicode.codePointAt(0); + } else { + if (!LIGATURE_TO_UNICODE) { + LIGATURE_TO_UNICODE = new Map(); + for (let i = 0xfb00; i <= 0xfb4f; i++) { + const normalized = String.fromCharCode(i).normalize("NFKD"); + if (normalized.length > 1) { + LIGATURE_TO_UNICODE.set(normalized, i); + } + } + } + unicode = LIGATURE_TO_UNICODE.get(unicode) || unicode.codePointAt(0); + } + } + if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) { + toUnicodeExtraMap.set(unicode, glyphId); + usedGlyphIds.add(glyphId); + } + newMap[fontCharCode] = glyphId; + toFontChar[originalCharCode] = fontCharCode; + } + return { + toFontChar, + charCodeToGlyphId: newMap, + toUnicodeExtraMap, + nextAvailableFontCharCode + }; +} +function getRanges(glyphs, toUnicodeExtraMap, numGlyphs) { + const codes = []; + for (const charCode in glyphs) { + if (glyphs[charCode] >= numGlyphs) { + continue; + } + codes.push({ + fontCharCode: charCode | 0, + glyphId: glyphs[charCode] + }); + } + if (toUnicodeExtraMap) { + for (const [unicode, glyphId] of toUnicodeExtraMap) { + if (glyphId >= numGlyphs) { + continue; + } + codes.push({ + fontCharCode: unicode, + glyphId + }); + } + } + if (codes.length === 0) { + codes.push({ + fontCharCode: 0, + glyphId: 0 + }); + } + codes.sort((a, b) => a.fontCharCode - b.fontCharCode); + const ranges = []; + const length = codes.length; + for (let n = 0; n < length;) { + const start = codes[n].fontCharCode; + const codeIndices = [codes[n].glyphId]; + ++n; + let end = start; + while (n < length && end + 1 === codes[n].fontCharCode) { + codeIndices.push(codes[n].glyphId); + ++end; + ++n; + if (end === 0xffff) { + break; + } + } + ranges.push([start, end, codeIndices]); + } + return ranges; +} +function createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) { + const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs); + const numTables = ranges.at(-1)[1] > 0xffff ? 2 : 1; + let cmap = "\x00\x00" + string16(numTables) + "\x00\x03" + "\x00\x01" + string32(4 + numTables * 8); + let i, ii, j, jj; + for (i = ranges.length - 1; i >= 0; --i) { + if (ranges[i][0] <= 0xffff) { + break; + } + } + const bmpLength = i + 1; + if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) { + ranges[i][1] = 0xfffe; + } + const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0; + const segCount = bmpLength + trailingRangesCount; + const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2); + let startCount = ""; + let endCount = ""; + let idDeltas = ""; + let idRangeOffsets = ""; + let glyphsIds = ""; + let bias = 0; + let range, start, end, codes; + for (i = 0, ii = bmpLength; i < ii; i++) { + range = ranges[i]; + start = range[0]; + end = range[1]; + startCount += string16(start); + endCount += string16(end); + codes = range[2]; + let contiguous = true; + for (j = 1, jj = codes.length; j < jj; ++j) { + if (codes[j] !== codes[j - 1] + 1) { + contiguous = false; + break; + } + } + if (!contiguous) { + const offset = (segCount - i) * 2 + bias * 2; + bias += end - start + 1; + idDeltas += string16(0); + idRangeOffsets += string16(offset); + for (j = 0, jj = codes.length; j < jj; ++j) { + glyphsIds += string16(codes[j]); + } + } else { + const startCode = codes[0]; + idDeltas += string16(startCode - start & 0xffff); + idRangeOffsets += string16(0); + } + } + if (trailingRangesCount > 0) { + endCount += "\xFF\xFF"; + startCount += "\xFF\xFF"; + idDeltas += "\x00\x01"; + idRangeOffsets += "\x00\x00"; + } + const format314 = "\x00\x00" + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + "\x00\x00" + startCount + idDeltas + idRangeOffsets + glyphsIds; + let format31012 = ""; + let header31012 = ""; + if (numTables > 1) { + cmap += "\x00\x03" + "\x00\x0A" + string32(4 + numTables * 8 + 4 + format314.length); + format31012 = ""; + for (i = 0, ii = ranges.length; i < ii; i++) { + range = ranges[i]; + start = range[0]; + codes = range[2]; + let code = codes[0]; + for (j = 1, jj = codes.length; j < jj; ++j) { + if (codes[j] !== codes[j - 1] + 1) { + end = range[0] + j - 1; + format31012 += string32(start) + string32(end) + string32(code); + start = end + 1; + code = codes[j]; + } + } + format31012 += string32(start) + string32(range[1]) + string32(code); + } + header31012 = "\x00\x0C" + "\x00\x00" + string32(format31012.length + 16) + "\x00\x00\x00\x00" + string32(format31012.length / 12); + } + return cmap + "\x00\x04" + string16(format314.length + 4) + format314 + header31012 + format31012; +} +function validateOS2Table(os2, file) { + file.pos = (file.start || 0) + os2.offset; + const version = file.getUint16(); + file.skip(60); + const selection = file.getUint16(); + if (version < 4 && selection & 0x0300) { + return false; + } + const firstChar = file.getUint16(); + const lastChar = file.getUint16(); + if (firstChar > lastChar) { + return false; + } + file.skip(6); + const usWinAscent = file.getUint16(); + if (usWinAscent === 0) { + return false; + } + os2.data[8] = os2.data[9] = 0; + return true; +} +function createOS2Table(properties, charstrings, override) { + override ||= { + unitsPerEm: 0, + yMax: 0, + yMin: 0, + ascent: 0, + descent: 0 + }; + let ulUnicodeRange1 = 0; + let ulUnicodeRange2 = 0; + let ulUnicodeRange3 = 0; + let ulUnicodeRange4 = 0; + let firstCharIndex = null; + let lastCharIndex = 0; + let position = -1; + if (charstrings) { + for (let code in charstrings) { + code |= 0; + if (firstCharIndex > code || !firstCharIndex) { + firstCharIndex = code; + } + if (lastCharIndex < code) { + lastCharIndex = code; + } + position = getUnicodeRangeFor(code, position); + if (position < 32) { + ulUnicodeRange1 |= 1 << position; + } else if (position < 64) { + ulUnicodeRange2 |= 1 << position - 32; + } else if (position < 96) { + ulUnicodeRange3 |= 1 << position - 64; + } else if (position < 123) { + ulUnicodeRange4 |= 1 << position - 96; + } else { + throw new FormatError("Unicode ranges Bits > 123 are reserved for internal usage"); + } + } + if (lastCharIndex > 0xffff) { + lastCharIndex = 0xffff; + } + } else { + firstCharIndex = 0; + lastCharIndex = 255; + } + const bbox = properties.bbox || [0, 0, 0, 0]; + const unitsPerEm = override.unitsPerEm || (properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000); + const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS; + const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3])); + let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1])); + if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) { + typoDescent = -typoDescent; + } + const winAscent = override.yMax || typoAscent; + const winDescent = -override.yMin || -typoDescent; + return "\x00\x03" + "\x02\x24" + "\x01\xF4" + "\x00\x05" + "\x00\x00" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x00\x8C" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x01\xDF" + "\x00\x31" + "\x01\x02" + "\x00\x00" + "\x00\x00\x06" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + "\x00\x00\x00\x00\x00\x00" + string32(ulUnicodeRange1) + string32(ulUnicodeRange2) + string32(ulUnicodeRange3) + string32(ulUnicodeRange4) + "\x2A\x32\x31\x2A" + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + "\x00\x64" + string16(winAscent) + string16(winDescent) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + "\x00\x03"; +} +function createPostTable(properties) { + const angle = Math.floor(properties.italicAngle * 2 ** 16); + return "\x00\x03\x00\x00" + string32(angle) + "\x00\x00" + "\x00\x00" + string32(properties.fixedPitch ? 1 : 0) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00"; +} +function createPostscriptName(name) { + return name.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g, "").slice(0, 63); +} +function createNameTable(name, proto) { + if (!proto) { + proto = [[], []]; + } + const strings = [proto[0][0] || "Original licence", proto[0][1] || name, proto[0][2] || "Unknown", proto[0][3] || "uniqueID", proto[0][4] || name, proto[0][5] || "Version 0.11", proto[0][6] || createPostscriptName(name), proto[0][7] || "Unknown", proto[0][8] || "Unknown", proto[0][9] || "Unknown"]; + const stringsUnicode = []; + let i, ii, j, jj, str; + for (i = 0, ii = strings.length; i < ii; i++) { + str = proto[1][i] || strings[i]; + const strBufUnicode = []; + for (j = 0, jj = str.length; j < jj; j++) { + strBufUnicode.push(string16(str.charCodeAt(j))); + } + stringsUnicode.push(strBufUnicode.join("")); + } + const names = [strings, stringsUnicode]; + const platforms = ["\x00\x01", "\x00\x03"]; + const encodings = ["\x00\x00", "\x00\x01"]; + const languages = ["\x00\x00", "\x04\x09"]; + const namesRecordCount = strings.length * platforms.length; + let nameTable = "\x00\x00" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6); + let strOffset = 0; + for (i = 0, ii = platforms.length; i < ii; i++) { + const strs = names[i]; + for (j = 0, jj = strs.length; j < jj; j++) { + str = strs[j]; + const nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset); + nameTable += nameRecord; + strOffset += str.length; + } + } + nameTable += strings.join("") + stringsUnicode.join(""); + return nameTable; +} +class Font { + #charsCache = new Map(); + #glyphCache = new Map(); + charProcOperatorList; + constructor(name, file, properties, evaluatorOptions) { + this.name = name; + this.psName = null; + this.mimetype = null; + this.disableFontFace = evaluatorOptions.disableFontFace; + this.fontExtraProperties = evaluatorOptions.fontExtraProperties; + this.loadedName = properties.loadedName; + this.isType3Font = properties.isType3Font; + this.missingFile = false; + this.cssFontInfo = properties.cssFontInfo; + let isSerifFont = !!(properties.flags & FontFlags.Serif); + if (!isSerifFont && !properties.isSimulatedFlags) { + const stdFontMap = getStdFontMap(), + nonStdFontMap = getNonStdFontMap(), + serifFonts = getSerifFonts(); + for (const namePart of name.split("+")) { + let fontName = normalizeFontName(namePart); + fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; + fontName = fontName.split("-", 1)[0]; + if (serifFonts[fontName]) { + isSerifFont = true; + break; + } + } + } + this.isSerifFont = isSerifFont; + this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); + this.isMonospace = !!(properties.flags & FontFlags.FixedPitch); + let { + type, + subtype + } = properties; + this.type = type; + this.subtype = subtype; + this.systemFontInfo = properties.systemFontInfo; + const matches = name.match(/^InvalidPDFjsFont_(.*)_\d+$/); + this.isInvalidPDFjsFont = !!matches; + if (this.isInvalidPDFjsFont) { + this.fallbackName = matches[1]; + } else if (this.isMonospace) { + this.fallbackName = "monospace"; + } else if (this.isSerifFont) { + this.fallbackName = "serif"; + } else { + this.fallbackName = "sans-serif"; + } + if (this.systemFontInfo?.guessFallback) { + this.systemFontInfo.guessFallback = false; + this.systemFontInfo.css += `,${this.fallbackName}`; + } + this.differences = properties.differences; + this.widths = properties.widths; + this.defaultWidth = properties.defaultWidth; + this.composite = properties.composite; + this.cMap = properties.cMap; + this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS; + this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS; + this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; + this.lineHeight = this.ascent - this.descent; + this.fontMatrix = properties.fontMatrix; + this.bbox = properties.bbox; + this.defaultEncoding = properties.defaultEncoding; + this.toUnicode = properties.toUnicode; + this.toFontChar = []; + if (properties.type === "Type3") { + for (let charCode = 0; charCode < 256; charCode++) { + this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode]; + } + return; + } + this.cidEncoding = properties.cidEncoding || ""; + this.vertical = !!properties.vertical; + if (this.vertical) { + this.vmetrics = properties.vmetrics; + this.defaultVMetrics = properties.defaultVMetrics; + } + if (!file || file.isEmpty) { + if (file) { + warn('Font file is empty in "' + name + '" (' + this.loadedName + ")"); + } + this.fallbackToSystemFont(properties); + return; + } + [type, subtype] = getFontFileType(file, properties); + if (type !== this.type || subtype !== this.subtype) { + info("Inconsistent font file Type/SubType, expected: " + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`); + } + let data; + try { + switch (type) { + case "MMType1": + info("MMType1 font (" + name + "), falling back to Type1."); + case "Type1": + case "CIDFontType0": + this.mimetype = "font/opentype"; + const cff = subtype === "Type1C" || subtype === "CIDFontType0C" ? new CFFFont(file, properties) : new Type1Font(name, file, properties); + adjustWidths(properties); + data = this.convert(name, cff, properties); + break; + case "OpenType": + case "TrueType": + case "CIDFontType2": + this.mimetype = "font/opentype"; + data = this.checkAndRepair(name, file, properties); + adjustWidths(properties); + if (this.isOpenType) { + type = "OpenType"; + } + break; + default: + throw new FormatError(`Font ${type} is not supported`); + } + } catch (e) { + warn(e); + this.fallbackToSystemFont(properties); + return; + } + amendFallbackToUnicode(properties); + this.data = data; + this.type = type; + this.subtype = subtype; + this.fontMatrix = properties.fontMatrix; + this.widths = properties.widths; + this.defaultWidth = properties.defaultWidth; + this.toUnicode = properties.toUnicode; + this.seacMap = properties.seacMap; + } + get renderer() { + const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED); + return shadow(this, "renderer", renderer); + } + #getExportData(props) { + const data = Object.create(null); + for (const prop of props) { + const value = this[prop]; + if (value !== undefined) { + data[prop] = value; + } + } + return data; + } + exportData() { + return { + buffer: compileFontInfo(this.#getExportData(EXPORT_DATA_PROPERTIES)), + charProcOperatorList: this.charProcOperatorList, + extra: this.fontExtraProperties ? this.#getExportData(EXPORT_DATA_EXTRA_PROPERTIES) : undefined + }; + } + fallbackToSystemFont(properties) { + this.missingFile = true; + const { + name, + type + } = this; + let fontName = normalizeFontName(name); + const stdFontMap = getStdFontMap(), + nonStdFontMap = getNonStdFontMap(); + const isStandardFont = !!stdFontMap[fontName]; + const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); + fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; + const fontBasicMetricsMap = getFontBasicMetrics(); + const metrics = fontBasicMetricsMap[fontName]; + if (metrics) { + if (isNaN(this.ascent)) { + this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS; + } + if (isNaN(this.descent)) { + this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS; + } + if (isNaN(this.capHeight)) { + this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS; + } + } + this.bold = /bold/gi.test(fontName); + this.italic = /oblique|italic/gi.test(fontName); + this.black = /Black/g.test(name); + const isNarrow = /Narrow/g.test(name); + this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0; + if ((isStandardFont || isMappedToStandardFont) && type === "CIDFontType2" && this.cidEncoding.startsWith("Identity-")) { + const cidToGidMap = properties.cidToGidMap; + const map = []; + applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts()); + if (/Arial-?Black/i.test(name)) { + applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack()); + } else if (/Calibri/i.test(name)) { + applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri()); + } + if (cidToGidMap) { + for (const charCode in map) { + const cid = map[charCode]; + if (cidToGidMap[cid] !== undefined) { + map[+charCode] = cidToGidMap[cid]; + } + } + if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && this.toUnicode instanceof IdentityToUnicodeMap) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + const cid = map[charCode]; + if (cidToGidMap[cid] === undefined) { + map[+charCode] = unicodeCharCode; + } + }); + } + } + if (!(this.toUnicode instanceof IdentityToUnicodeMap)) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + map[+charCode] = unicodeCharCode; + }); + } + this.toFontChar = map; + this.toUnicode = new ToUnicodeMap(map); + } else if (/Symbol/i.test(fontName)) { + this.toFontChar = buildToFontChar(SymbolSetEncoding, getGlyphsUnicode(), this.differences); + } else if (/Dingbats/i.test(fontName)) { + this.toFontChar = buildToFontChar(ZapfDingbatsEncoding, getDingbatsGlyphsUnicode(), this.differences); + } else if (isStandardFont || isMappedToStandardFont) { + const map = buildToFontChar(this.defaultEncoding, getGlyphsUnicode(), this.differences); + if (type === "CIDFontType2" && !this.cidEncoding.startsWith("Identity-") && !(this.toUnicode instanceof IdentityToUnicodeMap)) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + map[+charCode] = unicodeCharCode; + }); + } + this.toFontChar = map; + } else { + const glyphsUnicodeMap = getGlyphsUnicode(); + const map = []; + this.toUnicode.forEach((charCode, unicodeCharCode) => { + if (!this.composite) { + const glyphName = this.differences[charCode] || this.defaultEncoding[charCode]; + const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap); + if (unicode !== -1) { + unicodeCharCode = unicode; + } + } + map[+charCode] = unicodeCharCode; + }); + if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) { + if (/Tahoma|Verdana/i.test(name)) { + applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts()); + } + } + this.toFontChar = map; + } + amendFallbackToUnicode(properties); + this.loadedName = fontName.split("-", 1)[0]; + } + checkAndRepair(name, font, properties) { + const VALID_TABLES = ["OS/2", "cmap", "head", "hhea", "hmtx", "maxp", "name", "post", "loca", "glyf", "fpgm", "prep", "cvt ", "CFF "]; + function readTables(file, numTables) { + const tables = Object.create(null); + tables["OS/2"] = null; + tables.cmap = null; + tables.head = null; + tables.hhea = null; + tables.hmtx = null; + tables.maxp = null; + tables.name = null; + tables.post = null; + for (let i = 0; i < numTables; i++) { + const table = readTableEntry(file); + if (!VALID_TABLES.includes(table.tag)) { + continue; + } + if (table.length === 0) { + continue; + } + tables[table.tag] = table; + } + return tables; + } + function readTableEntry(file) { + const tag = file.getString(4); + const checksum = file.getInt32() >>> 0; + const offset = file.getInt32() >>> 0; + const length = file.getInt32() >>> 0; + const previousPosition = file.pos; + file.pos = file.start || 0; + file.skip(offset); + const data = file.getBytes(length); + file.pos = previousPosition; + if (tag === "head") { + data[8] = data[9] = data[10] = data[11] = 0; + data[17] |= 0x20; + } + return { + tag, + checksum, + length, + offset, + data + }; + } + function readOpenTypeHeader(ttf) { + return { + version: ttf.getString(4), + numTables: ttf.getUint16(), + searchRange: ttf.getUint16(), + entrySelector: ttf.getUint16(), + rangeShift: ttf.getUint16() + }; + } + function readTrueTypeCollectionHeader(ttc) { + const ttcTag = ttc.getString(4); + assert(ttcTag === "ttcf", "Must be a TrueType Collection font."); + const majorVersion = ttc.getUint16(); + const minorVersion = ttc.getUint16(); + const numFonts = ttc.getInt32() >>> 0; + const offsetTable = []; + for (let i = 0; i < numFonts; i++) { + offsetTable.push(ttc.getInt32() >>> 0); + } + const header = { + ttcTag, + majorVersion, + minorVersion, + numFonts, + offsetTable + }; + switch (majorVersion) { + case 1: + return header; + case 2: + header.dsigTag = ttc.getInt32() >>> 0; + header.dsigLength = ttc.getInt32() >>> 0; + header.dsigOffset = ttc.getInt32() >>> 0; + return header; + } + throw new FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`); + } + function readTrueTypeCollectionData(ttc, fontName) { + const { + numFonts, + offsetTable + } = readTrueTypeCollectionHeader(ttc); + const fontNameParts = fontName.split("+"); + let fallbackData; + for (let i = 0; i < numFonts; i++) { + ttc.pos = (ttc.start || 0) + offsetTable[i]; + const potentialHeader = readOpenTypeHeader(ttc); + const potentialTables = readTables(ttc, potentialHeader.numTables); + if (!potentialTables.name) { + throw new FormatError('TrueType Collection font must contain a "name" table.'); + } + const [nameTable] = readNameTable(potentialTables.name); + for (let j = 0, jj = nameTable.length; j < jj; j++) { + for (let k = 0, kk = nameTable[j].length; k < kk; k++) { + const nameEntry = nameTable[j][k]?.replaceAll(/\s/g, ""); + if (!nameEntry) { + continue; + } + if (nameEntry === fontName) { + return { + header: potentialHeader, + tables: potentialTables + }; + } + if (fontNameParts.length < 2) { + continue; + } + for (const part of fontNameParts) { + if (nameEntry === part) { + fallbackData = { + name: part, + header: potentialHeader, + tables: potentialTables + }; + } + } + } + } + } + if (fallbackData) { + warn(`TrueType Collection does not contain "${fontName}" font, ` + `falling back to "${fallbackData.name}" font instead.`); + return { + header: fallbackData.header, + tables: fallbackData.tables + }; + } + throw new FormatError(`TrueType Collection does not contain "${fontName}" font.`); + } + function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) { + if (!cmap) { + warn("No cmap table available."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + let segment; + let start = (file.start || 0) + cmap.offset; + file.pos = start; + file.skip(2); + const numTables = file.getUint16(); + let potentialTable; + let canBreak = false; + for (let i = 0; i < numTables; i++) { + const platformId = file.getUint16(); + const encodingId = file.getUint16(); + const offset = file.getInt32() >>> 0; + let useTable = false; + if (potentialTable?.platformId === platformId && potentialTable?.encodingId === encodingId) { + continue; + } + if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) { + useTable = true; + } else if (platformId === 1 && encodingId === 0) { + useTable = true; + } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) { + useTable = true; + if (!isSymbolicFont) { + canBreak = true; + } + } else if (isSymbolicFont && platformId === 3 && encodingId === 0) { + useTable = true; + let correctlySorted = true; + if (i < numTables - 1) { + const nextBytes = file.peekBytes(2), + nextPlatformId = int16(nextBytes[0], nextBytes[1]); + if (nextPlatformId < platformId) { + correctlySorted = false; + } + } + if (correctlySorted) { + canBreak = true; + } + } + if (useTable) { + potentialTable = { + platformId, + encodingId, + offset + }; + } + if (canBreak) { + break; + } + } + if (potentialTable) { + file.pos = start + potentialTable.offset; + } + if (!potentialTable || file.peekByte() === -1) { + warn("Could not find a preferred cmap table."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + const format = file.getUint16(); + let hasShortCmap = false; + const mappings = []; + let j, glyphId; + if (format === 0) { + file.skip(2 + 2); + for (j = 0; j < 256; j++) { + const index = file.getByte(); + if (!index) { + continue; + } + mappings.push({ + charCode: j, + glyphId: index + }); + } + hasShortCmap = true; + } else if (format === 2) { + file.skip(2 + 2); + const subHeaderKeys = []; + let maxSubHeaderKey = 0; + for (let i = 0; i < 256; i++) { + const subHeaderKey = file.getUint16() >> 3; + subHeaderKeys.push(subHeaderKey); + maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey); + } + const subHeaders = []; + for (let i = 0; i <= maxSubHeaderKey; i++) { + subHeaders.push({ + firstCode: file.getUint16(), + entryCount: file.getUint16(), + idDelta: signedInt16(file.getByte(), file.getByte()), + idRangePos: file.pos + file.getUint16() + }); + } + for (let i = 0; i < 256; i++) { + if (subHeaderKeys[i] === 0) { + file.pos = subHeaders[0].idRangePos + 2 * i; + glyphId = file.getUint16(); + mappings.push({ + charCode: i, + glyphId + }); + } else { + const s = subHeaders[subHeaderKeys[i]]; + for (j = 0; j < s.entryCount; j++) { + const charCode = (i << 8) + j + s.firstCode; + file.pos = s.idRangePos + 2 * j; + glyphId = file.getUint16(); + if (glyphId !== 0) { + glyphId = (glyphId + s.idDelta) % 65536; + } + mappings.push({ + charCode, + glyphId + }); + } + } + } + } else if (format === 4) { + file.skip(2 + 2); + const segCount = file.getUint16() >> 1; + file.skip(6); + const segments = []; + let segIndex; + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments.push({ + end: file.getUint16() + }); + } + file.skip(2); + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments[segIndex].start = file.getUint16(); + } + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments[segIndex].delta = file.getUint16(); + } + let offsetsCount = 0, + offsetIndex; + for (segIndex = 0; segIndex < segCount; segIndex++) { + segment = segments[segIndex]; + const rangeOffset = file.getUint16(); + if (!rangeOffset) { + segment.offsetIndex = -1; + continue; + } + offsetIndex = (rangeOffset >> 1) - (segCount - segIndex); + segment.offsetIndex = offsetIndex; + offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1); + } + const offsets = []; + for (j = 0; j < offsetsCount; j++) { + offsets.push(file.getUint16()); + } + for (segIndex = 0; segIndex < segCount; segIndex++) { + segment = segments[segIndex]; + start = segment.start; + const end = segment.end; + const delta = segment.delta; + offsetIndex = segment.offsetIndex; + for (j = start; j <= end; j++) { + if (j === 0xffff) { + continue; + } + glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start]; + glyphId = glyphId + delta & 0xffff; + mappings.push({ + charCode: j, + glyphId + }); + } + } + } else if (format === 6) { + file.skip(2 + 2); + const firstCode = file.getUint16(); + const entryCount = file.getUint16(); + for (j = 0; j < entryCount; j++) { + glyphId = file.getUint16(); + const charCode = firstCode + j; + mappings.push({ + charCode, + glyphId + }); + } + } else if (format === 12) { + file.skip(2 + 4 + 4); + const nGroups = file.getInt32() >>> 0; + for (j = 0; j < nGroups; j++) { + const startCharCode = file.getInt32() >>> 0; + const endCharCode = file.getInt32() >>> 0; + let glyphCode = file.getInt32() >>> 0; + for (let charCode = startCharCode; charCode <= endCharCode; charCode++) { + mappings.push({ + charCode, + glyphId: glyphCode++ + }); + } + } + } else { + warn("cmap table has unsupported format: " + format); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + mappings.sort((a, b) => a.charCode - b.charCode); + const finalMappings = [], + seenCharCodes = new Set(); + for (const map of mappings) { + const { + charCode + } = map; + if (seenCharCodes.has(charCode)) { + continue; + } + seenCharCodes.add(charCode); + finalMappings.push(map); + } + return { + platformId: potentialTable.platformId, + encodingId: potentialTable.encodingId, + mappings: finalMappings, + hasShortCmap + }; + } + function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) { + if (!header) { + if (metrics) { + metrics.data = null; + } + return; + } + file.pos = (file.start || 0) + header.offset; + file.pos += 4; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + const caretOffset = file.getUint16(); + file.pos += 8; + file.pos += 2; + let numOfMetrics = file.getUint16(); + if (caretOffset !== 0) { + const macStyle = int16(headTable.data[44], headTable.data[45]); + if (!(macStyle & 2)) { + header.data[22] = 0; + header.data[23] = 0; + } + } + if (numOfMetrics > numGlyphs) { + info(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs (${numGlyphs}).`); + numOfMetrics = numGlyphs; + header.data[34] = (numOfMetrics & 0xff00) >> 8; + header.data[35] = numOfMetrics & 0x00ff; + } + const numOfSidebearings = numGlyphs - numOfMetrics; + const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1); + if (numMissing > 0) { + const entries = new Uint8Array(metrics.length + numMissing * 2); + entries.set(metrics.data); + if (dupFirstEntry) { + entries[metrics.length] = metrics.data[2]; + entries[metrics.length + 1] = metrics.data[3]; + } + metrics.data = entries; + } + } + function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) { + const glyphProfile = { + length: 0, + sizeOfInstructions: 0 + }; + if (sourceStart < 0 || sourceStart >= source.length || sourceEnd > source.length || sourceEnd - sourceStart <= 12) { + return glyphProfile; + } + const glyf = source.subarray(sourceStart, sourceEnd); + const xMin = signedInt16(glyf[2], glyf[3]); + const yMin = signedInt16(glyf[4], glyf[5]); + const xMax = signedInt16(glyf[6], glyf[7]); + const yMax = signedInt16(glyf[8], glyf[9]); + if (xMin > xMax) { + writeSignedInt16(glyf, 2, xMax); + writeSignedInt16(glyf, 6, xMin); + } + if (yMin > yMax) { + writeSignedInt16(glyf, 4, yMax); + writeSignedInt16(glyf, 8, yMin); + } + const contoursCount = signedInt16(glyf[0], glyf[1]); + if (contoursCount < 0) { + if (contoursCount < -1) { + return glyphProfile; + } + dest.set(glyf, destStart); + glyphProfile.length = glyf.length; + return glyphProfile; + } + let i, + j = 10, + flagsCount = 0; + for (i = 0; i < contoursCount; i++) { + const endPoint = glyf[j] << 8 | glyf[j + 1]; + flagsCount = endPoint + 1; + j += 2; + } + const instructionsStart = j; + const instructionsLength = glyf[j] << 8 | glyf[j + 1]; + glyphProfile.sizeOfInstructions = instructionsLength; + j += 2 + instructionsLength; + const instructionsEnd = j; + let coordinatesLength = 0; + for (i = 0; i < flagsCount; i++) { + const flag = glyf[j++]; + if (flag & 0xc0) { + glyf[j - 1] = flag & 0x3f; + } + let xLength = 2; + if (flag & 2) { + xLength = 1; + } else if (flag & 16) { + xLength = 0; + } + let yLength = 2; + if (flag & 4) { + yLength = 1; + } else if (flag & 32) { + yLength = 0; + } + const xyLength = xLength + yLength; + coordinatesLength += xyLength; + if (flag & 8) { + const repeat = glyf[j++]; + if (repeat === 0) { + glyf[j - 1] ^= 8; + } + i += repeat; + coordinatesLength += repeat * xyLength; + } + } + if (coordinatesLength === 0) { + return glyphProfile; + } + let glyphDataLength = j + coordinatesLength; + if (glyphDataLength > glyf.length) { + return glyphProfile; + } + if (!hintsValid && instructionsLength > 0) { + dest.set(glyf.subarray(0, instructionsStart), destStart); + dest.set([0, 0], destStart + instructionsStart); + dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2); + glyphDataLength -= instructionsLength; + if (glyf.length - glyphDataLength > 3) { + glyphDataLength = glyphDataLength + 3 & ~3; + } + glyphProfile.length = glyphDataLength; + return glyphProfile; + } + if (glyf.length - glyphDataLength > 3) { + glyphDataLength = glyphDataLength + 3 & ~3; + dest.set(glyf.subarray(0, glyphDataLength), destStart); + glyphProfile.length = glyphDataLength; + return glyphProfile; + } + dest.set(glyf, destStart); + glyphProfile.length = glyf.length; + return glyphProfile; + } + function sanitizeHead(head, numGlyphs, locaLength) { + const data = head.data; + const version = int32(data[0], data[1], data[2], data[3]); + if (version >> 16 !== 1) { + info("Attempting to fix invalid version in head table: " + version); + data[0] = 0; + data[1] = 1; + data[2] = 0; + data[3] = 0; + } + const indexToLocFormat = int16(data[50], data[51]); + if (indexToLocFormat < 0 || indexToLocFormat > 1) { + info("Attempting to fix invalid indexToLocFormat in head table: " + indexToLocFormat); + const numGlyphsPlusOne = numGlyphs + 1; + if (locaLength === numGlyphsPlusOne << 1) { + data[50] = 0; + data[51] = 0; + } else if (locaLength === numGlyphsPlusOne << 2) { + data[50] = 0; + data[51] = 1; + } else { + throw new FormatError("Could not fix indexToLocFormat: " + indexToLocFormat); + } + } + } + function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) { + let itemSize, itemDecode, itemEncode; + if (isGlyphLocationsLong) { + itemSize = 4; + itemDecode = function fontItemDecodeLong(data, offset) { + return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; + }; + itemEncode = function fontItemEncodeLong(data, offset, value) { + data[offset] = value >>> 24 & 0xff; + data[offset + 1] = value >> 16 & 0xff; + data[offset + 2] = value >> 8 & 0xff; + data[offset + 3] = value & 0xff; + }; + } else { + itemSize = 2; + itemDecode = function fontItemDecode(data, offset) { + return data[offset] << 9 | data[offset + 1] << 1; + }; + itemEncode = function fontItemEncode(data, offset, value) { + data[offset] = value >> 9 & 0xff; + data[offset + 1] = value >> 1 & 0xff; + }; + } + const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs; + const locaDataSize = itemSize * (1 + numGlyphsOut); + const locaData = new Uint8Array(locaDataSize); + locaData.set(loca.data.subarray(0, locaDataSize)); + loca.data = locaData; + const oldGlyfData = glyf.data; + const oldGlyfDataLength = oldGlyfData.length; + const newGlyfData = new Uint8Array(oldGlyfDataLength); + let i, j; + const locaEntries = []; + for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) { + let offset = itemDecode(locaData, j); + if (offset > oldGlyfDataLength) { + offset = oldGlyfDataLength; + } + locaEntries.push({ + index: i, + offset, + endOffset: 0 + }); + } + locaEntries.sort((a, b) => a.offset - b.offset); + for (i = 0; i < numGlyphs; i++) { + locaEntries[i].endOffset = locaEntries[i + 1].offset; + } + locaEntries.sort((a, b) => a.index - b.index); + for (i = 0; i < numGlyphs; i++) { + const { + offset, + endOffset + } = locaEntries[i]; + if (offset !== 0 || endOffset !== 0) { + break; + } + const nextOffset = locaEntries[i + 1].offset; + if (nextOffset === 0) { + continue; + } + locaEntries[i].endOffset = nextOffset; + break; + } + const last = locaEntries.at(-2); + if (last.offset !== 0 && last.endOffset === 0) { + last.endOffset = oldGlyfDataLength; + } + const missingGlyphs = Object.create(null); + let writeOffset = 0; + itemEncode(locaData, 0, writeOffset); + for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { + const glyphProfile = sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid); + const newLength = glyphProfile.length; + if (newLength === 0) { + missingGlyphs[i] = true; + } + if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) { + maxSizeOfInstructions = glyphProfile.sizeOfInstructions; + } + writeOffset += newLength; + itemEncode(locaData, j, writeOffset); + } + if (writeOffset === 0) { + const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]); + for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) { + itemEncode(locaData, j, simpleGlyph.length); + } + glyf.data = simpleGlyph; + } else if (dupFirstEntry) { + const firstEntryLength = itemDecode(locaData, itemSize); + if (newGlyfData.length > firstEntryLength + writeOffset) { + glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset); + } else { + glyf.data = new Uint8Array(firstEntryLength + writeOffset); + glyf.data.set(newGlyfData.subarray(0, writeOffset)); + } + glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset); + itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength); + } else { + glyf.data = newGlyfData.subarray(0, writeOffset); + } + return { + missingGlyphs, + maxSizeOfInstructions + }; + } + function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) { + const start = (font.start || 0) + post.offset; + font.pos = start; + const length = post.length, + end = start + length; + const version = font.getInt32(); + font.skip(28); + let glyphNames; + let valid = true; + let i; + switch (version) { + case 0x00010000: + glyphNames = MacStandardGlyphOrdering; + break; + case 0x00020000: + const numGlyphs = font.getUint16(); + if (numGlyphs !== maxpNumGlyphs) { + valid = false; + break; + } + const glyphNameIndexes = []; + for (i = 0; i < numGlyphs; ++i) { + const index = font.getUint16(); + if (index >= 32768) { + valid = false; + break; + } + glyphNameIndexes.push(index); + } + if (!valid) { + break; + } + const customNames = []; + while (font.pos < end) { + const strLen = font.getByte(), + str = font.getString(strLen); + customNames.push(str); + } + glyphNames = []; + for (i = 0; i < numGlyphs; ++i) { + const j = glyphNameIndexes[i]; + if (j < 258) { + glyphNames.push(MacStandardGlyphOrdering[j]); + continue; + } + glyphNames.push(customNames[j - 258]); + } + break; + case 0x00030000: + break; + default: + warn("Unknown/unsupported post table version " + version); + valid = false; + if (propertiesObj.defaultEncoding) { + glyphNames = propertiesObj.defaultEncoding; + } + break; + } + propertiesObj.glyphNames = glyphNames; + return valid; + } + function readNameTable(nameTable) { + const start = (font.start || 0) + nameTable.offset; + font.pos = start; + const names = [[], []], + records = []; + const length = nameTable.length, + end = start + length; + const format = font.getUint16(); + const FORMAT_0_HEADER_LENGTH = 6; + if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) { + return [names, records]; + } + const numRecords = font.getUint16(); + const stringsStart = font.getUint16(); + const NAME_RECORD_LENGTH = 12; + let i, ii; + for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) { + const r = { + platform: font.getUint16(), + encoding: font.getUint16(), + language: font.getUint16(), + name: font.getUint16(), + length: font.getUint16(), + offset: font.getUint16() + }; + if (isMacNameRecord(r) || isWinNameRecord(r)) { + records.push(r); + } + } + for (i = 0, ii = records.length; i < ii; i++) { + const record = records[i]; + if (record.length <= 0) { + continue; + } + const pos = start + stringsStart + record.offset; + if (pos + record.length > end) { + continue; + } + font.pos = pos; + const nameIndex = record.name; + if (record.encoding) { + let str = ""; + for (let j = 0, jj = record.length; j < jj; j += 2) { + str += String.fromCharCode(font.getUint16()); + } + names[1][nameIndex] = str; + } else { + names[0][nameIndex] = font.getString(record.length); + } + } + return [names, records]; + } + const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2]; + function sanitizeTTProgram(table, ttContext) { + let data = table.data; + let i = 0, + j, + n, + b, + funcId, + pc, + lastEndf = 0, + lastDeff = 0; + const stack = []; + const callstack = []; + const functionsCalled = []; + let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions; + let inFDEF = false, + ifLevel = 0, + inELSE = 0; + for (let ii = data.length; i < ii;) { + const op = data[i++]; + if (op === 0x40) { + n = data[i++]; + if (inFDEF || inELSE) { + i += n; + } else { + for (j = 0; j < n; j++) { + stack.push(data[i++]); + } + } + } else if (op === 0x41) { + n = data[i++]; + if (inFDEF || inELSE) { + i += n * 2; + } else { + for (j = 0; j < n; j++) { + b = data[i++]; + stack.push(b << 8 | data[i++]); + } + } + } else if ((op & 0xf8) === 0xb0) { + n = op - 0xb0 + 1; + if (inFDEF || inELSE) { + i += n; + } else { + for (j = 0; j < n; j++) { + stack.push(data[i++]); + } + } + } else if ((op & 0xf8) === 0xb8) { + n = op - 0xb8 + 1; + if (inFDEF || inELSE) { + i += n * 2; + } else { + for (j = 0; j < n; j++) { + b = data[i++]; + stack.push(signedInt16(b, data[i++])); + } + } + } else if (op === 0x2b && !tooComplexToFollowFunctions) { + if (!inFDEF && !inELSE) { + funcId = stack.at(-1); + if (isNaN(funcId)) { + info("TT: CALL empty stack (or invalid entry)."); + } else { + ttContext.functionsUsed[funcId] = true; + if (funcId in ttContext.functionsStackDeltas) { + const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId]; + if (newStackLength < 0) { + warn("TT: CALL invalid functions stack delta."); + ttContext.hintsValid = false; + return; + } + stack.length = newStackLength; + } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) { + callstack.push({ + data, + i, + stackTop: stack.length - 1 + }); + functionsCalled.push(funcId); + pc = ttContext.functionsDefined[funcId]; + if (!pc) { + warn("TT: CALL non-existent function"); + ttContext.hintsValid = false; + return; + } + data = pc.data; + i = pc.i; + } + } + } + } else if (op === 0x2c && !tooComplexToFollowFunctions) { + if (inFDEF || inELSE) { + warn("TT: nested FDEFs not allowed"); + tooComplexToFollowFunctions = true; + } + inFDEF = true; + lastDeff = i; + funcId = stack.pop(); + ttContext.functionsDefined[funcId] = { + data, + i + }; + } else if (op === 0x2d) { + if (inFDEF) { + inFDEF = false; + lastEndf = i; + } else { + pc = callstack.pop(); + if (!pc) { + warn("TT: ENDF bad stack"); + ttContext.hintsValid = false; + return; + } + funcId = functionsCalled.pop(); + data = pc.data; + i = pc.i; + ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop; + } + } else if (op === 0x89) { + if (inFDEF || inELSE) { + warn("TT: nested IDEFs not allowed"); + tooComplexToFollowFunctions = true; + } + inFDEF = true; + lastDeff = i; + } else if (op === 0x58) { + ++ifLevel; + } else if (op === 0x1b) { + inELSE = ifLevel; + } else if (op === 0x59) { + if (inELSE === ifLevel) { + inELSE = 0; + } + --ifLevel; + } else if (op === 0x1c) { + if (!inFDEF && !inELSE) { + const offset = stack.at(-1); + if (offset > 0) { + i += offset - 1; + } + } + } + if (!inFDEF && !inELSE) { + let stackDelta = 0; + if (op <= 0x8e) { + stackDelta = TTOpsStackDeltas[op]; + } else if (op >= 0xc0 && op <= 0xdf) { + stackDelta = -1; + } else if (op >= 0xe0) { + stackDelta = -2; + } + if (op >= 0x71 && op <= 0x75) { + n = stack.pop(); + if (!isNaN(n)) { + stackDelta = -n * 2; + } + } + while (stackDelta < 0 && stack.length > 0) { + stack.pop(); + stackDelta++; + } + while (stackDelta > 0) { + stack.push(NaN); + stackDelta--; + } + } + } + ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions; + const content = [data]; + if (i > data.length) { + content.push(new Uint8Array(i - data.length)); + } + if (lastDeff > lastEndf) { + warn("TT: complementing a missing function tail"); + content.push(new Uint8Array([0x22, 0x2d])); + } + foldTTTable(table, content); + } + function checkInvalidFunctions(ttContext, maxFunctionDefs) { + if (ttContext.tooComplexToFollowFunctions) { + return; + } + if (ttContext.functionsDefined.length > maxFunctionDefs) { + warn("TT: more functions defined than expected"); + ttContext.hintsValid = false; + return; + } + for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) { + if (j > maxFunctionDefs) { + warn("TT: invalid function id: " + j); + ttContext.hintsValid = false; + return; + } + if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) { + warn("TT: undefined function: " + j); + ttContext.hintsValid = false; + return; + } + } + } + function foldTTTable(table, content) { + if (content.length > 1) { + let newLength = 0; + let j, jj; + for (j = 0, jj = content.length; j < jj; j++) { + newLength += content[j].length; + } + newLength = newLength + 3 & ~3; + const result = new Uint8Array(newLength); + let pos = 0; + for (j = 0, jj = content.length; j < jj; j++) { + result.set(content[j], pos); + pos += content[j].length; + } + table.data = result; + table.length = newLength; + } + } + function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) { + const ttContext = { + functionsDefined: [], + functionsUsed: [], + functionsStackDeltas: [], + tooComplexToFollowFunctions: false, + hintsValid: true + }; + if (fpgm) { + sanitizeTTProgram(fpgm, ttContext); + } + if (prep) { + sanitizeTTProgram(prep, ttContext); + } + if (fpgm) { + checkInvalidFunctions(ttContext, maxFunctionDefs); + } + if (cvt && cvt.length & 1) { + const cvtData = new Uint8Array(cvt.length + 1); + cvtData.set(cvt.data); + cvt.data = cvtData; + } + return ttContext.hintsValid; + } + font = new Stream(new Uint8Array(font.getBytes())); + let header, tables; + if (isTrueTypeCollectionFile(font)) { + const ttcData = readTrueTypeCollectionData(font, this.name); + header = ttcData.header; + tables = ttcData.tables; + } else { + header = readOpenTypeHeader(font); + tables = readTables(font, header.numTables); + } + const isTrueType = !tables["CFF "]; + if (!isTrueType) { + if (header.version === "OTTO" && !properties.composite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) { + return this.convert(name, new CFFFont(new Stream(tables["CFF "].data), properties), properties); + } + delete tables.glyf; + delete tables.loca; + delete tables.fpgm; + delete tables.prep; + delete tables["cvt "]; + this.isOpenType = true; + } else { + if (!tables.loca) { + throw new FormatError('Required "loca" table is not found'); + } + if (!tables.glyf) { + warn('Required "glyf" table is not found -- trying to recover.'); + tables.glyf = { + tag: "glyf", + data: new Uint8Array(0) + }; + } + this.isOpenType = false; + } + if (!tables.maxp) { + throw new FormatError('Required "maxp" table is not found'); + } + let numGlyphsFromCFF; + if (!isTrueType) { + try { + const parser = new CFFParser(new Stream(tables["CFF "].data), properties, SEAC_ANALYSIS_ENABLED); + const cff = parser.parse(); + cff.duplicateFirstGlyph(); + const compiler = new CFFCompiler(cff); + tables["CFF "].data = compiler.compile(); + numGlyphsFromCFF = cff.charStringCount; + } catch { + warn("Failed to compile font " + properties.loadedName); + } + } + font.pos = (font.start || 0) + tables.maxp.offset; + let version = font.getInt32(); + const numGlyphs = numGlyphsFromCFF ?? font.getUint16(); + if (version === 0x00005000 && tables.maxp.length !== 6) { + tables.maxp.data = tables.maxp.data.subarray(0, 6); + tables.maxp.length = 6; + } + if (version !== 0x00010000 && version !== 0x00005000) { + if (tables.maxp.length === 6) { + version = 0x0005000; + } else if (tables.maxp.length >= 32) { + version = 0x00010000; + } else { + throw new FormatError(`"maxp" table has a wrong version number`); + } + writeUint32(tables.maxp.data, 0, version); + } + let isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]); + if (tables.loca) { + const locaLength = isGlyphLocationsLong ? (numGlyphs + 1) * 4 : (numGlyphs + 1) * 2; + if (tables.loca.length !== locaLength) { + warn("Incorrect 'loca' table length -- attempting to fix it."); + const sortedTables = Object.values(tables).filter(Boolean).sort((a, b) => a.offset - b.offset); + const locaIndex = sortedTables.indexOf(tables.loca); + const nextTable = sortedTables[locaIndex + 1] || null; + if (nextTable && tables.loca.offset + locaLength < nextTable.offset) { + const previousPos = font.pos; + font.pos = font.start || 0; + font.skip(tables.loca.offset); + tables.loca.data = font.getBytes(locaLength); + tables.loca.length = locaLength; + font.pos = previousPos; + } + } + } + if (properties.scaleFactors?.length === numGlyphs && isTrueType) { + const { + scaleFactors + } = properties; + const glyphs = new GlyfTable({ + glyfTable: tables.glyf.data, + isGlyphLocationsLong, + locaTable: tables.loca.data, + numGlyphs + }); + glyphs.scale(scaleFactors); + const { + glyf, + loca, + isLocationLong + } = glyphs.write(); + tables.glyf.data = glyf; + tables.loca.data = loca; + if (isLocationLong !== !!isGlyphLocationsLong) { + tables.head.data[50] = 0; + isGlyphLocationsLong = tables.head.data[51] = isLocationLong ? 1 : 0; + } + const metrics = tables.hmtx.data; + for (let i = 0; i < numGlyphs; i++) { + const j = 4 * i; + const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1])); + metrics[j] = advanceWidth >> 8 & 0xff; + metrics[j + 1] = advanceWidth & 0xff; + const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])); + writeSignedInt16(metrics, j + 2, lsb); + } + } + let numGlyphsOut = numGlyphs + 1; + let dupFirstEntry = true; + if (numGlyphsOut > 0xffff) { + dupFirstEntry = false; + numGlyphsOut = numGlyphs; + warn("Not enough space in glyfs to duplicate first glyph."); + } + let maxFunctionDefs = 0; + let maxSizeOfInstructions = 0; + if (version >= 0x00010000 && tables.maxp.length >= 32) { + font.pos += 8; + const maxZones = font.getUint16(); + if (maxZones > 2) { + tables.maxp.data[14] = 0; + tables.maxp.data[15] = 2; + } + font.pos += 4; + maxFunctionDefs = font.getUint16(); + font.pos += 4; + maxSizeOfInstructions = font.getUint16(); + } + tables.maxp.data[4] = numGlyphsOut >> 8; + tables.maxp.data[5] = numGlyphsOut & 255; + const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables["cvt "], maxFunctionDefs); + if (!hintsValid) { + delete tables.fpgm; + delete tables.prep; + delete tables["cvt "]; + } + sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry); + if (!tables.head) { + throw new FormatError('Required "head" table is not found'); + } + sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0); + let missingGlyphs = Object.create(null); + if (isTrueType) { + const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions); + missingGlyphs = glyphsInfo.missingGlyphs; + if (version >= 0x00010000 && tables.maxp.length >= 32) { + tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8; + tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255; + } + } + if (!tables.hhea) { + throw new FormatError('Required "hhea" table is not found'); + } + if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) { + tables.hhea.data[10] = 0xff; + tables.hhea.data[11] = 0xff; + } + const metricsOverride = { + unitsPerEm: int16(tables.head.data[18], tables.head.data[19]), + yMax: signedInt16(tables.head.data[42], tables.head.data[43]), + yMin: signedInt16(tables.head.data[38], tables.head.data[39]), + ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]), + descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]), + lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]) + }; + this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm; + this.descent = metricsOverride.descent / metricsOverride.unitsPerEm; + this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm; + if (this.cssFontInfo?.lineHeight) { + this.lineHeight = this.cssFontInfo.metrics.lineHeight; + this.lineGap = this.cssFontInfo.metrics.lineGap; + } else { + this.lineHeight = this.ascent - this.descent + this.lineGap; + } + if (tables.post) { + readPostScriptTable(tables.post, properties, numGlyphs); + } + tables.post = { + tag: "post", + data: createPostTable(properties) + }; + const charCodeToGlyphId = Object.create(null); + function hasGlyph(glyphId) { + return !missingGlyphs[glyphId]; + } + if (properties.composite) { + const cidToGidMap = properties.cidToGidMap || []; + const isCidToGidMapEmpty = cidToGidMap.length === 0; + properties.cMap.forEach(function (charCode, cid) { + if (typeof cid === "string") { + cid = convertCidString(charCode, cid, true); + } + if (cid > 0xffff) { + throw new FormatError("Max size of CID is 65,535"); + } + let glyphId = -1; + if (isCidToGidMapEmpty) { + glyphId = cid; + } else if (cidToGidMap[cid] !== undefined) { + glyphId = cidToGidMap[cid]; + } + if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) { + charCodeToGlyphId[charCode] = glyphId; + } + }); + } else { + const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding); + const cmapPlatformId = cmapTable.platformId; + const cmapEncodingId = cmapTable.encodingId; + const cmapMappings = cmapTable.mappings; + let baseEncoding = [], + forcePostTable = false; + if (properties.hasEncoding && (properties.baseEncodingName === "MacRomanEncoding" || properties.baseEncodingName === "WinAnsiEncoding")) { + baseEncoding = getEncoding(properties.baseEncodingName); + } + if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) { + const glyphsUnicodeMap = getGlyphsUnicode(); + for (let charCode = 0; charCode < 256; charCode++) { + let glyphName; + if (this.differences[charCode] !== undefined) { + glyphName = this.differences[charCode]; + } else if (baseEncoding.length && baseEncoding[charCode] !== "") { + glyphName = baseEncoding[charCode]; + } else { + glyphName = StandardEncoding[charCode]; + } + if (!glyphName) { + continue; + } + const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); + let unicodeOrCharCode; + if (cmapPlatformId === 3 && cmapEncodingId === 1) { + unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName]; + } else if (cmapPlatformId === 1 && cmapEncodingId === 0) { + unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName); + } + if (unicodeOrCharCode === undefined) { + if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof IdentityToUnicodeMap)) { + const unicode = this.toUnicode.get(charCode); + if (unicode) { + unicodeOrCharCode = unicode.codePointAt(0); + } + } + if (unicodeOrCharCode === undefined) { + continue; + } + } + for (const mapping of cmapMappings) { + if (mapping.charCode !== unicodeOrCharCode) { + continue; + } + charCodeToGlyphId[charCode] = mapping.glyphId; + break; + } + } + } else if (cmapPlatformId === 0) { + for (const mapping of cmapMappings) { + charCodeToGlyphId[mapping.charCode] = mapping.glyphId; + } + forcePostTable = true; + } else if (cmapPlatformId === 3 && cmapEncodingId === 0) { + for (const mapping of cmapMappings) { + let charCode = mapping.charCode; + if (charCode >= 0xf000 && charCode <= 0xf0ff) { + charCode &= 0xff; + } + charCodeToGlyphId[charCode] = mapping.glyphId; + } + } else { + for (const mapping of cmapMappings) { + charCodeToGlyphId[mapping.charCode] = mapping.glyphId; + } + } + if (properties.glyphNames && (baseEncoding.length || this.differences.length)) { + for (let i = 0; i < 256; ++i) { + if (!forcePostTable && charCodeToGlyphId[i] !== undefined) { + continue; + } + const glyphName = this.differences[i] || baseEncoding[i]; + if (!glyphName) { + continue; + } + const glyphId = properties.glyphNames.indexOf(glyphName); + if (glyphId > 0 && hasGlyph(glyphId)) { + charCodeToGlyphId[i] = glyphId; + } + } + } + } + if (charCodeToGlyphId.length === 0) { + charCodeToGlyphId[0] = 0; + } + let glyphZeroId = numGlyphsOut - 1; + if (!dupFirstEntry) { + glyphZeroId = 0; + } + if (!properties.cssFontInfo) { + const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId, this.toUnicode); + this.toFontChar = newMapping.toFontChar; + tables.cmap = { + tag: "cmap", + data: createCmapTable(newMapping.charCodeToGlyphId, newMapping.toUnicodeExtraMap, numGlyphsOut) + }; + if (!tables["OS/2"] || !validateOS2Table(tables["OS/2"], font)) { + tables["OS/2"] = { + tag: "OS/2", + data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride) + }; + } + } + if (!tables.name) { + tables.name = { + tag: "name", + data: createNameTable(this.name) + }; + } else { + const [namePrototype, nameRecords] = readNameTable(tables.name); + tables.name.data = createNameTable(name, namePrototype); + this.psName = namePrototype[0][6] || null; + if (!properties.composite) { + adjustTrueTypeToUnicode(properties, this.isSymbolicFont, nameRecords); + } + } + const builder = new OpenTypeFileBuilder(header.version); + for (const tableTag in tables) { + builder.addTable(tableTag, tables[tableTag].data); + } + return builder.toArray(); + } + convert(fontName, font, properties) { + properties.fixedPitch = false; + if (properties.builtInEncoding) { + adjustType1ToUnicode(properties, properties.builtInEncoding); + } + let glyphZeroId = 1; + if (font instanceof CFFFont) { + glyphZeroId = font.numGlyphs - 1; + } + const mapping = font.getGlyphMapping(properties); + let newMapping = null; + let newCharCodeToGlyphId = mapping; + let toUnicodeExtraMap = null; + if (!properties.cssFontInfo) { + newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId, this.toUnicode); + this.toFontChar = newMapping.toFontChar; + newCharCodeToGlyphId = newMapping.charCodeToGlyphId; + toUnicodeExtraMap = newMapping.toUnicodeExtraMap; + } + const numGlyphs = font.numGlyphs; + function getCharCodes(charCodeToGlyphId, glyphId) { + let charCodes = null; + for (const charCode in charCodeToGlyphId) { + if (glyphId === charCodeToGlyphId[charCode]) { + (charCodes ||= []).push(charCode | 0); + } + } + return charCodes; + } + function createCharCode(charCodeToGlyphId, glyphId) { + for (const charCode in charCodeToGlyphId) { + if (glyphId === charCodeToGlyphId[charCode]) { + return charCode | 0; + } + } + newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId; + return newMapping.nextAvailableFontCharCode++; + } + const seacs = font.seacs; + if (newMapping && SEAC_ANALYSIS_ENABLED && seacs?.length) { + const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX; + const charset = font.getCharset(); + const seacMap = Object.create(null); + for (let glyphId in seacs) { + glyphId |= 0; + const seac = seacs[glyphId]; + const baseGlyphName = StandardEncoding[seac[2]]; + const accentGlyphName = StandardEncoding[seac[3]]; + const baseGlyphId = charset.indexOf(baseGlyphName); + const accentGlyphId = charset.indexOf(accentGlyphName); + if (baseGlyphId < 0 || accentGlyphId < 0) { + continue; + } + const accentOffset = { + x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4], + y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5] + }; + const charCodes = getCharCodes(mapping, glyphId); + if (!charCodes) { + continue; + } + for (const charCode of charCodes) { + const charCodeToGlyphId = newMapping.charCodeToGlyphId; + const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId); + const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId); + seacMap[charCode] = { + baseFontCharCode, + accentFontCharCode, + accentOffset + }; + } + } + properties.seacMap = seacMap; + } + const unitsPerEm = properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000; + const builder = new OpenTypeFileBuilder("\x4F\x54\x54\x4F"); + builder.addTable("CFF ", font.data); + builder.addTable("OS/2", createOS2Table(properties, newCharCodeToGlyphId)); + builder.addTable("cmap", createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs)); + builder.addTable("head", "\x00\x01\x00\x00" + "\x00\x00\x10\x00" + "\x00\x00\x00\x00" + "\x5F\x0F\x3C\xF5" + "\x00\x00" + safeString16(unitsPerEm) + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00" + safeString16(properties.descent) + "\x0F\xFF" + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + "\x00\x11" + "\x00\x00" + "\x00\x00" + "\x00\x00"); + builder.addTable("hhea", "\x00\x01\x00\x00" + safeString16(properties.ascent) + safeString16(properties.descent) + "\x00\x00" + "\xFF\xFF" + "\x00\x00" + "\x00\x00" + "\x00\x00" + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + string16(numGlyphs)); + builder.addTable("hmtx", function fontFieldsHmtx() { + const charstrings = font.charstrings; + const cffWidths = font.cff ? font.cff.widths : null; + let hmtx = "\x00\x00\x00\x00"; + for (let i = 1, ii = numGlyphs; i < ii; i++) { + let width = 0; + if (charstrings) { + const charstring = charstrings[i - 1]; + width = "width" in charstring ? charstring.width : 0; + } else if (cffWidths) { + width = Math.ceil(cffWidths[i] || 0); + } + hmtx += string16(width) + string16(0); + } + return hmtx; + }()); + builder.addTable("maxp", "\x00\x00\x50\x00" + string16(numGlyphs)); + builder.addTable("name", createNameTable(fontName)); + builder.addTable("post", createPostTable(properties)); + return builder.toArray(); + } + get _spaceWidth() { + const possibleSpaceReplacements = ["space", "minus", "one", "i", "I"]; + let width; + for (const glyphName of possibleSpaceReplacements) { + if (glyphName in this.widths) { + width = this.widths[glyphName]; + break; + } + const glyphsUnicodeMap = getGlyphsUnicode(); + const glyphUnicode = glyphsUnicodeMap[glyphName]; + let charcode = 0; + if (this.composite && this.cMap.contains(glyphUnicode)) { + charcode = this.cMap.lookup(glyphUnicode); + if (typeof charcode === "string") { + charcode = convertCidString(glyphUnicode, charcode); + } + } + if (!charcode && this.toUnicode) { + charcode = this.toUnicode.charCodeOf(glyphUnicode); + } + if (charcode <= 0) { + charcode = glyphUnicode; + } + width = this.widths[charcode]; + if (width) { + break; + } + } + return shadow(this, "_spaceWidth", width || this.defaultWidth); + } + _charToGlyph(charcode, isSpace = false) { + let glyph = this.#glyphCache.get(charcode); + if (glyph?.isSpace === isSpace) { + return glyph; + } + let fontCharCode, width, operatorListId; + let widthCode = charcode; + if (this.cMap?.contains(charcode)) { + widthCode = this.cMap.lookup(charcode); + if (typeof widthCode === "string") { + widthCode = convertCidString(charcode, widthCode); + } + } + width = this.widths[widthCode]; + if (typeof width !== "number") { + width = this.defaultWidth; + } + const vmetric = this.vmetrics?.[widthCode] || this.defaultVMetrics; + let unicode = this.toUnicode.get(charcode) || charcode; + if (typeof unicode === "number") { + unicode = String.fromCharCode(unicode); + } + let isInFont = this.toFontChar[charcode] !== undefined; + fontCharCode = this.toFontChar[charcode] || charcode; + if (this.missingFile) { + const glyphName = this.differences[charcode] || this.defaultEncoding[charcode]; + if ((glyphName === ".notdef" || glyphName === "") && this.type === "Type1") { + fontCharCode = 0x20; + if (glyphName === "") { + width ||= this._spaceWidth; + unicode = String.fromCharCode(fontCharCode); + } + } + fontCharCode = mapSpecialUnicodeValues(fontCharCode); + } + if (this.isType3Font) { + operatorListId = fontCharCode; + } + let accent = null; + if (this.seacMap?.[charcode]) { + isInFont = true; + const seac = this.seacMap[charcode]; + fontCharCode = seac.baseFontCharCode; + accent = { + fontChar: String.fromCodePoint(seac.accentFontCharCode), + offset: seac.accentOffset + }; + } + let fontChar = ""; + if (typeof fontCharCode === "number") { + if (fontCharCode <= 0x10ffff) { + fontChar = String.fromCodePoint(fontCharCode); + } else { + warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`); + } + } + if (this.missingFile && this.vertical && fontChar.length === 1) { + const vertical = getVerticalPresentationForm()[fontChar.charCodeAt(0)]; + if (vertical) { + fontChar = unicode = String.fromCharCode(vertical); + } + } + glyph = new fonts_Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont); + this.#glyphCache.set(charcode, glyph); + return glyph; + } + charsToGlyphs(chars) { + let glyphs = this.#charsCache.get(chars); + if (glyphs) { + return glyphs; + } + glyphs = []; + if (this.cMap) { + const c = Object.create(null), + ii = chars.length; + let i = 0; + while (i < ii) { + this.cMap.readCharCode(chars, i, c); + const { + charcode, + length + } = c; + i += length; + const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20); + glyphs.push(glyph); + } + } else { + for (let i = 0, ii = chars.length; i < ii; ++i) { + const charcode = chars.charCodeAt(i); + const glyph = this._charToGlyph(charcode, charcode === 0x20); + glyphs.push(glyph); + } + } + this.#charsCache.set(chars, glyphs); + return glyphs; + } + getCharPositions(chars) { + const positions = []; + if (this.cMap) { + const c = Object.create(null); + let i = 0; + while (i < chars.length) { + this.cMap.readCharCode(chars, i, c); + const length = c.length; + positions.push([i, i + length]); + i += length; + } + } else { + for (let i = 0, ii = chars.length; i < ii; ++i) { + positions.push([i, i + 1]); + } + } + return positions; + } + get glyphCacheValues() { + return this.#glyphCache.values(); + } + encodeString(str) { + const buffers = []; + const currentBuf = []; + const hasCurrentBufErrors = () => buffers.length % 2 === 1; + const getCharCode = this.toUnicode instanceof IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode)); + for (let i = 0, ii = str.length; i < ii; i++) { + const unicode = str.codePointAt(i); + if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) { + i++; + } + if (this.toUnicode) { + const charCode = getCharCode(unicode); + if (charCode !== -1) { + if (hasCurrentBufErrors()) { + buffers.push(currentBuf.join("")); + currentBuf.length = 0; + } + const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1; + for (let j = charCodeLength - 1; j >= 0; j--) { + currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff)); + } + continue; + } + } + if (!hasCurrentBufErrors()) { + buffers.push(currentBuf.join("")); + currentBuf.length = 0; + } + currentBuf.push(String.fromCodePoint(unicode)); + } + buffers.push(currentBuf.join("")); + return buffers; + } +} +class ErrorFont { + constructor(error) { + this.error = error; + this.loadedName = "g_font_error"; + this.missingFile = true; + } + charsToGlyphs() { + return []; + } + encodeString(chars) { + return [chars]; + } + exportData() { + return { + error: this.error + }; + } +} + +;// ./src/core/pattern.js + + + + +const ShadingType = { + FUNCTION_BASED: 1, + AXIAL: 2, + RADIAL: 3, + FREE_FORM_MESH: 4, + LATTICE_FORM_MESH: 5, + COONS_PATCH_MESH: 6, + TENSOR_PATCH_MESH: 7 +}; +class Pattern { + constructor() { + unreachable("Cannot initialize Pattern."); + } + static parseShading(shading, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache, prepareWebGPU = null) { + const dict = shading instanceof BaseStream ? shading.dict : shading; + const type = dict.get("ShadingType"); + try { + switch (type) { + case ShadingType.AXIAL: + case ShadingType.RADIAL: + return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache); + case ShadingType.FREE_FORM_MESH: + case ShadingType.LATTICE_FORM_MESH: + case ShadingType.COONS_PATCH_MESH: + case ShadingType.TENSOR_PATCH_MESH: + prepareWebGPU?.(); + return new MeshShading(shading, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache); + default: + throw new FormatError("Unsupported ShadingType: " + type); + } + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn(ex); + return new DummyShading(); + } + } +} +class BaseShading { + static SMALL_NUMBER = 1e-6; + getIR() { + unreachable("Abstract method `getIR` called."); + } +} +class RadialAxialShading extends BaseShading { + constructor(dict, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) { + super(); + this.shadingType = dict.get("ShadingType"); + let coordsLen = 0; + if (this.shadingType === ShadingType.AXIAL) { + coordsLen = 4; + } else if (this.shadingType === ShadingType.RADIAL) { + coordsLen = 6; + } + this.coordsArr = dict.getArray("Coords"); + if (!isNumberArray(this.coordsArr, coordsLen)) { + throw new FormatError("RadialAxialShading: Invalid /Coords array."); + } + const cs = ColorSpaceUtils.parse({ + cs: dict.getRaw("CS") || dict.getRaw("ColorSpace"), + xref, + resources, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }); + this.bbox = lookupNormalRect(dict.getArray("BBox"), null); + let t0 = 0.0, + t1 = 1.0; + const domainArr = dict.getArray("Domain"); + if (isNumberArray(domainArr, 2)) { + [t0, t1] = domainArr; + } + let extendStart = false, + extendEnd = false; + const extendArr = dict.getArray("Extend"); + if (isBooleanArray(extendArr, 2)) { + [extendStart, extendEnd] = extendArr; + } + this.extendStart = extendStart; + this.extendEnd = extendEnd; + const fnObj = dict.getRaw("Function"); + const fn = pdfFunctionFactory.create(fnObj, true); + const NUMBER_OF_SAMPLES = 840; + const step = (t1 - t0) / NUMBER_OF_SAMPLES; + const colorStops = this.colorStops = []; + if (t0 >= t1 || step <= 0) { + info("Bad shading domain."); + return; + } + const color = new Float32Array(cs.numComps), + ratio = new Float32Array(1); + let iBase = 0; + ratio[0] = t0; + fn(ratio, 0, color, 0); + const rgbBuffer = new Uint8ClampedArray(3); + cs.getRgb(color, 0, rgbBuffer); + let [rBase, gBase, bBase] = rgbBuffer; + colorStops.push([0, Util.makeHexColor(rBase, gBase, bBase)]); + let iPrev = 1; + ratio[0] = t0 + step; + fn(ratio, 0, color, 0); + cs.getRgb(color, 0, rgbBuffer); + let [rPrev, gPrev, bPrev] = rgbBuffer; + let maxSlopeR = rPrev - rBase + 1; + let maxSlopeG = gPrev - gBase + 1; + let maxSlopeB = bPrev - bBase + 1; + let minSlopeR = rPrev - rBase - 1; + let minSlopeG = gPrev - gBase - 1; + let minSlopeB = bPrev - bBase - 1; + for (let i = 2; i < NUMBER_OF_SAMPLES; i++) { + ratio[0] = t0 + i * step; + fn(ratio, 0, color, 0); + cs.getRgb(color, 0, rgbBuffer); + const [r, g, b] = rgbBuffer; + const run = i - iBase; + maxSlopeR = Math.min(maxSlopeR, (r - rBase + 1) / run); + maxSlopeG = Math.min(maxSlopeG, (g - gBase + 1) / run); + maxSlopeB = Math.min(maxSlopeB, (b - bBase + 1) / run); + minSlopeR = Math.max(minSlopeR, (r - rBase - 1) / run); + minSlopeG = Math.max(minSlopeG, (g - gBase - 1) / run); + minSlopeB = Math.max(minSlopeB, (b - bBase - 1) / run); + const slopesExist = minSlopeR <= maxSlopeR && minSlopeG <= maxSlopeG && minSlopeB <= maxSlopeB; + if (!slopesExist) { + const cssColor = Util.makeHexColor(rPrev, gPrev, bPrev); + colorStops.push([iPrev / NUMBER_OF_SAMPLES, cssColor]); + maxSlopeR = r - rPrev + 1; + maxSlopeG = g - gPrev + 1; + maxSlopeB = b - bPrev + 1; + minSlopeR = r - rPrev - 1; + minSlopeG = g - gPrev - 1; + minSlopeB = b - bPrev - 1; + iBase = iPrev; + rBase = rPrev; + gBase = gPrev; + bBase = bPrev; + } + iPrev = i; + rPrev = r; + gPrev = g; + bPrev = b; + } + colorStops.push([1, Util.makeHexColor(rPrev, gPrev, bPrev)]); + let background = "transparent"; + if (dict.has("Background")) { + background = cs.getRgbHex(dict.get("Background"), 0); + } + if (!extendStart) { + colorStops.unshift([0, background]); + colorStops[1][0] += BaseShading.SMALL_NUMBER; + } + if (!extendEnd) { + colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER; + colorStops.push([1, background]); + } + this.colorStops = colorStops; + } + getIR() { + const { + coordsArr, + shadingType + } = this; + let type, p0, p1, r0, r1; + if (shadingType === ShadingType.AXIAL) { + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[2], coordsArr[3]]; + r0 = null; + r1 = null; + type = "axial"; + } else if (shadingType === ShadingType.RADIAL) { + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[3], coordsArr[4]]; + r0 = coordsArr[2]; + r1 = coordsArr[5]; + type = "radial"; + } else { + unreachable(`getPattern type unknown: ${shadingType}`); + } + return ["RadialAxial", type, this.bbox, this.colorStops, p0, p1, r0, r1]; + } +} +class MeshStreamReader { + constructor(stream, context) { + this.stream = stream; + this.context = context; + this.buffer = 0; + this.bufferLength = 0; + const numComps = context.numComps; + this.tmpCompsBuf = new Float32Array(numComps); + const csNumComps = context.colorSpace.numComps; + this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf; + } + get hasData() { + if (this.stream.end) { + return this.stream.pos < this.stream.end; + } + if (this.bufferLength > 0) { + return true; + } + const nextByte = this.stream.getByte(); + if (nextByte < 0) { + return false; + } + this.buffer = nextByte; + this.bufferLength = 8; + return true; + } + readBits(n) { + const { + stream + } = this; + let { + buffer, + bufferLength + } = this; + if (n === 32) { + if (bufferLength === 0) { + return stream.getInt32() >>> 0; + } + buffer = buffer << 24 | stream.getByte() << 16 | stream.getByte() << 8 | stream.getByte(); + const nextByte = stream.getByte(); + this.buffer = nextByte & (1 << bufferLength) - 1; + return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0; + } + if (n === 8 && bufferLength === 0) { + return stream.getByte(); + } + while (bufferLength < n) { + buffer = buffer << 8 | stream.getByte(); + bufferLength += 8; + } + bufferLength -= n; + this.bufferLength = bufferLength; + this.buffer = buffer & (1 << bufferLength) - 1; + return buffer >> bufferLength; + } + align() { + this.buffer = 0; + this.bufferLength = 0; + } + readFlag() { + return this.readBits(this.context.bitsPerFlag); + } + readCoordinate() { + const { + bitsPerCoordinate, + decode + } = this.context; + const xi = this.readBits(bitsPerCoordinate); + const yi = this.readBits(bitsPerCoordinate); + const scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10; + return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]]; + } + readComponents() { + const { + bitsPerComponent, + colorFn, + colorSpace, + decode, + numComps + } = this.context; + const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10; + const components = this.tmpCompsBuf; + for (let i = 0, j = 4; i < numComps; i++, j += 2) { + const ci = this.readBits(bitsPerComponent); + components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j]; + } + const color = this.tmpCsCompsBuf; + colorFn?.(components, 0, color, 0); + return colorSpace.getRgb(color, 0); + } +} +let bCache = Object.create(null); +function buildB(count) { + const lut = []; + for (let i = 0; i <= count; i++) { + const t = i / count, + t_ = 1 - t; + lut.push(new Float32Array([t_ ** 3, 3 * t * t_ ** 2, 3 * t ** 2 * t_, t ** 3])); + } + return lut; +} +function getB(count) { + return bCache[count] ||= buildB(count); +} +function clearPatternCaches() { + bCache = Object.create(null); +} +class MeshShading extends BaseShading { + static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; + static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; + static TRIANGLE_DENSITY = 20; + constructor(stream, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) { + super(); + if (!(stream instanceof BaseStream)) { + throw new FormatError("Mesh data is not a stream"); + } + const dict = stream.dict; + this.shadingType = dict.get("ShadingType"); + this.bbox = lookupNormalRect(dict.getArray("BBox"), null); + const cs = ColorSpaceUtils.parse({ + cs: dict.getRaw("CS") || dict.getRaw("ColorSpace"), + xref, + resources, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }); + this.background = dict.has("Background") ? cs.getRgb(dict.get("Background"), 0) : null; + const fnObj = dict.getRaw("Function"); + const fn = fnObj ? pdfFunctionFactory.create(fnObj, true) : null; + this.coords = []; + this.colors = []; + this.figures = []; + const decodeContext = { + bitsPerCoordinate: dict.get("BitsPerCoordinate"), + bitsPerComponent: dict.get("BitsPerComponent"), + bitsPerFlag: dict.get("BitsPerFlag"), + decode: dict.getArray("Decode"), + colorFn: fn, + colorSpace: cs, + numComps: fn ? 1 : cs.numComps + }; + const reader = new MeshStreamReader(stream, decodeContext); + let patchMesh = false; + switch (this.shadingType) { + case ShadingType.FREE_FORM_MESH: + this._decodeType4Shading(reader); + break; + case ShadingType.LATTICE_FORM_MESH: + const verticesPerRow = dict.get("VerticesPerRow") | 0; + if (verticesPerRow < 2) { + throw new FormatError("Invalid VerticesPerRow"); + } + this._decodeType5Shading(reader, verticesPerRow); + break; + case ShadingType.COONS_PATCH_MESH: + this._decodeType6Shading(reader); + patchMesh = true; + break; + case ShadingType.TENSOR_PATCH_MESH: + this._decodeType7Shading(reader); + patchMesh = true; + break; + default: + unreachable("Unsupported mesh type."); + break; + } + if (patchMesh) { + this._updateBounds(); + for (let i = 0, ii = this.figures.length; i < ii; i++) { + this._buildFigureFromPatch(i); + } + } + this._updateBounds(); + this._packData(); + } + _decodeType4Shading(reader) { + const coords = this.coords; + const colors = this.colors; + const operators = []; + const ps = []; + let verticesLeft = 0; + while (reader.hasData) { + const f = reader.readFlag(); + const coord = reader.readCoordinate(); + const color = reader.readComponents(); + if (verticesLeft === 0) { + if (!(0 <= f && f <= 2)) { + throw new FormatError("Unknown type4 flag"); + } + switch (f) { + case 0: + verticesLeft = 3; + break; + case 1: + ps.push(ps.at(-2), ps.at(-1)); + verticesLeft = 1; + break; + case 2: + ps.push(ps.at(-3), ps.at(-1)); + verticesLeft = 1; + break; + } + operators.push(f); + } + ps.push(coords.length); + coords.push(coord); + colors.push(color); + verticesLeft--; + reader.align(); + } + this.figures.push({ + type: MeshFigureType.TRIANGLES, + coords: new Int32Array(ps), + colors: new Int32Array(ps) + }); + } + _decodeType5Shading(reader, verticesPerRow) { + const coords = this.coords; + const colors = this.colors; + const ps = []; + while (reader.hasData) { + const coord = reader.readCoordinate(); + const color = reader.readComponents(); + ps.push(coords.length); + coords.push(coord); + colors.push(color); + } + this.figures.push({ + type: MeshFigureType.LATTICE, + coords: new Int32Array(ps), + colors: new Int32Array(ps), + verticesPerRow + }); + } + _decodeType6Shading(reader) { + const coords = this.coords; + const colors = this.colors; + const ps = new Int32Array(16); + const cs = new Int32Array(4); + while (reader.hasData) { + const f = reader.readFlag(); + if (!(0 <= f && f <= 3)) { + throw new FormatError("Unknown type6 flag"); + } + const pi = coords.length; + for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) { + coords.push(reader.readCoordinate()); + } + const ci = colors.length; + for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { + colors.push(reader.readComponents()); + } + let tmp1, tmp2, tmp3, tmp4; + switch (f) { + case 0: + ps[12] = pi + 3; + ps[13] = pi + 4; + ps[14] = pi + 5; + ps[15] = pi + 6; + ps[8] = pi + 2; + ps[11] = pi + 7; + ps[4] = pi + 1; + ps[7] = pi + 8; + ps[0] = pi; + ps[1] = pi + 11; + ps[2] = pi + 10; + ps[3] = pi + 9; + cs[2] = ci + 1; + cs[3] = ci + 2; + cs[0] = ci; + cs[1] = ci + 3; + break; + case 1: + tmp1 = ps[12]; + tmp2 = ps[13]; + tmp3 = ps[14]; + tmp4 = ps[15]; + ps[12] = tmp4; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = tmp3; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[2]; + tmp2 = cs[3]; + cs[2] = tmp2; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 2: + tmp1 = ps[15]; + tmp2 = ps[11]; + ps[12] = ps[3]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[7]; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[3]; + cs[2] = cs[1]; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 3: + ps[12] = ps[0]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[1]; + ps[11] = pi + 3; + ps[4] = ps[2]; + ps[7] = pi + 4; + ps[0] = ps[3]; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + cs[2] = cs[0]; + cs[3] = ci; + cs[0] = cs[1]; + cs[1] = ci + 1; + break; + } + ps[5] = coords.length; + coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]); + ps[6] = coords.length; + coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]); + ps[9] = coords.length; + coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]); + ps[10] = coords.length; + coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]); + this.figures.push({ + type: MeshFigureType.PATCH, + coords: new Int32Array(ps), + colors: new Int32Array(cs) + }); + } + } + _decodeType7Shading(reader) { + const coords = this.coords; + const colors = this.colors; + const ps = new Int32Array(16); + const cs = new Int32Array(4); + while (reader.hasData) { + const f = reader.readFlag(); + if (!(0 <= f && f <= 3)) { + throw new FormatError("Unknown type7 flag"); + } + const pi = coords.length; + for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) { + coords.push(reader.readCoordinate()); + } + const ci = colors.length; + for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { + colors.push(reader.readComponents()); + } + let tmp1, tmp2, tmp3, tmp4; + switch (f) { + case 0: + ps[12] = pi + 3; + ps[13] = pi + 4; + ps[14] = pi + 5; + ps[15] = pi + 6; + ps[8] = pi + 2; + ps[9] = pi + 13; + ps[10] = pi + 14; + ps[11] = pi + 7; + ps[4] = pi + 1; + ps[5] = pi + 12; + ps[6] = pi + 15; + ps[7] = pi + 8; + ps[0] = pi; + ps[1] = pi + 11; + ps[2] = pi + 10; + ps[3] = pi + 9; + cs[2] = ci + 1; + cs[3] = ci + 2; + cs[0] = ci; + cs[1] = ci + 3; + break; + case 1: + tmp1 = ps[12]; + tmp2 = ps[13]; + tmp3 = ps[14]; + tmp4 = ps[15]; + ps[12] = tmp4; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = tmp3; + ps[9] = pi + 9; + ps[10] = pi + 10; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[5] = pi + 8; + ps[6] = pi + 11; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[2]; + tmp2 = cs[3]; + cs[2] = tmp2; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 2: + tmp1 = ps[15]; + tmp2 = ps[11]; + ps[12] = ps[3]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[7]; + ps[9] = pi + 9; + ps[10] = pi + 10; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[5] = pi + 8; + ps[6] = pi + 11; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[3]; + cs[2] = cs[1]; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 3: + ps[12] = ps[0]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[1]; + ps[9] = pi + 9; + ps[10] = pi + 10; + ps[11] = pi + 3; + ps[4] = ps[2]; + ps[5] = pi + 8; + ps[6] = pi + 11; + ps[7] = pi + 4; + ps[0] = ps[3]; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + cs[2] = cs[0]; + cs[3] = ci; + cs[0] = cs[1]; + cs[1] = ci + 1; + break; + } + this.figures.push({ + type: MeshFigureType.PATCH, + coords: new Int32Array(ps), + colors: new Int32Array(cs) + }); + } + } + _buildFigureFromPatch(index) { + const figure = this.figures[index]; + assert(figure.type === MeshFigureType.PATCH, "Unexpected patch mesh figure"); + const coords = this.coords, + colors = this.colors; + const pi = figure.coords; + const ci = figure.colors; + const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); + const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); + const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); + const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); + let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0])); + splitXBy = MathClamp(splitXBy, MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT); + let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1])); + splitYBy = MathClamp(splitYBy, MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT); + const verticesPerRow = splitXBy + 1; + const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow); + const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow); + let k = 0; + const cl = new Uint8Array(3), + cr = new Uint8Array(3); + const c0 = colors[ci[0]], + c1 = colors[ci[1]], + c2 = colors[ci[2]], + c3 = colors[ci[3]]; + const bRow = getB(splitYBy), + bCol = getB(splitXBy); + for (let row = 0; row <= splitYBy; row++) { + cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0; + cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0; + cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0; + cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0; + cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0; + cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0; + for (let col = 0; col <= splitXBy; col++, k++) { + if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) { + continue; + } + let x = 0, + y = 0; + let q = 0; + for (let i = 0; i <= 3; i++) { + for (let j = 0; j <= 3; j++, q++) { + const m = bRow[row][i] * bCol[col][j]; + x += coords[pi[q]][0] * m; + y += coords[pi[q]][1] * m; + } + } + figureCoords[k] = coords.length; + coords.push([x, y]); + figureColors[k] = colors.length; + const newColor = new Uint8Array(3); + newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0; + newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0; + newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0; + colors.push(newColor); + } + } + figureCoords[0] = pi[0]; + figureColors[0] = ci[0]; + figureCoords[splitXBy] = pi[3]; + figureColors[splitXBy] = ci[1]; + figureCoords[verticesPerRow * splitYBy] = pi[12]; + figureColors[verticesPerRow * splitYBy] = ci[2]; + figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15]; + figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3]; + this.figures[index] = { + type: MeshFigureType.LATTICE, + coords: figureCoords, + colors: figureColors, + verticesPerRow + }; + } + _updateBounds() { + let minX = this.coords[0][0], + minY = this.coords[0][1], + maxX = minX, + maxY = minY; + for (let i = 1, ii = this.coords.length; i < ii; i++) { + const x = this.coords[i][0], + y = this.coords[i][1]; + minX = minX > x ? x : minX; + minY = minY > y ? y : minY; + maxX = maxX < x ? x : maxX; + maxY = maxY < y ? y : maxY; + } + this.bounds = [minX, minY, maxX, maxY]; + } + _packData() { + let i, ii, j; + const coords = this.coords; + const coordsPacked = new Float32Array(coords.length * 2); + for (i = 0, j = 0, ii = coords.length; i < ii; i++) { + const xy = coords[i]; + coordsPacked[j++] = xy[0]; + coordsPacked[j++] = xy[1]; + } + this.coords = coordsPacked; + const colors = this.colors; + const colorsPacked = new Uint8Array(colors.length * 4); + for (i = 0, j = 0, ii = colors.length; i < ii; i++) { + const c = colors[i]; + colorsPacked[j++] = c[0]; + colorsPacked[j++] = c[1]; + colorsPacked[j++] = c[2]; + j++; + } + this.colors = colorsPacked; + const figures = this.figures; + for (i = 0, ii = figures.length; i < ii; i++) { + const figure = figures[i]; + figure.coords = new Uint32Array(figure.coords); + figure.colors = new Uint32Array(figure.colors); + } + } + getIR() { + return ["Mesh", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.bbox, this.background]; + } +} +class DummyShading extends BaseShading { + getIR() { + return ["Dummy"]; + } +} +function getTilingPatternIR(operatorList, dict, color) { + const matrix = lookupMatrix(dict.getArray("Matrix"), IDENTITY_MATRIX); + const bbox = lookupNormalRect(dict.getArray("BBox"), null); + if (!bbox || bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) { + throw new FormatError(`Invalid getTilingPatternIR /BBox array.`); + } + const xstep = dict.get("XStep"); + if (typeof xstep !== "number") { + throw new FormatError(`Invalid getTilingPatternIR /XStep value.`); + } + const ystep = dict.get("YStep"); + if (typeof ystep !== "number") { + throw new FormatError(`Invalid getTilingPatternIR /YStep value.`); + } + const paintType = dict.get("PaintType"); + if (!Number.isInteger(paintType)) { + throw new FormatError(`Invalid getTilingPatternIR /PaintType value.`); + } + const tilingType = dict.get("TilingType"); + if (!Number.isInteger(tilingType)) { + throw new FormatError(`Invalid getTilingPatternIR /TilingType value.`); + } + return ["TilingPattern", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType]; +} + +;// ./src/core/calibri_factors.js +const CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const CalibriBoldMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +const CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const CalibriBoldItalicMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +const CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const CalibriItalicMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +const CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const CalibriRegularMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; + +;// ./src/core/helvetica_factors.js +const HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const HelveticaBoldMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +const HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const HelveticaBoldItalicMetrics = { + lineHeight: 1.35, + lineGap: 0.2 +}; +const HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const HelveticaItalicMetrics = { + lineHeight: 1.35, + lineGap: 0.2 +}; +const HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const HelveticaRegularMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; + +;// ./src/core/liberationsans_widths.js +const LiberationSansBoldWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333]; +const LiberationSansBoldMapping = [-1, -1, -1, 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, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +const LiberationSansBoldItalicWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333]; +const LiberationSansBoldItalicMapping = [-1, -1, -1, 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, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +const LiberationSansItalicWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556, 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667, 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222, 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285]; +const LiberationSansItalicMapping = [-1, -1, -1, 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, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +const LiberationSansRegularWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285]; +const LiberationSansRegularMapping = [-1, -1, -1, 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, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; + +;// ./src/core/myriadpro_factors.js +const MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const MyriadProBoldMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +const MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const MyriadProBoldItalicMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +const MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const MyriadProItalicMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +const MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const MyriadProRegularMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; + +;// ./src/core/segoeui_factors.js +const SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const SegoeuiBoldMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +const SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const SegoeuiBoldItalicMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +const SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const SegoeuiItalicMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +const SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +const SegoeuiRegularMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; + +;// ./src/core/xfa_fonts.js + + + + + + + + +const getXFAFontMap = getLookupTableFactory(function (t) { + t["MyriadPro-Regular"] = t["PdfJS-Fallback-Regular"] = { + name: "LiberationSans-Regular", + factors: MyriadProRegularFactors, + baseWidths: LiberationSansRegularWidths, + baseMapping: LiberationSansRegularMapping, + metrics: MyriadProRegularMetrics + }; + t["MyriadPro-Bold"] = t["PdfJS-Fallback-Bold"] = { + name: "LiberationSans-Bold", + factors: MyriadProBoldFactors, + baseWidths: LiberationSansBoldWidths, + baseMapping: LiberationSansBoldMapping, + metrics: MyriadProBoldMetrics + }; + t["MyriadPro-It"] = t["MyriadPro-Italic"] = t["PdfJS-Fallback-Italic"] = { + name: "LiberationSans-Italic", + factors: MyriadProItalicFactors, + baseWidths: LiberationSansItalicWidths, + baseMapping: LiberationSansItalicMapping, + metrics: MyriadProItalicMetrics + }; + t["MyriadPro-BoldIt"] = t["MyriadPro-BoldItalic"] = t["PdfJS-Fallback-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: MyriadProBoldItalicFactors, + baseWidths: LiberationSansBoldItalicWidths, + baseMapping: LiberationSansBoldItalicMapping, + metrics: MyriadProBoldItalicMetrics + }; + t.ArialMT = t.Arial = t["Arial-Regular"] = { + name: "LiberationSans-Regular", + baseWidths: LiberationSansRegularWidths, + baseMapping: LiberationSansRegularMapping + }; + t["Arial-BoldMT"] = t["Arial-Bold"] = { + name: "LiberationSans-Bold", + baseWidths: LiberationSansBoldWidths, + baseMapping: LiberationSansBoldMapping + }; + t["Arial-ItalicMT"] = t["Arial-Italic"] = { + name: "LiberationSans-Italic", + baseWidths: LiberationSansItalicWidths, + baseMapping: LiberationSansItalicMapping + }; + t["Arial-BoldItalicMT"] = t["Arial-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + baseWidths: LiberationSansBoldItalicWidths, + baseMapping: LiberationSansBoldItalicMapping + }; + t["Calibri-Regular"] = { + name: "LiberationSans-Regular", + factors: CalibriRegularFactors, + baseWidths: LiberationSansRegularWidths, + baseMapping: LiberationSansRegularMapping, + metrics: CalibriRegularMetrics + }; + t["Calibri-Bold"] = { + name: "LiberationSans-Bold", + factors: CalibriBoldFactors, + baseWidths: LiberationSansBoldWidths, + baseMapping: LiberationSansBoldMapping, + metrics: CalibriBoldMetrics + }; + t["Calibri-Italic"] = { + name: "LiberationSans-Italic", + factors: CalibriItalicFactors, + baseWidths: LiberationSansItalicWidths, + baseMapping: LiberationSansItalicMapping, + metrics: CalibriItalicMetrics + }; + t["Calibri-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: CalibriBoldItalicFactors, + baseWidths: LiberationSansBoldItalicWidths, + baseMapping: LiberationSansBoldItalicMapping, + metrics: CalibriBoldItalicMetrics + }; + t["Segoeui-Regular"] = { + name: "LiberationSans-Regular", + factors: SegoeuiRegularFactors, + baseWidths: LiberationSansRegularWidths, + baseMapping: LiberationSansRegularMapping, + metrics: SegoeuiRegularMetrics + }; + t["Segoeui-Bold"] = { + name: "LiberationSans-Bold", + factors: SegoeuiBoldFactors, + baseWidths: LiberationSansBoldWidths, + baseMapping: LiberationSansBoldMapping, + metrics: SegoeuiBoldMetrics + }; + t["Segoeui-Italic"] = { + name: "LiberationSans-Italic", + factors: SegoeuiItalicFactors, + baseWidths: LiberationSansItalicWidths, + baseMapping: LiberationSansItalicMapping, + metrics: SegoeuiItalicMetrics + }; + t["Segoeui-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: SegoeuiBoldItalicFactors, + baseWidths: LiberationSansBoldItalicWidths, + baseMapping: LiberationSansBoldItalicMapping, + metrics: SegoeuiBoldItalicMetrics + }; + t["Helvetica-Regular"] = t.Helvetica = { + name: "LiberationSans-Regular", + factors: HelveticaRegularFactors, + baseWidths: LiberationSansRegularWidths, + baseMapping: LiberationSansRegularMapping, + metrics: HelveticaRegularMetrics + }; + t["Helvetica-Bold"] = { + name: "LiberationSans-Bold", + factors: HelveticaBoldFactors, + baseWidths: LiberationSansBoldWidths, + baseMapping: LiberationSansBoldMapping, + metrics: HelveticaBoldMetrics + }; + t["Helvetica-Italic"] = { + name: "LiberationSans-Italic", + factors: HelveticaItalicFactors, + baseWidths: LiberationSansItalicWidths, + baseMapping: LiberationSansItalicMapping, + metrics: HelveticaItalicMetrics + }; + t["Helvetica-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: HelveticaBoldItalicFactors, + baseWidths: LiberationSansBoldItalicWidths, + baseMapping: LiberationSansBoldItalicMapping, + metrics: HelveticaBoldItalicMetrics + }; +}); +function getXfaFontName(name) { + const fontName = normalizeFontName(name); + const fontMap = getXFAFontMap(); + return fontMap[fontName]; +} +function getXfaFontWidths(name) { + const info = getXfaFontName(name); + if (!info) { + return null; + } + const { + baseWidths, + baseMapping, + factors + } = info; + const rescaledBaseWidths = !factors ? baseWidths : baseWidths.map((w, i) => w * factors[i]); + let currentCode = -2; + let currentArray; + const newWidths = []; + for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, index]).sort(([unicode1], [unicode2]) => unicode1 - unicode2)) { + if (unicode === -1) { + continue; + } + if (unicode === currentCode + 1) { + currentArray.push(rescaledBaseWidths[glyphIndex]); + currentCode += 1; + } else { + currentCode = unicode; + currentArray = [rescaledBaseWidths[glyphIndex]]; + newWidths.push(unicode, currentArray); + } + } + return newWidths; +} +function getXfaFontDict(name) { + const widths = getXfaFontWidths(name); + const dict = new Dict(null); + dict.set("BaseFont", Name.get(name)); + dict.set("Type", Name.get("Font")); + dict.set("Subtype", Name.get("CIDFontType2")); + dict.set("Encoding", Name.get("Identity-H")); + dict.set("CIDToGIDMap", Name.get("Identity")); + dict.set("W", widths); + dict.set("FirstChar", widths[0]); + dict.set("LastChar", widths.at(-2) + widths.at(-1).length - 1); + const descriptor = new Dict(null); + dict.set("FontDescriptor", descriptor); + const systemInfo = new Dict(null); + systemInfo.set("Ordering", "Identity"); + systemInfo.set("Registry", "Adobe"); + systemInfo.set("Supplement", 0); + dict.set("CIDSystemInfo", systemInfo); + return dict; +} + +;// ./src/core/ps_parser.js + + + +class PostScriptParser { + constructor(lexer) { + this.lexer = lexer; + this.operators = []; + this.token = null; + this.prev = null; + } + nextToken() { + this.prev = this.token; + this.token = this.lexer.getToken(); + } + accept(type) { + if (this.token.type === type) { + this.nextToken(); + return true; + } + return false; + } + expect(type) { + if (this.accept(type)) { + return true; + } + throw new FormatError(`Unexpected symbol: found ${this.token.type} expected ${type}.`); + } + parse() { + this.nextToken(); + this.expect(PostScriptTokenTypes.LBRACE); + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + return this.operators; + } + parseBlock() { + while (true) { + if (this.accept(PostScriptTokenTypes.NUMBER)) { + this.operators.push(this.prev.value); + } else if (this.accept(PostScriptTokenTypes.OPERATOR)) { + this.operators.push(this.prev.value); + } else if (this.accept(PostScriptTokenTypes.LBRACE)) { + this.parseCondition(); + } else { + return; + } + } + } + parseCondition() { + const conditionLocation = this.operators.length; + this.operators.push(null, null); + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + if (this.accept(PostScriptTokenTypes.IF)) { + this.operators[conditionLocation] = this.operators.length; + this.operators[conditionLocation + 1] = "jz"; + } else if (this.accept(PostScriptTokenTypes.LBRACE)) { + const jumpLocation = this.operators.length; + this.operators.push(null, null); + const endOfTrue = this.operators.length; + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + this.expect(PostScriptTokenTypes.IFELSE); + this.operators[jumpLocation] = this.operators.length; + this.operators[jumpLocation + 1] = "j"; + this.operators[conditionLocation] = endOfTrue; + this.operators[conditionLocation + 1] = "jz"; + } else { + throw new FormatError("PS Function: error parsing conditional."); + } + } +} +const PostScriptTokenTypes = { + LBRACE: 0, + RBRACE: 1, + NUMBER: 2, + OPERATOR: 3, + IF: 4, + IFELSE: 5 +}; +class PostScriptToken { + static get opCache() { + return shadow(this, "opCache", Object.create(null)); + } + constructor(type, value) { + this.type = type; + this.value = value; + } + static getOperator(op) { + return PostScriptToken.opCache[op] ||= new PostScriptToken(PostScriptTokenTypes.OPERATOR, op); + } + static get LBRACE() { + return shadow(this, "LBRACE", new PostScriptToken(PostScriptTokenTypes.LBRACE, "{")); + } + static get RBRACE() { + return shadow(this, "RBRACE", new PostScriptToken(PostScriptTokenTypes.RBRACE, "}")); + } + static get IF() { + return shadow(this, "IF", new PostScriptToken(PostScriptTokenTypes.IF, "IF")); + } + static get IFELSE() { + return shadow(this, "IFELSE", new PostScriptToken(PostScriptTokenTypes.IFELSE, "IFELSE")); + } +} +class PostScriptLexer { + constructor(stream) { + this.stream = stream; + this.nextChar(); + this.strBuf = []; + } + nextChar() { + return this.currentChar = this.stream.getByte(); + } + getToken() { + let comment = false; + let ch = this.currentChar; + while (true) { + if (ch < 0) { + return EOF; + } + if (comment) { + if (ch === 0x0a || ch === 0x0d) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (!isWhiteSpace(ch)) { + break; + } + ch = this.nextChar(); + } + switch (ch | 0) { + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x2b: + case 0x2d: + case 0x2e: + return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber()); + case 0x7b: + this.nextChar(); + return PostScriptToken.LBRACE; + case 0x7d: + this.nextChar(); + return PostScriptToken.RBRACE; + } + const strBuf = this.strBuf; + strBuf.length = 0; + strBuf[0] = String.fromCharCode(ch); + while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) { + strBuf.push(String.fromCharCode(ch)); + } + const str = strBuf.join(""); + switch (str.toLowerCase()) { + case "if": + return PostScriptToken.IF; + case "ifelse": + return PostScriptToken.IFELSE; + default: + return PostScriptToken.getOperator(str); + } + } + getNumber() { + let ch = this.currentChar; + const strBuf = this.strBuf; + strBuf.length = 0; + strBuf[0] = String.fromCharCode(ch); + while ((ch = this.nextChar()) >= 0) { + if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) { + strBuf.push(String.fromCharCode(ch)); + } else { + break; + } + } + const value = parseFloat(strBuf.join("")); + if (isNaN(value)) { + throw new FormatError(`Invalid floating point number: ${value}`); + } + return value; + } +} + +;// ./src/core/image_utils.js + + +class BaseLocalCache { + constructor(options) { + this._onlyRefs = options?.onlyRefs === true; + if (!this._onlyRefs) { + this._nameRefMap = new Map(); + this._imageMap = new Map(); + } + this._imageCache = new RefSetCache(); + } + getByName(name) { + if (this._onlyRefs) { + unreachable("Should not call `getByName` method."); + } + const ref = this._nameRefMap.get(name); + if (ref) { + return this.getByRef(ref); + } + return this._imageMap.get(name) || null; + } + getByRef(ref) { + return this._imageCache.get(ref) || null; + } + set(name, ref, data) { + unreachable("Abstract method `set` called."); + } +} +class LocalImageCache extends BaseLocalCache { + set(name, ref = null, data) { + if (typeof name !== "string") { + throw new Error('LocalImageCache.set - expected "name" argument.'); + } + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + this._nameRefMap.set(name, ref); + this._imageCache.put(ref, data); + return; + } + if (this._imageMap.has(name)) { + return; + } + this._imageMap.set(name, data); + } +} +class LocalColorSpaceCache extends BaseLocalCache { + set(name = null, ref = null, data) { + if (typeof name !== "string" && !ref) { + throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.'); + } + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + if (name !== null) { + this._nameRefMap.set(name, ref); + } + this._imageCache.put(ref, data); + return; + } + if (this._imageMap.has(name)) { + return; + } + this._imageMap.set(name, data); + } +} +class LocalFunctionCache extends BaseLocalCache { + constructor(options) { + super({ + onlyRefs: true + }); + } + set(name = null, ref, data) { + if (!ref) { + throw new Error('LocalFunctionCache.set - expected "ref" argument.'); + } + if (this._imageCache.has(ref)) { + return; + } + this._imageCache.put(ref, data); + } +} +class LocalGStateCache extends BaseLocalCache { + set(name, ref = null, data) { + if (typeof name !== "string") { + throw new Error('LocalGStateCache.set - expected "name" argument.'); + } + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + this._nameRefMap.set(name, ref); + this._imageCache.put(ref, data); + return; + } + if (this._imageMap.has(name)) { + return; + } + this._imageMap.set(name, data); + } +} +class LocalTilingPatternCache extends BaseLocalCache { + constructor(options) { + super({ + onlyRefs: true + }); + } + set(name = null, ref, data) { + if (!ref) { + throw new Error('LocalTilingPatternCache.set - expected "ref" argument.'); + } + if (this._imageCache.has(ref)) { + return; + } + this._imageCache.put(ref, data); + } +} +class RegionalImageCache extends BaseLocalCache { + constructor(options) { + super({ + onlyRefs: true + }); + } + set(name = null, ref, data) { + if (!ref) { + throw new Error('RegionalImageCache.set - expected "ref" argument.'); + } + if (this._imageCache.has(ref)) { + return; + } + this._imageCache.put(ref, data); + } +} +class GlobalColorSpaceCache extends BaseLocalCache { + constructor(options) { + super({ + onlyRefs: true + }); + } + set(name = null, ref, data) { + if (!ref) { + throw new Error('GlobalColorSpaceCache.set - expected "ref" argument.'); + } + if (this._imageCache.has(ref)) { + return; + } + this._imageCache.put(ref, data); + } + clear() { + this._imageCache.clear(); + } +} +class GlobalImageCache { + static NUM_PAGES_THRESHOLD = 2; + static MIN_IMAGES_TO_CACHE = 10; + static MAX_BYTE_SIZE = 5e7; + #decodeFailedSet = new RefSet(); + constructor() { + this._refCache = new RefSetCache(); + this._imageCache = new RefSetCache(); + } + get #byteSize() { + let byteSize = 0; + for (const imageData of this._imageCache) { + byteSize += imageData.byteSize; + } + return byteSize; + } + get #cacheLimitReached() { + if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) { + return false; + } + if (this.#byteSize < GlobalImageCache.MAX_BYTE_SIZE) { + return false; + } + return true; + } + shouldCache(ref, pageIndex) { + let pageIndexSet = this._refCache.get(ref); + if (!pageIndexSet) { + pageIndexSet = new Set(); + this._refCache.put(ref, pageIndexSet); + } + pageIndexSet.add(pageIndex); + if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) { + return false; + } + if (!this._imageCache.has(ref) && this.#cacheLimitReached) { + return false; + } + return true; + } + addDecodeFailed(ref) { + this.#decodeFailedSet.put(ref); + } + hasDecodeFailed(ref) { + return this.#decodeFailedSet.has(ref); + } + addByteSize(ref, byteSize) { + const imageData = this._imageCache.get(ref); + if (!imageData) { + return; + } + if (imageData.byteSize) { + return; + } + imageData.byteSize = byteSize; + } + getData(ref, pageIndex) { + const pageIndexSet = this._refCache.get(ref); + if (!pageIndexSet) { + return null; + } + if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) { + return null; + } + const imageData = this._imageCache.get(ref); + if (!imageData) { + return null; + } + pageIndexSet.add(pageIndex); + return imageData; + } + setData(ref, data) { + if (!this._refCache.has(ref)) { + throw new Error('GlobalImageCache.setData - expected "shouldCache" to have been called.'); + } + if (this._imageCache.has(ref)) { + return; + } + if (this.#cacheLimitReached) { + warn("GlobalImageCache.setData - cache limit reached."); + return; + } + this._imageCache.put(ref, data); + } + clear(onlyData = false) { + if (!onlyData) { + this.#decodeFailedSet.clear(); + this._refCache.clear(); + } + this._imageCache.clear(); + } +} + +;// ./src/core/function.js + + + + + + +class PDFFunctionFactory { + constructor({ + xref, + isEvalSupported = true + }) { + this.xref = xref; + this.isEvalSupported = isEvalSupported !== false; + } + create(fn, parseArray = false) { + let fnRef, parsedFn; + if (fn instanceof Ref) { + fnRef = fn; + } else if (fn instanceof Dict) { + fnRef = fn.objId; + } else if (fn instanceof BaseStream) { + fnRef = fn.dict?.objId; + } + if (fnRef) { + const cachedFn = this._localFunctionCache.getByRef(fnRef); + if (cachedFn) { + return cachedFn; + } + } + const fnObj = this.xref.fetchIfRef(fn); + if (Array.isArray(fnObj)) { + if (!parseArray) { + throw new Error('PDFFunctionFactory.create - expected "parseArray" argument.'); + } + parsedFn = PDFFunction.parseArray(this, fnObj); + } else { + parsedFn = PDFFunction.parse(this, fnObj); + } + if (fnRef) { + this._localFunctionCache.set(null, fnRef, parsedFn); + } + return parsedFn; + } + get _localFunctionCache() { + return shadow(this, "_localFunctionCache", new LocalFunctionCache()); + } +} +function toNumberArray(arr) { + if (!Array.isArray(arr)) { + return null; + } + if (!isNumberArray(arr, null)) { + return arr.map(x => +x); + } + return arr; +} +class PDFFunction { + static getSampleArray(size, outputSize, bps, stream) { + let length = outputSize; + for (const s of size) { + length *= s; + } + const array = new Array(length); + let codeSize = 0; + let codeBuf = 0; + const sampleMul = 1.0 / (2.0 ** bps - 1); + const strBytes = stream.getBytes((length * bps + 7) / 8); + let strIdx = 0; + for (let i = 0; i < length; i++) { + while (codeSize < bps) { + codeBuf <<= 8; + codeBuf |= strBytes[strIdx++]; + codeSize += 8; + } + codeSize -= bps; + array[i] = (codeBuf >> codeSize) * sampleMul; + codeBuf &= (1 << codeSize) - 1; + } + return array; + } + static parse(factory, fn) { + const dict = fn.dict || fn; + const typeNum = dict.get("FunctionType"); + switch (typeNum) { + case 0: + return this.constructSampled(factory, fn, dict); + case 1: + break; + case 2: + return this.constructInterpolated(factory, dict); + case 3: + return this.constructStiched(factory, dict); + case 4: + return this.constructPostScript(factory, fn, dict); + } + throw new FormatError("Unknown type of function"); + } + static parseArray(factory, fnObj) { + const { + xref + } = factory; + const fnArray = []; + for (const fn of fnObj) { + fnArray.push(this.parse(factory, xref.fetchIfRef(fn))); + } + return function (src, srcOffset, dest, destOffset) { + for (let i = 0, ii = fnArray.length; i < ii; i++) { + fnArray[i](src, srcOffset, dest, destOffset + i); + } + }; + } + static constructSampled(factory, fn, dict) { + function toMultiArray(arr) { + const inputLength = arr.length; + const out = []; + let index = 0; + for (let i = 0; i < inputLength; i += 2) { + out[index++] = [arr[i], arr[i + 1]]; + } + return out; + } + function interpolate(x, xmin, xmax, ymin, ymax) { + return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin)); + } + let domain = toNumberArray(dict.getArray("Domain")); + let range = toNumberArray(dict.getArray("Range")); + if (!domain || !range) { + throw new FormatError("No domain or range"); + } + const inputSize = domain.length / 2; + const outputSize = range.length / 2; + domain = toMultiArray(domain); + range = toMultiArray(range); + const size = toNumberArray(dict.getArray("Size")); + const bps = dict.get("BitsPerSample"); + const order = dict.get("Order") || 1; + if (order !== 1) { + info("No support for cubic spline interpolation: " + order); + } + let encode = toNumberArray(dict.getArray("Encode")); + if (!encode) { + encode = []; + for (let i = 0; i < inputSize; ++i) { + encode.push([0, size[i] - 1]); + } + } else { + encode = toMultiArray(encode); + } + let decode = toNumberArray(dict.getArray("Decode")); + decode = !decode ? range : toMultiArray(decode); + const samples = this.getSampleArray(size, outputSize, bps, fn); + return function constructSampledFn(src, srcOffset, dest, destOffset) { + const cubeVertices = 1 << inputSize; + const cubeN = new Float64Array(cubeVertices).fill(1); + const cubeVertex = new Uint32Array(cubeVertices); + let i, j; + let k = outputSize, + pos = 1; + for (i = 0; i < inputSize; ++i) { + const domain_2i = domain[i][0]; + const domain_2i_1 = domain[i][1]; + const xi = MathClamp(src[srcOffset + i], domain_2i, domain_2i_1); + let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]); + const size_i = size[i]; + e = MathClamp(e, 0, size_i - 1); + const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; + const n0 = e0 + 1 - e; + const n1 = e - e0; + const offset0 = e0 * k; + const offset1 = offset0 + k; + for (j = 0; j < cubeVertices; j++) { + if (j & pos) { + cubeN[j] *= n1; + cubeVertex[j] += offset1; + } else { + cubeN[j] *= n0; + cubeVertex[j] += offset0; + } + } + k *= size_i; + pos <<= 1; + } + for (j = 0; j < outputSize; ++j) { + let rj = 0; + for (i = 0; i < cubeVertices; i++) { + rj += samples[cubeVertex[i] + j] * cubeN[i]; + } + rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); + dest[destOffset + j] = MathClamp(rj, range[j][0], range[j][1]); + } + }; + } + static constructInterpolated(factory, dict) { + const c0 = toNumberArray(dict.getArray("C0")) || [0]; + const c1 = toNumberArray(dict.getArray("C1")) || [1]; + const n = dict.get("N"); + const diff = []; + for (let i = 0, ii = c0.length; i < ii; ++i) { + diff.push(c1[i] - c0[i]); + } + const length = diff.length; + return function constructInterpolatedFn(src, srcOffset, dest, destOffset) { + const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n; + for (let j = 0; j < length; ++j) { + dest[destOffset + j] = c0[j] + x * diff[j]; + } + }; + } + static constructStiched(factory, dict) { + const domain = toNumberArray(dict.getArray("Domain")); + if (!domain) { + throw new FormatError("No domain"); + } + const inputSize = domain.length / 2; + if (inputSize !== 1) { + throw new FormatError("Bad domain for stiched function"); + } + const { + xref + } = factory; + const fns = []; + for (const fn of dict.get("Functions")) { + fns.push(this.parse(factory, xref.fetchIfRef(fn))); + } + const bounds = toNumberArray(dict.getArray("Bounds")); + const encode = toNumberArray(dict.getArray("Encode")); + const tmpBuf = new Float32Array(1); + return function constructStichedFn(src, srcOffset, dest, destOffset) { + const v = MathClamp(src[srcOffset], domain[0], domain[1]); + const length = bounds.length; + let i; + for (i = 0; i < length; ++i) { + if (v < bounds[i]) { + break; + } + } + const dmin = i > 0 ? bounds[i - 1] : domain[0]; + const dmax = i < length ? bounds[i] : domain[1]; + const rmin = encode[2 * i]; + const rmax = encode[2 * i + 1]; + tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); + fns[i](tmpBuf, 0, dest, destOffset); + }; + } + static constructPostScript(factory, fn, dict) { + const domain = toNumberArray(dict.getArray("Domain")); + const range = toNumberArray(dict.getArray("Range")); + if (!domain) { + throw new FormatError("No domain."); + } + if (!range) { + throw new FormatError("No range."); + } + const lexer = new PostScriptLexer(fn); + const parser = new PostScriptParser(lexer); + const code = parser.parse(); + if (factory.isEvalSupported && FeatureTest.isEvalSupported) { + const compiled = new PostScriptCompiler().compile(code, domain, range); + if (compiled) { + return new Function("src", "srcOffset", "dest", "destOffset", compiled); + } + } + info("Unable to compile PS function"); + const numOutputs = range.length >> 1; + const numInputs = domain.length >> 1; + const evaluator = new PostScriptEvaluator(code); + const cache = Object.create(null); + const MAX_CACHE_SIZE = 2048 * 4; + let cache_available = MAX_CACHE_SIZE; + const tmpBuf = new Float32Array(numInputs); + return function constructPostScriptFn(src, srcOffset, dest, destOffset) { + let i, value; + let key = ""; + const input = tmpBuf; + for (i = 0; i < numInputs; i++) { + value = src[srcOffset + i]; + input[i] = value; + key += value + "_"; + } + const cachedValue = cache[key]; + if (cachedValue !== undefined) { + dest.set(cachedValue, destOffset); + return; + } + const output = new Float32Array(numOutputs); + const stack = evaluator.execute(input); + const stackIndex = stack.length - numOutputs; + for (i = 0; i < numOutputs; i++) { + output[i] = MathClamp(stack[stackIndex + i], range[i * 2], range[i * 2 + 1]); + } + if (cache_available > 0) { + cache_available--; + cache[key] = output; + } + dest.set(output, destOffset); + }; + } +} +function isPDFFunction(v) { + let fnDict; + if (v instanceof Dict) { + fnDict = v; + } else if (v instanceof BaseStream) { + fnDict = v.dict; + } else { + return false; + } + return fnDict.has("FunctionType"); +} +class PostScriptStack { + static MAX_STACK_SIZE = 100; + constructor(initialStack) { + this.stack = initialStack ? Array.from(initialStack) : []; + } + push(value) { + if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) { + throw new Error("PostScript function stack overflow."); + } + this.stack.push(value); + } + pop() { + if (this.stack.length <= 0) { + throw new Error("PostScript function stack underflow."); + } + return this.stack.pop(); + } + copy(n) { + if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) { + throw new Error("PostScript function stack overflow."); + } + const stack = this.stack; + for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) { + stack.push(stack[i]); + } + } + index(n) { + this.push(this.stack[this.stack.length - n - 1]); + } + roll(n, p) { + const stack = this.stack; + const l = stack.length - n; + const r = stack.length - 1; + const c = l + (p - Math.floor(p / n) * n); + for (let i = l, j = r; i < j; i++, j--) { + const t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + for (let i = l, j = c - 1; i < j; i++, j--) { + const t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + for (let i = c, j = r; i < j; i++, j--) { + const t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + } +} +class PostScriptEvaluator { + constructor(operators) { + this.operators = operators; + } + execute(initialStack) { + const stack = new PostScriptStack(initialStack); + let counter = 0; + const operators = this.operators; + const length = operators.length; + let operator, a, b; + while (counter < length) { + operator = operators[counter++]; + if (typeof operator === "number") { + stack.push(operator); + continue; + } + switch (operator) { + case "jz": + b = stack.pop(); + a = stack.pop(); + if (!a) { + counter = b; + } + break; + case "j": + a = stack.pop(); + counter = a; + break; + case "abs": + a = stack.pop(); + stack.push(Math.abs(a)); + break; + case "add": + b = stack.pop(); + a = stack.pop(); + stack.push(a + b); + break; + case "and": + b = stack.pop(); + a = stack.pop(); + if (typeof a === "boolean" && typeof b === "boolean") { + stack.push(a && b); + } else { + stack.push(a & b); + } + break; + case "atan": + b = stack.pop(); + a = stack.pop(); + a = Math.atan2(a, b) / Math.PI * 180; + if (a < 0) { + a += 360; + } + stack.push(a); + break; + case "bitshift": + b = stack.pop(); + a = stack.pop(); + if (a > 0) { + stack.push(a << b); + } else { + stack.push(a >> b); + } + break; + case "ceiling": + a = stack.pop(); + stack.push(Math.ceil(a)); + break; + case "copy": + a = stack.pop(); + stack.copy(a); + break; + case "cos": + a = stack.pop(); + stack.push(Math.cos(a % 360 / 180 * Math.PI)); + break; + case "cvi": + a = stack.pop() | 0; + stack.push(a); + break; + case "cvr": + break; + case "div": + b = stack.pop(); + a = stack.pop(); + stack.push(a / b); + break; + case "dup": + stack.copy(1); + break; + case "eq": + b = stack.pop(); + a = stack.pop(); + stack.push(a === b); + break; + case "exch": + stack.roll(2, 1); + break; + case "exp": + b = stack.pop(); + a = stack.pop(); + stack.push(a ** b); + break; + case "false": + stack.push(false); + break; + case "floor": + a = stack.pop(); + stack.push(Math.floor(a)); + break; + case "ge": + b = stack.pop(); + a = stack.pop(); + stack.push(a >= b); + break; + case "gt": + b = stack.pop(); + a = stack.pop(); + stack.push(a > b); + break; + case "idiv": + b = stack.pop(); + a = stack.pop(); + stack.push(a / b | 0); + break; + case "index": + a = stack.pop(); + stack.index(a); + break; + case "le": + b = stack.pop(); + a = stack.pop(); + stack.push(a <= b); + break; + case "ln": + a = stack.pop(); + stack.push(Math.log(a)); + break; + case "log": + a = stack.pop(); + stack.push(Math.log10(a)); + break; + case "lt": + b = stack.pop(); + a = stack.pop(); + stack.push(a < b); + break; + case "mod": + b = stack.pop(); + a = stack.pop(); + stack.push(a % b); + break; + case "mul": + b = stack.pop(); + a = stack.pop(); + stack.push(a * b); + break; + case "ne": + b = stack.pop(); + a = stack.pop(); + stack.push(a !== b); + break; + case "neg": + a = stack.pop(); + stack.push(-a); + break; + case "not": + a = stack.pop(); + if (typeof a === "boolean") { + stack.push(!a); + } else { + stack.push(~a); + } + break; + case "or": + b = stack.pop(); + a = stack.pop(); + if (typeof a === "boolean" && typeof b === "boolean") { + stack.push(a || b); + } else { + stack.push(a | b); + } + break; + case "pop": + stack.pop(); + break; + case "roll": + b = stack.pop(); + a = stack.pop(); + stack.roll(a, b); + break; + case "round": + a = stack.pop(); + stack.push(Math.round(a)); + break; + case "sin": + a = stack.pop(); + stack.push(Math.sin(a % 360 / 180 * Math.PI)); + break; + case "sqrt": + a = stack.pop(); + stack.push(Math.sqrt(a)); + break; + case "sub": + b = stack.pop(); + a = stack.pop(); + stack.push(a - b); + break; + case "true": + stack.push(true); + break; + case "truncate": + a = stack.pop(); + a = a < 0 ? Math.ceil(a) : Math.floor(a); + stack.push(a); + break; + case "xor": + b = stack.pop(); + a = stack.pop(); + if (typeof a === "boolean" && typeof b === "boolean") { + stack.push(a !== b); + } else { + stack.push(a ^ b); + } + break; + default: + throw new FormatError(`Unknown operator ${operator}`); + } + } + return stack.stack; + } +} +class AstNode { + constructor(type) { + this.type = type; + } + visit(visitor) { + unreachable("abstract method"); + } +} +class AstArgument extends AstNode { + constructor(index, min, max) { + super("args"); + this.index = index; + this.min = min; + this.max = max; + } + visit(visitor) { + visitor.visitArgument(this); + } +} +class AstLiteral extends AstNode { + constructor(number) { + super("literal"); + this.number = number; + this.min = number; + this.max = number; + } + visit(visitor) { + visitor.visitLiteral(this); + } +} +class AstBinaryOperation extends AstNode { + constructor(op, arg1, arg2, min, max) { + super("binary"); + this.op = op; + this.arg1 = arg1; + this.arg2 = arg2; + this.min = min; + this.max = max; + } + visit(visitor) { + visitor.visitBinaryOperation(this); + } +} +class AstMin extends AstNode { + constructor(arg, max) { + super("max"); + this.arg = arg; + this.min = arg.min; + this.max = max; + } + visit(visitor) { + visitor.visitMin(this); + } +} +class AstVariable extends AstNode { + constructor(index, min, max) { + super("var"); + this.index = index; + this.min = min; + this.max = max; + } + visit(visitor) { + visitor.visitVariable(this); + } +} +class AstVariableDefinition extends AstNode { + constructor(variable, arg) { + super("definition"); + this.variable = variable; + this.arg = arg; + } + visit(visitor) { + visitor.visitVariableDefinition(this); + } +} +class ExpressionBuilderVisitor { + parts = []; + visitArgument(arg) { + this.parts.push("Math.max(", arg.min, ", Math.min(", arg.max, ", src[srcOffset + ", arg.index, "]))"); + } + visitVariable(variable) { + this.parts.push("v", variable.index); + } + visitLiteral(literal) { + this.parts.push(literal.number); + } + visitBinaryOperation(operation) { + this.parts.push("("); + operation.arg1.visit(this); + this.parts.push(" ", operation.op, " "); + operation.arg2.visit(this); + this.parts.push(")"); + } + visitVariableDefinition(definition) { + this.parts.push("var "); + definition.variable.visit(this); + this.parts.push(" = "); + definition.arg.visit(this); + this.parts.push(";"); + } + visitMin(max) { + this.parts.push("Math.min("); + max.arg.visit(this); + this.parts.push(", ", max.max, ")"); + } + toString() { + return this.parts.join(""); + } +} +function buildAddOperation(num1, num2) { + if (num2.type === "literal" && num2.number === 0) { + return num1; + } + if (num1.type === "literal" && num1.number === 0) { + return num2; + } + if (num2.type === "literal" && num1.type === "literal") { + return new AstLiteral(num1.number + num2.number); + } + return new AstBinaryOperation("+", num1, num2, num1.min + num2.min, num1.max + num2.max); +} +function buildMulOperation(num1, num2) { + if (num2.type === "literal") { + if (num2.number === 0) { + return new AstLiteral(0); + } else if (num2.number === 1) { + return num1; + } else if (num1.type === "literal") { + return new AstLiteral(num1.number * num2.number); + } + } + if (num1.type === "literal") { + if (num1.number === 0) { + return new AstLiteral(0); + } else if (num1.number === 1) { + return num2; + } + } + const min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); + const max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); + return new AstBinaryOperation("*", num1, num2, min, max); +} +function buildSubOperation(num1, num2) { + if (num2.type === "literal") { + if (num2.number === 0) { + return num1; + } else if (num1.type === "literal") { + return new AstLiteral(num1.number - num2.number); + } + } + if (num2.type === "binary" && num2.op === "-" && num1.type === "literal" && num1.number === 1 && num2.arg1.type === "literal" && num2.arg1.number === 1) { + return num2.arg2; + } + return new AstBinaryOperation("-", num1, num2, num1.min - num2.max, num1.max - num2.min); +} +function buildMinOperation(num1, max) { + if (num1.min >= max) { + return new AstLiteral(max); + } else if (num1.max <= max) { + return num1; + } + return new AstMin(num1, max); +} +class PostScriptCompiler { + compile(code, domain, range) { + const stack = []; + const instructions = []; + const inputSize = domain.length >> 1, + outputSize = range.length >> 1; + let lastRegister = 0; + let n, j; + let num1, num2, ast1, ast2, tmpVar, item; + for (let i = 0; i < inputSize; i++) { + stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1])); + } + for (let i = 0, ii = code.length; i < ii; i++) { + item = code[i]; + if (typeof item === "number") { + stack.push(new AstLiteral(item)); + continue; + } + switch (item) { + case "add": + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildAddOperation(num1, num2)); + break; + case "cvr": + if (stack.length < 1) { + return null; + } + break; + case "mul": + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildMulOperation(num1, num2)); + break; + case "sub": + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildSubOperation(num1, num2)); + break; + case "exch": + if (stack.length < 2) { + return null; + } + ast1 = stack.pop(); + ast2 = stack.pop(); + stack.push(ast1, ast2); + break; + case "pop": + if (stack.length < 1) { + return null; + } + stack.pop(); + break; + case "index": + if (stack.length < 1) { + return null; + } + num1 = stack.pop(); + if (num1.type !== "literal") { + return null; + } + n = num1.number; + if (n < 0 || !Number.isInteger(n) || stack.length < n) { + return null; + } + ast1 = stack[stack.length - n - 1]; + if (ast1.type === "literal" || ast1.type === "var") { + stack.push(ast1); + break; + } + tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); + stack[stack.length - n - 1] = tmpVar; + stack.push(tmpVar); + instructions.push(new AstVariableDefinition(tmpVar, ast1)); + break; + case "dup": + if (stack.length < 1) { + return null; + } + if (typeof code[i + 1] === "number" && code[i + 2] === "gt" && code[i + 3] === i + 7 && code[i + 4] === "jz" && code[i + 5] === "pop" && code[i + 6] === code[i + 1]) { + num1 = stack.pop(); + stack.push(buildMinOperation(num1, code[i + 1])); + i += 6; + break; + } + ast1 = stack.at(-1); + if (ast1.type === "literal" || ast1.type === "var") { + stack.push(ast1); + break; + } + tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); + stack[stack.length - 1] = tmpVar; + stack.push(tmpVar); + instructions.push(new AstVariableDefinition(tmpVar, ast1)); + break; + case "roll": + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + if (num2.type !== "literal" || num1.type !== "literal") { + return null; + } + j = num2.number; + n = num1.number; + if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) { + return null; + } + j = (j % n + n) % n; + if (j === 0) { + break; + } + stack.push(...stack.splice(stack.length - n, n - j)); + break; + default: + return null; + } + } + if (stack.length !== outputSize) { + return null; + } + const result = []; + for (const instruction of instructions) { + const statementBuilder = new ExpressionBuilderVisitor(); + instruction.visit(statementBuilder); + result.push(statementBuilder.toString()); + } + for (let i = 0, ii = stack.length; i < ii; i++) { + const expr = stack[i], + statementBuilder = new ExpressionBuilderVisitor(); + expr.visit(statementBuilder); + const min = range[i * 2], + max = range[i * 2 + 1]; + const out = [statementBuilder.toString()]; + if (min > expr.min) { + out.unshift("Math.max(", min, ", "); + out.push(")"); + } + if (max < expr.max) { + out.unshift("Math.min(", max, ", "); + out.push(")"); + } + out.unshift("dest[destOffset + ", i, "] = "); + out.push(";"); + result.push(out.join("")); + } + return result.join("\n"); + } +} + +;// ./src/core/bidi.js + +const baseTypes = ["BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "ON", "ON", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "ON", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "ON", "ET", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "L", "ON", "ON", "BN", "ON", "ON", "ET", "ET", "EN", "EN", "ON", "L", "ON", "ON", "ON", "EN", "L", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L"]; +const arabicTypes = ["AN", "AN", "AN", "AN", "AN", "AN", "ON", "ON", "AL", "ET", "ET", "AL", "CS", "AL", "ON", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "ON", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL"]; +function isOdd(i) { + return (i & 1) !== 0; +} +function isEven(i) { + return (i & 1) === 0; +} +function findUnequal(arr, start, value) { + let j, jj; + for (j = start, jj = arr.length; j < jj; ++j) { + if (arr[j] !== value) { + return j; + } + } + return j; +} +function reverseValues(arr, start, end) { + for (let i = start, j = end - 1; i < j; ++i, --j) { + const temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } +} +function createBidiText(str, isLTR, vertical = false) { + let dir = "ltr"; + if (vertical) { + dir = "ttb"; + } else if (!isLTR) { + dir = "rtl"; + } + return { + str, + dir + }; +} +const chars = []; +const types = []; +function bidi(str, startLevel = -1, vertical = false) { + let isLTR = true; + const strLength = str.length; + if (strLength === 0 || vertical) { + return createBidiText(str, isLTR, vertical); + } + chars.length = strLength; + types.length = strLength; + let numBidi = 0; + let i, ii; + for (i = 0; i < strLength; ++i) { + chars[i] = str.charAt(i); + const charCode = str.charCodeAt(i); + let charType = "L"; + if (charCode <= 0x00ff) { + charType = baseTypes[charCode]; + } else if (0x0590 <= charCode && charCode <= 0x05f4) { + charType = "R"; + } else if (0x0600 <= charCode && charCode <= 0x06ff) { + charType = arabicTypes[charCode & 0xff]; + if (!charType) { + warn("Bidi: invalid Unicode character " + charCode.toString(16)); + } + } else if (0x0700 <= charCode && charCode <= 0x08ac || 0xfb50 <= charCode && charCode <= 0xfdff || 0xfe70 <= charCode && charCode <= 0xfeff) { + charType = "AL"; + } + if (charType === "R" || charType === "AL" || charType === "AN") { + numBidi++; + } + types[i] = charType; + } + if (numBidi === 0) { + isLTR = true; + return createBidiText(str, isLTR); + } + if (startLevel === -1) { + if (numBidi / strLength < 0.3 && strLength > 4) { + isLTR = true; + startLevel = 0; + } else { + isLTR = false; + startLevel = 1; + } + } + const levels = []; + for (i = 0; i < strLength; ++i) { + levels[i] = startLevel; + } + const e = isOdd(startLevel) ? "R" : "L"; + const sor = e; + const eor = sor; + let lastType = sor; + for (i = 0; i < strLength; ++i) { + if (types[i] === "NSM") { + types[i] = lastType; + } else { + lastType = types[i]; + } + } + lastType = sor; + let t; + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === "EN") { + types[i] = lastType === "AL" ? "AN" : "EN"; + } else if (t === "R" || t === "L" || t === "AL") { + lastType = t; + } + } + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === "AL") { + types[i] = "R"; + } + } + for (i = 1; i < strLength - 1; ++i) { + if (types[i] === "ES" && types[i - 1] === "EN" && types[i + 1] === "EN") { + types[i] = "EN"; + } + if (types[i] === "CS" && (types[i - 1] === "EN" || types[i - 1] === "AN") && types[i + 1] === types[i - 1]) { + types[i] = types[i - 1]; + } + } + for (i = 0; i < strLength; ++i) { + if (types[i] === "EN") { + for (let j = i - 1; j >= 0; --j) { + if (types[j] !== "ET") { + break; + } + types[j] = "EN"; + } + for (let j = i + 1; j < strLength; ++j) { + if (types[j] !== "ET") { + break; + } + types[j] = "EN"; + } + } + } + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === "WS" || t === "ES" || t === "ET" || t === "CS") { + types[i] = "ON"; + } + } + lastType = sor; + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === "EN") { + types[i] = lastType === "L" ? "L" : "EN"; + } else if (t === "R" || t === "L") { + lastType = t; + } + } + for (i = 0; i < strLength; ++i) { + if (types[i] === "ON") { + const end = findUnequal(types, i + 1, "ON"); + let before = sor; + for (let j = i - 1; j >= 0; j--) { + const tt = types[j]; + if (tt === "L") { + before = "L"; + break; + } + if (tt === "R" || tt === "EN" || tt === "AN") { + before = "R"; + break; + } + } + let after = eor; + for (let j = end; j < strLength; j++) { + const tt = types[j]; + if (tt === "L") { + after = "L"; + break; + } + if (tt === "R" || tt === "EN" || tt === "AN") { + after = "R"; + break; + } + } + if (before === after) { + types.fill(before, i, end); + } + i = end - 1; + } + } + for (i = 0; i < strLength; ++i) { + if (types[i] === "ON") { + types[i] = e; + } + } + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (isEven(levels[i])) { + if (t === "R") { + levels[i] += 1; + } else if (t === "AN" || t === "EN") { + levels[i] += 2; + } + } else if (t === "L" || t === "AN" || t === "EN") { + levels[i] += 1; + } + } + let highestLevel = -1; + let lowestOddLevel = 99; + let level; + for (i = 0, ii = levels.length; i < ii; ++i) { + level = levels[i]; + if (highestLevel < level) { + highestLevel = level; + } + if (lowestOddLevel > level && isOdd(level)) { + lowestOddLevel = level; + } + } + for (level = highestLevel; level >= lowestOddLevel; --level) { + let start = -1; + for (i = 0, ii = levels.length; i < ii; ++i) { + if (levels[i] < level) { + if (start >= 0) { + reverseValues(chars, start, i); + start = -1; + } + } else if (start < 0) { + start = i; + } + } + if (start >= 0) { + reverseValues(chars, start, levels.length); + } + } + for (i = 0, ii = chars.length; i < ii; ++i) { + const ch = chars[i]; + if (ch === "<" || ch === ">") { + chars[i] = ""; + } + } + return createBidiText(chars.join(""), isLTR); +} + +;// ./src/core/font_substitutions.js + + + +const NORMAL = { + style: "normal", + weight: "normal" +}; +const BOLD = { + style: "normal", + weight: "bold" +}; +const ITALIC = { + style: "italic", + weight: "normal" +}; +const BOLDITALIC = { + style: "italic", + weight: "bold" +}; +const substitutionMap = new Map([["Times-Roman", { + local: ["Times New Roman", "Times-Roman", "Times", "Liberation Serif", "Nimbus Roman", "Nimbus Roman L", "Tinos", "Thorndale", "TeX Gyre Termes", "FreeSerif", "Linux Libertine O", "Libertinus Serif", "PT Astra Serif", "DejaVu Serif", "Bitstream Vera Serif", "Ubuntu"], + style: NORMAL, + ultimate: "serif" +}], ["Times-Bold", { + alias: "Times-Roman", + style: BOLD, + ultimate: "serif" +}], ["Times-Italic", { + alias: "Times-Roman", + style: ITALIC, + ultimate: "serif" +}], ["Times-BoldItalic", { + alias: "Times-Roman", + style: BOLDITALIC, + ultimate: "serif" +}], ["Helvetica", { + local: ["Helvetica", "Helvetica Neue", "Arial", "Arial Nova", "Liberation Sans", "Arimo", "Nimbus Sans", "Nimbus Sans L", "A030", "TeX Gyre Heros", "FreeSans", "DejaVu Sans", "Albany", "Bitstream Vera Sans", "Arial Unicode MS", "Microsoft Sans Serif", "Apple Symbols", "Cantarell"], + path: "LiberationSans-Regular.ttf", + style: NORMAL, + ultimate: "sans-serif" +}], ["Helvetica-Bold", { + alias: "Helvetica", + path: "LiberationSans-Bold.ttf", + style: BOLD, + ultimate: "sans-serif" +}], ["Helvetica-Oblique", { + alias: "Helvetica", + path: "LiberationSans-Italic.ttf", + style: ITALIC, + ultimate: "sans-serif" +}], ["Helvetica-BoldOblique", { + alias: "Helvetica", + path: "LiberationSans-BoldItalic.ttf", + style: BOLDITALIC, + ultimate: "sans-serif" +}], ["Courier", { + local: ["Courier", "Courier New", "Liberation Mono", "Nimbus Mono", "Nimbus Mono L", "Cousine", "Cumberland", "TeX Gyre Cursor", "FreeMono", "Linux Libertine Mono O", "Libertinus Mono"], + style: NORMAL, + ultimate: "monospace" +}], ["Courier-Bold", { + alias: "Courier", + style: BOLD, + ultimate: "monospace" +}], ["Courier-Oblique", { + alias: "Courier", + style: ITALIC, + ultimate: "monospace" +}], ["Courier-BoldOblique", { + alias: "Courier", + style: BOLDITALIC, + ultimate: "monospace" +}], ["ArialBlack", { + local: ["Arial Black"], + style: { + style: "normal", + weight: "900" + }, + fallback: "Helvetica-Bold" +}], ["ArialBlack-Bold", { + alias: "ArialBlack" +}], ["ArialBlack-Italic", { + alias: "ArialBlack", + style: { + style: "italic", + weight: "900" + }, + fallback: "Helvetica-BoldOblique" +}], ["ArialBlack-BoldItalic", { + alias: "ArialBlack-Italic" +}], ["ArialNarrow", { + local: ["Arial Narrow", "Liberation Sans Narrow", "Helvetica Condensed", "Nimbus Sans Narrow", "TeX Gyre Heros Cn"], + style: NORMAL, + fallback: "Helvetica" +}], ["ArialNarrow-Bold", { + alias: "ArialNarrow", + style: BOLD, + fallback: "Helvetica-Bold" +}], ["ArialNarrow-Italic", { + alias: "ArialNarrow", + style: ITALIC, + fallback: "Helvetica-Oblique" +}], ["ArialNarrow-BoldItalic", { + alias: "ArialNarrow", + style: BOLDITALIC, + fallback: "Helvetica-BoldOblique" +}], ["Calibri", { + local: ["Calibri", "Carlito"], + style: NORMAL, + fallback: "Helvetica" +}], ["Calibri-Bold", { + alias: "Calibri", + style: BOLD, + fallback: "Helvetica-Bold" +}], ["Calibri-Italic", { + alias: "Calibri", + style: ITALIC, + fallback: "Helvetica-Oblique" +}], ["Calibri-BoldItalic", { + alias: "Calibri", + style: BOLDITALIC, + fallback: "Helvetica-BoldOblique" +}], ["Wingdings", { + local: ["Wingdings", "URW Dingbats"], + style: NORMAL +}], ["Wingdings-Regular", { + alias: "Wingdings" +}], ["Wingdings-Bold", { + alias: "Wingdings" +}], ["\xCB\xCE\xCC\xE5", { + local: ["SimSun", "SimSun Regular", "NSimSun"], + style: NORMAL, + ultimate: "serif" +}], ["\xBA\xDA\xCC\xE5", { + local: ["SimHei", "SimHei Regular"], + style: NORMAL, + ultimate: "sans-serif" +}], ["\xBF\xAC\xCC\xE5", { + local: ["KaiTi", "SimKai", "SimKai Regular"], + style: NORMAL, + ultimate: "sans-serif" +}], ["\xB7\xC2\xCB\xCE", { + local: ["FangSong", "SimFang", "SimFang Regular"], + style: NORMAL, + ultimate: "serif" +}], ["\xBF\xAC\xCC\xE5_GB2312", { + alias: "\xBF\xAC\xCC\xE5" +}], ["\xB7\xC2\xCB\xCE_GB2312", { + alias: "\xB7\xC2\xCB\xCE" +}], ["\xC1\xA5\xCA\xE9", { + local: ["SimLi", "SimLi Regular"], + style: NORMAL, + ultimate: "serif" +}], ["\xD0\xC2\xCB\xCE", { + alias: "\xCB\xCE\xCC\xE5" +}]]); +const fontAliases = new Map([["Arial-Black", "ArialBlack"]]); +function getStyleToAppend(style) { + switch (style) { + case BOLD: + return "Bold"; + case ITALIC: + return "Italic"; + case BOLDITALIC: + return "Bold Italic"; + default: + if (style?.weight === "bold") { + return "Bold"; + } + if (style?.style === "italic") { + return "Italic"; + } + } + return ""; +} +function getFamilyName(str) { + const keywords = new Set(["thin", "extralight", "ultralight", "demilight", "semilight", "light", "book", "regular", "normal", "medium", "demibold", "semibold", "bold", "extrabold", "ultrabold", "black", "heavy", "extrablack", "ultrablack", "roman", "italic", "oblique", "ultracondensed", "extracondensed", "condensed", "semicondensed", "normal", "semiexpanded", "expanded", "extraexpanded", "ultraexpanded", "bolditalic"]); + return str.split(/[- ,+]+/g).filter(tok => !keywords.has(tok.toLowerCase())).join(" "); +} +function generateFont({ + alias, + local, + path, + fallback, + style, + ultimate +}, src, localFontPath, useFallback = true, usePath = true, append = "") { + const result = { + style: null, + ultimate: null + }; + if (local) { + const extra = append ? ` ${append}` : ""; + for (const name of local) { + src.push(`local(${name}${extra})`); + } + } + if (alias) { + const substitution = substitutionMap.get(alias); + const aliasAppend = append || getStyleToAppend(style); + Object.assign(result, generateFont(substitution, src, localFontPath, useFallback && !fallback, usePath && !path, aliasAppend)); + } + if (style) { + result.style = style; + } + if (ultimate) { + result.ultimate = ultimate; + } + if (useFallback && fallback) { + const fallbackInfo = substitutionMap.get(fallback); + const { + ultimate: fallbackUltimate + } = generateFont(fallbackInfo, src, localFontPath, useFallback, usePath && !path, append); + result.ultimate ||= fallbackUltimate; + } + if (usePath && path && localFontPath) { + src.push(`url(${localFontPath}${path})`); + } + return result; +} +function getFontSubstitution(systemFontCache, idFactory, localFontPath, baseFontName, standardFontName, type) { + if (baseFontName.startsWith("InvalidPDFjsFont_")) { + return null; + } + if ((type === "TrueType" || type === "Type1") && /^[A-Z]{6}\+/.test(baseFontName)) { + baseFontName = baseFontName.slice(7); + } + baseFontName = normalizeFontName(baseFontName); + const key = baseFontName; + let substitutionInfo = systemFontCache.get(key); + if (substitutionInfo) { + return substitutionInfo; + } + let substitution = substitutionMap.get(baseFontName); + if (!substitution) { + for (const [alias, subst] of fontAliases) { + if (baseFontName.startsWith(alias)) { + baseFontName = `${subst}${baseFontName.substring(alias.length)}`; + substitution = substitutionMap.get(baseFontName); + break; + } + } + } + let mustAddBaseFont = false; + if (!substitution) { + substitution = substitutionMap.get(standardFontName); + mustAddBaseFont = true; + } + const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`; + if (!substitution) { + if (!validateFontName(baseFontName)) { + warn(`Cannot substitute the font because of its name: ${baseFontName}`); + systemFontCache.set(key, null); + return null; + } + const bold = /bold/gi.test(baseFontName); + const italic = /oblique|italic/gi.test(baseFontName); + const style = bold && italic && BOLDITALIC || bold && BOLD || italic && ITALIC || NORMAL; + substitutionInfo = { + css: `"${getFamilyName(baseFontName)}",${loadedName}`, + guessFallback: true, + loadedName, + baseFontName, + src: `local(${baseFontName})`, + style + }; + systemFontCache.set(key, substitutionInfo); + return substitutionInfo; + } + const src = []; + if (mustAddBaseFont && validateFontName(baseFontName)) { + src.push(`local(${baseFontName})`); + } + const { + style, + ultimate + } = generateFont(substitution, src, localFontPath); + const guessFallback = ultimate === null; + const fallback = guessFallback ? "" : `,${ultimate}`; + substitutionInfo = { + css: `"${getFamilyName(baseFontName)}",${loadedName}${fallback}`, + guessFallback, + loadedName, + baseFontName, + src: src.join(","), + style + }; + systemFontCache.set(key, substitutionInfo); + return substitutionInfo; +} + +;// ./src/shared/murmurhash3.js +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; +class MurmurHash3_64 { + constructor(seed) { + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; + } + update(input) { + let data, length; + if (typeof input === "string") { + data = new Uint8Array(input.length * 2); + length = 0; + for (let i = 0, ii = input.length; i < ii; i++) { + const code = input.charCodeAt(i); + if (code <= 0xff) { + data[length++] = code; + } else { + data[length++] = code >>> 8; + data[length++] = code & 0xff; + } + } + } else if (ArrayBuffer.isView(input)) { + data = input.slice(); + length = data.byteLength; + } else { + throw new Error("Invalid data format, must be a string or TypedArray."); + } + const blockCounts = length >> 2; + const tailLength = length - blockCounts * 4; + const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); + let k1 = 0, + k2 = 0; + let h1 = this.h1, + h2 = this.h2; + const C1 = 0xcc9e2d51, + C2 = 0x1b873593; + const C1_LOW = C1 & MASK_LOW, + C2_LOW = C2 & MASK_LOW; + for (let i = 0; i < blockCounts; i++) { + if (i & 1) { + k1 = dataUint32[i]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1 = h1 * 5 + 0xe6546b64; + } else { + k2 = dataUint32[i]; + k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; + k2 = k2 << 15 | k2 >>> 17; + k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; + h2 ^= k2; + h2 = h2 << 13 | h2 >>> 19; + h2 = h2 * 5 + 0xe6546b64; + } + } + k1 = 0; + switch (tailLength) { + case 3: + k1 ^= data[blockCounts * 4 + 2] << 16; + case 2: + k1 ^= data[blockCounts * 4 + 1] << 8; + case 1: + k1 ^= data[blockCounts * 4]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + if (blockCounts & 1) { + h1 ^= k1; + } else { + h2 ^= k1; + } + } + this.h1 = h1; + this.h2 = h2; + } + hexdigest() { + let h1 = this.h1, + h2 = this.h2; + h1 ^= h2 >>> 1; + h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; + h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; + h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + return (h1 >>> 0).toString(16).padStart(8, "0") + (h2 >>> 0).toString(16).padStart(8, "0"); + } +} + +;// ./src/core/image.js + + + + + + + + + + +class PDFImage { + constructor({ + xref, + res, + image, + isInline = false, + smask = null, + mask = null, + isMask = false, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }) { + this.image = image; + const dict = image.dict; + const filter = dict.get("F", "Filter"); + let filterName; + if (filter instanceof Name) { + filterName = filter.name; + } else if (Array.isArray(filter)) { + const filterZero = xref.fetchIfRef(filter[0]); + if (filterZero instanceof Name) { + filterName = filterZero.name; + } + } + switch (filterName) { + case "JPXDecode": + ({ + width: image.width, + height: image.height, + componentsCount: image.numComps, + bitsPerComponent: image.bitsPerComponent + } = JpxImage.parseImageProperties(image.stream)); + image.stream.reset(); + const reducePower = ImageResizer.getReducePowerForJPX(image.width, image.height, image.numComps); + this.jpxDecoderOptions = { + numComponents: 0, + isIndexedColormap: false, + smaskInData: dict.has("SMaskInData"), + reducePower + }; + if (reducePower) { + const factor = 2 ** reducePower; + image.width = Math.ceil(image.width / factor); + image.height = Math.ceil(image.height / factor); + } + break; + case "JBIG2Decode": + image.bitsPerComponent = 1; + image.numComps = 1; + break; + } + let width = dict.get("W", "Width"); + let height = dict.get("H", "Height"); + if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) { + warn("PDFImage - using the Width/Height of the image data, " + "rather than the image dictionary."); + width = image.width; + height = image.height; + } else { + const validWidth = typeof width === "number" && width > 0, + validHeight = typeof height === "number" && height > 0; + if (!validWidth || !validHeight) { + if (!image.fallbackDims) { + throw new FormatError(`Invalid image width: ${width} or height: ${height}`); + } + warn("PDFImage - using the Width/Height of the parent image, for SMask/Mask data."); + if (!validWidth) { + width = image.fallbackDims.width; + } + if (!validHeight) { + height = image.fallbackDims.height; + } + } + } + this.width = width; + this.height = height; + this.interpolate = dict.get("I", "Interpolate"); + this.imageMask = dict.get("IM", "ImageMask") || false; + this.matte = dict.get("Matte") || false; + let bitsPerComponent = image.bitsPerComponent; + if (!bitsPerComponent) { + bitsPerComponent = dict.get("BPC", "BitsPerComponent"); + if (!bitsPerComponent) { + if (this.imageMask) { + bitsPerComponent = 1; + } else { + throw new FormatError(`Bits per component missing in image: ${this.imageMask}`); + } + } + } + this.bpc = bitsPerComponent; + if (!this.imageMask) { + let colorSpace = dict.getRaw("CS") || dict.getRaw("ColorSpace"); + const hasColorSpace = !!colorSpace; + if (!hasColorSpace) { + if (this.jpxDecoderOptions) { + colorSpace = Name.get("DeviceRGBA"); + } else { + switch (image.numComps) { + case 1: + colorSpace = Name.get("DeviceGray"); + break; + case 3: + colorSpace = Name.get("DeviceRGB"); + break; + case 4: + colorSpace = Name.get("DeviceCMYK"); + break; + default: + throw new Error(`Images with ${image.numComps} color components not supported.`); + } + } + } else if (this.jpxDecoderOptions?.smaskInData) { + colorSpace = Name.get("DeviceRGBA"); + } + this.colorSpace = ColorSpaceUtils.parse({ + cs: colorSpace, + xref, + resources: isInline ? res : null, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }); + this.numComps = this.colorSpace.numComps; + if (this.jpxDecoderOptions) { + this.jpxDecoderOptions.numComponents = hasColorSpace ? this.numComps : 0; + this.jpxDecoderOptions.isIndexedColormap = this.colorSpace.name === "Indexed"; + } + } else { + this.numComps = 1; + } + this.decode = dict.getArray("D", "Decode"); + this.needsDecode = false; + if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !ColorSpace.isDefaultDecode(this.decode, 1))) { + this.needsDecode = true; + const max = (1 << bitsPerComponent) - 1; + this.decodeCoefficients = []; + this.decodeAddends = []; + const isIndexed = this.colorSpace?.name === "Indexed"; + for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) { + const dmin = this.decode[i]; + const dmax = this.decode[i + 1]; + this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin; + this.decodeAddends[j] = isIndexed ? dmin : max * dmin; + } + } + if (smask) { + smask.fallbackDims ??= { + width, + height + }; + this.smask = new PDFImage({ + xref, + res, + image: smask, + isInline, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }); + } else if (mask) { + if (mask instanceof BaseStream) { + const maskDict = mask.dict, + imageMask = maskDict.get("IM", "ImageMask"); + if (!imageMask) { + warn("Ignoring /Mask in image without /ImageMask."); + } else { + mask.fallbackDims ??= { + width, + height + }; + this.mask = new PDFImage({ + xref, + res, + image: mask, + isInline, + isMask: true, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }); + } + } else { + this.mask = mask; + } + } + } + static async buildImage({ + xref, + res, + image, + isInline = false, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }) { + const imageData = image; + let smaskData = null; + let maskData = null; + const smask = image.dict.get("SMask"); + const mask = image.dict.get("Mask"); + if (smask) { + if (smask instanceof BaseStream) { + smaskData = smask; + } else { + warn("Unsupported /SMask format."); + } + } else if (mask) { + if (mask instanceof BaseStream || Array.isArray(mask)) { + maskData = mask; + } else { + warn("Unsupported /Mask format."); + } + } + return new PDFImage({ + xref, + res, + image: imageData, + isInline, + smask: smaskData, + mask: maskData, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + }); + } + static async createMask({ + image, + isOffscreenCanvasSupported = false + }) { + const { + dict + } = image; + const width = dict.get("W", "Width"); + const height = dict.get("H", "Height"); + const interpolate = dict.get("I", "Interpolate"); + const decode = dict.getArray("D", "Decode"); + const inverseDecode = decode?.[0] > 0; + const computedLength = (width + 7 >> 3) * height; + const imgArray = await image.getImageData(computedLength); + const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128)); + if (isSingleOpaquePixel) { + return { + isSingleOpaquePixel + }; + } + if (isOffscreenCanvasSupported) { + if (ImageResizer.needsToBeResized(width, height)) { + const data = new Uint8ClampedArray(width * height * 4); + convertBlackAndWhiteToRGBA({ + src: imgArray, + dest: data, + width, + height, + nonBlackColor: 0, + inverseDecode + }); + return ImageResizer.createImage({ + kind: ImageKind.RGBA_32BPP, + data, + width, + height, + interpolate + }); + } + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d"); + const imgData = ctx.createImageData(width, height); + convertBlackAndWhiteToRGBA({ + src: imgArray, + dest: imgData.data, + width, + height, + nonBlackColor: 0, + inverseDecode + }); + ctx.putImageData(imgData, 0, 0); + const bitmap = canvas.transferToImageBitmap(); + return { + data: null, + width, + height, + interpolate, + bitmap + }; + } + const actualLength = imgArray.byteLength; + const haveFullData = computedLength === actualLength; + let data; + if (image instanceof DecodeStream && (!inverseDecode || haveFullData)) { + data = imgArray; + } else if (!inverseDecode) { + data = new Uint8Array(imgArray); + } else { + data = new Uint8Array(computedLength); + data.set(imgArray); + data.fill(0xff, actualLength); + } + if (inverseDecode) { + for (let i = 0; i < actualLength; i++) { + data[i] ^= 0xff; + } + } + return { + data, + width, + height, + interpolate + }; + } + get drawWidth() { + return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0); + } + get drawHeight() { + return Math.max(this.height, this.smask?.height || 0, this.mask?.height || 0); + } + decodeBuffer(buffer) { + const bpc = this.bpc; + const numComps = this.numComps; + const decodeAddends = this.decodeAddends; + const decodeCoefficients = this.decodeCoefficients; + const max = (1 << bpc) - 1; + let i, ii; + if (bpc === 1) { + for (i = 0, ii = buffer.length; i < ii; i++) { + buffer[i] = +!buffer[i]; + } + return; + } + let index = 0; + for (i = 0, ii = this.width * this.height; i < ii; i++) { + for (let j = 0; j < numComps; j++) { + buffer[index] = MathClamp(decodeAddends[j] + buffer[index] * decodeCoefficients[j], 0, max); + index++; + } + } + } + getComponents(buffer) { + const bpc = this.bpc; + if (bpc === 8) { + return buffer; + } + const width = this.width; + const height = this.height; + const numComps = this.numComps; + const length = width * height * numComps; + let bufferPos = 0; + let output; + if (bpc <= 8) { + output = new Uint8Array(length); + } else if (bpc <= 16) { + output = new Uint16Array(length); + } else { + output = new Uint32Array(length); + } + const rowComps = width * numComps; + const max = (1 << bpc) - 1; + let i = 0, + ii, + buf; + if (bpc === 1) { + let mask, loop1End, loop2End; + for (let j = 0; j < height; j++) { + loop1End = i + (rowComps & ~7); + loop2End = i + rowComps; + while (i < loop1End) { + buf = buffer[bufferPos++]; + output[i] = buf >> 7 & 1; + output[i + 1] = buf >> 6 & 1; + output[i + 2] = buf >> 5 & 1; + output[i + 3] = buf >> 4 & 1; + output[i + 4] = buf >> 3 & 1; + output[i + 5] = buf >> 2 & 1; + output[i + 6] = buf >> 1 & 1; + output[i + 7] = buf & 1; + i += 8; + } + if (i < loop2End) { + buf = buffer[bufferPos++]; + mask = 128; + while (i < loop2End) { + output[i++] = +!!(buf & mask); + mask >>= 1; + } + } + } + } else { + let bits = 0; + buf = 0; + for (i = 0, ii = length; i < ii; ++i) { + if (i % rowComps === 0) { + buf = 0; + bits = 0; + } + while (bits < bpc) { + buf = buf << 8 | buffer[bufferPos++]; + bits += 8; + } + const remainingBits = bits - bpc; + let value = buf >> remainingBits; + if (value < 0) { + value = 0; + } else if (value > max) { + value = max; + } + output[i] = value; + buf &= (1 << remainingBits) - 1; + bits = remainingBits; + } + } + return output; + } + async fillOpacity(rgbaBuf, width, height, actualHeight, image) { + let apply; + if (this.smask) { + apply = (buffer, options) => this.smask.fillGrayBuffer(buffer, { + ...options, + destWidth: width, + destHeight: height + }); + } else if (this.mask) { + if (this.mask instanceof PDFImage) { + apply = (buffer, options) => this.mask.fillGrayBuffer(buffer, { + ...options, + invertOutput: true, + destWidth: width, + destHeight: height + }); + } else if (Array.isArray(this.mask)) { + apply = (buffer, { + maxRows, + offset, + stride + }) => { + for (let i = 0, ii = width * maxRows; i < ii; ++i) { + let opacity = 0; + const imageOffset = i * this.numComps; + for (let j = 0; j < this.numComps; ++j) { + const color = image[imageOffset + j]; + const maskOffset = j * 2; + if (color < this.mask[maskOffset] || color > this.mask[maskOffset + 1]) { + opacity = 255; + break; + } + } + buffer[i * stride + offset] = opacity; + } + }; + } else { + throw new FormatError("Unknown mask format."); + } + } else { + apply = (buffer, { + maxRows, + offset, + stride + }) => { + for (let i = 0, ii = width * maxRows; i < ii; ++i) { + buffer[i * stride + offset] = 255; + } + }; + } + await apply(rgbaBuf, { + maxRows: actualHeight, + offset: 3, + stride: 4 + }); + } + undoPreblend(buffer, width, height) { + const matte = this.smask?.matte; + if (!matte) { + return; + } + const matteRgb = this.colorSpace.getRgb(matte, 0); + const matteR = matteRgb[0]; + const matteG = matteRgb[1]; + const matteB = matteRgb[2]; + const length = width * height * 4; + for (let i = 0; i < length; i += 4) { + const alpha = buffer[i + 3]; + if (alpha === 0) { + buffer[i] = 255; + buffer[i + 1] = 255; + buffer[i + 2] = 255; + continue; + } + const k = 255 / alpha; + buffer[i] = (buffer[i] - matteR) * k + matteR; + buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG; + buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB; + } + } + async createImageData(forceRGBA = false, isOffscreenCanvasSupported = false) { + const drawWidth = this.drawWidth; + const drawHeight = this.drawHeight; + const imgData = { + width: drawWidth, + height: drawHeight, + interpolate: this.interpolate, + kind: 0, + data: null + }; + const numComps = this.numComps; + const originalWidth = this.width; + const originalHeight = this.height; + const bpc = this.bpc; + const rowBytes = originalWidth * numComps * bpc + 7 >> 3; + const mustBeResized = isOffscreenCanvasSupported && ImageResizer.needsToBeResized(drawWidth, drawHeight); + if (!this.smask && !this.mask && this.colorSpace.name === "DeviceRGBA") { + imgData.kind = ImageKind.RGBA_32BPP; + const imgArray = imgData.data = await this.getImageBytes(originalHeight * originalWidth * 4, { + internal: isOffscreenCanvasSupported && mustBeResized + }); + if (isOffscreenCanvasSupported) { + if (!mustBeResized) { + return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, imgArray); + } + return ImageResizer.createImage(imgData, false); + } + return imgData; + } + if (!forceRGBA) { + let kind; + if (this.colorSpace.name === "DeviceGray" && bpc === 1) { + kind = ImageKind.GRAYSCALE_1BPP; + } else if (this.colorSpace.name === "DeviceRGB" && bpc === 8 && !this.needsDecode) { + kind = ImageKind.RGB_24BPP; + } + if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) { + const image = await this.#getImage(originalWidth, originalHeight); + if (image) { + return image; + } + const data = await this.getImageBytes(originalHeight * rowBytes, { + internal: isOffscreenCanvasSupported && mustBeResized + }); + if (isOffscreenCanvasSupported) { + if (mustBeResized) { + return ImageResizer.createImage({ + data, + kind, + width: drawWidth, + height: drawHeight, + interpolate: this.interpolate + }, this.needsDecode); + } + return this.createBitmap(kind, originalWidth, originalHeight, data); + } + imgData.kind = kind; + imgData.data = data; + if (this.needsDecode) { + assert(kind === ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image must be grayscale."); + const buffer = imgData.data; + for (let i = 0, ii = buffer.length; i < ii; i++) { + buffer[i] ^= 0xff; + } + } + return imgData; + } + if (this.image instanceof JpegStream && !this.smask && !this.mask && !this.needsDecode) { + let imageLength = originalHeight * rowBytes; + if (isOffscreenCanvasSupported && !mustBeResized) { + let isHandled = false; + switch (this.colorSpace.name) { + case "DeviceGray": + imageLength *= 4; + isHandled = true; + break; + case "DeviceRGB": + imageLength = imageLength / 3 * 4; + isHandled = true; + break; + case "DeviceCMYK": + isHandled = true; + break; + } + if (isHandled) { + const image = await this.#getImage(drawWidth, drawHeight); + if (image) { + return image; + } + const rgba = await this.getImageBytes(imageLength, { + drawWidth, + drawHeight, + forceRGBA: true, + internal: true + }); + return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, rgba); + } + } else { + switch (this.colorSpace.name) { + case "DeviceGray": + imageLength *= 3; + case "DeviceRGB": + case "DeviceCMYK": + imgData.kind = ImageKind.RGB_24BPP; + imgData.data = await this.getImageBytes(imageLength, { + drawWidth, + drawHeight, + forceRGB: true, + internal: mustBeResized + }); + if (mustBeResized) { + return ImageResizer.createImage(imgData); + } + return imgData; + } + } + } + } + const imgArray = await this.getImageBytes(originalHeight * rowBytes, { + internal: true + }); + const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight; + const comps = this.getComponents(imgArray); + let alpha01, maybeUndoPreblend; + let canvas, ctx, canvasImgData, data; + if (isOffscreenCanvasSupported && !mustBeResized) { + canvas = new OffscreenCanvas(drawWidth, drawHeight); + ctx = canvas.getContext("2d"); + canvasImgData = ctx.createImageData(drawWidth, drawHeight); + data = canvasImgData.data; + } + imgData.kind = ImageKind.RGBA_32BPP; + if (!forceRGBA && !this.smask && !this.mask) { + if (!isOffscreenCanvasSupported || mustBeResized) { + imgData.kind = ImageKind.RGB_24BPP; + data = new Uint8ClampedArray(drawWidth * drawHeight * 3); + alpha01 = 0; + } else { + const arr = new Uint32Array(data.buffer); + arr.fill(FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff); + alpha01 = 1; + } + maybeUndoPreblend = false; + } else { + if (!isOffscreenCanvasSupported || mustBeResized) { + data = new Uint8ClampedArray(drawWidth * drawHeight * 4); + } + alpha01 = 1; + maybeUndoPreblend = true; + await this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps); + } + if (this.needsDecode) { + this.decodeBuffer(comps); + } + this.colorSpace.fillRgb(data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01); + if (maybeUndoPreblend) { + this.undoPreblend(data, drawWidth, actualHeight); + } + if (isOffscreenCanvasSupported && !mustBeResized) { + ctx.putImageData(canvasImgData, 0, 0); + const bitmap = canvas.transferToImageBitmap(); + return { + data: null, + width: drawWidth, + height: drawHeight, + bitmap, + interpolate: this.interpolate + }; + } + imgData.data = data; + if (mustBeResized) { + return ImageResizer.createImage(imgData); + } + return imgData; + } + async fillGrayBuffer(buffer, { + destWidth, + destHeight, + invertOutput, + maxRows, + offset = 0, + stride = 1 + } = {}) { + const numComps = this.numComps; + if (numComps !== 1) { + throw new FormatError(`Reading gray scale from a color image: ${numComps}`); + } + const srcWidth = this.width; + const srcHeight = this.height; + const bpc = this.bpc; + const rowBytes = srcWidth * numComps * bpc + 7 >> 3; + const imgArray = await this.getImageBytes(srcHeight * rowBytes, { + internal: true + }); + const comps = this.getComponents(imgArray); + const resolvedDestWidth = destWidth ?? srcWidth; + const resolvedDestHeight = destHeight ?? srcHeight; + const needsResampling = resolvedDestWidth !== srcWidth || resolvedDestHeight !== srcHeight; + const rows = maxRows === undefined ? resolvedDestHeight : Math.min(resolvedDestHeight, maxRows); + let outputWidth = srcWidth; + let yRatio = 0; + let xScaled = null; + if (needsResampling) { + outputWidth = resolvedDestWidth; + yRatio = srcHeight / resolvedDestHeight; + const xRatio = srcWidth / resolvedDestWidth; + xScaled = new Uint32Array(resolvedDestWidth); + for (let i = 0; i < resolvedDestWidth; i++) { + xScaled[i] = Math.floor(i * xRatio); + } + } + const mask = invertOutput ? 0xff : 0; + if (bpc === 1) { + if (xScaled) { + const xMap = xScaled; + let destIndex = offset; + if (this.needsDecode) { + for (let row = 0; row < rows; row++) { + const py = Math.floor(row * yRatio) * srcWidth; + for (let col = 0; col < outputWidth; col++) { + buffer[destIndex] = comps[py + xMap[col]] - 1 & 255 ^ mask; + destIndex += stride; + } + } + } else { + for (let row = 0; row < rows; row++) { + const py = Math.floor(row * yRatio) * srcWidth; + for (let col = 0; col < outputWidth; col++) { + buffer[destIndex] = -comps[py + xMap[col]] & 255 ^ mask; + destIndex += stride; + } + } + } + } else { + const length = outputWidth * rows; + if (this.needsDecode) { + for (let i = 0; i < length; ++i) { + buffer[i * stride + offset] = comps[i] - 1 & 255 ^ mask; + } + } else { + for (let i = 0; i < length; ++i) { + buffer[i * stride + offset] = -comps[i] & 255 ^ mask; + } + } + } + return; + } + if (this.needsDecode) { + this.decodeBuffer(comps); + } + const scale = 255 / ((1 << bpc) - 1); + if (xScaled) { + const xMap = xScaled; + let destIndex = offset; + for (let row = 0; row < rows; row++) { + const py = Math.floor(row * yRatio) * srcWidth; + for (let col = 0; col < outputWidth; col++) { + buffer[destIndex] = scale * comps[py + xMap[col]] ^ mask; + destIndex += stride; + } + } + } else { + const length = outputWidth * rows; + for (let i = 0; i < length; ++i) { + buffer[i * stride + offset] = scale * comps[i] ^ mask; + } + } + } + createBitmap(kind, width, height, src) { + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d"); + let imgData; + if (kind === ImageKind.RGBA_32BPP) { + imgData = new ImageData(src, width, height); + } else { + imgData = ctx.createImageData(width, height); + convertToRGBA({ + kind, + src, + dest: new Uint32Array(imgData.data.buffer), + width, + height, + inverseDecode: this.needsDecode + }); + } + ctx.putImageData(imgData, 0, 0); + const bitmap = canvas.transferToImageBitmap(); + return { + data: null, + width, + height, + bitmap, + interpolate: this.interpolate + }; + } + async #getImage(width, height) { + const bitmap = await this.image.getTransferableImage(); + if (!bitmap) { + return null; + } + return { + data: null, + width, + height, + bitmap, + interpolate: this.interpolate + }; + } + async getImageBytes(length, { + drawWidth, + drawHeight, + forceRGBA = false, + forceRGB = false, + internal = false + }) { + this.image.reset(); + this.image.drawWidth = drawWidth || this.width; + this.image.drawHeight = drawHeight || this.height; + this.image.forceRGBA = !!forceRGBA; + this.image.forceRGB = !!forceRGB; + const imageBytes = await this.image.getImageData(length, this.jpxDecoderOptions); + if (internal || this.image instanceof DecodeStream) { + return imageBytes; + } + assert(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported "imageBytes" type.'); + return new Uint8Array(imageBytes); + } +} + +;// ./src/core/evaluator.js + + + + + + + + + + + + + + + + + + + + + + + + + + + +const DefaultPartialEvaluatorOptions = Object.freeze({ + maxImageSize: -1, + disableFontFace: false, + ignoreErrors: false, + isEvalSupported: true, + isOffscreenCanvasSupported: false, + isImageDecoderSupported: false, + canvasMaxAreaInBytes: -1, + fontExtraProperties: false, + useSystemFonts: true, + useWasm: true, + useWorkerFetch: true, + cMapUrl: null, + cMapPacked: true, + iccUrl: null, + standardFontDataUrl: null, + wasmUrl: null, + prepareWebGPU: null +}); +const PatternType = { + TILING: 1, + SHADING: 2 +}; +const TEXT_CHUNK_BATCH_SIZE = 10; +const deferred = Promise.resolve(); +function normalizeBlendMode(value, parsingArray = false) { + if (Array.isArray(value)) { + for (const val of value) { + const maybeBM = normalizeBlendMode(val, true); + if (maybeBM) { + return maybeBM; + } + } + warn(`Unsupported blend mode Array: ${value}`); + return "source-over"; + } + if (!(value instanceof Name)) { + if (parsingArray) { + return null; + } + return "source-over"; + } + switch (value.name) { + case "Normal": + case "Compatible": + return "source-over"; + case "Multiply": + return "multiply"; + case "Screen": + return "screen"; + case "Overlay": + return "overlay"; + case "Darken": + return "darken"; + case "Lighten": + return "lighten"; + case "ColorDodge": + return "color-dodge"; + case "ColorBurn": + return "color-burn"; + case "HardLight": + return "hard-light"; + case "SoftLight": + return "soft-light"; + case "Difference": + return "difference"; + case "Exclusion": + return "exclusion"; + case "Hue": + return "hue"; + case "Saturation": + return "saturation"; + case "Color": + return "color"; + case "Luminosity": + return "luminosity"; + } + if (parsingArray) { + return null; + } + warn(`Unsupported blend mode: ${value.name}`); + return "source-over"; +} +function addCachedImageOps(opList, { + objId, + fn, + args, + optionalContent, + hasMask +}) { + if (objId) { + opList.addDependency(objId); + } + opList.addImageOps(fn, args, optionalContent, hasMask); + if (fn === OPS.paintImageMaskXObject && args[0]?.count > 0) { + args[0].count++; + } +} +class TimeSlotManager { + static TIME_SLOT_DURATION_MS = 20; + static CHECK_TIME_EVERY = 100; + constructor() { + this.reset(); + } + check() { + if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) { + return false; + } + this.checked = 0; + return this.endTime <= Date.now(); + } + reset() { + this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS; + this.checked = 0; + } +} +class PartialEvaluator { + constructor({ + xref, + handler, + pageIndex, + idFactory, + fontCache, + builtInCMapCache, + standardFontDataCache, + globalColorSpaceCache, + globalImageCache, + systemFontCache, + options = null + }) { + this.xref = xref; + this.handler = handler; + this.pageIndex = pageIndex; + this.idFactory = idFactory; + this.fontCache = fontCache; + this.builtInCMapCache = builtInCMapCache; + this.standardFontDataCache = standardFontDataCache; + this.globalColorSpaceCache = globalColorSpaceCache; + this.globalImageCache = globalImageCache; + this.systemFontCache = systemFontCache; + this.options = options || DefaultPartialEvaluatorOptions; + this.type3FontRefs = null; + this._regionalImageCache = new RegionalImageCache(); + this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); + } + get _pdfFunctionFactory() { + const pdfFunctionFactory = new PDFFunctionFactory({ + xref: this.xref, + isEvalSupported: this.options.isEvalSupported + }); + return shadow(this, "_pdfFunctionFactory", pdfFunctionFactory); + } + get parsingType3Font() { + return !!this.type3FontRefs; + } + clone(newOptions = null) { + const newEvaluator = Object.create(this); + newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions); + return newEvaluator; + } + hasBlendModes(resources, nonBlendModesSet) { + if (!(resources instanceof Dict)) { + return false; + } + if (resources.objId && nonBlendModesSet.has(resources.objId)) { + return false; + } + const processed = new RefSet(nonBlendModesSet); + if (resources.objId) { + processed.put(resources.objId); + } + const nodes = [resources], + xref = this.xref; + while (nodes.length) { + const node = nodes.shift(); + const graphicStates = node.get("ExtGState"); + if (graphicStates instanceof Dict) { + for (let graphicState of graphicStates.getRawValues()) { + if (graphicState instanceof Ref) { + if (processed.has(graphicState)) { + continue; + } + try { + graphicState = xref.fetch(graphicState); + } catch (ex) { + processed.put(graphicState); + info(`hasBlendModes - ignoring ExtGState: "${ex}".`); + continue; + } + } + if (!(graphicState instanceof Dict)) { + continue; + } + if (graphicState.objId) { + processed.put(graphicState.objId); + } + const bm = graphicState.get("BM"); + if (bm instanceof Name) { + if (bm.name !== "Normal") { + return true; + } + continue; + } + if (bm !== undefined && Array.isArray(bm)) { + for (const element of bm) { + if (element instanceof Name && element.name !== "Normal") { + return true; + } + } + } + } + } + const xObjects = node.get("XObject"); + if (!(xObjects instanceof Dict)) { + continue; + } + for (let xObject of xObjects.getRawValues()) { + if (xObject instanceof Ref) { + if (processed.has(xObject)) { + continue; + } + try { + xObject = xref.fetch(xObject); + } catch (ex) { + processed.put(xObject); + info(`hasBlendModes - ignoring XObject: "${ex}".`); + continue; + } + } + if (!(xObject instanceof BaseStream)) { + continue; + } + if (xObject.dict.objId) { + processed.put(xObject.dict.objId); + } + const xResources = xObject.dict.get("Resources"); + if (!(xResources instanceof Dict)) { + continue; + } + if (xResources.objId && processed.has(xResources.objId)) { + continue; + } + nodes.push(xResources); + if (xResources.objId) { + processed.put(xResources.objId); + } + } + } + for (const ref of processed) { + nonBlendModesSet.put(ref); + } + return false; + } + async fetchBuiltInCMap(name) { + const cachedData = this.builtInCMapCache.get(name); + if (cachedData) { + return cachedData; + } + let data; + if (this.options.useWorkerFetch) { + data = { + cMapData: await fetchBinaryData(`${this.options.cMapUrl}${name}.bcmap`), + isCompressed: true + }; + } else { + data = { + cMapData: await this.handler.sendWithPromise("FetchBinaryData", { + kind: "cMapUrl", + filename: `${name}${this.options.cMapPacked ? ".bcmap" : ""}` + }), + isCompressed: this.options.cMapPacked + }; + } + this.builtInCMapCache.set(name, data); + return data; + } + async fetchStandardFontData(name) { + const cachedData = this.standardFontDataCache.get(name); + if (cachedData) { + return new Stream(cachedData); + } + if (this.options.useSystemFonts && name !== "Symbol" && name !== "ZapfDingbats") { + return null; + } + const standardFontNameToFileName = getFontNameToFileMap(), + filename = standardFontNameToFileName[name]; + let data; + try { + if (this.options.useWorkerFetch) { + data = await fetchBinaryData(`${this.options.standardFontDataUrl}${filename}`); + } else { + data = await this.handler.sendWithPromise("FetchBinaryData", { + kind: "standardFontDataUrl", + filename + }); + } + } catch (ex) { + warn(ex); + return null; + } + this.standardFontDataCache.set(name, data); + return new Stream(data); + } + async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache, seenRefs) { + const { + dict + } = xobj; + const matrix = lookupMatrix(dict.getArray("Matrix"), null); + const bbox = lookupNormalRect(dict.getArray("BBox"), null); + let f32bbox = bbox && new Float32Array(bbox); + if (f32bbox?.some(x => !isFinite(x))) { + f32bbox = null; + } + let optionalContent, groupOptions; + if (dict.has("OC")) { + optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources); + } + if (optionalContent !== undefined) { + operatorList.addOp(OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + const group = dict.get("Group"); + if (group) { + groupOptions = { + matrix, + bbox: f32bbox, + smask, + isolated: false, + knockout: false + }; + const groupSubtype = group.get("S"); + let colorSpace = null; + if (isName(groupSubtype, "Transparency")) { + groupOptions.isolated = group.get("I") || false; + groupOptions.knockout = group.get("K") || false; + if (group.has("CS")) { + const cs = this._getColorSpace(group.getRaw("CS"), resources, localColorSpaceCache); + colorSpace = cs instanceof ColorSpace ? cs : await this._handleColorSpace(cs); + } + } + if (smask?.backdrop) { + colorSpace ||= ColorSpaceUtils.rgb; + smask.backdrop = colorSpace.getRgbHex(smask.backdrop, 0); + } + operatorList.addOp(OPS.beginGroup, [groupOptions]); + } + const f32matrix = matrix && new Float32Array(matrix); + const args = [f32matrix, !group && f32bbox || null]; + operatorList.addOp(OPS.paintFormXObjectBegin, args); + const localResources = dict.get("Resources"); + await this.getOperatorList({ + stream: xobj, + task, + resources: localResources instanceof Dict ? localResources : resources, + operatorList, + initialState, + prevRefs: seenRefs + }); + operatorList.addOp(OPS.paintFormXObjectEnd, []); + if (group) { + operatorList.addOp(OPS.endGroup, [groupOptions]); + } + if (optionalContent !== undefined) { + operatorList.addOp(OPS.endMarkedContent, []); + } + } + _sendImgData(objId, imgData, cacheGlobally = false) { + const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null; + if (this.parsingType3Font || cacheGlobally) { + return this.handler.send("commonobj", [objId, "Image", imgData], transfers); + } + return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers); + } + async buildPaintImageXObject({ + resources, + image, + isInline = false, + operatorList, + cacheKey, + localImageCache, + localColorSpaceCache + }) { + const { + maxImageSize, + ignoreErrors, + isOffscreenCanvasSupported + } = this.options; + const { + dict + } = image; + const imageRef = dict.objId; + const w = dict.get("W", "Width"); + const h = dict.get("H", "Height"); + if (!(w && typeof w === "number") || !(h && typeof h === "number")) { + warn("Image dimensions are missing, or not numbers."); + return; + } + if (maxImageSize !== -1 && w * h > maxImageSize) { + const msg = "Image exceeded maximum allowed size and was removed."; + if (!ignoreErrors) { + throw new Error(msg); + } + warn(msg); + return; + } + let optionalContent; + if (dict.has("OC")) { + optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources); + } + const imageMask = dict.get("IM", "ImageMask") || false; + let imgData, fn, args; + if (imageMask) { + imgData = await PDFImage.createMask({ + image, + isOffscreenCanvasSupported: isOffscreenCanvasSupported && !this.parsingType3Font + }); + if (imgData.isSingleOpaquePixel) { + fn = OPS.paintSolidColorImageMask; + args = []; + operatorList.addImageOps(fn, args, optionalContent); + if (cacheKey) { + const cacheData = { + fn, + args, + optionalContent + }; + localImageCache.set(cacheKey, imageRef, cacheData); + if (imageRef) { + this._regionalImageCache.set(null, imageRef, cacheData); + } + } + return; + } + if (this.parsingType3Font) { + args = compileType3Glyph(imgData); + if (args) { + operatorList.addImageOps(OPS.constructPath, args, optionalContent); + return; + } + warn("Cannot compile Type3 glyph."); + operatorList.addImageOps(OPS.paintImageMaskXObject, [imgData], optionalContent); + return; + } + const objId = `mask_${this.idFactory.createObjId()}`; + operatorList.addDependency(objId); + imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length; + this._sendImgData(objId, imgData); + fn = OPS.paintImageMaskXObject; + args = [{ + data: objId, + width: imgData.width, + height: imgData.height, + interpolate: imgData.interpolate, + count: 1 + }]; + operatorList.addImageOps(fn, args, optionalContent); + if (cacheKey) { + const cacheData = { + objId, + fn, + args, + optionalContent + }; + localImageCache.set(cacheKey, imageRef, cacheData); + if (imageRef) { + this._regionalImageCache.set(null, imageRef, cacheData); + } + } + return; + } + const SMALL_IMAGE_DIMENSIONS = 200; + const hasMask = dict.has("SMask") || dict.has("Mask"); + if (isInline && w + h < SMALL_IMAGE_DIMENSIONS && !hasMask) { + try { + const imageObj = new PDFImage({ + xref: this.xref, + res: resources, + image, + isInline, + pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, + localColorSpaceCache + }); + imgData = await imageObj.createImageData(true, false); + operatorList.addImageOps(OPS.paintInlineImageXObject, [imgData], optionalContent); + } catch (reason) { + const msg = `Unable to decode inline image: "${reason}".`; + if (!ignoreErrors) { + throw new Error(msg); + } + warn(msg); + } + return; + } + let objId = `img_${this.idFactory.createObjId()}`, + cacheGlobally = false, + globalCacheData = null; + if (this.parsingType3Font) { + objId = `${this.idFactory.getDocId()}_type3_${objId}`; + } else if (cacheKey && imageRef) { + cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex); + if (cacheGlobally) { + assert(!isInline, "Cannot cache an inline image globally."); + objId = `${this.idFactory.getDocId()}_${objId}`; + } + } + operatorList.addDependency(objId); + fn = OPS.paintImageXObject; + args = [objId, w, h]; + operatorList.addImageOps(fn, args, optionalContent, hasMask); + if (cacheGlobally) { + globalCacheData = { + objId, + fn, + args, + optionalContent, + hasMask, + byteSize: 0 + }; + if (this.globalImageCache.hasDecodeFailed(imageRef)) { + this.globalImageCache.setData(imageRef, globalCacheData); + this._sendImgData(objId, null, cacheGlobally); + return; + } + if (w * h > 250000 || hasMask) { + const localLength = await this.handler.sendWithPromise("commonobj", [objId, "CopyLocalImage", { + imageRef + }]); + if (localLength) { + this.globalImageCache.setData(imageRef, globalCacheData); + this.globalImageCache.addByteSize(imageRef, localLength); + return; + } + } + } + PDFImage.buildImage({ + xref: this.xref, + res: resources, + image, + isInline, + pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, + localColorSpaceCache + }).then(async imageObj => { + imgData = await imageObj.createImageData(false, isOffscreenCanvasSupported); + imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length; + imgData.ref = imageRef; + if (cacheGlobally) { + this.globalImageCache.addByteSize(imageRef, imgData.dataLen); + } + return this._sendImgData(objId, imgData, cacheGlobally); + }).catch(reason => { + warn(`Unable to decode image "${objId}": "${reason}".`); + if (imageRef) { + this.globalImageCache.addDecodeFailed(imageRef); + } + return this._sendImgData(objId, null, cacheGlobally); + }); + if (cacheKey) { + const cacheData = { + objId, + fn, + args, + optionalContent, + hasMask + }; + localImageCache.set(cacheKey, imageRef, cacheData); + if (imageRef) { + this._regionalImageCache.set(null, imageRef, cacheData); + if (cacheGlobally) { + assert(globalCacheData, "The global cache-data must be available."); + this.globalImageCache.setData(imageRef, globalCacheData); + } + } + } + } + handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache, seenRefs) { + const smaskContent = smask.get("G"); + const smaskOptions = { + subtype: smask.get("S").name, + backdrop: smask.get("BC") + }; + const transferObj = smask.get("TR"); + if (isPDFFunction(transferObj)) { + const transferFn = this._pdfFunctionFactory.create(transferObj); + const transferMap = new Uint8Array(256); + const tmp = new Float32Array(1); + for (let i = 0; i < 256; i++) { + tmp[0] = i / 255; + transferFn(tmp, 0, tmp, 0); + transferMap[i] = tmp[0] * 255 | 0; + } + smaskOptions.transferMap = transferMap; + } + return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone({ + newPath: true + }), localColorSpaceCache, seenRefs); + } + handleTransferFunction(tr) { + let transferArray; + if (Array.isArray(tr)) { + transferArray = tr; + if (tr.length > 1 && tr.every(map => map === tr[0])) { + transferArray = [tr[0]]; + } + } else if (isPDFFunction(tr)) { + transferArray = [tr]; + } else { + return null; + } + const transferMaps = []; + let numFns = 0, + numEffectfulFns = 0; + for (const entry of transferArray) { + const transferObj = this.xref.fetchIfRef(entry); + numFns++; + if (isName(transferObj, "Identity")) { + transferMaps.push(null); + continue; + } else if (!isPDFFunction(transferObj)) { + return null; + } + const transferFn = this._pdfFunctionFactory.create(transferObj); + const transferMap = new Uint8Array(256), + tmp = new Float32Array(1); + for (let j = 0; j < 256; j++) { + tmp[0] = j / 255; + transferFn(tmp, 0, tmp, 0); + transferMap[j] = tmp[0] * 255 | 0; + } + transferMaps.push(transferMap); + numEffectfulFns++; + } + if (!(numFns === 1 || numFns === 4)) { + return null; + } + if (numEffectfulFns === 0) { + return null; + } + return transferMaps; + } + handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache) { + const tilingOpList = new OperatorList(); + const patternResources = Dict.merge({ + xref: this.xref, + dictArray: [patternDict.get("Resources"), resources] + }); + return this.getOperatorList({ + stream: pattern, + task, + resources: patternResources, + operatorList: tilingOpList + }).then(function () { + const operatorListIR = tilingOpList.getIR(); + const tilingPatternIR = getTilingPatternIR(operatorListIR, patternDict, color); + operatorList.addDependencies(tilingOpList.dependencies); + operatorList.addOp(fn, tilingPatternIR); + if (patternDict.objId) { + localTilingPatternCache.set(null, patternDict.objId, { + operatorListIR, + dict: patternDict + }); + } + }).catch(reason => { + if (reason instanceof AbortException) { + return; + } + if (this.options.ignoreErrors) { + warn(`handleTilingType - ignoring pattern: "${reason}".`); + return; + } + throw reason; + }); + } + async handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, cssFontInfo = null) { + const fontName = fontArgs?.[0] instanceof Name ? fontArgs[0].name : null; + const translated = await this.loadFont(fontName, fontRef, resources, task, fallbackFontDict, cssFontInfo); + if (translated.font.isType3Font) { + operatorList.addDependencies(translated.type3Dependencies); + } + state.font = translated.font; + translated.send(this.handler); + return translated.loadedName; + } + handleText(chars, state) { + const font = state.font; + const glyphs = font.charsToGlyphs(chars); + if (font.data) { + const isAddToPathSet = !!(state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG); + if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || state.strokeColorSpace.name === "Pattern" || font.disableFontFace) { + PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options); + } + } + return glyphs; + } + ensureStateFont(state) { + if (state.font) { + return; + } + const reason = new FormatError("Missing setFont (Tf) operator before text rendering operator."); + if (this.options.ignoreErrors) { + warn(`ensureStateFont: "${reason}".`); + return; + } + throw reason; + } + async setGState({ + resources, + gState, + operatorList, + cacheKey, + task, + stateManager, + localGStateCache, + localColorSpaceCache, + seenRefs + }) { + const gStateRef = gState.objId; + let isSimpleGState = true; + const gStateObj = []; + let promise = Promise.resolve(); + for (const [key, value] of gState) { + switch (key) { + case "Type": + break; + case "LW": + if (typeof value !== "number") { + warn(`Invalid LW (line width): ${value}`); + break; + } + gStateObj.push([key, Math.abs(value)]); + break; + case "LC": + case "LJ": + case "ML": + case "D": + case "RI": + case "FL": + case "CA": + case "ca": + gStateObj.push([key, value]); + break; + case "Font": + isSimpleGState = false; + promise = promise.then(() => this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) { + operatorList.addDependency(loadedName); + gStateObj.push([key, [loadedName, value[1]]]); + })); + break; + case "BM": + gStateObj.push([key, normalizeBlendMode(value)]); + break; + case "SMask": + if (isName(value, "None")) { + gStateObj.push([key, false]); + break; + } + if (value instanceof Dict) { + isSimpleGState = false; + promise = promise.then(() => this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache, seenRefs)); + gStateObj.push([key, true]); + } else { + warn("Unsupported SMask type"); + } + break; + case "TR": + const transferMaps = this.handleTransferFunction(value); + gStateObj.push([key, transferMaps]); + break; + case "OP": + case "op": + case "OPM": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + case "TR2": + case "HT": + case "SM": + case "SA": + case "AIS": + case "TK": + info("graphic state operator " + key); + break; + default: + info("Unknown graphic state operator " + key); + break; + } + } + await promise; + if (gStateObj.length > 0) { + operatorList.addOp(OPS.setGState, [gStateObj]); + } + if (isSimpleGState) { + localGStateCache.set(cacheKey, gStateRef, gStateObj); + } + } + loadFont(fontName, font, resources, task, fallbackFontDict = null, cssFontInfo = null) { + const errorFont = async () => new TranslatedFont({ + loadedName: "g_font_error", + font: new ErrorFont(`Font "${fontName}" is not available.`), + dict: font + }); + let fontRef; + if (font) { + if (font instanceof Ref) { + fontRef = font; + } + } else { + const fontRes = resources.get("Font"); + if (fontRes) { + fontRef = fontRes.getRaw(fontName); + } + } + if (fontRef) { + if (this.type3FontRefs?.has(fontRef)) { + return errorFont(); + } + if (this.fontCache.has(fontRef)) { + return this.fontCache.get(fontRef); + } + try { + font = this.xref.fetchIfRef(fontRef); + } catch (ex) { + warn(`loadFont - lookup failed: "${ex}".`); + } + } + if (!(font instanceof Dict)) { + if (!this.options.ignoreErrors && !this.parsingType3Font) { + warn(`Font "${fontName}" is not available.`); + return errorFont(); + } + warn(`Font "${fontName}" is not available -- attempting to fallback to a default font.`); + font = fallbackFontDict || PartialEvaluator.fallbackFontDict; + } + if (font.cacheKey && this.fontCache.has(font.cacheKey)) { + return this.fontCache.get(font.cacheKey); + } + const { + promise, + resolve + } = Promise.withResolvers(); + let preEvaluatedFont; + try { + preEvaluatedFont = this.preEvaluateFont(font); + preEvaluatedFont.cssFontInfo = cssFontInfo; + } catch (reason) { + warn(`loadFont - preEvaluateFont failed: "${reason}".`); + return errorFont(); + } + const { + descriptor, + hash + } = preEvaluatedFont; + const fontRefIsRef = fontRef instanceof Ref; + let fontID; + if (hash && descriptor instanceof Dict) { + const fontAliases = descriptor.fontAliases ||= Object.create(null); + if (fontAliases[hash]) { + const aliasFontRef = fontAliases[hash].aliasRef; + if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) { + this.fontCache.putAlias(fontRef, aliasFontRef); + return this.fontCache.get(fontRef); + } + } else { + fontAliases[hash] = { + fontID: this.idFactory.createFontId() + }; + } + if (fontRefIsRef) { + fontAliases[hash].aliasRef = fontRef; + } + fontID = fontAliases[hash].fontID; + } else { + fontID = this.idFactory.createFontId(); + } + assert(fontID?.startsWith("f"), 'The "fontID" must be (correctly) defined.'); + if (fontRefIsRef) { + this.fontCache.put(fontRef, promise); + } else { + font.cacheKey = `cacheKey_${fontID}`; + this.fontCache.put(font.cacheKey, promise); + } + font.loadedName = `${this.idFactory.getDocId()}_${fontID}`; + this.translateFont(preEvaluatedFont).then(async translatedFont => { + const translated = new TranslatedFont({ + loadedName: font.loadedName, + font: translatedFont, + dict: font + }); + if (translatedFont.isType3Font) { + try { + await translated.loadType3Data(this, resources, task); + } catch (reason) { + throw new Error(`Type3 font load error: ${reason}`); + } + } + resolve(translated); + }).catch(reason => { + warn(`loadFont - translateFont failed: "${reason}".`); + resolve(new TranslatedFont({ + loadedName: font.loadedName, + font: new ErrorFont(reason?.message), + dict: font + })); + }); + return promise; + } + buildPath(fn, args, state) { + const { + pathMinMax: minMax, + pathBuffer + } = state; + switch (fn | 0) { + case OPS.rectangle: + { + const x = state.currentPointX = args[0]; + const y = state.currentPointY = args[1]; + const width = args[2]; + const height = args[3]; + const xw = x + width; + const yh = y + height; + if (width === 0 || height === 0) { + pathBuffer.push(DrawOPS.moveTo, x, y, DrawOPS.lineTo, xw, yh, DrawOPS.closePath); + } else { + pathBuffer.push(DrawOPS.moveTo, x, y, DrawOPS.lineTo, xw, y, DrawOPS.lineTo, xw, yh, DrawOPS.lineTo, x, yh, DrawOPS.closePath); + } + Util.rectBoundingBox(x, y, xw, yh, minMax); + break; + } + case OPS.moveTo: + { + const x = state.currentPointX = args[0]; + const y = state.currentPointY = args[1]; + pathBuffer.push(DrawOPS.moveTo, x, y); + Util.pointBoundingBox(x, y, minMax); + break; + } + case OPS.lineTo: + { + const x = state.currentPointX = args[0]; + const y = state.currentPointY = args[1]; + pathBuffer.push(DrawOPS.lineTo, x, y); + Util.pointBoundingBox(x, y, minMax); + break; + } + case OPS.curveTo: + { + const startX = state.currentPointX; + const startY = state.currentPointY; + const [x1, y1, x2, y2, x, y] = args; + state.currentPointX = x; + state.currentPointY = y; + pathBuffer.push(DrawOPS.curveTo, x1, y1, x2, y2, x, y); + Util.bezierBoundingBox(startX, startY, x1, y1, x2, y2, x, y, minMax); + break; + } + case OPS.curveTo2: + { + const startX = state.currentPointX; + const startY = state.currentPointY; + const [x1, y1, x, y] = args; + state.currentPointX = x; + state.currentPointY = y; + pathBuffer.push(DrawOPS.curveTo, startX, startY, x1, y1, x, y); + Util.bezierBoundingBox(startX, startY, startX, startY, x1, y1, x, y, minMax); + break; + } + case OPS.curveTo3: + { + const startX = state.currentPointX; + const startY = state.currentPointY; + const [x1, y1, x, y] = args; + state.currentPointX = x; + state.currentPointY = y; + pathBuffer.push(DrawOPS.curveTo, x1, y1, x, y, x, y); + Util.bezierBoundingBox(startX, startY, x1, y1, x, y, x, y, minMax); + break; + } + case OPS.closePath: + pathBuffer.push(DrawOPS.closePath); + break; + } + } + _getColorSpace(cs, resources, localColorSpaceCache) { + return ColorSpaceUtils.parse({ + cs, + xref: this.xref, + resources, + pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, + localColorSpaceCache, + asyncIfNotCached: true + }); + } + async _handleColorSpace(csPromise) { + try { + return await csPromise; + } catch (ex) { + if (ex instanceof AbortException) { + return null; + } + if (this.options.ignoreErrors) { + warn(`_handleColorSpace - ignoring ColorSpace: "${ex}".`); + return null; + } + throw ex; + } + } + parseShading({ + shading, + resources, + localColorSpaceCache, + localShadingPatternCache + }) { + let id = localShadingPatternCache.get(shading); + if (id) { + return id; + } + let patternIR; + try { + const shadingFill = Pattern.parseShading(shading, this.xref, resources, this._pdfFunctionFactory, this.globalColorSpaceCache, localColorSpaceCache, this.options.prepareWebGPU); + patternIR = shadingFill.getIR(); + } catch (reason) { + if (reason instanceof AbortException) { + return null; + } + if (this.options.ignoreErrors) { + warn(`parseShading - ignoring shading: "${reason}".`); + localShadingPatternCache.set(shading, null); + return null; + } + throw reason; + } + id = `pattern_${this.idFactory.createObjId()}`; + if (this.parsingType3Font) { + id = `${this.idFactory.getDocId()}_type3_${id}`; + } + localShadingPatternCache.set(shading, id); + if (this.parsingType3Font) { + const buffer = compilePatternInfo(patternIR); + this.handler.send("commonobj", [id, "Pattern", buffer], [buffer]); + } else { + this.handler.send("obj", [id, this.pageIndex, "Pattern", patternIR]); + } + return id; + } + handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache) { + const patternName = args.pop(); + if (patternName instanceof Name) { + const rawPattern = patterns.getRaw(patternName.name); + const localTilingPattern = rawPattern instanceof Ref && localTilingPatternCache.getByRef(rawPattern); + if (localTilingPattern) { + try { + const color = cs.base ? cs.base.getRgbHex(args, 0) : null; + const tilingPatternIR = getTilingPatternIR(localTilingPattern.operatorListIR, localTilingPattern.dict, color); + operatorList.addOp(fn, tilingPatternIR); + return undefined; + } catch {} + } + const pattern = this.xref.fetchIfRef(rawPattern); + if (pattern) { + const dict = pattern instanceof BaseStream ? pattern.dict : pattern; + const typeNum = dict.get("PatternType"); + if (typeNum === PatternType.TILING) { + const color = cs.base ? cs.base.getRgbHex(args, 0) : null; + return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, localTilingPatternCache); + } else if (typeNum === PatternType.SHADING) { + const shading = dict.get("Shading"); + const objId = this.parseShading({ + shading, + resources, + localColorSpaceCache, + localShadingPatternCache + }); + if (objId) { + const matrix = lookupMatrix(dict.getArray("Matrix"), null); + operatorList.addOp(fn, ["Shading", objId, matrix]); + } + return undefined; + } + throw new FormatError(`Unknown PatternType: ${typeNum}`); + } + } + throw new FormatError(`Unknown PatternName: ${patternName}`); + } + _parseVisibilityExpression(array, nestingCounter, currentResult) { + const MAX_NESTING = 10; + if (++nestingCounter > MAX_NESTING) { + warn("Visibility expression is too deeply nested"); + return; + } + const length = array.length; + const operator = this.xref.fetchIfRef(array[0]); + if (length < 2 || !(operator instanceof Name)) { + warn("Invalid visibility expression"); + return; + } + switch (operator.name) { + case "And": + case "Or": + case "Not": + currentResult.push(operator.name); + break; + default: + warn(`Invalid operator ${operator.name} in visibility expression`); + return; + } + for (let i = 1; i < length; i++) { + const raw = array[i]; + const object = this.xref.fetchIfRef(raw); + if (Array.isArray(object)) { + const nestedResult = []; + currentResult.push(nestedResult); + this._parseVisibilityExpression(object, nestingCounter, nestedResult); + } else if (raw instanceof Ref) { + currentResult.push(raw.toString()); + } + } + } + async parseMarkedContentProps(contentProperties, resources) { + let optionalContent; + if (contentProperties instanceof Name) { + const properties = resources.get("Properties"); + optionalContent = properties.get(contentProperties.name); + } else if (contentProperties instanceof Dict) { + optionalContent = contentProperties; + } else { + throw new FormatError("Optional content properties malformed."); + } + const optionalContentType = optionalContent.get("Type")?.name; + if (optionalContentType === "OCG") { + return { + type: optionalContentType, + id: optionalContent.objId + }; + } else if (optionalContentType === "OCMD") { + const expression = optionalContent.get("VE"); + if (Array.isArray(expression)) { + const result = []; + this._parseVisibilityExpression(expression, 0, result); + if (result.length > 0) { + return { + type: "OCMD", + expression: result + }; + } + } + const optionalContentGroups = optionalContent.get("OCGs"); + if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof Dict) { + const groupIds = []; + if (Array.isArray(optionalContentGroups)) { + for (const ocg of optionalContentGroups) { + groupIds.push(ocg.toString()); + } + } else { + groupIds.push(optionalContentGroups.objId); + } + return { + type: optionalContentType, + ids: groupIds, + policy: optionalContent.get("P") instanceof Name ? optionalContent.get("P").name : null, + expression: null + }; + } else if (optionalContentGroups instanceof Ref) { + return { + type: optionalContentType, + id: optionalContentGroups.toString() + }; + } + } + return null; + } + async getOperatorList({ + stream, + task, + resources, + operatorList, + initialState = null, + fallbackFontDict = null, + prevRefs = null + }) { + if (stream.isAsync) { + const bytes = await stream.asyncGetBytes(); + if (bytes) { + stream = new Stream(bytes, 0, bytes.length, stream.dict); + } + } + const objId = stream.dict?.objId; + const seenRefs = new RefSet(prevRefs); + if (objId) { + if (prevRefs?.has(objId)) { + throw new Error(`getOperatorList - ignoring circular reference: ${objId}`); + } + seenRefs.put(objId); + } + resources ||= Dict.empty; + initialState ||= new EvalState(); + if (!operatorList) { + throw new Error('getOperatorList: missing "operatorList" parameter'); + } + const self = this; + const xref = this.xref; + const localImageCache = new LocalImageCache(); + const localColorSpaceCache = new LocalColorSpaceCache(); + const localGStateCache = new LocalGStateCache(); + const localTilingPatternCache = new LocalTilingPatternCache(); + const localShadingPatternCache = new Map(); + const xobjs = resources.get("XObject") || Dict.empty; + const patterns = resources.get("Pattern") || Dict.empty; + const stateManager = new StateManager(initialState); + const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); + const timeSlotManager = new TimeSlotManager(); + function closePendingRestoreOPS(argument) { + for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) { + operatorList.addOp(OPS.restore, []); + } + } + return new Promise(function promiseBody(resolve, reject) { + const next = function (promise) { + Promise.all([promise, operatorList.ready]).then(function () { + try { + promiseBody(resolve, reject); + } catch (ex) { + reject(ex); + } + }, reject); + }; + task.ensureNotTerminated(); + timeSlotManager.reset(); + const operation = {}; + let stop, i, ii, cs, name, isValidName; + while (!(stop = timeSlotManager.check())) { + operation.args = null; + if (!preprocessor.read(operation)) { + break; + } + let args = operation.args; + let fn = operation.fn; + switch (fn | 0) { + case OPS.paintXObject: + isValidName = args[0] instanceof Name; + name = args[0].name; + if (isValidName) { + const localImage = localImageCache.getByName(name); + if (localImage) { + addCachedImageOps(operatorList, localImage); + args = null; + continue; + } + } + next(new Promise(function (resolveXObject, rejectXObject) { + if (!isValidName) { + throw new FormatError("XObject must be referred to by name."); + } + let xobj = xobjs.getRaw(name); + if (xobj instanceof Ref) { + const cachedImage = localImageCache.getByRef(xobj) || self._regionalImageCache.getByRef(xobj) || self.globalImageCache.getData(xobj, self.pageIndex); + if (cachedImage) { + addCachedImageOps(operatorList, cachedImage); + resolveXObject(); + return; + } + xobj = xref.fetch(xobj); + } + if (!(xobj instanceof BaseStream)) { + throw new FormatError("XObject should be a stream"); + } + const type = xobj.dict.get("Subtype"); + if (!(type instanceof Name)) { + throw new FormatError("XObject should have a Name subtype"); + } + if (type.name === "Form") { + stateManager.save(); + self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone({ + newPath: true + }), localColorSpaceCache, seenRefs).then(function () { + stateManager.restore(); + resolveXObject(); + }, rejectXObject); + return; + } else if (type.name === "Image") { + self.buildPaintImageXObject({ + resources, + image: xobj, + operatorList, + cacheKey: name, + localImageCache, + localColorSpaceCache + }).then(resolveXObject, rejectXObject); + return; + } else if (type.name === "PS") { + info("Ignored XObject subtype PS"); + } else { + throw new FormatError(`Unhandled XObject subtype ${type.name}`); + } + resolveXObject(); + }).catch(function (reason) { + if (reason instanceof AbortException) { + return; + } + if (self.options.ignoreErrors) { + warn(`getOperatorList - ignoring XObject: "${reason}".`); + return; + } + throw reason; + })); + return; + case OPS.setFont: + const fontSize = args[1]; + next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) { + operatorList.addDependency(loadedName); + operatorList.addOp(OPS.setFont, [loadedName, fontSize]); + })); + return; + case OPS.endInlineImage: + const cacheKey = args[0].cacheKey; + if (cacheKey) { + const localImage = localImageCache.getByName(cacheKey); + if (localImage) { + addCachedImageOps(operatorList, localImage); + args = null; + continue; + } + } + next(self.buildPaintImageXObject({ + resources, + image: args[0], + isInline: true, + operatorList, + cacheKey, + localImageCache, + localColorSpaceCache + })); + return; + case OPS.showText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + args[0] = self.handleText(args[0], stateManager.state); + break; + case OPS.showSpacedText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + const combinedGlyphs = [], + state = stateManager.state; + for (const arrItem of args[0]) { + if (typeof arrItem === "string") { + combinedGlyphs.push(...self.handleText(arrItem, state)); + } else if (typeof arrItem === "number") { + combinedGlyphs.push(arrItem); + } + } + args[0] = combinedGlyphs; + fn = OPS.showText; + break; + case OPS.nextLineShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + operatorList.addOp(OPS.nextLine); + args[0] = self.handleText(args[0], stateManager.state); + fn = OPS.showText; + break; + case OPS.nextLineSetSpacingShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + operatorList.addOp(OPS.nextLine); + operatorList.addOp(OPS.setWordSpacing, [args.shift()]); + operatorList.addOp(OPS.setCharSpacing, [args.shift()]); + args[0] = self.handleText(args[0], stateManager.state); + fn = OPS.showText; + break; + case OPS.setTextRenderingMode: + stateManager.state.textRenderingMode = args[0]; + break; + case OPS.setFillColorSpace: + { + const fillCS = self._getColorSpace(args[0], resources, localColorSpaceCache); + if (fillCS instanceof ColorSpace) { + stateManager.state.fillColorSpace = fillCS; + continue; + } + next(self._handleColorSpace(fillCS).then(colorSpace => { + stateManager.state.fillColorSpace = colorSpace || ColorSpaceUtils.gray; + })); + return; + } + case OPS.setStrokeColorSpace: + { + const strokeCS = self._getColorSpace(args[0], resources, localColorSpaceCache); + if (strokeCS instanceof ColorSpace) { + stateManager.state.strokeColorSpace = strokeCS; + continue; + } + next(self._handleColorSpace(strokeCS).then(colorSpace => { + stateManager.state.strokeColorSpace = colorSpace || ColorSpaceUtils.gray; + })); + return; + } + case OPS.setFillColor: + cs = stateManager.state.fillColorSpace; + args = [cs.getRgbHex(args, 0)]; + fn = OPS.setFillRGBColor; + break; + case OPS.setStrokeColor: + cs = stateManager.state.strokeColorSpace; + args = [cs.getRgbHex(args, 0)]; + fn = OPS.setStrokeRGBColor; + break; + case OPS.setFillGray: + stateManager.state.fillColorSpace = ColorSpaceUtils.gray; + args = [ColorSpaceUtils.gray.getRgbHex(args, 0)]; + fn = OPS.setFillRGBColor; + break; + case OPS.setStrokeGray: + stateManager.state.strokeColorSpace = ColorSpaceUtils.gray; + args = [ColorSpaceUtils.gray.getRgbHex(args, 0)]; + fn = OPS.setStrokeRGBColor; + break; + case OPS.setFillCMYKColor: + stateManager.state.fillColorSpace = ColorSpaceUtils.cmyk; + args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)]; + fn = OPS.setFillRGBColor; + break; + case OPS.setStrokeCMYKColor: + stateManager.state.strokeColorSpace = ColorSpaceUtils.cmyk; + args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)]; + fn = OPS.setStrokeRGBColor; + break; + case OPS.setFillRGBColor: + stateManager.state.fillColorSpace = ColorSpaceUtils.rgb; + args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)]; + break; + case OPS.setStrokeRGBColor: + stateManager.state.strokeColorSpace = ColorSpaceUtils.rgb; + args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)]; + break; + case OPS.setFillColorN: + cs = stateManager.state.patternFillColorSpace; + if (!cs) { + if (isNumberArray(args, null)) { + args = [ColorSpaceUtils.gray.getRgbHex(args, 0)]; + fn = OPS.setFillRGBColor; + break; + } + args = []; + fn = OPS.setFillTransparent; + break; + } + if (cs.name === "Pattern") { + next(self.handleColorN(operatorList, OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache)); + return; + } + args = [cs.getRgbHex(args, 0)]; + fn = OPS.setFillRGBColor; + break; + case OPS.setStrokeColorN: + cs = stateManager.state.patternStrokeColorSpace; + if (!cs) { + if (isNumberArray(args, null)) { + args = [ColorSpaceUtils.gray.getRgbHex(args, 0)]; + fn = OPS.setStrokeRGBColor; + break; + } + args = []; + fn = OPS.setStrokeTransparent; + break; + } + if (cs.name === "Pattern") { + next(self.handleColorN(operatorList, OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache)); + return; + } + args = [cs.getRgbHex(args, 0)]; + fn = OPS.setStrokeRGBColor; + break; + case OPS.shadingFill: + let shading; + try { + const shadingRes = resources.get("Shading"); + if (!shadingRes) { + throw new FormatError("No shading resource found"); + } + shading = shadingRes.get(args[0].name); + if (!shading) { + throw new FormatError("No shading object found"); + } + } catch (reason) { + if (reason instanceof AbortException) { + continue; + } + if (self.options.ignoreErrors) { + warn(`getOperatorList - ignoring Shading: "${reason}".`); + continue; + } + throw reason; + } + const patternId = self.parseShading({ + shading, + resources, + localColorSpaceCache, + localShadingPatternCache + }); + if (!patternId) { + continue; + } + args = [patternId]; + fn = OPS.shadingFill; + break; + case OPS.setGState: + isValidName = args[0] instanceof Name; + name = args[0].name; + if (isValidName) { + const localGStateObj = localGStateCache.getByName(name); + if (localGStateObj) { + if (localGStateObj.length > 0) { + operatorList.addOp(OPS.setGState, [localGStateObj]); + } + args = null; + continue; + } + } + next(new Promise(function (resolveGState, rejectGState) { + if (!isValidName) { + throw new FormatError("GState must be referred to by name."); + } + const extGState = resources.get("ExtGState"); + if (!(extGState instanceof Dict)) { + throw new FormatError("ExtGState should be a dictionary."); + } + const gState = extGState.get(name); + if (!(gState instanceof Dict)) { + throw new FormatError("GState should be a dictionary."); + } + self.setGState({ + resources, + gState, + operatorList, + cacheKey: name, + task, + stateManager, + localGStateCache, + localColorSpaceCache, + seenRefs + }).then(resolveGState, rejectGState); + }).catch(function (reason) { + if (reason instanceof AbortException) { + return; + } + if (self.options.ignoreErrors) { + warn(`getOperatorList - ignoring ExtGState: "${reason}".`); + return; + } + throw reason; + })); + return; + case OPS.setLineWidth: + { + const [thickness] = args; + if (typeof thickness !== "number") { + warn(`Invalid setLineWidth: ${thickness}`); + continue; + } + args[0] = Math.abs(thickness); + break; + } + case OPS.setDash: + { + const dashPhase = args[1]; + if (typeof dashPhase !== "number") { + warn(`Invalid setDash: ${dashPhase}`); + continue; + } + const dashArray = args[0]; + if (!Array.isArray(dashArray)) { + warn(`Invalid setDash: ${dashArray}`); + continue; + } + if (dashArray.some(x => typeof x !== "number")) { + args[0] = dashArray.filter(x => typeof x === "number"); + } + break; + } + case OPS.moveTo: + case OPS.lineTo: + case OPS.curveTo: + case OPS.curveTo2: + case OPS.curveTo3: + case OPS.closePath: + case OPS.rectangle: + self.buildPath(fn, args, stateManager.state); + continue; + case OPS.stroke: + case OPS.closeStroke: + case OPS.fill: + case OPS.eoFill: + case OPS.fillStroke: + case OPS.eoFillStroke: + case OPS.closeFillStroke: + case OPS.closeEOFillStroke: + case OPS.endPath: + { + const { + state: { + pathBuffer, + pathMinMax + } + } = stateManager; + if (fn === OPS.closeStroke || fn === OPS.closeFillStroke || fn === OPS.closeEOFillStroke) { + pathBuffer.push(DrawOPS.closePath); + } + if (pathBuffer.length === 0) { + operatorList.addOp(OPS.constructPath, [fn, [null], null]); + } else { + operatorList.addOp(OPS.constructPath, [fn, [new Float32Array(pathBuffer)], pathMinMax.slice()]); + pathBuffer.length = 0; + pathMinMax.set([Infinity, Infinity, -Infinity, -Infinity], 0); + } + continue; + } + case OPS.setTextMatrix: + operatorList.addOp(fn, [new Float32Array(args)]); + continue; + case OPS.markPoint: + case OPS.markPointProps: + case OPS.beginCompat: + case OPS.endCompat: + continue; + case OPS.beginMarkedContentProps: + if (!(args[0] instanceof Name)) { + warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`); + operatorList.addOp(OPS.beginMarkedContentProps, ["OC", null]); + continue; + } + if (args[0].name === "OC") { + next(self.parseMarkedContentProps(args[1], resources).then(data => { + operatorList.addOp(OPS.beginMarkedContentProps, ["OC", data]); + }).catch(reason => { + if (reason instanceof AbortException) { + return; + } + if (self.options.ignoreErrors) { + warn(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`); + operatorList.addOp(OPS.beginMarkedContentProps, ["OC", null]); + return; + } + throw reason; + })); + return; + } + args = [args[0].name, args[1] instanceof Dict ? args[1].get("MCID") : null]; + break; + case OPS.beginMarkedContent: + case OPS.endMarkedContent: + default: + if (args !== null) { + for (i = 0, ii = args.length; i < ii; i++) { + if (args[i] instanceof Dict) { + break; + } + } + if (i < ii) { + warn("getOperatorList - ignoring operator: " + fn); + continue; + } + } + } + operatorList.addOp(fn, args); + } + if (stop) { + next(deferred); + return; + } + closePendingRestoreOPS(); + resolve(); + }).catch(reason => { + if (reason instanceof AbortException) { + return; + } + if (this.options.ignoreErrors) { + warn(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`); + closePendingRestoreOPS(); + return; + } + throw reason; + }); + } + async getTextContent({ + stream, + task, + resources, + stateManager = null, + includeMarkedContent = false, + sink, + seenStyles = new Set(), + viewBox, + lang = null, + markedContentData = null, + disableNormalization = false, + keepWhiteSpace = false, + prevRefs = null, + intersector = null + }) { + if (stream.isAsync) { + const bytes = await stream.asyncGetBytes(); + if (bytes) { + stream = new Stream(bytes, 0, bytes.length, stream.dict); + } + } + const objId = stream.dict?.objId; + const seenRefs = new RefSet(prevRefs); + if (objId) { + if (prevRefs?.has(objId)) { + throw new Error(`getTextContent - ignoring circular reference: ${objId}`); + } + seenRefs.put(objId); + } + resources ||= Dict.empty; + stateManager ||= new StateManager(new TextState()); + if (includeMarkedContent) { + markedContentData ||= { + level: 0 + }; + } + const textContent = { + items: [], + styles: Object.create(null), + lang + }; + const textContentItem = { + initialized: false, + str: [], + totalWidth: 0, + totalHeight: 0, + width: 0, + height: 0, + vertical: false, + prevTransform: null, + prevTextRise: 0, + textAdvanceScale: 0, + spaceInFlowMin: 0, + spaceInFlowMax: 0, + trackingSpaceMin: Infinity, + negativeSpaceMax: -Infinity, + notASpace: -Infinity, + transform: null, + fontName: null, + hasEOL: false + }; + const twoLastChars = [" ", " "]; + let twoLastCharsPos = 0; + function saveLastChar(char) { + const nextPos = (twoLastCharsPos + 1) % 2; + const ret = twoLastChars[twoLastCharsPos] !== " " && twoLastChars[nextPos] === " "; + twoLastChars[twoLastCharsPos] = char; + twoLastCharsPos = nextPos; + return !keepWhiteSpace && ret; + } + function shouldAddWhitepsace() { + return !keepWhiteSpace && twoLastChars[twoLastCharsPos] !== " " && twoLastChars[(twoLastCharsPos + 1) % 2] === " "; + } + function resetLastChars() { + twoLastChars[0] = twoLastChars[1] = " "; + twoLastCharsPos = 0; + } + const TRACKING_SPACE_FACTOR = 0.102; + const NOT_A_SPACE_FACTOR = 0.03; + const NEGATIVE_SPACE_FACTOR = -0.2; + const SPACE_IN_FLOW_MIN_FACTOR = 0.102; + const SPACE_IN_FLOW_MAX_FACTOR = 0.6; + const VERTICAL_SHIFT_RATIO = 0.25; + const self = this; + const xref = this.xref; + const showSpacedTextBuffer = []; + let xobjs = null; + const emptyXObjectCache = new LocalImageCache(); + const emptyGStateCache = new LocalGStateCache(); + const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); + let textState, currentTextState; + function pushWhitespace({ + width = 0, + height = 0, + transform = textContentItem.prevTransform, + fontName = textContentItem.fontName + }) { + intersector?.addExtraChar(" "); + textContent.items.push({ + str: " ", + dir: "ltr", + width, + height, + transform, + fontName, + hasEOL: false + }); + } + function getCurrentTextTransform() { + const font = textState.font; + const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise]; + if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)) { + const glyphHeight = font.bbox[3] - font.bbox[1]; + if (glyphHeight > 0) { + tsm[3] *= glyphHeight * textState.fontMatrix[3]; + } + } + return Util.transform(textState.ctm, Util.transform(textState.textMatrix, tsm)); + } + function ensureTextContentItem() { + if (textContentItem.initialized) { + return textContentItem; + } + const { + font, + loadedName + } = textState; + if (!seenStyles.has(loadedName)) { + seenStyles.add(loadedName); + textContent.styles[loadedName] = { + fontFamily: font.fallbackName, + ascent: font.ascent, + descent: font.descent, + vertical: font.vertical + }; + if (self.options.fontExtraProperties && font.systemFontInfo) { + const style = textContent.styles[loadedName]; + style.fontSubstitution = font.systemFontInfo.css; + style.fontSubstitutionLoadedName = font.systemFontInfo.loadedName; + } + } + textContentItem.fontName = loadedName; + const trm = textContentItem.transform = getCurrentTextTransform(); + if (!font.vertical) { + textContentItem.width = textContentItem.totalWidth = 0; + textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]); + textContentItem.vertical = false; + } else { + textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]); + textContentItem.height = textContentItem.totalHeight = 0; + textContentItem.vertical = true; + } + const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]); + const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]); + textContentItem.textAdvanceScale = scaleCtmX * scaleLineX; + const { + fontSize + } = textState; + textContentItem.trackingSpaceMin = fontSize * TRACKING_SPACE_FACTOR; + textContentItem.notASpace = fontSize * NOT_A_SPACE_FACTOR; + textContentItem.negativeSpaceMax = fontSize * NEGATIVE_SPACE_FACTOR; + textContentItem.spaceInFlowMin = fontSize * SPACE_IN_FLOW_MIN_FACTOR; + textContentItem.spaceInFlowMax = fontSize * SPACE_IN_FLOW_MAX_FACTOR; + textContentItem.hasEOL = false; + textContentItem.initialized = true; + return textContentItem; + } + function updateAdvanceScale() { + if (!textContentItem.initialized) { + return; + } + const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]); + const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]); + const scaleFactor = scaleCtmX * scaleLineX; + if (scaleFactor === textContentItem.textAdvanceScale) { + return; + } + if (!textContentItem.vertical) { + textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale; + textContentItem.width = 0; + } else { + textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale; + textContentItem.height = 0; + } + textContentItem.textAdvanceScale = scaleFactor; + } + function runBidiTransform(textChunk) { + let text = textChunk.str.join(""); + if (!disableNormalization) { + text = normalizeUnicode(text); + } + const bidiResult = bidi(text, -1, textChunk.vertical); + return { + str: bidiResult.str, + dir: bidiResult.dir, + width: Math.abs(textChunk.totalWidth), + height: Math.abs(textChunk.totalHeight), + transform: textChunk.transform, + fontName: textChunk.fontName, + hasEOL: textChunk.hasEOL + }; + } + async function handleSetFont(fontName, fontRef) { + const translated = await self.loadFont(fontName, fontRef, resources, task); + textState.loadedName = translated.loadedName; + textState.font = translated.font; + textState.fontMatrix = translated.font.fontMatrix || FONT_IDENTITY_MATRIX; + } + function applyInverseRotation(x, y, matrix) { + const scale = Math.hypot(matrix[0], matrix[1]); + return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale]; + } + function compareWithLastPosition(glyphWidth) { + const currentTransform = getCurrentTextTransform(); + let posX = currentTransform[4]; + let posY = currentTransform[5]; + if (textState.font?.vertical) { + if (posX < viewBox[0] || posX > viewBox[2] || posY + glyphWidth < viewBox[1] || posY > viewBox[3]) { + return false; + } + } else if (posX + glyphWidth < viewBox[0] || posX > viewBox[2] || posY < viewBox[1] || posY > viewBox[3]) { + return false; + } + if (!textState.font || !textContentItem.prevTransform) { + return true; + } + let lastPosX = textContentItem.prevTransform[4]; + let lastPosY = textContentItem.prevTransform[5]; + if (lastPosX === posX && lastPosY === posY) { + return true; + } + let rotate = -1; + if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) { + rotate = currentTransform[0] > 0 ? 0 : 180; + } else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) { + rotate = currentTransform[1] > 0 ? 90 : 270; + } + switch (rotate) { + case 0: + break; + case 90: + [posX, posY] = [posY, posX]; + [lastPosX, lastPosY] = [lastPosY, lastPosX]; + break; + case 180: + [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY]; + break; + case 270: + [posX, posY] = [-posY, -posX]; + [lastPosX, lastPosY] = [-lastPosY, -lastPosX]; + break; + default: + [posX, posY] = applyInverseRotation(posX, posY, currentTransform); + [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform); + } + if (textState.font.vertical) { + const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale; + const advanceX = posX - lastPosX; + const textOrientation = Math.sign(textContentItem.height || textContentItem.totalHeight); + if (advanceY < textOrientation * textContentItem.negativeSpaceMax) { + if (Math.abs(advanceX) > 0.5 * textContentItem.width) { + appendEOL(); + return true; + } + resetLastChars(); + flushTextContentItem(); + return true; + } + if (Math.abs(advanceX) > textContentItem.width) { + appendEOL(); + return true; + } + if (advanceY <= textOrientation * textContentItem.notASpace) { + resetLastChars(); + } + if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) { + if (shouldAddWhitepsace()) { + resetLastChars(); + flushTextContentItem(); + pushWhitespace({ + height: Math.abs(advanceY) + }); + } else { + textContentItem.height += advanceY; + } + } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) { + if (textContentItem.str.length === 0) { + resetLastChars(); + pushWhitespace({ + height: Math.abs(advanceY) + }); + } else { + textContentItem.height += advanceY; + } + } + if (Math.abs(advanceX) > textContentItem.width * VERTICAL_SHIFT_RATIO) { + flushTextContentItem(); + } + return true; + } + const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale; + const advanceY = posY - lastPosY; + const textOrientation = Math.sign(textContentItem.width || textContentItem.totalWidth); + if (advanceX < textOrientation * textContentItem.negativeSpaceMax) { + if (Math.abs(advanceY) > 0.5 * textContentItem.height) { + appendEOL(); + return true; + } + resetLastChars(); + flushTextContentItem(); + return true; + } + const textRiseDelta = textState.textRise - textContentItem.prevTextRise; + const advanceYCorrected = textRiseDelta === 0 ? advanceY : advanceY - currentTransform[3] / textState.fontSize * textRiseDelta; + if (Math.abs(advanceYCorrected) > textContentItem.height) { + appendEOL(); + return true; + } + if (advanceX <= textOrientation * textContentItem.notASpace) { + resetLastChars(); + } + if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) { + if (shouldAddWhitepsace()) { + resetLastChars(); + flushTextContentItem(); + pushWhitespace({ + width: Math.abs(advanceX) + }); + } else { + textContentItem.width += advanceX; + } + } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) { + if (textContentItem.str.length === 0) { + resetLastChars(); + pushWhitespace({ + width: Math.abs(advanceX) + }); + } else { + textContentItem.width += advanceX; + } + } + if (Math.abs(advanceY) > textContentItem.height * VERTICAL_SHIFT_RATIO) { + flushTextContentItem(); + } + return true; + } + function buildTextContentItem({ + chars, + extraSpacing + }) { + if (currentTextState !== textState && (currentTextState.fontSize !== textState.fontSize || currentTextState.fontName !== textState.fontName && (currentTextState.font.name !== textState.font.name || currentTextState.font.vertical !== textState.font.vertical))) { + flushTextContentItem(); + currentTextState = textState.clone(); + } + const font = textState.font; + const baseCharSpacing = font.vertical ? -textState.charSpacing : textState.charSpacing; + if (!chars) { + const charSpacing = baseCharSpacing + extraSpacing; + if (charSpacing) { + if (!font.vertical) { + textState.translateTextMatrix(charSpacing * textState.textHScale, 0); + } else { + textState.translateTextMatrix(0, -charSpacing); + } + } + if (keepWhiteSpace) { + compareWithLastPosition(0); + } + return; + } + const glyphs = font.charsToGlyphs(chars); + const scale = textState.fontMatrix[0] * textState.fontSize; + for (let i = 0, ii = glyphs.length; i < ii; i++) { + const glyph = glyphs[i]; + const { + category, + originalCharCode + } = glyph; + if (category.isInvisibleFormatMark) { + continue; + } + let charSpacing = baseCharSpacing + (i + 1 === ii ? extraSpacing : 0); + let glyphWidth = glyph.width; + if (font.vertical) { + glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth; + } + let scaledDim = glyphWidth * scale; + if (originalCharCode === 0x20) { + charSpacing += textState.wordSpacing; + } + if (!keepWhiteSpace && category.isWhitespace) { + if (!font.vertical) { + charSpacing += scaledDim; + textState.translateTextMatrix(charSpacing * textState.textHScale, 0); + } else { + charSpacing += -scaledDim; + textState.translateTextMatrix(0, -charSpacing); + } + saveLastChar(" "); + continue; + } + if (!category.isZeroWidthDiacritic && !compareWithLastPosition(scaledDim)) { + if (!font.vertical) { + textState.translateTextMatrix(scaledDim * textState.textHScale, 0); + } else { + textState.translateTextMatrix(0, scaledDim); + } + continue; + } + const textChunk = ensureTextContentItem(); + if (category.isZeroWidthDiacritic) { + scaledDim = 0; + } + if (!font.vertical) { + scaledDim *= textState.textHScale; + intersector?.addGlyph(getCurrentTextTransform(), scaledDim, 0, glyph.unicode); + textState.translateTextMatrix(scaledDim, 0); + textChunk.width += scaledDim; + } else { + intersector?.addGlyph(getCurrentTextTransform(), 0, scaledDim, glyph.unicode); + textState.translateTextMatrix(0, scaledDim); + scaledDim = Math.abs(scaledDim); + textChunk.height += scaledDim; + } + if (scaledDim) { + textChunk.prevTransform = getCurrentTextTransform(); + textChunk.prevTextRise = textState.textRise; + } + const glyphUnicode = glyph.unicode; + if (saveLastChar(glyphUnicode)) { + textChunk.str.push(" "); + intersector?.addExtraChar(" "); + } + if (!intersector) { + textChunk.str.push(glyphUnicode); + } + if (charSpacing) { + if (!font.vertical) { + textState.translateTextMatrix(charSpacing * textState.textHScale, 0); + } else { + textState.translateTextMatrix(0, -charSpacing); + } + } + } + } + function appendEOL() { + intersector?.addExtraChar("\n"); + resetLastChars(); + if (textContentItem.initialized) { + textContentItem.hasEOL = true; + flushTextContentItem(); + } else { + textContent.items.push({ + str: "", + dir: "ltr", + width: 0, + height: 0, + transform: getCurrentTextTransform(), + fontName: textState.loadedName, + hasEOL: true + }); + } + } + function addFakeSpaces(width, transf, textOrientation) { + if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) { + if (textContentItem.initialized) { + resetLastChars(); + textContentItem.str.push(" "); + intersector?.addExtraChar(" "); + } + return false; + } + const fontName = textContentItem.fontName; + let height = 0; + if (textContentItem.vertical) { + height = width; + width = 0; + } + flushTextContentItem(); + resetLastChars(); + pushWhitespace({ + width: Math.abs(width), + height: Math.abs(height), + transform: transf || getCurrentTextTransform(), + fontName + }); + return true; + } + function flushTextContentItem() { + if (!textContentItem.initialized || !textContentItem.str) { + return; + } + if (!textContentItem.vertical) { + textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale; + } else { + textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale; + } + textContent.items.push(runBidiTransform(textContentItem)); + textContentItem.initialized = false; + textContentItem.str.length = 0; + } + function enqueueChunk(batch = false) { + const length = textContent.items.length; + if (length === 0) { + return; + } + if (batch && length < TEXT_CHUNK_BATCH_SIZE) { + return; + } + sink?.enqueue(textContent, length); + textContent.items = []; + textContent.styles = Object.create(null); + } + const timeSlotManager = new TimeSlotManager(); + return new Promise(function promiseBody(resolve, reject) { + const next = function (promise) { + enqueueChunk(true); + Promise.all([promise, sink?.ready]).then(function () { + try { + promiseBody(resolve, reject); + } catch (ex) { + reject(ex); + } + }, reject); + }; + task.ensureNotTerminated(); + timeSlotManager.reset(); + const operation = {}; + let stop, + name, + isValidName, + args = []; + while (!(stop = timeSlotManager.check())) { + args.length = 0; + operation.args = args; + if (!preprocessor.read(operation)) { + break; + } + textState = stateManager.state; + currentTextState ||= textState.clone(); + const fn = operation.fn; + args = operation.args; + switch (fn | 0) { + case OPS.setFont: + const fontNameArg = args[0].name, + fontSizeArg = args[1]; + if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) { + break; + } + textState.fontName = fontNameArg; + textState.fontSize = fontSizeArg; + next(handleSetFont(fontNameArg, null)); + return; + case OPS.setTextRise: + textState.textRise = args[0]; + break; + case OPS.setHScale: + textState.textHScale = args[0] / 100; + break; + case OPS.setLeading: + textState.leading = args[0]; + break; + case OPS.moveText: + textState.translateTextLineMatrix(args[0], args[1]); + textState.textMatrix = textState.textLineMatrix.slice(); + break; + case OPS.setLeadingMoveText: + textState.leading = -args[1]; + textState.translateTextLineMatrix(args[0], args[1]); + textState.textMatrix = textState.textLineMatrix.slice(); + break; + case OPS.nextLine: + textState.carriageReturn(); + break; + case OPS.setTextMatrix: + textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + updateAdvanceScale(); + break; + case OPS.setCharSpacing: + textState.charSpacing = args[0]; + break; + case OPS.setWordSpacing: + textState.wordSpacing = args[0]; + break; + case OPS.beginText: + textState.textMatrix = IDENTITY_MATRIX.slice(); + textState.textLineMatrix = IDENTITY_MATRIX.slice(); + break; + case OPS.showSpacedText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000; + const elements = args[0]; + for (let i = 0, ii = elements.length; i < ii; i++) { + const item = elements[i]; + if (typeof item === "string") { + showSpacedTextBuffer.push(item); + } else if (typeof item === "number" && item !== 0) { + const str = showSpacedTextBuffer.join(""); + showSpacedTextBuffer.length = 0; + buildTextContentItem({ + chars: str, + extraSpacing: item * spaceFactor + }); + } + } + if (showSpacedTextBuffer.length > 0) { + const str = showSpacedTextBuffer.join(""); + showSpacedTextBuffer.length = 0; + buildTextContentItem({ + chars: str, + extraSpacing: 0 + }); + } + break; + case OPS.showText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + buildTextContentItem({ + chars: args[0], + extraSpacing: 0 + }); + break; + case OPS.nextLineShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + textState.carriageReturn(); + buildTextContentItem({ + chars: args[0], + extraSpacing: 0 + }); + break; + case OPS.nextLineSetSpacingShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + textState.wordSpacing = args[0]; + textState.charSpacing = args[1]; + textState.carriageReturn(); + buildTextContentItem({ + chars: args[2], + extraSpacing: 0 + }); + break; + case OPS.paintXObject: + flushTextContentItem(); + xobjs ??= resources.get("XObject") || Dict.empty; + isValidName = args[0] instanceof Name; + name = args[0].name; + if (isValidName && emptyXObjectCache.getByName(name)) { + break; + } + next(new Promise(function (resolveXObject, rejectXObject) { + if (!isValidName) { + throw new FormatError("XObject must be referred to by name."); + } + let xobj = xobjs.getRaw(name); + if (xobj instanceof Ref) { + if (emptyXObjectCache.getByRef(xobj)) { + resolveXObject(); + return; + } + const globalImage = self.globalImageCache.getData(xobj, self.pageIndex); + if (globalImage) { + resolveXObject(); + return; + } + xobj = xref.fetch(xobj); + } + if (!(xobj instanceof BaseStream)) { + throw new FormatError("XObject should be a stream"); + } + const { + dict + } = xobj; + const type = dict.get("Subtype"); + if (!(type instanceof Name)) { + throw new FormatError("XObject should have a Name subtype"); + } + if (type.name !== "Form") { + emptyXObjectCache.set(name, dict.objId, true); + resolveXObject(); + return; + } + const currentState = stateManager.state.clone(); + const xObjStateManager = new StateManager(currentState); + const matrix = lookupMatrix(dict.getArray("Matrix"), null); + if (matrix) { + xObjStateManager.transform(matrix); + } + const localResources = dict.get("Resources"); + enqueueChunk(); + const sinkWrapper = { + enqueueInvoked: false, + enqueue(chunk, size) { + this.enqueueInvoked = true; + sink.enqueue(chunk, size); + }, + get desiredSize() { + return sink.desiredSize ?? 0; + }, + get ready() { + return sink.ready; + } + }; + self.getTextContent({ + stream: xobj, + task, + resources: localResources instanceof Dict ? localResources : resources, + stateManager: xObjStateManager, + includeMarkedContent, + sink: sink && sinkWrapper, + seenStyles, + viewBox, + lang, + markedContentData, + disableNormalization, + keepWhiteSpace, + prevRefs: seenRefs + }).then(function () { + if (!sinkWrapper.enqueueInvoked) { + emptyXObjectCache.set(name, dict.objId, true); + } + resolveXObject(); + }, rejectXObject); + }).catch(function (reason) { + if (reason instanceof AbortException) { + return; + } + if (self.options.ignoreErrors) { + warn(`getTextContent - ignoring XObject: "${reason}".`); + return; + } + throw reason; + })); + return; + case OPS.setGState: + isValidName = args[0] instanceof Name; + name = args[0].name; + if (isValidName && emptyGStateCache.getByName(name)) { + break; + } + next(new Promise(function (resolveGState, rejectGState) { + if (!isValidName) { + throw new FormatError("GState must be referred to by name."); + } + const extGState = resources.get("ExtGState"); + if (!(extGState instanceof Dict)) { + throw new FormatError("ExtGState should be a dictionary."); + } + const gState = extGState.get(name); + if (!(gState instanceof Dict)) { + throw new FormatError("GState should be a dictionary."); + } + const gStateFont = gState.get("Font"); + if (!gStateFont) { + emptyGStateCache.set(name, gState.objId, true); + resolveGState(); + return; + } + flushTextContentItem(); + textState.fontName = null; + textState.fontSize = gStateFont[1]; + handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState); + }).catch(function (reason) { + if (reason instanceof AbortException) { + return; + } + if (self.options.ignoreErrors) { + warn(`getTextContent - ignoring ExtGState: "${reason}".`); + return; + } + throw reason; + })); + return; + case OPS.beginMarkedContent: + flushTextContentItem(); + if (includeMarkedContent) { + markedContentData.level++; + textContent.items.push({ + type: "beginMarkedContent", + tag: args[0] instanceof Name ? args[0].name : null + }); + } + break; + case OPS.beginMarkedContentProps: + flushTextContentItem(); + if (includeMarkedContent) { + markedContentData.level++; + let mcid = null; + if (args[1] instanceof Dict) { + mcid = args[1].get("MCID"); + } + textContent.items.push({ + type: "beginMarkedContentProps", + id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mc${mcid}` : null, + tag: args[0] instanceof Name ? args[0].name : null + }); + } + break; + case OPS.endMarkedContent: + flushTextContentItem(); + if (includeMarkedContent) { + if (markedContentData.level === 0) { + break; + } + markedContentData.level--; + textContent.items.push({ + type: "endMarkedContent" + }); + } + break; + } + if (textContent.items.length >= (sink?.desiredSize ?? 1)) { + stop = true; + break; + } + } + if (stop) { + next(deferred); + return; + } + flushTextContentItem(); + enqueueChunk(); + resolve(); + }).catch(reason => { + if (reason instanceof AbortException) { + return; + } + if (this.options.ignoreErrors) { + warn(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`); + flushTextContentItem(); + enqueueChunk(); + return; + } + throw reason; + }); + } + async extractDataStructures(dict, properties) { + const xref = this.xref; + let cidToGidBytes; + const toUnicodePromise = this.readToUnicode(properties.toUnicode); + if (properties.composite) { + const cidSystemInfo = dict.get("CIDSystemInfo"); + if (cidSystemInfo instanceof Dict && !properties.cidSystemInfo) { + properties.cidSystemInfo = { + registry: stringToPDFString(cidSystemInfo.get("Registry")), + ordering: stringToPDFString(cidSystemInfo.get("Ordering")), + supplement: cidSystemInfo.get("Supplement") + }; + } + try { + const cidToGidMap = dict.get("CIDToGIDMap"); + if (cidToGidMap instanceof BaseStream) { + cidToGidBytes = cidToGidMap.getBytes(); + } + } catch (ex) { + if (!this.options.ignoreErrors) { + throw ex; + } + warn(`extractDataStructures - ignoring CIDToGIDMap data: "${ex}".`); + } + } + const differences = []; + let baseEncodingName = null; + let encoding; + if (dict.has("Encoding")) { + encoding = dict.get("Encoding"); + if (encoding instanceof Dict) { + baseEncodingName = encoding.get("BaseEncoding"); + baseEncodingName = baseEncodingName instanceof Name ? baseEncodingName.name : null; + if (encoding.has("Differences")) { + const diffEncoding = encoding.get("Differences"); + let index = 0; + for (const entry of diffEncoding) { + const data = xref.fetchIfRef(entry); + if (typeof data === "number") { + index = data; + } else if (data instanceof Name) { + differences[index++] = data.name; + } else { + throw new FormatError(`Invalid entry in 'Differences' array: ${data}`); + } + } + } + } else if (encoding instanceof Name) { + baseEncodingName = encoding.name; + } else { + const msg = "Encoding is not a Name nor a Dict"; + if (!this.options.ignoreErrors) { + throw new FormatError(msg); + } + warn(msg); + } + if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && baseEncodingName !== "WinAnsiEncoding") { + baseEncodingName = null; + } + } + const nonEmbeddedFont = !properties.file || properties.isInternalFont, + isSymbolsFontName = getSymbolsFonts()[properties.name]; + if (baseEncodingName && nonEmbeddedFont && isSymbolsFontName) { + baseEncodingName = null; + } + if (baseEncodingName === "WinAnsiEncoding" && nonEmbeddedFont && properties.name?.charCodeAt(0) >= 0xb7) { + const fontName = properties.name; + const chineseFontNames = ["\xCB\xCE\xCC\xE5", "\xBA\xDA\xCC\xE5", "\xBF\xAC\xCC\xE5", "\xB7\xC2\xCB\xCE", "\xBF\xAC\xCC\xE5_GB2312", "\xB7\xC2\xCB\xCE_GB2312", "\xC1\xA5\xCA\xE9", "\xD0\xC2\xCB\xCE", "\xB7\xC2\xCB\xCE\xCC\xE5", "\xD0\xA1\xB1\xEA\xCB\xCE"]; + if (chineseFontNames.includes(fontName)) { + baseEncodingName = null; + properties.defaultEncoding = "Adobe-GB1-UCS2"; + properties.composite = true; + properties.cidEncoding = Name.get("GBK-EUC-H"); + const cMap = await CMapFactory.create({ + encoding: properties.cidEncoding, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }); + properties.cMap = cMap; + properties.vertical = properties.cMap.vertical; + properties.cidSystemInfo = { + registry: "Adobe", + ordering: "GB1", + supplement: 0 + }; + } + } + if (baseEncodingName) { + properties.defaultEncoding = getEncoding(baseEncodingName); + } else { + let isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); + const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic); + if (properties.type === "TrueType" && isSymbolicFont && isNonsymbolicFont && differences.length !== 0) { + properties.flags &= ~FontFlags.Symbolic; + isSymbolicFont = false; + } + encoding = StandardEncoding; + if (properties.type === "TrueType" && !isNonsymbolicFont) { + encoding = WinAnsiEncoding; + } + if (isSymbolicFont || isSymbolsFontName) { + encoding = MacRomanEncoding; + if (nonEmbeddedFont) { + if (/Symbol/i.test(properties.name)) { + encoding = SymbolSetEncoding; + } else if (/Dingbats/i.test(properties.name)) { + encoding = ZapfDingbatsEncoding; + } else if (/Wingdings/i.test(properties.name)) { + encoding = WinAnsiEncoding; + } + } + } + properties.defaultEncoding = encoding; + } + properties.differences = differences; + properties.baseEncodingName = baseEncodingName; + properties.hasEncoding = !!baseEncodingName || differences.length > 0; + properties.dict = dict; + properties.toUnicode = await toUnicodePromise; + const builtToUnicode = await this.buildToUnicode(properties); + properties.toUnicode = builtToUnicode; + if (cidToGidBytes) { + properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode); + } + return properties; + } + _simpleFontToUnicode(properties, forceGlyphs = false) { + assert(!properties.composite, "Must be a simple font."); + const toUnicode = []; + const encoding = properties.defaultEncoding.slice(); + const baseEncodingName = properties.baseEncodingName; + const differences = properties.differences; + for (const charcode in differences) { + const glyphName = differences[charcode]; + if (glyphName === ".notdef") { + continue; + } + encoding[charcode] = glyphName; + } + const glyphsUnicodeMap = getGlyphsUnicode(); + for (const charcode in encoding) { + let glyphName = encoding[charcode]; + if (glyphName === "") { + continue; + } + let unicode = glyphsUnicodeMap[glyphName]; + if (unicode !== undefined) { + toUnicode[charcode] = String.fromCharCode(unicode); + continue; + } + let code = 0; + switch (glyphName[0]) { + case "G": + if (glyphName.length === 3) { + code = parseInt(glyphName.substring(1), 16); + } + break; + case "g": + if (glyphName.length === 5) { + code = parseInt(glyphName.substring(1), 16); + } + break; + case "C": + case "c": + if (glyphName.length >= 3 && glyphName.length <= 4) { + const codeStr = glyphName.substring(1); + if (forceGlyphs) { + code = parseInt(codeStr, 16); + break; + } + code = +codeStr; + if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) { + return this._simpleFontToUnicode(properties, true); + } + } + break; + case "u": + unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap); + if (unicode !== -1) { + code = unicode; + } + break; + default: + switch (glyphName) { + case "f_h": + case "f_t": + case "T_h": + toUnicode[charcode] = glyphName.replaceAll("_", ""); + continue; + } + break; + } + if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) { + if (baseEncodingName && code === +charcode) { + const baseEncoding = getEncoding(baseEncodingName); + if (baseEncoding && (glyphName = baseEncoding[charcode])) { + toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); + continue; + } + } + toUnicode[charcode] = String.fromCodePoint(code); + } + } + return toUnicode; + } + async buildToUnicode(properties) { + properties.hasIncludedToUnicodeMap = properties.toUnicode?.length > 0; + if (properties.hasIncludedToUnicodeMap) { + if (!properties.composite && properties.hasEncoding) { + properties.fallbackToUnicode = this._simpleFontToUnicode(properties); + } + return properties.toUnicode; + } + if (!properties.composite) { + return new ToUnicodeMap(this._simpleFontToUnicode(properties)); + } + if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof IdentityCMap) || properties.cidSystemInfo?.registry === "Adobe" && (properties.cidSystemInfo.ordering === "GB1" || properties.cidSystemInfo.ordering === "CNS1" || properties.cidSystemInfo.ordering === "Japan1" || properties.cidSystemInfo.ordering === "Korea1"))) { + const { + registry, + ordering + } = properties.cidSystemInfo; + const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`); + const ucs2CMap = await CMapFactory.create({ + encoding: ucs2CMapName, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }); + const toUnicode = [], + buf = []; + properties.cMap.forEach(function (charcode, cid) { + if (cid > 0xffff) { + throw new FormatError("Max size of CID is 65,535"); + } + const ucs2 = ucs2CMap.lookup(cid); + if (ucs2) { + buf.length = 0; + for (let i = 0, ii = ucs2.length; i < ii; i += 2) { + buf.push((ucs2.charCodeAt(i) << 8) + ucs2.charCodeAt(i + 1)); + } + toUnicode[charcode] = String.fromCharCode(...buf); + } + }); + return new ToUnicodeMap(toUnicode); + } + return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar); + } + async readToUnicode(cmapObj) { + if (!cmapObj) { + return null; + } + if (cmapObj instanceof Name) { + const cmap = await CMapFactory.create({ + encoding: cmapObj, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }); + if (cmap instanceof IdentityCMap) { + return new IdentityToUnicodeMap(0, 0xffff); + } + return new ToUnicodeMap(cmap.getMap()); + } + if (cmapObj instanceof BaseStream) { + try { + const cmap = await CMapFactory.create({ + encoding: cmapObj, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }); + if (cmap instanceof IdentityCMap) { + return new IdentityToUnicodeMap(0, 0xffff); + } + const map = new Array(cmap.length); + cmap.forEach(function (charCode, token) { + if (typeof token === "number") { + map[charCode] = String.fromCodePoint(token); + return; + } + if (token.length % 2 !== 0) { + token = "\u0000" + token; + } + const str = []; + for (let k = 0; k < token.length; k += 2) { + const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); + if ((w1 & 0xf800) !== 0xd800) { + str.push(w1); + continue; + } + k += 2; + const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); + str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000); + } + map[charCode] = String.fromCodePoint(...str); + }); + return new ToUnicodeMap(map); + } catch (reason) { + if (reason instanceof AbortException) { + return null; + } + if (this.options.ignoreErrors) { + warn(`readToUnicode - ignoring ToUnicode data: "${reason}".`); + return null; + } + throw reason; + } + } + return null; + } + readCidToGidMap(glyphsData, toUnicode) { + const result = []; + for (let j = 0, jj = glyphsData.length; j < jj; j++) { + const glyphID = glyphsData[j++] << 8 | glyphsData[j]; + const code = j >> 1; + if (glyphID === 0 && !toUnicode.has(code)) { + continue; + } + result[code] = glyphID; + } + return result; + } + extractWidths(dict, descriptor, properties) { + const xref = this.xref; + let glyphsWidths = []; + let defaultWidth = 0; + const glyphsVMetrics = []; + let defaultVMetrics; + if (properties.composite) { + const dw = dict.get("DW"); + defaultWidth = typeof dw === "number" ? Math.ceil(dw) : 1000; + const widths = dict.get("W"); + if (Array.isArray(widths)) { + for (let i = 0, ii = widths.length; i < ii; i++) { + let start = xref.fetchIfRef(widths[i++]); + if (!Number.isInteger(start)) { + break; + } + const code = xref.fetchIfRef(widths[i]); + if (Array.isArray(code)) { + for (const c of code) { + const width = xref.fetchIfRef(c); + if (typeof width === "number") { + glyphsWidths[start] = width; + } + start++; + } + } else if (Number.isInteger(code)) { + const width = xref.fetchIfRef(widths[++i]); + if (typeof width !== "number") { + continue; + } + for (let j = start; j <= code; j++) { + glyphsWidths[j] = width; + } + } else { + break; + } + } + } + if (properties.vertical) { + const dw2 = dict.getArray("DW2"); + let vmetrics = isNumberArray(dw2, 2) ? dw2 : [880, -1000]; + defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]]; + vmetrics = dict.get("W2"); + if (Array.isArray(vmetrics)) { + for (let i = 0, ii = vmetrics.length; i < ii; i++) { + let start = xref.fetchIfRef(vmetrics[i++]); + if (!Number.isInteger(start)) { + break; + } + const code = xref.fetchIfRef(vmetrics[i]); + if (Array.isArray(code)) { + for (let j = 0, jj = code.length; j < jj; j++) { + const vmetric = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])]; + if (isNumberArray(vmetric, null)) { + glyphsVMetrics[start] = vmetric; + } + start++; + } + } else if (Number.isInteger(code)) { + const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])]; + if (!isNumberArray(vmetric, null)) { + continue; + } + for (let j = start; j <= code; j++) { + glyphsVMetrics[j] = vmetric; + } + } else { + break; + } + } + } + } + } else { + const widths = dict.get("Widths"); + if (Array.isArray(widths)) { + let j = properties.firstChar; + for (const w of widths) { + const width = xref.fetchIfRef(w); + if (typeof width === "number") { + glyphsWidths[j] = width; + } + j++; + } + const missingWidth = descriptor.get("MissingWidth"); + defaultWidth = typeof missingWidth === "number" ? missingWidth : 0; + } else { + const baseFontName = dict.get("BaseFont"); + if (baseFontName instanceof Name) { + const metrics = this.getBaseFontMetrics(baseFontName.name); + glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties); + defaultWidth = metrics.defaultWidth; + } + } + } + let isMonospace = true; + let firstWidth = defaultWidth; + for (const glyph in glyphsWidths) { + const glyphWidth = glyphsWidths[glyph]; + if (!glyphWidth) { + continue; + } + if (!firstWidth) { + firstWidth = glyphWidth; + continue; + } + if (firstWidth !== glyphWidth) { + isMonospace = false; + break; + } + } + if (isMonospace) { + properties.flags |= FontFlags.FixedPitch; + } else { + properties.flags &= ~FontFlags.FixedPitch; + } + properties.defaultWidth = defaultWidth; + properties.widths = glyphsWidths; + properties.defaultVMetrics = defaultVMetrics; + properties.vmetrics = glyphsVMetrics; + } + isSerifFont(baseFontName) { + const fontNameWoStyle = baseFontName.split("-", 1)[0]; + return fontNameWoStyle in getSerifFonts() || /serif/gi.test(fontNameWoStyle); + } + getBaseFontMetrics(name) { + let defaultWidth = 0; + let widths = Object.create(null); + let monospace = false; + let fontName = normalizeFontName(name); + const stdFontMap = getStdFontMap(); + fontName = stdFontMap[fontName] || fontName; + const Metrics = getMetrics(); + const glyphWidths = Metrics[fontName] ?? Metrics[this.isSerifFont(name) ? "Times-Roman" : "Helvetica"]; + if (typeof glyphWidths === "number") { + defaultWidth = glyphWidths; + monospace = true; + } else { + widths = glyphWidths(); + } + return { + defaultWidth, + monospace, + widths + }; + } + buildCharCodeToWidth(widthsByGlyphName, properties) { + const widths = Object.create(null); + const differences = properties.differences; + const encoding = properties.defaultEncoding; + for (let charCode = 0; charCode < 256; charCode++) { + if (charCode in differences && widthsByGlyphName[differences[charCode]]) { + widths[charCode] = widthsByGlyphName[differences[charCode]]; + continue; + } + if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) { + widths[charCode] = widthsByGlyphName[encoding[charCode]]; + continue; + } + } + return widths; + } + preEvaluateFont(dict) { + const baseDict = dict; + let type = dict.get("Subtype"); + if (!(type instanceof Name)) { + throw new FormatError("invalid font Subtype"); + } + let composite = false; + let hash; + if (type.name === "Type0") { + const df = dict.get("DescendantFonts"); + if (!df) { + throw new FormatError("Descendant fonts are not specified"); + } + dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df; + if (!(dict instanceof Dict)) { + throw new FormatError("Descendant font is not a dictionary."); + } + type = dict.get("Subtype"); + if (!(type instanceof Name)) { + throw new FormatError("invalid font Subtype"); + } + composite = true; + } + let firstChar = dict.get("FirstChar"); + if (!Number.isInteger(firstChar)) { + firstChar = 0; + } + let lastChar = dict.get("LastChar"); + if (!Number.isInteger(lastChar)) { + lastChar = composite ? 0xffff : 0xff; + } + const descriptor = dict.get("FontDescriptor"); + const toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode"); + if (descriptor) { + hash = new MurmurHash3_64(); + const encoding = baseDict.getRaw("Encoding"); + if (encoding instanceof Name) { + hash.update(encoding.name); + } else if (encoding instanceof Ref) { + hash.update(encoding.toString()); + } else if (encoding instanceof Dict) { + for (const entry of encoding.getRawValues()) { + if (entry instanceof Name) { + hash.update(entry.name); + } else if (entry instanceof Ref) { + hash.update(entry.toString()); + } else if (Array.isArray(entry)) { + const diffLength = entry.length, + diffBuf = new Array(diffLength); + for (let j = 0; j < diffLength; j++) { + const diffEntry = entry[j]; + if (diffEntry instanceof Name) { + diffBuf[j] = diffEntry.name; + } else if (typeof diffEntry === "number" || diffEntry instanceof Ref) { + diffBuf[j] = diffEntry.toString(); + } + } + hash.update(diffBuf.join()); + } + } + } + hash.update(`${firstChar}-${lastChar}`); + if (toUnicode instanceof BaseStream) { + const stream = toUnicode.stream || toUnicode; + const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start); + hash.update(uint8array); + } else if (toUnicode instanceof Name) { + hash.update(toUnicode.name); + } + const widths = dict.get("Widths") || baseDict.get("Widths"); + if (Array.isArray(widths)) { + const widthsBuf = []; + for (const entry of widths) { + if (typeof entry === "number" || entry instanceof Ref) { + widthsBuf.push(entry.toString()); + } + } + hash.update(widthsBuf.join()); + } + if (composite) { + hash.update("compositeFont"); + const compositeWidths = dict.get("W") || baseDict.get("W"); + if (Array.isArray(compositeWidths)) { + const widthsBuf = []; + for (const entry of compositeWidths) { + if (typeof entry === "number" || entry instanceof Ref) { + widthsBuf.push(entry.toString()); + } else if (Array.isArray(entry)) { + const subWidthsBuf = []; + for (const element of entry) { + if (typeof element === "number" || element instanceof Ref) { + subWidthsBuf.push(element.toString()); + } + } + widthsBuf.push(`[${subWidthsBuf.join()}]`); + } + } + hash.update(widthsBuf.join()); + } + const cidToGidMap = dict.getRaw("CIDToGIDMap") || baseDict.getRaw("CIDToGIDMap"); + if (cidToGidMap instanceof Name) { + hash.update(cidToGidMap.name); + } else if (cidToGidMap instanceof Ref) { + hash.update(cidToGidMap.toString()); + } else if (cidToGidMap instanceof BaseStream) { + hash.update(cidToGidMap.peekBytes()); + } + } + } + return { + descriptor, + dict, + baseDict, + composite, + type: type.name, + firstChar, + lastChar, + toUnicode, + hash: hash ? hash.hexdigest() : "" + }; + } + async translateFont({ + descriptor, + dict, + baseDict, + composite, + type, + firstChar, + lastChar, + toUnicode, + cssFontInfo + }) { + const isType3Font = type === "Type3"; + if (!descriptor) { + if (isType3Font) { + descriptor = Dict.empty; + } else { + let baseFontName = dict.get("BaseFont"); + if (!(baseFontName instanceof Name)) { + throw new FormatError("Base font is not specified"); + } + baseFontName = normalizeFontName(baseFontName.name); + const metrics = this.getBaseFontMetrics(baseFontName); + const fontNameWoStyle = baseFontName.split("-", 1)[0]; + const flags = (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) | (metrics.monospace ? FontFlags.FixedPitch : 0) | (getSymbolsFonts()[fontNameWoStyle] ? FontFlags.Symbolic : FontFlags.Nonsymbolic); + const properties = { + type, + name: baseFontName, + loadedName: baseDict.loadedName, + systemFontInfo: null, + widths: metrics.widths, + defaultWidth: metrics.defaultWidth, + isSimulatedFlags: true, + flags, + firstChar, + lastChar, + toUnicode, + xHeight: 0, + capHeight: 0, + italicAngle: 0, + isType3Font + }; + const widths = dict.get("Widths"); + const standardFontName = getStandardFontName(baseFontName); + let file = null; + if (standardFontName) { + file = await this.fetchStandardFontData(standardFontName); + properties.isInternalFont = !!file; + } + if (!properties.isInternalFont && this.options.useSystemFonts) { + properties.systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, baseFontName, standardFontName, type); + } + const newProperties = await this.extractDataStructures(dict, properties); + if (Array.isArray(widths)) { + const glyphWidths = []; + let j = firstChar; + for (const w of widths) { + const width = this.xref.fetchIfRef(w); + if (typeof width === "number") { + glyphWidths[j] = width; + } + j++; + } + newProperties.widths = glyphWidths; + } else { + newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties); + } + return new Font(baseFontName, file, newProperties, this.options); + } + } + let fontName = descriptor.get("FontName"); + let baseFont = dict.get("BaseFont"); + if (typeof fontName === "string") { + fontName = Name.get(fontName); + } + if (typeof baseFont === "string") { + baseFont = Name.get(baseFont); + } + const fontNameStr = fontName?.name; + const baseFontStr = baseFont?.name; + if (isType3Font) { + if (!fontNameStr) { + fontName = Name.get(type); + } + } else if (fontNameStr !== baseFontStr) { + info(`The FontDescriptor's FontName is "${fontNameStr}" but ` + `should be the same as the Font's BaseFont "${baseFontStr}".`); + if (fontNameStr && baseFontStr && (baseFontStr.startsWith(fontNameStr) || !isKnownFontName(fontNameStr) && isKnownFontName(baseFontStr))) { + fontName = null; + } + fontName ||= baseFont; + } + if (!(fontName instanceof Name)) { + throw new FormatError("invalid font name"); + } + let fontFile, subtype, length1, length2, length3; + try { + fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3"); + if (fontFile) { + if (!(fontFile instanceof BaseStream)) { + throw new FormatError("FontFile should be a stream"); + } else { + if (fontFile.isAsync) { + const bytes = await fontFile.asyncGetBytes(); + if (bytes) { + fontFile = new Stream(bytes, 0, bytes.length, fontFile.dict); + } + } + if (fontFile.isEmpty) { + throw new FormatError("FontFile is empty"); + } + } + } + } catch (ex) { + if (!this.options.ignoreErrors) { + throw ex; + } + warn(`translateFont - fetching "${fontName.name}" font file: "${ex}".`); + fontFile = null; + } + let isInternalFont = false; + let glyphScaleFactors = null; + let systemFontInfo = null; + if (fontFile) { + if (fontFile.dict) { + const subtypeEntry = fontFile.dict.get("Subtype"); + if (subtypeEntry instanceof Name) { + subtype = subtypeEntry.name; + } + length1 = fontFile.dict.get("Length1"); + length2 = fontFile.dict.get("Length2"); + length3 = fontFile.dict.get("Length3"); + } + } else if (cssFontInfo) { + const standardFontName = getXfaFontName(fontName.name); + if (standardFontName) { + cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`; + cssFontInfo.metrics = standardFontName.metrics || null; + glyphScaleFactors = standardFontName.factors || null; + fontFile = await this.fetchStandardFontData(standardFontName.name); + isInternalFont = !!fontFile; + baseDict = dict = getXfaFontDict(fontName.name); + composite = true; + } + } else if (!isType3Font) { + const standardFontName = getStandardFontName(fontName.name); + if (standardFontName) { + fontFile = await this.fetchStandardFontData(standardFontName); + isInternalFont = !!fontFile; + } + if (!isInternalFont && this.options.useSystemFonts) { + systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, fontName.name, standardFontName, type); + } + } + const fontMatrix = lookupMatrix(dict.getArray("FontMatrix"), FONT_IDENTITY_MATRIX); + const bbox = lookupNormalRect(descriptor.getArray("FontBBox") || dict.getArray("FontBBox"), isType3Font ? [0, 0, 0, 0] : undefined); + let ascent = descriptor.get("Ascent"); + if (typeof ascent !== "number") { + ascent = undefined; + } + let descent = descriptor.get("Descent"); + if (typeof descent !== "number") { + descent = undefined; + } + let xHeight = descriptor.get("XHeight"); + if (typeof xHeight !== "number") { + xHeight = 0; + } + let capHeight = descriptor.get("CapHeight"); + if (typeof capHeight !== "number") { + capHeight = 0; + } + let flags = descriptor.get("Flags"); + if (!Number.isInteger(flags)) { + flags = 0; + } + let italicAngle = descriptor.get("ItalicAngle"); + if (typeof italicAngle !== "number") { + italicAngle = 0; + } + const properties = { + type, + name: fontName.name, + subtype, + file: fontFile, + length1, + length2, + length3, + isInternalFont, + loadedName: baseDict.loadedName, + composite, + fixedPitch: false, + fontMatrix, + firstChar, + lastChar, + toUnicode, + bbox, + ascent, + descent, + xHeight, + capHeight, + flags, + italicAngle, + isType3Font, + cssFontInfo, + scaleFactors: glyphScaleFactors, + systemFontInfo + }; + if (composite) { + const cidEncoding = baseDict.get("Encoding"); + if (cidEncoding instanceof Name) { + properties.cidEncoding = cidEncoding.name; + } + const cMap = await CMapFactory.create({ + encoding: cidEncoding, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }); + properties.cMap = cMap; + properties.vertical = properties.cMap.vertical; + } + const newProperties = await this.extractDataStructures(dict, properties); + this.extractWidths(dict, descriptor, newProperties); + return new Font(fontName.name, fontFile, newProperties, this.options); + } + static buildFontPaths(font, glyphs, handler, evaluatorOptions) { + function buildPath(fontChar) { + const glyphName = `${font.loadedName}_path_${fontChar}`; + try { + if (font.renderer.hasBuiltPath(fontChar)) { + return; + } + const buffer = compileFontPathInfo(font.renderer.getPathJs(fontChar)); + handler.send("commonobj", [glyphName, "FontPath", buffer], [buffer]); + } catch (reason) { + if (evaluatorOptions.ignoreErrors) { + warn(`buildFontPaths - ignoring ${glyphName} glyph: "${reason}".`); + return; + } + throw reason; + } + } + for (const glyph of glyphs) { + buildPath(glyph.fontChar); + const accent = glyph.accent; + if (accent?.fontChar) { + buildPath(accent.fontChar); + } + } + } + static get fallbackFontDict() { + const dict = new Dict(); + dict.set("BaseFont", Name.get("Helvetica")); + dict.set("Type", Name.get("FallbackType")); + dict.set("Subtype", Name.get("FallbackType")); + dict.set("Encoding", Name.get("WinAnsiEncoding")); + return shadow(this, "fallbackFontDict", dict); + } +} +class TranslatedFont { + #sent = false; + #type3Loaded = null; + constructor({ + loadedName, + font, + dict + }) { + this.loadedName = loadedName; + this.font = font; + this.dict = dict; + this.type3Dependencies = font.isType3Font ? new Set() : null; + } + send(handler) { + if (this.#sent) { + return; + } + this.#sent = true; + const fontData = this.font.exportData(), + transfers = fontData.buffer ? [fontData.buffer] : null; + handler.send("commonobj", [this.loadedName, "Font", fontData], transfers); + } + fallback(handler, evaluatorOptions) { + if (!this.font.data) { + return; + } + this.font.disableFontFace = true; + PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, evaluatorOptions); + } + loadType3Data(evaluator, resources, task) { + if (this.#type3Loaded) { + return this.#type3Loaded; + } + const { + font, + type3Dependencies + } = this; + assert(font.isType3Font, "Must be a Type3 font."); + const type3Evaluator = evaluator.clone({ + ignoreErrors: false + }); + const type3FontRefs = new RefSet(evaluator.type3FontRefs); + if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) { + type3FontRefs.put(this.dict.objId); + } + type3Evaluator.type3FontRefs = type3FontRefs; + let loadCharProcsPromise = Promise.resolve(); + const charProcs = this.dict.get("CharProcs"); + const fontResources = this.dict.get("Resources") || resources; + const charProcOperatorList = Object.create(null); + const [x0, y0, x1, y1] = font.bbox, + width = x1 - x0, + height = y1 - y0; + const fontBBoxSize = Math.hypot(width, height); + for (const key of charProcs.getKeys()) { + loadCharProcsPromise = loadCharProcsPromise.then(() => { + const glyphStream = charProcs.get(key); + const operatorList = new OperatorList(); + return type3Evaluator.getOperatorList({ + stream: glyphStream, + task, + resources: fontResources, + operatorList + }).then(() => { + switch (operatorList.fnArray[0]) { + case OPS.setCharWidthAndBounds: + this.#removeType3ColorOperators(operatorList, fontBBoxSize); + break; + case OPS.setCharWidth: + if (!fontBBoxSize) { + this.#guessType3FontBBox(operatorList); + } + break; + } + charProcOperatorList[key] = operatorList.getIR(); + for (const dependency of operatorList.dependencies) { + type3Dependencies.add(dependency); + } + }).catch(function (reason) { + warn(`Type3 font resource "${key}" is not available.`); + const dummyOperatorList = new OperatorList(); + charProcOperatorList[key] = dummyOperatorList.getIR(); + }); + }); + } + this.#type3Loaded = loadCharProcsPromise.then(() => { + font.charProcOperatorList = charProcOperatorList; + if (this._bbox) { + font.isCharBBox = true; + font.bbox = this._bbox; + } + }); + return this.#type3Loaded; + } + #removeType3ColorOperators(operatorList, fontBBoxSize = NaN) { + const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2)), + width = charBBox[2] - charBBox[0], + height = charBBox[3] - charBBox[1]; + const charBBoxSize = Math.hypot(width, height); + if (width === 0 || height === 0) { + operatorList.fnArray.splice(0, 1); + operatorList.argsArray.splice(0, 1); + } else if (fontBBoxSize === 0 || Math.round(charBBoxSize / fontBBoxSize) >= 10) { + this._bbox ??= [Infinity, Infinity, -Infinity, -Infinity]; + Util.rectBoundingBox(...charBBox, this._bbox); + } + let i = 0, + ii = operatorList.length; + while (i < ii) { + switch (operatorList.fnArray[i]) { + case OPS.setCharWidthAndBounds: + break; + case OPS.setStrokeColorSpace: + case OPS.setFillColorSpace: + case OPS.setStrokeColor: + case OPS.setStrokeColorN: + case OPS.setFillColor: + case OPS.setFillColorN: + case OPS.setStrokeGray: + case OPS.setFillGray: + case OPS.setStrokeRGBColor: + case OPS.setFillRGBColor: + case OPS.setStrokeCMYKColor: + case OPS.setFillCMYKColor: + case OPS.shadingFill: + case OPS.setRenderingIntent: + operatorList.fnArray.splice(i, 1); + operatorList.argsArray.splice(i, 1); + ii--; + continue; + case OPS.setGState: + const [gStateObj] = operatorList.argsArray[i]; + let j = 0, + jj = gStateObj.length; + while (j < jj) { + const [gStateKey] = gStateObj[j]; + switch (gStateKey) { + case "TR": + case "TR2": + case "HT": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + gStateObj.splice(j, 1); + jj--; + continue; + } + j++; + } + break; + } + i++; + } + } + #guessType3FontBBox(operatorList) { + let i = 1; + const ii = operatorList.length; + while (i < ii) { + switch (operatorList.fnArray[i]) { + case OPS.constructPath: + const minMax = operatorList.argsArray[i][2]; + this._bbox ??= [Infinity, Infinity, -Infinity, -Infinity]; + Util.rectBoundingBox(...minMax, this._bbox); + break; + } + i++; + } + } +} +class StateManager { + constructor(initialState = new EvalState()) { + this.state = initialState; + this.stateStack = []; + } + save() { + const old = this.state; + this.stateStack.push(this.state); + this.state = old.clone(); + } + restore() { + const prev = this.stateStack.pop(); + if (prev) { + this.state = prev; + } + } + transform(args) { + this.state.ctm = Util.transform(this.state.ctm, args); + } +} +class TextState { + ctm = new Float32Array(IDENTITY_MATRIX); + fontName = null; + fontSize = 0; + loadedName = null; + font = null; + fontMatrix = FONT_IDENTITY_MATRIX; + textMatrix = IDENTITY_MATRIX.slice(); + textLineMatrix = IDENTITY_MATRIX.slice(); + charSpacing = 0; + wordSpacing = 0; + leading = 0; + textHScale = 1; + textRise = 0; + setTextMatrix(a, b, c, d, e, f) { + const m = this.textMatrix; + m[0] = a; + m[1] = b; + m[2] = c; + m[3] = d; + m[4] = e; + m[5] = f; + } + setTextLineMatrix(a, b, c, d, e, f) { + const m = this.textLineMatrix; + m[0] = a; + m[1] = b; + m[2] = c; + m[3] = d; + m[4] = e; + m[5] = f; + } + translateTextMatrix(x, y) { + const m = this.textMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + } + translateTextLineMatrix(x, y) { + const m = this.textLineMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + } + carriageReturn() { + this.translateTextLineMatrix(0, -this.leading); + this.textMatrix = this.textLineMatrix.slice(); + } + clone() { + const clone = Object.assign(Object.create(this), this); + clone.textMatrix = this.textMatrix.slice(); + clone.textLineMatrix = this.textLineMatrix.slice(); + clone.fontMatrix = this.fontMatrix.slice(); + return clone; + } +} +class EvalState { + ctm = new Float32Array(IDENTITY_MATRIX); + font = null; + textRenderingMode = TextRenderingMode.FILL; + _fillColorSpace = ColorSpaceUtils.gray; + _strokeColorSpace = ColorSpaceUtils.gray; + patternFillColorSpace = null; + patternStrokeColorSpace = null; + currentPointX = 0; + currentPointY = 0; + pathMinMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]); + pathBuffer = []; + get fillColorSpace() { + return this._fillColorSpace; + } + set fillColorSpace(colorSpace) { + this._fillColorSpace = this.patternFillColorSpace = colorSpace; + } + get strokeColorSpace() { + return this._strokeColorSpace; + } + set strokeColorSpace(colorSpace) { + this._strokeColorSpace = this.patternStrokeColorSpace = colorSpace; + } + clone({ + newPath = false + } = {}) { + const clone = Object.create(this); + if (newPath) { + clone.pathBuffer = []; + clone.pathMinMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]); + } + return clone; + } +} +class EvaluatorPreprocessor { + static get opMap() { + return shadow(this, "opMap", Object.assign(Object.create(null), { + w: { + id: OPS.setLineWidth, + numArgs: 1, + variableArgs: false + }, + J: { + id: OPS.setLineCap, + numArgs: 1, + variableArgs: false + }, + j: { + id: OPS.setLineJoin, + numArgs: 1, + variableArgs: false + }, + M: { + id: OPS.setMiterLimit, + numArgs: 1, + variableArgs: false + }, + d: { + id: OPS.setDash, + numArgs: 2, + variableArgs: false + }, + ri: { + id: OPS.setRenderingIntent, + numArgs: 1, + variableArgs: false + }, + i: { + id: OPS.setFlatness, + numArgs: 1, + variableArgs: false + }, + gs: { + id: OPS.setGState, + numArgs: 1, + variableArgs: false + }, + q: { + id: OPS.save, + numArgs: 0, + variableArgs: false + }, + Q: { + id: OPS.restore, + numArgs: 0, + variableArgs: false + }, + cm: { + id: OPS.transform, + numArgs: 6, + variableArgs: false + }, + m: { + id: OPS.moveTo, + numArgs: 2, + variableArgs: false + }, + l: { + id: OPS.lineTo, + numArgs: 2, + variableArgs: false + }, + c: { + id: OPS.curveTo, + numArgs: 6, + variableArgs: false + }, + v: { + id: OPS.curveTo2, + numArgs: 4, + variableArgs: false + }, + y: { + id: OPS.curveTo3, + numArgs: 4, + variableArgs: false + }, + h: { + id: OPS.closePath, + numArgs: 0, + variableArgs: false + }, + re: { + id: OPS.rectangle, + numArgs: 4, + variableArgs: false + }, + S: { + id: OPS.stroke, + numArgs: 0, + variableArgs: false + }, + s: { + id: OPS.closeStroke, + numArgs: 0, + variableArgs: false + }, + f: { + id: OPS.fill, + numArgs: 0, + variableArgs: false + }, + F: { + id: OPS.fill, + numArgs: 0, + variableArgs: false + }, + "f*": { + id: OPS.eoFill, + numArgs: 0, + variableArgs: false + }, + B: { + id: OPS.fillStroke, + numArgs: 0, + variableArgs: false + }, + "B*": { + id: OPS.eoFillStroke, + numArgs: 0, + variableArgs: false + }, + b: { + id: OPS.closeFillStroke, + numArgs: 0, + variableArgs: false + }, + "b*": { + id: OPS.closeEOFillStroke, + numArgs: 0, + variableArgs: false + }, + n: { + id: OPS.endPath, + numArgs: 0, + variableArgs: false + }, + W: { + id: OPS.clip, + numArgs: 0, + variableArgs: false + }, + "W*": { + id: OPS.eoClip, + numArgs: 0, + variableArgs: false + }, + BT: { + id: OPS.beginText, + numArgs: 0, + variableArgs: false + }, + ET: { + id: OPS.endText, + numArgs: 0, + variableArgs: false + }, + Tc: { + id: OPS.setCharSpacing, + numArgs: 1, + variableArgs: false + }, + Tw: { + id: OPS.setWordSpacing, + numArgs: 1, + variableArgs: false + }, + Tz: { + id: OPS.setHScale, + numArgs: 1, + variableArgs: false + }, + TL: { + id: OPS.setLeading, + numArgs: 1, + variableArgs: false + }, + Tf: { + id: OPS.setFont, + numArgs: 2, + variableArgs: false + }, + Tr: { + id: OPS.setTextRenderingMode, + numArgs: 1, + variableArgs: false + }, + Ts: { + id: OPS.setTextRise, + numArgs: 1, + variableArgs: false + }, + Td: { + id: OPS.moveText, + numArgs: 2, + variableArgs: false + }, + TD: { + id: OPS.setLeadingMoveText, + numArgs: 2, + variableArgs: false + }, + Tm: { + id: OPS.setTextMatrix, + numArgs: 6, + variableArgs: false + }, + "T*": { + id: OPS.nextLine, + numArgs: 0, + variableArgs: false + }, + Tj: { + id: OPS.showText, + numArgs: 1, + variableArgs: false + }, + TJ: { + id: OPS.showSpacedText, + numArgs: 1, + variableArgs: false + }, + "'": { + id: OPS.nextLineShowText, + numArgs: 1, + variableArgs: false + }, + '"': { + id: OPS.nextLineSetSpacingShowText, + numArgs: 3, + variableArgs: false + }, + d0: { + id: OPS.setCharWidth, + numArgs: 2, + variableArgs: false + }, + d1: { + id: OPS.setCharWidthAndBounds, + numArgs: 6, + variableArgs: false + }, + CS: { + id: OPS.setStrokeColorSpace, + numArgs: 1, + variableArgs: false + }, + cs: { + id: OPS.setFillColorSpace, + numArgs: 1, + variableArgs: false + }, + SC: { + id: OPS.setStrokeColor, + numArgs: 4, + variableArgs: true + }, + SCN: { + id: OPS.setStrokeColorN, + numArgs: 33, + variableArgs: true + }, + sc: { + id: OPS.setFillColor, + numArgs: 4, + variableArgs: true + }, + scn: { + id: OPS.setFillColorN, + numArgs: 33, + variableArgs: true + }, + G: { + id: OPS.setStrokeGray, + numArgs: 1, + variableArgs: false + }, + g: { + id: OPS.setFillGray, + numArgs: 1, + variableArgs: false + }, + RG: { + id: OPS.setStrokeRGBColor, + numArgs: 3, + variableArgs: false + }, + rg: { + id: OPS.setFillRGBColor, + numArgs: 3, + variableArgs: false + }, + K: { + id: OPS.setStrokeCMYKColor, + numArgs: 4, + variableArgs: false + }, + k: { + id: OPS.setFillCMYKColor, + numArgs: 4, + variableArgs: false + }, + sh: { + id: OPS.shadingFill, + numArgs: 1, + variableArgs: false + }, + BI: { + id: OPS.beginInlineImage, + numArgs: 0, + variableArgs: false + }, + ID: { + id: OPS.beginImageData, + numArgs: 0, + variableArgs: false + }, + EI: { + id: OPS.endInlineImage, + numArgs: 1, + variableArgs: false + }, + Do: { + id: OPS.paintXObject, + numArgs: 1, + variableArgs: false + }, + MP: { + id: OPS.markPoint, + numArgs: 1, + variableArgs: false + }, + DP: { + id: OPS.markPointProps, + numArgs: 2, + variableArgs: false + }, + BMC: { + id: OPS.beginMarkedContent, + numArgs: 1, + variableArgs: false + }, + BDC: { + id: OPS.beginMarkedContentProps, + numArgs: 2, + variableArgs: false + }, + EMC: { + id: OPS.endMarkedContent, + numArgs: 0, + variableArgs: false + }, + BX: { + id: OPS.beginCompat, + numArgs: 0, + variableArgs: false + }, + EX: { + id: OPS.endCompat, + numArgs: 0, + variableArgs: false + }, + BM: null, + BD: null, + true: null, + fa: null, + fal: null, + fals: null, + false: null, + nu: null, + nul: null, + null: null + })); + } + static MAX_INVALID_PATH_OPS = 10; + constructor(stream, xref, stateManager = new StateManager()) { + this.parser = new Parser({ + lexer: new Lexer(stream, EvaluatorPreprocessor.opMap), + xref + }); + this.stateManager = stateManager; + this.nonProcessedArgs = []; + this._isPathOp = false; + this._numInvalidPathOPS = 0; + } + get savedStatesDepth() { + return this.stateManager.stateStack.length; + } + read(operation) { + let args = operation.args; + while (true) { + const obj = this.parser.getObj(); + if (obj instanceof Cmd) { + const cmd = obj.cmd; + const opSpec = EvaluatorPreprocessor.opMap[cmd]; + if (!opSpec) { + warn(`Unknown command "${cmd}".`); + continue; + } + const fn = opSpec.id; + const numArgs = opSpec.numArgs; + let argsLength = args !== null ? args.length : 0; + if (!this._isPathOp) { + this._numInvalidPathOPS = 0; + } + this._isPathOp = fn >= OPS.moveTo && fn <= OPS.endPath; + if (!opSpec.variableArgs) { + if (argsLength !== numArgs) { + const nonProcessedArgs = this.nonProcessedArgs; + while (argsLength > numArgs) { + nonProcessedArgs.push(args.shift()); + argsLength--; + } + while (argsLength < numArgs && nonProcessedArgs.length !== 0) { + if (args === null) { + args = []; + } + args.unshift(nonProcessedArgs.pop()); + argsLength++; + } + } + if (argsLength < numArgs) { + const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`; + if (this._isPathOp && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) { + throw new FormatError(`Invalid ${partialMsg}`); + } + warn(`Skipping ${partialMsg}`); + if (args !== null) { + args.length = 0; + } + continue; + } + } else if (argsLength > numArgs) { + info(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`); + } + this.preprocessCommand(fn, args); + operation.fn = fn; + operation.args = args; + return true; + } + if (obj === EOF) { + return false; + } + if (obj !== null) { + if (args === null) { + args = []; + } + args.push(obj); + if (args.length > 33) { + throw new FormatError("Too many arguments"); + } + } + } + } + preprocessCommand(fn, args) { + switch (fn | 0) { + case OPS.save: + this.stateManager.save(); + break; + case OPS.restore: + this.stateManager.restore(); + break; + case OPS.transform: + this.stateManager.transform(args); + break; + } + } +} + +;// ./src/core/default_appearance.js + + + + + + + + +class DefaultAppearanceEvaluator extends EvaluatorPreprocessor { + constructor(str) { + super(new StringStream(str)); + } + parse() { + const operation = { + fn: 0, + args: [] + }; + const result = { + fontSize: 0, + fontName: "", + fontColor: new Uint8ClampedArray(3) + }; + try { + while (true) { + operation.args.length = 0; + if (!this.read(operation)) { + break; + } + if (this.savedStatesDepth !== 0) { + continue; + } + const { + fn, + args + } = operation; + switch (fn | 0) { + case OPS.setFont: + const [fontName, fontSize] = args; + if (fontName instanceof Name) { + result.fontName = fontName.name; + } + if (typeof fontSize === "number" && fontSize > 0) { + result.fontSize = fontSize; + } + break; + case OPS.setFillRGBColor: + ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0); + break; + case OPS.setFillGray: + ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0); + break; + case OPS.setFillCMYKColor: + ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0); + break; + } + } + } catch (reason) { + warn(`parseDefaultAppearance - ignoring errors: "${reason}".`); + } + return result; + } +} +function parseDefaultAppearance(str) { + return new DefaultAppearanceEvaluator(str).parse(); +} +class AppearanceStreamEvaluator extends EvaluatorPreprocessor { + constructor(stream, evaluatorOptions, xref, globalColorSpaceCache) { + super(stream); + this.stream = stream; + this.evaluatorOptions = evaluatorOptions; + this.xref = xref; + this.globalColorSpaceCache = globalColorSpaceCache; + this.resources = stream.dict?.get("Resources"); + } + parse() { + const operation = { + fn: 0, + args: [] + }; + let result = { + scaleFactor: 1, + fontSize: 0, + fontName: "", + fontColor: new Uint8ClampedArray(3), + fillColorSpace: ColorSpaceUtils.gray + }; + let breakLoop = false; + const stack = []; + try { + while (true) { + operation.args.length = 0; + if (breakLoop || !this.read(operation)) { + break; + } + const { + fn, + args + } = operation; + switch (fn | 0) { + case OPS.save: + stack.push({ + scaleFactor: result.scaleFactor, + fontSize: result.fontSize, + fontName: result.fontName, + fontColor: result.fontColor.slice(), + fillColorSpace: result.fillColorSpace + }); + break; + case OPS.restore: + result = stack.pop() || result; + break; + case OPS.setTextMatrix: + result.scaleFactor *= Math.hypot(args[0], args[1]); + break; + case OPS.setFont: + const [fontName, fontSize] = args; + if (fontName instanceof Name) { + result.fontName = fontName.name; + } + if (typeof fontSize === "number" && fontSize > 0) { + result.fontSize = fontSize * result.scaleFactor; + } + break; + case OPS.setFillColorSpace: + result.fillColorSpace = ColorSpaceUtils.parse({ + cs: args[0], + xref: this.xref, + resources: this.resources, + pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, + localColorSpaceCache: this._localColorSpaceCache + }); + break; + case OPS.setFillColor: + const cs = result.fillColorSpace; + cs.getRgbItem(args, 0, result.fontColor, 0); + break; + case OPS.setFillRGBColor: + ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0); + break; + case OPS.setFillGray: + ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0); + break; + case OPS.setFillCMYKColor: + ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0); + break; + case OPS.showText: + case OPS.showSpacedText: + case OPS.nextLineShowText: + case OPS.nextLineSetSpacingShowText: + breakLoop = true; + break; + } + } + } catch (reason) { + warn(`parseAppearanceStream - ignoring errors: "${reason}".`); + } + this.stream.reset(); + delete result.scaleFactor; + delete result.fillColorSpace; + return result; + } + get _localColorSpaceCache() { + return shadow(this, "_localColorSpaceCache", new LocalColorSpaceCache()); + } + get _pdfFunctionFactory() { + const pdfFunctionFactory = new PDFFunctionFactory({ + xref: this.xref, + isEvalSupported: this.evaluatorOptions.isEvalSupported + }); + return shadow(this, "_pdfFunctionFactory", pdfFunctionFactory); + } +} +function parseAppearanceStream(stream, evaluatorOptions, xref, globalColorSpaceCache) { + return new AppearanceStreamEvaluator(stream, evaluatorOptions, xref, globalColorSpaceCache).parse(); +} +function getPdfColor(color, isFill) { + if (color[0] === color[1] && color[1] === color[2]) { + const gray = color[0] / 255; + return `${numberToString(gray)} ${isFill ? "g" : "G"}`; + } + return Array.from(color, c => numberToString(c / 255)).join(" ") + ` ${isFill ? "rg" : "RG"}`; +} +function createDefaultAppearance({ + fontSize, + fontName, + fontColor +}) { + return `/${escapePDFName(fontName)} ${fontSize} Tf ${getPdfColor(fontColor, true)}`; +} +class FakeUnicodeFont { + static #fontNameId = 1; + constructor(xref, fontFamily) { + this.xref = xref; + this.widths = null; + this.firstChar = Infinity; + this.lastChar = -Infinity; + this.fontFamily = fontFamily; + const canvas = new OffscreenCanvas(1, 1); + this.ctxMeasure = canvas.getContext("2d", { + willReadFrequently: true + }); + this.fontName = Name.get(`InvalidPDFjsFont_${fontFamily}_${FakeUnicodeFont.#fontNameId++}`); + } + get fontDescriptorRef() { + if (!FakeUnicodeFont._fontDescriptorRef) { + const fontDescriptor = new Dict(this.xref); + fontDescriptor.setIfName("Type", "FontDescriptor"); + fontDescriptor.set("FontName", this.fontName); + fontDescriptor.set("FontFamily", "MyriadPro Regular"); + fontDescriptor.set("FontBBox", [0, 0, 0, 0]); + fontDescriptor.setIfName("FontStretch", "Normal"); + fontDescriptor.set("FontWeight", 400); + fontDescriptor.set("ItalicAngle", 0); + FakeUnicodeFont._fontDescriptorRef = this.xref.getNewPersistentRef(fontDescriptor); + } + return FakeUnicodeFont._fontDescriptorRef; + } + get descendantFontRef() { + const descendantFont = new Dict(this.xref); + descendantFont.set("BaseFont", this.fontName); + descendantFont.setIfName("Type", "Font"); + descendantFont.setIfName("Subtype", "CIDFontType0"); + descendantFont.setIfName("CIDToGIDMap", "Identity"); + descendantFont.set("FirstChar", this.firstChar); + descendantFont.set("LastChar", this.lastChar); + descendantFont.set("FontDescriptor", this.fontDescriptorRef); + descendantFont.set("DW", 1000); + const widths = []; + const chars = [...this.widths].sort(); + let currentChar = null; + let currentWidths = null; + for (const [char, width] of chars) { + if (!currentChar) { + currentChar = char; + currentWidths = [width]; + continue; + } + if (char === currentChar + currentWidths.length) { + currentWidths.push(width); + } else { + widths.push(currentChar, currentWidths); + currentChar = char; + currentWidths = [width]; + } + } + if (currentChar) { + widths.push(currentChar, currentWidths); + } + descendantFont.set("W", widths); + const cidSystemInfo = new Dict(this.xref); + cidSystemInfo.set("Ordering", "Identity"); + cidSystemInfo.set("Registry", "Adobe"); + cidSystemInfo.set("Supplement", 0); + descendantFont.set("CIDSystemInfo", cidSystemInfo); + return this.xref.getNewPersistentRef(descendantFont); + } + get baseFontRef() { + const baseFont = new Dict(this.xref); + baseFont.set("BaseFont", this.fontName); + baseFont.setIfName("Type", "Font"); + baseFont.setIfName("Subtype", "Type0"); + baseFont.setIfName("Encoding", "Identity-H"); + baseFont.set("DescendantFonts", [this.descendantFontRef]); + baseFont.setIfName("ToUnicode", "Identity-H"); + return this.xref.getNewPersistentRef(baseFont); + } + get resources() { + const resources = new Dict(this.xref); + const font = new Dict(this.xref); + font.set(this.fontName.name, this.baseFontRef); + resources.set("Font", font); + return resources; + } + _createContext() { + this.widths = new Map(); + this.ctxMeasure.font = `1000px ${this.fontFamily}`; + return this.ctxMeasure; + } + createFontResources(text) { + const ctx = this._createContext(); + for (const line of text.split(/\r\n?|\n/)) { + for (const char of line.split("")) { + const code = char.charCodeAt(0); + if (this.widths.has(code)) { + continue; + } + const metrics = ctx.measureText(char); + const width = Math.ceil(metrics.width); + this.widths.set(code, width); + this.firstChar = Math.min(code, this.firstChar); + this.lastChar = Math.max(code, this.lastChar); + } + } + return this.resources; + } + static getFirstPositionInfo(rect, rotation, fontSize) { + const [x1, y1, x2, y2] = rect; + let w = x2 - x1; + let h = y2 - y1; + if (rotation % 180 !== 0) { + [w, h] = [h, w]; + } + const lineHeight = LINE_FACTOR * fontSize; + const lineDescent = LINE_DESCENT_FACTOR * fontSize; + return { + coords: [0, h + lineDescent - lineHeight], + bbox: [0, 0, w, h], + matrix: rotation !== 0 ? getRotationMatrix(rotation, h, lineHeight) : undefined + }; + } + createAppearance(text, rect, rotation, fontSize, bgColor, strokeAlpha) { + const ctx = this._createContext(); + const lines = []; + let maxWidth = -Infinity; + for (const line of text.split(/\r\n?|\n/)) { + lines.push(line); + const lineWidth = ctx.measureText(line).width; + maxWidth = Math.max(maxWidth, lineWidth); + for (const code of codePointIter(line)) { + const char = String.fromCodePoint(code); + let width = this.widths.get(code); + if (width === undefined) { + const metrics = ctx.measureText(char); + width = Math.ceil(metrics.width); + this.widths.set(code, width); + this.firstChar = Math.min(code, this.firstChar); + this.lastChar = Math.max(code, this.lastChar); + } + } + } + maxWidth *= fontSize / 1000; + const [x1, y1, x2, y2] = rect; + let w = x2 - x1; + let h = y2 - y1; + if (rotation % 180 !== 0) { + [w, h] = [h, w]; + } + let hscale = 1; + if (maxWidth > w) { + hscale = w / maxWidth; + } + let vscale = 1; + const lineHeight = LINE_FACTOR * fontSize; + const lineDescent = LINE_DESCENT_FACTOR * fontSize; + const maxHeight = lineHeight * lines.length; + if (maxHeight > h) { + vscale = h / maxHeight; + } + const fscale = Math.min(hscale, vscale); + const newFontSize = fontSize * fscale; + const buffer = ["q", `0 0 ${numberToString(w)} ${numberToString(h)} re W n`, `BT`, `1 0 0 1 0 ${numberToString(h + lineDescent)} Tm 0 Tc ${getPdfColor(bgColor, true)}`, `/${this.fontName.name} ${numberToString(newFontSize)} Tf`]; + const { + resources + } = this; + strokeAlpha = typeof strokeAlpha === "number" && strokeAlpha >= 0 && strokeAlpha <= 1 ? strokeAlpha : 1; + if (strokeAlpha !== 1) { + buffer.push("/R0 gs"); + const extGState = new Dict(this.xref); + const r0 = new Dict(this.xref); + r0.set("ca", strokeAlpha); + r0.set("CA", strokeAlpha); + r0.setIfName("Type", "ExtGState"); + extGState.set("R0", r0); + resources.set("ExtGState", extGState); + } + const vShift = numberToString(lineHeight); + for (const line of lines) { + buffer.push(`0 -${vShift} Td <${stringToUTF16HexString(line)}> Tj`); + } + buffer.push("ET", "Q"); + const appearance = buffer.join("\n"); + const appearanceStreamDict = new Dict(this.xref); + appearanceStreamDict.setIfName("Subtype", "Form"); + appearanceStreamDict.setIfName("Type", "XObject"); + appearanceStreamDict.set("BBox", [0, 0, w, h]); + appearanceStreamDict.set("Length", appearance.length); + appearanceStreamDict.set("Resources", resources); + if (rotation) { + const matrix = getRotationMatrix(rotation, w, h); + appearanceStreamDict.set("Matrix", matrix); + } + const ap = new StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } +} + +;// ./src/shared/scripting_utils.js +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} +function scaleAndClamp(x) { + return Math.max(0, Math.min(255, 255 * x)); +} +class ColorConverters { + static CMYK_G([c, y, m, k]) { + return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; + } + static G_CMYK([g]) { + return ["CMYK", 0, 0, 0, 1 - g]; + } + static G_RGB([g]) { + return ["RGB", g, g, g]; + } + static G_rgb([g]) { + g = scaleAndClamp(g); + return [g, g, g]; + } + static G_HTML([g]) { + const G = makeColorComp(g); + return `#${G}${G}${G}`; + } + static RGB_G([r, g, b]) { + return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; + } + static RGB_rgb(color) { + return color.map(scaleAndClamp); + } + static RGB_HTML(color) { + return `#${color.map(makeColorComp).join("")}`; + } + static T_HTML() { + return "#00000000"; + } + static T_rgb() { + return [null]; + } + static CMYK_RGB([c, y, m, k]) { + return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; + } + static CMYK_rgb([c, y, m, k]) { + return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))]; + } + static CMYK_HTML(components) { + const rgb = this.CMYK_RGB(components).slice(1); + return this.RGB_HTML(rgb); + } + static RGB_CMYK([r, g, b]) { + const c = 1 - r; + const m = 1 - g; + const y = 1 - b; + const k = Math.min(c, m, y); + return ["CMYK", c, m, y, k]; + } +} +const DateFormats = ["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"]; +const TimeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"]; + +;// ./src/core/name_number_tree.js + + +class NameOrNumberTree { + constructor(root, xref, type) { + this.root = root; + this.xref = xref; + this._type = type; + } + getAll(isRaw = false) { + const map = new Map(); + if (!this.root) { + return map; + } + const xref = this.xref; + const processed = new RefSet(); + if (this.root instanceof Ref) { + processed.put(this.root); + } + const queue = [this.root]; + while (queue.length > 0) { + const obj = xref.fetchIfRef(queue.shift()); + if (!(obj instanceof Dict)) { + continue; + } + if (obj.has("Kids")) { + const kids = obj.get("Kids"); + if (!Array.isArray(kids)) { + continue; + } + for (const kid of kids) { + if (kid instanceof Ref) { + if (processed.has(kid)) { + throw new FormatError(`Duplicate entry in "${this._type}" tree.`); + } + processed.put(kid); + } + queue.push(kid); + } + continue; + } + const entries = obj.get(this._type); + if (!Array.isArray(entries)) { + continue; + } + for (let i = 0, ii = entries.length; i < ii; i += 2) { + map.set(xref.fetchIfRef(entries[i]), isRaw ? entries[i + 1] : xref.fetchIfRef(entries[i + 1])); + } + } + return map; + } + getRaw(key) { + if (!this.root) { + return null; + } + const xref = this.xref; + let kidsOrEntries = xref.fetchIfRef(this.root); + let loopCount = 0; + const MAX_LEVELS = 10; + while (kidsOrEntries.has("Kids")) { + if (++loopCount > MAX_LEVELS) { + warn(`Search depth limit reached for "${this._type}" tree.`); + return null; + } + const kids = kidsOrEntries.get("Kids"); + if (!Array.isArray(kids)) { + return null; + } + let l = 0, + r = kids.length - 1; + while (l <= r) { + const m = l + r >> 1; + const kid = xref.fetchIfRef(kids[m]); + const limits = kid.get("Limits"); + if (key < xref.fetchIfRef(limits[0])) { + r = m - 1; + } else if (key > xref.fetchIfRef(limits[1])) { + l = m + 1; + } else { + kidsOrEntries = kid; + break; + } + } + if (l > r) { + return null; + } + } + const entries = kidsOrEntries.get(this._type); + if (Array.isArray(entries)) { + let l = 0, + r = entries.length - 2; + while (l <= r) { + const tmp = l + r >> 1, + m = tmp + (tmp & 1); + const currentKey = xref.fetchIfRef(entries[m]); + if (key < currentKey) { + r = m - 2; + } else if (key > currentKey) { + l = m + 2; + } else { + return entries[m + 1]; + } + } + } + return null; + } + get(key) { + return this.xref.fetchIfRef(this.getRaw(key)); + } +} +class NameTree extends NameOrNumberTree { + constructor(root, xref) { + super(root, xref, "Names"); + } +} +class NumberTree extends NameOrNumberTree { + constructor(root, xref) { + super(root, xref, "Nums"); + } +} + +;// ./src/core/cleanup_helper.js + + + + + +function clearGlobalCaches() { + clearPatternCaches(); + clearPrimitiveCaches(); + clearUnicodeCaches(); + JBig2CCITTFaxWasmImage.cleanup(); + JpxImage.cleanup(); +} + +;// ./src/core/file_spec.js + + + +function pickPlatformItem(dict) { + if (dict instanceof Dict) { + for (const key of ["UF", "F", "Unix", "Mac", "DOS"]) { + if (dict.has(key)) { + return dict.get(key); + } + } + } + return null; +} +class FileSpec { + #contentAvailable = false; + constructor(root, skipContent = false) { + if (!(root instanceof Dict)) { + return; + } + this.root = root; + if (root.has("FS")) { + this.fs = root.get("FS"); + } + if (root.has("RF")) { + warn("Related file specifications are not supported"); + } + if (!skipContent) { + if (root.has("EF")) { + this.#contentAvailable = true; + } else { + warn("Non-embedded file specifications are not supported"); + } + } + } + get filename() { + const item = pickPlatformItem(this.root); + if (item && typeof item === "string") { + return stringToPDFString(item, true).replaceAll("\\\\", "\\").replaceAll("\\/", "/").replaceAll("\\", "/"); + } + return ""; + } + get content() { + if (!this.#contentAvailable) { + return null; + } + const ef = pickPlatformItem(this.root?.get("EF")); + if (ef instanceof BaseStream) { + return ef.getBytes(); + } + warn("Embedded file specification points to non-existing/invalid content"); + return null; + } + get description() { + const desc = this.root?.get("Desc"); + if (desc && typeof desc === "string") { + return stringToPDFString(desc); + } + return ""; + } + get serializable() { + const { + filename, + content, + description + } = this; + return { + rawFilename: filename, + filename: stripPath(filename) || "unnamed", + content, + description + }; + } +} + +;// ./src/core/xml_parser.js + +const XMLParserErrorCode = { + NoError: 0, + EndOfDocument: -1, + UnterminatedCdat: -2, + UnterminatedXmlDeclaration: -3, + UnterminatedDoctypeDeclaration: -4, + UnterminatedComment: -5, + MalformedElement: -6, + OutOfMemory: -7, + UnterminatedAttributeValue: -8, + UnterminatedElement: -9, + ElementNeverBegun: -10 +}; +function isWhitespace(s, index) { + const ch = s[index]; + return ch === " " || ch === "\n" || ch === "\r" || ch === "\t"; +} +function isWhitespaceString(s) { + for (let i = 0, ii = s.length; i < ii; i++) { + if (!isWhitespace(s, i)) { + return false; + } + } + return true; +} +class XMLParserBase { + _resolveEntities(s) { + return s.replaceAll(/&([^;]+);/g, (all, entity) => { + if (entity.substring(0, 2) === "#x") { + return String.fromCodePoint(parseInt(entity.substring(2), 16)); + } else if (entity.substring(0, 1) === "#") { + return String.fromCodePoint(parseInt(entity.substring(1), 10)); + } + switch (entity) { + case "lt": + return "<"; + case "gt": + return ">"; + case "amp": + return "&"; + case "quot": + return '"'; + case "apos": + return "'"; + } + return this.onResolveEntity(entity); + }); + } + _parseContent(s, start) { + const attributes = []; + let pos = start; + function skipWs() { + while (pos < s.length && isWhitespace(s, pos)) { + ++pos; + } + } + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") { + ++pos; + } + const name = s.substring(start, pos); + skipWs(); + while (pos < s.length && s[pos] !== ">" && s[pos] !== "/" && s[pos] !== "?") { + skipWs(); + let attrName = "", + attrValue = ""; + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== "=") { + attrName += s[pos]; + ++pos; + } + skipWs(); + if (s[pos] !== "=") { + return null; + } + ++pos; + skipWs(); + const attrEndChar = s[pos]; + if (attrEndChar !== '"' && attrEndChar !== "'") { + return null; + } + const attrEndIndex = s.indexOf(attrEndChar, ++pos); + if (attrEndIndex < 0) { + return null; + } + attrValue = s.substring(pos, attrEndIndex); + attributes.push({ + name: attrName, + value: this._resolveEntities(attrValue) + }); + pos = attrEndIndex + 1; + skipWs(); + } + return { + name, + attributes, + parsed: pos - start + }; + } + _parseProcessingInstruction(s, start) { + let pos = start; + function skipWs() { + while (pos < s.length && isWhitespace(s, pos)) { + ++pos; + } + } + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "?" && s[pos] !== "/") { + ++pos; + } + const name = s.substring(start, pos); + skipWs(); + const attrStart = pos; + while (pos < s.length && (s[pos] !== "?" || s[pos + 1] !== ">")) { + ++pos; + } + const value = s.substring(attrStart, pos); + return { + name, + value, + parsed: pos - start + }; + } + parseXml(s) { + let i = 0; + while (i < s.length) { + const ch = s[i]; + let j = i; + if (ch === "<") { + ++j; + const ch2 = s[j]; + let q; + switch (ch2) { + case "/": + ++j; + q = s.indexOf(">", j); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedElement); + return; + } + this.onEndElement(s.substring(j, q)); + j = q + 1; + break; + case "?": + ++j; + const pi = this._parseProcessingInstruction(s, j); + if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== "?>") { + this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration); + return; + } + this.onPi(pi.name, pi.value); + j += pi.parsed + 2; + break; + case "!": + if (s.substring(j + 1, j + 3) === "--") { + q = s.indexOf("-->", j + 3); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedComment); + return; + } + this.onComment(s.substring(j + 3, q)); + j = q + 3; + } else if (s.substring(j + 1, j + 8) === "[CDATA[") { + q = s.indexOf("]]>", j + 8); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedCdat); + return; + } + this.onCdata(s.substring(j + 8, q)); + j = q + 3; + } else if (s.substring(j + 1, j + 8) === "DOCTYPE") { + const q2 = s.indexOf("[", j + 8); + let complexDoctype = false; + q = s.indexOf(">", j + 8); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); + return; + } + if (q2 > 0 && q > q2) { + q = s.indexOf("]>", j + 8); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); + return; + } + complexDoctype = true; + } + const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0)); + this.onDoctype(doctypeContent); + j = q + (complexDoctype ? 2 : 1); + } else { + this.onError(XMLParserErrorCode.MalformedElement); + return; + } + break; + default: + const content = this._parseContent(s, j); + if (content === null) { + this.onError(XMLParserErrorCode.MalformedElement); + return; + } + let isClosed = false; + if (s.substring(j + content.parsed, j + content.parsed + 2) === "/>") { + isClosed = true; + } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== ">") { + this.onError(XMLParserErrorCode.UnterminatedElement); + return; + } + this.onBeginElement(content.name, content.attributes, isClosed); + j += content.parsed + (isClosed ? 2 : 1); + break; + } + } else { + while (j < s.length && s[j] !== "<") { + j++; + } + const text = s.substring(i, j); + this.onText(this._resolveEntities(text)); + } + i = j; + } + } + onResolveEntity(name) { + return `&${name};`; + } + onPi(name, value) {} + onComment(text) {} + onCdata(text) {} + onDoctype(doctypeContent) {} + onText(text) {} + onBeginElement(name, attributes, isEmpty) {} + onEndElement(name) {} + onError(code) {} +} +class SimpleDOMNode { + constructor(nodeName, nodeValue) { + this.nodeName = nodeName; + this.nodeValue = nodeValue; + Object.defineProperty(this, "parentNode", { + value: null, + writable: true + }); + } + get firstChild() { + return this.childNodes?.[0]; + } + get nextSibling() { + const childNodes = this.parentNode.childNodes; + if (!childNodes) { + return undefined; + } + const index = childNodes.indexOf(this); + if (index === -1) { + return undefined; + } + return childNodes[index + 1]; + } + get textContent() { + if (!this.childNodes) { + return this.nodeValue || ""; + } + return this.childNodes.map(child => child.textContent).join(""); + } + get children() { + return this.childNodes || []; + } + hasChildNodes() { + return this.childNodes?.length > 0; + } + searchNode(paths, pos) { + if (pos >= paths.length) { + return this; + } + const component = paths[pos]; + if (component.name.startsWith("#") && pos < paths.length - 1) { + return this.searchNode(paths, pos + 1); + } + const stack = []; + let node = this; + while (true) { + if (component.name === node.nodeName) { + if (component.pos === 0) { + const res = node.searchNode(paths, pos + 1); + if (res !== null) { + return res; + } + } else if (stack.length === 0) { + return null; + } else { + const [parent] = stack.pop(); + let siblingPos = 0; + for (const child of parent.childNodes) { + if (component.name === child.nodeName) { + if (siblingPos === component.pos) { + return child.searchNode(paths, pos + 1); + } + siblingPos++; + } + } + return node.searchNode(paths, pos + 1); + } + } + if (node.childNodes?.length > 0) { + stack.push([node, 0]); + node = node.childNodes[0]; + } else if (stack.length === 0) { + return null; + } else { + while (stack.length !== 0) { + const [parent, currentPos] = stack.pop(); + const newPos = currentPos + 1; + if (newPos < parent.childNodes.length) { + stack.push([parent, newPos]); + node = parent.childNodes[newPos]; + break; + } + } + if (stack.length === 0) { + return null; + } + } + } + } + dump(buffer) { + if (this.nodeName === "#text") { + buffer.push(encodeToXmlString(this.nodeValue)); + return; + } + buffer.push(`<${this.nodeName}`); + if (this.attributes) { + for (const attribute of this.attributes) { + buffer.push(` ${attribute.name}="${encodeToXmlString(attribute.value)}"`); + } + } + if (this.hasChildNodes()) { + buffer.push(">"); + for (const child of this.childNodes) { + child.dump(buffer); + } + buffer.push(``); + } else if (this.nodeValue) { + buffer.push(`>${encodeToXmlString(this.nodeValue)}`); + } else { + buffer.push("/>"); + } + } +} +class SimpleXMLParser extends XMLParserBase { + constructor({ + hasAttributes = false, + lowerCaseName = false + }) { + super(); + this._currentFragment = null; + this._stack = null; + this._errorCode = XMLParserErrorCode.NoError; + this._hasAttributes = hasAttributes; + this._lowerCaseName = lowerCaseName; + } + parseFromString(data) { + this._currentFragment = []; + this._stack = []; + this._errorCode = XMLParserErrorCode.NoError; + this.parseXml(data); + if (this._errorCode !== XMLParserErrorCode.NoError) { + return undefined; + } + const [documentElement] = this._currentFragment; + if (!documentElement) { + return undefined; + } + return { + documentElement + }; + } + onText(text) { + if (isWhitespaceString(text)) { + return; + } + const node = new SimpleDOMNode("#text", text); + this._currentFragment.push(node); + } + onCdata(text) { + const node = new SimpleDOMNode("#text", text); + this._currentFragment.push(node); + } + onBeginElement(name, attributes, isEmpty) { + if (this._lowerCaseName) { + name = name.toLowerCase(); + } + const node = new SimpleDOMNode(name); + node.childNodes = []; + if (this._hasAttributes) { + node.attributes = attributes; + } + this._currentFragment.push(node); + if (isEmpty) { + return; + } + this._stack.push(this._currentFragment); + this._currentFragment = node.childNodes; + } + onEndElement(name) { + this._currentFragment = this._stack.pop() || []; + const lastElement = this._currentFragment.at(-1); + if (!lastElement) { + return null; + } + for (const childNode of lastElement.childNodes) { + childNode.parentNode = lastElement; + } + return lastElement; + } + onError(code) { + this._errorCode = code; + } +} + +;// ./src/core/metadata_parser.js + +class MetadataParser { + constructor(data) { + data = this._repair(data); + const parser = new SimpleXMLParser({ + lowerCaseName: true + }); + const xmlDocument = parser.parseFromString(data); + this._metadataMap = new Map(); + this._data = data; + if (xmlDocument) { + this._parse(xmlDocument); + } + } + _repair(data) { + return data.replace(/^[^<]+/, "").replaceAll(/>\\376\\377([^<]+)/g, function (all, codes) { + const bytes = codes.replaceAll(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { + return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1); + }).replaceAll(/&(amp|apos|gt|lt|quot);/g, function (str, name) { + switch (name) { + case "amp": + return "&"; + case "apos": + return "'"; + case "gt": + return ">"; + case "lt": + return "<"; + case "quot": + return '"'; + } + throw new Error(`_repair: ${name} isn't defined.`); + }); + const charBuf = [">"]; + for (let i = 0, ii = bytes.length; i < ii; i += 2) { + const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); + if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) { + charBuf.push(String.fromCharCode(code)); + } else { + charBuf.push("&#x" + (0x10000 + code).toString(16).substring(1) + ";"); + } + } + return charBuf.join(""); + }); + } + _getSequence(entry) { + const name = entry.nodeName; + if (name !== "rdf:bag" && name !== "rdf:seq" && name !== "rdf:alt") { + return null; + } + return entry.childNodes.filter(node => node.nodeName === "rdf:li"); + } + _parseArray(entry) { + if (!entry.hasChildNodes()) { + return; + } + const [seqNode] = entry.childNodes; + const sequence = this._getSequence(seqNode) || []; + this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim())); + } + _parse(xmlDocument) { + let rdf = xmlDocument.documentElement; + if (rdf.nodeName !== "rdf:rdf") { + rdf = rdf.firstChild; + while (rdf && rdf.nodeName !== "rdf:rdf") { + rdf = rdf.nextSibling; + } + } + if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) { + return; + } + for (const desc of rdf.childNodes) { + if (desc.nodeName !== "rdf:description") { + continue; + } + for (const entry of desc.childNodes) { + const name = entry.nodeName; + switch (name) { + case "#text": + continue; + case "dc:creator": + case "dc:subject": + this._parseArray(entry); + continue; + } + this._metadataMap.set(name, entry.textContent.trim()); + } + } + } + get serializable() { + return { + parsedData: this._metadataMap, + rawData: this._data + }; + } +} + +;// ./src/core/struct_tree.js + + + + + +const MAX_DEPTH = 40; +const StructElementType = { + PAGE_CONTENT: 1, + STREAM_CONTENT: 2, + OBJECT: 3, + ANNOTATION: 4, + ELEMENT: 5 +}; +class StructTreeRoot { + constructor(xref, rootDict, rootRef) { + this.xref = xref; + this.dict = rootDict; + this.ref = rootRef instanceof Ref ? rootRef : null; + this.roleMap = new Map(); + this.structParentIds = null; + this.kidRefToPosition = undefined; + this.parentTree = null; + } + getKidPosition(kidRef) { + if (this.kidRefToPosition === undefined) { + const obj = this.dict.get("K"); + if (Array.isArray(obj)) { + const map = this.kidRefToPosition = new Map(); + for (let i = 0, ii = obj.length; i < ii; i++) { + const ref = obj[i]; + if (ref) { + map.set(ref.toString(), i); + } + } + } else if (obj instanceof Dict) { + this.kidRefToPosition = new Map([[obj.objId, 0]]); + } else if (!obj) { + this.kidRefToPosition = new Map(); + } else { + this.kidRefToPosition = null; + } + } + return this.kidRefToPosition ? this.kidRefToPosition.get(kidRef) ?? NaN : -1; + } + init() { + this.readRoleMap(); + const parentTree = this.dict.get("ParentTree"); + if (!parentTree) { + return; + } + this.parentTree = new NumberTree(parentTree, this.xref); + } + #addIdToPage(pageRef, id, type) { + if (!(pageRef instanceof Ref) || id < 0) { + return; + } + this.structParentIds ||= new RefSetCache(); + let ids = this.structParentIds.get(pageRef); + if (!ids) { + ids = []; + this.structParentIds.put(pageRef, ids); + } + ids.push([id, type]); + } + addAnnotationIdToPage(pageRef, id) { + this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION); + } + readRoleMap() { + const roleMapDict = this.dict.get("RoleMap"); + if (!(roleMapDict instanceof Dict)) { + return; + } + for (const [key, value] of roleMapDict) { + if (value instanceof Name) { + this.roleMap.set(key, value.name); + } + } + } + static async canCreateStructureTree({ + catalogRef, + pdfManager, + newAnnotationsByPage + }) { + if (!(catalogRef instanceof Ref)) { + warn("Cannot save the struct tree: no catalog reference."); + return false; + } + let nextKey = 0; + let hasNothingToUpdate = true; + for (const [pageIndex, elements] of newAnnotationsByPage) { + const { + ref: pageRef + } = await pdfManager.getPage(pageIndex); + if (!(pageRef instanceof Ref)) { + warn(`Cannot save the struct tree: page ${pageIndex} has no ref.`); + hasNothingToUpdate = true; + break; + } + for (const element of elements) { + if (element.accessibilityData?.type) { + element.parentTreeId = nextKey++; + hasNothingToUpdate = false; + } + } + } + if (hasNothingToUpdate) { + for (const elements of newAnnotationsByPage.values()) { + for (const element of elements) { + delete element.parentTreeId; + } + } + return false; + } + return true; + } + static async createStructureTree({ + newAnnotationsByPage, + xref, + catalogRef, + pdfManager, + changes + }) { + const root = await pdfManager.ensureCatalog("cloneDict"); + const cache = new RefSetCache(); + cache.put(catalogRef, root); + const structTreeRootRef = xref.getNewTemporaryRef(); + root.set("StructTreeRoot", structTreeRootRef); + const structTreeRoot = new Dict(xref); + structTreeRoot.set("Type", Name.get("StructTreeRoot")); + const parentTreeRef = xref.getNewTemporaryRef(); + structTreeRoot.set("ParentTree", parentTreeRef); + const kids = []; + structTreeRoot.set("K", kids); + cache.put(structTreeRootRef, structTreeRoot); + const parentTree = new Dict(xref); + const nums = []; + parentTree.set("Nums", nums); + const nextKey = await this.#writeKids({ + newAnnotationsByPage, + structTreeRootRef, + structTreeRoot: null, + kids, + nums, + xref, + pdfManager, + changes, + cache + }); + structTreeRoot.set("ParentTreeNextKey", nextKey); + cache.put(parentTreeRef, parentTree); + for (const [ref, obj] of cache.items()) { + changes.put(ref, { + data: obj + }); + } + } + async canUpdateStructTree({ + pdfManager, + newAnnotationsByPage + }) { + if (!this.ref) { + warn("Cannot update the struct tree: no root reference."); + return false; + } + let nextKey = this.dict.get("ParentTreeNextKey"); + if (!Number.isInteger(nextKey) || nextKey < 0) { + warn("Cannot update the struct tree: invalid next key."); + return false; + } + const parentTree = this.dict.get("ParentTree"); + if (!(parentTree instanceof Dict)) { + warn("Cannot update the struct tree: ParentTree isn't a dict."); + return false; + } + const nums = parentTree.get("Nums"); + if (!Array.isArray(nums)) { + warn("Cannot update the struct tree: nums isn't an array."); + return false; + } + const numberTree = new NumberTree(parentTree, this.xref); + for (const pageIndex of newAnnotationsByPage.keys()) { + const { + pageDict + } = await pdfManager.getPage(pageIndex); + if (!pageDict.has("StructParents")) { + continue; + } + const id = pageDict.get("StructParents"); + if (!Number.isInteger(id) || !Array.isArray(numberTree.get(id))) { + warn(`Cannot save the struct tree: page ${pageIndex} has a wrong id.`); + return false; + } + } + let hasNothingToUpdate = true; + for (const [pageIndex, elements] of newAnnotationsByPage) { + const { + pageDict + } = await pdfManager.getPage(pageIndex); + StructTreeRoot.#collectParents({ + elements, + xref: this.xref, + pageDict, + numberTree + }); + for (const element of elements) { + if (element.accessibilityData?.type) { + if (!(element.accessibilityData.structParent >= 0)) { + element.parentTreeId = nextKey++; + } + hasNothingToUpdate = false; + } + } + } + if (hasNothingToUpdate) { + for (const elements of newAnnotationsByPage.values()) { + for (const element of elements) { + delete element.parentTreeId; + delete element.structTreeParent; + } + } + return false; + } + return true; + } + async updateStructureTree({ + newAnnotationsByPage, + pdfManager, + changes + }) { + const { + ref: structTreeRootRef, + xref + } = this; + const structTreeRoot = this.dict.clone(); + const cache = new RefSetCache(); + cache.put(structTreeRootRef, structTreeRoot); + let parentTreeRef = structTreeRoot.getRaw("ParentTree"); + let parentTree; + if (parentTreeRef instanceof Ref) { + parentTree = xref.fetch(parentTreeRef); + } else { + parentTree = parentTreeRef; + parentTreeRef = xref.getNewTemporaryRef(); + structTreeRoot.set("ParentTree", parentTreeRef); + } + parentTree = parentTree.clone(); + cache.put(parentTreeRef, parentTree); + let nums = parentTree.getRaw("Nums"); + let numsRef = null; + if (nums instanceof Ref) { + numsRef = nums; + nums = xref.fetch(numsRef); + } + nums = nums.slice(); + if (!numsRef) { + parentTree.set("Nums", nums); + } + const newNextKey = await StructTreeRoot.#writeKids({ + newAnnotationsByPage, + structTreeRootRef, + structTreeRoot: this, + kids: null, + nums, + xref, + pdfManager, + changes, + cache + }); + if (newNextKey === -1) { + return; + } + structTreeRoot.set("ParentTreeNextKey", newNextKey); + if (numsRef) { + cache.put(numsRef, nums); + } + for (const [ref, obj] of cache.items()) { + changes.put(ref, { + data: obj + }); + } + } + static async #writeKids({ + newAnnotationsByPage, + structTreeRootRef, + structTreeRoot, + kids, + nums, + xref, + pdfManager, + changes, + cache + }) { + const objr = Name.get("OBJR"); + let nextKey = -1; + let structTreePageObjs; + for (const [pageIndex, elements] of newAnnotationsByPage) { + const page = await pdfManager.getPage(pageIndex); + const { + ref: pageRef + } = page; + const isPageRef = pageRef instanceof Ref; + for (const { + accessibilityData, + ref, + parentTreeId, + structTreeParent + } of elements) { + if (!accessibilityData?.type) { + continue; + } + const { + structParent + } = accessibilityData; + if (structTreeRoot && Number.isInteger(structParent) && structParent >= 0) { + let objs = (structTreePageObjs ||= new Map()).get(pageIndex); + if (objs === undefined) { + const structTreePage = new StructTreePage(structTreeRoot, page.pageDict); + objs = structTreePage.collectObjects(pageRef); + structTreePageObjs.set(pageIndex, objs); + } + const objRef = objs?.get(structParent); + if (objRef) { + const tagDict = xref.fetch(objRef).clone(); + StructTreeRoot.#writeProperties(tagDict, accessibilityData); + changes.put(objRef, { + data: tagDict + }); + continue; + } + } + nextKey = Math.max(nextKey, parentTreeId); + const tagRef = xref.getNewTemporaryRef(); + const tagDict = new Dict(xref); + StructTreeRoot.#writeProperties(tagDict, accessibilityData); + await this.#updateParentTag({ + structTreeParent, + tagDict, + newTagRef: tagRef, + structTreeRootRef, + fallbackKids: kids, + xref, + cache + }); + const objDict = new Dict(xref); + tagDict.set("K", objDict); + objDict.set("Type", objr); + if (isPageRef) { + objDict.set("Pg", pageRef); + } + objDict.set("Obj", ref); + cache.put(tagRef, tagDict); + nums.push(parentTreeId, tagRef); + } + } + return nextKey + 1; + } + static #writeProperties(tagDict, { + type, + title, + lang, + alt, + expanded, + actualText + }) { + tagDict.set("S", Name.get(type)); + if (title) { + tagDict.set("T", stringToAsciiOrUTF16BE(title)); + } + if (lang) { + tagDict.set("Lang", stringToAsciiOrUTF16BE(lang)); + } + if (alt) { + tagDict.set("Alt", stringToAsciiOrUTF16BE(alt)); + } + if (expanded) { + tagDict.set("E", stringToAsciiOrUTF16BE(expanded)); + } + if (actualText) { + tagDict.set("ActualText", stringToAsciiOrUTF16BE(actualText)); + } + } + static #collectParents({ + elements, + xref, + pageDict, + numberTree + }) { + const idToElements = new Map(); + for (const element of elements) { + if (element.structTreeParentId) { + const id = parseInt(element.structTreeParentId.split("_mc")[1], 10); + idToElements.getOrInsertComputed(id, makeArr).push(element); + } + } + const id = pageDict.get("StructParents"); + if (!Number.isInteger(id)) { + return; + } + const parentArray = numberTree.get(id); + const updateElement = (kid, pageKid, kidRef) => { + const elems = idToElements.get(kid); + if (elems) { + const parentRef = pageKid.getRaw("P"); + const parentDict = xref.fetchIfRef(parentRef); + if (parentRef instanceof Ref && parentDict instanceof Dict) { + const params = { + ref: kidRef, + dict: pageKid + }; + for (const element of elems) { + element.structTreeParent = params; + } + } + return true; + } + return false; + }; + for (const kidRef of parentArray) { + if (!(kidRef instanceof Ref)) { + continue; + } + const pageKid = xref.fetch(kidRef); + const k = pageKid.get("K"); + if (Number.isInteger(k)) { + updateElement(k, pageKid, kidRef); + continue; + } + if (!Array.isArray(k)) { + continue; + } + for (let kid of k) { + kid = xref.fetchIfRef(kid); + if (Number.isInteger(kid) && updateElement(kid, pageKid, kidRef)) { + break; + } + if (!(kid instanceof Dict)) { + continue; + } + if (!isName(kid.get("Type"), "MCR")) { + break; + } + const mcid = kid.get("MCID"); + if (Number.isInteger(mcid) && updateElement(mcid, pageKid, kidRef)) { + break; + } + } + } + } + static async #updateParentTag({ + structTreeParent, + tagDict, + newTagRef, + structTreeRootRef, + fallbackKids, + xref, + cache + }) { + let ref = null; + let parentRef; + if (structTreeParent) { + ({ + ref + } = structTreeParent); + parentRef = structTreeParent.dict.getRaw("P") || structTreeRootRef; + } else { + parentRef = structTreeRootRef; + } + tagDict.set("P", parentRef); + const parentDict = xref.fetchIfRef(parentRef); + if (!parentDict) { + fallbackKids.push(newTagRef); + return; + } + let cachedParentDict = cache.get(parentRef); + if (!cachedParentDict) { + cachedParentDict = parentDict.clone(); + cache.put(parentRef, cachedParentDict); + } + const parentKidsRaw = cachedParentDict.getRaw("K"); + let cachedParentKids = parentKidsRaw instanceof Ref ? cache.get(parentKidsRaw) : null; + if (!cachedParentKids) { + cachedParentKids = xref.fetchIfRef(parentKidsRaw); + cachedParentKids = Array.isArray(cachedParentKids) ? cachedParentKids.slice() : [parentKidsRaw]; + const parentKidsRef = xref.getNewTemporaryRef(); + cachedParentDict.set("K", parentKidsRef); + cache.put(parentKidsRef, cachedParentKids); + } + const index = cachedParentKids.indexOf(ref); + cachedParentKids.splice(index >= 0 ? index + 1 : cachedParentKids.length, 0, newTagRef); + } +} +class StructElementNode { + constructor(tree, dict) { + this.tree = tree; + this.xref = tree.xref; + this.dict = dict; + this.kids = []; + this.parseKids(); + } + get role() { + const nameObj = this.dict.get("S"); + const name = nameObj instanceof Name ? nameObj.name : ""; + const { + root + } = this.tree; + return root.roleMap.get(name) ?? name; + } + get mathML() { + let AFs = this.dict.get("AF") || []; + if (!Array.isArray(AFs)) { + AFs = [AFs]; + } + for (let af of AFs) { + af = this.xref.fetchIfRef(af); + if (!(af instanceof Dict)) { + continue; + } + if (!isName(af.get("Type"), "Filespec")) { + continue; + } + if (!isName(af.get("AFRelationship"), "Supplement")) { + continue; + } + const ef = af.get("EF"); + if (!(ef instanceof Dict)) { + continue; + } + const fileStream = ef.get("UF") || ef.get("F"); + if (!(fileStream instanceof BaseStream)) { + continue; + } + if (!isName(fileStream.dict.get("Type"), "EmbeddedFile")) { + continue; + } + if (!isName(fileStream.dict.get("Subtype"), "application/mathml+xml")) { + continue; + } + return stringToUTF8String(fileStream.getString()); + } + const A = this.dict.get("A"); + if (A instanceof Dict) { + const O = A.get("O"); + if (isName(O, "MSFT_Office")) { + const mathml = A.get("MSFT_MathML"); + return mathml ? stringToPDFString(mathml) : null; + } + } + return null; + } + parseKids() { + let pageObjId = null; + const objRef = this.dict.getRaw("Pg"); + if (objRef instanceof Ref) { + pageObjId = objRef.toString(); + } + const kids = this.dict.get("K"); + if (Array.isArray(kids)) { + for (const kid of kids) { + const element = this.parseKid(pageObjId, this.xref.fetchIfRef(kid)); + if (element) { + this.kids.push(element); + } + } + } else { + const element = this.parseKid(pageObjId, kids); + if (element) { + this.kids.push(element); + } + } + } + parseKid(pageObjId, kid) { + if (Number.isInteger(kid)) { + if (this.tree.pageDict.objId !== pageObjId) { + return null; + } + return new StructElement({ + type: StructElementType.PAGE_CONTENT, + mcid: kid, + pageObjId + }); + } + if (!(kid instanceof Dict)) { + return null; + } + const pageRef = kid.getRaw("Pg"); + if (pageRef instanceof Ref) { + pageObjId = pageRef.toString(); + } + const type = kid.get("Type") instanceof Name ? kid.get("Type").name : null; + if (type === "MCR") { + if (this.tree.pageDict.objId !== pageObjId) { + return null; + } + const kidRef = kid.getRaw("Stm"); + return new StructElement({ + type: StructElementType.STREAM_CONTENT, + refObjId: kidRef instanceof Ref ? kidRef.toString() : null, + pageObjId, + mcid: kid.get("MCID") + }); + } + if (type === "OBJR") { + if (this.tree.pageDict.objId !== pageObjId) { + return null; + } + const kidRef = kid.getRaw("Obj"); + return new StructElement({ + type: StructElementType.OBJECT, + refObjId: kidRef instanceof Ref ? kidRef.toString() : null, + pageObjId + }); + } + return new StructElement({ + type: StructElementType.ELEMENT, + dict: kid + }); + } +} +class StructElement { + constructor({ + type, + dict = null, + mcid = null, + pageObjId = null, + refObjId = null + }) { + this.type = type; + this.dict = dict; + this.mcid = mcid; + this.pageObjId = pageObjId; + this.refObjId = refObjId; + this.parentNode = null; + } +} +class StructTreePage { + constructor(structTreeRoot, pageDict) { + this.root = structTreeRoot; + this.xref = structTreeRoot?.xref ?? null; + this.rootDict = structTreeRoot?.dict ?? null; + this.pageDict = pageDict; + this.nodes = []; + } + collectObjects(pageRef) { + if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) { + return null; + } + const parentTree = this.rootDict.get("ParentTree"); + if (!parentTree) { + return null; + } + const ids = this.root.structParentIds?.get(pageRef); + if (!ids) { + return null; + } + const map = new Map(); + const numberTree = new NumberTree(parentTree, this.xref); + for (const [elemId] of ids) { + const obj = numberTree.getRaw(elemId); + if (obj instanceof Ref) { + map.set(elemId, obj); + } + } + return map; + } + parse(pageRef) { + if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) { + return; + } + const { + parentTree + } = this.root; + if (!parentTree) { + return; + } + const id = this.pageDict.get("StructParents"); + const ids = this.root.structParentIds?.get(pageRef); + if (!Number.isInteger(id) && !ids) { + return; + } + const map = new Map(); + if (Number.isInteger(id)) { + const parentArray = parentTree.get(id); + if (Array.isArray(parentArray)) { + for (const ref of parentArray) { + if (ref instanceof Ref) { + this.addNode(this.xref.fetch(ref), map); + } + } + } + } + if (!ids) { + return; + } + for (const [elemId, type] of ids) { + const obj = parentTree.get(elemId); + if (obj) { + const elem = this.addNode(this.xref.fetchIfRef(obj), map); + if (elem?.kids?.length === 1 && elem.kids[0].type === StructElementType.OBJECT) { + elem.kids[0].type = type; + } + } + } + } + addNode(dict, map, level = 0) { + if (level > MAX_DEPTH) { + warn("StructTree MAX_DEPTH reached."); + return null; + } + if (!(dict instanceof Dict)) { + return null; + } + if (map.has(dict)) { + return map.get(dict); + } + const element = new StructElementNode(this, dict); + map.set(dict, element); + switch (element.role) { + case "L": + case "LBody": + case "LI": + case "Table": + case "THead": + case "TBody": + case "TFoot": + case "TR": + { + for (const kid of element.kids) { + if (kid.type === StructElementType.ELEMENT) { + this.addNode(kid.dict, map, level - 1); + } + } + } + } + const parent = dict.get("P"); + if (!(parent instanceof Dict) || isName(parent.get("Type"), "StructTreeRoot")) { + if (!this.addTopLevelNode(dict, element)) { + map.delete(dict); + } + return element; + } + const parentNode = this.addNode(parent, map, level + 1); + if (!parentNode) { + return element; + } + let save = false; + for (const kid of parentNode.kids) { + if (kid.type === StructElementType.ELEMENT && kid.dict === dict) { + kid.parentNode = element; + save = true; + } + } + if (!save) { + map.delete(dict); + } + return element; + } + addTopLevelNode(dict, element) { + const index = this.root.getKidPosition(dict.objId); + if (isNaN(index)) { + return false; + } + if (index !== -1) { + this.nodes[index] = element; + } + return true; + } + get serializable() { + function nodeToSerializable(node, parent, level = 0) { + if (level > MAX_DEPTH) { + warn("StructTree too deep to be fully serialized."); + return; + } + const obj = Object.create(null); + obj.role = node.role; + obj.children = []; + parent.children.push(obj); + let alt = node.dict.get("Alt"); + if (typeof alt !== "string") { + alt = node.dict.get("ActualText"); + } + if (typeof alt === "string") { + obj.alt = stringToPDFString(alt); + } + if (obj.role === "Formula") { + const { + mathML + } = node; + if (mathML) { + obj.mathML = mathML; + } + } + const a = node.dict.get("A"); + if (a instanceof Dict) { + const bbox = lookupNormalRect(a.getArray("BBox"), null); + if (bbox) { + obj.bbox = bbox; + } else { + const width = a.get("Width"); + const height = a.get("Height"); + if (typeof width === "number" && width > 0 && typeof height === "number" && height > 0) { + obj.bbox = [0, 0, width, height]; + } + } + } + const lang = node.dict.get("Lang"); + if (typeof lang === "string") { + obj.lang = stringToPDFString(lang); + } + for (const kid of node.kids) { + const kidElement = kid.type === StructElementType.ELEMENT ? kid.parentNode : null; + if (kidElement) { + nodeToSerializable(kidElement, obj, level + 1); + continue; + } else if (kid.type === StructElementType.PAGE_CONTENT || kid.type === StructElementType.STREAM_CONTENT) { + obj.children.push({ + type: "content", + id: `p${kid.pageObjId}_mc${kid.mcid}` + }); + } else if (kid.type === StructElementType.OBJECT) { + obj.children.push({ + type: "object", + id: kid.refObjId + }); + } else if (kid.type === StructElementType.ANNOTATION) { + obj.children.push({ + type: "annotation", + id: `${AnnotationPrefix}${kid.refObjId}` + }); + } + } + } + const root = Object.create(null); + root.children = []; + root.role = "Root"; + for (const child of this.nodes) { + if (!child) { + continue; + } + nodeToSerializable(child, root); + } + return root; + } +} + +;// ./src/core/catalog.js + + + + + + + + + + + +const isRef = v => v instanceof Ref; +const isValidExplicitDest = _isValidExplicitDest.bind(null, isRef, isName); +function fetchDest(dest) { + if (dest instanceof Dict) { + dest = dest.get("D"); + } + return isValidExplicitDest(dest) ? dest : null; +} +function fetchRemoteDest(action) { + let dest = action.get("D"); + if (dest) { + if (dest instanceof Name) { + dest = dest.name; + } + if (typeof dest === "string") { + return stringToPDFString(dest, true); + } else if (isValidExplicitDest(dest)) { + return JSON.stringify(dest); + } + } + return null; +} +class Catalog { + #actualNumPages = null; + #catDict = null; + builtInCMapCache = new Map(); + fontCache = new RefSetCache(); + globalColorSpaceCache = new GlobalColorSpaceCache(); + globalImageCache = new GlobalImageCache(); + nonBlendModesSet = new RefSet(); + pageDictCache = new RefSetCache(); + pageIndexCache = new RefSetCache(); + pageKidsCountCache = new RefSetCache(); + standardFontDataCache = new Map(); + systemFontCache = new Map(); + constructor(pdfManager, xref) { + this.pdfManager = pdfManager; + this.xref = xref; + this.#catDict = xref.getCatalogObj(); + if (!(this.#catDict instanceof Dict)) { + throw new FormatError("Catalog object is not a dictionary."); + } + this.toplevelPagesDict; + } + cloneDict() { + return this.#catDict.clone(); + } + get version() { + const version = this.#catDict.get("Version"); + if (version instanceof Name) { + if (PDF_VERSION_REGEXP.test(version.name)) { + return shadow(this, "version", version.name); + } + warn(`Invalid PDF catalog version: ${version.name}`); + } + return shadow(this, "version", null); + } + get lang() { + const lang = this.#catDict.get("Lang"); + return shadow(this, "lang", lang && typeof lang === "string" ? stringToPDFString(lang) : null); + } + get needsRendering() { + const needsRendering = this.#catDict.get("NeedsRendering"); + return shadow(this, "needsRendering", typeof needsRendering === "boolean" ? needsRendering : false); + } + get collection() { + let collection = null; + try { + const obj = this.#catDict.get("Collection"); + if (obj instanceof Dict && obj.size > 0) { + collection = obj; + } + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + info("Cannot fetch Collection entry; assuming no collection is present."); + } + return shadow(this, "collection", collection); + } + get acroForm() { + let acroForm = null; + try { + const obj = this.#catDict.get("AcroForm"); + if (obj instanceof Dict && obj.size > 0) { + acroForm = obj; + } + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + info("Cannot fetch AcroForm entry; assuming no forms are present."); + } + return shadow(this, "acroForm", acroForm); + } + get acroFormRef() { + const value = this.#catDict.getRaw("AcroForm"); + return shadow(this, "acroFormRef", value instanceof Ref ? value : null); + } + get metadata() { + const streamRef = this.#catDict.getRaw("Metadata"); + if (!(streamRef instanceof Ref)) { + return shadow(this, "metadata", null); + } + let metadata = null; + try { + const stream = this.xref.fetch(streamRef, !this.xref.encrypt?.encryptMetadata); + if (stream instanceof BaseStream && stream.dict instanceof Dict) { + const type = stream.dict.get("Type"); + const subtype = stream.dict.get("Subtype"); + if (isName(type, "Metadata") && isName(subtype, "XML")) { + const data = stringToUTF8String(stream.getString()); + if (data) { + metadata = new MetadataParser(data).serializable; + } + } + } + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + info(`Skipping invalid Metadata: "${ex}".`); + } + return shadow(this, "metadata", metadata); + } + get markInfo() { + let markInfo = null; + try { + markInfo = this.#readMarkInfo(); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn("Unable to read mark info."); + } + return shadow(this, "markInfo", markInfo); + } + #readMarkInfo() { + const obj = this.#catDict.get("MarkInfo"); + if (!(obj instanceof Dict)) { + return null; + } + const markInfo = { + Marked: false, + UserProperties: false, + Suspects: false + }; + for (const key in markInfo) { + const value = obj.get(key); + if (typeof value === "boolean") { + markInfo[key] = value; + } + } + return markInfo; + } + get hasStructTree() { + return this.#catDict.has("StructTreeRoot"); + } + get structTreeRoot() { + let structTree = null; + try { + structTree = this.#readStructTreeRoot(); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn("Unable read to structTreeRoot info."); + } + return shadow(this, "structTreeRoot", structTree); + } + #readStructTreeRoot() { + const rawObj = this.#catDict.getRaw("StructTreeRoot"); + const obj = this.xref.fetchIfRef(rawObj); + if (!(obj instanceof Dict)) { + return null; + } + const root = new StructTreeRoot(this.xref, obj, rawObj); + root.init(); + return root; + } + get toplevelPagesDict() { + const pagesObj = this.#catDict.get("Pages"); + if (!(pagesObj instanceof Dict)) { + throw new FormatError("Invalid top-level pages dictionary."); + } + return shadow(this, "toplevelPagesDict", pagesObj); + } + get documentOutline() { + let obj = null; + try { + obj = this.#readDocumentOutline(); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn("Unable to read document outline."); + } + return shadow(this, "documentOutline", obj); + } + #readDocumentOutline(options = {}) { + let obj = this.#catDict.get("Outlines"); + if (!(obj instanceof Dict)) { + return null; + } + obj = obj.getRaw("First"); + if (!(obj instanceof Ref)) { + return null; + } + const root = { + items: [] + }; + const queue = [{ + obj, + parent: root + }]; + const processed = new RefSet(); + processed.put(obj); + const xref = this.xref, + blackColor = new Uint8ClampedArray(3); + while (queue.length > 0) { + const i = queue.shift(); + const outlineDict = xref.fetchIfRef(i.obj); + if (outlineDict === null) { + continue; + } + if (!outlineDict.has("Title")) { + warn("Invalid outline item encountered."); + } + const data = { + url: null, + dest: null, + action: null + }; + Catalog.parseDestDictionary({ + destDict: outlineDict, + resultObj: data, + docBaseUrl: this.baseUrl, + docAttachments: this.attachments + }); + const title = outlineDict.get("Title"); + const flags = outlineDict.get("F") || 0; + const color = outlineDict.getArray("C"); + const count = outlineDict.get("Count"); + let rgbColor = blackColor; + if (isNumberArray(color, 3) && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) { + rgbColor = ColorSpaceUtils.rgb.getRgb(color, 0); + } + const outlineItem = { + action: data.action, + attachment: data.attachment, + dest: data.dest, + url: data.url, + unsafeUrl: data.unsafeUrl, + newWindow: data.newWindow, + setOCGState: data.setOCGState, + title: typeof title === "string" ? stringToPDFString(title) : "", + color: rgbColor, + count: Number.isInteger(count) ? count : undefined, + bold: !!(flags & 2), + italic: !!(flags & 1), + items: [] + }; + if (options.keepRawDict) { + outlineItem.rawDict = outlineDict; + } + i.parent.items.push(outlineItem); + obj = outlineDict.getRaw("First"); + if (obj instanceof Ref && !processed.has(obj)) { + queue.push({ + obj, + parent: outlineItem + }); + processed.put(obj); + } + obj = outlineDict.getRaw("Next"); + if (obj instanceof Ref && !processed.has(obj)) { + queue.push({ + obj, + parent: i.parent + }); + processed.put(obj); + } + } + return root.items.length > 0 ? root.items : null; + } + get documentOutlineForEditor() { + let obj = null; + try { + obj = this.#readDocumentOutline({ + keepRawDict: true + }); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn("Unable to read document outline."); + } + return shadow(this, "documentOutlineForEditor", obj); + } + get permissions() { + let permissions = null; + try { + permissions = this.#readPermissions(); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn("Unable to read permissions."); + } + return shadow(this, "permissions", permissions); + } + #readPermissions() { + const encrypt = this.xref.trailer.get("Encrypt"); + if (!(encrypt instanceof Dict)) { + return null; + } + let flags = encrypt.get("P"); + if (typeof flags !== "number") { + return null; + } + flags += 2 ** 32; + const permissions = []; + for (const key in PermissionFlag) { + const value = PermissionFlag[key]; + if (flags & value) { + permissions.push(value); + } + } + return permissions; + } + get optionalContentConfig() { + let config = null; + try { + const properties = this.#catDict.get("OCProperties"); + if (!properties) { + return shadow(this, "optionalContentConfig", null); + } + const defaultConfig = properties.get("D"); + if (!defaultConfig) { + return shadow(this, "optionalContentConfig", null); + } + const groupsData = properties.get("OCGs"); + if (!Array.isArray(groupsData)) { + return shadow(this, "optionalContentConfig", null); + } + const groupRefCache = new RefSetCache(); + for (const groupRef of groupsData) { + if (!(groupRef instanceof Ref) || groupRefCache.has(groupRef)) { + continue; + } + groupRefCache.put(groupRef, this.#readOptionalContentGroup(groupRef)); + } + config = this.#readOptionalContentConfig(defaultConfig, groupRefCache); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn(`Unable to read optional content config: ${ex}`); + } + return shadow(this, "optionalContentConfig", config); + } + #readOptionalContentGroup(groupRef) { + const group = this.xref.fetch(groupRef); + const obj = { + id: groupRef.toString(), + name: null, + intent: null, + usage: { + print: null, + view: null + }, + rbGroups: [] + }; + const name = group.get("Name"); + if (typeof name === "string") { + obj.name = stringToPDFString(name); + } + let intent = group.getArray("Intent"); + if (!Array.isArray(intent)) { + intent = [intent]; + } + if (intent.every(i => i instanceof Name)) { + obj.intent = intent.map(i => i.name); + } + const usage = group.get("Usage"); + if (!(usage instanceof Dict)) { + return obj; + } + const usageObj = obj.usage; + const print = usage.get("Print"); + if (print instanceof Dict) { + const printState = print.get("PrintState"); + if (printState instanceof Name) { + switch (printState.name) { + case "ON": + case "OFF": + usageObj.print = { + printState: printState.name + }; + } + } + } + const view = usage.get("View"); + if (view instanceof Dict) { + const viewState = view.get("ViewState"); + if (viewState instanceof Name) { + switch (viewState.name) { + case "ON": + case "OFF": + usageObj.view = { + viewState: viewState.name + }; + } + } + } + return obj; + } + #readOptionalContentConfig(config, groupRefCache) { + function parseOnOff(refs) { + const onParsed = []; + if (Array.isArray(refs)) { + for (const value of refs) { + if (value instanceof Ref && groupRefCache.has(value)) { + onParsed.push(value.toString()); + } + } + } + return onParsed; + } + function parseOrder(refs, nestedLevels = 0) { + if (!Array.isArray(refs)) { + return null; + } + const order = []; + for (const value of refs) { + if (value instanceof Ref && groupRefCache.has(value)) { + parsedOrderRefs.put(value); + order.push(value.toString()); + continue; + } + const nestedOrder = parseNestedOrder(value, nestedLevels); + if (nestedOrder) { + order.push(nestedOrder); + } + } + if (nestedLevels > 0) { + return order; + } + const hiddenGroups = []; + for (const [groupRef] of groupRefCache.items()) { + if (parsedOrderRefs.has(groupRef)) { + continue; + } + hiddenGroups.push(groupRef.toString()); + } + if (hiddenGroups.length) { + order.push({ + name: null, + order: hiddenGroups + }); + } + return order; + } + function parseNestedOrder(ref, nestedLevels) { + if (++nestedLevels > MAX_NESTED_LEVELS) { + warn("parseNestedOrder - reached MAX_NESTED_LEVELS."); + return null; + } + const value = xref.fetchIfRef(ref); + if (!Array.isArray(value)) { + return null; + } + const nestedName = xref.fetchIfRef(value[0]); + if (typeof nestedName !== "string") { + return null; + } + const nestedOrder = parseOrder(value.slice(1), nestedLevels); + if (!nestedOrder?.length) { + return null; + } + return { + name: stringToPDFString(nestedName), + order: nestedOrder + }; + } + function parseRBGroups(rbGroups) { + if (!Array.isArray(rbGroups)) { + return; + } + for (const value of rbGroups) { + const rbGroup = xref.fetchIfRef(value); + if (!Array.isArray(rbGroup) || !rbGroup.length) { + continue; + } + const parsedRbGroup = new Set(); + for (const ref of rbGroup) { + if (ref instanceof Ref && groupRefCache.has(ref) && !parsedRbGroup.has(ref.toString())) { + parsedRbGroup.add(ref.toString()); + groupRefCache.get(ref).rbGroups.push(parsedRbGroup); + } + } + } + } + const xref = this.xref, + parsedOrderRefs = new RefSet(), + MAX_NESTED_LEVELS = 10; + parseRBGroups(config.get("RBGroups")); + return { + name: typeof config.get("Name") === "string" ? stringToPDFString(config.get("Name")) : null, + creator: typeof config.get("Creator") === "string" ? stringToPDFString(config.get("Creator")) : null, + baseState: config.get("BaseState") instanceof Name ? config.get("BaseState").name : null, + on: parseOnOff(config.get("ON")), + off: parseOnOff(config.get("OFF")), + order: parseOrder(config.get("Order")), + groups: [...groupRefCache] + }; + } + setActualNumPages(num = null) { + this.#actualNumPages = num; + } + get hasActualNumPages() { + return this.#actualNumPages !== null; + } + get _pagesCount() { + const obj = this.toplevelPagesDict.get("Count"); + if (!Number.isInteger(obj)) { + throw new FormatError("Page count in top-level pages dictionary is not an integer."); + } + return shadow(this, "_pagesCount", obj); + } + get numPages() { + return this.#actualNumPages ?? this._pagesCount; + } + get destinations() { + const rawDests = this.#readDests(), + dests = Object.create(null); + for (const obj of rawDests) { + if (obj instanceof NameTree) { + for (const [key, value] of obj.getAll()) { + const dest = fetchDest(value); + if (dest) { + dests[stringToPDFString(key, true)] = dest; + } + } + } else if (obj instanceof Dict) { + for (const [key, value] of obj) { + const dest = fetchDest(value); + if (dest) { + dests[stringToPDFString(key, true)] ||= dest; + } + } + } + } + return shadow(this, "destinations", dests); + } + getDestination(id) { + if (this.hasOwnProperty("destinations")) { + return this.destinations[id] ?? null; + } + const rawDests = this.#readDests(); + for (const obj of rawDests) { + if (obj instanceof NameTree || obj instanceof Dict) { + const dest = fetchDest(obj.get(id)); + if (dest) { + return dest; + } + } + } + if (rawDests.length) { + const dest = this.destinations[id]; + if (dest) { + return dest; + } + } + return null; + } + #readDests() { + const obj = this.#catDict.get("Names"); + const rawDests = []; + if (obj?.has("Dests")) { + rawDests.push(new NameTree(obj.getRaw("Dests"), this.xref)); + } + if (this.#catDict.has("Dests")) { + rawDests.push(this.#catDict.get("Dests")); + } + return rawDests; + } + get rawPageLabels() { + const obj = this.#catDict.getRaw("PageLabels"); + if (!obj) { + return null; + } + const numberTree = new NumberTree(obj, this.xref); + return numberTree.getAll(); + } + get pageLabels() { + let obj = null; + try { + obj = this.#readPageLabels(); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn("Unable to read page labels."); + } + return shadow(this, "pageLabels", obj); + } + #readPageLabels() { + const nums = this.rawPageLabels; + if (!nums) { + return null; + } + const pageLabels = new Array(this.numPages); + let style = null, + prefix = ""; + let currentLabel = "", + currentIndex = 1; + for (let i = 0, ii = this.numPages; i < ii; i++) { + const labelDict = nums.get(i); + if (labelDict !== undefined) { + if (!(labelDict instanceof Dict)) { + throw new FormatError("PageLabel is not a dictionary."); + } + if (labelDict.has("Type") && !isName(labelDict.get("Type"), "PageLabel")) { + throw new FormatError("Invalid type in PageLabel dictionary."); + } + if (labelDict.has("S")) { + const s = labelDict.get("S"); + if (!(s instanceof Name)) { + throw new FormatError("Invalid style in PageLabel dictionary."); + } + style = s.name; + } else { + style = null; + } + if (labelDict.has("P")) { + const p = labelDict.get("P"); + if (typeof p !== "string") { + throw new FormatError("Invalid prefix in PageLabel dictionary."); + } + prefix = stringToPDFString(p); + } else { + prefix = ""; + } + if (labelDict.has("St")) { + const st = labelDict.get("St"); + if (!(Number.isInteger(st) && st >= 1)) { + throw new FormatError("Invalid start in PageLabel dictionary."); + } + currentIndex = st; + } else { + currentIndex = 1; + } + } + switch (style) { + case "D": + currentLabel = currentIndex; + break; + case "R": + case "r": + currentLabel = toRomanNumerals(currentIndex, style === "r"); + break; + case "A": + case "a": + const LIMIT = 26; + const A_UPPER_CASE = 0x41, + A_LOWER_CASE = 0x61; + const baseCharCode = style === "a" ? A_LOWER_CASE : A_UPPER_CASE; + const letterIndex = currentIndex - 1; + const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT); + currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1); + break; + default: + if (style) { + throw new FormatError(`Invalid style "${style}" in PageLabel dictionary.`); + } + currentLabel = ""; + } + pageLabels[i] = prefix + currentLabel; + currentIndex++; + } + return pageLabels; + } + get pageLayout() { + const obj = this.#catDict.get("PageLayout"); + let pageLayout = ""; + if (obj instanceof Name) { + switch (obj.name) { + case "SinglePage": + case "OneColumn": + case "TwoColumnLeft": + case "TwoColumnRight": + case "TwoPageLeft": + case "TwoPageRight": + pageLayout = obj.name; + } + } + return shadow(this, "pageLayout", pageLayout); + } + get pageMode() { + const obj = this.#catDict.get("PageMode"); + let pageMode = "UseNone"; + if (obj instanceof Name) { + switch (obj.name) { + case "UseNone": + case "UseOutlines": + case "UseThumbs": + case "FullScreen": + case "UseOC": + case "UseAttachments": + pageMode = obj.name; + } + } + return shadow(this, "pageMode", pageMode); + } + get viewerPreferences() { + const obj = this.#catDict.get("ViewerPreferences"); + if (!(obj instanceof Dict)) { + return shadow(this, "viewerPreferences", null); + } + let prefs = null; + for (const [key, value] of obj) { + let prefValue; + switch (key) { + case "HideToolbar": + case "HideMenubar": + case "HideWindowUI": + case "FitWindow": + case "CenterWindow": + case "DisplayDocTitle": + case "PickTrayByPDFSize": + if (typeof value === "boolean") { + prefValue = value; + } + break; + case "NonFullScreenPageMode": + if (value instanceof Name) { + switch (value.name) { + case "UseNone": + case "UseOutlines": + case "UseThumbs": + case "UseOC": + prefValue = value.name; + break; + default: + prefValue = "UseNone"; + } + } + break; + case "Direction": + if (value instanceof Name) { + switch (value.name) { + case "L2R": + case "R2L": + prefValue = value.name; + break; + default: + prefValue = "L2R"; + } + } + break; + case "ViewArea": + case "ViewClip": + case "PrintArea": + case "PrintClip": + if (value instanceof Name) { + switch (value.name) { + case "MediaBox": + case "CropBox": + case "BleedBox": + case "TrimBox": + case "ArtBox": + prefValue = value.name; + break; + default: + prefValue = "CropBox"; + } + } + break; + case "PrintScaling": + if (value instanceof Name) { + switch (value.name) { + case "None": + case "AppDefault": + prefValue = value.name; + break; + default: + prefValue = "AppDefault"; + } + } + break; + case "Duplex": + if (value instanceof Name) { + switch (value.name) { + case "Simplex": + case "DuplexFlipShortEdge": + case "DuplexFlipLongEdge": + prefValue = value.name; + break; + default: + prefValue = "None"; + } + } + break; + case "PrintPageRange": + if (Array.isArray(value) && value.length % 2 === 0) { + const isValid = value.every((page, i, arr) => Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages); + if (isValid) { + prefValue = value; + } + } + break; + case "NumCopies": + if (Number.isInteger(value) && value > 0) { + prefValue = value; + } + break; + default: + warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`); + continue; + } + if (prefValue === undefined) { + warn(`Bad value, for key "${key}", in ViewerPreferences: ${value}.`); + continue; + } + prefs ??= Object.create(null); + prefs[key] = prefValue; + } + return shadow(this, "viewerPreferences", prefs); + } + get openAction() { + const obj = this.#catDict.get("OpenAction"); + const openAction = Object.create(null); + if (obj instanceof Dict) { + const destDict = new Dict(this.xref); + destDict.set("A", obj); + const resultObj = { + url: null, + dest: null, + action: null + }; + Catalog.parseDestDictionary({ + destDict, + resultObj + }); + if (Array.isArray(resultObj.dest)) { + openAction.dest = resultObj.dest; + } else if (resultObj.action) { + openAction.action = resultObj.action; + } + } else if (isValidExplicitDest(obj)) { + openAction.dest = obj; + } + return shadow(this, "openAction", objectSize(openAction) > 0 ? openAction : null); + } + get attachments() { + const obj = this.#catDict.get("Names"); + let attachments = null; + if (obj instanceof Dict && obj.has("EmbeddedFiles")) { + const nameTree = new NameTree(obj.getRaw("EmbeddedFiles"), this.xref); + for (const [key, value] of nameTree.getAll()) { + const fs = new FileSpec(value); + attachments ??= Object.create(null); + attachments[stringToPDFString(key, true)] = fs.serializable; + } + } + return shadow(this, "attachments", attachments); + } + get xfaImages() { + const obj = this.#catDict.get("Names"); + let xfaImages = null; + if (obj instanceof Dict && obj.has("XFAImages")) { + const nameTree = new NameTree(obj.getRaw("XFAImages"), this.xref); + for (const [key, value] of nameTree.getAll()) { + if (value instanceof BaseStream) { + xfaImages ??= new Map(); + xfaImages.set(stringToPDFString(key, true), value.getBytes()); + } + } + } + return shadow(this, "xfaImages", xfaImages); + } + #collectJavaScript() { + const obj = this.#catDict.get("Names"); + let javaScript = null; + function appendIfJavaScriptDict(name, jsDict) { + if (!(jsDict instanceof Dict)) { + return; + } + if (!isName(jsDict.get("S"), "JavaScript")) { + return; + } + let js = jsDict.get("JS"); + if (js instanceof BaseStream) { + js = js.getString(); + } else if (typeof js !== "string") { + return; + } + js = stringToPDFString(js, true).replaceAll("\x00", ""); + if (js) { + (javaScript ||= new Map()).set(name, js); + } + } + if (obj instanceof Dict && obj.has("JavaScript")) { + const nameTree = new NameTree(obj.getRaw("JavaScript"), this.xref); + for (const [key, value] of nameTree.getAll()) { + appendIfJavaScriptDict(stringToPDFString(key, true), value); + } + } + const openAction = this.#catDict.get("OpenAction"); + if (openAction) { + appendIfJavaScriptDict("OpenAction", openAction); + } + return javaScript; + } + get jsActions() { + const javaScript = this.#collectJavaScript(); + let actions = collectActions(this.xref, this.#catDict, DocumentActionEventType); + if (javaScript) { + actions ||= Object.create(null); + for (const [key, val] of javaScript) { + if (key in actions) { + actions[key].push(val); + } else { + actions[key] = [val]; + } + } + } + return shadow(this, "jsActions", actions); + } + async cleanup(manuallyTriggered = false) { + clearGlobalCaches(); + this.globalColorSpaceCache.clear(); + this.globalImageCache.clear(manuallyTriggered); + this.pageKidsCountCache.clear(); + this.pageIndexCache.clear(); + this.pageDictCache.clear(); + this.nonBlendModesSet.clear(); + for (const { + dict + } of await Promise.all(this.fontCache)) { + delete dict.cacheKey; + } + this.fontCache.clear(); + this.builtInCMapCache.clear(); + this.standardFontDataCache.clear(); + this.systemFontCache.clear(); + } + async getPageDict(pageIndex) { + const nodesToVisit = [this.toplevelPagesDict]; + const visitedNodes = new RefSet(); + const pagesRef = this.#catDict.getRaw("Pages"); + if (pagesRef instanceof Ref) { + visitedNodes.put(pagesRef); + } + const xref = this.xref, + pageKidsCountCache = this.pageKidsCountCache, + pageIndexCache = this.pageIndexCache, + pageDictCache = this.pageDictCache; + let currentPageIndex = 0; + while (nodesToVisit.length) { + const currentNode = nodesToVisit.pop(); + if (currentNode instanceof Ref) { + const count = pageKidsCountCache.get(currentNode); + if (count >= 0 && currentPageIndex + count <= pageIndex) { + currentPageIndex += count; + continue; + } + if (visitedNodes.has(currentNode)) { + throw new FormatError("Pages tree contains circular reference."); + } + visitedNodes.put(currentNode); + const obj = await (pageDictCache.get(currentNode) || xref.fetchAsync(currentNode)); + if (obj instanceof Dict) { + let type = obj.getRaw("Type"); + if (type instanceof Ref) { + type = await xref.fetchAsync(type); + } + if (isName(type, "Page") || !obj.has("Kids")) { + if (!pageKidsCountCache.has(currentNode)) { + pageKidsCountCache.put(currentNode, 1); + } + if (!pageIndexCache.has(currentNode)) { + pageIndexCache.put(currentNode, currentPageIndex); + } + if (currentPageIndex === pageIndex) { + return [obj, currentNode]; + } + currentPageIndex++; + continue; + } + } + nodesToVisit.push(obj); + continue; + } + if (!(currentNode instanceof Dict)) { + throw new FormatError("Page dictionary kid reference points to wrong type of object."); + } + const { + objId + } = currentNode; + let count = currentNode.getRaw("Count"); + if (count instanceof Ref) { + count = await xref.fetchAsync(count); + } + if (Number.isInteger(count) && count >= 0) { + if (objId && !pageKidsCountCache.has(objId)) { + pageKidsCountCache.put(objId, count); + } + if (currentPageIndex + count <= pageIndex) { + currentPageIndex += count; + continue; + } + } + let kids = currentNode.getRaw("Kids"); + if (kids instanceof Ref) { + kids = await xref.fetchAsync(kids); + } + if (!Array.isArray(kids)) { + let type = currentNode.getRaw("Type"); + if (type instanceof Ref) { + type = await xref.fetchAsync(type); + } + if (isName(type, "Page") || !currentNode.has("Kids")) { + if (currentPageIndex === pageIndex) { + return [currentNode, null]; + } + currentPageIndex++; + continue; + } + throw new FormatError("Page dictionary kids object is not an array."); + } + for (let last = kids.length - 1; last >= 0; last--) { + const lastKid = kids[last]; + nodesToVisit.push(lastKid); + if (currentNode === this.toplevelPagesDict && lastKid instanceof Ref && !pageDictCache.has(lastKid)) { + pageDictCache.put(lastKid, xref.fetchAsync(lastKid)); + } + } + } + throw new Error(`Page index ${pageIndex} not found.`); + } + async getAllPageDicts(recoveryMode = false) { + const { + ignoreErrors + } = this.pdfManager.evaluatorOptions; + const queue = [{ + currentNode: this.toplevelPagesDict, + posInKids: 0 + }]; + const visitedNodes = new RefSet(); + const pagesRef = this.#catDict.getRaw("Pages"); + if (pagesRef instanceof Ref) { + visitedNodes.put(pagesRef); + } + const map = new Map(), + xref = this.xref, + pageIndexCache = this.pageIndexCache; + let pageIndex = 0; + function addPageDict(pageDict, pageRef) { + if (pageRef && !pageIndexCache.has(pageRef)) { + pageIndexCache.put(pageRef, pageIndex); + } + map.set(pageIndex++, [pageDict, pageRef]); + } + function addPageError(error) { + if (error instanceof XRefEntryException && !recoveryMode) { + throw error; + } + if (recoveryMode && ignoreErrors && pageIndex === 0) { + warn(`getAllPageDicts - Skipping invalid first page: "${error}".`); + error = Dict.empty; + } + map.set(pageIndex++, [error, null]); + } + while (queue.length > 0) { + const queueItem = queue.at(-1); + const { + currentNode, + posInKids + } = queueItem; + let kids = currentNode.getRaw("Kids"); + if (kids instanceof Ref) { + try { + kids = await xref.fetchAsync(kids); + } catch (ex) { + addPageError(ex); + break; + } + } + if (!Array.isArray(kids)) { + addPageError(new FormatError("Page dictionary kids object is not an array.")); + break; + } + if (posInKids >= kids.length) { + queue.pop(); + continue; + } + const kidObj = kids[posInKids]; + let obj; + if (kidObj instanceof Ref) { + if (visitedNodes.has(kidObj)) { + addPageError(new FormatError("Pages tree contains circular reference.")); + break; + } + visitedNodes.put(kidObj); + try { + obj = await xref.fetchAsync(kidObj); + } catch (ex) { + addPageError(ex); + break; + } + } else { + obj = kidObj; + } + if (!(obj instanceof Dict)) { + addPageError(new FormatError("Page dictionary kid reference points to wrong type of object.")); + break; + } + let type = obj.getRaw("Type"); + if (type instanceof Ref) { + try { + type = await xref.fetchAsync(type); + } catch (ex) { + addPageError(ex); + break; + } + } + if (isName(type, "Page") || !obj.has("Kids")) { + addPageDict(obj, kidObj instanceof Ref ? kidObj : null); + } else { + queue.push({ + currentNode: obj, + posInKids: 0 + }); + } + queueItem.posInKids++; + } + return map; + } + getPageIndex(pageRef) { + const cachedPageIndex = this.pageIndexCache.get(pageRef); + if (cachedPageIndex !== undefined) { + return Promise.resolve(cachedPageIndex); + } + const xref = this.xref; + function pagesBeforeRef(kidRef) { + let total = 0, + parentRef; + return xref.fetchAsync(kidRef).then(function (node) { + if (isRefsEqual(kidRef, pageRef) && !isDict(node, "Page") && !(node instanceof Dict && !node.has("Type") && node.has("Contents"))) { + throw new FormatError("The reference does not point to a /Page dictionary."); + } + if (!node) { + return null; + } + if (!(node instanceof Dict)) { + throw new FormatError("Node must be a dictionary."); + } + parentRef = node.getRaw("Parent"); + return node.getAsync("Parent"); + }).then(function (parent) { + if (!parent) { + return null; + } + if (!(parent instanceof Dict)) { + throw new FormatError("Parent must be a dictionary."); + } + return parent.getAsync("Kids"); + }).then(function (kids) { + if (!kids) { + return null; + } + const kidPromises = []; + let found = false; + for (const kid of kids) { + if (!(kid instanceof Ref)) { + throw new FormatError("Kid must be a reference."); + } + if (isRefsEqual(kid, kidRef)) { + found = true; + break; + } + kidPromises.push(xref.fetchAsync(kid).then(function (obj) { + if (!(obj instanceof Dict)) { + throw new FormatError("Kid node must be a dictionary."); + } + if (obj.has("Count")) { + total += obj.get("Count"); + } else { + total++; + } + })); + } + if (!found) { + throw new FormatError("Kid reference not found in parent's kids."); + } + return Promise.all(kidPromises).then(() => [total, parentRef]); + }); + } + let total = 0; + const next = ref => pagesBeforeRef(ref).then(args => { + if (!args) { + this.pageIndexCache.put(pageRef, total); + return total; + } + const [count, parentRef] = args; + total += count; + return next(parentRef); + }); + return next(pageRef); + } + get baseUrl() { + const uri = this.#catDict.get("URI"); + if (uri instanceof Dict) { + const base = uri.get("Base"); + if (typeof base === "string") { + const absoluteUrl = createValidAbsoluteUrl(base, null, { + tryConvertEncoding: true + }); + if (absoluteUrl) { + return shadow(this, "baseUrl", absoluteUrl.href); + } + } + } + return shadow(this, "baseUrl", this.pdfManager.docBaseUrl); + } + static #getDestFromStructElement(xref, seRef) { + const seDict = xref.fetchIfRef(seRef); + if (!(seDict instanceof Dict)) { + return null; + } + let pageRef = null; + const directPg = seDict.getRaw("Pg"); + if (directPg instanceof Ref) { + pageRef = directPg; + } + if (!pageRef) { + const queue = [seDict]; + while (queue.length > 0 && !pageRef) { + const node = queue.shift(); + const kids = node.get("K"); + let kidsArr; + if (Array.isArray(kids)) { + kidsArr = kids; + } else if (kids) { + kidsArr = [kids]; + } else { + continue; + } + for (const kid of kidsArr) { + const kidObj = xref.fetchIfRef(kid); + if (!(kidObj instanceof Dict)) { + continue; + } + const pg = kidObj.getRaw("Pg"); + if (pg instanceof Ref) { + pageRef = pg; + break; + } + queue.push(kidObj); + } + } + } + if (!pageRef) { + const MAX_DEPTH = 40; + let current = seDict; + for (let depth = 0; depth < MAX_DEPTH; depth++) { + const parentRaw = current.getRaw("P"); + if (!(parentRaw instanceof Ref)) { + break; + } + const parentDict = xref.fetch(parentRaw); + if (!(parentDict instanceof Dict)) { + break; + } + if (isName(parentDict.get("Type"), "StructTreeRoot")) { + break; + } + const pg = parentDict.getRaw("Pg"); + if (pg instanceof Ref) { + pageRef = pg; + break; + } + current = parentDict; + } + } + if (!pageRef) { + return null; + } + let x = null, + y = null; + const attrs = seDict.get("A"); + if (attrs instanceof Dict) { + const bbox = lookupRect(attrs.getArray("BBox"), null); + if (bbox) { + x = bbox[0]; + y = bbox[3]; + } + } + return [pageRef, { + name: "XYZ" + }, x, y, null]; + } + static parseDestDictionary({ + destDict, + resultObj, + docBaseUrl = null, + docAttachments = null + }) { + if (!(destDict instanceof Dict)) { + warn("parseDestDictionary: `destDict` must be a dictionary."); + return; + } + let action = destDict.get("A"), + url, + dest; + if (!(action instanceof Dict)) { + if (destDict.has("Dest")) { + action = destDict.get("Dest"); + } else { + action = destDict.get("AA"); + if (action instanceof Dict) { + if (action.has("D")) { + action = action.get("D"); + } else if (action.has("U")) { + action = action.get("U"); + } + } + } + } + if (action instanceof Dict) { + const actionType = action.get("S"); + if (!(actionType instanceof Name)) { + warn("parseDestDictionary: Invalid type in Action dictionary."); + return; + } + const actionName = actionType.name; + switch (actionName) { + case "ResetForm": + const flags = action.get("Flags"); + const include = ((typeof flags === "number" ? flags : 0) & 1) === 0; + const fields = []; + const refs = []; + for (const obj of action.get("Fields") || []) { + if (obj instanceof Ref) { + refs.push(obj.toString()); + } else if (typeof obj === "string") { + fields.push(stringToPDFString(obj)); + } + } + resultObj.resetForm = { + fields, + refs, + include + }; + break; + case "URI": + url = action.get("URI"); + if (url instanceof Name) { + url = "/" + url.name; + } + break; + case "GoTo": + dest = action.get("D"); + break; + case "Launch": + case "GoToR": + const urlDict = action.get("F"); + if (urlDict instanceof Dict) { + const fs = new FileSpec(urlDict, true); + ({ + rawFilename: url + } = fs.serializable); + } else if (typeof urlDict === "string") { + url = urlDict; + } else { + break; + } + const remoteDest = fetchRemoteDest(action); + if (remoteDest) { + url = url.split("#", 1)[0] + "#" + remoteDest; + } + const newWindow = action.get("NewWindow"); + if (typeof newWindow === "boolean") { + resultObj.newWindow = newWindow; + } + break; + case "GoToE": + const target = action.get("T"); + let attachment; + if (docAttachments && target instanceof Dict) { + const relationship = target.get("R"); + const name = target.get("N"); + if (isName(relationship, "C") && typeof name === "string") { + attachment = docAttachments[stringToPDFString(name, true)]; + } + } + if (attachment) { + resultObj.attachment = attachment; + const attachmentDest = fetchRemoteDest(action); + if (attachmentDest) { + resultObj.attachmentDest = attachmentDest; + } + } else { + warn(`parseDestDictionary - unimplemented "GoToE" action.`); + } + break; + case "Named": + const namedAction = action.get("N"); + if (namedAction instanceof Name) { + resultObj.action = namedAction.name; + } + break; + case "SetOCGState": + const state = action.get("State"); + const preserveRB = action.get("PreserveRB"); + if (!Array.isArray(state) || state.length === 0) { + break; + } + const stateArr = []; + for (const elem of state) { + if (elem instanceof Name) { + switch (elem.name) { + case "ON": + case "OFF": + case "Toggle": + stateArr.push(elem.name); + break; + } + } else if (elem instanceof Ref) { + stateArr.push(elem.toString()); + } + } + if (stateArr.length !== state.length) { + break; + } + resultObj.setOCGState = { + state: stateArr, + preserveRB: typeof preserveRB === "boolean" ? preserveRB : true + }; + break; + case "JavaScript": + const jsAction = action.get("JS"); + let js; + if (jsAction instanceof BaseStream) { + js = jsAction.getString(); + } else if (typeof jsAction === "string") { + js = jsAction; + } + const jsURL = js && recoverJsURL(stringToPDFString(js, true)); + if (jsURL) { + url = jsURL.url; + resultObj.newWindow = jsURL.newWindow; + break; + } + default: + if (actionName === "JavaScript" || actionName === "SubmitForm") { + break; + } + warn(`parseDestDictionary - unsupported action: "${actionName}".`); + break; + } + } else if (destDict.has("Dest")) { + dest = destDict.get("Dest"); + } + if (typeof url === "string") { + const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, { + addDefaultProtocol: true, + tryConvertEncoding: true + }); + if (absoluteUrl) { + resultObj.url = absoluteUrl.href; + } + resultObj.unsafeUrl = url; + } + if (dest) { + if (dest instanceof Name) { + dest = dest.name; + } + if (typeof dest === "string") { + resultObj.dest = stringToPDFString(dest, true); + } else if (isValidExplicitDest(dest)) { + resultObj.dest = dest; + } + } + if (!resultObj.dest && !resultObj.url && !resultObj.action && !resultObj.attachment && !resultObj.setOCGState && !resultObj.resetForm) { + const seRef = destDict.getRaw("SE"); + if (seRef instanceof Ref) { + try { + const seDest = Catalog.#getDestFromStructElement(destDict.xref, seRef); + if (seDest) { + resultObj.dest = seDest; + } + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + info("SE parsing failed."); + } + } + } + } +} + +;// ./src/core/object_loader.js + + + + +function mayHaveChildren(value) { + return value instanceof Ref || value instanceof Dict || value instanceof BaseStream || Array.isArray(value); +} +function addChildren(node, nodesToVisit) { + if (node instanceof Dict) { + node = node.getRawValues(); + } else if (node instanceof BaseStream) { + node = node.dict.getRawValues(); + } else if (!Array.isArray(node)) { + return; + } + for (const rawValue of node) { + if (mayHaveChildren(rawValue)) { + nodesToVisit.push(rawValue); + } + } +} +class ObjectLoader { + refSet = new RefSet(); + constructor(dict, keys, xref) { + this.dict = dict; + this.keys = keys; + this.xref = xref; + } + async load() { + const { + keys, + dict + } = this; + const nodesToVisit = []; + for (const key of keys) { + const rawValue = dict.getRaw(key); + if (rawValue !== undefined) { + nodesToVisit.push(rawValue); + } + } + await this.#walk(nodesToVisit); + this.refSet = null; + } + async #walk(nodesToVisit) { + const nodesToRevisit = []; + const pendingRequests = []; + while (nodesToVisit.length) { + let currentNode = nodesToVisit.pop(); + if (currentNode instanceof Ref) { + if (this.refSet.has(currentNode)) { + continue; + } + try { + this.refSet.put(currentNode); + currentNode = this.xref.fetch(currentNode); + } catch (ex) { + if (!(ex instanceof MissingDataException)) { + warn(`ObjectLoader.#walk - requesting all data: "${ex}".`); + await this.xref.stream.manager.requestAllChunks(); + return; + } + nodesToRevisit.push(currentNode); + pendingRequests.push({ + begin: ex.begin, + end: ex.end + }); + } + } + if (currentNode instanceof BaseStream) { + const baseStreams = currentNode.getBaseStreams(); + if (baseStreams) { + let foundMissingData = false; + for (const stream of baseStreams) { + if (stream.isDataLoaded) { + continue; + } + foundMissingData = true; + pendingRequests.push({ + begin: stream.start, + end: stream.end + }); + } + if (foundMissingData) { + nodesToRevisit.push(currentNode); + } + } + } + addChildren(currentNode, nodesToVisit); + } + if (pendingRequests.length) { + await this.xref.stream.manager.requestRanges(pendingRequests); + for (const node of nodesToRevisit) { + if (node instanceof Ref) { + this.refSet.remove(node); + } + } + await this.#walk(nodesToRevisit); + } + } + static async load(obj, keys, xref) { + if (xref.stream.isDataLoaded) { + return; + } + const objLoader = new ObjectLoader(obj, keys, xref); + await objLoader.load(); + } +} + +;// ./src/core/xfa/symbol_utils.js +const $acceptWhitespace = Symbol(); +const $addHTML = Symbol(); +const $appendChild = Symbol(); +const $childrenToHTML = Symbol(); +const $clean = Symbol(); +const $cleanPage = Symbol(); +const $cleanup = Symbol(); +const $clone = Symbol(); +const $consumed = Symbol(); +const $content = Symbol("content"); +const $data = Symbol("data"); +const $dump = Symbol(); +const $extra = Symbol("extra"); +const $finalize = Symbol(); +const $flushHTML = Symbol(); +const $getAttributeIt = Symbol(); +const $getAttributes = Symbol(); +const $getAvailableSpace = Symbol(); +const $getChildrenByClass = Symbol(); +const $getChildrenByName = Symbol(); +const $getChildrenByNameIt = Symbol(); +const $getDataValue = Symbol(); +const $getExtra = Symbol(); +const $getRealChildrenByNameIt = Symbol(); +const $getChildren = Symbol(); +const $getContainedChildren = Symbol(); +const $getNextPage = Symbol(); +const $getSubformParent = Symbol(); +const $getParent = Symbol(); +const $getTemplateRoot = Symbol(); +const $globalData = Symbol(); +const $hasSettableValue = Symbol(); +const $ids = Symbol(); +const $indexOf = Symbol(); +const $insertAt = Symbol(); +const $isCDATAXml = Symbol(); +const $isBindable = Symbol(); +const $isDataValue = Symbol(); +const $isDescendent = Symbol(); +const $isNsAgnostic = Symbol(); +const $isSplittable = Symbol(); +const $isThereMoreWidth = Symbol(); +const $isTransparent = Symbol(); +const $isUsable = Symbol(); +const $lastAttribute = Symbol(); +const $namespaceId = Symbol("namespaceId"); +const $nodeName = Symbol("nodeName"); +const $nsAttributes = Symbol(); +const $onChild = Symbol(); +const $onChildCheck = Symbol(); +const $onText = Symbol(); +const $pushGlyphs = Symbol(); +const $popPara = Symbol(); +const $pushPara = Symbol(); +const $removeChild = Symbol(); +const $root = Symbol("root"); +const $resolvePrototypes = Symbol(); +const $searchNode = Symbol(); +const $setId = Symbol(); +const $setSetAttributes = Symbol(); +const $setValue = Symbol(); +const $tabIndex = Symbol(); +const $text = Symbol(); +const $toPages = Symbol(); +const $toHTML = Symbol(); +const $toString = Symbol(); +const $toStyle = Symbol(); +const $uid = Symbol("uid"); + +;// ./src/core/xfa/namespaces.js +const $buildXFAObject = Symbol(); +const NamespaceIds = { + config: { + id: 0, + check: ns => ns.startsWith("http://www.xfa.org/schema/xci/") + }, + connectionSet: { + id: 1, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-connection-set/") + }, + datasets: { + id: 2, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-data/") + }, + form: { + id: 3, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-form/") + }, + localeSet: { + id: 4, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-locale-set/") + }, + pdf: { + id: 5, + check: ns => ns === "http://ns.adobe.com/xdp/pdf/" + }, + signature: { + id: 6, + check: ns => ns === "http://www.w3.org/2000/09/xmldsig#" + }, + sourceSet: { + id: 7, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-source-set/") + }, + stylesheet: { + id: 8, + check: ns => ns === "http://www.w3.org/1999/XSL/Transform" + }, + template: { + id: 9, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-template/") + }, + xdc: { + id: 10, + check: ns => ns.startsWith("http://www.xfa.org/schema/xdc/") + }, + xdp: { + id: 11, + check: ns => ns === "http://ns.adobe.com/xdp/" + }, + xfdf: { + id: 12, + check: ns => ns === "http://ns.adobe.com/xfdf/" + }, + xhtml: { + id: 13, + check: ns => ns === "http://www.w3.org/1999/xhtml" + }, + xmpmeta: { + id: 14, + check: ns => ns === "http://ns.adobe.com/xmpmeta/" + } +}; + +;// ./src/core/xfa/utils.js + +const dimConverters = { + pt: x => x, + cm: x => x / 2.54 * 72, + mm: x => x / (10 * 2.54) * 72, + in: x => x * 72, + px: x => x +}; +const measurementPattern = /([+-]?\d+\.?\d*)(.*)/; +function stripQuotes(str) { + if (str.startsWith("'") || str.startsWith('"')) { + return str.slice(1, -1); + } + return str; +} +function getInteger({ + data, + defaultValue, + validate +}) { + if (!data) { + return defaultValue; + } + data = data.trim(); + const n = parseInt(data, 10); + if (!isNaN(n) && validate(n)) { + return n; + } + return defaultValue; +} +function getFloat({ + data, + defaultValue, + validate +}) { + if (!data) { + return defaultValue; + } + data = data.trim(); + const n = parseFloat(data); + if (!isNaN(n) && validate(n)) { + return n; + } + return defaultValue; +} +function getKeyword({ + data, + defaultValue, + validate +}) { + if (!data) { + return defaultValue; + } + data = data.trim(); + if (validate(data)) { + return data; + } + return defaultValue; +} +function getStringOption(data, options) { + return getKeyword({ + data, + defaultValue: options[0], + validate: k => options.includes(k) + }); +} +function getMeasurement(str, def = "0") { + def ||= "0"; + if (!str) { + return getMeasurement(def); + } + const match = str.trim().match(measurementPattern); + if (!match) { + return getMeasurement(def); + } + const [, valueStr, unit] = match; + const value = parseFloat(valueStr); + if (isNaN(value)) { + return getMeasurement(def); + } + if (value === 0) { + return 0; + } + const conv = dimConverters[unit]; + if (conv) { + return conv(value); + } + return value; +} +function getRatio(data) { + if (!data) { + return { + num: 1, + den: 1 + }; + } + const ratio = data.split(":", 2).map(x => parseFloat(x.trim())).filter(x => !isNaN(x)); + if (ratio.length === 1) { + ratio.push(1); + } + if (ratio.length === 0) { + return { + num: 1, + den: 1 + }; + } + const [num, den] = ratio; + return { + num, + den + }; +} +function getRelevant(data) { + if (!data) { + return []; + } + return data.trim().split(/\s+/).map(e => ({ + excluded: e[0] === "-", + viewname: e.substring(1) + })); +} +function getColor(data, def = [0, 0, 0]) { + let [r, g, b] = def; + if (!data) { + return { + r, + g, + b + }; + } + const color = data.split(",", 3).map(c => MathClamp(parseInt(c.trim(), 10), 0, 255)).map(c => isNaN(c) ? 0 : c); + if (color.length < 3) { + return { + r, + g, + b + }; + } + [r, g, b] = color; + return { + r, + g, + b + }; +} +function getBBox(data) { + const def = -1; + if (!data) { + return { + x: def, + y: def, + width: def, + height: def + }; + } + const bbox = data.split(",", 4).map(m => getMeasurement(m.trim(), "-1")); + if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) { + return { + x: def, + y: def, + width: def, + height: def + }; + } + const [x, y, width, height] = bbox; + return { + x, + y, + width, + height + }; +} +class HTMLResult { + static get FAILURE() { + return shadow(this, "FAILURE", new HTMLResult(false, null, null, null)); + } + static get EMPTY() { + return shadow(this, "EMPTY", new HTMLResult(true, null, null, null)); + } + constructor(success, html, bbox, breakNode) { + this.success = success; + this.html = html; + this.bbox = bbox; + this.breakNode = breakNode; + } + isBreak() { + return !!this.breakNode; + } + static breakNode(node) { + return new HTMLResult(false, null, null, node); + } + static success(html, bbox = null) { + return new HTMLResult(true, html, bbox, null); + } +} + +;// ./src/core/xfa/fonts.js + + + +class FontFinder { + constructor(pdfFonts) { + this.fonts = new Map(); + this.cache = new Map(); + this.warned = new Set(); + this.defaultFont = null; + this.add(pdfFonts); + } + add(pdfFonts, reallyMissingFonts = null) { + for (const pdfFont of pdfFonts) { + this.addPdfFont(pdfFont); + } + for (const pdfFont of this.fonts.values()) { + if (!pdfFont.regular) { + pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic; + } + } + if (!reallyMissingFonts || reallyMissingFonts.size === 0) { + return; + } + const myriad = this.fonts.get("PdfJS-Fallback-PdfJS-XFA"); + for (const missing of reallyMissingFonts) { + this.fonts.set(missing, myriad); + } + } + addPdfFont(pdfFont) { + const cssFontInfo = pdfFont.cssFontInfo; + const name = cssFontInfo.fontFamily; + const font = this.fonts.getOrInsertComputed(name, makeObj); + this.defaultFont ??= font; + let property = ""; + const fontWeight = parseFloat(cssFontInfo.fontWeight); + if (parseFloat(cssFontInfo.italicAngle) !== 0) { + property = fontWeight >= 700 ? "bolditalic" : "italic"; + } else if (fontWeight >= 700) { + property = "bold"; + } + if (!property) { + if (pdfFont.name.includes("Bold") || pdfFont.psName?.includes("Bold")) { + property = "bold"; + } + if (pdfFont.name.includes("Italic") || pdfFont.name.endsWith("It") || pdfFont.psName?.includes("Italic") || pdfFont.psName?.endsWith("It")) { + property += "italic"; + } + } + if (!property) { + property = "regular"; + } + font[property] = pdfFont; + } + getDefault() { + return this.defaultFont; + } + find(fontName, mustWarn = true) { + let font = this.fonts.get(fontName) || this.cache.get(fontName); + if (font) { + return font; + } + const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi; + let name = fontName.replaceAll(pattern, ""); + font = this.fonts.get(name); + if (font) { + this.cache.set(fontName, font); + return font; + } + name = name.toLowerCase(); + const maybe = []; + for (const [family, pdfFont] of this.fonts) { + if (family.replaceAll(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + if (maybe.length === 0) { + for (const pdfFont of this.fonts.values()) { + if (pdfFont.regular.name?.replaceAll(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + } + if (maybe.length === 0) { + name = name.replaceAll(/psmt|mt/gi, ""); + for (const [family, pdfFont] of this.fonts) { + if (family.replaceAll(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + } + if (maybe.length === 0) { + for (const pdfFont of this.fonts.values()) { + if (pdfFont.regular.name?.replaceAll(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + } + if (maybe.length >= 1) { + if (maybe.length !== 1 && mustWarn) { + warn(`XFA - Too many choices to guess the correct font: ${fontName}`); + } + this.cache.set(fontName, maybe[0]); + return maybe[0]; + } + if (mustWarn && !this.warned.has(fontName)) { + this.warned.add(fontName); + warn(`XFA - Cannot find the font: ${fontName}`); + } + return null; + } +} +function selectFont(xfaFont, typeface) { + if (xfaFont.posture === "italic") { + if (xfaFont.weight === "bold") { + return typeface.bolditalic; + } + return typeface.italic; + } else if (xfaFont.weight === "bold") { + return typeface.bold; + } + return typeface.regular; +} +function fonts_getMetrics(xfaFont, real = false) { + let pdfFont = null; + if (xfaFont) { + const name = stripQuotes(xfaFont.typeface); + const typeface = xfaFont[$globalData].fontFinder.find(name); + pdfFont = selectFont(xfaFont, typeface); + } + if (!pdfFont) { + return { + lineHeight: 12, + lineGap: 2, + lineNoGap: 10 + }; + } + const size = xfaFont.size || 10; + const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 1.2; + const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap; + return { + lineHeight: lineHeight * size, + lineGap: lineGap * size, + lineNoGap: Math.max(1, lineHeight - lineGap) * size + }; +} + +;// ./src/core/xfa/text.js + +const WIDTH_FACTOR = 1.02; +class FontInfo { + constructor(xfaFont, margin, lineHeight, fontFinder) { + this.lineHeight = lineHeight; + this.paraMargin = margin || { + top: 0, + bottom: 0, + left: 0, + right: 0 + }; + if (!xfaFont) { + [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); + return; + } + this.xfaFont = { + typeface: xfaFont.typeface, + posture: xfaFont.posture, + weight: xfaFont.weight, + size: xfaFont.size, + letterSpacing: xfaFont.letterSpacing + }; + const typeface = fontFinder.find(xfaFont.typeface); + if (!typeface) { + [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); + return; + } + this.pdfFont = selectFont(xfaFont, typeface); + if (!this.pdfFont) { + [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); + } + } + defaultFont(fontFinder) { + const font = fontFinder.find("Helvetica", false) || fontFinder.find("Myriad Pro", false) || fontFinder.find("Arial", false) || fontFinder.getDefault(); + if (font?.regular) { + const pdfFont = font.regular; + const info = pdfFont.cssFontInfo; + const xfaFont = { + typeface: info.fontFamily, + posture: "normal", + weight: "normal", + size: 10, + letterSpacing: 0 + }; + return [pdfFont, xfaFont]; + } + const xfaFont = { + typeface: "Courier", + posture: "normal", + weight: "normal", + size: 10, + letterSpacing: 0 + }; + return [null, xfaFont]; + } +} +class FontSelector { + constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) { + this.fontFinder = fontFinder; + this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)]; + } + pushData(xfaFont, margin, lineHeight) { + const lastFont = this.stack.at(-1); + for (const name of ["typeface", "posture", "weight", "size", "letterSpacing"]) { + xfaFont[name] ||= lastFont.xfaFont[name]; + } + for (const name of ["top", "bottom", "left", "right"]) { + if (isNaN(margin[name])) { + margin[name] = lastFont.paraMargin[name]; + } + } + const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder); + fontInfo.pdfFont ||= lastFont.pdfFont; + this.stack.push(fontInfo); + } + popFont() { + this.stack.pop(); + } + topFont() { + return this.stack.at(-1); + } +} +class TextMeasure { + constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) { + this.glyphs = []; + this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts); + this.extraHeight = 0; + } + pushData(xfaFont, margin, lineHeight) { + this.fontSelector.pushData(xfaFont, margin, lineHeight); + } + popFont(xfaFont) { + return this.fontSelector.popFont(); + } + addPara() { + const lastFont = this.fontSelector.topFont(); + this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom; + } + addString(str) { + if (!str) { + return; + } + const lastFont = this.fontSelector.topFont(); + const fontSize = lastFont.xfaFont.size; + if (lastFont.pdfFont) { + const letterSpacing = lastFont.xfaFont.letterSpacing; + const pdfFont = lastFont.pdfFont; + const fontLineHeight = pdfFont.lineHeight || 1.2; + const lineHeight = lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize; + const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap; + const noGap = fontLineHeight - lineGap; + const firstLineHeight = Math.max(1, noGap) * fontSize; + const scale = fontSize / 1000; + const fallbackWidth = pdfFont.defaultWidth || pdfFont.charsToGlyphs(" ")[0].width; + for (const line of str.split(/[\u2029\n]/)) { + const encodedLine = pdfFont.encodeString(line).join(""); + const glyphs = pdfFont.charsToGlyphs(encodedLine); + for (const glyph of glyphs) { + const width = glyph.width || fallbackWidth; + this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, false]); + } + this.glyphs.push([0, 0, 0, "\n", true]); + } + this.glyphs.pop(); + return; + } + for (const line of str.split(/[\u2029\n]/)) { + for (const char of line.split("")) { + this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]); + } + this.glyphs.push([0, 0, 0, "\n", true]); + } + this.glyphs.pop(); + } + compute(maxWidth) { + let lastSpacePos = -1, + lastSpaceWidth = 0, + width = 0, + height = 0, + currentLineWidth = 0, + currentLineHeight = 0; + let isBroken = false; + let isFirstLine = true; + for (let i = 0, ii = this.glyphs.length; i < ii; i++) { + const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = this.glyphs[i]; + const isSpace = char === " "; + const glyphHeight = isFirstLine ? firstLineHeight : lineHeight; + if (isEOL) { + width = Math.max(width, currentLineWidth); + currentLineWidth = 0; + height += currentLineHeight; + currentLineHeight = glyphHeight; + lastSpacePos = -1; + lastSpaceWidth = 0; + isFirstLine = false; + continue; + } + if (isSpace) { + if (currentLineWidth + glyphWidth > maxWidth) { + width = Math.max(width, currentLineWidth); + currentLineWidth = 0; + height += currentLineHeight; + currentLineHeight = glyphHeight; + lastSpacePos = -1; + lastSpaceWidth = 0; + isBroken = true; + isFirstLine = false; + } else { + currentLineHeight = Math.max(glyphHeight, currentLineHeight); + lastSpaceWidth = currentLineWidth; + currentLineWidth += glyphWidth; + lastSpacePos = i; + } + continue; + } + if (currentLineWidth + glyphWidth > maxWidth) { + height += currentLineHeight; + currentLineHeight = glyphHeight; + if (lastSpacePos !== -1) { + i = lastSpacePos; + width = Math.max(width, lastSpaceWidth); + currentLineWidth = 0; + lastSpacePos = -1; + lastSpaceWidth = 0; + } else { + width = Math.max(width, currentLineWidth); + currentLineWidth = glyphWidth; + } + isBroken = true; + isFirstLine = false; + continue; + } + currentLineWidth += glyphWidth; + currentLineHeight = Math.max(glyphHeight, currentLineHeight); + } + width = Math.max(width, currentLineWidth); + height += currentLineHeight + this.extraHeight; + return { + width: WIDTH_FACTOR * width, + height, + isBroken + }; + } +} + +;// ./src/core/xfa/som.js + + +const namePattern = /^[^.[]+/; +const indexPattern = /^[^\]]+/; +const operators = { + dot: 0, + dotDot: 1, + dotHash: 2, + dotBracket: 3, + dotParen: 4 +}; +const shortcuts = new Map([["$data", (root, current) => root.datasets ? root.datasets.data : root], ["$record", (root, current) => (root.datasets ? root.datasets.data : root)[$getChildren]()[0]], ["$template", (root, current) => root.template], ["$connectionSet", (root, current) => root.connectionSet], ["$form", (root, current) => root.form], ["$layout", (root, current) => root.layout], ["$host", (root, current) => root.host], ["$dataWindow", (root, current) => root.dataWindow], ["$event", (root, current) => root.event], ["!", (root, current) => root.datasets], ["$xfa", (root, current) => root], ["xfa", (root, current) => root], ["$", (root, current) => current]]); +const somCache = new WeakMap(); +function parseIndex(index) { + index = index.trim(); + if (index === "*") { + return Infinity; + } + return parseInt(index, 10) || 0; +} +function parseExpression(expr, dotDotAllowed, noExpr = true) { + let match = expr.match(namePattern); + if (!match) { + return null; + } + let [name] = match; + const parsed = [{ + name, + cacheName: "." + name, + index: 0, + js: null, + formCalc: null, + operator: operators.dot + }]; + let pos = name.length; + while (pos < expr.length) { + const spos = pos; + const char = expr.charAt(pos++); + if (char === "[") { + match = expr.slice(pos).match(indexPattern); + if (!match) { + warn("XFA - Invalid index in SOM expression"); + return null; + } + parsed.at(-1).index = parseIndex(match[0]); + pos += match[0].length + 1; + continue; + } + let operator; + switch (expr.charAt(pos)) { + case ".": + if (!dotDotAllowed) { + return null; + } + pos++; + operator = operators.dotDot; + break; + case "#": + pos++; + operator = operators.dotHash; + break; + case "[": + if (noExpr) { + warn("XFA - SOM expression contains a FormCalc subexpression which is not supported for now."); + return null; + } + operator = operators.dotBracket; + break; + case "(": + if (noExpr) { + warn("XFA - SOM expression contains a JavaScript subexpression which is not supported for now."); + return null; + } + operator = operators.dotParen; + break; + default: + operator = operators.dot; + break; + } + match = expr.slice(pos).match(namePattern); + if (!match) { + break; + } + [name] = match; + pos += name.length; + parsed.push({ + name, + cacheName: expr.slice(spos, pos), + operator, + index: 0, + js: null, + formCalc: null + }); + } + return parsed; +} +function searchNode(root, container, expr, dotDotAllowed = true, useCache = true) { + const parsed = parseExpression(expr, dotDotAllowed); + if (!parsed) { + return null; + } + const fn = shortcuts.get(parsed[0].name); + let i = 0; + let isQualified; + if (fn) { + isQualified = true; + root = [fn(root, container)]; + i = 1; + } else { + isQualified = container === null; + root = [container || root]; + } + for (let ii = parsed.length; i < ii; i++) { + const { + name, + cacheName, + operator, + index + } = parsed[i]; + const nodes = []; + for (const node of root) { + if (!node.isXFAObject) { + continue; + } + let children, cached; + if (useCache) { + cached = somCache.getOrInsertComputed(node, makeMap); + children = cached.get(cacheName); + } + if (!children) { + switch (operator) { + case operators.dot: + children = node[$getChildrenByName](name, false); + break; + case operators.dotDot: + children = node[$getChildrenByName](name, true); + break; + case operators.dotHash: + children = node[$getChildrenByClass](name); + children = children.isXFAObjectArray ? children.children : [children]; + break; + default: + break; + } + if (useCache) { + cached.set(cacheName, children); + } + } + if (children.length > 0) { + nodes.push(children); + } + } + if (nodes.length === 0 && !isQualified && i === 0) { + const parent = container[$getParent](); + container = parent; + if (!container) { + return null; + } + i = -1; + root = [container]; + continue; + } + root = isFinite(index) ? nodes.filter(node => index < node.length).map(node => node[index]) : nodes.flat(); + } + if (root.length === 0) { + return null; + } + return root; +} +function createDataNode(root, container, expr) { + const parsed = parseExpression(expr); + if (!parsed) { + return null; + } + if (parsed.some(x => x.operator === operators.dotDot)) { + return null; + } + const fn = shortcuts.get(parsed[0].name); + let i = 0; + if (fn) { + root = fn(root, container); + i = 1; + } else { + root = container || root; + } + for (let ii = parsed.length; i < ii; i++) { + const { + name, + operator, + index + } = parsed[i]; + if (!isFinite(index)) { + parsed[i].index = 0; + return root.createNodes(parsed.slice(i)); + } + let children; + switch (operator) { + case operators.dot: + children = root[$getChildrenByName](name, false); + break; + case operators.dotDot: + children = root[$getChildrenByName](name, true); + break; + case operators.dotHash: + children = root[$getChildrenByClass](name); + children = children.isXFAObjectArray ? children.children : [children]; + break; + default: + break; + } + if (children.length === 0) { + return root.createNodes(parsed.slice(i)); + } + if (index < children.length) { + const child = children[index]; + if (!child.isXFAObject) { + warn(`XFA - Cannot create a node.`); + return null; + } + root = child; + } else { + parsed[i].index = index - children.length; + return root.createNodes(parsed.slice(i)); + } + } + return null; +} + +;// ./src/core/xfa/xfa_object.js + + + + + + +const _applyPrototype = Symbol(); +const _attributes = Symbol(); +const _attributeNames = Symbol(); +const _children = Symbol("_children"); +const _cloneAttribute = Symbol(); +const _dataValue = Symbol(); +const _defaultValue = Symbol(); +const _filteredChildrenGenerator = Symbol(); +const _getPrototype = Symbol(); +const _getUnsetAttributes = Symbol(); +const _hasChildren = Symbol(); +const _max = Symbol(); +const _options = Symbol(); +const _parent = Symbol("parent"); +const _resolvePrototypesHelper = Symbol(); +const _setAttributes = Symbol(); +const _validator = Symbol(); +let uid = 0; +const NS_DATASETS = NamespaceIds.datasets.id; +class XFAObject { + constructor(nsId, name, hasChildren = false) { + this[$namespaceId] = nsId; + this[$nodeName] = name; + this[_hasChildren] = hasChildren; + this[_parent] = null; + this[_children] = []; + this[$uid] = `${name}${uid++}`; + this[$globalData] = null; + } + get isXFAObject() { + return true; + } + get isXFAObjectArray() { + return false; + } + createNodes(path) { + let root = this, + node = null; + for (const { + name, + index + } of path) { + for (let i = 0, ii = isFinite(index) ? index : 0; i <= ii; i++) { + const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId]; + node = new XmlObject(nsId, name); + root[$appendChild](node); + } + root = node; + } + return node; + } + [$onChild](child) { + if (!this[_hasChildren] || !this[$onChildCheck](child)) { + return false; + } + const name = child[$nodeName]; + const node = this[name]; + if (node instanceof XFAObjectArray) { + if (node.push(child)) { + this[$appendChild](child); + return true; + } + } else { + if (node !== null) { + this[$removeChild](node); + } + this[name] = child; + this[$appendChild](child); + return true; + } + let id = ""; + if (this.id) { + id = ` (id: ${this.id})`; + } else if (this.name) { + id = ` (name: ${this.name} ${this.h.value})`; + } + warn(`XFA - node "${this[$nodeName]}"${id} has already enough "${name}"!`); + return false; + } + [$onChildCheck](child) { + return this.hasOwnProperty(child[$nodeName]) && child[$namespaceId] === this[$namespaceId]; + } + [$isNsAgnostic]() { + return false; + } + [$acceptWhitespace]() { + return false; + } + [$isCDATAXml]() { + return false; + } + [$isBindable]() { + return false; + } + [$popPara]() { + if (this.para) { + this[$getTemplateRoot]()[$extra].paraStack.pop(); + } + } + [$pushPara]() { + this[$getTemplateRoot]()[$extra].paraStack.push(this.para); + } + [$setId](ids) { + if (this.id && this[$namespaceId] === NamespaceIds.template.id) { + ids.set(this.id, this); + } + } + [$getTemplateRoot]() { + return this[$globalData].template; + } + [$isSplittable]() { + return false; + } + [$isThereMoreWidth]() { + return false; + } + [$appendChild](child) { + child[_parent] = this; + this[_children].push(child); + if (!child[$globalData] && this[$globalData]) { + child[$globalData] = this[$globalData]; + } + } + [$removeChild](child) { + const i = this[_children].indexOf(child); + this[_children].splice(i, 1); + } + [$hasSettableValue]() { + return this.hasOwnProperty("value"); + } + [$setValue](_) {} + [$onText](_) {} + [$finalize]() {} + [$clean](builder) { + delete this[_hasChildren]; + if (this[$cleanup]) { + builder.clean(this[$cleanup]); + delete this[$cleanup]; + } + } + [$indexOf](child) { + return this[_children].indexOf(child); + } + [$insertAt](i, child) { + child[_parent] = this; + this[_children].splice(i, 0, child); + if (!child[$globalData] && this[$globalData]) { + child[$globalData] = this[$globalData]; + } + } + [$isTransparent]() { + return !this.name; + } + [$lastAttribute]() { + return ""; + } + [$text]() { + if (this[_children].length === 0) { + return this[$content]; + } + return this[_children].map(c => c[$text]()).join(""); + } + get [_attributeNames]() { + const proto = Object.getPrototypeOf(this); + if (!proto._attributes) { + const attributes = proto._attributes = new Set(); + for (const name of Object.getOwnPropertyNames(this)) { + if (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) { + break; + } + attributes.add(name); + } + } + return shadow(this, _attributeNames, proto._attributes); + } + [$isDescendent](parent) { + let node = this; + while (node) { + if (node === parent) { + return true; + } + node = node[$getParent](); + } + return false; + } + [$getParent]() { + return this[_parent]; + } + [$getSubformParent]() { + return this[$getParent](); + } + [$getChildren](name = null) { + if (!name) { + return this[_children]; + } + return this[name]; + } + [$dump]() { + const dumped = Object.create(null); + if (this[$content]) { + dumped.$content = this[$content]; + } + for (const name of Object.getOwnPropertyNames(this)) { + const value = this[name]; + if (value === null) { + continue; + } + if (value instanceof XFAObject) { + dumped[name] = value[$dump](); + } else if (value instanceof XFAObjectArray) { + if (!value.isEmpty()) { + dumped[name] = value.dump(); + } + } else { + dumped[name] = value; + } + } + return dumped; + } + [$toStyle]() { + return null; + } + [$toHTML]() { + return HTMLResult.EMPTY; + } + *[$getContainedChildren]() { + for (const node of this[$getChildren]()) { + yield node; + } + } + *[_filteredChildrenGenerator](filter, include) { + for (const node of this[$getContainedChildren]()) { + if (!filter || include === filter.has(node[$nodeName])) { + const availableSpace = this[$getAvailableSpace](); + const res = node[$toHTML](availableSpace); + if (!res.success) { + this[$extra].failingNode = node; + } + yield res; + } + } + } + [$flushHTML]() { + return null; + } + [$addHTML](html, bbox) { + this[$extra].children.push(html); + } + [$getAvailableSpace]() {} + [$childrenToHTML]({ + filter = null, + include = true + }) { + if (!this[$extra].generator) { + this[$extra].generator = this[_filteredChildrenGenerator](filter, include); + } else { + const availableSpace = this[$getAvailableSpace](); + const res = this[$extra].failingNode[$toHTML](availableSpace); + if (!res.success) { + return res; + } + if (res.html) { + this[$addHTML](res.html, res.bbox); + } + delete this[$extra].failingNode; + } + while (true) { + const gen = this[$extra].generator.next(); + if (gen.done) { + break; + } + const res = gen.value; + if (!res.success) { + return res; + } + if (res.html) { + this[$addHTML](res.html, res.bbox); + } + } + this[$extra].generator = null; + return HTMLResult.EMPTY; + } + [$setSetAttributes](attributes) { + this[_setAttributes] = new Set(Object.keys(attributes)); + } + [_getUnsetAttributes](protoAttributes) { + const allAttr = this[_attributeNames]; + const setAttr = this[_setAttributes]; + return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x)); + } + [$resolvePrototypes](ids, ancestors = new Set()) { + for (const child of this[_children]) { + child[_resolvePrototypesHelper](ids, ancestors); + } + } + [_resolvePrototypesHelper](ids, ancestors) { + const proto = this[_getPrototype](ids, ancestors); + if (proto) { + this[_applyPrototype](proto, ids, ancestors); + } else { + this[$resolvePrototypes](ids, ancestors); + } + } + [_getPrototype](ids, ancestors) { + const { + use, + usehref + } = this; + if (!use && !usehref) { + return null; + } + let proto = null; + let somExpression = null; + let id = null; + let ref = use; + if (usehref) { + ref = usehref; + if (usehref.startsWith("#som(") && usehref.endsWith(")")) { + somExpression = usehref.slice("#som(".length, -1); + } else if (usehref.startsWith(".#som(") && usehref.endsWith(")")) { + somExpression = usehref.slice(".#som(".length, -1); + } else if (usehref.startsWith("#")) { + id = usehref.slice(1); + } else if (usehref.startsWith(".#")) { + id = usehref.slice(2); + } + } else if (use.startsWith("#")) { + id = use.slice(1); + } else { + somExpression = use; + } + this.use = this.usehref = ""; + if (id) { + proto = ids.get(id); + } else { + proto = searchNode(ids.get($root), this, somExpression, true, false); + if (proto) { + proto = proto[0]; + } + } + if (!proto) { + warn(`XFA - Invalid prototype reference: ${ref}.`); + return null; + } + if (proto[$nodeName] !== this[$nodeName]) { + warn(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`); + return null; + } + if (ancestors.has(proto)) { + warn(`XFA - Cycle detected in prototypes use.`); + return null; + } + ancestors.add(proto); + const protoProto = proto[_getPrototype](ids, ancestors); + if (protoProto) { + proto[_applyPrototype](protoProto, ids, ancestors); + } + proto[$resolvePrototypes](ids, ancestors); + ancestors.delete(proto); + return proto; + } + [_applyPrototype](proto, ids, ancestors) { + if (ancestors.has(proto)) { + warn(`XFA - Cycle detected in prototypes use.`); + return; + } + if (!this[$content] && proto[$content]) { + this[$content] = proto[$content]; + } + const newAncestors = new Set(ancestors); + newAncestors.add(proto); + for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) { + this[unsetAttrName] = proto[unsetAttrName]; + if (this[_setAttributes]) { + this[_setAttributes].add(unsetAttrName); + } + } + for (const name of Object.getOwnPropertyNames(this)) { + if (this[_attributeNames].has(name)) { + continue; + } + const value = this[name]; + const protoValue = proto[name]; + if (value instanceof XFAObjectArray) { + for (const child of value[_children]) { + child[_resolvePrototypesHelper](ids, ancestors); + } + for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) { + const child = proto[_children][i][$clone](); + if (value.push(child)) { + child[_parent] = this; + this[_children].push(child); + child[_resolvePrototypesHelper](ids, ancestors); + } else { + break; + } + } + continue; + } + if (value !== null) { + value[$resolvePrototypes](ids, ancestors); + if (protoValue) { + value[_applyPrototype](protoValue, ids, ancestors); + } + continue; + } + if (protoValue !== null) { + const child = protoValue[$clone](); + child[_parent] = this; + this[name] = child; + this[_children].push(child); + child[_resolvePrototypesHelper](ids, ancestors); + } + } + } + static [_cloneAttribute](obj) { + if (Array.isArray(obj)) { + return obj.map(x => XFAObject[_cloneAttribute](x)); + } + if (typeof obj === "object" && obj !== null) { + return Object.assign({}, obj); + } + return obj; + } + [$clone]() { + const clone = Object.create(Object.getPrototypeOf(this)); + for (const $symbol of Object.getOwnPropertySymbols(this)) { + try { + clone[$symbol] = this[$symbol]; + } catch { + shadow(clone, $symbol, this[$symbol]); + } + } + clone[$uid] = `${clone[$nodeName]}${uid++}`; + clone[_children] = []; + for (const name of Object.getOwnPropertyNames(this)) { + if (this[_attributeNames].has(name)) { + clone[name] = XFAObject[_cloneAttribute](this[name]); + continue; + } + const value = this[name]; + clone[name] = value instanceof XFAObjectArray ? new XFAObjectArray(value[_max]) : null; + } + for (const child of this[_children]) { + const name = child[$nodeName]; + const clonedChild = child[$clone](); + clone[_children].push(clonedChild); + clonedChild[_parent] = clone; + if (clone[name] === null) { + clone[name] = clonedChild; + } else { + clone[name][_children].push(clonedChild); + } + } + return clone; + } + [$getChildren](name = null) { + if (!name) { + return this[_children]; + } + return this[_children].filter(c => c[$nodeName] === name); + } + [$getChildrenByClass](name) { + return this[name]; + } + [$getChildrenByName](name, allTransparent, first = true) { + return Array.from(this[$getChildrenByNameIt](name, allTransparent, first)); + } + *[$getChildrenByNameIt](name, allTransparent, first = true) { + if (name === "parent") { + yield this[_parent]; + return; + } + for (const child of this[_children]) { + if (child[$nodeName] === name) { + yield child; + } + if (child.name === name) { + yield child; + } + if (allTransparent || child[$isTransparent]()) { + yield* child[$getChildrenByNameIt](name, allTransparent, false); + } + } + if (first && this[_attributeNames].has(name)) { + yield new XFAAttribute(this, name, this[name]); + } + } +} +class XFAObjectArray { + constructor(max = Infinity) { + this[_max] = max; + this[_children] = []; + } + get isXFAObject() { + return false; + } + get isXFAObjectArray() { + return true; + } + push(child) { + const len = this[_children].length; + if (len <= this[_max]) { + this[_children].push(child); + return true; + } + warn(`XFA - node "${child[$nodeName]}" accepts no more than ${this[_max]} children`); + return false; + } + isEmpty() { + return this[_children].length === 0; + } + dump() { + return this[_children].length === 1 ? this[_children][0][$dump]() : this[_children].map(x => x[$dump]()); + } + [$clone]() { + const clone = new XFAObjectArray(this[_max]); + clone[_children] = this[_children].map(c => c[$clone]()); + return clone; + } + get children() { + return this[_children]; + } + clear() { + this[_children].length = 0; + } +} +class XFAAttribute { + constructor(node, name, value) { + this[_parent] = node; + this[$nodeName] = name; + this[$content] = value; + this[$consumed] = false; + this[$uid] = `attribute${uid++}`; + } + [$getParent]() { + return this[_parent]; + } + [$isDataValue]() { + return true; + } + [$getDataValue]() { + return this[$content].trim(); + } + [$setValue](value) { + value = value.value || ""; + this[$content] = value.toString(); + } + [$text]() { + return this[$content]; + } + [$isDescendent](parent) { + return this[_parent] === parent || this[_parent][$isDescendent](parent); + } +} +class XmlObject extends XFAObject { + constructor(nsId, name, attributes = {}) { + super(nsId, name); + this[$content] = ""; + this[_dataValue] = null; + if (name !== "#text") { + const map = new Map(); + this[_attributes] = map; + for (const [attrName, value] of Object.entries(attributes)) { + map.set(attrName, new XFAAttribute(this, attrName, value)); + } + if (attributes.hasOwnProperty($nsAttributes)) { + const dataNode = attributes[$nsAttributes].xfa.dataNode; + if (dataNode !== undefined) { + if (dataNode === "dataGroup") { + this[_dataValue] = false; + } else if (dataNode === "dataValue") { + this[_dataValue] = true; + } + } + } + } + this[$consumed] = false; + } + [$toString](buf) { + const tagName = this[$nodeName]; + if (tagName === "#text") { + buf.push(encodeToXmlString(this[$content])); + return; + } + const utf8TagName = utf8StringToString(tagName); + const prefix = this[$namespaceId] === NS_DATASETS ? "xfa:" : ""; + buf.push(`<${prefix}${utf8TagName}`); + for (const [name, value] of this[_attributes]) { + const utf8Name = utf8StringToString(name); + buf.push(` ${utf8Name}="${encodeToXmlString(value[$content])}"`); + } + if (this[_dataValue] !== null) { + if (this[_dataValue]) { + buf.push(` xfa:dataNode="dataValue"`); + } else { + buf.push(` xfa:dataNode="dataGroup"`); + } + } + if (!this[$content] && this[_children].length === 0) { + buf.push("/>"); + return; + } + buf.push(">"); + if (this[$content]) { + if (typeof this[$content] === "string") { + buf.push(encodeToXmlString(this[$content])); + } else { + this[$content][$toString](buf); + } + } else { + for (const child of this[_children]) { + child[$toString](buf); + } + } + buf.push(``); + } + [$onChild](child) { + if (this[$content]) { + const node = new XmlObject(this[$namespaceId], "#text"); + this[$appendChild](node); + node[$content] = this[$content]; + this[$content] = ""; + } + this[$appendChild](child); + return true; + } + [$onText](str) { + this[$content] += str; + } + [$finalize]() { + if (this[$content] && this[_children].length > 0) { + const node = new XmlObject(this[$namespaceId], "#text"); + this[$appendChild](node); + node[$content] = this[$content]; + delete this[$content]; + } + } + [$toHTML]() { + if (this[$nodeName] === "#text") { + return HTMLResult.success({ + name: "#text", + value: this[$content] + }); + } + return HTMLResult.EMPTY; + } + [$getChildren](name = null) { + if (!name) { + return this[_children]; + } + return this[_children].filter(c => c[$nodeName] === name); + } + [$getAttributes]() { + return this[_attributes]; + } + [$getChildrenByClass](name) { + const value = this[_attributes].get(name); + if (value !== undefined) { + return value; + } + return this[$getChildren](name); + } + *[$getChildrenByNameIt](name, allTransparent) { + const value = this[_attributes].get(name); + if (value) { + yield value; + } + for (const child of this[_children]) { + if (child[$nodeName] === name) { + yield child; + } + if (allTransparent) { + yield* child[$getChildrenByNameIt](name, allTransparent); + } + } + } + *[$getAttributeIt](name, skipConsumed) { + const value = this[_attributes].get(name); + if (value && (!skipConsumed || !value[$consumed])) { + yield value; + } + for (const child of this[_children]) { + yield* child[$getAttributeIt](name, skipConsumed); + } + } + *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) { + for (const child of this[_children]) { + if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) { + yield child; + } + if (allTransparent) { + yield* child[$getRealChildrenByNameIt](name, allTransparent, skipConsumed); + } + } + } + [$isDataValue]() { + if (this[_dataValue] === null) { + return this[_children].length === 0 || this[_children][0][$namespaceId] === NamespaceIds.xhtml.id; + } + return this[_dataValue]; + } + [$getDataValue]() { + if (this[_dataValue] === null) { + if (this[_children].length === 0) { + return this[$content].trim(); + } + if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) { + return this[_children][0][$text]().trim(); + } + return null; + } + return this[$content].trim(); + } + [$setValue](value) { + value = value.value || ""; + this[$content] = value.toString(); + } + [$dump](hasNS = false) { + const dumped = Object.create(null); + if (hasNS) { + dumped.$ns = this[$namespaceId]; + } + if (this[$content]) { + dumped.$content = this[$content]; + } + dumped.$name = this[$nodeName]; + dumped.children = []; + for (const child of this[_children]) { + dumped.children.push(child[$dump](hasNS)); + } + dumped.attributes = Object.create(null); + for (const [name, value] of this[_attributes]) { + dumped.attributes[name] = value[$content]; + } + return dumped; + } +} +class ContentObject extends XFAObject { + constructor(nsId, name) { + super(nsId, name); + this[$content] = ""; + } + [$onText](text) { + this[$content] += text; + } + [$finalize]() {} +} +class OptionObject extends ContentObject { + constructor(nsId, name, options) { + super(nsId, name); + this[_options] = options; + } + [$finalize]() { + this[$content] = getKeyword({ + data: this[$content], + defaultValue: this[_options][0], + validate: k => this[_options].includes(k) + }); + } + [$clean](builder) { + super[$clean](builder); + delete this[_options]; + } +} +class StringObject extends ContentObject { + [$finalize]() { + this[$content] = this[$content].trim(); + } +} +class IntegerObject extends ContentObject { + constructor(nsId, name, defaultValue, validator) { + super(nsId, name); + this[_defaultValue] = defaultValue; + this[_validator] = validator; + } + [$finalize]() { + this[$content] = getInteger({ + data: this[$content], + defaultValue: this[_defaultValue], + validate: this[_validator] + }); + } + [$clean](builder) { + super[$clean](builder); + delete this[_defaultValue]; + delete this[_validator]; + } +} +class Option01 extends IntegerObject { + constructor(nsId, name) { + super(nsId, name, 0, n => n === 1); + } +} +class Option10 extends IntegerObject { + constructor(nsId, name) { + super(nsId, name, 1, n => n === 0); + } +} + +;// ./src/core/xfa/html_utils.js + + + + + + +function measureToString(m) { + if (typeof m === "string") { + return "0px"; + } + return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`; +} +const converters = { + anchorType(node, style) { + const parent = node[$getSubformParent](); + if (!parent || parent.layout && parent.layout !== "position") { + return; + } + if (!("transform" in style)) { + style.transform = ""; + } + switch (node.anchorType) { + case "bottomCenter": + style.transform += "translate(-50%, -100%)"; + break; + case "bottomLeft": + style.transform += "translate(0,-100%)"; + break; + case "bottomRight": + style.transform += "translate(-100%,-100%)"; + break; + case "middleCenter": + style.transform += "translate(-50%,-50%)"; + break; + case "middleLeft": + style.transform += "translate(0,-50%)"; + break; + case "middleRight": + style.transform += "translate(-100%,-50%)"; + break; + case "topCenter": + style.transform += "translate(-50%,0)"; + break; + case "topRight": + style.transform += "translate(-100%,0)"; + break; + } + }, + dimensions(node, style) { + const parent = node[$getSubformParent](); + let width = node.w; + const height = node.h; + if (parent.layout?.includes("row")) { + const extra = parent[$extra]; + const colSpan = node.colSpan; + let w; + if (colSpan === -1) { + w = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn)); + extra.currentColumn = 0; + } else { + w = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan)); + extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length; + } + if (!isNaN(w)) { + width = node.w = w; + } + } + style.width = width !== "" ? measureToString(width) : "auto"; + style.height = height !== "" ? measureToString(height) : "auto"; + }, + position(node, style) { + const parent = node[$getSubformParent](); + if (parent?.layout && parent.layout !== "position") { + return; + } + style.position = "absolute"; + style.left = measureToString(node.x); + style.top = measureToString(node.y); + }, + rotate(node, style) { + if (node.rotate) { + if (!("transform" in style)) { + style.transform = ""; + } + style.transform += `rotate(-${node.rotate}deg)`; + style.transformOrigin = "top left"; + } + }, + presence(node, style) { + switch (node.presence) { + case "invisible": + style.visibility = "hidden"; + break; + case "hidden": + case "inactive": + style.display = "none"; + break; + } + }, + hAlign(node, style) { + if (node[$nodeName] === "para") { + switch (node.hAlign) { + case "justifyAll": + style.textAlign = "justify-all"; + break; + case "radix": + style.textAlign = "left"; + break; + default: + style.textAlign = node.hAlign; + } + } else { + switch (node.hAlign) { + case "left": + style.alignSelf = "start"; + break; + case "center": + style.alignSelf = "center"; + break; + case "right": + style.alignSelf = "end"; + break; + } + } + }, + margin(node, style) { + if (node.margin) { + style.margin = node.margin[$toStyle]().margin; + } + } +}; +function setMinMaxDimensions(node, style) { + const parent = node[$getSubformParent](); + if (parent.layout === "position") { + if (node.minW > 0) { + style.minWidth = measureToString(node.minW); + } + if (node.maxW > 0) { + style.maxWidth = measureToString(node.maxW); + } + if (node.minH > 0) { + style.minHeight = measureToString(node.minH); + } + if (node.maxH > 0) { + style.maxHeight = measureToString(node.maxH); + } + } +} +function layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) { + const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder); + if (typeof text === "string") { + measure.addString(text); + } else { + text[$pushGlyphs](measure); + } + return measure.compute(width); +} +function layoutNode(node, availableSpace) { + let height = null; + let width = null; + let isBroken = false; + if ((!node.w || !node.h) && node.value) { + let marginH = 0; + let marginV = 0; + if (node.margin) { + marginH = node.margin.leftInset + node.margin.rightInset; + marginV = node.margin.topInset + node.margin.bottomInset; + } + let lineHeight = null; + let margin = null; + if (node.para) { + margin = Object.create(null); + lineHeight = node.para.lineHeight === "" ? null : node.para.lineHeight; + margin.top = node.para.spaceAbove === "" ? 0 : node.para.spaceAbove; + margin.bottom = node.para.spaceBelow === "" ? 0 : node.para.spaceBelow; + margin.left = node.para.marginLeft === "" ? 0 : node.para.marginLeft; + margin.right = node.para.marginRight === "" ? 0 : node.para.marginRight; + } + let font = node.font; + if (!font) { + const root = node[$getTemplateRoot](); + let parent = node[$getParent](); + while (parent && parent !== root) { + if (parent.font) { + font = parent.font; + break; + } + parent = parent[$getParent](); + } + } + const maxWidth = (node.w || availableSpace.width) - marginH; + const fontFinder = node[$globalData].fontFinder; + if (node.value.exData && node.value.exData[$content] && node.value.exData.contentType === "text/html") { + const res = layoutText(node.value.exData[$content], font, margin, lineHeight, fontFinder, maxWidth); + width = res.width; + height = res.height; + isBroken = res.isBroken; + } else { + const text = node.value[$text](); + if (text) { + const res = layoutText(text, font, margin, lineHeight, fontFinder, maxWidth); + width = res.width; + height = res.height; + isBroken = res.isBroken; + } + } + if (width !== null && !node.w) { + width += marginH; + } + if (height !== null && !node.h) { + height += marginV; + } + } + return { + w: width, + h: height, + isBroken + }; +} +function computeBbox(node, html, availableSpace) { + let bbox; + if (node.w !== "" && node.h !== "") { + bbox = [node.x, node.y, node.w, node.h]; + } else { + if (!availableSpace) { + return null; + } + let width = node.w; + if (width === "") { + if (node.maxW === 0) { + const parent = node[$getSubformParent](); + width = parent.layout === "position" && parent.w !== "" ? 0 : node.minW; + } else { + width = Math.min(node.maxW, availableSpace.width); + } + html.attributes.style.width = measureToString(width); + } + let height = node.h; + if (height === "") { + if (node.maxH === 0) { + const parent = node[$getSubformParent](); + height = parent.layout === "position" && parent.h !== "" ? 0 : node.minH; + } else { + height = Math.min(node.maxH, availableSpace.height); + } + html.attributes.style.height = measureToString(height); + } + bbox = [node.x, node.y, width, height]; + } + return bbox; +} +function fixDimensions(node) { + const parent = node[$getSubformParent](); + if (parent.layout?.includes("row")) { + const extra = parent[$extra]; + const colSpan = node.colSpan; + let width; + if (colSpan === -1) { + width = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn)); + } else { + width = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan)); + } + if (!isNaN(width)) { + node.w = width; + } + } + if (parent.layout && parent.layout !== "position") { + node.x = node.y = 0; + } + if (node.layout === "table") { + if (node.w === "" && Array.isArray(node.columnWidths)) { + node.w = Math.sumPrecise(node.columnWidths); + } + } +} +function layoutClass(node) { + switch (node.layout) { + case "position": + return "xfaPosition"; + case "lr-tb": + return "xfaLrTb"; + case "rl-row": + return "xfaRlRow"; + case "rl-tb": + return "xfaRlTb"; + case "row": + return "xfaRow"; + case "table": + return "xfaTable"; + case "tb": + return "xfaTb"; + default: + return "xfaPosition"; + } +} +function toStyle(node, ...names) { + const style = Object.create(null); + for (const name of names) { + const value = node[name]; + if (value === null) { + continue; + } + if (converters.hasOwnProperty(name)) { + converters[name](node, style); + continue; + } + if (value instanceof XFAObject) { + const newStyle = value[$toStyle](); + if (newStyle) { + Object.assign(style, newStyle); + } else { + warn(`(DEBUG) - XFA - style for ${name} not implemented yet`); + } + } + } + return style; +} +function createWrapper(node, html) { + const { + attributes + } = html; + const { + style + } = attributes; + const wrapper = { + name: "div", + attributes: { + class: ["xfaWrapper"], + style: Object.create(null) + }, + children: [] + }; + attributes.class.push("xfaWrapped"); + if (node.border) { + const { + widths, + insets + } = node.border[$extra]; + let width, height; + let top = insets[0]; + let left = insets[3]; + const insetsH = insets[0] + insets[2]; + const insetsW = insets[1] + insets[3]; + switch (node.border.hand) { + case "even": + top -= widths[0] / 2; + left -= widths[3] / 2; + width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`; + height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`; + break; + case "left": + top -= widths[0]; + left -= widths[3]; + width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`; + height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`; + break; + case "right": + width = insetsW ? `calc(100% - ${insetsW}px)` : "100%"; + height = insetsH ? `calc(100% - ${insetsH}px)` : "100%"; + break; + } + const classNames = ["xfaBorder"]; + if (isPrintOnly(node.border)) { + classNames.push("xfaPrintOnly"); + } + const border = { + name: "div", + attributes: { + class: classNames, + style: { + top: `${top}px`, + left: `${left}px`, + width, + height + } + }, + children: [] + }; + for (const key of ["border", "borderWidth", "borderColor", "borderRadius", "borderStyle"]) { + if (style[key] !== undefined) { + border.attributes.style[key] = style[key]; + delete style[key]; + } + } + wrapper.children.push(border, html); + } else { + wrapper.children.push(html); + } + for (const key of ["background", "backgroundClip", "top", "left", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight", "transform", "transformOrigin", "visibility"]) { + if (style[key] !== undefined) { + wrapper.attributes.style[key] = style[key]; + delete style[key]; + } + } + wrapper.attributes.style.position = style.position === "absolute" ? "absolute" : "relative"; + delete style.position; + if (style.alignSelf) { + wrapper.attributes.style.alignSelf = style.alignSelf; + delete style.alignSelf; + } + return wrapper; +} +function fixTextIndent(styles) { + const indent = getMeasurement(styles.textIndent, "0px"); + if (indent >= 0) { + return; + } + const align = styles.textAlign === "right" ? "right" : "left"; + const name = "padding" + (align === "left" ? "Left" : "Right"); + const padding = getMeasurement(styles[name], "0px"); + styles[name] = `${padding - indent}px`; +} +function setAccess(node, classNames) { + switch (node.access) { + case "nonInteractive": + classNames.push("xfaNonInteractive"); + break; + case "readOnly": + classNames.push("xfaReadOnly"); + break; + case "protected": + classNames.push("xfaDisabled"); + break; + } +} +function isPrintOnly(node) { + return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === "print"; +} +function getCurrentPara(node) { + const stack = node[$getTemplateRoot]()[$extra].paraStack; + return stack.length ? stack.at(-1) : null; +} +function setPara(node, nodeStyle, value) { + if (value.attributes.class?.includes("xfaRich")) { + if (nodeStyle) { + if (node.h === "") { + nodeStyle.height = "auto"; + } + if (node.w === "") { + nodeStyle.width = "auto"; + } + } + const para = getCurrentPara(node); + if (para) { + const valueStyle = value.attributes.style; + valueStyle.display = "flex"; + valueStyle.flexDirection = "column"; + switch (para.vAlign) { + case "top": + valueStyle.justifyContent = "start"; + break; + case "bottom": + valueStyle.justifyContent = "end"; + break; + case "middle": + valueStyle.justifyContent = "center"; + break; + } + const paraStyle = para[$toStyle](); + for (const [key, val] of Object.entries(paraStyle)) { + if (!(key in valueStyle)) { + valueStyle[key] = val; + } + } + } + } +} +function setFontFamily(xfaFont, node, fontFinder, style) { + if (!fontFinder) { + delete style.fontFamily; + return; + } + const name = stripQuotes(xfaFont.typeface); + style.fontFamily = `"${name}"`; + const typeface = fontFinder.find(name); + if (typeface) { + const { + fontFamily + } = typeface.regular.cssFontInfo; + if (fontFamily !== name) { + style.fontFamily = `"${fontFamily}"`; + } + const para = getCurrentPara(node); + if (para && para.lineHeight !== "") { + return; + } + if (style.lineHeight) { + return; + } + const pdfFont = selectFont(xfaFont, typeface); + if (pdfFont) { + style.lineHeight = Math.max(1.2, pdfFont.lineHeight); + } + } +} +function fixURL(str) { + const absoluteUrl = createValidAbsoluteUrl(str, null, { + addDefaultProtocol: true, + tryConvertEncoding: true + }); + return absoluteUrl ? absoluteUrl.href : null; +} + +;// ./src/core/xfa/layout.js + + + +function createLine(node, children) { + return { + name: "div", + attributes: { + class: [node.layout === "lr-tb" ? "xfaLr" : "xfaRl"] + }, + children + }; +} +function flushHTML(node) { + if (!node[$extra]) { + return null; + } + const attributes = node[$extra].attributes; + const html = { + name: "div", + attributes, + children: node[$extra].children + }; + if (node[$extra].failingNode) { + const htmlFromFailing = node[$extra].failingNode[$flushHTML](); + if (htmlFromFailing) { + if (node.layout.endsWith("-tb")) { + html.children.push(createLine(node, [htmlFromFailing])); + } else { + html.children.push(htmlFromFailing); + } + } + } + if (html.children.length === 0) { + return null; + } + return html; +} +function addHTML(node, html, bbox) { + const extra = node[$extra]; + const availableSpace = extra.availableSpace; + const [x, y, w, h] = bbox; + switch (node.layout) { + case "position": + { + extra.width = Math.max(extra.width, x + w); + extra.height = Math.max(extra.height, y + h); + extra.children.push(html); + break; + } + case "lr-tb": + case "rl-tb": + if (!extra.line || extra.attempt === 1) { + extra.line = createLine(node, []); + extra.children.push(extra.line); + extra.numberInLine = 0; + } + extra.numberInLine += 1; + extra.line.children.push(html); + if (extra.attempt === 0) { + extra.currentWidth += w; + extra.height = Math.max(extra.height, extra.prevHeight + h); + } else { + extra.currentWidth = w; + extra.prevHeight = extra.height; + extra.height += h; + extra.attempt = 0; + } + extra.width = Math.max(extra.width, extra.currentWidth); + break; + case "rl-row": + case "row": + { + extra.children.push(html); + extra.width += w; + extra.height = Math.max(extra.height, h); + const height = measureToString(extra.height); + for (const child of extra.children) { + child.attributes.style.height = height; + } + break; + } + case "table": + { + extra.width = MathClamp(w, extra.width, availableSpace.width); + extra.height += h; + extra.children.push(html); + break; + } + case "tb": + { + extra.width = MathClamp(w, extra.width, availableSpace.width); + extra.height += h; + extra.children.push(html); + break; + } + } +} +function getAvailableSpace(node) { + const availableSpace = node[$extra].availableSpace; + const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0; + const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0; + switch (node.layout) { + case "lr-tb": + case "rl-tb": + if (node[$extra].attempt === 0) { + return { + width: availableSpace.width - marginH - node[$extra].currentWidth, + height: availableSpace.height - marginV - node[$extra].prevHeight + }; + } + return { + width: availableSpace.width - marginH, + height: availableSpace.height - marginV - node[$extra].height + }; + case "rl-row": + case "row": + const width = Math.sumPrecise(node[$extra].columnWidths.slice(node[$extra].currentColumn)); + return { + width, + height: availableSpace.height - marginH + }; + case "table": + case "tb": + return { + width: availableSpace.width - marginH, + height: availableSpace.height - marginV - node[$extra].height + }; + case "position": + default: + return availableSpace; + } +} +function getTransformedBBox(node) { + let w = node.w === "" ? NaN : node.w; + let h = node.h === "" ? NaN : node.h; + let [centerX, centerY] = [0, 0]; + switch (node.anchorType || "") { + case "bottomCenter": + [centerX, centerY] = [w / 2, h]; + break; + case "bottomLeft": + [centerX, centerY] = [0, h]; + break; + case "bottomRight": + [centerX, centerY] = [w, h]; + break; + case "middleCenter": + [centerX, centerY] = [w / 2, h / 2]; + break; + case "middleLeft": + [centerX, centerY] = [0, h / 2]; + break; + case "middleRight": + [centerX, centerY] = [w, h / 2]; + break; + case "topCenter": + [centerX, centerY] = [w / 2, 0]; + break; + case "topRight": + [centerX, centerY] = [w, 0]; + break; + } + let x, y; + switch (node.rotate || 0) { + case 0: + [x, y] = [-centerX, -centerY]; + break; + case 90: + [x, y] = [-centerY, centerX]; + [w, h] = [h, -w]; + break; + case 180: + [x, y] = [centerX, centerY]; + [w, h] = [-w, -h]; + break; + case 270: + [x, y] = [centerY, -centerX]; + [w, h] = [-h, w]; + break; + } + return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)]; +} +function checkDimensions(node, space) { + if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) { + return true; + } + if (node.w === 0 || node.h === 0) { + return true; + } + const ERROR = 2; + const parent = node[$getSubformParent](); + const attempt = parent[$extra]?.attempt || 0; + const [, y, w, h] = getTransformedBBox(node); + switch (parent.layout) { + case "lr-tb": + case "rl-tb": + if (attempt === 0) { + if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) { + if (node.h !== "" && Math.round(h - space.height) > ERROR) { + return false; + } + if (node.w !== "") { + if (Math.round(w - space.width) <= ERROR) { + return true; + } + if (parent[$extra].numberInLine === 0) { + return space.height > ERROR; + } + return false; + } + return space.width > ERROR; + } + if (node.w !== "") { + return Math.round(w - space.width) <= ERROR; + } + return space.width > ERROR; + } + if (node[$getTemplateRoot]()[$extra].noLayoutFailure) { + return true; + } + if (node.h !== "" && Math.round(h - space.height) > ERROR) { + return false; + } + if (node.w === "" || Math.round(w - space.width) <= ERROR) { + return space.height > ERROR; + } + if (parent[$isThereMoreWidth]()) { + return false; + } + return space.height > ERROR; + case "table": + case "tb": + if (node[$getTemplateRoot]()[$extra].noLayoutFailure) { + return true; + } + if (node.h !== "" && !node[$isSplittable]()) { + return Math.round(h - space.height) <= ERROR; + } + if (node.w === "" || Math.round(w - space.width) <= ERROR) { + return space.height > ERROR; + } + if (parent[$isThereMoreWidth]()) { + return false; + } + return space.height > ERROR; + case "position": + if (node[$getTemplateRoot]()[$extra].noLayoutFailure) { + return true; + } + if (node.h === "" || Math.round(h + y - space.height) <= ERROR) { + return true; + } + const area = node[$getTemplateRoot]()[$extra].currentContentArea; + return h + y > area.h; + case "rl-row": + case "row": + if (node[$getTemplateRoot]()[$extra].noLayoutFailure) { + return true; + } + if (node.h !== "") { + return Math.round(h - space.height) <= ERROR; + } + return true; + default: + return true; + } +} + +;// ./src/core/xfa/template.js + + + + + + + + + + +const TEMPLATE_NS_ID = NamespaceIds.template.id; +const SVG_NS = "http://www.w3.org/2000/svg"; +const MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2; +const MAX_EMPTY_PAGES = 3; +const DEFAULT_TAB_INDEX = 5000; +const HEADING_PATTERN = /^H(\d+)$/; +const MIMES = new Set(["image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/png", "image/apng", "image/x-png", "image/bmp", "image/x-ms-bmp", "image/tiff", "image/tif", "application/octet-stream"]); +const IMAGES_HEADERS = [[[0x42, 0x4d], "image/bmp"], [[0xff, 0xd8, 0xff], "image/jpeg"], [[0x49, 0x49, 0x2a, 0x00], "image/tiff"], [[0x4d, 0x4d, 0x00, 0x2a], "image/tiff"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], "image/gif"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], "image/png"]]; +function getBorderDims(node) { + if (!node || !node.border) { + return { + w: 0, + h: 0 + }; + } + const borderExtra = node.border[$getExtra](); + if (!borderExtra) { + return { + w: 0, + h: 0 + }; + } + return { + w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2], + h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3] + }; +} +function hasMargin(node) { + return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || node.margin.leftInset); +} +function _setValue(templateNode, value) { + if (!templateNode.value) { + const nodeValue = new Value({}); + templateNode[$appendChild](nodeValue); + templateNode.value = nodeValue; + } + templateNode.value[$setValue](value); +} +function* getContainedChildren(node) { + for (const child of node[$getChildren]()) { + if (child instanceof SubformSet) { + yield* child[$getContainedChildren](); + continue; + } + yield child; + } +} +function isRequired(node) { + return node.validate?.nullTest === "error"; +} +function setTabIndex(node) { + while (node) { + if (!node.traversal) { + node[$tabIndex] = node[$getParent]()[$tabIndex]; + return; + } + if (node[$tabIndex]) { + return; + } + let next = null; + for (const child of node.traversal[$getChildren]()) { + if (child.operation === "next") { + next = child; + break; + } + } + if (!next || !next.ref) { + node[$tabIndex] = node[$getParent]()[$tabIndex]; + return; + } + const root = node[$getTemplateRoot](); + node[$tabIndex] = ++root[$tabIndex]; + const ref = root[$searchNode](next.ref, node); + if (!ref) { + return; + } + node = ref[0]; + } +} +function applyAssist(obj, attributes) { + const assist = obj.assist; + if (assist) { + const assistTitle = assist[$toHTML](); + if (assistTitle) { + attributes.title = assistTitle; + } + const role = assist.role; + const match = role.match(HEADING_PATTERN); + if (match) { + const ariaRole = "heading"; + const ariaLevel = match[1]; + attributes.role = ariaRole; + attributes["aria-level"] = ariaLevel; + } + } + if (obj.layout === "table") { + attributes.role = "table"; + } else if (obj.layout === "row") { + attributes.role = "row"; + } else { + const parent = obj[$getParent](); + if (parent.layout === "row") { + attributes.role = parent.assist?.role === "TH" ? "columnheader" : "cell"; + } + } +} +function ariaLabel(obj) { + if (!obj.assist) { + return null; + } + const assist = obj.assist; + if (assist.speak && assist.speak[$content] !== "") { + return assist.speak[$content]; + } + if (assist.toolTip) { + return assist.toolTip[$content]; + } + return null; +} +function valueToHtml(value) { + return HTMLResult.success({ + name: "div", + attributes: { + class: ["xfaRich"], + style: Object.create(null) + }, + children: [{ + name: "span", + attributes: { + style: Object.create(null) + }, + value + }] + }); +} +function setFirstUnsplittable(node) { + const root = node[$getTemplateRoot](); + if (root[$extra].firstUnsplittable === null) { + root[$extra].firstUnsplittable = node; + root[$extra].noLayoutFailure = true; + } +} +function unsetFirstUnsplittable(node) { + const root = node[$getTemplateRoot](); + if (root[$extra].firstUnsplittable === node) { + root[$extra].noLayoutFailure = false; + } +} +function handleBreak(node) { + if (node[$extra]) { + return false; + } + node[$extra] = Object.create(null); + if (node.targetType === "auto") { + return false; + } + const root = node[$getTemplateRoot](); + let target = null; + if (node.target) { + target = root[$searchNode](node.target, node[$getParent]()); + if (!target) { + return false; + } + target = target[0]; + } + const { + currentPageArea, + currentContentArea + } = root[$extra]; + if (node.targetType === "pageArea") { + if (!(target instanceof PageArea)) { + target = null; + } + if (node.startNew) { + node[$extra].target = target || currentPageArea; + return true; + } else if (target && target !== currentPageArea) { + node[$extra].target = target; + return true; + } + return false; + } + if (!(target instanceof ContentArea)) { + target = null; + } + const pageArea = target && target[$getParent](); + let index; + let nextPageArea = pageArea; + if (node.startNew) { + if (target) { + const contentAreas = pageArea.contentArea.children; + const indexForCurrent = contentAreas.indexOf(currentContentArea); + const indexForTarget = contentAreas.indexOf(target); + if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) { + nextPageArea = null; + } + index = indexForTarget - 1; + } else { + index = currentPageArea.contentArea.children.indexOf(currentContentArea); + } + } else if (target && target !== currentContentArea) { + const contentAreas = pageArea.contentArea.children; + index = contentAreas.indexOf(target) - 1; + nextPageArea = pageArea === currentPageArea ? null : pageArea; + } else { + return false; + } + node[$extra].target = nextPageArea; + node[$extra].index = index; + return true; +} +function handleOverflow(node, extraNode, space) { + const root = node[$getTemplateRoot](); + const saved = root[$extra].noLayoutFailure; + const savedMethod = extraNode[$getSubformParent]; + extraNode[$getSubformParent] = () => node; + root[$extra].noLayoutFailure = true; + const res = extraNode[$toHTML](space); + node[$addHTML](res.html, res.bbox); + root[$extra].noLayoutFailure = saved; + extraNode[$getSubformParent] = savedMethod; +} +class AppearanceFilter extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "appearanceFilter"); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Arc extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "arc", true); + this.circular = getInteger({ + data: attributes.circular, + defaultValue: 0, + validate: x => x === 1 + }); + this.hand = getStringOption(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.startAngle = getFloat({ + data: attributes.startAngle, + defaultValue: 0, + validate: x => true + }); + this.sweepAngle = getFloat({ + data: attributes.sweepAngle, + defaultValue: 360, + validate: x => true + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.edge = null; + this.fill = null; + } + [$toHTML]() { + const edge = this.edge || new Edge({}); + const edgeStyle = edge[$toStyle](); + const style = Object.create(null); + if (this.fill?.presence === "visible") { + Object.assign(style, this.fill[$toStyle]()); + } else { + style.fill = "transparent"; + } + style.strokeWidth = measureToString(edge.presence === "visible" ? edge.thickness : 0); + style.stroke = edgeStyle.color; + let arc; + const attributes = { + xmlns: SVG_NS, + style: { + width: "100%", + height: "100%", + overflow: "visible" + } + }; + if (this.sweepAngle === 360) { + arc = { + name: "ellipse", + attributes: { + xmlns: SVG_NS, + cx: "50%", + cy: "50%", + rx: "50%", + ry: "50%", + style + } + }; + } else { + const startAngle = this.startAngle * Math.PI / 180; + const sweepAngle = this.sweepAngle * Math.PI / 180; + const largeArc = this.sweepAngle > 180 ? 1 : 0; + const [x1, y1, x2, y2] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + Math.cos(startAngle + sweepAngle)), 50 * (1 - Math.sin(startAngle + sweepAngle))]; + arc = { + name: "path", + attributes: { + xmlns: SVG_NS, + d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`, + vectorEffect: "non-scaling-stroke", + style + } + }; + Object.assign(attributes, { + viewBox: "0 0 100 100", + preserveAspectRatio: "none" + }); + } + const svg = { + name: "svg", + children: [arc], + attributes + }; + const parent = this[$getParent]()[$getParent](); + if (hasMargin(parent)) { + return HTMLResult.success({ + name: "div", + attributes: { + style: { + display: "inline", + width: "100%", + height: "100%" + } + }, + children: [svg] + }); + } + svg.attributes.style.position = "absolute"; + return HTMLResult.success(svg); + } +} +class Area extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "area", true); + this.colSpan = getInteger({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relevant = getRelevant(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.x = getMeasurement(attributes.x, "0pt"); + this.y = getMeasurement(attributes.y, "0pt"); + this.desc = null; + this.extras = null; + this.area = new XFAObjectArray(); + this.draw = new XFAObjectArray(); + this.exObject = new XFAObjectArray(); + this.exclGroup = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + this.subformSet = new XFAObjectArray(); + } + *[$getContainedChildren]() { + yield* getContainedChildren(this); + } + [$isTransparent]() { + return true; + } + [$isBindable]() { + return true; + } + [$addHTML](html, bbox) { + const [x, y, w, h] = bbox; + this[$extra].width = Math.max(this[$extra].width, x + w); + this[$extra].height = Math.max(this[$extra].height, y + h); + this[$extra].children.push(html); + } + [$getAvailableSpace]() { + return this[$extra].availableSpace; + } + [$toHTML](availableSpace) { + const style = toStyle(this, "position"); + const attributes = { + style, + id: this[$uid], + class: ["xfaArea"] + }; + if (isPrintOnly(this)) { + attributes.class.push("xfaPrintOnly"); + } + if (this.name) { + attributes.xfaName = this.name; + } + const children = []; + this[$extra] = { + children, + width: 0, + height: 0, + availableSpace + }; + const result = this[$childrenToHTML]({ + filter: new Set(["area", "draw", "field", "exclGroup", "subform", "subformSet"]), + include: true + }); + if (!result.success) { + if (result.isBreak()) { + return result; + } + delete this[$extra]; + return HTMLResult.FAILURE; + } + style.width = measureToString(this[$extra].width); + style.height = measureToString(this[$extra].height); + const html = { + name: "div", + attributes, + children + }; + const bbox = [this.x, this.y, this[$extra].width, this[$extra].height]; + delete this[$extra]; + return HTMLResult.success(html, bbox); + } +} +class Assist extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "assist", true); + this.id = attributes.id || ""; + this.role = attributes.role || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.speak = null; + this.toolTip = null; + } + [$toHTML]() { + return this.toolTip?.[$content] || null; + } +} +class Barcode extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "barcode", true); + this.charEncoding = getKeyword({ + data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : "", + defaultValue: "", + validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", "shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/) + }); + this.checksum = getStringOption(attributes.checksum, ["none", "1mod10", "1mod10_1mod11", "2mod10", "auto"]); + this.dataColumnCount = getInteger({ + data: attributes.dataColumnCount, + defaultValue: -1, + validate: x => x >= 0 + }); + this.dataLength = getInteger({ + data: attributes.dataLength, + defaultValue: -1, + validate: x => x >= 0 + }); + this.dataPrep = getStringOption(attributes.dataPrep, ["none", "flateCompress"]); + this.dataRowCount = getInteger({ + data: attributes.dataRowCount, + defaultValue: -1, + validate: x => x >= 0 + }); + this.endChar = attributes.endChar || ""; + this.errorCorrectionLevel = getInteger({ + data: attributes.errorCorrectionLevel, + defaultValue: -1, + validate: x => x >= 0 && x <= 8 + }); + this.id = attributes.id || ""; + this.moduleHeight = getMeasurement(attributes.moduleHeight, "5mm"); + this.moduleWidth = getMeasurement(attributes.moduleWidth, "0.25mm"); + this.printCheckDigit = getInteger({ + data: attributes.printCheckDigit, + defaultValue: 0, + validate: x => x === 1 + }); + this.rowColumnRatio = getRatio(attributes.rowColumnRatio); + this.startChar = attributes.startChar || ""; + this.textLocation = getStringOption(attributes.textLocation, ["below", "above", "aboveEmbedded", "belowEmbedded", "none"]); + this.truncate = getInteger({ + data: attributes.truncate, + defaultValue: 0, + validate: x => x === 1 + }); + this.type = getStringOption(attributes.type ? attributes.type.toLowerCase() : "", ["aztec", "codabar", "code2of5industrial", "code2of5interleaved", "code2of5matrix", "code2of5standard", "code3of9", "code3of9extended", "code11", "code49", "code93", "code128", "code128a", "code128b", "code128c", "code128sscc", "datamatrix", "ean8", "ean8add2", "ean8add5", "ean13", "ean13add2", "ean13add5", "ean13pwcd", "fim", "logmars", "maxicode", "msi", "pdf417", "pdf417macro", "plessey", "postauscust2", "postauscust3", "postausreplypaid", "postausstandard", "postukrm4scc", "postusdpbc", "postusimb", "postusstandard", "postus5zip", "qrcode", "rfid", "rss14", "rss14expanded", "rss14limited", "rss14stacked", "rss14stackedomni", "rss14truncated", "telepen", "ucc128", "ucc128random", "ucc128sscc", "upca", "upcaadd2", "upcaadd5", "upcapwcd", "upce", "upceadd2", "upceadd5", "upcean2", "upcean5", "upsmaxicode"]); + this.upsMode = getStringOption(attributes.upsMode, ["usCarrier", "internationalCarrier", "secureSymbol", "standardSymbol"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio); + this.encrypt = null; + this.extras = null; + } +} +class Bind extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "bind", true); + this.match = getStringOption(attributes.match, ["once", "dataRef", "global", "none"]); + this.ref = attributes.ref || ""; + this.picture = null; + } +} +class BindItems extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "bindItems"); + this.connection = attributes.connection || ""; + this.labelRef = attributes.labelRef || ""; + this.ref = attributes.ref || ""; + this.valueRef = attributes.valueRef || ""; + } +} +class Bookend extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "bookend"); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class BooleanElement extends Option01 { + constructor(attributes) { + super(TEMPLATE_NS_ID, "boolean"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$toHTML](availableSpace) { + return valueToHtml(this[$content] === 1 ? "1" : "0"); + } +} +class Border extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "border", true); + this.break = getStringOption(attributes.break, ["close", "open"]); + this.hand = getStringOption(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = getRelevant(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.corner = new XFAObjectArray(4); + this.edge = new XFAObjectArray(4); + this.extras = null; + this.fill = null; + this.margin = null; + } + [$getExtra]() { + if (!this[$extra]) { + const edges = this.edge.children.slice(); + if (edges.length < 4) { + const defaultEdge = edges.at(-1) || new Edge({}); + for (let i = edges.length; i < 4; i++) { + edges.push(defaultEdge); + } + } + const widths = edges.map(edge => edge.thickness); + const insets = [0, 0, 0, 0]; + if (this.margin) { + insets[0] = this.margin.topInset; + insets[1] = this.margin.rightInset; + insets[2] = this.margin.bottomInset; + insets[3] = this.margin.leftInset; + } + this[$extra] = { + widths, + insets, + edges + }; + } + return this[$extra]; + } + [$toStyle]() { + const { + edges + } = this[$getExtra](); + const edgeStyles = edges.map(node => { + const style = node[$toStyle](); + style.color ||= "#000000"; + return style; + }); + const style = Object.create(null); + if (this.margin) { + Object.assign(style, this.margin[$toStyle]()); + } + if (this.fill?.presence === "visible") { + Object.assign(style, this.fill[$toStyle]()); + } + if (this.corner.children.some(node => node.radius !== 0)) { + const cornerStyles = this.corner.children.map(node => node[$toStyle]()); + if (cornerStyles.length === 2 || cornerStyles.length === 3) { + const last = cornerStyles.at(-1); + for (let i = cornerStyles.length; i < 4; i++) { + cornerStyles.push(last); + } + } + style.borderRadius = cornerStyles.map(s => s.radius).join(" "); + } + switch (this.presence) { + case "invisible": + case "hidden": + style.borderStyle = ""; + break; + case "inactive": + style.borderStyle = "none"; + break; + default: + style.borderStyle = edgeStyles.map(s => s.style).join(" "); + break; + } + style.borderWidth = edgeStyles.map(s => s.width).join(" "); + style.borderColor = edgeStyles.map(s => s.color).join(" "); + return style; + } +} +class Break extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "break", true); + this.after = getStringOption(attributes.after, ["auto", "contentArea", "pageArea", "pageEven", "pageOdd"]); + this.afterTarget = attributes.afterTarget || ""; + this.before = getStringOption(attributes.before, ["auto", "contentArea", "pageArea", "pageEven", "pageOdd"]); + this.beforeTarget = attributes.beforeTarget || ""; + this.bookendLeader = attributes.bookendLeader || ""; + this.bookendTrailer = attributes.bookendTrailer || ""; + this.id = attributes.id || ""; + this.overflowLeader = attributes.overflowLeader || ""; + this.overflowTarget = attributes.overflowTarget || ""; + this.overflowTrailer = attributes.overflowTrailer || ""; + this.startNew = getInteger({ + data: attributes.startNew, + defaultValue: 0, + validate: x => x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } +} +class BreakAfter extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "breakAfter", true); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.startNew = getInteger({ + data: attributes.startNew, + defaultValue: 0, + validate: x => x === 1 + }); + this.target = attributes.target || ""; + this.targetType = getStringOption(attributes.targetType, ["auto", "contentArea", "pageArea"]); + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.script = null; + } +} +class BreakBefore extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "breakBefore", true); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.startNew = getInteger({ + data: attributes.startNew, + defaultValue: 0, + validate: x => x === 1 + }); + this.target = attributes.target || ""; + this.targetType = getStringOption(attributes.targetType, ["auto", "contentArea", "pageArea"]); + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.script = null; + } + [$toHTML](availableSpace) { + this[$extra] = {}; + return HTMLResult.FAILURE; + } +} +class Button extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "button", true); + this.highlight = getStringOption(attributes.highlight, ["inverted", "none", "outline", "push"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + [$toHTML](availableSpace) { + const parent = this[$getParent](); + const grandpa = parent[$getParent](); + const htmlButton = { + name: "button", + attributes: { + id: this[$uid], + class: ["xfaButton"], + style: {} + }, + children: [] + }; + for (const event of grandpa.event.children) { + if (event.activity !== "click" || !event.script) { + continue; + } + const jsURL = recoverJsURL(event.script[$content]); + if (!jsURL) { + continue; + } + const href = fixURL(jsURL.url); + if (!href) { + continue; + } + htmlButton.children.push({ + name: "a", + attributes: { + id: "link" + this[$uid], + href, + newWindow: jsURL.newWindow, + class: ["xfaLink"], + style: {} + }, + children: [] + }); + } + return HTMLResult.success(htmlButton); + } +} +class Calculate extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "calculate", true); + this.id = attributes.id || ""; + this.override = getStringOption(attributes.override, ["disabled", "error", "ignore", "warning"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.message = null; + this.script = null; + } +} +class Caption extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "caption", true); + this.id = attributes.id || ""; + this.placement = getStringOption(attributes.placement, ["left", "bottom", "inline", "right", "top"]); + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.reserve = Math.ceil(getMeasurement(attributes.reserve)); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.font = null; + this.margin = null; + this.para = null; + this.value = null; + } + [$setValue](value) { + _setValue(this, value); + } + [$getExtra](availableSpace) { + if (!this[$extra]) { + let { + width, + height + } = availableSpace; + switch (this.placement) { + case "left": + case "right": + case "inline": + width = this.reserve <= 0 ? width : this.reserve; + break; + case "top": + case "bottom": + height = this.reserve <= 0 ? height : this.reserve; + break; + } + this[$extra] = layoutNode(this, { + width, + height + }); + } + return this[$extra]; + } + [$toHTML](availableSpace) { + if (!this.value) { + return HTMLResult.EMPTY; + } + this[$pushPara](); + const value = this.value[$toHTML](availableSpace).html; + if (!value) { + this[$popPara](); + return HTMLResult.EMPTY; + } + const savedReserve = this.reserve; + if (this.reserve <= 0) { + const { + w, + h + } = this[$getExtra](availableSpace); + switch (this.placement) { + case "left": + case "right": + case "inline": + this.reserve = w; + break; + case "top": + case "bottom": + this.reserve = h; + break; + } + } + const children = []; + if (typeof value === "string") { + children.push({ + name: "#text", + value + }); + } else { + children.push(value); + } + const style = toStyle(this, "font", "margin", "visibility"); + switch (this.placement) { + case "left": + case "right": + if (this.reserve > 0) { + style.width = measureToString(this.reserve); + } + break; + case "top": + case "bottom": + if (this.reserve > 0) { + style.height = measureToString(this.reserve); + } + break; + } + setPara(this, null, value); + this[$popPara](); + this.reserve = savedReserve; + return HTMLResult.success({ + name: "div", + attributes: { + style, + class: ["xfaCaption"] + }, + children + }); + } +} +class Certificate extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "certificate"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Certificates extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "certificates", true); + this.credentialServerPolicy = getStringOption(attributes.credentialServerPolicy, ["optional", "required"]); + this.id = attributes.id || ""; + this.url = attributes.url || ""; + this.urlPolicy = attributes.urlPolicy || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.encryption = null; + this.issuers = null; + this.keyUsage = null; + this.oids = null; + this.signing = null; + this.subjectDNs = null; + } +} +class CheckButton extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "checkButton", true); + this.id = attributes.id || ""; + this.mark = getStringOption(attributes.mark, ["default", "check", "circle", "cross", "diamond", "square", "star"]); + this.shape = getStringOption(attributes.shape, ["square", "round"]); + this.size = getMeasurement(attributes.size, "10pt"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + [$toHTML](availableSpace) { + const style = toStyle(this, "margin"); + const size = measureToString(this.size); + style.width = style.height = size; + let type; + let className; + let groupId; + const field = this[$getParent]()[$getParent](); + const items = field.items.children.length && field.items.children[0][$toHTML]().html || []; + const exportedValue = { + on: (items[0] !== undefined ? items[0] : "on").toString(), + off: (items[1] !== undefined ? items[1] : "off").toString() + }; + const value = field.value?.[$text]() || "off"; + const checked = value === exportedValue.on || undefined; + const container = field[$getSubformParent](); + const fieldId = field[$uid]; + let dataId; + if (container instanceof ExclGroup) { + groupId = container[$uid]; + type = "radio"; + className = "xfaRadio"; + dataId = container[$data]?.[$uid] || container[$uid]; + } else { + type = "checkbox"; + className = "xfaCheckbox"; + dataId = field[$data]?.[$uid] || field[$uid]; + } + const input = { + name: "input", + attributes: { + class: [className], + style, + fieldId, + dataId, + type, + checked, + xfaOn: exportedValue.on, + xfaOff: exportedValue.off, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + if (groupId) { + input.attributes.name = groupId; + } + if (isRequired(field)) { + input.attributes["aria-required"] = true; + input.attributes.required = true; + } + return HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [input] + }); + } +} +class ChoiceList extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "choiceList", true); + this.commitOn = getStringOption(attributes.commitOn, ["select", "exit"]); + this.id = attributes.id || ""; + this.open = getStringOption(attributes.open, ["userControl", "always", "multiSelect", "onEntry"]); + this.textEntry = getInteger({ + data: attributes.textEntry, + defaultValue: 0, + validate: x => x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + [$toHTML](availableSpace) { + const style = toStyle(this, "border", "margin"); + const ui = this[$getParent](); + const field = ui[$getParent](); + const fontSize = field.font?.size || 10; + const optionStyle = { + fontSize: `calc(${fontSize}px * var(--total-scale-factor))` + }; + const children = []; + if (field.items.children.length > 0) { + const items = field.items; + let displayedIndex = 0; + let saveIndex = 0; + if (items.children.length === 2) { + displayedIndex = items.children[0].save; + saveIndex = 1 - displayedIndex; + } + const displayed = items.children[displayedIndex][$toHTML]().html; + const values = items.children[saveIndex][$toHTML]().html; + let selected = false; + const value = field.value?.[$text]() || ""; + for (let i = 0, ii = displayed.length; i < ii; i++) { + const option = { + name: "option", + attributes: { + value: values[i] || displayed[i], + style: optionStyle + }, + value: displayed[i] + }; + if (values[i] === value) { + option.attributes.selected = selected = true; + } + children.push(option); + } + if (!selected) { + children.splice(0, 0, { + name: "option", + attributes: { + hidden: true, + selected: true + }, + value: " " + }); + } + } + const selectAttributes = { + class: ["xfaSelect"], + fieldId: field[$uid], + dataId: field[$data]?.[$uid] || field[$uid], + style, + "aria-label": ariaLabel(field), + "aria-required": false + }; + if (isRequired(field)) { + selectAttributes["aria-required"] = true; + selectAttributes.required = true; + } + if (this.open === "multiSelect") { + selectAttributes.multiple = true; + } + return HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [{ + name: "select", + children, + attributes: selectAttributes + }] + }); + } +} +class Color extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "color", true); + this.cSpace = getStringOption(attributes.cSpace, ["SRGB"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.value = attributes.value ? getColor(attributes.value) : ""; + this.extras = null; + } + [$hasSettableValue]() { + return false; + } + [$toStyle]() { + return this.value ? Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null; + } +} +class Comb extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "comb"); + this.id = attributes.id || ""; + this.numberOfCells = getInteger({ + data: attributes.numberOfCells, + defaultValue: 0, + validate: x => x >= 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Connect extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "connect", true); + this.connection = attributes.connection || ""; + this.id = attributes.id || ""; + this.ref = attributes.ref || ""; + this.usage = getStringOption(attributes.usage, ["exportAndImport", "exportOnly", "importOnly"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.picture = null; + } +} +class ContentArea extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "contentArea", true); + this.h = getMeasurement(attributes.h); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relevant = getRelevant(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = getMeasurement(attributes.w); + this.x = getMeasurement(attributes.x, "0pt"); + this.y = getMeasurement(attributes.y, "0pt"); + this.desc = null; + this.extras = null; + } + [$toHTML](availableSpace) { + const left = measureToString(this.x); + const top = measureToString(this.y); + const style = { + left, + top, + width: measureToString(this.w), + height: measureToString(this.h) + }; + const classNames = ["xfaContentarea"]; + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } + return HTMLResult.success({ + name: "div", + children: [], + attributes: { + style, + class: classNames, + id: this[$uid] + } + }); + } +} +class Corner extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "corner", true); + this.id = attributes.id || ""; + this.inverted = getInteger({ + data: attributes.inverted, + defaultValue: 0, + validate: x => x === 1 + }); + this.join = getStringOption(attributes.join, ["square", "round"]); + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.radius = getMeasurement(attributes.radius); + this.stroke = getStringOption(attributes.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); + this.thickness = getMeasurement(attributes.thickness, "0.5pt"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [$toStyle]() { + const style = toStyle(this, "visibility"); + style.radius = measureToString(this.join === "square" ? 0 : this.radius); + return style; + } +} +class DateElement extends ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "date"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$finalize]() { + const date = this[$content].trim(); + this[$content] = date ? new Date(date) : null; + } + [$toHTML](availableSpace) { + return valueToHtml(this[$content] ? this[$content].toString() : ""); + } +} +class DateTime extends ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "dateTime"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$finalize]() { + const date = this[$content].trim(); + this[$content] = date ? new Date(date) : null; + } + [$toHTML](availableSpace) { + return valueToHtml(this[$content] ? this[$content].toString() : ""); + } +} +class DateTimeEdit extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "dateTimeEdit", true); + this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.picker = getStringOption(attributes.picker, ["host", "none"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + [$toHTML](availableSpace) { + const style = toStyle(this, "border", "font", "margin"); + const field = this[$getParent]()[$getParent](); + const html = { + name: "input", + attributes: { + type: "text", + fieldId: field[$uid], + dataId: field[$data]?.[$uid] || field[$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + if (isRequired(field)) { + html.attributes["aria-required"] = true; + html.attributes.required = true; + } + return HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [html] + }); + } +} +class Decimal extends ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "decimal"); + this.fracDigits = getInteger({ + data: attributes.fracDigits, + defaultValue: 2, + validate: x => true + }); + this.id = attributes.id || ""; + this.leadDigits = getInteger({ + data: attributes.leadDigits, + defaultValue: -1, + validate: x => true + }); + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$finalize]() { + const number = parseFloat(this[$content].trim()); + this[$content] = isNaN(number) ? null : number; + } + [$toHTML](availableSpace) { + return valueToHtml(this[$content] !== null ? this[$content].toString() : ""); + } +} +class DefaultUi extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "defaultUi", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } +} +class Desc extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "desc", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } +} +class DigestMethod extends OptionObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "digestMethod", ["", "SHA1", "SHA256", "SHA512", "RIPEMD160"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class DigestMethods extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "digestMethods", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.digestMethod = new XFAObjectArray(); + } +} +class Draw extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "draw", true); + this.anchorType = getStringOption(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = getInteger({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.h = attributes.h ? getMeasurement(attributes.h) : ""; + this.hAlign = getStringOption(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.locale = attributes.locale || ""; + this.maxH = getMeasurement(attributes.maxH, "0pt"); + this.maxW = getMeasurement(attributes.maxW, "0pt"); + this.minH = getMeasurement(attributes.minH, "0pt"); + this.minW = getMeasurement(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = getRelevant(attributes.relevant); + this.rotate = getInteger({ + data: attributes.rotate, + defaultValue: 0, + validate: x => x % 90 === 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? getMeasurement(attributes.w) : ""; + this.x = getMeasurement(attributes.x, "0pt"); + this.y = getMeasurement(attributes.y, "0pt"); + this.assist = null; + this.border = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.font = null; + this.keep = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.ui = null; + this.value = null; + this.setProperty = new XFAObjectArray(); + } + [$setValue](value) { + _setValue(this, value); + } + [$toHTML](availableSpace) { + setTabIndex(this); + if (this.presence === "hidden" || this.presence === "inactive") { + return HTMLResult.EMPTY; + } + fixDimensions(this); + this[$pushPara](); + const savedW = this.w; + const savedH = this.h; + const { + w, + h, + isBroken + } = layoutNode(this, availableSpace); + if (w && this.w === "") { + if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) { + this[$popPara](); + return HTMLResult.FAILURE; + } + this.w = w; + } + if (h && this.h === "") { + this.h = h; + } + setFirstUnsplittable(this); + if (!checkDimensions(this, availableSpace)) { + this.w = savedW; + this.h = savedH; + this[$popPara](); + return HTMLResult.FAILURE; + } + unsetFirstUnsplittable(this); + const style = toStyle(this, "font", "hAlign", "dimensions", "position", "presence", "rotate", "anchorType", "border", "margin"); + setMinMaxDimensions(this, style); + if (style.margin) { + style.padding = style.margin; + delete style.margin; + } + const classNames = ["xfaDraw"]; + if (this.font) { + classNames.push("xfaFont"); + } + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } + const attributes = { + style, + id: this[$uid], + class: classNames + }; + if (this.name) { + attributes.xfaName = this.name; + } + const html = { + name: "div", + attributes, + children: [] + }; + applyAssist(this, attributes); + const bbox = computeBbox(this, html, availableSpace); + const value = this.value ? this.value[$toHTML](availableSpace).html : null; + if (value === null) { + this.w = savedW; + this.h = savedH; + this[$popPara](); + return HTMLResult.success(createWrapper(this, html), bbox); + } + html.children.push(value); + setPara(this, style, value); + this.w = savedW; + this.h = savedH; + this[$popPara](); + return HTMLResult.success(createWrapper(this, html), bbox); + } +} +class Edge extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "edge", true); + this.cap = getStringOption(attributes.cap, ["square", "butt", "round"]); + this.id = attributes.id || ""; + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.stroke = getStringOption(attributes.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); + this.thickness = getMeasurement(attributes.thickness, "0.5pt"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [$toStyle]() { + const style = toStyle(this, "visibility"); + Object.assign(style, { + linecap: this.cap, + width: measureToString(this.thickness), + color: this.color ? this.color[$toStyle]() : "#000000", + style: "" + }); + if (this.presence !== "visible") { + style.style = "none"; + } else { + switch (this.stroke) { + case "solid": + style.style = "solid"; + break; + case "dashDot": + style.style = "dashed"; + break; + case "dashDotDot": + style.style = "dashed"; + break; + case "dashed": + style.style = "dashed"; + break; + case "dotted": + style.style = "dotted"; + break; + case "embossed": + style.style = "ridge"; + break; + case "etched": + style.style = "groove"; + break; + case "lowered": + style.style = "inset"; + break; + case "raised": + style.style = "outset"; + break; + } + } + return style; + } +} +class Encoding extends OptionObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encoding", ["adbe.x509.rsa_sha1", "adbe.pkcs7.detached", "adbe.pkcs7.sha1"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Encodings extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encodings", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.encoding = new XFAObjectArray(); + } +} +class Encrypt extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encrypt", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = null; + } +} +class EncryptData extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryptData", true); + this.id = attributes.id || ""; + this.operation = getStringOption(attributes.operation, ["encrypt", "decrypt"]); + this.target = attributes.target || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.filter = null; + this.manifest = null; + } +} +class Encryption extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryption", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = new XFAObjectArray(); + } +} +class EncryptionMethod extends OptionObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryptionMethod", ["", "AES256-CBC", "TRIPLEDES-CBC", "AES128-CBC", "AES192-CBC"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class EncryptionMethods extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryptionMethods", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.encryptionMethod = new XFAObjectArray(); + } +} +class Event extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "event", true); + this.activity = getStringOption(attributes.activity, ["click", "change", "docClose", "docReady", "enter", "exit", "full", "indexChange", "initialize", "mouseDown", "mouseEnter", "mouseExit", "mouseUp", "postExecute", "postOpen", "postPrint", "postSave", "postSign", "postSubmit", "preExecute", "preOpen", "prePrint", "preSave", "preSign", "preSubmit", "ready", "validationState"]); + this.id = attributes.id || ""; + this.listen = getStringOption(attributes.listen, ["refOnly", "refAndDescendents"]); + this.name = attributes.name || ""; + this.ref = attributes.ref || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.encryptData = null; + this.execute = null; + this.script = null; + this.signData = null; + this.submit = null; + } +} +class ExData extends ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "exData"); + this.contentType = attributes.contentType || ""; + this.href = attributes.href || ""; + this.id = attributes.id || ""; + this.maxLength = getInteger({ + data: attributes.maxLength, + defaultValue: -1, + validate: x => x >= -1 + }); + this.name = attributes.name || ""; + this.rid = attributes.rid || ""; + this.transferEncoding = getStringOption(attributes.transferEncoding, ["none", "base64", "package"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$isCDATAXml]() { + return this.contentType === "text/html"; + } + [$onChild](child) { + if (this.contentType === "text/html" && child[$namespaceId] === NamespaceIds.xhtml.id) { + this[$content] = child; + return true; + } + if (this.contentType === "text/xml") { + this[$content] = child; + return true; + } + return false; + } + [$toHTML](availableSpace) { + if (this.contentType !== "text/html" || !this[$content]) { + return HTMLResult.EMPTY; + } + return this[$content][$toHTML](availableSpace); + } +} +class ExObject extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "exObject", true); + this.archive = attributes.archive || ""; + this.classId = attributes.classId || ""; + this.codeBase = attributes.codeBase || ""; + this.codeType = attributes.codeType || ""; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.exObject = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } +} +class ExclGroup extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "exclGroup", true); + this.access = getStringOption(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); + this.accessKey = attributes.accessKey || ""; + this.anchorType = getStringOption(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = getInteger({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.h = attributes.h ? getMeasurement(attributes.h) : ""; + this.hAlign = getStringOption(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.layout = getStringOption(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); + this.maxH = getMeasurement(attributes.maxH, "0pt"); + this.maxW = getMeasurement(attributes.maxW, "0pt"); + this.minH = getMeasurement(attributes.minH, "0pt"); + this.minW = getMeasurement(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = getRelevant(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? getMeasurement(attributes.w) : ""; + this.x = getMeasurement(attributes.x, "0pt"); + this.y = getMeasurement(attributes.y, "0pt"); + this.assist = null; + this.bind = null; + this.border = null; + this.calculate = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.validate = null; + this.connect = new XFAObjectArray(); + this.event = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.setProperty = new XFAObjectArray(); + } + [$isBindable]() { + return true; + } + [$hasSettableValue]() { + return true; + } + [$setValue](value) { + for (const field of this.field.children) { + if (!field.value) { + const nodeValue = new Value({}); + field[$appendChild](nodeValue); + field.value = nodeValue; + } + field.value[$setValue](value); + } + } + [$isThereMoreWidth]() { + return this.layout.endsWith("-tb") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth](); + } + [$isSplittable]() { + const parent = this[$getSubformParent](); + if (!parent[$isSplittable]()) { + return false; + } + if (this[$extra]._isSplittable !== undefined) { + return this[$extra]._isSplittable; + } + if (this.layout === "position" || this.layout.includes("row")) { + this[$extra]._isSplittable = false; + return false; + } + if (parent.layout?.endsWith("-tb") && parent[$extra].numberInLine !== 0) { + return false; + } + this[$extra]._isSplittable = true; + return true; + } + [$flushHTML]() { + return flushHTML(this); + } + [$addHTML](html, bbox) { + addHTML(this, html, bbox); + } + [$getAvailableSpace]() { + return getAvailableSpace(this); + } + [$toHTML](availableSpace) { + setTabIndex(this); + if (this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) { + return HTMLResult.EMPTY; + } + fixDimensions(this); + const children = []; + const attributes = { + id: this[$uid], + class: [] + }; + setAccess(this, attributes.class); + this[$extra] ||= Object.create(null); + Object.assign(this[$extra], { + children, + attributes, + attempt: 0, + line: null, + numberInLine: 0, + availableSpace: { + width: Math.min(this.w || Infinity, availableSpace.width), + height: Math.min(this.h || Infinity, availableSpace.height) + }, + width: 0, + height: 0, + prevHeight: 0, + currentWidth: 0 + }); + const isSplittable = this[$isSplittable](); + if (!isSplittable) { + setFirstUnsplittable(this); + } + if (!checkDimensions(this, availableSpace)) { + return HTMLResult.FAILURE; + } + const filter = new Set(["field"]); + if (this.layout.includes("row")) { + const columnWidths = this[$getSubformParent]().columnWidths; + if (Array.isArray(columnWidths) && columnWidths.length > 0) { + this[$extra].columnWidths = columnWidths; + this[$extra].currentColumn = 0; + } + } + const style = toStyle(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"); + const classNames = ["xfaExclgroup"]; + const cl = layoutClass(this); + if (cl) { + classNames.push(cl); + } + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } + attributes.style = style; + attributes.class = classNames; + if (this.name) { + attributes.xfaName = this.name; + } + this[$pushPara](); + const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb"; + const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1; + for (; this[$extra].attempt < maxRun; this[$extra].attempt++) { + if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) { + this[$extra].numberInLine = 0; + } + const result = this[$childrenToHTML]({ + filter, + include: true + }); + if (result.success) { + break; + } + if (result.isBreak()) { + this[$popPara](); + return result; + } + if (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !this[$getTemplateRoot]()[$extra].noLayoutFailure) { + this[$extra].attempt = maxRun; + break; + } + } + this[$popPara](); + if (!isSplittable) { + unsetFirstUnsplittable(this); + } + if (this[$extra].attempt === maxRun) { + if (!isSplittable) { + delete this[$extra]; + } + return HTMLResult.FAILURE; + } + let marginH = 0; + let marginV = 0; + if (this.margin) { + marginH = this.margin.leftInset + this.margin.rightInset; + marginV = this.margin.topInset + this.margin.bottomInset; + } + const width = Math.max(this[$extra].width + marginH, this.w || 0); + const height = Math.max(this[$extra].height + marginV, this.h || 0); + const bbox = [this.x, this.y, width, height]; + if (this.w === "") { + style.width = measureToString(width); + } + if (this.h === "") { + style.height = measureToString(height); + } + const html = { + name: "div", + attributes, + children + }; + applyAssist(this, attributes); + delete this[$extra]; + return HTMLResult.success(createWrapper(this, html), bbox); + } +} +class Execute extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "execute"); + this.connection = attributes.connection || ""; + this.executeType = getStringOption(attributes.executeType, ["import", "remerge"]); + this.id = attributes.id || ""; + this.runAt = getStringOption(attributes.runAt, ["client", "both", "server"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Extras extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "extras", true); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.extras = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } +} +class Field extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "field", true); + this.access = getStringOption(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); + this.accessKey = attributes.accessKey || ""; + this.anchorType = getStringOption(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = getInteger({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.h = attributes.h ? getMeasurement(attributes.h) : ""; + this.hAlign = getStringOption(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.locale = attributes.locale || ""; + this.maxH = getMeasurement(attributes.maxH, "0pt"); + this.maxW = getMeasurement(attributes.maxW, "0pt"); + this.minH = getMeasurement(attributes.minH, "0pt"); + this.minW = getMeasurement(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = getRelevant(attributes.relevant); + this.rotate = getInteger({ + data: attributes.rotate, + defaultValue: 0, + validate: x => x % 90 === 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? getMeasurement(attributes.w) : ""; + this.x = getMeasurement(attributes.x, "0pt"); + this.y = getMeasurement(attributes.y, "0pt"); + this.assist = null; + this.bind = null; + this.border = null; + this.calculate = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.font = null; + this.format = null; + this.items = new XFAObjectArray(2); + this.keep = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.ui = null; + this.validate = null; + this.value = null; + this.bindItems = new XFAObjectArray(); + this.connect = new XFAObjectArray(); + this.event = new XFAObjectArray(); + this.setProperty = new XFAObjectArray(); + } + [$isBindable]() { + return true; + } + [$setValue](value) { + _setValue(this, value); + } + [$toHTML](availableSpace) { + setTabIndex(this); + if (!this.ui) { + this.ui = new Ui({}); + this.ui[$globalData] = this[$globalData]; + this[$appendChild](this.ui); + let node; + switch (this.items.children.length) { + case 0: + node = new TextEdit({}); + this.ui.textEdit = node; + break; + case 1: + node = new CheckButton({}); + this.ui.checkButton = node; + break; + case 2: + node = new ChoiceList({}); + this.ui.choiceList = node; + break; + } + this.ui[$appendChild](node); + } + if (!this.ui || this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) { + return HTMLResult.EMPTY; + } + if (this.caption) { + delete this.caption[$extra]; + } + this[$pushPara](); + const caption = this.caption ? this.caption[$toHTML](availableSpace).html : null; + const savedW = this.w; + const savedH = this.h; + let marginH = 0; + let marginV = 0; + if (this.margin) { + marginH = this.margin.leftInset + this.margin.rightInset; + marginV = this.margin.topInset + this.margin.bottomInset; + } + let borderDims = null; + if (this.w === "" || this.h === "") { + let width = null; + let height = null; + let uiW = 0; + let uiH = 0; + if (this.ui.checkButton) { + uiW = uiH = this.ui.checkButton.size; + } else { + const { + w, + h + } = layoutNode(this, availableSpace); + if (w !== null) { + uiW = w; + uiH = h; + } else { + uiH = fonts_getMetrics(this.font, true).lineNoGap; + } + } + borderDims = getBorderDims(this.ui[$getExtra]()); + uiW += borderDims.w; + uiH += borderDims.h; + if (this.caption) { + const { + w, + h, + isBroken + } = this.caption[$getExtra](availableSpace); + if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) { + this[$popPara](); + return HTMLResult.FAILURE; + } + width = w; + height = h; + switch (this.caption.placement) { + case "left": + case "right": + case "inline": + width += uiW; + break; + case "top": + case "bottom": + height += uiH; + break; + } + } else { + width = uiW; + height = uiH; + } + if (width && this.w === "") { + width += marginH; + this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW); + } + if (height && this.h === "") { + height += marginV; + this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : this.minH); + } + } + this[$popPara](); + fixDimensions(this); + setFirstUnsplittable(this); + if (!checkDimensions(this, availableSpace)) { + this.w = savedW; + this.h = savedH; + this[$popPara](); + return HTMLResult.FAILURE; + } + unsetFirstUnsplittable(this); + const style = toStyle(this, "font", "dimensions", "position", "rotate", "anchorType", "presence", "margin", "hAlign"); + setMinMaxDimensions(this, style); + const classNames = ["xfaField"]; + if (this.font) { + classNames.push("xfaFont"); + } + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } + const attributes = { + style, + id: this[$uid], + class: classNames + }; + if (style.margin) { + style.padding = style.margin; + delete style.margin; + } + setAccess(this, classNames); + if (this.name) { + attributes.xfaName = this.name; + } + const children = []; + const html = { + name: "div", + attributes, + children + }; + applyAssist(this, attributes); + const borderStyle = this.border ? this.border[$toStyle]() : null; + const bbox = computeBbox(this, html, availableSpace); + const ui = this.ui[$toHTML]().html; + if (!ui) { + Object.assign(style, borderStyle); + return HTMLResult.success(createWrapper(this, html), bbox); + } + if (this[$tabIndex]) { + if (ui.children?.[0]) { + ui.children[0].attributes.tabindex = this[$tabIndex]; + } else { + ui.attributes.tabindex = this[$tabIndex]; + } + } + ui.attributes.style ||= Object.create(null); + let aElement = null; + if (this.ui.button) { + if (ui.children.length === 1) { + [aElement] = ui.children.splice(0, 1); + } + Object.assign(ui.attributes.style, borderStyle); + } else { + Object.assign(style, borderStyle); + } + children.push(ui); + if (this.value) { + if (this.ui.imageEdit) { + ui.children.push(this.value[$toHTML]().html); + } else if (!this.ui.button) { + let value = ""; + if (this.value.exData) { + value = this.value.exData[$text](); + } else if (this.value.text) { + value = this.value.text[$getExtra](); + } else { + const htmlValue = this.value[$toHTML]().html; + if (htmlValue !== null) { + value = htmlValue.children[0].value; + } + } + if (this.ui.textEdit && this.value.text?.maxChars) { + ui.children[0].attributes.maxLength = this.value.text.maxChars; + } + if (value) { + if (this.ui.numericEdit) { + value = parseFloat(value); + value = isNaN(value) ? "" : value.toString(); + } + if (ui.children[0].name === "textarea") { + ui.children[0].attributes.textContent = value; + } else { + ui.children[0].attributes.value = value; + } + } + } + } + if (!this.ui.imageEdit && ui.children?.[0] && this.h) { + borderDims = borderDims || getBorderDims(this.ui[$getExtra]()); + let captionHeight = 0; + if (this.caption && ["top", "bottom"].includes(this.caption.placement)) { + captionHeight = this.caption.reserve; + if (captionHeight <= 0) { + captionHeight = this.caption[$getExtra](availableSpace).h; + } + const inputHeight = this.h - captionHeight - marginV - borderDims.h; + ui.children[0].attributes.style.height = measureToString(inputHeight); + } else { + ui.children[0].attributes.style.height = "100%"; + } + } + if (aElement) { + ui.children.push(aElement); + } + if (!caption) { + if (ui.attributes.class) { + ui.attributes.class.push("xfaLeft"); + } + this.w = savedW; + this.h = savedH; + return HTMLResult.success(createWrapper(this, html), bbox); + } + if (this.ui.button) { + if (style.padding) { + delete style.padding; + } + if (caption.name === "div") { + caption.name = "span"; + } + ui.children.push(caption); + return HTMLResult.success(html, bbox); + } else if (this.ui.checkButton) { + caption.attributes.class[0] = "xfaCaptionForCheckButton"; + } + ui.attributes.class ||= []; + ui.children.splice(0, 0, caption); + switch (this.caption.placement) { + case "left": + ui.attributes.class.push("xfaLeft"); + break; + case "right": + ui.attributes.class.push("xfaRight"); + break; + case "top": + ui.attributes.class.push("xfaTop"); + break; + case "bottom": + ui.attributes.class.push("xfaBottom"); + break; + case "inline": + ui.attributes.class.push("xfaLeft"); + break; + } + this.w = savedW; + this.h = savedH; + return HTMLResult.success(createWrapper(this, html), bbox); + } +} +class Fill extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "fill", true); + this.id = attributes.id || ""; + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + this.linear = null; + this.pattern = null; + this.radial = null; + this.solid = null; + this.stipple = null; + } + [$toStyle]() { + const parent = this[$getParent](); + const grandpa = parent[$getParent](); + const ggrandpa = grandpa[$getParent](); + const style = Object.create(null); + let propName = "color"; + let altPropName = propName; + if (parent instanceof Border) { + propName = "background-color"; + altPropName = "background"; + if (ggrandpa instanceof Ui) { + style.backgroundColor = "white"; + } + } + if (parent instanceof Rectangle || parent instanceof Arc) { + propName = altPropName = "fill"; + style.fill = "white"; + } + for (const name of Object.getOwnPropertyNames(this)) { + if (name === "extras" || name === "color") { + continue; + } + const obj = this[name]; + if (!(obj instanceof XFAObject)) { + continue; + } + const color = obj[$toStyle](this.color); + if (color) { + style[color.startsWith("#") ? propName : altPropName] = color; + } + return style; + } + if (this.color?.value) { + const color = this.color[$toStyle](); + style[color.startsWith("#") ? propName : altPropName] = color; + } + return style; + } +} +class Filter extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "filter", true); + this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, ["", "required", "optional", "none"]); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.version = getInteger({ + data: this.version, + defaultValue: 5, + validate: x => x >= 1 && x <= 5 + }); + this.appearanceFilter = null; + this.certificates = null; + this.digestMethods = null; + this.encodings = null; + this.encryptionMethods = null; + this.handler = null; + this.lockDocument = null; + this.mdp = null; + this.reasons = null; + this.timeStamp = null; + } +} +class Float extends ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "float"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$finalize]() { + const number = parseFloat(this[$content].trim()); + this[$content] = isNaN(number) ? null : number; + } + [$toHTML](availableSpace) { + return valueToHtml(this[$content] !== null ? this[$content].toString() : ""); + } +} +class template_Font extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "font", true); + this.baselineShift = getMeasurement(attributes.baselineShift); + this.fontHorizontalScale = getFloat({ + data: attributes.fontHorizontalScale, + defaultValue: 100, + validate: x => x >= 0 + }); + this.fontVerticalScale = getFloat({ + data: attributes.fontVerticalScale, + defaultValue: 100, + validate: x => x >= 0 + }); + this.id = attributes.id || ""; + this.kerningMode = getStringOption(attributes.kerningMode, ["none", "pair"]); + this.letterSpacing = getMeasurement(attributes.letterSpacing, "0"); + this.lineThrough = getInteger({ + data: attributes.lineThrough, + defaultValue: 0, + validate: x => x === 1 || x === 2 + }); + this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, ["all", "word"]); + this.overline = getInteger({ + data: attributes.overline, + defaultValue: 0, + validate: x => x === 1 || x === 2 + }); + this.overlinePeriod = getStringOption(attributes.overlinePeriod, ["all", "word"]); + this.posture = getStringOption(attributes.posture, ["normal", "italic"]); + this.size = getMeasurement(attributes.size, "10pt"); + this.typeface = attributes.typeface || "Courier"; + this.underline = getInteger({ + data: attributes.underline, + defaultValue: 0, + validate: x => x === 1 || x === 2 + }); + this.underlinePeriod = getStringOption(attributes.underlinePeriod, ["all", "word"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.weight = getStringOption(attributes.weight, ["normal", "bold"]); + this.extras = null; + this.fill = null; + } + [$clean](builder) { + super[$clean](builder); + this[$globalData].usedTypefaces.add(this.typeface); + } + [$toStyle]() { + const style = toStyle(this, "fill"); + const color = style.color; + if (color) { + if (color === "#000000") { + delete style.color; + } else if (!color.startsWith("#")) { + style.background = color; + style.backgroundClip = "text"; + style.color = "transparent"; + } + } + if (this.baselineShift) { + style.verticalAlign = measureToString(this.baselineShift); + } + style.fontKerning = this.kerningMode === "none" ? "none" : "normal"; + style.letterSpacing = measureToString(this.letterSpacing); + if (this.lineThrough !== 0) { + style.textDecoration = "line-through"; + if (this.lineThrough === 2) { + style.textDecorationStyle = "double"; + } + } + if (this.overline !== 0) { + style.textDecoration = "overline"; + if (this.overline === 2) { + style.textDecorationStyle = "double"; + } + } + style.fontStyle = this.posture; + style.fontSize = measureToString(0.99 * this.size); + setFontFamily(this, this, this[$globalData].fontFinder, style); + if (this.underline !== 0) { + style.textDecoration = "underline"; + if (this.underline === 2) { + style.textDecorationStyle = "double"; + } + } + style.fontWeight = this.weight; + return style; + } +} +class Format extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "format", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.picture = null; + } +} +class Handler extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "handler"); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Hyphenation extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "hyphenation"); + this.excludeAllCaps = getInteger({ + data: attributes.excludeAllCaps, + defaultValue: 0, + validate: x => x === 1 + }); + this.excludeInitialCap = getInteger({ + data: attributes.excludeInitialCap, + defaultValue: 0, + validate: x => x === 1 + }); + this.hyphenate = getInteger({ + data: attributes.hyphenate, + defaultValue: 0, + validate: x => x === 1 + }); + this.id = attributes.id || ""; + this.pushCharacterCount = getInteger({ + data: attributes.pushCharacterCount, + defaultValue: 3, + validate: x => x >= 0 + }); + this.remainCharacterCount = getInteger({ + data: attributes.remainCharacterCount, + defaultValue: 3, + validate: x => x >= 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.wordCharacterCount = getInteger({ + data: attributes.wordCharacterCount, + defaultValue: 7, + validate: x => x >= 0 + }); + } +} +class Image extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "image"); + this.aspect = getStringOption(attributes.aspect, ["fit", "actual", "height", "none", "width"]); + this.contentType = attributes.contentType || ""; + this.href = attributes.href || ""; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.transferEncoding = getStringOption(attributes.transferEncoding, ["base64", "none", "package"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$toHTML]() { + if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) { + return HTMLResult.EMPTY; + } + let buffer = this[$globalData].images?.get(this.href); + if (!buffer && (this.href || !this[$content])) { + return HTMLResult.EMPTY; + } + if (!buffer && this.transferEncoding === "base64") { + buffer = Uint8Array.fromBase64(this[$content]); + } + if (!buffer) { + return HTMLResult.EMPTY; + } + if (!this.contentType) { + for (const [header, type] of IMAGES_HEADERS) { + if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) { + this.contentType = type; + break; + } + } + if (!this.contentType) { + return HTMLResult.EMPTY; + } + } + const blob = new Blob([buffer], { + type: this.contentType + }); + let style; + switch (this.aspect) { + case "fit": + case "actual": + break; + case "height": + style = { + height: "100%", + objectFit: "fill" + }; + break; + case "none": + style = { + width: "100%", + height: "100%", + objectFit: "fill" + }; + break; + case "width": + style = { + width: "100%", + objectFit: "fill" + }; + break; + } + const parent = this[$getParent](); + return HTMLResult.success({ + name: "img", + attributes: { + class: ["xfaImage"], + style, + src: URL.createObjectURL(blob), + alt: parent ? ariaLabel(parent[$getParent]()) : null + } + }); + } +} +class ImageEdit extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "imageEdit", true); + this.data = getStringOption(attributes.data, ["link", "embed"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + [$toHTML](availableSpace) { + if (this.data === "embed") { + return HTMLResult.success({ + name: "div", + children: [], + attributes: {} + }); + } + return HTMLResult.EMPTY; + } +} +class Integer extends ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "integer"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$finalize]() { + const number = parseInt(this[$content].trim(), 10); + this[$content] = isNaN(number) ? null : number; + } + [$toHTML](availableSpace) { + return valueToHtml(this[$content] !== null ? this[$content].toString() : ""); + } +} +class Issuers extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "issuers", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = new XFAObjectArray(); + } +} +class Items extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "items", true); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.ref = attributes.ref || ""; + this.save = getInteger({ + data: attributes.save, + defaultValue: 0, + validate: x => x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } + [$toHTML]() { + const output = []; + for (const child of this[$getChildren]()) { + output.push(child[$text]()); + } + return HTMLResult.success(output); + } +} +class Keep extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "keep", true); + this.id = attributes.id || ""; + const options = ["none", "contentArea", "pageArea"]; + this.intact = getStringOption(attributes.intact, options); + this.next = getStringOption(attributes.next, options); + this.previous = getStringOption(attributes.previous, options); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } +} +class KeyUsage extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "keyUsage"); + const options = ["", "yes", "no"]; + this.crlSign = getStringOption(attributes.crlSign, options); + this.dataEncipherment = getStringOption(attributes.dataEncipherment, options); + this.decipherOnly = getStringOption(attributes.decipherOnly, options); + this.digitalSignature = getStringOption(attributes.digitalSignature, options); + this.encipherOnly = getStringOption(attributes.encipherOnly, options); + this.id = attributes.id || ""; + this.keyAgreement = getStringOption(attributes.keyAgreement, options); + this.keyCertSign = getStringOption(attributes.keyCertSign, options); + this.keyEncipherment = getStringOption(attributes.keyEncipherment, options); + this.nonRepudiation = getStringOption(attributes.nonRepudiation, options); + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Line extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "line", true); + this.hand = getStringOption(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.slope = getStringOption(attributes.slope, ["\\", "/"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.edge = null; + } + [$toHTML]() { + const parent = this[$getParent]()[$getParent](); + const edge = this.edge || new Edge({}); + const edgeStyle = edge[$toStyle](); + const style = Object.create(null); + const thickness = edge.presence === "visible" ? edge.thickness : 0; + style.strokeWidth = measureToString(thickness); + style.stroke = edgeStyle.color; + let x1, y1, x2, y2; + let width = "100%"; + let height = "100%"; + if (parent.w <= thickness) { + [x1, y1, x2, y2] = ["50%", 0, "50%", "100%"]; + width = style.strokeWidth; + } else if (parent.h <= thickness) { + [x1, y1, x2, y2] = [0, "50%", "100%", "50%"]; + height = style.strokeWidth; + } else if (this.slope === "\\") { + [x1, y1, x2, y2] = [0, 0, "100%", "100%"]; + } else { + [x1, y1, x2, y2] = [0, "100%", "100%", 0]; + } + const line = { + name: "line", + attributes: { + xmlns: SVG_NS, + x1, + y1, + x2, + y2, + style + } + }; + const svg = { + name: "svg", + children: [line], + attributes: { + xmlns: SVG_NS, + width, + height, + style: { + overflow: "visible" + } + } + }; + if (hasMargin(parent)) { + return HTMLResult.success({ + name: "div", + attributes: { + style: { + display: "inline", + width: "100%", + height: "100%" + } + }, + children: [svg] + }); + } + svg.attributes.style.position = "absolute"; + return HTMLResult.success(svg); + } +} +class Linear extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "linear", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["toRight", "toBottom", "toLeft", "toTop"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [$toStyle](startColor) { + startColor = startColor ? startColor[$toStyle]() : "#FFFFFF"; + const transf = this.type.replace(/([RBLT])/, " $1").toLowerCase(); + const endColor = this.color ? this.color[$toStyle]() : "#000000"; + return `linear-gradient(${transf}, ${startColor}, ${endColor})`; + } +} +class LockDocument extends ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "lockDocument"); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$finalize]() { + this[$content] = getStringOption(this[$content], ["auto", "0", "1"]); + } +} +class Manifest extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "manifest", true); + this.action = getStringOption(attributes.action, ["include", "all", "exclude"]); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.ref = new XFAObjectArray(); + } +} +class Margin extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "margin", true); + this.bottomInset = getMeasurement(attributes.bottomInset, "0"); + this.id = attributes.id || ""; + this.leftInset = getMeasurement(attributes.leftInset, "0"); + this.rightInset = getMeasurement(attributes.rightInset, "0"); + this.topInset = getMeasurement(attributes.topInset, "0"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + [$toStyle]() { + return { + margin: measureToString(this.topInset) + " " + measureToString(this.rightInset) + " " + measureToString(this.bottomInset) + " " + measureToString(this.leftInset) + }; + } +} +class Mdp extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "mdp"); + this.id = attributes.id || ""; + this.permissions = getInteger({ + data: attributes.permissions, + defaultValue: 2, + validate: x => x === 1 || x === 3 + }); + this.signatureType = getStringOption(attributes.signatureType, ["filler", "author"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Medium extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "medium"); + this.id = attributes.id || ""; + this.imagingBBox = getBBox(attributes.imagingBBox); + this.long = getMeasurement(attributes.long); + this.orientation = getStringOption(attributes.orientation, ["portrait", "landscape"]); + this.short = getMeasurement(attributes.short); + this.stock = attributes.stock || ""; + this.trayIn = getStringOption(attributes.trayIn, ["auto", "delegate", "pageFront"]); + this.trayOut = getStringOption(attributes.trayOut, ["auto", "delegate"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Message extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "message", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.text = new XFAObjectArray(); + } +} +class NumericEdit extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "numericEdit", true); + this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + [$toHTML](availableSpace) { + const style = toStyle(this, "border", "font", "margin"); + const field = this[$getParent]()[$getParent](); + const html = { + name: "input", + attributes: { + type: "text", + fieldId: field[$uid], + dataId: field[$data]?.[$uid] || field[$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + if (isRequired(field)) { + html.attributes["aria-required"] = true; + html.attributes.required = true; + } + return HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [html] + }); + } +} +class Occur extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "occur", true); + this.id = attributes.id || ""; + this.initial = attributes.initial !== "" ? getInteger({ + data: attributes.initial, + defaultValue: "", + validate: x => true + }) : ""; + this.max = attributes.max !== "" ? getInteger({ + data: attributes.max, + defaultValue: -1, + validate: x => true + }) : ""; + this.min = attributes.min !== "" ? getInteger({ + data: attributes.min, + defaultValue: 1, + validate: x => true + }) : ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + [$clean]() { + const parent = this[$getParent](); + const originalMin = this.min; + if (this.min === "") { + this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1; + } + if (this.max === "") { + if (originalMin === "") { + this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1; + } else { + this.max = this.min; + } + } + if (this.max !== -1 && this.max < this.min) { + this.max = this.min; + } + if (this.initial === "") { + this.initial = parent instanceof Template ? 1 : this.min; + } + } +} +class Oid extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "oid"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Oids extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "oids", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.oid = new XFAObjectArray(); + } +} +class Overflow extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "overflow"); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.target = attributes.target || ""; + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$getExtra]() { + if (!this[$extra]) { + const parent = this[$getParent](); + const root = this[$getTemplateRoot](); + const target = root[$searchNode](this.target, parent); + const leader = root[$searchNode](this.leader, parent); + const trailer = root[$searchNode](this.trailer, parent); + this[$extra] = { + target: target?.[0] || null, + leader: leader?.[0] || null, + trailer: trailer?.[0] || null, + addLeader: false, + addTrailer: false + }; + } + return this[$extra]; + } +} +class PageArea extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "pageArea", true); + this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, ["any", "blank", "notBlank"]); + this.id = attributes.id || ""; + this.initialNumber = getInteger({ + data: attributes.initialNumber, + defaultValue: 1, + validate: x => true + }); + this.name = attributes.name || ""; + this.numbered = getInteger({ + data: attributes.numbered, + defaultValue: 1, + validate: x => true + }); + this.oddOrEven = getStringOption(attributes.oddOrEven, ["any", "even", "odd"]); + this.pagePosition = getStringOption(attributes.pagePosition, ["any", "first", "last", "only", "rest"]); + this.relevant = getRelevant(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.desc = null; + this.extras = null; + this.medium = null; + this.occur = null; + this.area = new XFAObjectArray(); + this.contentArea = new XFAObjectArray(); + this.draw = new XFAObjectArray(); + this.exclGroup = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + } + [$isUsable]() { + if (!this[$extra]) { + this[$extra] = { + numberOfUse: 0 + }; + return true; + } + return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max; + } + [$cleanPage]() { + delete this[$extra]; + } + [$getNextPage]() { + this[$extra] ||= { + numberOfUse: 0 + }; + const parent = this[$getParent](); + if (parent.relation === "orderedOccurrence") { + if (this[$isUsable]()) { + this[$extra].numberOfUse += 1; + return this; + } + } + return parent[$getNextPage](); + } + [$getAvailableSpace]() { + return this[$extra].space || { + width: 0, + height: 0 + }; + } + [$toHTML]() { + this[$extra] ||= { + numberOfUse: 1 + }; + const children = []; + this[$extra].children = children; + const style = Object.create(null); + if (this.medium && this.medium.short && this.medium.long) { + style.width = measureToString(this.medium.short); + style.height = measureToString(this.medium.long); + this[$extra].space = { + width: this.medium.short, + height: this.medium.long + }; + if (this.medium.orientation === "landscape") { + const x = style.width; + style.width = style.height; + style.height = x; + this[$extra].space = { + width: this.medium.long, + height: this.medium.short + }; + } + } else { + warn("XFA - No medium specified in pageArea: please file a bug."); + } + this[$childrenToHTML]({ + filter: new Set(["area", "draw", "field", "subform"]), + include: true + }); + this[$childrenToHTML]({ + filter: new Set(["contentArea"]), + include: true + }); + return HTMLResult.success({ + name: "div", + children, + attributes: { + class: ["xfaPage"], + id: this[$uid], + style, + xfaName: this.name + } + }); + } +} +class PageSet extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "pageSet", true); + this.duplexImposition = getStringOption(attributes.duplexImposition, ["longEdge", "shortEdge"]); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relation = getStringOption(attributes.relation, ["orderedOccurrence", "duplexPaginated", "simplexPaginated"]); + this.relevant = getRelevant(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.occur = null; + this.pageArea = new XFAObjectArray(); + this.pageSet = new XFAObjectArray(); + } + [$cleanPage]() { + for (const page of this.pageArea.children) { + page[$cleanPage](); + } + for (const page of this.pageSet.children) { + page[$cleanPage](); + } + } + [$isUsable]() { + return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max; + } + [$getNextPage]() { + this[$extra] ||= { + numberOfUse: 1, + pageIndex: -1, + pageSetIndex: -1 + }; + if (this.relation === "orderedOccurrence") { + if (this[$extra].pageIndex + 1 < this.pageArea.children.length) { + this[$extra].pageIndex += 1; + const pageArea = this.pageArea.children[this[$extra].pageIndex]; + return pageArea[$getNextPage](); + } + if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) { + this[$extra].pageSetIndex += 1; + return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage](); + } + if (this[$isUsable]()) { + this[$extra].numberOfUse += 1; + this[$extra].pageIndex = -1; + this[$extra].pageSetIndex = -1; + return this[$getNextPage](); + } + const parent = this[$getParent](); + if (parent instanceof PageSet) { + return parent[$getNextPage](); + } + this[$cleanPage](); + return this[$getNextPage](); + } + const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber; + const parity = pageNumber % 2 === 0 ? "even" : "odd"; + const position = pageNumber === 0 ? "first" : "rest"; + let page = this.pageArea.children.find(p => p.oddOrEven === parity && p.pagePosition === position); + if (page) { + return page; + } + page = this.pageArea.children.find(p => p.oddOrEven === "any" && p.pagePosition === position); + if (page) { + return page; + } + page = this.pageArea.children.find(p => p.oddOrEven === "any" && p.pagePosition === "any"); + if (page) { + return page; + } + return this.pageArea.children[0]; + } +} +class Para extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "para", true); + this.hAlign = getStringOption(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.lineHeight = attributes.lineHeight ? getMeasurement(attributes.lineHeight, "0pt") : ""; + this.marginLeft = attributes.marginLeft ? getMeasurement(attributes.marginLeft, "0pt") : ""; + this.marginRight = attributes.marginRight ? getMeasurement(attributes.marginRight, "0pt") : ""; + this.orphans = getInteger({ + data: attributes.orphans, + defaultValue: 0, + validate: x => x >= 0 + }); + this.preserve = attributes.preserve || ""; + this.radixOffset = attributes.radixOffset ? getMeasurement(attributes.radixOffset, "0pt") : ""; + this.spaceAbove = attributes.spaceAbove ? getMeasurement(attributes.spaceAbove, "0pt") : ""; + this.spaceBelow = attributes.spaceBelow ? getMeasurement(attributes.spaceBelow, "0pt") : ""; + this.tabDefault = attributes.tabDefault ? getMeasurement(this.tabDefault) : ""; + this.tabStops = (attributes.tabStops || "").trim().split(/\s+/).map((x, i) => i % 2 === 1 ? getMeasurement(x) : x); + this.textIndent = attributes.textIndent ? getMeasurement(attributes.textIndent, "0pt") : ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.vAlign = getStringOption(attributes.vAlign, ["top", "bottom", "middle"]); + this.widows = getInteger({ + data: attributes.widows, + defaultValue: 0, + validate: x => x >= 0 + }); + this.hyphenation = null; + } + [$toStyle]() { + const style = toStyle(this, "hAlign"); + if (this.marginLeft !== "") { + style.paddingLeft = measureToString(this.marginLeft); + } + if (this.marginRight !== "") { + style.paddingRight = measureToString(this.marginRight); + } + if (this.spaceAbove !== "") { + style.paddingTop = measureToString(this.spaceAbove); + } + if (this.spaceBelow !== "") { + style.paddingBottom = measureToString(this.spaceBelow); + } + if (this.textIndent !== "") { + style.textIndent = measureToString(this.textIndent); + fixTextIndent(style); + } + if (this.lineHeight > 0) { + style.lineHeight = measureToString(this.lineHeight); + } + if (this.tabDefault !== "") { + style.tabSize = measureToString(this.tabDefault); + } + if (this.tabStops.length > 0) {} + if (this.hyphenatation) { + Object.assign(style, this.hyphenatation[$toStyle]()); + } + return style; + } +} +class PasswordEdit extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "passwordEdit", true); + this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.passwordChar = attributes.passwordChar || "*"; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } +} +class template_Pattern extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "pattern", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["crossHatch", "crossDiagonal", "diagonalLeft", "diagonalRight", "horizontal", "vertical"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [$toStyle](startColor) { + startColor = startColor ? startColor[$toStyle]() : "#FFFFFF"; + const endColor = this.color ? this.color[$toStyle]() : "#000000"; + const width = 5; + const cmd = "repeating-linear-gradient"; + const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${2 * width}px`; + switch (this.type) { + case "crossHatch": + return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`; + case "crossDiagonal": + return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`; + case "diagonalLeft": + return `${cmd}(45deg,${colors})`; + case "diagonalRight": + return `${cmd}(-45deg,${colors})`; + case "horizontal": + return `${cmd}(to top,${colors})`; + case "vertical": + return `${cmd}(to right,${colors})`; + } + return ""; + } +} +class Picture extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "picture"); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Proto extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "proto", true); + this.appearanceFilter = new XFAObjectArray(); + this.arc = new XFAObjectArray(); + this.area = new XFAObjectArray(); + this.assist = new XFAObjectArray(); + this.barcode = new XFAObjectArray(); + this.bindItems = new XFAObjectArray(); + this.bookend = new XFAObjectArray(); + this.boolean = new XFAObjectArray(); + this.border = new XFAObjectArray(); + this.break = new XFAObjectArray(); + this.breakAfter = new XFAObjectArray(); + this.breakBefore = new XFAObjectArray(); + this.button = new XFAObjectArray(); + this.calculate = new XFAObjectArray(); + this.caption = new XFAObjectArray(); + this.certificate = new XFAObjectArray(); + this.certificates = new XFAObjectArray(); + this.checkButton = new XFAObjectArray(); + this.choiceList = new XFAObjectArray(); + this.color = new XFAObjectArray(); + this.comb = new XFAObjectArray(); + this.connect = new XFAObjectArray(); + this.contentArea = new XFAObjectArray(); + this.corner = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.dateTimeEdit = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.defaultUi = new XFAObjectArray(); + this.desc = new XFAObjectArray(); + this.digestMethod = new XFAObjectArray(); + this.digestMethods = new XFAObjectArray(); + this.draw = new XFAObjectArray(); + this.edge = new XFAObjectArray(); + this.encoding = new XFAObjectArray(); + this.encodings = new XFAObjectArray(); + this.encrypt = new XFAObjectArray(); + this.encryptData = new XFAObjectArray(); + this.encryption = new XFAObjectArray(); + this.encryptionMethod = new XFAObjectArray(); + this.encryptionMethods = new XFAObjectArray(); + this.event = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.exObject = new XFAObjectArray(); + this.exclGroup = new XFAObjectArray(); + this.execute = new XFAObjectArray(); + this.extras = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.fill = new XFAObjectArray(); + this.filter = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.font = new XFAObjectArray(); + this.format = new XFAObjectArray(); + this.handler = new XFAObjectArray(); + this.hyphenation = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.imageEdit = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.issuers = new XFAObjectArray(); + this.items = new XFAObjectArray(); + this.keep = new XFAObjectArray(); + this.keyUsage = new XFAObjectArray(); + this.line = new XFAObjectArray(); + this.linear = new XFAObjectArray(); + this.lockDocument = new XFAObjectArray(); + this.manifest = new XFAObjectArray(); + this.margin = new XFAObjectArray(); + this.mdp = new XFAObjectArray(); + this.medium = new XFAObjectArray(); + this.message = new XFAObjectArray(); + this.numericEdit = new XFAObjectArray(); + this.occur = new XFAObjectArray(); + this.oid = new XFAObjectArray(); + this.oids = new XFAObjectArray(); + this.overflow = new XFAObjectArray(); + this.pageArea = new XFAObjectArray(); + this.pageSet = new XFAObjectArray(); + this.para = new XFAObjectArray(); + this.passwordEdit = new XFAObjectArray(); + this.pattern = new XFAObjectArray(); + this.picture = new XFAObjectArray(); + this.radial = new XFAObjectArray(); + this.reason = new XFAObjectArray(); + this.reasons = new XFAObjectArray(); + this.rectangle = new XFAObjectArray(); + this.ref = new XFAObjectArray(); + this.script = new XFAObjectArray(); + this.setProperty = new XFAObjectArray(); + this.signData = new XFAObjectArray(); + this.signature = new XFAObjectArray(); + this.signing = new XFAObjectArray(); + this.solid = new XFAObjectArray(); + this.speak = new XFAObjectArray(); + this.stipple = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + this.subformSet = new XFAObjectArray(); + this.subjectDN = new XFAObjectArray(); + this.subjectDNs = new XFAObjectArray(); + this.submit = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.textEdit = new XFAObjectArray(); + this.time = new XFAObjectArray(); + this.timeStamp = new XFAObjectArray(); + this.toolTip = new XFAObjectArray(); + this.traversal = new XFAObjectArray(); + this.traverse = new XFAObjectArray(); + this.ui = new XFAObjectArray(); + this.validate = new XFAObjectArray(); + this.value = new XFAObjectArray(); + this.variables = new XFAObjectArray(); + } +} +class Radial extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "radial", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["toEdge", "toCenter"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [$toStyle](startColor) { + startColor = startColor ? startColor[$toStyle]() : "#FFFFFF"; + const endColor = this.color ? this.color[$toStyle]() : "#000000"; + const colors = this.type === "toEdge" ? `${startColor},${endColor}` : `${endColor},${startColor}`; + return `radial-gradient(circle at center, ${colors})`; + } +} +class Reason extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "reason"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Reasons extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "reasons", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.reason = new XFAObjectArray(); + } +} +class Rectangle extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "rectangle", true); + this.hand = getStringOption(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.corner = new XFAObjectArray(4); + this.edge = new XFAObjectArray(4); + this.fill = null; + } + [$toHTML]() { + const edge = this.edge.children.length ? this.edge.children[0] : new Edge({}); + const edgeStyle = edge[$toStyle](); + const style = Object.create(null); + if (this.fill?.presence === "visible") { + Object.assign(style, this.fill[$toStyle]()); + } else { + style.fill = "transparent"; + } + style.strokeWidth = measureToString(edge.presence === "visible" ? edge.thickness : 0); + style.stroke = edgeStyle.color; + const corner = this.corner.children.length ? this.corner.children[0] : new Corner({}); + const cornerStyle = corner[$toStyle](); + const rect = { + name: "rect", + attributes: { + xmlns: SVG_NS, + width: "100%", + height: "100%", + x: 0, + y: 0, + rx: cornerStyle.radius, + ry: cornerStyle.radius, + style + } + }; + const svg = { + name: "svg", + children: [rect], + attributes: { + xmlns: SVG_NS, + style: { + overflow: "visible" + }, + width: "100%", + height: "100%" + } + }; + const parent = this[$getParent]()[$getParent](); + if (hasMargin(parent)) { + return HTMLResult.success({ + name: "div", + attributes: { + style: { + display: "inline", + width: "100%", + height: "100%" + } + }, + children: [svg] + }); + } + svg.attributes.style.position = "absolute"; + return HTMLResult.success(svg); + } +} +class RefElement extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "ref"); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Script extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "script"); + this.binding = attributes.binding || ""; + this.contentType = attributes.contentType || ""; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.runAt = getStringOption(attributes.runAt, ["client", "both", "server"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class SetProperty extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "setProperty"); + this.connection = attributes.connection || ""; + this.ref = attributes.ref || ""; + this.target = attributes.target || ""; + } +} +class SignData extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "signData", true); + this.id = attributes.id || ""; + this.operation = getStringOption(attributes.operation, ["sign", "clear", "verify"]); + this.ref = attributes.ref || ""; + this.target = attributes.target || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.filter = null; + this.manifest = null; + } +} +class Signature extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "signature", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["PDF1.3", "PDF1.6"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.filter = null; + this.manifest = null; + this.margin = null; + } +} +class Signing extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "signing", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = new XFAObjectArray(); + } +} +class Solid extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "solid", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + [$toStyle](startColor) { + return startColor ? startColor[$toStyle]() : "#FFFFFF"; + } +} +class Speak extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "speak"); + this.disable = getInteger({ + data: attributes.disable, + defaultValue: 0, + validate: x => x === 1 + }); + this.id = attributes.id || ""; + this.priority = getStringOption(attributes.priority, ["custom", "caption", "name", "toolTip"]); + this.rid = attributes.rid || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Stipple extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "stipple", true); + this.id = attributes.id || ""; + this.rate = getInteger({ + data: attributes.rate, + defaultValue: 50, + validate: x => x >= 0 && x <= 100 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [$toStyle](bgColor) { + const alpha = this.rate / 100; + return Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)); + } +} +class Subform extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subform", true); + this.access = getStringOption(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); + this.allowMacro = getInteger({ + data: attributes.allowMacro, + defaultValue: 0, + validate: x => x === 1 + }); + this.anchorType = getStringOption(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = getInteger({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.columnWidths = (attributes.columnWidths || "").trim().split(/\s+/).map(x => x === "-1" ? -1 : getMeasurement(x)); + this.h = attributes.h ? getMeasurement(attributes.h) : ""; + this.hAlign = getStringOption(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.layout = getStringOption(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); + this.locale = attributes.locale || ""; + this.maxH = getMeasurement(attributes.maxH, "0pt"); + this.maxW = getMeasurement(attributes.maxW, "0pt"); + this.mergeMode = getStringOption(attributes.mergeMode, ["consumeData", "matchTemplate"]); + this.minH = getMeasurement(attributes.minH, "0pt"); + this.minW = getMeasurement(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = getStringOption(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = getRelevant(attributes.relevant); + this.restoreState = getStringOption(attributes.restoreState, ["manual", "auto"]); + this.scope = getStringOption(attributes.scope, ["name", "none"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? getMeasurement(attributes.w) : ""; + this.x = getMeasurement(attributes.x, "0pt"); + this.y = getMeasurement(attributes.y, "0pt"); + this.assist = null; + this.bind = null; + this.bookend = null; + this.border = null; + this.break = null; + this.calculate = null; + this.desc = null; + this.extras = null; + this.keep = null; + this.margin = null; + this.occur = null; + this.overflow = null; + this.pageSet = null; + this.para = null; + this.traversal = null; + this.validate = null; + this.variables = null; + this.area = new XFAObjectArray(); + this.breakAfter = new XFAObjectArray(); + this.breakBefore = new XFAObjectArray(); + this.connect = new XFAObjectArray(); + this.draw = new XFAObjectArray(); + this.event = new XFAObjectArray(); + this.exObject = new XFAObjectArray(); + this.exclGroup = new XFAObjectArray(); + this.field = new XFAObjectArray(); + this.proto = new XFAObjectArray(); + this.setProperty = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + this.subformSet = new XFAObjectArray(); + } + [$getSubformParent]() { + const parent = this[$getParent](); + if (parent instanceof SubformSet) { + return parent[$getSubformParent](); + } + return parent; + } + [$isBindable]() { + return true; + } + [$isThereMoreWidth]() { + return this.layout.endsWith("-tb") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth](); + } + *[$getContainedChildren]() { + yield* getContainedChildren(this); + } + [$flushHTML]() { + return flushHTML(this); + } + [$addHTML](html, bbox) { + addHTML(this, html, bbox); + } + [$getAvailableSpace]() { + return getAvailableSpace(this); + } + [$isSplittable]() { + const parent = this[$getSubformParent](); + if (!parent[$isSplittable]()) { + return false; + } + if (this[$extra]._isSplittable !== undefined) { + return this[$extra]._isSplittable; + } + if (this.layout === "position" || this.layout.includes("row")) { + this[$extra]._isSplittable = false; + return false; + } + if (this.keep && this.keep.intact !== "none") { + this[$extra]._isSplittable = false; + return false; + } + if (parent.layout?.endsWith("-tb") && parent[$extra].numberInLine !== 0) { + return false; + } + this[$extra]._isSplittable = true; + return true; + } + [$toHTML](availableSpace) { + setTabIndex(this); + if (this.break) { + if (this.break.after !== "auto" || this.break.afterTarget !== "") { + const node = new BreakAfter({ + targetType: this.break.after, + target: this.break.afterTarget, + startNew: this.break.startNew.toString() + }); + node[$globalData] = this[$globalData]; + this[$appendChild](node); + this.breakAfter.push(node); + } + if (this.break.before !== "auto" || this.break.beforeTarget !== "") { + const node = new BreakBefore({ + targetType: this.break.before, + target: this.break.beforeTarget, + startNew: this.break.startNew.toString() + }); + node[$globalData] = this[$globalData]; + this[$appendChild](node); + this.breakBefore.push(node); + } + if (this.break.overflowTarget !== "") { + const node = new Overflow({ + target: this.break.overflowTarget, + leader: this.break.overflowLeader, + trailer: this.break.overflowTrailer + }); + node[$globalData] = this[$globalData]; + this[$appendChild](node); + this.overflow.push(node); + } + this[$removeChild](this.break); + this.break = null; + } + if (this.presence === "hidden" || this.presence === "inactive") { + return HTMLResult.EMPTY; + } + if (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) { + warn("XFA - Several breakBefore or breakAfter in subforms: please file a bug."); + } + if (this.breakBefore.children.length >= 1) { + const breakBefore = this.breakBefore.children[0]; + if (handleBreak(breakBefore)) { + return HTMLResult.breakNode(breakBefore); + } + } + if (this[$extra]?.afterBreakAfter) { + return HTMLResult.EMPTY; + } + fixDimensions(this); + const children = []; + const attributes = { + id: this[$uid], + class: [] + }; + setAccess(this, attributes.class); + this[$extra] ||= Object.create(null); + Object.assign(this[$extra], { + children, + line: null, + attributes, + attempt: 0, + numberInLine: 0, + availableSpace: { + width: Math.min(this.w || Infinity, availableSpace.width), + height: Math.min(this.h || Infinity, availableSpace.height) + }, + width: 0, + height: 0, + prevHeight: 0, + currentWidth: 0 + }); + const root = this[$getTemplateRoot](); + const savedNoLayoutFailure = root[$extra].noLayoutFailure; + const isSplittable = this[$isSplittable](); + if (!isSplittable) { + setFirstUnsplittable(this); + } + if (!checkDimensions(this, availableSpace)) { + return HTMLResult.FAILURE; + } + const filter = new Set(["area", "draw", "exclGroup", "field", "subform", "subformSet"]); + if (this.layout.includes("row")) { + const columnWidths = this[$getSubformParent]().columnWidths; + if (Array.isArray(columnWidths) && columnWidths.length > 0) { + this[$extra].columnWidths = columnWidths; + this[$extra].currentColumn = 0; + } + } + const style = toStyle(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"); + const classNames = ["xfaSubform"]; + const cl = layoutClass(this); + if (cl) { + classNames.push(cl); + } + attributes.style = style; + attributes.class = classNames; + if (this.name) { + attributes.xfaName = this.name; + } + if (this.overflow) { + const overflowExtra = this.overflow[$getExtra](); + if (overflowExtra.addLeader) { + overflowExtra.addLeader = false; + handleOverflow(this, overflowExtra.leader, availableSpace); + } + } + this[$pushPara](); + const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb"; + const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1; + for (; this[$extra].attempt < maxRun; this[$extra].attempt++) { + if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) { + this[$extra].numberInLine = 0; + } + const result = this[$childrenToHTML]({ + filter, + include: true + }); + if (result.success) { + break; + } + if (result.isBreak()) { + this[$popPara](); + return result; + } + if (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !root[$extra].noLayoutFailure) { + this[$extra].attempt = maxRun; + break; + } + } + this[$popPara](); + if (!isSplittable) { + unsetFirstUnsplittable(this); + } + root[$extra].noLayoutFailure = savedNoLayoutFailure; + if (this[$extra].attempt === maxRun) { + if (this.overflow) { + this[$getTemplateRoot]()[$extra].overflowNode = this.overflow; + } + if (!isSplittable) { + delete this[$extra]; + } + return HTMLResult.FAILURE; + } + if (this.overflow) { + const overflowExtra = this.overflow[$getExtra](); + if (overflowExtra.addTrailer) { + overflowExtra.addTrailer = false; + handleOverflow(this, overflowExtra.trailer, availableSpace); + } + } + let marginH = 0; + let marginV = 0; + if (this.margin) { + marginH = this.margin.leftInset + this.margin.rightInset; + marginV = this.margin.topInset + this.margin.bottomInset; + } + const width = Math.max(this[$extra].width + marginH, this.w || 0); + const height = Math.max(this[$extra].height + marginV, this.h || 0); + const bbox = [this.x, this.y, width, height]; + if (this.w === "") { + style.width = measureToString(width); + } + if (this.h === "") { + style.height = measureToString(height); + } + if ((style.width === "0px" || style.height === "0px") && children.length === 0) { + return HTMLResult.EMPTY; + } + const html = { + name: "div", + attributes, + children + }; + applyAssist(this, attributes); + const result = HTMLResult.success(createWrapper(this, html), bbox); + if (this.breakAfter.children.length >= 1) { + const breakAfter = this.breakAfter.children[0]; + if (handleBreak(breakAfter)) { + this[$extra].afterBreakAfter = result; + return HTMLResult.breakNode(breakAfter); + } + } + delete this[$extra]; + return result; + } +} +class SubformSet extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subformSet", true); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relation = getStringOption(attributes.relation, ["ordered", "choice", "unordered"]); + this.relevant = getRelevant(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.bookend = null; + this.break = null; + this.desc = null; + this.extras = null; + this.occur = null; + this.overflow = null; + this.breakAfter = new XFAObjectArray(); + this.breakBefore = new XFAObjectArray(); + this.subform = new XFAObjectArray(); + this.subformSet = new XFAObjectArray(); + } + *[$getContainedChildren]() { + yield* getContainedChildren(this); + } + [$getSubformParent]() { + let parent = this[$getParent](); + while (!(parent instanceof Subform)) { + parent = parent[$getParent](); + } + return parent; + } + [$isBindable]() { + return true; + } +} +class SubjectDN extends ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subjectDN"); + this.delimiter = attributes.delimiter || ","; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$finalize]() { + this[$content] = new Map(this[$content].split(this.delimiter).map(kv => { + kv = kv.split("=", 2); + kv[0] = kv[0].trim(); + return kv; + })); + } +} +class SubjectDNs extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subjectDNs", true); + this.id = attributes.id || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.subjectDN = new XFAObjectArray(); + } +} +class Submit extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "submit", true); + this.embedPDF = getInteger({ + data: attributes.embedPDF, + defaultValue: 0, + validate: x => x === 1 + }); + this.format = getStringOption(attributes.format, ["xdp", "formdata", "pdf", "urlencoded", "xfd", "xml"]); + this.id = attributes.id || ""; + this.target = attributes.target || ""; + this.textEncoding = getKeyword({ + data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : "", + defaultValue: "", + validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", "shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/) + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.xdpContent = attributes.xdpContent || ""; + this.encrypt = null; + this.encryptData = new XFAObjectArray(); + this.signData = new XFAObjectArray(); + } +} +class Template extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "template", true); + this.baseProfile = getStringOption(attributes.baseProfile, ["full", "interactiveForms"]); + this.extras = null; + this.subform = new XFAObjectArray(); + } + [$finalize]() { + if (this.subform.children.length === 0) { + warn("XFA - No subforms in template node."); + } + if (this.subform.children.length >= 2) { + warn("XFA - Several subforms in template node: please file a bug."); + } + this[$tabIndex] = DEFAULT_TAB_INDEX; + } + [$isSplittable]() { + return true; + } + [$searchNode](expr, container) { + if (expr.startsWith("#")) { + return [this[$ids].get(expr.slice(1))]; + } + return searchNode(this, container, expr, true, true); + } + *[$toPages]() { + if (!this.subform.children.length) { + return HTMLResult.success({ + name: "div", + children: [] + }); + } + this[$extra] = { + overflowNode: null, + firstUnsplittable: null, + currentContentArea: null, + currentPageArea: null, + noLayoutFailure: false, + pageNumber: 1, + pagePosition: "first", + oddOrEven: "odd", + blankOrNotBlank: "nonBlank", + paraStack: [] + }; + const root = this.subform.children[0]; + root.pageSet[$cleanPage](); + const pageAreas = root.pageSet.pageArea.children; + const mainHtml = { + name: "div", + children: [] + }; + let pageArea = null; + let breakBefore = null; + let breakBeforeTarget = null; + if (root.breakBefore.children.length >= 1) { + breakBefore = root.breakBefore.children[0]; + breakBeforeTarget = breakBefore.target; + } else if (root.subform.children.length >= 1 && root.subform.children[0].breakBefore.children.length >= 1) { + breakBefore = root.subform.children[0].breakBefore.children[0]; + breakBeforeTarget = breakBefore.target; + } else if (root.break?.beforeTarget) { + breakBefore = root.break; + breakBeforeTarget = breakBefore.beforeTarget; + } else if (root.subform.children.length >= 1 && root.subform.children[0].break?.beforeTarget) { + breakBefore = root.subform.children[0].break; + breakBeforeTarget = breakBefore.beforeTarget; + } + if (breakBefore) { + const target = this[$searchNode](breakBeforeTarget, breakBefore[$getParent]()); + if (target instanceof PageArea) { + pageArea = target; + breakBefore[$extra] = {}; + } + } + pageArea ||= pageAreas[0]; + pageArea[$extra] = { + numberOfUse: 1 + }; + const pageAreaParent = pageArea[$getParent](); + pageAreaParent[$extra] = { + numberOfUse: 1, + pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea), + pageSetIndex: 0 + }; + let targetPageArea; + let leader = null; + let trailer = null; + let hasSomething = true; + let hasSomethingCounter = 0; + let startIndex = 0; + while (true) { + if (!hasSomething) { + mainHtml.children.pop(); + if (++hasSomethingCounter === MAX_EMPTY_PAGES) { + warn("XFA - Something goes wrong: please file a bug."); + return mainHtml; + } + } else { + hasSomethingCounter = 0; + } + targetPageArea = null; + this[$extra].currentPageArea = pageArea; + const page = pageArea[$toHTML]().html; + mainHtml.children.push(page); + if (leader) { + this[$extra].noLayoutFailure = true; + page.children.push(leader[$toHTML](pageArea[$extra].space).html); + leader = null; + } + if (trailer) { + this[$extra].noLayoutFailure = true; + page.children.push(trailer[$toHTML](pageArea[$extra].space).html); + trailer = null; + } + const contentAreas = pageArea.contentArea.children; + const htmlContentAreas = page.children.filter(node => node.attributes.class.includes("xfaContentarea")); + hasSomething = false; + this[$extra].firstUnsplittable = null; + this[$extra].noLayoutFailure = false; + const flush = index => { + const html = root[$flushHTML](); + if (html) { + hasSomething ||= html.children?.length > 0; + htmlContentAreas[index].children.push(html); + } + }; + for (let i = startIndex, ii = contentAreas.length; i < ii; i++) { + const contentArea = this[$extra].currentContentArea = contentAreas[i]; + const space = { + width: contentArea.w, + height: contentArea.h + }; + startIndex = 0; + if (leader) { + htmlContentAreas[i].children.push(leader[$toHTML](space).html); + leader = null; + } + if (trailer) { + htmlContentAreas[i].children.push(trailer[$toHTML](space).html); + trailer = null; + } + const html = root[$toHTML](space); + if (html.success) { + if (html.html) { + hasSomething ||= html.html.children?.length > 0; + htmlContentAreas[i].children.push(html.html); + } else if (!hasSomething && mainHtml.children.length > 1) { + mainHtml.children.pop(); + } + return mainHtml; + } + if (html.isBreak()) { + const node = html.breakNode; + flush(i); + if (node.targetType === "auto") { + continue; + } + if (node.leader) { + leader = this[$searchNode](node.leader, node[$getParent]()); + leader = leader ? leader[0] : null; + } + if (node.trailer) { + trailer = this[$searchNode](node.trailer, node[$getParent]()); + trailer = trailer ? trailer[0] : null; + } + if (node.targetType === "pageArea") { + targetPageArea = node[$extra].target; + i = Infinity; + } else if (!node[$extra].target) { + i = node[$extra].index; + } else { + targetPageArea = node[$extra].target; + startIndex = node[$extra].index + 1; + i = Infinity; + } + continue; + } + if (this[$extra].overflowNode) { + const node = this[$extra].overflowNode; + this[$extra].overflowNode = null; + const overflowExtra = node[$getExtra](); + const target = overflowExtra.target; + overflowExtra.addLeader = overflowExtra.leader !== null; + overflowExtra.addTrailer = overflowExtra.trailer !== null; + flush(i); + const currentIndex = i; + i = Infinity; + if (target instanceof PageArea) { + targetPageArea = target; + } else if (target instanceof ContentArea) { + const index = contentAreas.indexOf(target); + if (index !== -1) { + if (index > currentIndex) { + i = index - 1; + } else { + startIndex = index; + } + } else { + targetPageArea = target[$getParent](); + startIndex = targetPageArea.contentArea.children.indexOf(target); + } + } + continue; + } + flush(i); + } + this[$extra].pageNumber += 1; + if (targetPageArea) { + if (targetPageArea[$isUsable]()) { + targetPageArea[$extra].numberOfUse += 1; + } else { + targetPageArea = null; + } + } + pageArea = targetPageArea || pageArea[$getNextPage](); + yield null; + } + } +} +class Text extends ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "text"); + this.id = attributes.id || ""; + this.maxChars = getInteger({ + data: attributes.maxChars, + defaultValue: 0, + validate: x => x >= 0 + }); + this.name = attributes.name || ""; + this.rid = attributes.rid || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$acceptWhitespace]() { + return true; + } + [$onChild](child) { + if (child[$namespaceId] === NamespaceIds.xhtml.id) { + this[$content] = child; + return true; + } + warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`); + return false; + } + [$onText](str) { + if (this[$content] instanceof XFAObject) { + return; + } + super[$onText](str); + } + [$finalize]() { + if (typeof this[$content] === "string") { + this[$content] = this[$content].replaceAll("\r\n", "\n"); + } + } + [$getExtra]() { + if (typeof this[$content] === "string") { + return this[$content].split(/[\u2029\u2028\n]/).filter(line => !!line).join("\n"); + } + return this[$content][$text](); + } + [$toHTML](availableSpace) { + if (typeof this[$content] === "string") { + const html = valueToHtml(this[$content]).html; + if (this[$content].includes("\u2029")) { + html.name = "div"; + html.children = []; + this[$content].split("\u2029").map(para => para.split(/[\u2028\n]/).flatMap(line => [{ + name: "span", + value: line + }, { + name: "br" + }])).forEach(lines => { + html.children.push({ + name: "p", + children: lines + }); + }); + } else if (/[\u2028\n]/.test(this[$content])) { + html.name = "div"; + html.children = []; + this[$content].split(/[\u2028\n]/).forEach(line => { + html.children.push({ + name: "span", + value: line + }, { + name: "br" + }); + }); + } + return HTMLResult.success(html); + } + return this[$content][$toHTML](availableSpace); + } +} +class TextEdit extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "textEdit", true); + this.allowRichText = getInteger({ + data: attributes.allowRichText, + defaultValue: 0, + validate: x => x === 1 + }); + this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.multiLine = getInteger({ + data: attributes.multiLine, + defaultValue: "", + validate: x => x === 0 || x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, ["auto", "off", "on"]); + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + [$toHTML](availableSpace) { + const style = toStyle(this, "border", "font", "margin"); + let html; + const field = this[$getParent]()[$getParent](); + if (this.multiLine === "") { + this.multiLine = field instanceof Draw ? 1 : 0; + } + if (this.multiLine === 1) { + html = { + name: "textarea", + attributes: { + dataId: field[$data]?.[$uid] || field[$uid], + fieldId: field[$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + } else { + html = { + name: "input", + attributes: { + type: "text", + dataId: field[$data]?.[$uid] || field[$uid], + fieldId: field[$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + } + if (isRequired(field)) { + html.attributes["aria-required"] = true; + html.attributes.required = true; + } + return HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [html] + }); + } +} +class Time extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "time"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [$finalize]() { + const date = this[$content].trim(); + this[$content] = date ? new Date(date) : null; + } + [$toHTML](availableSpace) { + return valueToHtml(this[$content] ? this[$content].toString() : ""); + } +} +class TimeStamp extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "timeStamp"); + this.id = attributes.id || ""; + this.server = attributes.server || ""; + this.type = getStringOption(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class ToolTip extends StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "toolTip"); + this.id = attributes.id || ""; + this.rid = attributes.rid || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Traversal extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "traversal", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.traverse = new XFAObjectArray(); + } +} +class Traverse extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "traverse", true); + this.id = attributes.id || ""; + this.operation = getStringOption(attributes.operation, ["next", "back", "down", "first", "left", "right", "up"]); + this.ref = attributes.ref || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.script = null; + } + get name() { + return this.operation; + } + [$isTransparent]() { + return false; + } +} +class Ui extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "ui", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.picture = null; + this.barcode = null; + this.button = null; + this.checkButton = null; + this.choiceList = null; + this.dateTimeEdit = null; + this.defaultUi = null; + this.imageEdit = null; + this.numericEdit = null; + this.passwordEdit = null; + this.signature = null; + this.textEdit = null; + } + [$getExtra]() { + if (this[$extra] === undefined) { + for (const name of Object.getOwnPropertyNames(this)) { + if (name === "extras" || name === "picture") { + continue; + } + const obj = this[name]; + if (!(obj instanceof XFAObject)) { + continue; + } + this[$extra] = obj; + return obj; + } + this[$extra] = null; + } + return this[$extra]; + } + [$toHTML](availableSpace) { + const obj = this[$getExtra](); + if (obj) { + return obj[$toHTML](availableSpace); + } + return HTMLResult.EMPTY; + } +} +class Validate extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "validate", true); + this.formatTest = getStringOption(attributes.formatTest, ["warning", "disabled", "error"]); + this.id = attributes.id || ""; + this.nullTest = getStringOption(attributes.nullTest, ["disabled", "error", "warning"]); + this.scriptTest = getStringOption(attributes.scriptTest, ["error", "disabled", "warning"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.message = null; + this.picture = null; + this.script = null; + } +} +class Value extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "value", true); + this.id = attributes.id || ""; + this.override = getInteger({ + data: attributes.override, + defaultValue: 0, + validate: x => x === 1 + }); + this.relevant = getRelevant(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.arc = null; + this.boolean = null; + this.date = null; + this.dateTime = null; + this.decimal = null; + this.exData = null; + this.float = null; + this.image = null; + this.integer = null; + this.line = null; + this.rectangle = null; + this.text = null; + this.time = null; + } + [$setValue](value) { + const parent = this[$getParent](); + if (parent instanceof Field) { + if (parent.ui?.imageEdit) { + if (!this.image) { + this.image = new Image({}); + this[$appendChild](this.image); + } + this.image[$content] = value[$content]; + return; + } + } + const valueName = value[$nodeName]; + if (this[valueName] !== null) { + this[valueName][$content] = value[$content]; + return; + } + for (const name of Object.getOwnPropertyNames(this)) { + const obj = this[name]; + if (obj instanceof XFAObject) { + this[name] = null; + this[$removeChild](obj); + } + } + this[value[$nodeName]] = value; + this[$appendChild](value); + } + [$text]() { + if (this.exData) { + if (typeof this.exData[$content] === "string") { + return this.exData[$content].trim(); + } + return this.exData[$content][$text]().trim(); + } + for (const name of Object.getOwnPropertyNames(this)) { + if (name === "image") { + continue; + } + const obj = this[name]; + if (obj instanceof XFAObject) { + return (obj[$content] || "").toString().trim(); + } + } + return null; + } + [$toHTML](availableSpace) { + for (const name of Object.getOwnPropertyNames(this)) { + const obj = this[name]; + if (!(obj instanceof XFAObject)) { + continue; + } + return obj[$toHTML](availableSpace); + } + return HTMLResult.EMPTY; + } +} +class Variables extends XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "variables", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new XFAObjectArray(); + this.date = new XFAObjectArray(); + this.dateTime = new XFAObjectArray(); + this.decimal = new XFAObjectArray(); + this.exData = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.manifest = new XFAObjectArray(); + this.script = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } + [$isTransparent]() { + return true; + } +} +class TemplateNamespace { + static [$buildXFAObject](name, attributes) { + if (TemplateNamespace.hasOwnProperty(name)) { + const node = TemplateNamespace[name](attributes); + node[$setSetAttributes](attributes); + return node; + } + return undefined; + } + static appearanceFilter(attrs) { + return new AppearanceFilter(attrs); + } + static arc(attrs) { + return new Arc(attrs); + } + static area(attrs) { + return new Area(attrs); + } + static assist(attrs) { + return new Assist(attrs); + } + static barcode(attrs) { + return new Barcode(attrs); + } + static bind(attrs) { + return new Bind(attrs); + } + static bindItems(attrs) { + return new BindItems(attrs); + } + static bookend(attrs) { + return new Bookend(attrs); + } + static boolean(attrs) { + return new BooleanElement(attrs); + } + static border(attrs) { + return new Border(attrs); + } + static break(attrs) { + return new Break(attrs); + } + static breakAfter(attrs) { + return new BreakAfter(attrs); + } + static breakBefore(attrs) { + return new BreakBefore(attrs); + } + static button(attrs) { + return new Button(attrs); + } + static calculate(attrs) { + return new Calculate(attrs); + } + static caption(attrs) { + return new Caption(attrs); + } + static certificate(attrs) { + return new Certificate(attrs); + } + static certificates(attrs) { + return new Certificates(attrs); + } + static checkButton(attrs) { + return new CheckButton(attrs); + } + static choiceList(attrs) { + return new ChoiceList(attrs); + } + static color(attrs) { + return new Color(attrs); + } + static comb(attrs) { + return new Comb(attrs); + } + static connect(attrs) { + return new Connect(attrs); + } + static contentArea(attrs) { + return new ContentArea(attrs); + } + static corner(attrs) { + return new Corner(attrs); + } + static date(attrs) { + return new DateElement(attrs); + } + static dateTime(attrs) { + return new DateTime(attrs); + } + static dateTimeEdit(attrs) { + return new DateTimeEdit(attrs); + } + static decimal(attrs) { + return new Decimal(attrs); + } + static defaultUi(attrs) { + return new DefaultUi(attrs); + } + static desc(attrs) { + return new Desc(attrs); + } + static digestMethod(attrs) { + return new DigestMethod(attrs); + } + static digestMethods(attrs) { + return new DigestMethods(attrs); + } + static draw(attrs) { + return new Draw(attrs); + } + static edge(attrs) { + return new Edge(attrs); + } + static encoding(attrs) { + return new Encoding(attrs); + } + static encodings(attrs) { + return new Encodings(attrs); + } + static encrypt(attrs) { + return new Encrypt(attrs); + } + static encryptData(attrs) { + return new EncryptData(attrs); + } + static encryption(attrs) { + return new Encryption(attrs); + } + static encryptionMethod(attrs) { + return new EncryptionMethod(attrs); + } + static encryptionMethods(attrs) { + return new EncryptionMethods(attrs); + } + static event(attrs) { + return new Event(attrs); + } + static exData(attrs) { + return new ExData(attrs); + } + static exObject(attrs) { + return new ExObject(attrs); + } + static exclGroup(attrs) { + return new ExclGroup(attrs); + } + static execute(attrs) { + return new Execute(attrs); + } + static extras(attrs) { + return new Extras(attrs); + } + static field(attrs) { + return new Field(attrs); + } + static fill(attrs) { + return new Fill(attrs); + } + static filter(attrs) { + return new Filter(attrs); + } + static float(attrs) { + return new Float(attrs); + } + static font(attrs) { + return new template_Font(attrs); + } + static format(attrs) { + return new Format(attrs); + } + static handler(attrs) { + return new Handler(attrs); + } + static hyphenation(attrs) { + return new Hyphenation(attrs); + } + static image(attrs) { + return new Image(attrs); + } + static imageEdit(attrs) { + return new ImageEdit(attrs); + } + static integer(attrs) { + return new Integer(attrs); + } + static issuers(attrs) { + return new Issuers(attrs); + } + static items(attrs) { + return new Items(attrs); + } + static keep(attrs) { + return new Keep(attrs); + } + static keyUsage(attrs) { + return new KeyUsage(attrs); + } + static line(attrs) { + return new Line(attrs); + } + static linear(attrs) { + return new Linear(attrs); + } + static lockDocument(attrs) { + return new LockDocument(attrs); + } + static manifest(attrs) { + return new Manifest(attrs); + } + static margin(attrs) { + return new Margin(attrs); + } + static mdp(attrs) { + return new Mdp(attrs); + } + static medium(attrs) { + return new Medium(attrs); + } + static message(attrs) { + return new Message(attrs); + } + static numericEdit(attrs) { + return new NumericEdit(attrs); + } + static occur(attrs) { + return new Occur(attrs); + } + static oid(attrs) { + return new Oid(attrs); + } + static oids(attrs) { + return new Oids(attrs); + } + static overflow(attrs) { + return new Overflow(attrs); + } + static pageArea(attrs) { + return new PageArea(attrs); + } + static pageSet(attrs) { + return new PageSet(attrs); + } + static para(attrs) { + return new Para(attrs); + } + static passwordEdit(attrs) { + return new PasswordEdit(attrs); + } + static pattern(attrs) { + return new template_Pattern(attrs); + } + static picture(attrs) { + return new Picture(attrs); + } + static proto(attrs) { + return new Proto(attrs); + } + static radial(attrs) { + return new Radial(attrs); + } + static reason(attrs) { + return new Reason(attrs); + } + static reasons(attrs) { + return new Reasons(attrs); + } + static rectangle(attrs) { + return new Rectangle(attrs); + } + static ref(attrs) { + return new RefElement(attrs); + } + static script(attrs) { + return new Script(attrs); + } + static setProperty(attrs) { + return new SetProperty(attrs); + } + static signData(attrs) { + return new SignData(attrs); + } + static signature(attrs) { + return new Signature(attrs); + } + static signing(attrs) { + return new Signing(attrs); + } + static solid(attrs) { + return new Solid(attrs); + } + static speak(attrs) { + return new Speak(attrs); + } + static stipple(attrs) { + return new Stipple(attrs); + } + static subform(attrs) { + return new Subform(attrs); + } + static subformSet(attrs) { + return new SubformSet(attrs); + } + static subjectDN(attrs) { + return new SubjectDN(attrs); + } + static subjectDNs(attrs) { + return new SubjectDNs(attrs); + } + static submit(attrs) { + return new Submit(attrs); + } + static template(attrs) { + return new Template(attrs); + } + static text(attrs) { + return new Text(attrs); + } + static textEdit(attrs) { + return new TextEdit(attrs); + } + static time(attrs) { + return new Time(attrs); + } + static timeStamp(attrs) { + return new TimeStamp(attrs); + } + static toolTip(attrs) { + return new ToolTip(attrs); + } + static traversal(attrs) { + return new Traversal(attrs); + } + static traverse(attrs) { + return new Traverse(attrs); + } + static ui(attrs) { + return new Ui(attrs); + } + static validate(attrs) { + return new Validate(attrs); + } + static value(attrs) { + return new Value(attrs); + } + static variables(attrs) { + return new Variables(attrs); + } +} + +;// ./src/core/xfa/bind.js + + + + + + +const bind_NS_DATASETS = NamespaceIds.datasets.id; +function createText(content) { + const node = new Text({}); + node[$content] = content; + return node; +} +class Binder { + constructor(root) { + this.root = root; + this.datasets = root.datasets; + this.data = root.datasets?.data || new XmlObject(NamespaceIds.datasets.id, "data"); + this.emptyMerge = this.data[$getChildren]().length === 0; + this.root.form = this.form = root.template[$clone](); + } + _isConsumeData() { + return !this.emptyMerge && this._mergeMode; + } + _isMatchTemplate() { + return !this._isConsumeData(); + } + bind() { + this._bindElement(this.form, this.data); + return this.form; + } + getData() { + return this.data; + } + _bindValue(formNode, data, picture) { + formNode[$data] = data; + if (formNode[$hasSettableValue]()) { + if (data[$isDataValue]()) { + const value = data[$getDataValue](); + formNode[$setValue](createText(value)); + } else if (formNode instanceof Field && formNode.ui?.choiceList?.open === "multiSelect") { + const value = data[$getChildren]().map(child => child[$content].trim()).join("\n"); + formNode[$setValue](createText(value)); + } else if (this._isConsumeData()) { + warn(`XFA - Nodes haven't the same type.`); + } + } else if (!data[$isDataValue]() || this._isMatchTemplate()) { + this._bindElement(formNode, data); + } else { + warn(`XFA - Nodes haven't the same type.`); + } + } + _findDataByNameToConsume(name, isValue, dataNode, global) { + if (!name) { + return null; + } + let generator, match; + for (let i = 0; i < 3; i++) { + generator = dataNode[$getRealChildrenByNameIt](name, false, true); + while (true) { + match = generator.next().value; + if (!match) { + break; + } + if (isValue === match[$isDataValue]()) { + return match; + } + } + if (dataNode[$namespaceId] === NamespaceIds.datasets.id && dataNode[$nodeName] === "data") { + break; + } + dataNode = dataNode[$getParent](); + } + if (!global) { + return null; + } + generator = this.data[$getRealChildrenByNameIt](name, true, false); + match = generator.next().value; + if (match) { + return match; + } + generator = this.data[$getAttributeIt](name, true); + match = generator.next().value; + if (match?.[$isDataValue]()) { + return match; + } + return null; + } + _setProperties(formNode, dataNode) { + if (!formNode.hasOwnProperty("setProperty")) { + return; + } + for (const { + ref, + target, + connection + } of formNode.setProperty.children) { + if (connection) { + continue; + } + if (!ref) { + continue; + } + const nodes = searchNode(this.root, dataNode, ref, false, false); + if (!nodes) { + warn(`XFA - Invalid reference: ${ref}.`); + continue; + } + const [node] = nodes; + if (!node[$isDescendent](this.data)) { + warn(`XFA - Invalid node: must be a data node.`); + continue; + } + const targetNodes = searchNode(this.root, formNode, target, false, false); + if (!targetNodes) { + warn(`XFA - Invalid target: ${target}.`); + continue; + } + const [targetNode] = targetNodes; + if (!targetNode[$isDescendent](formNode)) { + warn(`XFA - Invalid target: must be a property or subproperty.`); + continue; + } + const targetParent = targetNode[$getParent](); + if (targetNode instanceof SetProperty || targetParent instanceof SetProperty) { + warn(`XFA - Invalid target: cannot be a setProperty or one of its properties.`); + continue; + } + if (targetNode instanceof BindItems || targetParent instanceof BindItems) { + warn(`XFA - Invalid target: cannot be a bindItems or one of its properties.`); + continue; + } + const content = node[$text](); + const name = targetNode[$nodeName]; + if (targetNode instanceof XFAAttribute) { + const attrs = Object.create(null); + attrs[name] = content; + const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]); + targetParent[name] = obj[name]; + continue; + } + if (!targetNode.hasOwnProperty($content)) { + warn(`XFA - Invalid node to use in setProperty`); + continue; + } + targetNode[$data] = node; + targetNode[$content] = content; + targetNode[$finalize](); + } + } + _bindItems(formNode, dataNode) { + if (!formNode.hasOwnProperty("items") || !formNode.hasOwnProperty("bindItems") || formNode.bindItems.isEmpty()) { + return; + } + for (const item of formNode.items.children) { + formNode[$removeChild](item); + } + formNode.items.clear(); + const labels = new Items({}); + const values = new Items({}); + formNode[$appendChild](labels); + formNode.items.push(labels); + formNode[$appendChild](values); + formNode.items.push(values); + for (const { + ref, + labelRef, + valueRef, + connection + } of formNode.bindItems.children) { + if (connection) { + continue; + } + if (!ref) { + continue; + } + const nodes = searchNode(this.root, dataNode, ref, false, false); + if (!nodes) { + warn(`XFA - Invalid reference: ${ref}.`); + continue; + } + for (const node of nodes) { + if (!node[$isDescendent](this.datasets)) { + warn(`XFA - Invalid ref (${ref}): must be a datasets child.`); + continue; + } + const labelNodes = searchNode(this.root, node, labelRef, true, false); + if (!labelNodes) { + warn(`XFA - Invalid label: ${labelRef}.`); + continue; + } + const [labelNode] = labelNodes; + if (!labelNode[$isDescendent](this.datasets)) { + warn(`XFA - Invalid label: must be a datasets child.`); + continue; + } + const valueNodes = searchNode(this.root, node, valueRef, true, false); + if (!valueNodes) { + warn(`XFA - Invalid value: ${valueRef}.`); + continue; + } + const [valueNode] = valueNodes; + if (!valueNode[$isDescendent](this.datasets)) { + warn(`XFA - Invalid value: must be a datasets child.`); + continue; + } + const label = createText(labelNode[$text]()); + const value = createText(valueNode[$text]()); + labels[$appendChild](label); + labels.text.push(label); + values[$appendChild](value); + values.text.push(value); + } + } + } + _bindOccurrences(formNode, matches, picture) { + let baseClone; + if (matches.length > 1) { + baseClone = formNode[$clone](); + baseClone[$removeChild](baseClone.occur); + baseClone.occur = null; + } + this._bindValue(formNode, matches[0], picture); + this._setProperties(formNode, matches[0]); + this._bindItems(formNode, matches[0]); + if (matches.length === 1) { + return; + } + const parent = formNode[$getParent](); + const name = formNode[$nodeName]; + const pos = parent[$indexOf](formNode); + for (let i = 1, ii = matches.length; i < ii; i++) { + const match = matches[i]; + const clone = baseClone[$clone](); + parent[name].push(clone); + parent[$insertAt](pos + i, clone); + this._bindValue(clone, match, picture); + this._setProperties(clone, match); + this._bindItems(clone, match); + } + } + _createOccurrences(formNode) { + if (!this.emptyMerge) { + return; + } + const { + occur + } = formNode; + if (!occur || occur.initial <= 1) { + return; + } + const parent = formNode[$getParent](); + const name = formNode[$nodeName]; + if (!(parent[name] instanceof XFAObjectArray)) { + return; + } + let currentNumber; + if (formNode.name) { + currentNumber = parent[name].children.filter(e => e.name === formNode.name).length; + } else { + currentNumber = parent[name].children.length; + } + const pos = parent[$indexOf](formNode) + 1; + const ii = occur.initial - currentNumber; + if (ii) { + const nodeClone = formNode[$clone](); + nodeClone[$removeChild](nodeClone.occur); + nodeClone.occur = null; + parent[name].push(nodeClone); + parent[$insertAt](pos, nodeClone); + for (let i = 1; i < ii; i++) { + const clone = nodeClone[$clone](); + parent[name].push(clone); + parent[$insertAt](pos + i, clone); + } + } + } + _getOccurInfo(formNode) { + const { + name, + occur + } = formNode; + if (!occur || !name) { + return [1, 1]; + } + const max = occur.max === -1 ? Infinity : occur.max; + return [occur.min, max]; + } + _setAndBind(formNode, dataNode) { + this._setProperties(formNode, dataNode); + this._bindItems(formNode, dataNode); + this._bindElement(formNode, dataNode); + } + _bindElement(formNode, dataNode) { + const uselessNodes = []; + this._createOccurrences(formNode); + for (const child of formNode[$getChildren]()) { + if (child[$data]) { + continue; + } + if (this._mergeMode === undefined && child[$nodeName] === "subform") { + this._mergeMode = child.mergeMode === "consumeData"; + const dataChildren = dataNode[$getChildren](); + if (dataChildren.length > 0) { + this._bindOccurrences(child, [dataChildren[0]], null); + } else if (this.emptyMerge) { + const nsId = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : dataNode[$namespaceId]; + const dataChild = child[$data] = new XmlObject(nsId, child.name || "root"); + dataNode[$appendChild](dataChild); + this._bindElement(child, dataChild); + } + continue; + } + if (!child[$isBindable]()) { + continue; + } + let global = false; + let picture = null; + let ref = null; + let match = null; + if (child.bind) { + switch (child.bind.match) { + case "none": + this._setAndBind(child, dataNode); + continue; + case "global": + global = true; + break; + case "dataRef": + if (!child.bind.ref) { + warn(`XFA - ref is empty in node ${child[$nodeName]}.`); + this._setAndBind(child, dataNode); + continue; + } + ref = child.bind.ref; + break; + default: + break; + } + if (child.bind.picture) { + picture = child.bind.picture[$content]; + } + } + const [min, max] = this._getOccurInfo(child); + if (ref) { + match = searchNode(this.root, dataNode, ref, true, false); + if (match === null) { + match = createDataNode(this.data, dataNode, ref); + if (!match) { + continue; + } + if (this._isConsumeData()) { + match[$consumed] = true; + } + this._setAndBind(child, match); + continue; + } else { + if (this._isConsumeData()) { + match = match.filter(node => !node[$consumed]); + } + if (match.length > max) { + match = match.slice(0, max); + } else if (match.length === 0) { + match = null; + } + if (match && this._isConsumeData()) { + match.forEach(node => { + node[$consumed] = true; + }); + } + } + } else { + if (!child.name) { + this._setAndBind(child, dataNode); + continue; + } + if (this._isConsumeData()) { + const matches = []; + while (matches.length < max) { + const found = this._findDataByNameToConsume(child.name, child[$hasSettableValue](), dataNode, global); + if (!found) { + break; + } + found[$consumed] = true; + matches.push(found); + } + match = matches.length > 0 ? matches : null; + } else { + match = dataNode[$getRealChildrenByNameIt](child.name, false, this.emptyMerge).next().value; + if (!match) { + if (min === 0) { + uselessNodes.push(child); + continue; + } + const nsId = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : dataNode[$namespaceId]; + match = child[$data] = new XmlObject(nsId, child.name); + if (this.emptyMerge) { + match[$consumed] = true; + } + dataNode[$appendChild](match); + this._setAndBind(child, match); + continue; + } + if (this.emptyMerge) { + match[$consumed] = true; + } + match = [match]; + } + } + if (match) { + this._bindOccurrences(child, match, picture); + } else if (min > 0) { + this._setAndBind(child, dataNode); + } else { + uselessNodes.push(child); + } + } + uselessNodes.forEach(node => node[$getParent]()[$removeChild](node)); + } +} + +;// ./src/core/xfa/data.js + +class DataHandler { + constructor(root, data) { + this.data = data; + this.dataset = root.datasets || null; + } + serialize(storage) { + const stack = [[-1, this.data[$getChildren]()]]; + while (stack.length > 0) { + const last = stack.at(-1); + const [i, children] = last; + if (i + 1 === children.length) { + stack.pop(); + continue; + } + const child = children[++last[0]]; + const storageEntry = storage.get(child[$uid]); + if (storageEntry) { + child[$setValue](storageEntry); + } else { + const attributes = child[$getAttributes](); + for (const value of attributes.values()) { + const entry = storage.get(value[$uid]); + if (entry) { + value[$setValue](entry); + break; + } + } + } + const nodes = child[$getChildren](); + if (nodes.length > 0) { + stack.push([-1, nodes]); + } + } + const buf = [``]; + if (this.dataset) { + for (const child of this.dataset[$getChildren]()) { + if (child[$nodeName] !== "data") { + child[$toString](buf); + } + } + } + this.data[$toString](buf); + buf.push(""); + return buf.join(""); + } +} + +;// ./src/core/xfa/config.js + + + + + +const CONFIG_NS_ID = NamespaceIds.config.id; +class Acrobat extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "acrobat", true); + this.acrobat7 = null; + this.autoSave = null; + this.common = null; + this.validate = null; + this.validateApprovalSignatures = null; + this.submitUrl = new XFAObjectArray(); + } +} +class Acrobat7 extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "acrobat7", true); + this.dynamicRender = null; + } +} +class ADBE_JSConsole extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ADBE_JSConsole", ["delegate", "Enable", "Disable"]); + } +} +class ADBE_JSDebugger extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ADBE_JSDebugger", ["delegate", "Enable", "Disable"]); + } +} +class AddSilentPrint extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "addSilentPrint"); + } +} +class AddViewerPreferences extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "addViewerPreferences"); + } +} +class AdjustData extends Option10 { + constructor(attributes) { + super(CONFIG_NS_ID, "adjustData"); + } +} +class AdobeExtensionLevel extends IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "adobeExtensionLevel", 0, n => n >= 1 && n <= 8); + } +} +class Agent extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "agent", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.common = new XFAObjectArray(); + } +} +class AlwaysEmbed extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "alwaysEmbed"); + } +} +class Amd extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "amd"); + } +} +class config_Area extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "area"); + this.level = getInteger({ + data: attributes.level, + defaultValue: 0, + validate: n => n >= 1 && n <= 3 + }); + this.name = getStringOption(attributes.name, ["", "barcode", "coreinit", "deviceDriver", "font", "general", "layout", "merge", "script", "signature", "sourceSet", "templateCache"]); + } +} +class Attributes extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "attributes", ["preserve", "delegate", "ignore"]); + } +} +class AutoSave extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "autoSave", ["disabled", "enabled"]); + } +} +class Base extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "base"); + } +} +class BatchOutput extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "batchOutput"); + this.format = getStringOption(attributes.format, ["none", "concat", "zip", "zipCompress"]); + } +} +class BehaviorOverride extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "behaviorOverride"); + } + [$finalize]() { + this[$content] = new Map(this[$content].trim().split(/\s+/).filter(x => x.includes(":")).map(x => x.split(":", 2))); + } +} +class Cache extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "cache", true); + this.templateCache = null; + } +} +class Change extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "change"); + } +} +class Common extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "common", true); + this.data = null; + this.locale = null; + this.localeSet = null; + this.messaging = null; + this.suppressBanner = null; + this.template = null; + this.validationMessaging = null; + this.versionControl = null; + this.log = new XFAObjectArray(); + } +} +class Compress extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "compress"); + this.scope = getStringOption(attributes.scope, ["imageOnly", "document"]); + } +} +class CompressLogicalStructure extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "compressLogicalStructure"); + } +} +class CompressObjectStream extends Option10 { + constructor(attributes) { + super(CONFIG_NS_ID, "compressObjectStream"); + } +} +class Compression extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "compression", true); + this.compressLogicalStructure = null; + this.compressObjectStream = null; + this.level = null; + this.type = null; + } +} +class Config extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "config", true); + this.acrobat = null; + this.present = null; + this.trace = null; + this.agent = new XFAObjectArray(); + } +} +class Conformance extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "conformance", ["A", "B"]); + } +} +class ContentCopy extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "contentCopy"); + } +} +class Copies extends IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "copies", 1, n => n >= 1); + } +} +class Creator extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "creator"); + } +} +class CurrentPage extends IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "currentPage", 0, n => n >= 0); + } +} +class Data extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "data", true); + this.adjustData = null; + this.attributes = null; + this.incrementalLoad = null; + this.outputXSL = null; + this.range = null; + this.record = null; + this.startNode = null; + this.uri = null; + this.window = null; + this.xsl = null; + this.excludeNS = new XFAObjectArray(); + this.transform = new XFAObjectArray(); + } +} +class Debug extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "debug", true); + this.uri = null; + } +} +class DefaultTypeface extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "defaultTypeface"); + this.writingScript = getStringOption(attributes.writingScript, ["*", "Arabic", "Cyrillic", "EastEuropeanRoman", "Greek", "Hebrew", "Japanese", "Korean", "Roman", "SimplifiedChinese", "Thai", "TraditionalChinese", "Vietnamese"]); + } +} +class Destination extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "destination", ["pdf", "pcl", "ps", "webClient", "zpl"]); + } +} +class DocumentAssembly extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "documentAssembly"); + } +} +class Driver extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "driver", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } +} +class DuplexOption extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "duplexOption", ["simplex", "duplexFlipLongEdge", "duplexFlipShortEdge"]); + } +} +class DynamicRender extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "dynamicRender", ["forbidden", "required"]); + } +} +class Embed extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "embed"); + } +} +class config_Encrypt extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "encrypt"); + } +} +class config_Encryption extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "encryption", true); + this.encrypt = null; + this.encryptionLevel = null; + this.permissions = null; + } +} +class EncryptionLevel extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "encryptionLevel", ["40bit", "128bit"]); + } +} +class Enforce extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "enforce"); + } +} +class Equate extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "equate"); + this.force = getInteger({ + data: attributes.force, + defaultValue: 1, + validate: n => n === 0 + }); + this.from = attributes.from || ""; + this.to = attributes.to || ""; + } +} +class EquateRange extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "equateRange"); + this.from = attributes.from || ""; + this.to = attributes.to || ""; + this._unicodeRange = attributes.unicodeRange || ""; + } + get unicodeRange() { + const ranges = []; + const unicodeRegex = /U\+([0-9a-fA-F]+)/; + const unicodeRange = this._unicodeRange; + for (let range of unicodeRange.split(",").map(x => x.trim()).filter(x => !!x)) { + range = range.split("-", 2).map(x => { + const found = x.match(unicodeRegex); + if (!found) { + return 0; + } + return parseInt(found[1], 16); + }); + if (range.length === 1) { + range.push(range[0]); + } + ranges.push(range); + } + return shadow(this, "unicodeRange", ranges); + } +} +class Exclude extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "exclude"); + } + [$finalize]() { + this[$content] = this[$content].trim().split(/\s+/).filter(x => x && ["calculate", "close", "enter", "exit", "initialize", "ready", "validate"].includes(x)); + } +} +class ExcludeNS extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "excludeNS"); + } +} +class FlipLabel extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "flipLabel", ["usePrinterSetting", "on", "off"]); + } +} +class config_FontInfo extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "fontInfo", true); + this.embed = null; + this.map = null; + this.subsetBelow = null; + this.alwaysEmbed = new XFAObjectArray(); + this.defaultTypeface = new XFAObjectArray(); + this.neverEmbed = new XFAObjectArray(); + } +} +class FormFieldFilling extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "formFieldFilling"); + } +} +class GroupParent extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "groupParent"); + } +} +class IfEmpty extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ifEmpty", ["dataValue", "dataGroup", "ignore", "remove"]); + } +} +class IncludeXDPContent extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "includeXDPContent"); + } +} +class IncrementalLoad extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "incrementalLoad", ["none", "forwardOnly"]); + } +} +class IncrementalMerge extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "incrementalMerge"); + } +} +class Interactive extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "interactive"); + } +} +class Jog extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "jog", ["usePrinterSetting", "none", "pageSet"]); + } +} +class LabelPrinter extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "labelPrinter", true); + this.name = getStringOption(attributes.name, ["zpl", "dpl", "ipl", "tcpl"]); + this.batchOutput = null; + this.flipLabel = null; + this.fontInfo = null; + this.xdc = null; + } +} +class Layout extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "layout", ["paginate", "panel"]); + } +} +class Level extends IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "level", 0, n => n > 0); + } +} +class Linearized extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "linearized"); + } +} +class Locale extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "locale"); + } +} +class LocaleSet extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "localeSet"); + } +} +class Log extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "log", true); + this.mode = null; + this.threshold = null; + this.to = null; + this.uri = null; + } +} +class MapElement extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "map", true); + this.equate = new XFAObjectArray(); + this.equateRange = new XFAObjectArray(); + } +} +class MediumInfo extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "mediumInfo", true); + this.map = null; + } +} +class config_Message extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "message", true); + this.msgId = null; + this.severity = null; + } +} +class Messaging extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "messaging", true); + this.message = new XFAObjectArray(); + } +} +class Mode extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "mode", ["append", "overwrite"]); + } +} +class ModifyAnnots extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "modifyAnnots"); + } +} +class MsgId extends IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "msgId", 1, n => n >= 1); + } +} +class NameAttr extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "nameAttr"); + } +} +class NeverEmbed extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "neverEmbed"); + } +} +class NumberOfCopies extends IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "numberOfCopies", null, n => n >= 2 && n <= 5); + } +} +class OpenAction extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "openAction", true); + this.destination = null; + } +} +class Output extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "output", true); + this.to = null; + this.type = null; + this.uri = null; + } +} +class OutputBin extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "outputBin"); + } +} +class OutputXSL extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "outputXSL", true); + this.uri = null; + } +} +class Overprint extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "overprint", ["none", "both", "draw", "field"]); + } +} +class Packets extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "packets"); + } + [$finalize]() { + if (this[$content] === "*") { + return; + } + this[$content] = this[$content].trim().split(/\s+/).filter(x => ["config", "datasets", "template", "xfdf", "xslt"].includes(x)); + } +} +class PageOffset extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pageOffset"); + this.x = getInteger({ + data: attributes.x, + defaultValue: "useXDCSetting", + validate: n => true + }); + this.y = getInteger({ + data: attributes.y, + defaultValue: "useXDCSetting", + validate: n => true + }); + } +} +class PageRange extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pageRange"); + } + [$finalize]() { + const numbers = this[$content].trim().split(/\s+/).map(x => parseInt(x, 10)); + const ranges = []; + for (let i = 0, ii = numbers.length; i < ii; i += 2) { + ranges.push(numbers.slice(i, i + 2)); + } + this[$content] = ranges; + } +} +class Pagination extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pagination", ["simplex", "duplexShortEdge", "duplexLongEdge"]); + } +} +class PaginationOverride extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "paginationOverride", ["none", "forceDuplex", "forceDuplexLongEdge", "forceDuplexShortEdge", "forceSimplex"]); + } +} +class Part extends IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "part", 1, n => false); + } +} +class Pcl extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pcl", true); + this.name = attributes.name || ""; + this.batchOutput = null; + this.fontInfo = null; + this.jog = null; + this.mediumInfo = null; + this.outputBin = null; + this.pageOffset = null; + this.staple = null; + this.xdc = null; + } +} +class Pdf extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pdf", true); + this.name = attributes.name || ""; + this.adobeExtensionLevel = null; + this.batchOutput = null; + this.compression = null; + this.creator = null; + this.encryption = null; + this.fontInfo = null; + this.interactive = null; + this.linearized = null; + this.openAction = null; + this.pdfa = null; + this.producer = null; + this.renderPolicy = null; + this.scriptModel = null; + this.silentPrint = null; + this.submitFormat = null; + this.tagged = null; + this.version = null; + this.viewerPreferences = null; + this.xdc = null; + } +} +class Pdfa extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pdfa", true); + this.amd = null; + this.conformance = null; + this.includeXDPContent = null; + this.part = null; + } +} +class Permissions extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "permissions", true); + this.accessibleContent = null; + this.change = null; + this.contentCopy = null; + this.documentAssembly = null; + this.formFieldFilling = null; + this.modifyAnnots = null; + this.plaintextMetadata = null; + this.print = null; + this.printHighQuality = null; + } +} +class PickTrayByPDFSize extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "pickTrayByPDFSize"); + } +} +class config_Picture extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "picture"); + } +} +class PlaintextMetadata extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "plaintextMetadata"); + } +} +class Presence extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "presence", ["preserve", "dissolve", "dissolveStructure", "ignore", "remove"]); + } +} +class Present extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "present", true); + this.behaviorOverride = null; + this.cache = null; + this.common = null; + this.copies = null; + this.destination = null; + this.incrementalMerge = null; + this.layout = null; + this.output = null; + this.overprint = null; + this.pagination = null; + this.paginationOverride = null; + this.script = null; + this.validate = null; + this.xdp = null; + this.driver = new XFAObjectArray(); + this.labelPrinter = new XFAObjectArray(); + this.pcl = new XFAObjectArray(); + this.pdf = new XFAObjectArray(); + this.ps = new XFAObjectArray(); + this.submitUrl = new XFAObjectArray(); + this.webClient = new XFAObjectArray(); + this.zpl = new XFAObjectArray(); + } +} +class Print extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "print"); + } +} +class PrintHighQuality extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "printHighQuality"); + } +} +class PrintScaling extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "printScaling", ["appdefault", "noScaling"]); + } +} +class PrinterName extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "printerName"); + } +} +class Producer extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "producer"); + } +} +class Ps extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ps", true); + this.name = attributes.name || ""; + this.batchOutput = null; + this.fontInfo = null; + this.jog = null; + this.mediumInfo = null; + this.outputBin = null; + this.staple = null; + this.xdc = null; + } +} +class Range extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "range"); + } + [$finalize]() { + this[$content] = this[$content].split(",", 2).map(range => range.split("-").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => { + if (range.length === 1) { + range.push(range[0]); + } + return range; + }); + } +} +class Record extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "record"); + } + [$finalize]() { + this[$content] = this[$content].trim(); + const n = parseInt(this[$content], 10); + if (!isNaN(n) && n >= 0) { + this[$content] = n; + } + } +} +class Relevant extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "relevant"); + } + [$finalize]() { + this[$content] = this[$content].trim().split(/\s+/); + } +} +class Rename extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "rename"); + } + [$finalize]() { + this[$content] = this[$content].trim(); + if (this[$content].toLowerCase().startsWith("xml") || new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*", "u").test(this[$content])) { + warn("XFA - Rename: invalid XFA name"); + } + } +} +class RenderPolicy extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "renderPolicy", ["server", "client"]); + } +} +class RunScripts extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "runScripts", ["both", "client", "none", "server"]); + } +} +class config_Script extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "script", true); + this.currentPage = null; + this.exclude = null; + this.runScripts = null; + } +} +class ScriptModel extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "scriptModel", ["XFA", "none"]); + } +} +class Severity extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "severity", ["ignore", "error", "information", "trace", "warning"]); + } +} +class SilentPrint extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "silentPrint", true); + this.addSilentPrint = null; + this.printerName = null; + } +} +class Staple extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "staple"); + this.mode = getStringOption(attributes.mode, ["usePrinterSetting", "on", "off"]); + } +} +class StartNode extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "startNode"); + } +} +class StartPage extends IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "startPage", 0, n => true); + } +} +class SubmitFormat extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "submitFormat", ["html", "delegate", "fdf", "xml", "pdf"]); + } +} +class SubmitUrl extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "submitUrl"); + } +} +class SubsetBelow extends IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "subsetBelow", 100, n => n >= 0 && n <= 100); + } +} +class SuppressBanner extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "suppressBanner"); + } +} +class Tagged extends Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "tagged"); + } +} +class config_Template extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "template", true); + this.base = null; + this.relevant = null; + this.startPage = null; + this.uri = null; + this.xsl = null; + } +} +class Threshold extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "threshold", ["trace", "error", "information", "warning"]); + } +} +class To extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "to", ["null", "memory", "stderr", "stdout", "system", "uri"]); + } +} +class TemplateCache extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "templateCache"); + this.maxEntries = getInteger({ + data: attributes.maxEntries, + defaultValue: 5, + validate: n => n >= 0 + }); + } +} +class Trace extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "trace", true); + this.area = new XFAObjectArray(); + } +} +class Transform extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "transform", true); + this.groupParent = null; + this.ifEmpty = null; + this.nameAttr = null; + this.picture = null; + this.presence = null; + this.rename = null; + this.whitespace = null; + } +} +class Type extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "type", ["none", "ascii85", "asciiHex", "ccittfax", "flate", "lzw", "runLength", "native", "xdp", "mergedXDP"]); + } +} +class Uri extends StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "uri"); + } +} +class config_Validate extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "validate", ["preSubmit", "prePrint", "preExecute", "preSave"]); + } +} +class ValidateApprovalSignatures extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "validateApprovalSignatures"); + } + [$finalize]() { + this[$content] = this[$content].trim().split(/\s+/).filter(x => ["docReady", "postSign"].includes(x)); + } +} +class ValidationMessaging extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "validationMessaging", ["allMessagesIndividually", "allMessagesTogether", "firstMessageOnly", "noMessages"]); + } +} +class Version extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "version", ["1.7", "1.6", "1.5", "1.4", "1.3", "1.2"]); + } +} +class VersionControl extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "VersionControl"); + this.outputBelow = getStringOption(attributes.outputBelow, ["warn", "error", "update"]); + this.sourceAbove = getStringOption(attributes.sourceAbove, ["warn", "error"]); + this.sourceBelow = getStringOption(attributes.sourceBelow, ["update", "maintain"]); + } +} +class ViewerPreferences extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "viewerPreferences", true); + this.ADBE_JSConsole = null; + this.ADBE_JSDebugger = null; + this.addViewerPreferences = null; + this.duplexOption = null; + this.enforce = null; + this.numberOfCopies = null; + this.pageRange = null; + this.pickTrayByPDFSize = null; + this.printScaling = null; + } +} +class WebClient extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "webClient", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } +} +class Whitespace extends OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "whitespace", ["preserve", "ltrim", "normalize", "rtrim", "trim"]); + } +} +class Window extends ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "window"); + } + [$finalize]() { + const pair = this[$content].split(",", 2).map(x => parseInt(x.trim(), 10)); + if (pair.some(x => isNaN(x))) { + this[$content] = [0, 0]; + return; + } + if (pair.length === 1) { + pair.push(pair[0]); + } + this[$content] = pair; + } +} +class Xdc extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "xdc", true); + this.uri = new XFAObjectArray(); + this.xsl = new XFAObjectArray(); + } +} +class Xdp extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "xdp", true); + this.packets = null; + } +} +class Xsl extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "xsl", true); + this.debug = null; + this.uri = null; + } +} +class Zpl extends XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "zpl", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.batchOutput = null; + this.flipLabel = null; + this.fontInfo = null; + this.xdc = null; + } +} +class ConfigNamespace { + static [$buildXFAObject](name, attributes) { + if (ConfigNamespace.hasOwnProperty(name)) { + return ConfigNamespace[name](attributes); + } + return undefined; + } + static acrobat(attrs) { + return new Acrobat(attrs); + } + static acrobat7(attrs) { + return new Acrobat7(attrs); + } + static ADBE_JSConsole(attrs) { + return new ADBE_JSConsole(attrs); + } + static ADBE_JSDebugger(attrs) { + return new ADBE_JSDebugger(attrs); + } + static addSilentPrint(attrs) { + return new AddSilentPrint(attrs); + } + static addViewerPreferences(attrs) { + return new AddViewerPreferences(attrs); + } + static adjustData(attrs) { + return new AdjustData(attrs); + } + static adobeExtensionLevel(attrs) { + return new AdobeExtensionLevel(attrs); + } + static agent(attrs) { + return new Agent(attrs); + } + static alwaysEmbed(attrs) { + return new AlwaysEmbed(attrs); + } + static amd(attrs) { + return new Amd(attrs); + } + static area(attrs) { + return new config_Area(attrs); + } + static attributes(attrs) { + return new Attributes(attrs); + } + static autoSave(attrs) { + return new AutoSave(attrs); + } + static base(attrs) { + return new Base(attrs); + } + static batchOutput(attrs) { + return new BatchOutput(attrs); + } + static behaviorOverride(attrs) { + return new BehaviorOverride(attrs); + } + static cache(attrs) { + return new Cache(attrs); + } + static change(attrs) { + return new Change(attrs); + } + static common(attrs) { + return new Common(attrs); + } + static compress(attrs) { + return new Compress(attrs); + } + static compressLogicalStructure(attrs) { + return new CompressLogicalStructure(attrs); + } + static compressObjectStream(attrs) { + return new CompressObjectStream(attrs); + } + static compression(attrs) { + return new Compression(attrs); + } + static config(attrs) { + return new Config(attrs); + } + static conformance(attrs) { + return new Conformance(attrs); + } + static contentCopy(attrs) { + return new ContentCopy(attrs); + } + static copies(attrs) { + return new Copies(attrs); + } + static creator(attrs) { + return new Creator(attrs); + } + static currentPage(attrs) { + return new CurrentPage(attrs); + } + static data(attrs) { + return new Data(attrs); + } + static debug(attrs) { + return new Debug(attrs); + } + static defaultTypeface(attrs) { + return new DefaultTypeface(attrs); + } + static destination(attrs) { + return new Destination(attrs); + } + static documentAssembly(attrs) { + return new DocumentAssembly(attrs); + } + static driver(attrs) { + return new Driver(attrs); + } + static duplexOption(attrs) { + return new DuplexOption(attrs); + } + static dynamicRender(attrs) { + return new DynamicRender(attrs); + } + static embed(attrs) { + return new Embed(attrs); + } + static encrypt(attrs) { + return new config_Encrypt(attrs); + } + static encryption(attrs) { + return new config_Encryption(attrs); + } + static encryptionLevel(attrs) { + return new EncryptionLevel(attrs); + } + static enforce(attrs) { + return new Enforce(attrs); + } + static equate(attrs) { + return new Equate(attrs); + } + static equateRange(attrs) { + return new EquateRange(attrs); + } + static exclude(attrs) { + return new Exclude(attrs); + } + static excludeNS(attrs) { + return new ExcludeNS(attrs); + } + static flipLabel(attrs) { + return new FlipLabel(attrs); + } + static fontInfo(attrs) { + return new config_FontInfo(attrs); + } + static formFieldFilling(attrs) { + return new FormFieldFilling(attrs); + } + static groupParent(attrs) { + return new GroupParent(attrs); + } + static ifEmpty(attrs) { + return new IfEmpty(attrs); + } + static includeXDPContent(attrs) { + return new IncludeXDPContent(attrs); + } + static incrementalLoad(attrs) { + return new IncrementalLoad(attrs); + } + static incrementalMerge(attrs) { + return new IncrementalMerge(attrs); + } + static interactive(attrs) { + return new Interactive(attrs); + } + static jog(attrs) { + return new Jog(attrs); + } + static labelPrinter(attrs) { + return new LabelPrinter(attrs); + } + static layout(attrs) { + return new Layout(attrs); + } + static level(attrs) { + return new Level(attrs); + } + static linearized(attrs) { + return new Linearized(attrs); + } + static locale(attrs) { + return new Locale(attrs); + } + static localeSet(attrs) { + return new LocaleSet(attrs); + } + static log(attrs) { + return new Log(attrs); + } + static map(attrs) { + return new MapElement(attrs); + } + static mediumInfo(attrs) { + return new MediumInfo(attrs); + } + static message(attrs) { + return new config_Message(attrs); + } + static messaging(attrs) { + return new Messaging(attrs); + } + static mode(attrs) { + return new Mode(attrs); + } + static modifyAnnots(attrs) { + return new ModifyAnnots(attrs); + } + static msgId(attrs) { + return new MsgId(attrs); + } + static nameAttr(attrs) { + return new NameAttr(attrs); + } + static neverEmbed(attrs) { + return new NeverEmbed(attrs); + } + static numberOfCopies(attrs) { + return new NumberOfCopies(attrs); + } + static openAction(attrs) { + return new OpenAction(attrs); + } + static output(attrs) { + return new Output(attrs); + } + static outputBin(attrs) { + return new OutputBin(attrs); + } + static outputXSL(attrs) { + return new OutputXSL(attrs); + } + static overprint(attrs) { + return new Overprint(attrs); + } + static packets(attrs) { + return new Packets(attrs); + } + static pageOffset(attrs) { + return new PageOffset(attrs); + } + static pageRange(attrs) { + return new PageRange(attrs); + } + static pagination(attrs) { + return new Pagination(attrs); + } + static paginationOverride(attrs) { + return new PaginationOverride(attrs); + } + static part(attrs) { + return new Part(attrs); + } + static pcl(attrs) { + return new Pcl(attrs); + } + static pdf(attrs) { + return new Pdf(attrs); + } + static pdfa(attrs) { + return new Pdfa(attrs); + } + static permissions(attrs) { + return new Permissions(attrs); + } + static pickTrayByPDFSize(attrs) { + return new PickTrayByPDFSize(attrs); + } + static picture(attrs) { + return new config_Picture(attrs); + } + static plaintextMetadata(attrs) { + return new PlaintextMetadata(attrs); + } + static presence(attrs) { + return new Presence(attrs); + } + static present(attrs) { + return new Present(attrs); + } + static print(attrs) { + return new Print(attrs); + } + static printHighQuality(attrs) { + return new PrintHighQuality(attrs); + } + static printScaling(attrs) { + return new PrintScaling(attrs); + } + static printerName(attrs) { + return new PrinterName(attrs); + } + static producer(attrs) { + return new Producer(attrs); + } + static ps(attrs) { + return new Ps(attrs); + } + static range(attrs) { + return new Range(attrs); + } + static record(attrs) { + return new Record(attrs); + } + static relevant(attrs) { + return new Relevant(attrs); + } + static rename(attrs) { + return new Rename(attrs); + } + static renderPolicy(attrs) { + return new RenderPolicy(attrs); + } + static runScripts(attrs) { + return new RunScripts(attrs); + } + static script(attrs) { + return new config_Script(attrs); + } + static scriptModel(attrs) { + return new ScriptModel(attrs); + } + static severity(attrs) { + return new Severity(attrs); + } + static silentPrint(attrs) { + return new SilentPrint(attrs); + } + static staple(attrs) { + return new Staple(attrs); + } + static startNode(attrs) { + return new StartNode(attrs); + } + static startPage(attrs) { + return new StartPage(attrs); + } + static submitFormat(attrs) { + return new SubmitFormat(attrs); + } + static submitUrl(attrs) { + return new SubmitUrl(attrs); + } + static subsetBelow(attrs) { + return new SubsetBelow(attrs); + } + static suppressBanner(attrs) { + return new SuppressBanner(attrs); + } + static tagged(attrs) { + return new Tagged(attrs); + } + static template(attrs) { + return new config_Template(attrs); + } + static templateCache(attrs) { + return new TemplateCache(attrs); + } + static threshold(attrs) { + return new Threshold(attrs); + } + static to(attrs) { + return new To(attrs); + } + static trace(attrs) { + return new Trace(attrs); + } + static transform(attrs) { + return new Transform(attrs); + } + static type(attrs) { + return new Type(attrs); + } + static uri(attrs) { + return new Uri(attrs); + } + static validate(attrs) { + return new config_Validate(attrs); + } + static validateApprovalSignatures(attrs) { + return new ValidateApprovalSignatures(attrs); + } + static validationMessaging(attrs) { + return new ValidationMessaging(attrs); + } + static version(attrs) { + return new Version(attrs); + } + static versionControl(attrs) { + return new VersionControl(attrs); + } + static viewerPreferences(attrs) { + return new ViewerPreferences(attrs); + } + static webClient(attrs) { + return new WebClient(attrs); + } + static whitespace(attrs) { + return new Whitespace(attrs); + } + static window(attrs) { + return new Window(attrs); + } + static xdc(attrs) { + return new Xdc(attrs); + } + static xdp(attrs) { + return new Xdp(attrs); + } + static xsl(attrs) { + return new Xsl(attrs); + } + static zpl(attrs) { + return new Zpl(attrs); + } +} + +;// ./src/core/xfa/connection_set.js + + +const CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id; +class ConnectionSet extends XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "connectionSet", true); + this.wsdlConnection = new XFAObjectArray(); + this.xmlConnection = new XFAObjectArray(); + this.xsdConnection = new XFAObjectArray(); + } +} +class EffectiveInputPolicy extends XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "effectiveInputPolicy"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class EffectiveOutputPolicy extends XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "effectiveOutputPolicy"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Operation extends StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "operation"); + this.id = attributes.id || ""; + this.input = attributes.input || ""; + this.name = attributes.name || ""; + this.output = attributes.output || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class RootElement extends StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "rootElement"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class SoapAction extends StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "soapAction"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class SoapAddress extends StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "soapAddress"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class connection_set_Uri extends StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "uri"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class WsdlAddress extends StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "wsdlAddress"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class WsdlConnection extends XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "wsdlConnection", true); + this.dataDescription = attributes.dataDescription || ""; + this.name = attributes.name || ""; + this.effectiveInputPolicy = null; + this.effectiveOutputPolicy = null; + this.operation = null; + this.soapAction = null; + this.soapAddress = null; + this.wsdlAddress = null; + } +} +class XmlConnection extends XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "xmlConnection", true); + this.dataDescription = attributes.dataDescription || ""; + this.name = attributes.name || ""; + this.uri = null; + } +} +class XsdConnection extends XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "xsdConnection", true); + this.dataDescription = attributes.dataDescription || ""; + this.name = attributes.name || ""; + this.rootElement = null; + this.uri = null; + } +} +class ConnectionSetNamespace { + static [$buildXFAObject](name, attributes) { + if (ConnectionSetNamespace.hasOwnProperty(name)) { + return ConnectionSetNamespace[name](attributes); + } + return undefined; + } + static connectionSet(attrs) { + return new ConnectionSet(attrs); + } + static effectiveInputPolicy(attrs) { + return new EffectiveInputPolicy(attrs); + } + static effectiveOutputPolicy(attrs) { + return new EffectiveOutputPolicy(attrs); + } + static operation(attrs) { + return new Operation(attrs); + } + static rootElement(attrs) { + return new RootElement(attrs); + } + static soapAction(attrs) { + return new SoapAction(attrs); + } + static soapAddress(attrs) { + return new SoapAddress(attrs); + } + static uri(attrs) { + return new connection_set_Uri(attrs); + } + static wsdlAddress(attrs) { + return new WsdlAddress(attrs); + } + static wsdlConnection(attrs) { + return new WsdlConnection(attrs); + } + static xmlConnection(attrs) { + return new XmlConnection(attrs); + } + static xsdConnection(attrs) { + return new XsdConnection(attrs); + } +} + +;// ./src/core/xfa/datasets.js + + + +const DATASETS_NS_ID = NamespaceIds.datasets.id; +class datasets_Data extends XmlObject { + constructor(attributes) { + super(DATASETS_NS_ID, "data", attributes); + } + [$isNsAgnostic]() { + return true; + } +} +class Datasets extends XFAObject { + constructor(attributes) { + super(DATASETS_NS_ID, "datasets", true); + this.data = null; + this.Signature = null; + } + [$onChild](child) { + const name = child[$nodeName]; + if (name === "data" && child[$namespaceId] === DATASETS_NS_ID || name === "Signature" && child[$namespaceId] === NamespaceIds.signature.id) { + this[name] = child; + } + this[$appendChild](child); + } +} +class DatasetsNamespace { + static [$buildXFAObject](name, attributes) { + if (DatasetsNamespace.hasOwnProperty(name)) { + return DatasetsNamespace[name](attributes); + } + return undefined; + } + static datasets(attributes) { + return new Datasets(attributes); + } + static data(attributes) { + return new datasets_Data(attributes); + } +} + +;// ./src/core/xfa/locale_set.js + + + +const LOCALE_SET_NS_ID = NamespaceIds.localeSet.id; +class CalendarSymbols extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "calendarSymbols", true); + this.name = "gregorian"; + this.dayNames = new XFAObjectArray(2); + this.eraNames = null; + this.meridiemNames = null; + this.monthNames = new XFAObjectArray(2); + } +} +class CurrencySymbol extends StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "currencySymbol"); + this.name = getStringOption(attributes.name, ["symbol", "isoname", "decimal"]); + } +} +class CurrencySymbols extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "currencySymbols", true); + this.currencySymbol = new XFAObjectArray(3); + } +} +class DatePattern extends StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "datePattern"); + this.name = getStringOption(attributes.name, ["full", "long", "med", "short"]); + } +} +class DatePatterns extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "datePatterns", true); + this.datePattern = new XFAObjectArray(4); + } +} +class DateTimeSymbols extends ContentObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "dateTimeSymbols"); + } +} +class Day extends StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "day"); + } +} +class DayNames extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "dayNames", true); + this.abbr = getInteger({ + data: attributes.abbr, + defaultValue: 0, + validate: x => x === 1 + }); + this.day = new XFAObjectArray(7); + } +} +class Era extends StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "era"); + } +} +class EraNames extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "eraNames", true); + this.era = new XFAObjectArray(2); + } +} +class locale_set_Locale extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "locale", true); + this.desc = attributes.desc || ""; + this.name = "isoname"; + this.calendarSymbols = null; + this.currencySymbols = null; + this.datePatterns = null; + this.dateTimeSymbols = null; + this.numberPatterns = null; + this.numberSymbols = null; + this.timePatterns = null; + this.typeFaces = null; + } +} +class locale_set_LocaleSet extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "localeSet", true); + this.locale = new XFAObjectArray(); + } +} +class Meridiem extends StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "meridiem"); + } +} +class MeridiemNames extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "meridiemNames", true); + this.meridiem = new XFAObjectArray(2); + } +} +class Month extends StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "month"); + } +} +class MonthNames extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "monthNames", true); + this.abbr = getInteger({ + data: attributes.abbr, + defaultValue: 0, + validate: x => x === 1 + }); + this.month = new XFAObjectArray(12); + } +} +class NumberPattern extends StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberPattern"); + this.name = getStringOption(attributes.name, ["full", "long", "med", "short"]); + } +} +class NumberPatterns extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberPatterns", true); + this.numberPattern = new XFAObjectArray(4); + } +} +class NumberSymbol extends StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberSymbol"); + this.name = getStringOption(attributes.name, ["decimal", "grouping", "percent", "minus", "zero"]); + } +} +class NumberSymbols extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberSymbols", true); + this.numberSymbol = new XFAObjectArray(5); + } +} +class TimePattern extends StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "timePattern"); + this.name = getStringOption(attributes.name, ["full", "long", "med", "short"]); + } +} +class TimePatterns extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "timePatterns", true); + this.timePattern = new XFAObjectArray(4); + } +} +class TypeFace extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "typeFace", true); + this.name = attributes.name | ""; + } +} +class TypeFaces extends XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "typeFaces", true); + this.typeFace = new XFAObjectArray(); + } +} +class LocaleSetNamespace { + static [$buildXFAObject](name, attributes) { + if (LocaleSetNamespace.hasOwnProperty(name)) { + return LocaleSetNamespace[name](attributes); + } + return undefined; + } + static calendarSymbols(attrs) { + return new CalendarSymbols(attrs); + } + static currencySymbol(attrs) { + return new CurrencySymbol(attrs); + } + static currencySymbols(attrs) { + return new CurrencySymbols(attrs); + } + static datePattern(attrs) { + return new DatePattern(attrs); + } + static datePatterns(attrs) { + return new DatePatterns(attrs); + } + static dateTimeSymbols(attrs) { + return new DateTimeSymbols(attrs); + } + static day(attrs) { + return new Day(attrs); + } + static dayNames(attrs) { + return new DayNames(attrs); + } + static era(attrs) { + return new Era(attrs); + } + static eraNames(attrs) { + return new EraNames(attrs); + } + static locale(attrs) { + return new locale_set_Locale(attrs); + } + static localeSet(attrs) { + return new locale_set_LocaleSet(attrs); + } + static meridiem(attrs) { + return new Meridiem(attrs); + } + static meridiemNames(attrs) { + return new MeridiemNames(attrs); + } + static month(attrs) { + return new Month(attrs); + } + static monthNames(attrs) { + return new MonthNames(attrs); + } + static numberPattern(attrs) { + return new NumberPattern(attrs); + } + static numberPatterns(attrs) { + return new NumberPatterns(attrs); + } + static numberSymbol(attrs) { + return new NumberSymbol(attrs); + } + static numberSymbols(attrs) { + return new NumberSymbols(attrs); + } + static timePattern(attrs) { + return new TimePattern(attrs); + } + static timePatterns(attrs) { + return new TimePatterns(attrs); + } + static typeFace(attrs) { + return new TypeFace(attrs); + } + static typeFaces(attrs) { + return new TypeFaces(attrs); + } +} + +;// ./src/core/xfa/signature.js + + +const SIGNATURE_NS_ID = NamespaceIds.signature.id; +class signature_Signature extends XFAObject { + constructor(attributes) { + super(SIGNATURE_NS_ID, "signature", true); + } +} +class SignatureNamespace { + static [$buildXFAObject](name, attributes) { + if (SignatureNamespace.hasOwnProperty(name)) { + return SignatureNamespace[name](attributes); + } + return undefined; + } + static signature(attributes) { + return new signature_Signature(attributes); + } +} + +;// ./src/core/xfa/stylesheet.js + + +const STYLESHEET_NS_ID = NamespaceIds.stylesheet.id; +class Stylesheet extends XFAObject { + constructor(attributes) { + super(STYLESHEET_NS_ID, "stylesheet", true); + } +} +class StylesheetNamespace { + static [$buildXFAObject](name, attributes) { + if (StylesheetNamespace.hasOwnProperty(name)) { + return StylesheetNamespace[name](attributes); + } + return undefined; + } + static stylesheet(attributes) { + return new Stylesheet(attributes); + } +} + +;// ./src/core/xfa/xdp.js + + + +const XDP_NS_ID = NamespaceIds.xdp.id; +class xdp_Xdp extends XFAObject { + constructor(attributes) { + super(XDP_NS_ID, "xdp", true); + this.uuid = attributes.uuid || ""; + this.timeStamp = attributes.timeStamp || ""; + this.config = null; + this.connectionSet = null; + this.datasets = null; + this.localeSet = null; + this.stylesheet = new XFAObjectArray(); + this.template = null; + } + [$onChildCheck](child) { + const ns = NamespaceIds[child[$nodeName]]; + return ns && child[$namespaceId] === ns.id; + } +} +class XdpNamespace { + static [$buildXFAObject](name, attributes) { + if (XdpNamespace.hasOwnProperty(name)) { + return XdpNamespace[name](attributes); + } + return undefined; + } + static xdp(attributes) { + return new xdp_Xdp(attributes); + } +} + +;// ./src/core/xfa/xhtml.js + + + + + +const XHTML_NS_ID = NamespaceIds.xhtml.id; +const $richText = Symbol(); +const VALID_STYLES = new Set(["color", "font", "font-family", "font-size", "font-stretch", "font-style", "font-weight", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "letter-spacing", "line-height", "orphans", "page-break-after", "page-break-before", "page-break-inside", "tab-interval", "tab-stop", "text-align", "text-decoration", "text-indent", "vertical-align", "widows", "kerning-mode", "xfa-font-horizontal-scale", "xfa-font-vertical-scale", "xfa-spacerun", "xfa-tab-stops"]); +const StyleMapping = new Map([["page-break-after", "breakAfter"], ["page-break-before", "breakBefore"], ["page-break-inside", "breakInside"], ["kerning-mode", value => value === "none" ? "none" : "normal"], ["xfa-font-horizontal-scale", value => `scaleX(${Math.max(0, parseInt(value) / 100).toFixed(2)})`], ["xfa-font-vertical-scale", value => `scaleY(${Math.max(0, parseInt(value) / 100).toFixed(2)})`], ["xfa-spacerun", ""], ["xfa-tab-stops", ""], ["font-size", (value, original) => { + value = original.fontSize = Math.abs(getMeasurement(value)); + return measureToString(0.99 * value); +}], ["letter-spacing", value => measureToString(getMeasurement(value))], ["line-height", value => measureToString(getMeasurement(value))], ["margin", value => measureToString(getMeasurement(value))], ["margin-bottom", value => measureToString(getMeasurement(value))], ["margin-left", value => measureToString(getMeasurement(value))], ["margin-right", value => measureToString(getMeasurement(value))], ["margin-top", value => measureToString(getMeasurement(value))], ["text-indent", value => measureToString(getMeasurement(value))], ["font-family", value => value], ["vertical-align", value => measureToString(getMeasurement(value))]]); +const spacesRegExp = /\s+/g; +const crlfRegExp = /[\r\n]+/g; +const crlfForRichTextRegExp = /\r\n?/g; +function mapStyle(styleStr, node, richText) { + const style = Object.create(null); + if (!styleStr) { + return style; + } + const original = Object.create(null); + for (const [key, value] of styleStr.split(";").map(s => s.split(":", 2))) { + const mapping = StyleMapping.get(key); + if (mapping === "") { + continue; + } + let newValue = value; + if (mapping) { + newValue = typeof mapping === "string" ? mapping : mapping(value, original); + } + if (key.endsWith("scale")) { + style.transform = style.transform ? `${style[key]} ${newValue}` : newValue; + } else { + style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] = newValue; + } + } + if (style.fontFamily) { + setFontFamily({ + typeface: style.fontFamily, + weight: style.fontWeight || "normal", + posture: style.fontStyle || "normal", + size: original.fontSize || 0 + }, node, node[$globalData].fontFinder, style); + } + if (richText && style.verticalAlign && style.verticalAlign !== "0px" && style.fontSize) { + const SUB_SUPER_SCRIPT_FACTOR = 0.583; + const VERTICAL_FACTOR = 0.333; + const fontSize = getMeasurement(style.fontSize); + style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR); + style.verticalAlign = measureToString(Math.sign(getMeasurement(style.verticalAlign)) * fontSize * VERTICAL_FACTOR); + } + if (richText && style.fontSize) { + style.fontSize = `calc(${style.fontSize} * var(--total-scale-factor))`; + } + fixTextIndent(style); + return style; +} +function checkStyle(node) { + if (!node.style) { + return ""; + } + return node.style.split(";").filter(s => !!s.trim()).map(s => s.split(":", 2).map(t => t.trim())).filter(([key, value]) => { + if (key === "font-family") { + node[$globalData].usedTypefaces.add(value); + } + return VALID_STYLES.has(key); + }).map(kv => kv.join(":")).join(";"); +} +const NoWhites = new Set(["body", "html"]); +class XhtmlObject extends XmlObject { + constructor(attributes, name) { + super(XHTML_NS_ID, name); + this[$richText] = false; + this.style = attributes.style || ""; + } + [$clean](builder) { + super[$clean](builder); + this.style = checkStyle(this); + } + [$acceptWhitespace]() { + return !NoWhites.has(this[$nodeName]); + } + [$onText](str, richText = false) { + if (!richText) { + str = str.replaceAll(crlfRegExp, ""); + if (!this.style.includes("xfa-spacerun:yes")) { + str = str.replaceAll(spacesRegExp, " "); + } + } else { + this[$richText] = true; + } + if (str) { + this[$content] += str; + } + } + [$pushGlyphs](measure, mustPop = true) { + const xfaFont = Object.create(null); + const margin = { + top: NaN, + bottom: NaN, + left: NaN, + right: NaN + }; + let lineHeight = null; + for (const [key, value] of this.style.split(";").map(s => s.split(":", 2))) { + switch (key) { + case "font-family": + xfaFont.typeface = stripQuotes(value); + break; + case "font-size": + xfaFont.size = getMeasurement(value); + break; + case "font-weight": + xfaFont.weight = value; + break; + case "font-style": + xfaFont.posture = value; + break; + case "letter-spacing": + xfaFont.letterSpacing = getMeasurement(value); + break; + case "margin": + const values = value.split(/ \t/).map(x => getMeasurement(x)); + switch (values.length) { + case 1: + margin.top = margin.bottom = margin.left = margin.right = values[0]; + break; + case 2: + margin.top = margin.bottom = values[0]; + margin.left = margin.right = values[1]; + break; + case 3: + margin.top = values[0]; + margin.bottom = values[2]; + margin.left = margin.right = values[1]; + break; + case 4: + margin.top = values[0]; + margin.left = values[1]; + margin.bottom = values[2]; + margin.right = values[3]; + break; + } + break; + case "margin-top": + margin.top = getMeasurement(value); + break; + case "margin-bottom": + margin.bottom = getMeasurement(value); + break; + case "margin-left": + margin.left = getMeasurement(value); + break; + case "margin-right": + margin.right = getMeasurement(value); + break; + case "line-height": + lineHeight = getMeasurement(value); + break; + } + } + measure.pushData(xfaFont, margin, lineHeight); + if (this[$content]) { + measure.addString(this[$content]); + } else { + for (const child of this[$getChildren]()) { + if (child[$nodeName] === "#text") { + measure.addString(child[$content]); + continue; + } + child[$pushGlyphs](measure); + } + } + if (mustPop) { + measure.popFont(); + } + } + [$toHTML](availableSpace) { + const children = []; + this[$extra] = { + children + }; + this[$childrenToHTML]({}); + if (children.length === 0 && !this[$content]) { + return HTMLResult.EMPTY; + } + let value; + if (this[$richText]) { + value = this[$content] ? this[$content].replaceAll(crlfForRichTextRegExp, "\n") : undefined; + } else { + value = this[$content] || undefined; + } + return HTMLResult.success({ + name: this[$nodeName], + attributes: { + href: this.href, + style: mapStyle(this.style, this, this[$richText]) + }, + children, + value + }); + } +} +class A extends XhtmlObject { + constructor(attributes) { + super(attributes, "a"); + this.href = fixURL(attributes.href) || ""; + } +} +class B extends XhtmlObject { + constructor(attributes) { + super(attributes, "b"); + } + [$pushGlyphs](measure) { + measure.pushFont({ + weight: "bold" + }); + super[$pushGlyphs](measure); + measure.popFont(); + } +} +class Body extends XhtmlObject { + constructor(attributes) { + super(attributes, "body"); + } + [$toHTML](availableSpace) { + const res = super[$toHTML](availableSpace); + const { + html + } = res; + if (!html) { + return HTMLResult.EMPTY; + } + html.name = "div"; + html.attributes.class = ["xfaRich"]; + return res; + } +} +class Br extends XhtmlObject { + constructor(attributes) { + super(attributes, "br"); + } + [$text]() { + return "\n"; + } + [$pushGlyphs](measure) { + measure.addString("\n"); + } + [$toHTML](availableSpace) { + return HTMLResult.success({ + name: "br" + }); + } +} +class Html extends XhtmlObject { + constructor(attributes) { + super(attributes, "html"); + } + [$toHTML](availableSpace) { + const children = []; + this[$extra] = { + children + }; + this[$childrenToHTML]({}); + if (children.length === 0) { + return HTMLResult.success({ + name: "div", + attributes: { + class: ["xfaRich"], + style: {} + }, + value: this[$content] || "" + }); + } + if (children.length === 1) { + const child = children[0]; + if (child.attributes?.class.includes("xfaRich")) { + return HTMLResult.success(child); + } + } + return HTMLResult.success({ + name: "div", + attributes: { + class: ["xfaRich"], + style: {} + }, + children + }); + } +} +class I extends XhtmlObject { + constructor(attributes) { + super(attributes, "i"); + } + [$pushGlyphs](measure) { + measure.pushFont({ + posture: "italic" + }); + super[$pushGlyphs](measure); + measure.popFont(); + } +} +class Li extends XhtmlObject { + constructor(attributes) { + super(attributes, "li"); + } +} +class Ol extends XhtmlObject { + constructor(attributes) { + super(attributes, "ol"); + } +} +class P extends XhtmlObject { + constructor(attributes) { + super(attributes, "p"); + } + [$pushGlyphs](measure) { + super[$pushGlyphs](measure, false); + measure.addString("\n"); + measure.addPara(); + measure.popFont(); + } + [$text]() { + const siblings = this[$getParent]()[$getChildren](); + if (siblings.at(-1) === this) { + return super[$text](); + } + return super[$text]() + "\n"; + } +} +class Span extends XhtmlObject { + constructor(attributes) { + super(attributes, "span"); + } +} +class Sub extends XhtmlObject { + constructor(attributes) { + super(attributes, "sub"); + } +} +class Sup extends XhtmlObject { + constructor(attributes) { + super(attributes, "sup"); + } +} +class Ul extends XhtmlObject { + constructor(attributes) { + super(attributes, "ul"); + } +} +class XhtmlNamespace { + static [$buildXFAObject](name, attributes) { + if (XhtmlNamespace.hasOwnProperty(name)) { + return XhtmlNamespace[name](attributes); + } + return undefined; + } + static a(attributes) { + return new A(attributes); + } + static b(attributes) { + return new B(attributes); + } + static body(attributes) { + return new Body(attributes); + } + static br(attributes) { + return new Br(attributes); + } + static html(attributes) { + return new Html(attributes); + } + static i(attributes) { + return new I(attributes); + } + static li(attributes) { + return new Li(attributes); + } + static ol(attributes) { + return new Ol(attributes); + } + static p(attributes) { + return new P(attributes); + } + static span(attributes) { + return new Span(attributes); + } + static sub(attributes) { + return new Sub(attributes); + } + static sup(attributes) { + return new Sup(attributes); + } + static ul(attributes) { + return new Ul(attributes); + } +} + +;// ./src/core/xfa/setup.js + + + + + + + + + +const NamespaceSetUp = { + config: ConfigNamespace, + connection: ConnectionSetNamespace, + datasets: DatasetsNamespace, + localeSet: LocaleSetNamespace, + signature: SignatureNamespace, + stylesheet: StylesheetNamespace, + template: TemplateNamespace, + xdp: XdpNamespace, + xhtml: XhtmlNamespace +}; + +;// ./src/core/xfa/unknown.js + + +class UnknownNamespace { + constructor(nsId) { + this.namespaceId = nsId; + } + [$buildXFAObject](name, attributes) { + return new XmlObject(this.namespaceId, name, attributes); + } +} + +;// ./src/core/xfa/builder.js + + + + + + + +class Root extends XFAObject { + constructor(ids) { + super(-1, "root", Object.create(null)); + this.element = null; + this[$ids] = ids; + } + [$onChild](child) { + this.element = child; + return true; + } + [$finalize]() { + super[$finalize](); + if (this.element.template instanceof Template) { + this[$ids].set($root, this.element); + this.element.template[$resolvePrototypes](this[$ids]); + this.element.template[$ids] = this[$ids]; + } + } +} +class Empty extends XFAObject { + constructor() { + super(-1, "", Object.create(null)); + } + [$onChild](_) { + return false; + } +} +class Builder { + constructor(rootNameSpace = null) { + this._namespaceStack = []; + this._nsAgnosticLevel = 0; + this._namespacePrefixes = new Map(); + this._namespaces = new Map(); + this._nextNsId = Math.max(...Object.values(NamespaceIds).map(({ + id + }) => id)); + this._currentNamespace = rootNameSpace || new UnknownNamespace(++this._nextNsId); + } + buildRoot(ids) { + return new Root(ids); + } + build({ + nsPrefix, + name, + attributes, + namespace, + prefixes + }) { + const hasNamespaceDef = namespace !== null; + if (hasNamespaceDef) { + this._namespaceStack.push(this._currentNamespace); + this._currentNamespace = this._searchNamespace(namespace); + } + if (prefixes) { + this._addNamespacePrefix(prefixes); + } + if (attributes.hasOwnProperty($nsAttributes)) { + const dataTemplate = NamespaceSetUp.datasets; + const nsAttrs = attributes[$nsAttributes]; + let xfaAttrs = null; + for (const [ns, attrs] of Object.entries(nsAttrs)) { + const nsToUse = this._getNamespaceToUse(ns); + if (nsToUse === dataTemplate) { + xfaAttrs = { + xfa: attrs + }; + break; + } + } + if (xfaAttrs) { + attributes[$nsAttributes] = xfaAttrs; + } else { + delete attributes[$nsAttributes]; + } + } + const namespaceToUse = this._getNamespaceToUse(nsPrefix); + const node = namespaceToUse?.[$buildXFAObject](name, attributes) || new Empty(); + if (node[$isNsAgnostic]()) { + this._nsAgnosticLevel++; + } + if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) { + node[$cleanup] = { + hasNamespace: hasNamespaceDef, + prefixes, + nsAgnostic: node[$isNsAgnostic]() + }; + } + return node; + } + isNsAgnostic() { + return this._nsAgnosticLevel > 0; + } + _searchNamespace(nsName) { + let ns = this._namespaces.get(nsName); + if (ns) { + return ns; + } + for (const [name, { + check + }] of Object.entries(NamespaceIds)) { + if (check(nsName)) { + ns = NamespaceSetUp[name]; + if (ns) { + this._namespaces.set(nsName, ns); + return ns; + } + break; + } + } + ns = new UnknownNamespace(++this._nextNsId); + this._namespaces.set(nsName, ns); + return ns; + } + _addNamespacePrefix(prefixes) { + for (const { + prefix, + value + } of prefixes) { + const namespace = this._searchNamespace(value); + this._namespacePrefixes.getOrInsertComputed(prefix, makeArr).push(namespace); + } + } + _getNamespaceToUse(prefix) { + if (!prefix) { + return this._currentNamespace; + } + const prefixStack = this._namespacePrefixes.get(prefix); + if (prefixStack?.length > 0) { + return prefixStack.at(-1); + } + warn(`Unknown namespace prefix: ${prefix}.`); + return null; + } + clean(data) { + const { + hasNamespace, + prefixes, + nsAgnostic + } = data; + if (hasNamespace) { + this._currentNamespace = this._namespaceStack.pop(); + } + if (prefixes) { + prefixes.forEach(({ + prefix + }) => { + this._namespacePrefixes.get(prefix).pop(); + }); + } + if (nsAgnostic) { + this._nsAgnosticLevel--; + } + } +} + +;// ./src/core/xfa/parser.js + + + + +class XFAParser extends XMLParserBase { + constructor(rootNameSpace = null, richText = false) { + super(); + this._builder = new Builder(rootNameSpace); + this._stack = []; + this._globalData = { + usedTypefaces: new Set() + }; + this._ids = new Map(); + this._current = this._builder.buildRoot(this._ids); + this._errorCode = XMLParserErrorCode.NoError; + this._whiteRegex = /^\s+$/; + this._nbsps = /\xa0+/g; + this._richText = richText; + } + parse(data) { + this.parseXml(data); + if (this._errorCode !== XMLParserErrorCode.NoError) { + return undefined; + } + this._current[$finalize](); + return this._current.element; + } + onText(text) { + text = text.replace(this._nbsps, match => match.slice(1) + " "); + if (this._richText || this._current[$acceptWhitespace]()) { + this._current[$onText](text, this._richText); + return; + } + if (this._whiteRegex.test(text)) { + return; + } + this._current[$onText](text.trim()); + } + onCdata(text) { + this._current[$onText](text); + } + _mkAttributes(attributes, tagName) { + let namespace = null; + let prefixes = null; + const attributeObj = Object.create({}); + for (const { + name, + value + } of attributes) { + if (name === "xmlns") { + if (!namespace) { + namespace = value; + } else { + warn(`XFA - multiple namespace definition in <${tagName}>`); + } + } else if (name.startsWith("xmlns:")) { + const prefix = name.substring("xmlns:".length); + prefixes ??= []; + prefixes.push({ + prefix, + value + }); + } else { + const i = name.indexOf(":"); + if (i === -1) { + attributeObj[name] = value; + } else { + const nsAttrs = attributeObj[$nsAttributes] ??= Object.create(null); + const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)]; + const attrs = nsAttrs[ns] ||= Object.create(null); + attrs[attrName] = value; + } + } + } + return [namespace, prefixes, attributeObj]; + } + _getNameAndPrefix(name, nsAgnostic) { + const i = name.indexOf(":"); + if (i === -1) { + return [name, null]; + } + return [name.substring(i + 1), nsAgnostic ? "" : name.substring(0, i)]; + } + onBeginElement(tagName, attributes, isEmpty) { + const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName); + const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic()); + const node = this._builder.build({ + nsPrefix, + name, + attributes: attributesObj, + namespace, + prefixes + }); + node[$globalData] = this._globalData; + if (isEmpty) { + node[$finalize](); + if (this._current[$onChild](node)) { + node[$setId](this._ids); + } + node[$clean](this._builder); + return; + } + this._stack.push(this._current); + this._current = node; + } + onEndElement(name) { + const node = this._current; + if (node[$isCDATAXml]() && typeof node[$content] === "string") { + const parser = new XFAParser(); + parser._globalData = this._globalData; + const root = parser.parse(node[$content]); + node[$content] = null; + node[$onChild](root); + } + node[$finalize](); + this._current = this._stack.pop(); + if (this._current[$onChild](node)) { + node[$setId](this._ids); + } + node[$clean](this._builder); + } + onError(code) { + this._errorCode = code; + } +} + +;// ./src/core/xfa/factory.js + + + + + + + + +class XFAFactory { + constructor(data) { + try { + this.root = new XFAParser().parse(XFAFactory._createDocument(data)); + const binder = new Binder(this.root); + this.form = binder.bind(); + this.dataHandler = new DataHandler(this.root, binder.getData()); + this.form[$globalData].template = this.form; + } catch (e) { + warn(`XFA - an error occurred during parsing and binding: ${e}`); + } + } + isValid() { + return !!(this.root && this.form); + } + _createPagesHelper() { + const iterator = this.form[$toPages](); + return new Promise((resolve, reject) => { + const nextIteration = () => { + try { + const value = iterator.next(); + if (value.done) { + resolve(value.value); + } else { + setTimeout(nextIteration, 0); + } + } catch (e) { + reject(e); + } + }; + setTimeout(nextIteration, 0); + }); + } + async _createPages() { + try { + this.pages = await this._createPagesHelper(); + this.dims = this.pages.children.map(c => { + const { + width, + height + } = c.attributes.style; + return [0, 0, parseInt(width), parseInt(height)]; + }); + } catch (e) { + warn(`XFA - an error occurred during layout: ${e}`); + } + } + getBoundingBox(pageIndex) { + return this.dims[pageIndex]; + } + async getNumPages() { + if (!this.pages) { + await this._createPages(); + } + return this.dims.length; + } + setImages(images) { + this.form[$globalData].images = images; + } + setFonts(fonts) { + this.form[$globalData].fontFinder = new FontFinder(fonts); + const missingFonts = []; + for (let typeface of this.form[$globalData].usedTypefaces) { + typeface = stripQuotes(typeface); + const font = this.form[$globalData].fontFinder.find(typeface); + if (!font) { + missingFonts.push(typeface); + } + } + if (missingFonts.length > 0) { + return missingFonts; + } + return null; + } + appendFonts(fonts, reallyMissingFonts) { + this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts); + } + async getPages() { + if (!this.pages) { + await this._createPages(); + } + const pages = this.pages; + this.pages = null; + return pages; + } + serializeData(storage) { + return this.dataHandler.serialize(storage); + } + static _createDocument(data) { + if (!data["/xdp:xdp"]) { + return data["xdp:xdp"]; + } + return Object.values(data).join(""); + } + static getRichTextAsHtml(rc) { + if (!rc || typeof rc !== "string") { + return null; + } + try { + let root = new XFAParser(XhtmlNamespace, true).parse(rc); + if (!["body", "xhtml"].includes(root[$nodeName])) { + const newRoot = XhtmlNamespace.body({}); + newRoot[$appendChild](root); + root = newRoot; + } + const result = root[$toHTML](); + if (!result.success) { + return null; + } + const { + html + } = result; + const { + attributes + } = html; + if (attributes) { + if (attributes.class) { + attributes.class = attributes.class.filter(attr => !attr.startsWith("xfa")); + } + attributes.dir = "auto"; + } + return { + html, + str: root[$text]() + }; + } catch (e) { + warn(`XFA - an error occurred during parsing of rich text: ${e}`); + } + return null; + } +} + +;// ./src/core/annotation.js + + + + + + + + + + + + + + + +class AnnotationFactory { + static createGlobals(pdfManager) { + return Promise.all([pdfManager.ensureCatalog("acroForm"), pdfManager.ensureDoc("xfaDatasets"), pdfManager.ensureCatalog("structTreeRoot"), pdfManager.ensureCatalog("baseUrl"), pdfManager.ensureCatalog("attachments"), pdfManager.ensureCatalog("globalColorSpaceCache")]).then(([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments, globalColorSpaceCache]) => ({ + pdfManager, + acroForm: acroForm instanceof Dict ? acroForm : Dict.empty, + xfaDatasets, + structTreeRoot, + baseUrl, + attachments, + globalColorSpaceCache + }), reason => { + warn(`createGlobals: "${reason}".`); + return null; + }); + } + static async create(xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, collectByType, pageRef) { + const pageIndex = collectFields ? await this._getPageIndex(xref, ref, annotationGlobals.pdfManager) : null; + return annotationGlobals.pdfManager.ensure(this, "_create", [xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, collectByType, pageIndex, pageRef]); + } + static _create(xref, ref, annotationGlobals, idFactory, collectFields = false, orphanFields = null, collectByType = null, pageIndex = null, pageRef = null) { + const dict = xref.fetchIfRef(ref); + if (!(dict instanceof Dict)) { + return undefined; + } + let subtype = dict.get("Subtype"); + subtype = subtype instanceof Name ? subtype.name : null; + if (collectByType && !collectByType.has(AnnotationType[subtype?.toUpperCase()])) { + return null; + } + const { + acroForm, + pdfManager + } = annotationGlobals; + const id = ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`; + const parameters = { + xref, + ref, + dict, + subtype, + id, + annotationGlobals, + collectFields, + orphanFields, + needAppearances: !collectFields && acroForm.get("NeedAppearances") === true, + pageIndex, + evaluatorOptions: pdfManager.evaluatorOptions, + pageRef + }; + switch (subtype) { + case "Link": + return new LinkAnnotation(parameters); + case "Text": + return new TextAnnotation(parameters); + case "Widget": + let fieldType = getInheritableProperty({ + dict, + key: "FT" + }); + fieldType = fieldType instanceof Name ? fieldType.name : null; + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotation(parameters); + case "Btn": + return new ButtonWidgetAnnotation(parameters); + case "Ch": + return new ChoiceWidgetAnnotation(parameters); + case "Sig": + return new SignatureWidgetAnnotation(parameters); + } + warn(`Unimplemented widget field type "${fieldType}", ` + "falling back to base field type."); + return new WidgetAnnotation(parameters); + case "Popup": + return new PopupAnnotation(parameters); + case "FreeText": + return new FreeTextAnnotation(parameters); + case "Line": + return new LineAnnotation(parameters); + case "Square": + return new SquareAnnotation(parameters); + case "Circle": + return new CircleAnnotation(parameters); + case "PolyLine": + return new PolylineAnnotation(parameters); + case "Polygon": + return new PolygonAnnotation(parameters); + case "Caret": + return new CaretAnnotation(parameters); + case "Ink": + return new InkAnnotation(parameters); + case "Highlight": + return new HighlightAnnotation(parameters); + case "Underline": + return new UnderlineAnnotation(parameters); + case "Squiggly": + return new SquigglyAnnotation(parameters); + case "StrikeOut": + return new StrikeOutAnnotation(parameters); + case "Stamp": + return new StampAnnotation(parameters); + case "FileAttachment": + return new FileAttachmentAnnotation(parameters); + default: + if (!collectFields) { + if (!subtype) { + warn("Annotation is missing the required /Subtype."); + } else { + warn(`Unimplemented annotation type "${subtype}", ` + "falling back to base annotation."); + } + } + return new Annotation(parameters); + } + } + static async _getPageIndex(xref, ref, pdfManager) { + try { + const annotDict = await xref.fetchIfRefAsync(ref); + if (!(annotDict instanceof Dict)) { + return -1; + } + const pageRef = annotDict.getRaw("P"); + if (pageRef instanceof Ref) { + try { + const pageIndex = await pdfManager.ensureCatalog("getPageIndex", [pageRef]); + return pageIndex; + } catch (ex) { + info(`_getPageIndex -- not a valid page reference: "${ex}".`); + } + } + if (annotDict.has("Kids")) { + return -1; + } + const numPages = await pdfManager.ensureDoc("numPages"); + for (let pageIndex = 0; pageIndex < numPages; pageIndex++) { + const page = await pdfManager.getPage(pageIndex); + const annotations = await pdfManager.ensure(page, "annotations"); + for (const annotRef of annotations) { + if (annotRef instanceof Ref && isRefsEqual(annotRef, ref)) { + return pageIndex; + } + } + } + } catch (ex) { + warn(`_getPageIndex: "${ex}".`); + } + return -1; + } + static generateImages(annotations, xref, isOffscreenCanvasSupported) { + if (!isOffscreenCanvasSupported) { + warn("generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images."); + return null; + } + let imagePromises; + for (const { + bitmapId, + bitmap + } of annotations) { + if (!bitmap) { + continue; + } + imagePromises ||= new Map(); + imagePromises.set(bitmapId, StampAnnotation.createImage(bitmap, xref)); + } + return imagePromises; + } + static async saveNewAnnotations(evaluator, xref, task, annotations, imagePromises, changes) { + let baseFontRef; + const promises = []; + const { + isOffscreenCanvasSupported + } = evaluator.options; + for (const annotation of annotations) { + if (annotation.deleted) { + continue; + } + switch (annotation.annotationType) { + case AnnotationEditorType.FREETEXT: + if (!baseFontRef) { + const baseFont = new Dict(xref); + baseFont.setIfName("BaseFont", "Helvetica"); + baseFont.setIfName("Type", "Font"); + baseFont.setIfName("Subtype", "Type1"); + baseFont.setIfName("Encoding", "WinAnsiEncoding"); + baseFontRef = xref.getNewTemporaryRef(); + changes.put(baseFontRef, { + data: baseFont + }); + } + promises.push(FreeTextAnnotation.createNewAnnotation(xref, annotation, changes, { + evaluator, + task, + baseFontRef + })); + break; + case AnnotationEditorType.HIGHLIGHT: + if (annotation.quadPoints) { + promises.push(HighlightAnnotation.createNewAnnotation(xref, annotation, changes)); + } else { + promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes)); + } + break; + case AnnotationEditorType.INK: + promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes)); + break; + case AnnotationEditorType.STAMP: + const image = isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null; + if (image?.imageStream) { + const { + imageStream, + smaskStream + } = image; + if (smaskStream) { + const smaskRef = xref.getNewTemporaryRef(); + changes.put(smaskRef, { + data: smaskStream + }); + imageStream.dict.set("SMask", smaskRef); + } + const imageRef = image.imageRef = xref.getNewTemporaryRef(); + changes.put(imageRef, { + data: imageStream + }); + image.imageStream = image.smaskStream = null; + } + promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, { + image + })); + break; + case AnnotationEditorType.SIGNATURE: + promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, {})); + break; + } + } + return { + annotations: (await Promise.all(promises)).flat() + }; + } + static async printNewAnnotations(annotationGlobals, evaluator, task, annotations, imagePromises) { + if (!annotations) { + return null; + } + const { + options, + xref + } = evaluator; + const promises = []; + for (const annotation of annotations) { + if (annotation.deleted) { + continue; + } + switch (annotation.annotationType) { + case AnnotationEditorType.FREETEXT: + promises.push(FreeTextAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, { + evaluator, + task, + evaluatorOptions: options + })); + break; + case AnnotationEditorType.HIGHLIGHT: + if (annotation.quadPoints) { + promises.push(HighlightAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, { + evaluatorOptions: options + })); + } else { + promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, { + evaluatorOptions: options + })); + } + break; + case AnnotationEditorType.INK: + promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, { + evaluatorOptions: options + })); + break; + case AnnotationEditorType.STAMP: + const image = options.isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null; + if (image?.imageStream) { + const { + imageStream, + smaskStream + } = image; + if (smaskStream) { + imageStream.dict.set("SMask", smaskStream); + } + image.imageRef = new JpegStream(imageStream, imageStream.length); + image.imageStream = image.smaskStream = null; + } + promises.push(StampAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, { + image, + evaluatorOptions: options + })); + break; + case AnnotationEditorType.SIGNATURE: + promises.push(StampAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, { + evaluatorOptions: options + })); + break; + } + } + return Promise.all(promises); + } +} +function getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) { + if (!Array.isArray(color)) { + return defaultColor; + } + const rgbColor = defaultColor || new Uint8ClampedArray(3); + switch (color.length) { + case 0: + return null; + case 1: + ColorSpaceUtils.gray.getRgbItem(color, 0, rgbColor, 0); + return rgbColor; + case 3: + ColorSpaceUtils.rgb.getRgbItem(color, 0, rgbColor, 0); + return rgbColor; + case 4: + ColorSpaceUtils.cmyk.getRgbItem(color, 0, rgbColor, 0); + return rgbColor; + default: + return defaultColor; + } +} +function getPdfColorArray(color, defaultValue = null) { + return color && Array.from(color, c => c / 255) || defaultValue; +} +function getQuadPoints(dict, rect) { + const quadPoints = dict.getArray("QuadPoints"); + if (!isNumberArray(quadPoints, null) || quadPoints.length === 0 || quadPoints.length % 8 > 0) { + return null; + } + const newQuadPoints = new Float32Array(quadPoints.length); + for (let i = 0, ii = quadPoints.length; i < ii; i += 8) { + const [x1, y1, x2, y2, x3, y3, x4, y4] = quadPoints.slice(i, i + 8); + const minX = Math.min(x1, x2, x3, x4); + const maxX = Math.max(x1, x2, x3, x4); + const minY = Math.min(y1, y2, y3, y4); + const maxY = Math.max(y1, y2, y3, y4); + if (rect !== null && (minX < rect[0] || maxX > rect[2] || minY < rect[1] || maxY > rect[3])) { + return null; + } + newQuadPoints.set([minX, maxY, maxX, maxY, minX, minY, maxX, minY], i); + } + return newQuadPoints; +} +function getTransformMatrix(rect, bbox, matrix) { + const minMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]); + Util.axialAlignedBoundingBox(bbox, matrix, minMax); + const [minX, minY, maxX, maxY] = minMax; + if (minX === maxX || minY === maxY) { + return [1, 0, 0, 1, rect[0], rect[1]]; + } + const xRatio = (rect[2] - rect[0]) / (maxX - minX); + const yRatio = (rect[3] - rect[1]) / (maxY - minY); + return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio]; +} +class Annotation { + constructor(params) { + const { + annotationGlobals, + dict, + orphanFields, + ref, + subtype, + xref + } = params; + const parentRef = orphanFields?.get(ref); + if (parentRef) { + dict.set("Parent", parentRef); + } + this.setTitle(dict.get("T")); + this.setContents(dict.get("Contents")); + this.setModificationDate(dict.get("M")); + this.setFlags(dict.get("F")); + this.setRectangle(dict.getArray("Rect")); + this.setColor(dict.getArray("C")); + this.setBorderStyle(dict); + this.setAppearance(dict); + this.setOptionalContent(dict); + const MK = dict.get("MK"); + this.setBorderAndBackgroundColors(MK); + this.setRotation(MK, dict); + this.ref = params.ref instanceof Ref ? params.ref : null; + this._streams = []; + if (this.appearance) { + this._streams.push(this.appearance); + } + const isLocked = !!(this.flags & AnnotationFlag.LOCKED); + const isContentLocked = !!(this.flags & AnnotationFlag.LOCKEDCONTENTS); + this.data = { + annotationType: AnnotationType[subtype?.toUpperCase()], + annotationFlags: this.flags, + borderStyle: this.borderStyle, + color: this.color, + backgroundColor: this.backgroundColor, + borderColor: this.borderColor, + rotation: this.rotation, + contentsObj: this._contents, + hasAppearance: !!this.appearance, + id: params.id, + modificationDate: this.modificationDate, + rect: this.rectangle, + subtype, + hasOwnCanvas: false, + noRotate: !!(this.flags & AnnotationFlag.NOROTATE), + noHTML: isLocked && isContentLocked, + isEditable: false, + structParent: -1 + }; + if (annotationGlobals.structTreeRoot) { + let structParent = dict.get("StructParent"); + this.data.structParent = structParent = Number.isInteger(structParent) && structParent >= 0 ? structParent : -1; + annotationGlobals.structTreeRoot.addAnnotationIdToPage(params.pageRef, structParent); + } + if (params.collectFields) { + const kids = dict.get("Kids"); + if (Array.isArray(kids)) { + const kidIds = []; + for (const kid of kids) { + if (kid instanceof Ref) { + kidIds.push(kid.toString()); + } + } + if (kidIds.length !== 0) { + this.data.kidIds = kidIds; + } + } + this.data.actions = collectActions(xref, dict, AnnotationActionEventType); + this.data.fieldName = this._constructFieldName(dict); + this.data.pageIndex = params.pageIndex; + } + const it = dict.get("IT"); + if (it instanceof Name) { + this.data.it = it.name; + } + this._isOffscreenCanvasSupported = params.evaluatorOptions.isOffscreenCanvasSupported; + this._fallbackFontDict = null; + this._needAppearances = false; + } + _hasFlag(flags, flag) { + return !!(flags & flag); + } + _buildFlags(noView, noPrint) { + let { + flags + } = this; + if (noView === undefined) { + if (noPrint === undefined) { + return undefined; + } + if (noPrint) { + return flags & ~AnnotationFlag.PRINT; + } + return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.PRINT; + } + if (noView) { + flags |= AnnotationFlag.PRINT; + if (noPrint) { + return flags & ~AnnotationFlag.NOVIEW | AnnotationFlag.HIDDEN; + } + return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW; + } + flags &= ~(AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW); + if (noPrint) { + return flags & ~AnnotationFlag.PRINT; + } + return flags | AnnotationFlag.PRINT; + } + _isViewable(flags) { + return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, AnnotationFlag.NOVIEW); + } + _isPrintable(flags) { + return this._hasFlag(flags, AnnotationFlag.PRINT) && !this._hasFlag(flags, AnnotationFlag.HIDDEN) && !this._hasFlag(flags, AnnotationFlag.INVISIBLE); + } + mustBeViewed(annotationStorage, _renderForms) { + const noView = annotationStorage?.get(this.data.id)?.noView; + if (noView !== undefined) { + return !noView; + } + return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN); + } + mustBePrinted(annotationStorage) { + const noPrint = annotationStorage?.get(this.data.id)?.noPrint; + if (noPrint !== undefined) { + return !noPrint; + } + return this.printable; + } + mustBeViewedWhenEditing(isEditing, modifiedIds = null) { + return isEditing ? !this.data.isEditable : !modifiedIds?.has(this.data.id); + } + get viewable() { + if (this.data.quadPoints === null) { + return false; + } + if (this.flags === 0) { + return true; + } + return this._isViewable(this.flags); + } + get printable() { + if (this.data.quadPoints === null) { + return false; + } + if (this.flags === 0) { + return false; + } + return this._isPrintable(this.flags); + } + _parseStringHelper(data) { + const str = typeof data === "string" ? stringToPDFString(data) : ""; + const dir = str && bidi(str).dir === "rtl" ? "rtl" : "ltr"; + return { + str, + dir + }; + } + setDefaultAppearance(params) { + const { + dict, + annotationGlobals + } = params; + const defaultAppearance = getInheritableProperty({ + dict, + key: "DA" + }) || annotationGlobals.acroForm.get("DA"); + this._defaultAppearance = typeof defaultAppearance === "string" ? defaultAppearance : ""; + this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance); + } + setTitle(title) { + this._title = this._parseStringHelper(title); + } + setContents(contents) { + this._contents = this._parseStringHelper(contents); + } + setModificationDate(modificationDate) { + this.modificationDate = typeof modificationDate === "string" ? modificationDate : null; + } + setFlags(flags) { + this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0; + if (this.flags & AnnotationFlag.INVISIBLE && this.constructor.name !== "Annotation") { + this.flags ^= AnnotationFlag.INVISIBLE; + } + } + hasFlag(flag) { + return this._hasFlag(this.flags, flag); + } + setRectangle(rectangle) { + this.rectangle = lookupNormalRect(rectangle, [0, 0, 0, 0]); + } + setColor(color) { + this.color = getRgbColor(color); + } + setLineEndings(lineEndings) { + this.lineEndings = ["None", "None"]; + if (Array.isArray(lineEndings) && lineEndings.length === 2) { + for (let i = 0; i < 2; i++) { + const obj = lineEndings[i]; + if (obj instanceof Name) { + switch (obj.name) { + case "None": + continue; + case "Square": + case "Circle": + case "Diamond": + case "OpenArrow": + case "ClosedArrow": + case "Butt": + case "ROpenArrow": + case "RClosedArrow": + case "Slash": + this.lineEndings[i] = obj.name; + continue; + } + } + warn(`Ignoring invalid lineEnding: ${obj}`); + } + } + } + setRotation(mk, dict) { + this.rotation = 0; + let angle = mk instanceof Dict ? mk.get("R") || 0 : dict.get("Rotate") || 0; + if (Number.isInteger(angle) && angle !== 0) { + angle %= 360; + if (angle < 0) { + angle += 360; + } + if (angle % 90 === 0) { + this.rotation = angle; + } + } + } + setBorderAndBackgroundColors(mk) { + if (mk instanceof Dict) { + this.borderColor = getRgbColor(mk.getArray("BC"), null); + this.backgroundColor = getRgbColor(mk.getArray("BG"), null); + } else { + this.borderColor = this.backgroundColor = null; + } + } + setBorderStyle(borderStyle) { + this.borderStyle = new AnnotationBorderStyle(); + if (!(borderStyle instanceof Dict)) { + return; + } + if (borderStyle.has("BS")) { + const dict = borderStyle.get("BS"); + if (dict instanceof Dict) { + const dictType = dict.get("Type"); + if (!dictType || isName(dictType, "Border")) { + this.borderStyle.setWidth(dict.get("W"), this.rectangle); + this.borderStyle.setStyle(dict.get("S")); + this.borderStyle.setDashArray(dict.getArray("D")); + } + } + } else if (borderStyle.has("Border")) { + const array = borderStyle.getArray("Border"); + if (Array.isArray(array)) { + if (array.length >= 3) { + this.borderStyle.setHorizontalCornerRadius(array[0]); + this.borderStyle.setVerticalCornerRadius(array[1]); + this.borderStyle.setWidth(array[2], this.rectangle); + if (array.length === 4) { + this.borderStyle.setDashArray(array[3], true); + } + } else if (array.length === 0) { + this.borderStyle.setWidth(0); + } + } + } else { + this.borderStyle.setWidth(0); + } + } + setAppearance(dict) { + this.appearance = null; + const appearanceStates = dict.get("AP"); + if (!(appearanceStates instanceof Dict)) { + return; + } + const normalAppearanceState = appearanceStates.get("N"); + if (normalAppearanceState instanceof BaseStream) { + this.appearance = normalAppearanceState; + return; + } + if (!(normalAppearanceState instanceof Dict)) { + return; + } + const as = dict.get("AS"); + if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) { + return; + } + const appearance = normalAppearanceState.get(as.name); + if (appearance instanceof BaseStream) { + this.appearance = appearance; + } + } + setOptionalContent(dict) { + this.oc = null; + const oc = dict.get("OC"); + if (oc instanceof Name) { + warn("setOptionalContent: Support for /Name-entry is not implemented."); + } else if (oc instanceof Dict) { + this.oc = oc; + } + } + async loadResources(keys, appearance) { + const resources = await appearance.dict.getAsync("Resources"); + if (resources) { + await ObjectLoader.load(resources, keys, resources.xref); + } + return resources; + } + async getOperatorList(evaluator, task, intent, annotationStorage) { + const { + hasOwnCanvas, + id, + rect + } = this.data; + let appearance = this.appearance; + const isUsingOwnCanvas = !!(hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY); + if (isUsingOwnCanvas && (this.width === 0 || this.height === 0)) { + this.data.hasOwnCanvas = false; + return { + opList: new OperatorList(), + separateForm: false, + separateCanvas: false + }; + } + if (!appearance) { + if (!isUsingOwnCanvas) { + return { + opList: new OperatorList(), + separateForm: false, + separateCanvas: false + }; + } + appearance = new StringStream(""); + appearance.dict = new Dict(); + } + const appearanceDict = appearance.dict; + const resources = await this.loadResources(RESOURCES_KEYS_OPERATOR_LIST, appearance); + const bbox = lookupRect(appearanceDict.getArray("BBox"), [0, 0, 1, 1]); + const matrix = lookupMatrix(appearanceDict.getArray("Matrix"), IDENTITY_MATRIX); + const transform = getTransformMatrix(rect, bbox, matrix); + const opList = new OperatorList(); + let optionalContent; + if (this.oc) { + optionalContent = await evaluator.parseMarkedContentProps(this.oc, null); + } + if (optionalContent !== undefined) { + opList.addOp(OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + opList.addOp(OPS.beginAnnotation, [id, rect, transform, matrix, isUsingOwnCanvas]); + await evaluator.getOperatorList({ + stream: appearance, + task, + resources, + operatorList: opList, + fallbackFontDict: this._fallbackFontDict + }); + opList.addOp(OPS.endAnnotation, []); + if (optionalContent !== undefined) { + opList.addOp(OPS.endMarkedContent, []); + } + this.reset(); + return { + opList, + separateForm: false, + separateCanvas: isUsingOwnCanvas + }; + } + async save(evaluator, task, annotationStorage, changes) { + return null; + } + get overlaysTextContent() { + return false; + } + get hasTextContent() { + return false; + } + async extractTextContent(evaluator, task, viewBox) { + if (!this.appearance) { + return; + } + const resources = await this.loadResources(RESOURCES_KEYS_TEXT_CONTENT, this.appearance); + const text = []; + const buffer = []; + let firstPosition = null; + const sink = { + desiredSize: Math.Infinity, + ready: true, + enqueue(chunk, size) { + for (const item of chunk.items) { + if (item.str === undefined) { + continue; + } + firstPosition ||= item.transform.slice(-2); + buffer.push(item.str); + if (item.hasEOL) { + text.push(buffer.join("").trimEnd()); + buffer.length = 0; + } + } + } + }; + await evaluator.getTextContent({ + stream: this.appearance, + task, + resources, + includeMarkedContent: true, + keepWhiteSpace: true, + sink, + viewBox + }); + this.reset(); + if (buffer.length) { + text.push(buffer.join("").trimEnd()); + } + if (text.length > 1 || text[0]) { + const appearanceDict = this.appearance.dict; + const bbox = lookupRect(appearanceDict.getArray("BBox"), null); + const matrix = lookupMatrix(appearanceDict.getArray("Matrix"), null); + this.data.textPosition = this._transformPoint(firstPosition, bbox, matrix); + this.data.textContent = text; + } + } + _transformPoint(coords, bbox, matrix) { + const { + rect + } = this.data; + bbox ||= [0, 0, 1, 1]; + matrix ||= [1, 0, 0, 1, 0, 0]; + const transform = getTransformMatrix(rect, bbox, matrix); + transform[4] -= rect[0]; + transform[5] -= rect[1]; + const p = coords.slice(); + Util.applyTransform(p, transform); + Util.applyTransform(p, matrix); + return p; + } + getFieldObject() { + if (this.data.kidIds) { + return { + id: this.data.id, + actions: this.data.actions, + name: this.data.fieldName, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + type: "", + kidIds: this.data.kidIds, + page: this.data.pageIndex, + rotation: this.rotation + }; + } + return null; + } + reset() { + for (const stream of this._streams) { + stream.reset(); + } + } + _constructFieldName(dict) { + if (!dict.has("T") && !dict.has("Parent")) { + warn("Unknown field name, falling back to empty field name."); + return ""; + } + if (!dict.has("Parent")) { + return stringToPDFString(dict.get("T")); + } + const fieldName = []; + if (dict.has("T")) { + fieldName.unshift(stringToPDFString(dict.get("T"))); + } + let loopDict = dict; + const visited = new RefSet(); + if (dict.objId) { + visited.put(dict.objId); + } + while (loopDict.has("Parent")) { + loopDict = loopDict.get("Parent"); + if (!(loopDict instanceof Dict) || loopDict.objId && visited.has(loopDict.objId)) { + break; + } + if (loopDict.objId) { + visited.put(loopDict.objId); + } + if (loopDict.has("T")) { + fieldName.unshift(stringToPDFString(loopDict.get("T"))); + } + } + return fieldName.join("."); + } + get width() { + return this.data.rect[2] - this.data.rect[0]; + } + get height() { + return this.data.rect[3] - this.data.rect[1]; + } +} +class AnnotationBorderStyle { + width = 1; + rawWidth = 1; + style = AnnotationBorderStyleType.SOLID; + dashArray = [3]; + horizontalCornerRadius = 0; + verticalCornerRadius = 0; + setWidth(width, rect = [0, 0, 0, 0]) { + if (width instanceof Name) { + this.width = 0; + return; + } + if (typeof width === "number") { + if (width > 0) { + this.rawWidth = width; + const maxWidth = (rect[2] - rect[0]) / 2; + const maxHeight = (rect[3] - rect[1]) / 2; + if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) { + warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`); + width = 1; + } + } + this.width = width; + } + } + setStyle(style) { + if (!(style instanceof Name)) { + return; + } + switch (style.name) { + case "S": + this.style = AnnotationBorderStyleType.SOLID; + break; + case "D": + this.style = AnnotationBorderStyleType.DASHED; + break; + case "B": + this.style = AnnotationBorderStyleType.BEVELED; + break; + case "I": + this.style = AnnotationBorderStyleType.INSET; + break; + case "U": + this.style = AnnotationBorderStyleType.UNDERLINE; + break; + default: + break; + } + } + setDashArray(dashArray, forceStyle = false) { + if (Array.isArray(dashArray)) { + let isValid = true; + let allZeros = true; + for (const element of dashArray) { + const validNumber = +element >= 0; + if (!validNumber) { + isValid = false; + break; + } else if (element > 0) { + allZeros = false; + } + } + if (dashArray.length === 0 || isValid && !allZeros) { + this.dashArray = dashArray; + if (forceStyle) { + this.setStyle(Name.get("D")); + } + } else { + this.width = 0; + } + } else if (dashArray) { + this.width = 0; + } + } + setHorizontalCornerRadius(radius) { + if (Number.isInteger(radius)) { + this.horizontalCornerRadius = radius; + } + } + setVerticalCornerRadius(radius) { + if (Number.isInteger(radius)) { + this.verticalCornerRadius = radius; + } + } +} +class MarkupAnnotation extends Annotation { + constructor(params) { + super(params); + const { + dict + } = params; + if (dict.has("IRT")) { + const rawIRT = dict.getRaw("IRT"); + this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null; + const rt = dict.get("RT"); + this.data.replyType = rt instanceof Name ? rt.name : AnnotationReplyType.REPLY; + } + let popupRef = null; + if (this.data.replyType === AnnotationReplyType.GROUP) { + const parent = dict.get("IRT"); + this.setTitle(parent.get("T")); + this.data.titleObj = this._title; + this.setContents(parent.get("Contents")); + this.data.contentsObj = this._contents; + if (!parent.has("CreationDate")) { + this.data.creationDate = null; + } else { + this.setCreationDate(parent.get("CreationDate")); + this.data.creationDate = this.creationDate; + } + if (!parent.has("M")) { + this.data.modificationDate = null; + } else { + this.setModificationDate(parent.get("M")); + this.data.modificationDate = this.modificationDate; + } + popupRef = parent.getRaw("Popup"); + if (!parent.has("C")) { + this.data.color = null; + } else { + this.setColor(parent.getArray("C")); + this.data.color = this.color; + } + } else { + this.data.titleObj = this._title; + this.setCreationDate(dict.get("CreationDate")); + this.data.creationDate = this.creationDate; + popupRef = dict.getRaw("Popup"); + if (!dict.has("C")) { + this.data.color = null; + } + } + this.data.popupRef = popupRef instanceof Ref ? popupRef.toString() : null; + if (dict.has("RC")) { + this.data.richText = XFAFactory.getRichTextAsHtml(dict.get("RC")); + } + } + setCreationDate(creationDate) { + this.creationDate = typeof creationDate === "string" ? creationDate : null; + } + _setDefaultAppearance({ + xref, + extra, + strokeColor, + fillColor, + blendMode, + strokeAlpha, + fillAlpha, + pointsCallback + }) { + const bbox = this.data.rect = [Infinity, Infinity, -Infinity, -Infinity]; + const buffer = ["q"]; + if (extra) { + buffer.push(extra); + } + if (strokeColor) { + buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`); + } + if (fillColor) { + buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`); + } + const pointsArray = this.data.quadPoints || Float32Array.from([this.rectangle[0], this.rectangle[3], this.rectangle[2], this.rectangle[3], this.rectangle[0], this.rectangle[1], this.rectangle[2], this.rectangle[1]]); + for (let i = 0, ii = pointsArray.length; i < ii; i += 8) { + const points = pointsCallback(buffer, pointsArray.subarray(i, i + 8)); + Util.rectBoundingBox(...points, bbox); + } + buffer.push("Q"); + const formDict = new Dict(xref); + const appearanceStreamDict = new Dict(xref); + appearanceStreamDict.setIfName("Subtype", "Form"); + const appearanceStream = new StringStream(buffer.join(" ")); + appearanceStream.dict = appearanceStreamDict; + formDict.set("Fm0", appearanceStream); + const gsDict = new Dict(xref); + if (blendMode) { + gsDict.setIfName("BM", blendMode); + } + gsDict.setIfNumber("CA", strokeAlpha); + gsDict.setIfNumber("ca", fillAlpha); + const stateDict = new Dict(xref); + stateDict.set("GS0", gsDict); + const resources = new Dict(xref); + resources.set("ExtGState", stateDict); + resources.set("XObject", formDict); + const appearanceDict = new Dict(xref); + appearanceDict.set("Resources", resources); + appearanceDict.set("BBox", bbox); + this.appearance = new StringStream("/GS0 gs /Fm0 Do"); + this.appearance.dict = appearanceDict; + this._streams.push(this.appearance, appearanceStream); + } + static async createNewAnnotation(xref, annotation, changes, params) { + const annotationRef = annotation.ref ||= xref.getNewTemporaryRef(); + const ap = await this.createNewAppearanceStream(annotation, xref, params); + let annotationDict; + if (ap) { + const apRef = xref.getNewTemporaryRef(); + annotationDict = this.createNewDict(annotation, xref, { + apRef + }); + changes.put(apRef, { + data: ap + }); + } else { + annotationDict = this.createNewDict(annotation, xref, {}); + } + if (Number.isInteger(annotation.parentTreeId)) { + annotationDict.set("StructParent", annotation.parentTreeId); + } + changes.put(annotationRef, { + data: annotationDict + }); + const retRef = { + ref: annotationRef + }; + const { + popup + } = annotation; + if (popup) { + if (popup.deleted) { + annotationDict.delete("Popup"); + annotationDict.delete("Contents"); + annotationDict.delete("RC"); + return retRef; + } + const popupRef = popup.ref ||= xref.getNewTemporaryRef(); + popup.parent = annotationRef; + const popupDict = PopupAnnotation.createNewDict(popup, xref); + changes.put(popupRef, { + data: popupDict + }); + annotationDict.setIfDefined("Contents", stringToAsciiOrUTF16BE(popup.contents)); + annotationDict.set("Popup", popupRef); + return [retRef, { + ref: popupRef + }]; + } + return retRef; + } + static async createNewPrintAnnotation(annotationGlobals, xref, annotation, params) { + const ap = await this.createNewAppearanceStream(annotation, xref, params); + const annotationDict = this.createNewDict(annotation, xref, ap ? { + ap + } : {}); + const newAnnotation = new this.prototype.constructor({ + dict: annotationDict, + xref, + annotationGlobals, + evaluatorOptions: params.evaluatorOptions + }); + if (annotation.ref) { + newAnnotation.ref = newAnnotation.refToReplace = annotation.ref; + } + return newAnnotation; + } +} +class WidgetAnnotation extends Annotation { + constructor(params) { + super(params); + const { + dict, + xref, + annotationGlobals + } = params; + const data = this.data; + this._needAppearances = params.needAppearances; + if (data.fieldName === undefined) { + data.fieldName = this._constructFieldName(dict); + } + if (data.actions === undefined) { + data.actions = collectActions(xref, dict, AnnotationActionEventType); + } + let fieldValue = getInheritableProperty({ + dict, + key: "V", + getArray: true + }); + data.fieldValue = this._decodeFormValue(fieldValue); + const defaultFieldValue = getInheritableProperty({ + dict, + key: "DV", + getArray: true + }); + data.defaultFieldValue = this._decodeFormValue(defaultFieldValue); + if (fieldValue === undefined && annotationGlobals.xfaDatasets) { + const path = this._title.str; + if (path) { + this._hasValueFromXFA = true; + data.fieldValue = fieldValue = annotationGlobals.xfaDatasets.getValue(path); + } + } + if (fieldValue === undefined && data.defaultFieldValue !== null) { + data.fieldValue = data.defaultFieldValue; + } + data.alternativeText = stringToPDFString(dict.get("TU") || ""); + this.setDefaultAppearance(params); + data.hasAppearance ||= this._needAppearances && data.fieldValue !== undefined && data.fieldValue !== null; + const fieldType = getInheritableProperty({ + dict, + key: "FT" + }); + data.fieldType = fieldType instanceof Name ? fieldType.name : null; + const localResources = getInheritableProperty({ + dict, + key: "DR" + }); + const acroFormResources = annotationGlobals.acroForm.get("DR"); + const appearanceResources = this.appearance?.dict.get("Resources"); + this._fieldResources = { + localResources, + acroFormResources, + appearanceResources, + mergedResources: Dict.merge({ + xref, + dictArray: [localResources, appearanceResources, acroFormResources], + mergeSubDicts: true + }) + }; + data.fieldFlags = getInheritableProperty({ + dict, + key: "Ff" + }); + if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) { + data.fieldFlags = 0; + } + data.password = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD); + data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY); + data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED); + data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN) || this._hasFlag(data.annotationFlags, AnnotationFlag.NOVIEW); + } + _decodeFormValue(formValue) { + if (Array.isArray(formValue)) { + return formValue.filter(item => typeof item === "string").map(item => stringToPDFString(item)); + } else if (formValue instanceof Name) { + return stringToPDFString(formValue.name); + } else if (typeof formValue === "string") { + return stringToPDFString(formValue); + } + return null; + } + hasFieldFlag(flag) { + return !!(this.data.fieldFlags & flag); + } + _isViewable(flags) { + return true; + } + mustBeViewed(annotationStorage, renderForms) { + if (renderForms) { + return this.viewable; + } + return super.mustBeViewed(annotationStorage, renderForms) && !this._hasFlag(this.flags, AnnotationFlag.NOVIEW); + } + getRotationMatrix(annotationStorage) { + let rotation = annotationStorage?.get(this.data.id)?.rotation; + if (rotation === undefined) { + rotation = this.rotation; + } + return rotation === 0 ? IDENTITY_MATRIX : getRotationMatrix(rotation, this.width, this.height); + } + getBorderAndBackgroundAppearances(annotationStorage) { + let rotation = annotationStorage?.get(this.data.id)?.rotation; + if (rotation === undefined) { + rotation = this.rotation; + } + if (!this.backgroundColor && !this.borderColor) { + return ""; + } + const rect = rotation === 0 || rotation === 180 ? `0 0 ${this.width} ${this.height} re` : `0 0 ${this.height} ${this.width} re`; + let str = ""; + if (this.backgroundColor) { + str = `${getPdfColor(this.backgroundColor, true)} ${rect} f `; + } + if (this.borderColor) { + const borderWidth = this.borderStyle.width || 1; + str += `${borderWidth} w ${getPdfColor(this.borderColor, false)} ${rect} S `; + } + return str; + } + async getOperatorList(evaluator, task, intent, annotationStorage) { + if (intent & RenderingIntentFlag.ANNOTATIONS_FORMS && !(this instanceof SignatureWidgetAnnotation) && !this.data.noHTML && !this.data.hasOwnCanvas) { + return { + opList: new OperatorList(), + separateForm: true, + separateCanvas: false + }; + } + if (!this._hasText) { + return super.getOperatorList(evaluator, task, intent, annotationStorage); + } + const content = await this._getAppearance(evaluator, task, intent, annotationStorage); + if (this.appearance && content === null) { + return super.getOperatorList(evaluator, task, intent, annotationStorage); + } + const opList = new OperatorList(); + if (!this._defaultAppearance || content === null) { + return { + opList, + separateForm: false, + separateCanvas: false + }; + } + const isUsingOwnCanvas = !!(this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY); + const matrix = [1, 0, 0, 1, 0, 0]; + const bbox = [0, 0, this.width, this.height]; + const transform = getTransformMatrix(this.data.rect, bbox, matrix); + let optionalContent; + if (this.oc) { + optionalContent = await evaluator.parseMarkedContentProps(this.oc, null); + } + if (optionalContent !== undefined) { + opList.addOp(OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + opList.addOp(OPS.beginAnnotation, [this.data.id, this.data.rect, transform, this.getRotationMatrix(annotationStorage), isUsingOwnCanvas]); + const stream = new StringStream(content); + await evaluator.getOperatorList({ + stream, + task, + resources: this._fieldResources.mergedResources, + operatorList: opList + }); + opList.addOp(OPS.endAnnotation, []); + if (optionalContent !== undefined) { + opList.addOp(OPS.endMarkedContent, []); + } + return { + opList, + separateForm: false, + separateCanvas: isUsingOwnCanvas + }; + } + _getMKDict(rotation) { + const mk = new Dict(null); + if (rotation) { + mk.set("R", rotation); + } + mk.setIfArray("BC", getPdfColorArray(this.borderColor)); + mk.setIfArray("BG", getPdfColorArray(this.backgroundColor)); + return mk.size > 0 ? mk : null; + } + amendSavedDict(annotationStorage, dict) {} + setValue(dict, value, xref, changes) { + const { + dict: parentDict, + ref: parentRef + } = getParentToUpdate(dict, this.ref, xref); + if (!parentDict) { + dict.set("V", value); + } else if (!changes.has(parentRef)) { + const newParentDict = parentDict.clone(); + newParentDict.set("V", value); + changes.put(parentRef, { + data: newParentDict + }); + return newParentDict; + } + return null; + } + async save(evaluator, task, annotationStorage, changes) { + const storageEntry = annotationStorage?.get(this.data.id); + const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint); + let value = storageEntry?.value, + rotation = storageEntry?.rotation; + if (value === this.data.fieldValue || value === undefined) { + if (!this._hasValueFromXFA && rotation === undefined && flags === undefined) { + return; + } + value ||= this.data.fieldValue; + } + if (rotation === undefined && !this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && isArrayEqual(value, this.data.fieldValue) && flags === undefined) { + return; + } + if (rotation === undefined) { + rotation = this.rotation; + } + let appearance = null; + if (!this._needAppearances) { + appearance = await this._getAppearance(evaluator, task, RenderingIntentFlag.SAVE, annotationStorage); + if (appearance === null && flags === undefined) { + return; + } + } else {} + let needAppearances = false; + if (appearance?.needAppearances) { + needAppearances = true; + appearance = null; + } + const { + xref + } = evaluator; + const originalDict = xref.fetchIfRef(this.ref); + if (!(originalDict instanceof Dict)) { + return; + } + const dict = new Dict(xref); + for (const [key, rawVal] of originalDict.getRawEntries()) { + if (key !== "AP") { + dict.set(key, rawVal); + } + } + if (flags !== undefined) { + dict.set("F", flags); + if (appearance === null && !needAppearances) { + const ap = originalDict.getRaw("AP"); + if (ap) { + dict.set("AP", ap); + } + } + } + const xfa = { + path: this.data.fieldName, + value + }; + const newParentDict = this.setValue(dict, Array.isArray(value) ? value.map(stringToAsciiOrUTF16BE) : stringToAsciiOrUTF16BE(value), xref, changes); + this.amendSavedDict(annotationStorage, newParentDict || dict); + const maybeMK = this._getMKDict(rotation); + if (maybeMK) { + dict.set("MK", maybeMK); + } + changes.put(this.ref, { + data: dict, + xfa, + needAppearances + }); + if (appearance !== null) { + const newRef = xref.getNewTemporaryRef(); + const AP = new Dict(xref); + dict.set("AP", AP); + AP.set("N", newRef); + const resources = this._getSaveFieldResources(xref); + const appearanceStream = new StringStream(appearance); + const appearanceDict = appearanceStream.dict = new Dict(xref); + appearanceDict.setIfName("Subtype", "Form"); + appearanceDict.set("Resources", resources); + const bbox = rotation % 180 === 0 ? [0, 0, this.width, this.height] : [0, 0, this.height, this.width]; + appearanceDict.set("BBox", bbox); + const rotationMatrix = this.getRotationMatrix(annotationStorage); + if (rotationMatrix !== IDENTITY_MATRIX) { + appearanceDict.set("Matrix", rotationMatrix); + } + changes.put(newRef, { + data: appearanceStream, + xfa: null, + needAppearances: false + }); + } + dict.set("M", `D:${getModificationDate()}`); + } + async _getAppearance(evaluator, task, intent, annotationStorage) { + if (this.data.password) { + return null; + } + const storageEntry = annotationStorage?.get(this.data.id); + let value, rotation; + if (storageEntry) { + value = storageEntry.formattedValue || storageEntry.value; + rotation = storageEntry.rotation; + } + if (rotation === undefined && value === undefined && !this._needAppearances) { + if (!this._hasValueFromXFA || this.appearance) { + return null; + } + } + const colors = this.getBorderAndBackgroundAppearances(annotationStorage); + if (value === undefined) { + value = this.data.fieldValue; + if (!value) { + return `/Tx BMC q ${colors}Q EMC`; + } + } + if (Array.isArray(value) && value.length === 1) { + value = value[0]; + } + assert(typeof value === "string", "Expected `value` to be a string."); + value = value.trimEnd(); + if (this.data.combo) { + const option = this.data.options.find(({ + exportValue + }) => value === exportValue); + value = option?.displayValue || value; + } + if (value === "") { + return `/Tx BMC q ${colors}Q EMC`; + } + if (rotation === undefined) { + rotation = this.rotation; + } + let lineCount = -1; + let lines; + if (this.data.multiLine) { + lines = value.split(/\r\n?|\n/).map(line => line.normalize("NFC")); + lineCount = lines.length; + } else { + lines = [value.replace(/\r\n?|\n/, "").normalize("NFC")]; + } + const defaultPadding = 1; + const defaultHPadding = 2; + let { + width: totalWidth, + height: totalHeight + } = this; + if (rotation === 90 || rotation === 270) { + [totalWidth, totalHeight] = [totalHeight, totalWidth]; + } + if (!this._defaultAppearance) { + this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = "/Helvetica 0 Tf 0 g"); + } + let font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources); + let defaultAppearance, fontSize, lineHeight; + const encodedLines = []; + let encodingError = false; + for (const line of lines) { + const encodedString = font.encodeString(line); + if (encodedString.length > 1) { + encodingError = true; + } + encodedLines.push(encodedString.join("")); + } + if (encodingError && intent & RenderingIntentFlag.SAVE) { + return { + needAppearances: true + }; + } + if (encodingError && this._isOffscreenCanvasSupported) { + const fontFamily = this.data.comb ? "monospace" : "sans-serif"; + const fakeUnicodeFont = new FakeUnicodeFont(evaluator.xref, fontFamily); + const resources = fakeUnicodeFont.createFontResources(lines.join("")); + const newFont = resources.getRaw("Font"); + if (this._fieldResources.mergedResources.has("Font")) { + const oldFont = this._fieldResources.mergedResources.get("Font"); + for (const [key, rawVal] of newFont.getRawEntries()) { + oldFont.set(key, rawVal); + } + } else { + this._fieldResources.mergedResources.set("Font", newFont); + } + const fontName = fakeUnicodeFont.fontName.name; + font = await WidgetAnnotation._getFontData(evaluator, task, { + fontName, + fontSize: 0 + }, resources); + for (let i = 0, ii = encodedLines.length; i < ii; i++) { + encodedLines[i] = stringToUTF16String(lines[i]); + } + const savedDefaultAppearance = Object.assign(Object.create(null), this.data.defaultAppearanceData); + this.data.defaultAppearanceData.fontSize = 0; + this.data.defaultAppearanceData.fontName = fontName; + [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount); + this.data.defaultAppearanceData = savedDefaultAppearance; + } else { + if (!this._isOffscreenCanvasSupported) { + warn("_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly."); + } + [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount); + } + let descent = font.descent; + if (isNaN(descent)) { + descent = BASELINE_FACTOR * lineHeight; + } else { + descent = Math.max(BASELINE_FACTOR * lineHeight, Math.abs(descent) * fontSize); + } + const defaultVPadding = Math.min(Math.floor((totalHeight - fontSize) / 2), defaultPadding); + const alignment = this.data.textAlignment; + if (this.data.multiLine) { + return this._getMultilineAppearance(defaultAppearance, encodedLines, font, fontSize, totalWidth, totalHeight, alignment, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage); + } + if (this.data.comb) { + return this._getCombAppearance(defaultAppearance, font, encodedLines[0], fontSize, totalWidth, totalHeight, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage); + } + const bottomPadding = defaultVPadding + descent; + if (alignment === 0 || alignment > 2) { + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(defaultHPadding)} ${numberToString(bottomPadding)} Tm (${escapeString(encodedLines[0])}) Tj` + " ET Q EMC"; + } + const prevInfo = { + shift: 0 + }; + const renderedText = this._renderText(encodedLines[0], font, fontSize, totalWidth, alignment, prevInfo, defaultHPadding, bottomPadding); + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + " ET Q EMC"; + } + static async _getFontData(evaluator, task, appearanceData, resources) { + const operatorList = new OperatorList(); + const initialState = { + font: null, + clone() { + return this; + } + }; + const { + fontName, + fontSize + } = appearanceData; + await evaluator.handleSetFont(resources, [fontName && Name.get(fontName), fontSize], null, operatorList, task, initialState, null); + return initialState.font; + } + _getTextWidth(text, font) { + return Math.sumPrecise(font.charsToGlyphs(text).map(g => g.width)) / 1000; + } + _computeFontSize(height, width, text, font, lineCount) { + let { + fontSize + } = this.data.defaultAppearanceData; + let lineHeight = (fontSize || 12) * LINE_FACTOR, + numberOfLines = Math.round(height / lineHeight); + if (!fontSize) { + const roundWithTwoDigits = x => Math.floor(x * 100) / 100; + if (lineCount === -1) { + const textWidth = this._getTextWidth(text, font); + fontSize = roundWithTwoDigits(Math.min(height / LINE_FACTOR, width / textWidth)); + numberOfLines = 1; + } else { + const lines = text.split(/\r\n?|\n/); + const cachedLines = []; + for (const line of lines) { + const encoded = font.encodeString(line).join(""); + const glyphs = font.charsToGlyphs(encoded); + const positions = font.getCharPositions(encoded); + cachedLines.push({ + line: encoded, + glyphs, + positions + }); + } + const isTooBig = fsize => { + let totalHeight = 0; + for (const cache of cachedLines) { + const chunks = this._splitLine(null, font, fsize, width, cache); + totalHeight += chunks.length * fsize; + if (totalHeight > height) { + return true; + } + } + return false; + }; + numberOfLines = Math.max(numberOfLines, lineCount); + while (true) { + lineHeight = height / numberOfLines; + fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR); + if (isTooBig(fontSize)) { + numberOfLines++; + continue; + } + break; + } + } + const { + fontName, + fontColor + } = this.data.defaultAppearanceData; + this._defaultAppearance = createDefaultAppearance({ + fontSize, + fontName, + fontColor + }); + } + return [this._defaultAppearance, fontSize, height / numberOfLines]; + } + _renderText(text, font, fontSize, totalWidth, alignment, prevInfo, hPadding, vPadding) { + let shift; + if (alignment === 1) { + const width = this._getTextWidth(text, font) * fontSize; + shift = (totalWidth - width) / 2; + } else if (alignment === 2) { + const width = this._getTextWidth(text, font) * fontSize; + shift = totalWidth - width - hPadding; + } else { + shift = hPadding; + } + const shiftStr = numberToString(shift - prevInfo.shift); + prevInfo.shift = shift; + vPadding = numberToString(vPadding); + return `${shiftStr} ${vPadding} Td (${escapeString(text)}) Tj`; + } + _getSaveFieldResources(xref) { + const { + localResources, + appearanceResources, + acroFormResources + } = this._fieldResources; + const fontName = this.data.defaultAppearanceData?.fontName; + if (!fontName) { + return localResources || Dict.empty; + } + for (const resources of [localResources, appearanceResources]) { + if (resources instanceof Dict) { + const localFont = resources.get("Font"); + if (localFont instanceof Dict && localFont.has(fontName)) { + return resources; + } + } + } + if (acroFormResources instanceof Dict) { + const acroFormFont = acroFormResources.get("Font"); + if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) { + const subFontDict = new Dict(xref); + subFontDict.set(fontName, acroFormFont.getRaw(fontName)); + const subResourcesDict = new Dict(xref); + subResourcesDict.set("Font", subFontDict); + return Dict.merge({ + xref, + dictArray: [subResourcesDict, localResources], + mergeSubDicts: true + }); + } + } + return localResources || Dict.empty; + } + getFieldObject() { + return null; + } +} +class TextWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + const { + dict + } = params; + if (dict.has("PMD")) { + this.flags |= AnnotationFlag.HIDDEN; + this.data.hidden = true; + warn("Barcodes are not supported"); + } + this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML; + this._hasText = true; + if (typeof this.data.fieldValue !== "string") { + this.data.fieldValue = ""; + } + let alignment = getInheritableProperty({ + dict, + key: "Q" + }); + if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) { + alignment = null; + } + this.data.textAlignment = alignment; + let maximumLength = getInheritableProperty({ + dict, + key: "MaxLen" + }); + if (!Number.isInteger(maximumLength) || maximumLength < 0) { + maximumLength = 0; + } + this.data.maxLen = maximumLength; + this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE); + this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) && !this.data.multiLine && !this.data.password && !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0; + this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL); + const { + data: { + actions + } + } = this; + if (!actions) { + return; + } + const AFDateTime = /^AF(Date|Time)_(?:Keystroke|Format)(?:Ex)?\(['"]?([^'"]+)['"]?\);$/; + let canUseHTMLDateTime = false; + if (actions.Format?.length === 1 && actions.Keystroke?.length === 1 && AFDateTime.test(actions.Format[0]) && AFDateTime.test(actions.Keystroke[0]) || actions.Format?.length === 0 && actions.Keystroke?.length === 1 && AFDateTime.test(actions.Keystroke[0]) || actions.Keystroke?.length === 0 && actions.Format?.length === 1 && AFDateTime.test(actions.Format[0])) { + canUseHTMLDateTime = true; + } + const actionsToVisit = []; + if (actions.Format) { + actionsToVisit.push(...actions.Format); + } + if (actions.Keystroke) { + actionsToVisit.push(...actions.Keystroke); + } + if (canUseHTMLDateTime) { + delete actions.Keystroke; + actions.Format = actionsToVisit; + } + for (const formatAction of actionsToVisit) { + const m = formatAction.match(AFDateTime); + if (!m) { + continue; + } + const isDate = m[1] === "Date"; + let format = m[2]; + const num = parseInt(format, 10); + if (!isNaN(num) && Math.floor(Math.log10(num)) + 1 === m[2].length) { + format = (isDate ? DateFormats : TimeFormats)[num] ?? format; + } + this.data.datetimeFormat = format; + if (!canUseHTMLDateTime) { + break; + } + if (isDate) { + if (/HH|MM|ss|h/.test(format)) { + this.data.datetimeType = "datetime-local"; + this.data.timeStep = /ss/.test(format) ? 1 : 60; + } else { + this.data.datetimeType = "date"; + } + break; + } + this.data.datetimeType = "time"; + this.data.timeStep = /ss/.test(format) ? 1 : 60; + break; + } + } + get hasTextContent() { + return !!this.appearance && !this._needAppearances; + } + _getCombAppearance(defaultAppearance, font, text, fontSize, width, height, hPadding, vPadding, descent, lineHeight, annotationStorage) { + const combWidth = width / this.data.maxLen; + const colors = this.getBorderAndBackgroundAppearances(annotationStorage); + const buf = []; + const positions = font.getCharPositions(text); + for (const [start, end] of positions) { + buf.push(`(${escapeString(text.substring(start, end))}) Tj`); + } + const renderedComb = buf.join(` ${numberToString(combWidth)} 0 Td `); + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(hPadding)} ${numberToString(vPadding + descent)} Tm ${renderedComb}` + " ET Q EMC"; + } + _getMultilineAppearance(defaultAppearance, lines, font, fontSize, width, height, alignment, hPadding, vPadding, descent, lineHeight, annotationStorage) { + const buf = []; + const totalWidth = width - 2 * hPadding; + const prevInfo = { + shift: 0 + }; + for (let i = 0, ii = lines.length; i < ii; i++) { + const line = lines[i]; + const chunks = this._splitLine(line, font, fontSize, totalWidth); + for (let j = 0, jj = chunks.length; j < jj; j++) { + const chunk = chunks[j]; + const vShift = i === 0 && j === 0 ? -vPadding - (lineHeight - descent) : -lineHeight; + buf.push(this._renderText(chunk, font, fontSize, width, alignment, prevInfo, hPadding, vShift)); + } + } + const colors = this.getBorderAndBackgroundAppearances(annotationStorage); + const renderedText = buf.join("\n"); + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 ${numberToString(height)} Tm ${renderedText}` + " ET Q EMC"; + } + _splitLine(line, font, fontSize, width, cache = {}) { + line = cache.line || line; + const glyphs = cache.glyphs || font.charsToGlyphs(line); + if (glyphs.length <= 1) { + return [line]; + } + const positions = cache.positions || font.getCharPositions(line); + const scale = fontSize / 1000; + const chunks = []; + let lastSpacePosInStringStart = -1, + lastSpacePosInStringEnd = -1, + lastSpacePos = -1, + startChunk = 0, + currentWidth = 0; + for (let i = 0, ii = glyphs.length; i < ii; i++) { + const [start, end] = positions[i]; + const glyph = glyphs[i]; + const glyphWidth = glyph.width * scale; + if (glyph.unicode === " ") { + if (currentWidth + glyphWidth > width) { + chunks.push(line.substring(startChunk, start)); + startChunk = start; + currentWidth = glyphWidth; + lastSpacePosInStringStart = -1; + lastSpacePos = -1; + } else { + currentWidth += glyphWidth; + lastSpacePosInStringStart = start; + lastSpacePosInStringEnd = end; + lastSpacePos = i; + } + } else if (currentWidth + glyphWidth > width) { + if (lastSpacePosInStringStart !== -1) { + chunks.push(line.substring(startChunk, lastSpacePosInStringEnd)); + startChunk = lastSpacePosInStringEnd; + i = lastSpacePos + 1; + lastSpacePosInStringStart = -1; + currentWidth = 0; + } else { + chunks.push(line.substring(startChunk, start)); + startChunk = start; + currentWidth = glyphWidth; + } + } else { + currentWidth += glyphWidth; + } + } + if (startChunk < line.length) { + chunks.push(line.substring(startChunk, line.length)); + } + return chunks; + } + async extractTextContent(evaluator, task, viewBox) { + await super.extractTextContent(evaluator, task, viewBox); + const text = this.data.textContent; + if (!text) { + return; + } + const allText = text.join("\n"); + if (allText === this.data.fieldValue) { + return; + } + const regex = allText.replaceAll(/([.*+?^${}()|[\]\\])|(\s+)/g, (_m, p1) => p1 ? `\\${p1}` : "\\s+"); + if (new RegExp(`^\\s*${regex}\\s*$`).test(this.data.fieldValue)) { + this.data.textContent = this.data.fieldValue.split("\n"); + } + } + getFieldObject() { + return { + id: this.data.id, + value: this.data.fieldValue, + defaultValue: this.data.defaultFieldValue || "", + multiline: this.data.multiLine, + password: this.data.password, + charLimit: this.data.maxLen, + comb: this.data.comb, + editable: !this.data.readOnly, + hidden: this.data.hidden, + name: this.data.fieldName, + rect: this.data.rect, + actions: this.data.actions, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + datetimeFormat: this.data.datetimeFormat, + hasDatetimeHTML: !!this.data.datetimeType, + type: "text" + }; + } +} +class ButtonWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + this.checkedAppearance = null; + this.uncheckedAppearance = null; + const isRadio = this.hasFieldFlag(AnnotationFieldFlag.RADIO), + isPushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON); + this.data.checkBox = !isRadio && !isPushButton; + this.data.radioButton = isRadio && !isPushButton; + this.data.pushButton = isPushButton; + this.data.isTooltipOnly = false; + if (this.data.checkBox) { + this._processCheckBox(params); + } else if (this.data.radioButton) { + this._processRadioButton(params); + } else if (this.data.pushButton) { + this.data.hasOwnCanvas = true; + this.data.noHTML = false; + this._processPushButton(params); + } else { + warn("Invalid field flags for button widget annotation"); + } + } + async getOperatorList(evaluator, task, intent, annotationStorage) { + if (this.data.pushButton) { + return super.getOperatorList(evaluator, task, intent, false, annotationStorage); + } + let value = null; + let rotation = null; + if (annotationStorage) { + const storageEntry = annotationStorage.get(this.data.id); + value = storageEntry ? storageEntry.value : null; + rotation = storageEntry ? storageEntry.rotation : null; + } + if (value === null && this.appearance) { + return super.getOperatorList(evaluator, task, intent, annotationStorage); + } + if (value === null || value === undefined) { + value = this.data.checkBox ? this.data.fieldValue === this.data.exportValue : this.data.fieldValue === this.data.buttonValue; + } + const appearance = value ? this.checkedAppearance : this.uncheckedAppearance; + if (appearance) { + const savedAppearance = this.appearance; + const savedMatrix = lookupMatrix(appearance.dict.getArray("Matrix"), IDENTITY_MATRIX); + if (rotation) { + appearance.dict.set("Matrix", this.getRotationMatrix(annotationStorage)); + } + this.appearance = appearance; + const operatorList = super.getOperatorList(evaluator, task, intent, annotationStorage); + this.appearance = savedAppearance; + appearance.dict.set("Matrix", savedMatrix); + return operatorList; + } + return { + opList: new OperatorList(), + separateForm: false, + separateCanvas: false + }; + } + async save(evaluator, task, annotationStorage, changes) { + if (this.data.checkBox) { + this._saveCheckbox(evaluator, task, annotationStorage, changes); + return; + } + if (this.data.radioButton) { + this._saveRadioButton(evaluator, task, annotationStorage, changes); + } + } + async _saveCheckbox(evaluator, task, annotationStorage, changes) { + if (!annotationStorage) { + return; + } + const storageEntry = annotationStorage.get(this.data.id); + const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint); + let rotation = storageEntry?.rotation, + value = storageEntry?.value; + if (rotation === undefined && flags === undefined) { + if (value === undefined) { + return; + } + const defaultValue = this.data.fieldValue === this.data.exportValue; + if (defaultValue === value) { + return; + } + } + let dict = evaluator.xref.fetchIfRef(this.ref); + if (!(dict instanceof Dict)) { + return; + } + dict = dict.clone(); + if (rotation === undefined) { + rotation = this.rotation; + } + if (value === undefined) { + value = this.data.fieldValue === this.data.exportValue; + } + const xfa = { + path: this.data.fieldName, + value: value ? this.data.exportValue : "" + }; + const name = Name.get(value ? this.data.exportValue : "Off"); + this.setValue(dict, name, evaluator.xref, changes); + dict.set("AS", name); + dict.set("M", `D:${getModificationDate()}`); + if (flags !== undefined) { + dict.set("F", flags); + } + const maybeMK = this._getMKDict(rotation); + if (maybeMK) { + dict.set("MK", maybeMK); + } + changes.put(this.ref, { + data: dict, + xfa, + needAppearances: false + }); + } + async _saveRadioButton(evaluator, task, annotationStorage, changes) { + if (!annotationStorage) { + return; + } + const storageEntry = annotationStorage.get(this.data.id); + const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint); + let rotation = storageEntry?.rotation, + value = storageEntry?.value; + if (rotation === undefined && flags === undefined) { + if (value === undefined) { + return; + } + const defaultValue = this.data.fieldValue === this.data.buttonValue; + if (defaultValue === value) { + return; + } + } + let dict = evaluator.xref.fetchIfRef(this.ref); + if (!(dict instanceof Dict)) { + return; + } + dict = dict.clone(); + if (value === undefined) { + value = this.data.fieldValue === this.data.buttonValue; + } + if (rotation === undefined) { + rotation = this.rotation; + } + const xfa = { + path: this.data.fieldName, + value: value ? this.data.buttonValue : "" + }; + const name = Name.get(value ? this.data.buttonValue : "Off"); + if (value) { + this.setValue(dict, name, evaluator.xref, changes); + } + dict.set("AS", name); + dict.set("M", `D:${getModificationDate()}`); + if (flags !== undefined) { + dict.set("F", flags); + } + const maybeMK = this._getMKDict(rotation); + if (maybeMK) { + dict.set("MK", maybeMK); + } + changes.put(this.ref, { + data: dict, + xfa, + needAppearances: false + }); + } + _getDefaultCheckedAppearance(params, type) { + const { + width, + height + } = this; + const bbox = [0, 0, width, height]; + const FONT_RATIO = 0.8; + const fontSize = Math.min(width, height) * FONT_RATIO; + let metrics, char; + if (type === "check") { + metrics = { + width: 0.755 * fontSize, + height: 0.705 * fontSize + }; + char = "\x33"; + } else if (type === "disc") { + metrics = { + width: 0.791 * fontSize, + height: 0.705 * fontSize + }; + char = "\x6C"; + } else { + unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`); + } + const xShift = numberToString((width - metrics.width) / 2); + const yShift = numberToString((height - metrics.height) / 2); + const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`; + const appearanceStreamDict = new Dict(params.xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.setIfName("Subtype", "Form"); + appearanceStreamDict.setIfName("Type", "XObject"); + appearanceStreamDict.set("BBox", bbox); + appearanceStreamDict.set("Matrix", [1, 0, 0, 1, 0, 0]); + appearanceStreamDict.set("Length", appearance.length); + const resources = new Dict(params.xref); + const font = new Dict(params.xref); + font.set("PdfJsZaDb", this.fallbackFontDict); + resources.set("Font", font); + appearanceStreamDict.set("Resources", resources); + this.checkedAppearance = new StringStream(appearance); + this.checkedAppearance.dict = appearanceStreamDict; + this._streams.push(this.checkedAppearance); + } + _processCheckBox(params) { + const customAppearance = params.dict.get("AP"); + if (!(customAppearance instanceof Dict)) { + return; + } + const normalAppearance = customAppearance.get("N"); + if (!(normalAppearance instanceof Dict)) { + return; + } + const asValue = this._decodeFormValue(params.dict.get("AS")); + if (typeof asValue === "string") { + this.data.fieldValue = asValue; + } + const yes = this.data.fieldValue !== null && this.data.fieldValue !== "Off" ? this.data.fieldValue : "Yes"; + const exportValues = this._decodeFormValue([...normalAppearance.getKeys()]); + if (exportValues.length === 0) { + exportValues.push("Off", yes); + } else if (exportValues.length === 1) { + if (exportValues[0] === "Off") { + exportValues.push(yes); + } else { + exportValues.unshift("Off"); + } + } else if (exportValues.includes(yes)) { + exportValues.length = 0; + exportValues.push("Off", yes); + } else { + const otherYes = exportValues.find(v => v !== "Off"); + exportValues.length = 0; + exportValues.push("Off", otherYes); + } + if (!exportValues.includes(this.data.fieldValue)) { + this.data.fieldValue = "Off"; + } + this.data.exportValue = exportValues[1]; + const checkedAppearance = normalAppearance.get(this.data.exportValue); + this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null; + const uncheckedAppearance = normalAppearance.get("Off"); + this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null; + if (this.checkedAppearance) { + this._streams.push(this.checkedAppearance); + } else { + this._getDefaultCheckedAppearance(params, "check"); + } + if (this.uncheckedAppearance) { + this._streams.push(this.uncheckedAppearance); + } + this._fallbackFontDict = this.fallbackFontDict; + if (this.data.defaultFieldValue === null) { + this.data.defaultFieldValue = "Off"; + } + } + _processRadioButton(params) { + this.data.buttonValue = null; + const fieldParent = params.dict.get("Parent"); + if (fieldParent instanceof Dict) { + this.parent = params.dict.getRaw("Parent"); + const fieldParentValue = fieldParent.get("V"); + if (fieldParentValue instanceof Name) { + this.data.fieldValue = this._decodeFormValue(fieldParentValue); + } + } + const appearanceStates = params.dict.get("AP"); + if (!(appearanceStates instanceof Dict)) { + return; + } + const normalAppearance = appearanceStates.get("N"); + if (!(normalAppearance instanceof Dict)) { + return; + } + for (const key of normalAppearance.getKeys()) { + if (key !== "Off") { + this.data.buttonValue = this._decodeFormValue(key); + break; + } + } + const checkedAppearance = normalAppearance.get(this.data.buttonValue); + this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null; + const uncheckedAppearance = normalAppearance.get("Off"); + this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null; + if (this.checkedAppearance) { + this._streams.push(this.checkedAppearance); + } else { + this._getDefaultCheckedAppearance(params, "disc"); + } + if (this.uncheckedAppearance) { + this._streams.push(this.uncheckedAppearance); + } + this._fallbackFontDict = this.fallbackFontDict; + if (this.data.defaultFieldValue === null) { + this.data.defaultFieldValue = "Off"; + } + } + _processPushButton(params) { + const { + dict, + annotationGlobals + } = params; + if (!dict.has("A") && !dict.has("AA") && !this.data.alternativeText) { + warn("Push buttons without action dictionaries are not supported"); + return; + } + this.data.isTooltipOnly = !dict.has("A") && !dict.has("AA"); + Catalog.parseDestDictionary({ + destDict: dict, + resultObj: this.data, + docBaseUrl: annotationGlobals.baseUrl, + docAttachments: annotationGlobals.attachments + }); + } + getFieldObject() { + let type = "button"; + let exportValues; + if (this.data.checkBox) { + type = "checkbox"; + exportValues = this.data.exportValue; + } else if (this.data.radioButton) { + type = "radiobutton"; + exportValues = this.data.buttonValue; + } + return { + id: this.data.id, + value: this.data.fieldValue || "Off", + defaultValue: this.data.defaultFieldValue, + exportValues, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + hidden: this.data.hidden, + actions: this.data.actions, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type + }; + } + get fallbackFontDict() { + const dict = new Dict(); + dict.setIfName("BaseFont", "ZapfDingbats"); + dict.setIfName("Type", "FallbackType"); + dict.setIfName("Subtype", "FallbackType"); + dict.setIfName("Encoding", "ZapfDingbatsEncoding"); + return shadow(this, "fallbackFontDict", dict); + } +} +class ChoiceWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.indices = dict.getArray("I"); + this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0; + this.data.options = []; + const options = getInheritableProperty({ + dict, + key: "Opt" + }); + if (Array.isArray(options)) { + for (let i = 0, ii = options.length; i < ii; i++) { + const option = xref.fetchIfRef(options[i]); + const isOptionArray = Array.isArray(option); + this.data.options[i] = { + exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option), + displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option) + }; + } + } + if (!this.hasIndices) { + if (typeof this.data.fieldValue === "string") { + this.data.fieldValue = [this.data.fieldValue]; + } else { + this.data.fieldValue ||= []; + } + } else { + this.data.fieldValue = []; + const ii = this.data.options.length; + for (const i of this.indices) { + if (Number.isInteger(i) && i >= 0 && i < ii) { + this.data.fieldValue.push(this.data.options[i].exportValue); + } + } + } + if (this.data.options.length === 0 && this.data.fieldValue.length > 0) { + this.data.options = this.data.fieldValue.map(value => ({ + exportValue: value, + displayValue: value + })); + } + this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO); + this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT); + this._hasText = true; + } + getFieldObject() { + const type = this.data.combo ? "combobox" : "listbox"; + const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null; + return { + id: this.data.id, + value, + defaultValue: this.data.defaultFieldValue, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + numItems: this.data.fieldValue.length, + multipleSelection: this.data.multiSelect, + hidden: this.data.hidden, + actions: this.data.actions, + items: this.data.options, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type + }; + } + amendSavedDict(annotationStorage, dict) { + if (!this.hasIndices) { + return; + } + let values = annotationStorage?.get(this.data.id)?.value; + if (!Array.isArray(values)) { + values = [values]; + } + const indices = []; + const { + options + } = this.data; + for (let i = 0, j = 0, ii = options.length; i < ii; i++) { + if (options[i].exportValue === values[j]) { + indices.push(i); + j += 1; + } + } + dict.set("I", indices); + } + async _getAppearance(evaluator, task, intent, annotationStorage) { + if (this.data.combo) { + return super._getAppearance(evaluator, task, intent, annotationStorage); + } + let exportedValue, rotation; + const storageEntry = annotationStorage?.get(this.data.id); + if (storageEntry) { + rotation = storageEntry.rotation; + exportedValue = storageEntry.value; + } + if (rotation === undefined && exportedValue === undefined && !this._needAppearances) { + return null; + } + if (exportedValue === undefined) { + exportedValue = this.data.fieldValue; + } else if (!Array.isArray(exportedValue)) { + exportedValue = [exportedValue]; + } + const defaultPadding = 1; + const defaultHPadding = 2; + let { + width: totalWidth, + height: totalHeight + } = this; + if (rotation === 90 || rotation === 270) { + [totalWidth, totalHeight] = [totalHeight, totalWidth]; + } + const lineCount = this.data.options.length; + const valueIndices = []; + for (let i = 0; i < lineCount; i++) { + const { + exportValue + } = this.data.options[i]; + if (exportedValue.includes(exportValue)) { + valueIndices.push(i); + } + } + if (!this._defaultAppearance) { + this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = "/Helvetica 0 Tf 0 g"); + } + const font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources); + let defaultAppearance; + let { + fontSize + } = this.data.defaultAppearanceData; + if (!fontSize) { + const lineHeight = (totalHeight - defaultPadding) / lineCount; + let lineWidth = -1; + let value; + for (const { + displayValue + } of this.data.options) { + const width = this._getTextWidth(displayValue, font); + if (width > lineWidth) { + lineWidth = width; + value = displayValue; + } + } + [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * defaultHPadding, value, font, -1); + } else { + defaultAppearance = this._defaultAppearance; + } + const lineHeight = fontSize * LINE_FACTOR; + const vPadding = (lineHeight - fontSize) / 2; + const numberOfVisibleLines = Math.floor(totalHeight / lineHeight); + let firstIndex = 0; + if (valueIndices.length > 0) { + const minIndex = Math.min(...valueIndices); + const maxIndex = Math.max(...valueIndices); + firstIndex = Math.max(0, maxIndex - numberOfVisibleLines + 1); + if (firstIndex > minIndex) { + firstIndex = minIndex; + } + } + const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount); + const buf = ["/Tx BMC q", `1 1 ${totalWidth} ${totalHeight} re W n`]; + if (valueIndices.length) { + buf.push("0.600006 0.756866 0.854904 rg"); + for (const index of valueIndices) { + if (firstIndex <= index && index < end) { + buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`); + } + } + } + buf.push("BT", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`); + const prevInfo = { + shift: 0 + }; + for (let i = firstIndex; i < end; i++) { + const { + displayValue + } = this.data.options[i]; + const vpadding = i === firstIndex ? vPadding : 0; + buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, prevInfo, defaultHPadding, -lineHeight + vpadding)); + } + buf.push("ET Q EMC"); + return buf.join("\n"); + } +} +class SignatureWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + this.data.fieldValue = null; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !this.data.hasOwnCanvas; + } + getFieldObject() { + return { + id: this.data.id, + value: null, + page: this.data.pageIndex, + type: "signature" + }; + } +} +class TextAnnotation extends MarkupAnnotation { + constructor(params) { + const DEFAULT_ICON_SIZE = 22; + super(params); + this.data.noRotate = true; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = false; + const { + dict + } = params; + if (this.data.hasAppearance) { + this.data.name = "NoIcon"; + } else { + this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE; + this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE; + this.data.name = dict.has("Name") ? dict.get("Name").name : "Note"; + } + if (dict.has("State")) { + this.data.state = dict.get("State") || null; + this.data.stateModel = dict.get("StateModel") || null; + } else { + this.data.state = null; + this.data.stateModel = null; + } + } +} +class LinkAnnotation extends Annotation { + constructor(params) { + super(params); + const { + dict, + annotationGlobals + } = params; + this.data.noHTML = false; + const quadPoints = getQuadPoints(dict, this.rectangle); + if (quadPoints) { + this.data.quadPoints = quadPoints; + } + this.data.borderColor ||= this.data.color; + Catalog.parseDestDictionary({ + destDict: dict, + resultObj: this.data, + docBaseUrl: annotationGlobals.baseUrl, + docAttachments: annotationGlobals.attachments + }); + } + get overlaysTextContent() { + return true; + } +} +class PopupAnnotation extends Annotation { + constructor(params) { + super(params); + const { + dict + } = params; + this.data.noHTML = false; + if (this.width === 0 || this.height === 0) { + this.data.rect = null; + } + let parentItem = dict.get("Parent"); + if (!parentItem) { + warn("Popup annotation has a missing or invalid parent annotation."); + return; + } + this.data.parentRect = lookupNormalRect(parentItem.getArray("Rect"), null); + this.data.creationDate = parentItem.get("CreationDate") || ""; + const rt = parentItem.get("RT"); + if (isName(rt, AnnotationReplyType.GROUP)) { + parentItem = parentItem.get("IRT"); + } + if (!parentItem.has("M")) { + this.data.modificationDate = null; + } else { + this.setModificationDate(parentItem.get("M")); + this.data.modificationDate = this.modificationDate; + } + if (!parentItem.has("C")) { + this.data.color = null; + } else { + this.setColor(parentItem.getArray("C")); + this.data.color = this.color; + } + if (!this.viewable) { + const parentFlags = parentItem.get("F"); + if (this._isViewable(parentFlags)) { + this.setFlags(parentFlags); + } + } + this.setTitle(parentItem.get("T")); + this.data.titleObj = this._title; + this.setContents(parentItem.get("Contents")); + this.data.contentsObj = this._contents; + if (parentItem.has("RC")) { + this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get("RC")); + } + this.data.open = !!dict.get("Open"); + } + static createNewDict(annotation, xref, _params) { + const { + oldAnnotation, + rect, + parent + } = annotation; + const popup = oldAnnotation || new Dict(xref); + popup.setIfNotExists("Type", Name.get("Annot")); + popup.setIfNotExists("Subtype", Name.get("Popup")); + popup.setIfNotExists("Open", false); + popup.setIfArray("Rect", rect); + popup.set("Parent", parent); + return popup; + } + static async createNewAppearanceStream(annotation, xref, params) { + return null; + } +} +class FreeTextAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + this.data.hasOwnCanvas = this.data.noRotate; + this.data.isEditable = !this.data.noHTML; + this.data.noHTML = false; + const { + annotationGlobals, + evaluatorOptions, + xref + } = params; + this.setDefaultAppearance(params); + this._hasAppearance = !!this.appearance; + if (this._hasAppearance) { + const { + fontColor, + fontSize + } = parseAppearanceStream(this.appearance, evaluatorOptions, xref, annotationGlobals.globalColorSpaceCache); + this.data.defaultAppearanceData.fontColor = fontColor; + this.data.defaultAppearanceData.fontSize = fontSize || 10; + } else { + this.data.defaultAppearanceData.fontSize ||= 10; + const { + fontColor, + fontSize + } = this.data.defaultAppearanceData; + if (this._contents.str) { + this.data.textContent = this._contents.str.split(/\r\n?|\n/).map(line => line.trimEnd()); + const { + coords, + bbox, + matrix + } = FakeUnicodeFont.getFirstPositionInfo(this.rectangle, this.rotation, fontSize); + this.data.textPosition = this._transformPoint(coords, bbox, matrix); + } + if (this._isOffscreenCanvasSupported) { + const strokeAlpha = params.dict.get("CA"); + const fakeUnicodeFont = new FakeUnicodeFont(xref, "sans-serif"); + this.appearance = fakeUnicodeFont.createAppearance(this._contents.str, this.rectangle, this.rotation, fontSize, fontColor, strokeAlpha); + this._streams.push(this.appearance); + } else { + warn("FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly."); + } + } + } + get hasTextContent() { + return this._hasAppearance; + } + static createNewDict(annotation, xref, { + apRef, + ap + }) { + const { + color, + date, + fontSize, + oldAnnotation, + rect, + rotation, + user, + value + } = annotation; + const freetext = oldAnnotation || new Dict(xref); + freetext.setIfNotExists("Type", Name.get("Annot")); + freetext.setIfNotExists("Subtype", Name.get("FreeText")); + freetext.set(oldAnnotation ? "M" : "CreationDate", `D:${getModificationDate(date)}`); + if (oldAnnotation) { + freetext.delete("RC"); + } + freetext.setIfArray("Rect", rect); + const da = `/Helv ${fontSize} Tf ${getPdfColor(color, true)}`; + freetext.set("DA", da); + freetext.setIfDefined("Contents", stringToAsciiOrUTF16BE(value)); + freetext.setIfNotExists("F", 4); + freetext.setIfNotExists("Border", [0, 0, 0]); + freetext.setIfNumber("Rotate", rotation); + freetext.setIfDefined("T", stringToAsciiOrUTF16BE(user)); + if (apRef || ap) { + const n = new Dict(xref); + freetext.set("AP", n); + n.set("N", apRef || ap); + } + return freetext; + } + static async createNewAppearanceStream(annotation, xref, params) { + const { + baseFontRef, + evaluator, + task + } = params; + const { + color, + fontSize, + rect, + rotation, + value + } = annotation; + if (!color) { + return null; + } + const resources = new Dict(xref); + const font = new Dict(xref); + if (baseFontRef) { + font.set("Helv", baseFontRef); + } else { + const baseFont = new Dict(xref); + baseFont.setIfName("BaseFont", "Helvetica"); + baseFont.setIfName("Type", "Font"); + baseFont.setIfName("Subtype", "Type1"); + baseFont.setIfName("Encoding", "WinAnsiEncoding"); + font.set("Helv", baseFont); + } + resources.set("Font", font); + const helv = await WidgetAnnotation._getFontData(evaluator, task, { + fontName: "Helv", + fontSize + }, resources); + const [x1, y1, x2, y2] = rect; + let w = x2 - x1; + let h = y2 - y1; + if (rotation % 180 !== 0) { + [w, h] = [h, w]; + } + const lines = value.split("\n"); + const scale = fontSize / 1000; + let totalWidth = -Infinity; + const encodedLines = []; + for (let line of lines) { + const encoded = helv.encodeString(line); + if (encoded.length > 1) { + return null; + } + line = encoded.join(""); + encodedLines.push(line); + let lineWidth = 0; + const glyphs = helv.charsToGlyphs(line); + for (const glyph of glyphs) { + lineWidth += glyph.width * scale; + } + totalWidth = Math.max(totalWidth, lineWidth); + } + let hscale = 1; + if (totalWidth > w) { + hscale = w / totalWidth; + } + let vscale = 1; + const lineHeight = LINE_FACTOR * fontSize; + const lineAscent = (LINE_FACTOR - LINE_DESCENT_FACTOR) * fontSize; + const totalHeight = lineHeight * lines.length; + if (totalHeight > h) { + vscale = h / totalHeight; + } + const fscale = Math.min(hscale, vscale); + const newFontSize = fontSize * fscale; + let firstPoint, clipBox, matrix; + switch (rotation) { + case 0: + matrix = [1, 0, 0, 1]; + clipBox = [rect[0], rect[1], w, h]; + firstPoint = [rect[0], rect[3] - lineAscent]; + break; + case 90: + matrix = [0, 1, -1, 0]; + clipBox = [rect[1], -rect[2], w, h]; + firstPoint = [rect[1], -rect[0] - lineAscent]; + break; + case 180: + matrix = [-1, 0, 0, -1]; + clipBox = [-rect[2], -rect[3], w, h]; + firstPoint = [-rect[2], -rect[1] - lineAscent]; + break; + case 270: + matrix = [0, -1, 1, 0]; + clipBox = [-rect[3], rect[0], w, h]; + firstPoint = [-rect[3], rect[2] - lineAscent]; + break; + } + const buffer = ["q", `${matrix.join(" ")} 0 0 cm`, `${clipBox.join(" ")} re W n`, `BT`, `${getPdfColor(color, true)}`, `0 Tc /Helv ${numberToString(newFontSize)} Tf`]; + buffer.push(`${firstPoint.join(" ")} Td (${escapeString(encodedLines[0])}) Tj`); + const vShift = numberToString(lineHeight); + for (let i = 1, ii = encodedLines.length; i < ii; i++) { + const line = encodedLines[i]; + buffer.push(`0 -${vShift} Td (${escapeString(line)}) Tj`); + } + buffer.push("ET", "Q"); + const appearance = buffer.join("\n"); + const appearanceStreamDict = new Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.setIfName("Subtype", "Form"); + appearanceStreamDict.setIfName("Type", "XObject"); + appearanceStreamDict.set("BBox", rect); + appearanceStreamDict.set("Resources", resources); + appearanceStreamDict.set("Matrix", [1, 0, 0, 1, -rect[0], -rect[1]]); + const ap = new StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } +} +class LineAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = false; + const lineCoordinates = lookupRect(dict.getArray("L"), [0, 0, 0, 0]); + this.data.lineCoordinates = Util.normalizeRect(lineCoordinates); + this.setLineEndings(dict.getArray("LE")); + this.data.lineEndings = this.lineEndings; + if (!this.appearance) { + const strokeColor = getPdfColorArray(this.color, [0, 0, 0]); + const strokeAlpha = dict.get("CA"); + const interiorColor = getRgbColor(dict.getArray("IC"), null); + const fillColor = getPdfColorArray(interiorColor); + const fillAlpha = fillColor ? strokeAlpha : null; + const borderWidth = this.borderStyle.width || 1, + borderAdjust = 2 * borderWidth; + const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust]; + if (!Util.intersect(this.rectangle, bbox)) { + this.rectangle = bbox; + } + this._setDefaultAppearance({ + xref, + extra: `${borderWidth} w`, + strokeColor, + fillColor, + strokeAlpha, + fillAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, "S"); + return [points[0] - borderWidth, points[7] - borderWidth, points[2] + borderWidth, points[3] + borderWidth]; + } + }); + } + } +} +class SquareAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = false; + if (!this.appearance) { + const strokeColor = getPdfColorArray(this.color, [0, 0, 0]); + const strokeAlpha = dict.get("CA"); + const interiorColor = getRgbColor(dict.getArray("IC"), null); + const fillColor = getPdfColorArray(interiorColor); + const fillAlpha = fillColor ? strokeAlpha : null; + if (this.borderStyle.width === 0 && !fillColor) { + return; + } + this._setDefaultAppearance({ + xref, + extra: `${this.borderStyle.width} w`, + strokeColor, + fillColor, + strokeAlpha, + fillAlpha, + pointsCallback: (buffer, points) => { + const x = points[4] + this.borderStyle.width / 2; + const y = points[5] + this.borderStyle.width / 2; + const width = points[6] - points[4] - this.borderStyle.width; + const height = points[3] - points[7] - this.borderStyle.width; + buffer.push(`${x} ${y} ${width} ${height} re`); + if (fillColor) { + buffer.push("B"); + } else { + buffer.push("S"); + } + return [points[0], points[7], points[2], points[3]]; + } + }); + } + } +} +class CircleAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + if (!this.appearance) { + const strokeColor = getPdfColorArray(this.color, [0, 0, 0]); + const strokeAlpha = dict.get("CA"); + const interiorColor = getRgbColor(dict.getArray("IC"), null); + const fillColor = getPdfColorArray(interiorColor); + const fillAlpha = fillColor ? strokeAlpha : null; + if (this.borderStyle.width === 0 && !fillColor) { + return; + } + const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4)); + this._setDefaultAppearance({ + xref, + extra: `${this.borderStyle.width} w`, + strokeColor, + fillColor, + strokeAlpha, + fillAlpha, + pointsCallback: (buffer, points) => { + const x0 = points[0] + this.borderStyle.width / 2; + const y0 = points[1] - this.borderStyle.width / 2; + const x1 = points[6] - this.borderStyle.width / 2; + const y1 = points[7] + this.borderStyle.width / 2; + const xMid = x0 + (x1 - x0) / 2; + const yMid = y0 + (y1 - y0) / 2; + const xOffset = (x1 - x0) / 2 * controlPointsDistance; + const yOffset = (y1 - y0) / 2 * controlPointsDistance; + buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, "h"); + if (fillColor) { + buffer.push("B"); + } else { + buffer.push("S"); + } + return [points[0], points[7], points[2], points[3]]; + } + }); + } + } +} +class PolylineAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = false; + this.data.vertices = null; + if (!(this instanceof PolygonAnnotation)) { + this.setLineEndings(dict.getArray("LE")); + this.data.lineEndings = this.lineEndings; + } + const rawVertices = dict.getArray("Vertices"); + if (!isNumberArray(rawVertices, null)) { + return; + } + const vertices = this.data.vertices = Float32Array.from(rawVertices); + if (!this.appearance) { + const strokeColor = getPdfColorArray(this.color, [0, 0, 0]); + const strokeAlpha = dict.get("CA"); + let fillColor = getRgbColor(dict.getArray("IC"), null); + if (fillColor) { + fillColor = getPdfColorArray(fillColor); + } + let operator; + if (fillColor) { + if (this.color) { + operator = fillColor.every((c, i) => c === strokeColor[i]) ? "f" : "B"; + } else { + operator = "f"; + } + } else { + operator = "S"; + } + const borderWidth = this.borderStyle.width || 1, + borderAdjust = 2 * borderWidth; + const bbox = [Infinity, Infinity, -Infinity, -Infinity]; + for (let i = 0, ii = vertices.length; i < ii; i += 2) { + Util.rectBoundingBox(vertices[i] - borderAdjust, vertices[i + 1] - borderAdjust, vertices[i] + borderAdjust, vertices[i + 1] + borderAdjust, bbox); + } + if (!Util.intersect(this.rectangle, bbox)) { + this.rectangle = bbox; + } + this._setDefaultAppearance({ + xref, + extra: `${borderWidth} w`, + strokeColor, + strokeAlpha, + fillColor, + fillAlpha: fillColor ? strokeAlpha : null, + pointsCallback: (buffer, points) => { + for (let i = 0, ii = vertices.length; i < ii; i += 2) { + buffer.push(`${vertices[i]} ${vertices[i + 1]} ${i === 0 ? "m" : "l"}`); + } + buffer.push(operator); + return [points[0], points[7], points[2], points[3]]; + } + }); + } + } +} +class PolygonAnnotation extends PolylineAnnotation {} +class CaretAnnotation extends MarkupAnnotation {} +class InkAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = false; + const { + dict, + xref + } = params; + this.data.inkLists = []; + this.data.isEditable = !this.data.noHTML; + this.data.noHTML = false; + this.data.opacity = dict.get("CA") || 1; + const rawInkLists = dict.getArray("InkList"); + if (!Array.isArray(rawInkLists)) { + return; + } + for (let i = 0, ii = rawInkLists.length; i < ii; ++i) { + if (!Array.isArray(rawInkLists[i])) { + continue; + } + const inkList = new Float32Array(rawInkLists[i].length); + this.data.inkLists.push(inkList); + for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) { + const x = xref.fetchIfRef(rawInkLists[i][j]), + y = xref.fetchIfRef(rawInkLists[i][j + 1]); + if (typeof x === "number" && typeof y === "number") { + inkList[j] = x; + inkList[j + 1] = y; + } + } + } + if (!this.appearance) { + const strokeColor = getPdfColorArray(this.color, [0, 0, 0]); + const strokeAlpha = dict.get("CA"); + const borderWidth = this.borderStyle.width || 1, + borderAdjust = 2 * borderWidth; + const bbox = [Infinity, Infinity, -Infinity, -Infinity]; + for (const inkList of this.data.inkLists) { + for (let i = 0, ii = inkList.length; i < ii; i += 2) { + Util.rectBoundingBox(inkList[i] - borderAdjust, inkList[i + 1] - borderAdjust, inkList[i] + borderAdjust, inkList[i + 1] + borderAdjust, bbox); + } + } + if (!Util.intersect(this.rectangle, bbox)) { + this.rectangle = bbox; + } + this._setDefaultAppearance({ + xref, + extra: `${borderWidth} w`, + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + for (const inkList of this.data.inkLists) { + for (let i = 0, ii = inkList.length; i < ii; i += 2) { + buffer.push(`${inkList[i]} ${inkList[i + 1]} ${i === 0 ? "m" : "l"}`); + } + buffer.push("S"); + } + return [points[0], points[7], points[2], points[3]]; + } + }); + } + } + static createNewDict(annotation, xref, { + apRef, + ap + }) { + const { + oldAnnotation, + color, + date, + opacity, + paths, + outlines, + rect, + rotation, + thickness, + user + } = annotation; + const ink = oldAnnotation || new Dict(xref); + ink.setIfNotExists("Type", Name.get("Annot")); + ink.setIfNotExists("Subtype", Name.get("Ink")); + ink.set(oldAnnotation ? "M" : "CreationDate", `D:${getModificationDate(date)}`); + ink.setIfArray("Rect", rect); + ink.setIfArray("InkList", outlines?.points || paths?.points); + ink.setIfNotExists("F", 4); + ink.setIfNumber("Rotate", rotation); + ink.setIfDefined("T", stringToAsciiOrUTF16BE(user)); + if (outlines) { + ink.setIfName("IT", "InkHighlight"); + } + if (thickness > 0) { + const bs = new Dict(xref); + ink.set("BS", bs); + bs.set("W", thickness); + } + ink.setIfArray("C", getPdfColorArray(color)); + ink.setIfNumber("CA", opacity); + if (ap || apRef) { + const n = new Dict(xref); + ink.set("AP", n); + n.set("N", apRef || ap); + } + return ink; + } + static async createNewAppearanceStream(annotation, xref, params) { + if (annotation.outlines) { + return this.createNewAppearanceStreamForHighlight(annotation, xref, params); + } + const { + color, + rect, + paths, + thickness, + opacity + } = annotation; + if (!color) { + return null; + } + const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${getPdfColor(color, false)}`]; + if (opacity !== 1) { + appearanceBuffer.push("/R0 gs"); + } + for (const outline of paths.lines) { + appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} m`); + for (let i = 6, ii = outline.length; i < ii; i += 6) { + if (isNaN(outline[i])) { + appearanceBuffer.push(`${numberToString(outline[i + 4])} ${numberToString(outline[i + 5])} l`); + } else { + const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6); + appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(" ") + " c"); + } + } + if (outline.length === 6) { + appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} l`); + } + } + appearanceBuffer.push("S"); + const appearance = appearanceBuffer.join("\n"); + const appearanceStreamDict = new Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.setIfName("Subtype", "Form"); + appearanceStreamDict.setIfName("Type", "XObject"); + appearanceStreamDict.set("BBox", rect); + appearanceStreamDict.set("Length", appearance.length); + if (opacity !== 1) { + const resources = new Dict(xref); + const extGState = new Dict(xref); + const r0 = new Dict(xref); + r0.set("CA", opacity); + r0.setIfName("Type", "ExtGState"); + extGState.set("R0", r0); + resources.set("ExtGState", extGState); + appearanceStreamDict.set("Resources", resources); + } + const ap = new StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } + static async createNewAppearanceStreamForHighlight(annotation, xref, params) { + const { + color, + rect, + outlines: { + outline + }, + opacity + } = annotation; + if (!color) { + return null; + } + const appearanceBuffer = [`${getPdfColor(color, true)}`, "/R0 gs"]; + appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} m`); + for (let i = 6, ii = outline.length; i < ii; i += 6) { + if (isNaN(outline[i])) { + appearanceBuffer.push(`${numberToString(outline[i + 4])} ${numberToString(outline[i + 5])} l`); + } else { + const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6); + appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(" ") + " c"); + } + } + appearanceBuffer.push("h f"); + const appearance = appearanceBuffer.join("\n"); + const appearanceStreamDict = new Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.setIfName("Subtype", "Form"); + appearanceStreamDict.setIfName("Type", "XObject"); + appearanceStreamDict.set("BBox", rect); + appearanceStreamDict.set("Length", appearance.length); + const resources = new Dict(xref); + const extGState = new Dict(xref); + resources.set("ExtGState", extGState); + appearanceStreamDict.set("Resources", resources); + const r0 = new Dict(xref); + extGState.set("R0", r0); + r0.setIfName("BM", "Multiply"); + if (opacity !== 1) { + r0.set("ca", opacity); + r0.setIfName("Type", "ExtGState"); + } + const ap = new StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } +} +class HighlightAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.isEditable = !this.data.noHTML; + this.data.noHTML = false; + this.data.opacity = dict.get("CA") || 1; + const quadPoints = this.data.quadPoints = getQuadPoints(dict, null); + if (quadPoints) { + const resources = this.appearance?.dict.get("Resources"); + if (!this.appearance || !resources?.has("ExtGState")) { + if (this.appearance) { + warn("HighlightAnnotation - ignoring built-in appearance stream."); + } + const fillColor = getPdfColorArray(this.color, [1, 1, 0]); + const fillAlpha = dict.get("CA"); + this._setDefaultAppearance({ + xref, + fillColor, + blendMode: "Multiply", + fillAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${points[0]} ${points[1]} m`, `${points[2]} ${points[3]} l`, `${points[6]} ${points[7]} l`, `${points[4]} ${points[5]} l`, "f"); + return [points[0], points[7], points[2], points[3]]; + } + }); + } + } else { + this.data.popupRef = null; + } + } + get overlaysTextContent() { + return true; + } + static createNewDict(annotation, xref, { + apRef, + ap + }) { + const { + color, + date, + oldAnnotation, + opacity, + rect, + rotation, + user, + quadPoints + } = annotation; + const highlight = oldAnnotation || new Dict(xref); + highlight.setIfNotExists("Type", Name.get("Annot")); + highlight.setIfNotExists("Subtype", Name.get("Highlight")); + highlight.set(oldAnnotation ? "M" : "CreationDate", `D:${getModificationDate(date)}`); + highlight.setIfArray("Rect", rect); + highlight.setIfNotExists("F", 4); + highlight.setIfNotExists("Border", [0, 0, 0]); + highlight.setIfNumber("Rotate", rotation); + highlight.setIfArray("QuadPoints", quadPoints); + highlight.setIfArray("C", getPdfColorArray(color)); + highlight.setIfNumber("CA", opacity); + highlight.setIfDefined("T", stringToAsciiOrUTF16BE(user)); + if (apRef || ap) { + const n = new Dict(xref); + highlight.set("AP", n); + n.set("N", apRef || ap); + } + return highlight; + } + static async createNewAppearanceStream(annotation, xref, params) { + const { + color, + rect, + outlines, + opacity + } = annotation; + if (!color) { + return null; + } + const appearanceBuffer = [`${getPdfColor(color, true)}`, "/R0 gs"]; + const buffer = []; + for (const outline of outlines) { + buffer.length = 0; + buffer.push(`${numberToString(outline[0])} ${numberToString(outline[1])} m`); + for (let i = 2, ii = outline.length; i < ii; i += 2) { + buffer.push(`${numberToString(outline[i])} ${numberToString(outline[i + 1])} l`); + } + buffer.push("h"); + appearanceBuffer.push(buffer.join("\n")); + } + appearanceBuffer.push("f*"); + const appearance = appearanceBuffer.join("\n"); + const appearanceStreamDict = new Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.setIfName("Subtype", "Form"); + appearanceStreamDict.setIfName("Type", "XObject"); + appearanceStreamDict.set("BBox", rect); + appearanceStreamDict.set("Length", appearance.length); + const resources = new Dict(xref); + const extGState = new Dict(xref); + resources.set("ExtGState", extGState); + appearanceStreamDict.set("Resources", resources); + const r0 = new Dict(xref); + extGState.set("R0", r0); + r0.setIfName("BM", "Multiply"); + if (opacity !== 1) { + r0.set("ca", opacity); + r0.setIfName("Type", "ExtGState"); + } + const ap = new StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } +} +class UnderlineAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + const quadPoints = this.data.quadPoints = getQuadPoints(dict, null); + if (quadPoints) { + if (!this.appearance) { + const strokeColor = getPdfColorArray(this.color, [0, 0, 0]); + const strokeAlpha = dict.get("CA"); + this._setDefaultAppearance({ + xref, + extra: "[] 0 d 0.571 w", + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${points[4]} ${points[5] + 1.3} m`, `${points[6]} ${points[7] + 1.3} l`, "S"); + return [points[0], points[7], points[2], points[3]]; + } + }); + } + } else { + this.data.popupRef = null; + } + } + get overlaysTextContent() { + return true; + } +} +class SquigglyAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + const quadPoints = this.data.quadPoints = getQuadPoints(dict, null); + if (quadPoints) { + if (!this.appearance) { + const strokeColor = getPdfColorArray(this.color, [0, 0, 0]); + const strokeAlpha = dict.get("CA"); + this._setDefaultAppearance({ + xref, + extra: "[] 0 d 1 w", + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + const dy = (points[1] - points[5]) / 6; + let shift = dy; + let x = points[4]; + const y = points[5]; + const xEnd = points[6]; + buffer.push(`${x} ${y + shift} m`); + do { + x += 2; + shift = shift === 0 ? dy : 0; + buffer.push(`${x} ${y + shift} l`); + } while (x < xEnd); + buffer.push("S"); + return [points[4], y - 2 * dy, xEnd, y + 2 * dy]; + } + }); + } + } else { + this.data.popupRef = null; + } + } + get overlaysTextContent() { + return true; + } +} +class StrikeOutAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + const quadPoints = this.data.quadPoints = getQuadPoints(dict, null); + if (quadPoints) { + if (!this.appearance) { + const strokeColor = getPdfColorArray(this.color, [0, 0, 0]); + const strokeAlpha = dict.get("CA"); + this._setDefaultAppearance({ + xref, + extra: "[] 0 d 1 w", + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${(points[0] + points[4]) / 2} ` + `${(points[1] + points[5]) / 2} m`, `${(points[2] + points[6]) / 2} ` + `${(points[3] + points[7]) / 2} l`, "S"); + return [points[0], points[7], points[2], points[3]]; + } + }); + } + } else { + this.data.popupRef = null; + } + } + get overlaysTextContent() { + return true; + } +} +class StampAnnotation extends MarkupAnnotation { + #savedHasOwnCanvas = null; + constructor(params) { + super(params); + this.data.hasOwnCanvas = this.data.noRotate; + this.data.isEditable = !this.data.noHTML; + this.data.noHTML = false; + } + mustBeViewedWhenEditing(isEditing, modifiedIds = null) { + if (isEditing) { + if (!this.data.isEditable) { + return true; + } + this.#savedHasOwnCanvas ??= this.data.hasOwnCanvas; + this.data.hasOwnCanvas = true; + return true; + } + if (this.#savedHasOwnCanvas !== null) { + this.data.hasOwnCanvas = this.#savedHasOwnCanvas; + this.#savedHasOwnCanvas = null; + } + return !modifiedIds?.has(this.data.id); + } + static async createImage(bitmap, xref) { + const { + width, + height + } = bitmap; + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d", { + alpha: true + }); + ctx.drawImage(bitmap, 0, 0); + const data = ctx.getImageData(0, 0, width, height).data; + const buf32 = new Uint32Array(data.buffer); + const hasAlpha = buf32.some(FeatureTest.isLittleEndian ? x => x >>> 24 !== 0xff : x => (x & 0xff) !== 0xff); + if (hasAlpha) { + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, width, height); + ctx.drawImage(bitmap, 0, 0); + } + const jpegBytesPromise = canvas.convertToBlob({ + type: "image/jpeg", + quality: 1 + }).then(blob => blob.bytes()); + const xobjectName = Name.get("XObject"); + const imageName = Name.get("Image"); + const image = new Dict(xref); + image.set("Type", xobjectName); + image.set("Subtype", imageName); + image.set("BitsPerComponent", 8); + image.setIfName("ColorSpace", "DeviceRGB"); + image.setIfName("Filter", "DCTDecode"); + image.set("BBox", [0, 0, width, height]); + image.set("Width", width); + image.set("Height", height); + let smaskStream = null; + if (hasAlpha) { + const alphaBuffer = new Uint8Array(buf32.length); + if (FeatureTest.isLittleEndian) { + for (let i = 0, ii = buf32.length; i < ii; i++) { + alphaBuffer[i] = buf32[i] >>> 24; + } + } else { + for (let i = 0, ii = buf32.length; i < ii; i++) { + alphaBuffer[i] = buf32[i] & 0xff; + } + } + const smask = new Dict(xref); + smask.set("Type", xobjectName); + smask.set("Subtype", imageName); + smask.set("BitsPerComponent", 8); + smask.setIfName("ColorSpace", "DeviceGray"); + smask.set("Width", width); + smask.set("Height", height); + smaskStream = new Stream(alphaBuffer, 0, 0, smask); + } + const imageStream = new Stream(await jpegBytesPromise, 0, 0, image); + return { + imageStream, + smaskStream, + width, + height + }; + } + static createNewDict(annotation, xref, { + apRef, + ap + }) { + const { + date, + oldAnnotation, + rect, + rotation, + user + } = annotation; + const stamp = oldAnnotation || new Dict(xref); + stamp.setIfNotExists("Type", Name.get("Annot")); + stamp.setIfNotExists("Subtype", Name.get("Stamp")); + stamp.set(oldAnnotation ? "M" : "CreationDate", `D:${getModificationDate(date)}`); + stamp.setIfArray("Rect", rect); + stamp.setIfNotExists("F", 4); + stamp.setIfNotExists("Border", [0, 0, 0]); + stamp.setIfNumber("Rotate", rotation); + stamp.setIfDefined("T", stringToAsciiOrUTF16BE(user)); + if (apRef || ap) { + const n = new Dict(xref); + stamp.set("AP", n); + n.set("N", apRef || ap); + } + return stamp; + } + static async #createNewAppearanceStreamForDrawing(annotation, xref) { + const { + areContours, + color, + rect, + lines, + thickness + } = annotation; + if (!color) { + return null; + } + const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${getPdfColor(color, areContours)}`]; + for (const line of lines) { + appearanceBuffer.push(`${numberToString(line[4])} ${numberToString(line[5])} m`); + for (let i = 6, ii = line.length; i < ii; i += 6) { + if (isNaN(line[i])) { + appearanceBuffer.push(`${numberToString(line[i + 4])} ${numberToString(line[i + 5])} l`); + } else { + const [c1x, c1y, c2x, c2y, x, y] = line.slice(i, i + 6); + appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(" ") + " c"); + } + } + if (line.length === 6) { + appearanceBuffer.push(`${numberToString(line[4])} ${numberToString(line[5])} l`); + } + } + appearanceBuffer.push(areContours ? "F" : "S"); + const appearance = appearanceBuffer.join("\n"); + const appearanceStreamDict = new Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.setIfName("Subtype", "Form"); + appearanceStreamDict.setIfName("Type", "XObject"); + appearanceStreamDict.set("BBox", rect); + appearanceStreamDict.set("Length", appearance.length); + const ap = new StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } + static async createNewAppearanceStream(annotation, xref, params) { + if (annotation.oldAnnotation) { + return null; + } + if (annotation.isSignature) { + return this.#createNewAppearanceStreamForDrawing(annotation, xref); + } + const { + rotation + } = annotation; + const { + imageRef, + width, + height + } = params.image; + const resources = new Dict(xref); + const xobject = new Dict(xref); + resources.set("XObject", xobject); + xobject.set("Im0", imageRef); + const appearance = `q ${width} 0 0 ${height} 0 0 cm /Im0 Do Q`; + const appearanceStreamDict = new Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.setIfName("Subtype", "Form"); + appearanceStreamDict.setIfName("Type", "XObject"); + appearanceStreamDict.set("BBox", [0, 0, width, height]); + appearanceStreamDict.set("Resources", resources); + if (rotation) { + const matrix = getRotationMatrix(rotation, width, height); + appearanceStreamDict.set("Matrix", matrix); + } + const ap = new StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } +} +class FileAttachmentAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict + } = params; + const file = new FileSpec(dict.get("FS")); + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = false; + this.data.file = file.serializable; + const name = dict.get("Name"); + this.data.name = name instanceof Name ? stringToPDFString(name.name) : "PushPin"; + const fillAlpha = dict.get("ca"); + this.data.fillAlpha = typeof fillAlpha === "number" && fillAlpha >= 0 && fillAlpha <= 1 ? fillAlpha : null; + } +} + +;// ./src/core/calculate_md5.js + +const PARAMS = { + get r() { + return shadow(this, "r", new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21])); + }, + get k() { + return shadow(this, "k", new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551])); + } +}; +function calculateMD5(data, offset, length) { + let h0 = 1732584193, + h1 = -271733879, + h2 = -1732584194, + h3 = 271733878; + const paddedLength = length + 72 & ~63; + const padded = new Uint8Array(paddedLength); + let i, j; + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + padded[i++] = 0x80; + const n = paddedLength - 8; + if (i < n) { + i = n; + } + padded[i++] = length << 3 & 0xff; + padded[i++] = length >> 5 & 0xff; + padded[i++] = length >> 13 & 0xff; + padded[i++] = length >> 21 & 0xff; + padded[i++] = length >>> 29 & 0xff; + i += 3; + const w = new Int32Array(16); + const { + k, + r + } = PARAMS; + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j, i += 4) { + w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24; + } + let a = h0, + b = h1, + c = h2, + d = h3, + f, + g; + for (j = 0; j < 64; ++j) { + if (j < 16) { + f = b & c | ~b & d; + g = j; + } else if (j < 32) { + f = d & b | ~d & c; + g = 5 * j + 1 & 15; + } else if (j < 48) { + f = b ^ c ^ d; + g = 3 * j + 5 & 15; + } else { + f = c ^ (b | ~d); + g = 7 * j & 15; + } + const tmp = d, + rotateArg = a + f + k[j] + w[g] | 0, + rotate = r[j]; + d = c; + c = b; + b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0; + a = tmp; + } + h0 = h0 + a | 0; + h1 = h1 + b | 0; + h2 = h2 + c | 0; + h3 = h3 + d | 0; + } + return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]); +} + +;// ./src/core/dataset_reader.js + + + +function decodeString(str) { + try { + return stringToUTF8String(str); + } catch (ex) { + warn(`UTF-8 decoding failed: "${ex}".`); + return str; + } +} +class DatasetXMLParser extends SimpleXMLParser { + node = null; + onEndElement(name) { + const node = super.onEndElement(name); + if (node && name === "xfa:datasets") { + this.node = node; + throw new Error("Aborting DatasetXMLParser."); + } + } +} +class DatasetReader { + constructor(data) { + if (data.datasets) { + this.node = new SimpleXMLParser({ + hasAttributes: true + }).parseFromString(data.datasets).documentElement; + } else { + const parser = new DatasetXMLParser({ + hasAttributes: true + }); + try { + parser.parseFromString(data["xdp:xdp"]); + } catch {} + this.node = parser.node; + } + } + getValue(path) { + if (!this.node || !path) { + return ""; + } + const node = this.node.searchNode(parseXFAPath(path), 0); + if (!node) { + return ""; + } + const first = node.firstChild; + if (first?.nodeName === "value") { + return node.children.map(child => decodeString(child.textContent)); + } + return decodeString(node.textContent); + } +} + +;// ./src/core/intersector.js +class SingleIntersector { + #annotation; + minX = Infinity; + minY = Infinity; + maxX = -Infinity; + maxY = -Infinity; + #quadPoints = null; + #text = []; + #extraChars = []; + #lastIntersectingQuadIndex = -1; + #canTakeExtraChars = false; + constructor(annotation) { + this.#annotation = annotation; + const quadPoints = annotation.data.quadPoints; + if (!quadPoints) { + [this.minX, this.minY, this.maxX, this.maxY] = annotation.data.rect; + return; + } + for (let i = 0, ii = quadPoints.length; i < ii; i += 8) { + this.minX = Math.min(this.minX, quadPoints[i]); + this.maxX = Math.max(this.maxX, quadPoints[i + 2]); + this.minY = Math.min(this.minY, quadPoints[i + 5]); + this.maxY = Math.max(this.maxY, quadPoints[i + 1]); + } + if (quadPoints.length > 8) { + this.#quadPoints = quadPoints; + } + } + #intersects(x, y) { + if (this.minX >= x || this.maxX <= x || this.minY >= y || this.maxY <= y) { + return false; + } + const quadPoints = this.#quadPoints; + if (!quadPoints) { + return true; + } + if (this.#lastIntersectingQuadIndex >= 0) { + const i = this.#lastIntersectingQuadIndex; + if (!(quadPoints[i] >= x || quadPoints[i + 2] <= x || quadPoints[i + 5] >= y || quadPoints[i + 1] <= y)) { + return true; + } + this.#lastIntersectingQuadIndex = -1; + } + for (let i = 0, ii = quadPoints.length; i < ii; i += 8) { + if (!(quadPoints[i] >= x || quadPoints[i + 2] <= x || quadPoints[i + 5] >= y || quadPoints[i + 1] <= y)) { + this.#lastIntersectingQuadIndex = i; + return true; + } + } + return false; + } + addGlyph(x, y, glyph) { + if (!this.#intersects(x, y)) { + this.disableExtraChars(); + return false; + } + if (this.#extraChars.length > 0) { + this.#text.push(this.#extraChars.join("")); + this.#extraChars.length = 0; + } + this.#text.push(glyph); + this.#canTakeExtraChars = true; + return true; + } + addExtraChar(char) { + if (this.#canTakeExtraChars) { + this.#extraChars.push(char); + } + } + disableExtraChars() { + if (!this.#canTakeExtraChars) { + return; + } + this.#canTakeExtraChars = false; + this.#extraChars.length = 0; + } + setText() { + this.#annotation.data.overlaidText = this.#text.join(""); + } +} +const STEPS = 64; +class Intersector { + #intersectors = []; + #grid = []; + #minX; + #maxX; + #minY; + #maxY; + #invXRatio; + #invYRatio; + constructor(annotations) { + let minX = Infinity; + let minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + const intersectors = this.#intersectors; + for (const annotation of annotations) { + if (!annotation.data.quadPoints && !annotation.data.rect) { + continue; + } + const intersector = new SingleIntersector(annotation); + intersectors.push(intersector); + minX = Math.min(minX, intersector.minX); + minY = Math.min(minY, intersector.minY); + maxX = Math.max(maxX, intersector.maxX); + maxY = Math.max(maxY, intersector.maxY); + } + this.#minX = minX; + this.#minY = minY; + this.#maxX = maxX; + this.#maxY = maxY; + this.#invXRatio = (STEPS - 1) / (maxX - minX); + this.#invYRatio = (STEPS - 1) / (maxY - minY); + for (const intersector of intersectors) { + const iMin = this.#getGridIndex(intersector.minX, intersector.minY); + const iMax = this.#getGridIndex(intersector.maxX, intersector.maxY); + const w = (iMax - iMin) % STEPS; + const h = Math.floor((iMax - iMin) / STEPS); + for (let i = iMin; i <= iMin + h * STEPS; i += STEPS) { + for (let j = 0; j <= w; j++) { + let existing = this.#grid[i + j]; + if (!existing) { + this.#grid[i + j] = existing = []; + } + existing.push(intersector); + } + } + } + } + #getGridIndex(x, y) { + const i = Math.floor((x - this.#minX) * this.#invXRatio); + const j = Math.floor((y - this.#minY) * this.#invYRatio); + return i + j * STEPS; + } + addGlyph(transform, width, height, glyph) { + const x = transform[4] + width / 2; + const y = transform[5] + height / 2; + if (x < this.#minX || y < this.#minY || x > this.#maxX || y > this.#maxY) { + return; + } + const intersectors = this.#grid[this.#getGridIndex(x, y)]; + if (!intersectors) { + return; + } + for (const intersector of intersectors) { + intersector.addGlyph(x, y, glyph); + } + } + addExtraChar(char) { + for (const intersector of this.#intersectors) { + intersector.addExtraChar(char); + } + } + setText() { + for (const intersector of this.#intersectors) { + intersector.setText(); + } + } +} + +;// ./src/core/calculate_sha_other.js + +class Word64 { + constructor(highInteger, lowInteger) { + this.high = highInteger | 0; + this.low = lowInteger | 0; + } + and(word) { + this.high &= word.high; + this.low &= word.low; + } + xor(word) { + this.high ^= word.high; + this.low ^= word.low; + } + shiftRight(places) { + if (places >= 32) { + this.low = this.high >>> places - 32 | 0; + this.high = 0; + } else { + this.low = this.low >>> places | this.high << 32 - places; + this.high = this.high >>> places | 0; + } + } + rotateRight(places) { + let low, high; + if (places & 32) { + high = this.low; + low = this.high; + } else { + low = this.low; + high = this.high; + } + places &= 31; + this.low = low >>> places | high << 32 - places; + this.high = high >>> places | low << 32 - places; + } + not() { + this.high = ~this.high; + this.low = ~this.low; + } + add(word) { + const lowAdd = (this.low >>> 0) + (word.low >>> 0); + let highAdd = (this.high >>> 0) + (word.high >>> 0); + if (lowAdd > 0xffffffff) { + highAdd += 1; + } + this.low = lowAdd | 0; + this.high = highAdd | 0; + } + copyTo(bytes, offset) { + bytes[offset] = this.high >>> 24 & 0xff; + bytes[offset + 1] = this.high >> 16 & 0xff; + bytes[offset + 2] = this.high >> 8 & 0xff; + bytes[offset + 3] = this.high & 0xff; + bytes[offset + 4] = this.low >>> 24 & 0xff; + bytes[offset + 5] = this.low >> 16 & 0xff; + bytes[offset + 6] = this.low >> 8 & 0xff; + bytes[offset + 7] = this.low & 0xff; + } + assign(word) { + this.high = word.high; + this.low = word.low; + } +} +const calculate_sha_other_PARAMS = { + get k() { + return shadow(this, "k", [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]); + } +}; +function ch(result, x, y, z, tmp) { + result.assign(x); + result.and(y); + tmp.assign(x); + tmp.not(); + tmp.and(z); + result.xor(tmp); +} +function maj(result, x, y, z, tmp) { + result.assign(x); + result.and(y); + tmp.assign(x); + tmp.and(z); + result.xor(tmp); + tmp.assign(y); + tmp.and(z); + result.xor(tmp); +} +function sigma(result, x, tmp) { + result.assign(x); + result.rotateRight(28); + tmp.assign(x); + tmp.rotateRight(34); + result.xor(tmp); + tmp.assign(x); + tmp.rotateRight(39); + result.xor(tmp); +} +function sigmaPrime(result, x, tmp) { + result.assign(x); + result.rotateRight(14); + tmp.assign(x); + tmp.rotateRight(18); + result.xor(tmp); + tmp.assign(x); + tmp.rotateRight(41); + result.xor(tmp); +} +function littleSigma(result, x, tmp) { + result.assign(x); + result.rotateRight(1); + tmp.assign(x); + tmp.rotateRight(8); + result.xor(tmp); + tmp.assign(x); + tmp.shiftRight(7); + result.xor(tmp); +} +function littleSigmaPrime(result, x, tmp) { + result.assign(x); + result.rotateRight(19); + tmp.assign(x); + tmp.rotateRight(61); + result.xor(tmp); + tmp.assign(x); + tmp.shiftRight(6); + result.xor(tmp); +} +function calculateSHA512(data, offset, length, mode384 = false) { + let h0, h1, h2, h3, h4, h5, h6, h7; + if (!mode384) { + h0 = new Word64(0x6a09e667, 0xf3bcc908); + h1 = new Word64(0xbb67ae85, 0x84caa73b); + h2 = new Word64(0x3c6ef372, 0xfe94f82b); + h3 = new Word64(0xa54ff53a, 0x5f1d36f1); + h4 = new Word64(0x510e527f, 0xade682d1); + h5 = new Word64(0x9b05688c, 0x2b3e6c1f); + h6 = new Word64(0x1f83d9ab, 0xfb41bd6b); + h7 = new Word64(0x5be0cd19, 0x137e2179); + } else { + h0 = new Word64(0xcbbb9d5d, 0xc1059ed8); + h1 = new Word64(0x629a292a, 0x367cd507); + h2 = new Word64(0x9159015a, 0x3070dd17); + h3 = new Word64(0x152fecd8, 0xf70e5939); + h4 = new Word64(0x67332667, 0xffc00b31); + h5 = new Word64(0x8eb44a87, 0x68581511); + h6 = new Word64(0xdb0c2e0d, 0x64f98fa7); + h7 = new Word64(0x47b5481d, 0xbefa4fa4); + } + const paddedLength = Math.ceil((length + 17) / 128) * 128; + const padded = new Uint8Array(paddedLength); + let i, j; + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + padded[i++] = 0x80; + const n = paddedLength - 16; + if (i < n) { + i = n; + } + i += 11; + padded[i++] = length >>> 29 & 0xff; + padded[i++] = length >> 21 & 0xff; + padded[i++] = length >> 13 & 0xff; + padded[i++] = length >> 5 & 0xff; + padded[i++] = length << 3 & 0xff; + const w = new Array(80); + for (i = 0; i < 80; i++) { + w[i] = new Word64(0, 0); + } + const { + k + } = calculate_sha_other_PARAMS; + let a = new Word64(0, 0), + b = new Word64(0, 0), + c = new Word64(0, 0); + let d = new Word64(0, 0), + e = new Word64(0, 0), + f = new Word64(0, 0); + let g = new Word64(0, 0), + h = new Word64(0, 0); + const t1 = new Word64(0, 0), + t2 = new Word64(0, 0); + const tmp1 = new Word64(0, 0), + tmp2 = new Word64(0, 0); + let tmp3; + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j) { + w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; + w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7]; + i += 8; + } + for (j = 16; j < 80; ++j) { + tmp3 = w[j]; + littleSigmaPrime(tmp3, w[j - 2], tmp2); + tmp3.add(w[j - 7]); + littleSigma(tmp1, w[j - 15], tmp2); + tmp3.add(tmp1); + tmp3.add(w[j - 16]); + } + a.assign(h0); + b.assign(h1); + c.assign(h2); + d.assign(h3); + e.assign(h4); + f.assign(h5); + g.assign(h6); + h.assign(h7); + for (j = 0; j < 80; ++j) { + t1.assign(h); + sigmaPrime(tmp1, e, tmp2); + t1.add(tmp1); + ch(tmp1, e, f, g, tmp2); + t1.add(tmp1); + t1.add(k[j]); + t1.add(w[j]); + sigma(t2, a, tmp2); + maj(tmp1, a, b, c, tmp2); + t2.add(tmp1); + tmp3 = h; + h = g; + g = f; + f = e; + d.add(t1); + e = d; + d = c; + c = b; + b = a; + tmp3.assign(t1); + tmp3.add(t2); + a = tmp3; + } + h0.add(a); + h1.add(b); + h2.add(c); + h3.add(d); + h4.add(e); + h5.add(f); + h6.add(g); + h7.add(h); + } + let result; + if (!mode384) { + result = new Uint8Array(64); + h0.copyTo(result, 0); + h1.copyTo(result, 8); + h2.copyTo(result, 16); + h3.copyTo(result, 24); + h4.copyTo(result, 32); + h5.copyTo(result, 40); + h6.copyTo(result, 48); + h7.copyTo(result, 56); + } else { + result = new Uint8Array(48); + h0.copyTo(result, 0); + h1.copyTo(result, 8); + h2.copyTo(result, 16); + h3.copyTo(result, 24); + h4.copyTo(result, 32); + h5.copyTo(result, 40); + } + return result; +} +function calculateSHA384(data, offset, length) { + return calculateSHA512(data, offset, length, true); +} + +;// ./src/core/calculate_sha256.js + +const calculate_sha256_PARAMS = { + get k() { + return shadow(this, "k", [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]); + } +}; +function rotr(x, n) { + return x >>> n | x << 32 - n; +} +function calculate_sha256_ch(x, y, z) { + return x & y ^ ~x & z; +} +function calculate_sha256_maj(x, y, z) { + return x & y ^ x & z ^ y & z; +} +function calculate_sha256_sigma(x) { + return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22); +} +function calculate_sha256_sigmaPrime(x) { + return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25); +} +function calculate_sha256_littleSigma(x) { + return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3; +} +function calculate_sha256_littleSigmaPrime(x) { + return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10; +} +function calculateSHA256(data, offset, length) { + let h0 = 0x6a09e667, + h1 = 0xbb67ae85, + h2 = 0x3c6ef372, + h3 = 0xa54ff53a, + h4 = 0x510e527f, + h5 = 0x9b05688c, + h6 = 0x1f83d9ab, + h7 = 0x5be0cd19; + const paddedLength = Math.ceil((length + 9) / 64) * 64; + const padded = new Uint8Array(paddedLength); + let i, j; + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + padded[i++] = 0x80; + const n = paddedLength - 8; + if (i < n) { + i = n; + } + i += 3; + padded[i++] = length >>> 29 & 0xff; + padded[i++] = length >> 21 & 0xff; + padded[i++] = length >> 13 & 0xff; + padded[i++] = length >> 5 & 0xff; + padded[i++] = length << 3 & 0xff; + const w = new Uint32Array(64); + const { + k + } = calculate_sha256_PARAMS; + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j) { + w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; + i += 4; + } + for (j = 16; j < 64; ++j) { + w[j] = calculate_sha256_littleSigmaPrime(w[j - 2]) + w[j - 7] + calculate_sha256_littleSigma(w[j - 15]) + w[j - 16] | 0; + } + let a = h0, + b = h1, + c = h2, + d = h3, + e = h4, + f = h5, + g = h6, + h = h7, + t1, + t2; + for (j = 0; j < 64; ++j) { + t1 = h + calculate_sha256_sigmaPrime(e) + calculate_sha256_ch(e, f, g) + k[j] + w[j]; + t2 = calculate_sha256_sigma(a) + calculate_sha256_maj(a, b, c); + h = g; + g = f; + f = e; + e = d + t1 | 0; + d = c; + c = b; + b = a; + a = t1 + t2 | 0; + } + h0 = h0 + a | 0; + h1 = h1 + b | 0; + h2 = h2 + c | 0; + h3 = h3 + d | 0; + h4 = h4 + e | 0; + h5 = h5 + f | 0; + h6 = h6 + g | 0; + h7 = h7 + h | 0; + } + return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]); +} + +;// ./src/core/decrypt_stream.js + +const chunkSize = 512; +class DecryptStream extends DecodeStream { + constructor(str, maybeLength, decrypt) { + super(maybeLength); + this.stream = str; + this.dict = str.dict; + this.decrypt = decrypt; + this.nextChunk = null; + this.initialized = false; + } + readBlock() { + let chunk; + if (this.initialized) { + chunk = this.nextChunk; + } else { + chunk = this.stream.getBytes(chunkSize); + this.initialized = true; + } + if (!chunk?.length) { + this.eof = true; + return; + } + this.nextChunk = this.stream.getBytes(chunkSize); + const hasMoreData = this.nextChunk?.length > 0; + const decrypt = this.decrypt; + chunk = decrypt(chunk, !hasMoreData); + const bufferLength = this.bufferLength, + newLength = bufferLength + chunk.length, + buffer = this.ensureBuffer(newLength); + buffer.set(chunk, bufferLength); + this.bufferLength = newLength; + } + getOriginalStream() { + return this; + } +} + +;// ./src/core/crypto.js + + + + + + +class ARCFourCipher { + a = 0; + b = 0; + constructor(key) { + const s = new Uint8Array(256); + const keyLength = key.length; + for (let i = 0; i < 256; ++i) { + s[i] = i; + } + for (let i = 0, j = 0; i < 256; ++i) { + const tmp = s[i]; + j = j + tmp + key[i % keyLength] & 0xff; + s[i] = s[j]; + s[j] = tmp; + } + this.s = s; + } + encryptBlock(data) { + let a = this.a, + b = this.b; + const s = this.s; + const n = data.length; + const output = new Uint8Array(n); + for (let i = 0; i < n; ++i) { + a = a + 1 & 0xff; + const tmp = s[a]; + b = b + tmp & 0xff; + const tmp2 = s[b]; + s[a] = tmp2; + s[b] = tmp; + output[i] = data[i] ^ s[tmp + tmp2 & 0xff]; + } + this.a = a; + this.b = b; + return output; + } + decryptBlock(data) { + return this.encryptBlock(data); + } + encrypt(data) { + return this.encryptBlock(data); + } +} +class NullCipher { + decryptBlock(data) { + return data; + } + encrypt(data) { + return data; + } +} +class AESBaseCipher { + _s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]); + _inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]); + _mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); + _mixCol = new Uint8Array(256).map((_, i) => i < 128 ? i << 1 : i << 1 ^ 0x1b); + constructor() { + this.buffer = new Uint8Array(16); + this.bufferPosition = 0; + } + _expandKey(cipherKey) { + unreachable("Cannot call `_expandKey` on the base class"); + } + _decrypt(input, key) { + let t, u, v; + const state = new Uint8Array(16); + state.set(input); + for (let j = 0, k = this._keySize; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) { + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + for (let j = 0; j < 16; ++j) { + state[j] = this._inv_s[state[j]]; + } + for (let j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + for (let j = 0; j < 16; j += 4) { + const s0 = this._mix[state[j]]; + const s1 = this._mix[state[j + 1]]; + const s2 = this._mix[state[j + 2]]; + const s3 = this._mix[state[j + 3]]; + t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8; + state[j] = t >>> 24 & 0xff; + state[j + 1] = t >> 16 & 0xff; + state[j + 2] = t >> 8 & 0xff; + state[j + 3] = t & 0xff; + } + } + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + for (let j = 0; j < 16; ++j) { + state[j] = this._inv_s[state[j]]; + state[j] ^= key[j]; + } + return state; + } + _encrypt(input, key) { + const s = this._s; + let t, u, v; + const state = new Uint8Array(16); + state.set(input); + for (let j = 0; j < 16; ++j) { + state[j] ^= key[j]; + } + for (let i = 1; i < this._cyclesOfRepetition; i++) { + for (let j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + for (let j = 0; j < 16; j += 4) { + const s0 = state[j]; + const s1 = state[j + 1]; + const s2 = state[j + 2]; + const s3 = state[j + 3]; + t = s0 ^ s1 ^ s2 ^ s3; + state[j] ^= t ^ this._mixCol[s0 ^ s1]; + state[j + 1] ^= t ^ this._mixCol[s1 ^ s2]; + state[j + 2] ^= t ^ this._mixCol[s2 ^ s3]; + state[j + 3] ^= t ^ this._mixCol[s3 ^ s0]; + } + for (let j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + } + for (let j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + for (let j = 0, k = this._keySize; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + return state; + } + _decryptBlock2(data, finalize) { + const sourceLength = data.length; + let buffer = this.buffer, + bufferLength = this.bufferPosition; + const result = []; + let iv = this.iv; + for (let i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + if (bufferLength < 16) { + continue; + } + const plain = this._decrypt(buffer, this._key); + for (let j = 0; j < 16; ++j) { + plain[j] ^= iv[j]; + } + iv = buffer; + result.push(plain); + buffer = new Uint8Array(16); + bufferLength = 0; + } + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + if (result.length === 0) { + return new Uint8Array(0); + } + let outputLength = 16 * result.length; + if (finalize) { + const lastBlock = result.at(-1); + let psLen = lastBlock[15]; + if (psLen <= 16) { + for (let i = 15, ii = 16 - psLen; i >= ii; --i) { + if (lastBlock[i] !== psLen) { + psLen = 0; + break; + } + } + outputLength -= psLen; + result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); + } + } + const output = new Uint8Array(outputLength); + for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + return output; + } + decryptBlock(data, finalize, iv = null) { + const sourceLength = data.length; + const buffer = this.buffer; + let bufferLength = this.bufferPosition; + if (iv) { + this.iv = iv; + } else { + for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) { + buffer[bufferLength] = data[i]; + } + if (bufferLength < 16) { + this.bufferLength = bufferLength; + return new Uint8Array(0); + } + this.iv = buffer; + data = data.subarray(16); + } + this.buffer = new Uint8Array(16); + this.bufferLength = 0; + this.decryptBlock = this._decryptBlock2; + return this.decryptBlock(data, finalize); + } + encrypt(data, iv) { + const sourceLength = data.length; + let buffer = this.buffer, + bufferLength = this.bufferPosition; + const result = []; + iv ||= new Uint8Array(16); + for (let i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + if (bufferLength < 16) { + continue; + } + for (let j = 0; j < 16; ++j) { + buffer[j] ^= iv[j]; + } + const cipher = this._encrypt(buffer, this._key); + iv = cipher; + result.push(cipher); + buffer = new Uint8Array(16); + bufferLength = 0; + } + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + if (result.length === 0) { + return new Uint8Array(0); + } + const outputLength = 16 * result.length; + const output = new Uint8Array(outputLength); + for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + return output; + } +} +class AES128Cipher extends AESBaseCipher { + _rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]); + constructor(key) { + super(); + this._cyclesOfRepetition = 10; + this._keySize = 160; + this._key = this._expandKey(key); + } + _expandKey(cipherKey) { + const b = 176; + const s = this._s; + const rcon = this._rcon; + const result = new Uint8Array(b); + result.set(cipherKey); + for (let j = 16, i = 1; j < b; ++i) { + let t1 = result[j - 3]; + let t2 = result[j - 2]; + let t3 = result[j - 1]; + let t4 = result[j - 4]; + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + t1 ^= rcon[i]; + for (let n = 0; n < 4; ++n) { + result[j] = t1 ^= result[j - 16]; + j++; + result[j] = t2 ^= result[j - 16]; + j++; + result[j] = t3 ^= result[j - 16]; + j++; + result[j] = t4 ^= result[j - 16]; + j++; + } + } + return result; + } +} +class AES256Cipher extends AESBaseCipher { + constructor(key) { + super(); + this._cyclesOfRepetition = 14; + this._keySize = 224; + this._key = this._expandKey(key); + } + _expandKey(cipherKey) { + const b = 240; + const s = this._s; + const result = new Uint8Array(b); + result.set(cipherKey); + let r = 1; + let t1, t2, t3, t4; + for (let j = 32, i = 1; j < b; ++i) { + if (j % 32 === 16) { + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + } else if (j % 32 === 0) { + t1 = result[j - 3]; + t2 = result[j - 2]; + t3 = result[j - 1]; + t4 = result[j - 4]; + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + t1 ^= r; + if ((r <<= 1) >= 256) { + r = (r ^ 0x1b) & 0xff; + } + } + for (let n = 0; n < 4; ++n) { + result[j] = t1 ^= result[j - 32]; + j++; + result[j] = t2 ^= result[j - 32]; + j++; + result[j] = t3 ^= result[j - 32]; + j++; + result[j] = t4 ^= result[j - 32]; + j++; + } + } + return result; + } +} +class PDFBase { + _hash(password, input, userBytes) { + unreachable("Abstract method `_hash` called"); + } + checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerValidationSalt, password.length); + hashData.set(userBytes, password.length + ownerValidationSalt.length); + const result = this._hash(password, hashData, userBytes); + return isArrayEqual(result, ownerPassword); + } + checkUserPassword(password, userValidationSalt, userPassword) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userValidationSalt, password.length); + const result = this._hash(password, hashData, []); + return isArrayEqual(result, userPassword); + } + getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerKeySalt, password.length); + hashData.set(userBytes, password.length + ownerKeySalt.length); + const key = this._hash(password, hashData, userBytes); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); + } + getUserKey(password, userKeySalt, userEncryption) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userKeySalt, password.length); + const key = this._hash(password, hashData, []); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); + } +} +class PDF17 extends PDFBase { + _hash(password, input, userBytes) { + return calculateSHA256(input, 0, input.length); + } +} +class PDF20 extends PDFBase { + _hash(password, input, userBytes) { + let k = calculateSHA256(input, 0, input.length).subarray(0, 32); + let e = [0]; + let i = 0; + while (i < 64 || e.at(-1) > i - 32) { + const combinedLength = password.length + k.length + userBytes.length, + combinedArray = new Uint8Array(combinedLength); + let writeOffset = 0; + combinedArray.set(password, writeOffset); + writeOffset += password.length; + combinedArray.set(k, writeOffset); + writeOffset += k.length; + combinedArray.set(userBytes, writeOffset); + const k1 = new Uint8Array(combinedLength * 64); + for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) { + k1.set(combinedArray, pos); + } + const cipher = new AES128Cipher(k.subarray(0, 16)); + e = cipher.encrypt(k1, k.subarray(16, 32)); + const remainder = Math.sumPrecise(e.slice(0, 16)) % 3; + if (remainder === 0) { + k = calculateSHA256(e, 0, e.length); + } else if (remainder === 1) { + k = calculateSHA384(e, 0, e.length); + } else if (remainder === 2) { + k = calculateSHA512(e, 0, e.length); + } + i++; + } + return k.subarray(0, 32); + } +} +class CipherTransform { + constructor(stringCipherConstructor, streamCipherConstructor) { + this.StringCipherConstructor = stringCipherConstructor; + this.StreamCipherConstructor = streamCipherConstructor; + } + createStream(stream, length) { + const cipher = new this.StreamCipherConstructor(); + return new DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) { + return cipher.decryptBlock(data, finalize); + }); + } + decryptString(s) { + const cipher = new this.StringCipherConstructor(); + let data = stringToBytes(s); + data = cipher.decryptBlock(data, true); + return bytesToString(data); + } + encryptString(s) { + const cipher = new this.StringCipherConstructor(); + if (cipher instanceof AESBaseCipher) { + const strLen = s.length; + const pad = 16 - strLen % 16; + s += String.fromCharCode(pad).repeat(pad); + const iv = new Uint8Array(16); + crypto.getRandomValues(iv); + let data = stringToBytes(s); + data = cipher.encrypt(data, iv); + const buf = new Uint8Array(16 + data.length); + buf.set(iv); + buf.set(data, 16); + return bytesToString(buf); + } + let data = stringToBytes(s); + data = cipher.encrypt(data); + return bytesToString(data); + } +} +class CipherTransformFactory { + static get _defaultPasswordBytes() { + return shadow(this, "_defaultPasswordBytes", new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a])); + } + #createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) { + if (password) { + const passwordLength = Math.min(127, password.length); + password = password.subarray(0, passwordLength); + } else { + password = []; + } + const pdfAlgorithm = revision === 6 ? new PDF20() : new PDF17(); + if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) { + return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption); + } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) { + return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption); + } + return null; + } + #prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) { + const hashDataSize = 40 + ownerPassword.length + fileId.length; + const hashData = new Uint8Array(hashDataSize); + let i = 0, + j, + n; + if (password) { + n = Math.min(32, password.length); + for (; i < n; ++i) { + hashData[i] = password[i]; + } + } + j = 0; + while (i < 32) { + hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++]; + } + hashData.set(ownerPassword, i); + i += ownerPassword.length; + hashData[i++] = flags & 0xff; + hashData[i++] = flags >> 8 & 0xff; + hashData[i++] = flags >> 16 & 0xff; + hashData[i++] = flags >>> 24 & 0xff; + hashData.set(fileId, i); + i += fileId.length; + if (revision >= 4 && !encryptMetadata) { + hashData.fill(0xff, i, i + 4); + i += 4; + } + let hash = calculateMD5(hashData, 0, i); + const keyLengthInBytes = keyLength >> 3; + if (revision >= 3) { + for (j = 0; j < 50; ++j) { + hash = calculateMD5(hash, 0, keyLengthInBytes); + } + } + const encryptionKey = hash.subarray(0, keyLengthInBytes); + let cipher, checkData; + if (revision >= 3) { + i = 0; + hashData.set(CipherTransformFactory._defaultPasswordBytes, i); + i += 32; + hashData.set(fileId, i); + i += fileId.length; + cipher = new ARCFourCipher(encryptionKey); + checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i)); + n = encryptionKey.length; + const derivedKey = new Uint8Array(n); + for (j = 1; j <= 19; ++j) { + for (let k = 0; k < n; ++k) { + derivedKey[k] = encryptionKey[k] ^ j; + } + cipher = new ARCFourCipher(derivedKey); + checkData = cipher.encryptBlock(checkData); + } + } else { + cipher = new ARCFourCipher(encryptionKey); + checkData = cipher.encryptBlock(CipherTransformFactory._defaultPasswordBytes); + } + return checkData.every((data, k) => userPassword[k] === data) ? encryptionKey : null; + } + #decodeUserPassword(password, ownerPassword, revision, keyLength) { + const hashData = new Uint8Array(32); + let i = 0; + const n = Math.min(32, password.length); + for (; i < n; ++i) { + hashData[i] = password[i]; + } + let j = 0; + while (i < 32) { + hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++]; + } + let hash = calculateMD5(hashData, 0, i); + const keyLengthInBytes = keyLength >> 3; + if (revision >= 3) { + for (j = 0; j < 50; ++j) { + hash = calculateMD5(hash, 0, hash.length); + } + } + let cipher, userPassword; + if (revision >= 3) { + userPassword = ownerPassword; + const derivedKey = new Uint8Array(keyLengthInBytes); + for (j = 19; j >= 0; j--) { + for (let k = 0; k < keyLengthInBytes; ++k) { + derivedKey[k] = hash[k] ^ j; + } + cipher = new ARCFourCipher(derivedKey); + userPassword = cipher.encryptBlock(userPassword); + } + } else { + cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes)); + userPassword = cipher.encryptBlock(ownerPassword); + } + return userPassword; + } + #buildObjectKey(num, gen, encryptionKey, isAes = false) { + const n = encryptionKey.length; + const key = new Uint8Array(n + 9); + key.set(encryptionKey); + let i = n; + key[i++] = num & 0xff; + key[i++] = num >> 8 & 0xff; + key[i++] = num >> 16 & 0xff; + key[i++] = gen & 0xff; + key[i++] = gen >> 8 & 0xff; + if (isAes) { + key[i++] = 0x73; + key[i++] = 0x41; + key[i++] = 0x6c; + key[i++] = 0x54; + } + const hash = calculateMD5(key, 0, i); + return hash.subarray(0, Math.min(n + 5, 16)); + } + #buildCipherConstructor(cf, name, num, gen, key) { + if (!(name instanceof Name)) { + throw new FormatError("Invalid crypt filter name."); + } + const self = this; + const cryptFilter = cf.get(name.name); + const cfm = cryptFilter?.get("CFM"); + if (!cfm || cfm.name === "None") { + return function () { + return new NullCipher(); + }; + } + if (cfm.name === "V2") { + return function () { + return new ARCFourCipher(self.#buildObjectKey(num, gen, key, false)); + }; + } + if (cfm.name === "AESV2") { + return function () { + return new AES128Cipher(self.#buildObjectKey(num, gen, key, true)); + }; + } + if (cfm.name === "AESV3") { + return function () { + return new AES256Cipher(key); + }; + } + throw new FormatError("Unknown crypto method"); + } + constructor(dict, fileId, password) { + const filter = dict.get("Filter"); + if (!isName(filter, "Standard")) { + throw new FormatError("unknown encryption method"); + } + this.filterName = filter.name; + this.dict = dict; + const algorithm = dict.get("V"); + if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) { + throw new FormatError("unsupported encryption algorithm"); + } + this.algorithm = algorithm; + let keyLength = dict.get("Length"); + if (!keyLength) { + if (algorithm <= 3) { + keyLength = 40; + } else { + const cfDict = dict.get("CF"); + const streamCryptoName = dict.get("StmF"); + if (cfDict instanceof Dict && streamCryptoName instanceof Name) { + cfDict.suppressEncryption = true; + const handlerDict = cfDict.get(streamCryptoName.name); + keyLength = handlerDict?.get("Length") || 128; + if (keyLength < 40) { + keyLength <<= 3; + } + } + } + } + if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) { + throw new FormatError("invalid key length"); + } + const ownerBytes = stringToBytes(dict.get("O")), + userBytes = stringToBytes(dict.get("U")); + const ownerPassword = ownerBytes.subarray(0, 32); + const userPassword = userBytes.subarray(0, 32); + const flags = dict.get("P"); + const revision = dict.get("R"); + const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get("EncryptMetadata") !== false; + this.encryptMetadata = encryptMetadata; + const fileIdBytes = stringToBytes(fileId); + let passwordBytes; + if (password) { + if (revision === 6) { + try { + password = utf8StringToString(password); + } catch { + warn("CipherTransformFactory: Unable to convert UTF8 encoded password."); + } + } + passwordBytes = stringToBytes(password); + } + let encryptionKey; + if (algorithm !== 5) { + encryptionKey = this.#prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); + } else { + const ownerValidationSalt = ownerBytes.subarray(32, 40); + const ownerKeySalt = ownerBytes.subarray(40, 48); + const uBytes = userBytes.subarray(0, 48); + const userValidationSalt = userBytes.subarray(32, 40); + const userKeySalt = userBytes.subarray(40, 48); + const ownerEncryption = stringToBytes(dict.get("OE")); + const userEncryption = stringToBytes(dict.get("UE")); + const perms = stringToBytes(dict.get("Perms")); + encryptionKey = this.#createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms); + } + if (!encryptionKey) { + if (!password) { + throw new PasswordException("No password given", PasswordResponses.NEED_PASSWORD); + } + const decodedPassword = this.#decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength); + encryptionKey = this.#prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); + } + if (!encryptionKey) { + throw new PasswordException("Incorrect Password", PasswordResponses.INCORRECT_PASSWORD); + } + if (algorithm === 4 && encryptionKey.length < 16) { + this.encryptionKey = new Uint8Array(16); + this.encryptionKey.set(encryptionKey); + } else { + this.encryptionKey = encryptionKey; + } + if (algorithm >= 4) { + const cf = dict.get("CF"); + if (cf instanceof Dict) { + cf.suppressEncryption = true; + } + this.cf = cf; + this.stmf = dict.get("StmF") || Name.get("Identity"); + this.strf = dict.get("StrF") || Name.get("Identity"); + this.eff = dict.get("EFF") || this.stmf; + } + } + createCipherTransform(num, gen) { + if (this.algorithm === 4 || this.algorithm === 5) { + return new CipherTransform(this.#buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey), this.#buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey)); + } + const key = this.#buildObjectKey(num, gen, this.encryptionKey, false); + const cipherConstructor = function () { + return new ARCFourCipher(key); + }; + return new CipherTransform(cipherConstructor, cipherConstructor); + } +} + +;// ./src/core/xref.js + + + + + + +class XRef { + constructor(stream, pdfManager) { + this.stream = stream; + this.pdfManager = pdfManager; + this.entries = []; + this._xrefStms = new Set(); + this._cacheMap = new Map(); + this._pendingRefs = new RefSet(); + this._newPersistentRefNum = null; + this._newTemporaryRefNum = null; + this._persistentRefsCache = null; + } + getNewPersistentRef(obj) { + if (this._newPersistentRefNum === null) { + this._newPersistentRefNum = this.entries.length || 1; + } + const num = this._newPersistentRefNum++; + this._cacheMap.set(num, obj); + return Ref.get(num, 0); + } + getNewTemporaryRef() { + if (this._newTemporaryRefNum === null) { + this._newTemporaryRefNum = this.entries.length || 1; + if (this._newPersistentRefNum) { + this._persistentRefsCache = new Map(); + for (let i = this._newTemporaryRefNum; i < this._newPersistentRefNum; i++) { + this._persistentRefsCache.set(i, this._cacheMap.get(i)); + this._cacheMap.delete(i); + } + } + } + return Ref.get(this._newTemporaryRefNum++, 0); + } + resetNewTemporaryRef() { + this._newTemporaryRefNum = null; + if (this._persistentRefsCache) { + for (const [num, obj] of this._persistentRefsCache) { + this._cacheMap.set(num, obj); + } + } + this._persistentRefsCache = null; + } + setStartXRef(startXRef) { + this.startXRefQueue = [startXRef]; + } + parse(recoveryMode = false) { + let trailerDict; + if (!recoveryMode) { + trailerDict = this.readXRef(); + } else { + warn("Indexing all PDF objects"); + trailerDict = this.indexObjects(); + } + trailerDict.assignXref(this); + this.trailer = trailerDict; + let encrypt; + try { + encrypt = trailerDict.get("Encrypt"); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn(`XRef.parse - Invalid "Encrypt" reference: "${ex}".`); + } + if (encrypt instanceof Dict) { + const ids = trailerDict.get("ID"); + const fileId = ids?.length ? ids[0] : ""; + encrypt.suppressEncryption = true; + this.encrypt = new CipherTransformFactory(encrypt, fileId, this.pdfManager.password); + } + let root; + try { + root = trailerDict.get("Root"); + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn(`XRef.parse - Invalid "Root" reference: "${ex}".`); + } + if (root instanceof Dict) { + try { + const pages = root.get("Pages"); + if (pages instanceof Dict) { + this.root = root; + return; + } + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn(`XRef.parse - Invalid "Pages" reference: "${ex}".`); + } + } + if (!recoveryMode) { + throw new XRefParseException(); + } + throw new InvalidPDFException("Invalid Root reference."); + } + processXRefTable(parser) { + if (!("tableState" in this)) { + this.tableState = { + entryNum: 0, + streamPos: parser.lexer.stream.pos, + parserBuf1: parser.buf1, + parserBuf2: parser.buf2 + }; + } + const obj = this.readXRefTable(parser); + if (!isCmd(obj, "trailer")) { + throw new FormatError("Invalid XRef table: could not find trailer dictionary"); + } + let dict = parser.getObj(); + if (!(dict instanceof Dict) && dict.dict) { + dict = dict.dict; + } + if (!(dict instanceof Dict)) { + throw new FormatError("Invalid XRef table: could not parse trailer dictionary"); + } + delete this.tableState; + return dict; + } + readXRefTable(parser) { + const stream = parser.lexer.stream; + const tableState = this.tableState; + stream.pos = tableState.streamPos; + parser.buf1 = tableState.parserBuf1; + parser.buf2 = tableState.parserBuf2; + let obj; + while (true) { + if (!("firstEntryNum" in tableState) || !("entryCount" in tableState)) { + if (isCmd(obj = parser.getObj(), "trailer")) { + break; + } + tableState.firstEntryNum = obj; + tableState.entryCount = parser.getObj(); + } + let first = tableState.firstEntryNum; + const count = tableState.entryCount; + if (!Number.isInteger(first) || !Number.isInteger(count)) { + throw new FormatError("Invalid XRef table: wrong types in subsection header"); + } + for (let i = tableState.entryNum; i < count; i++) { + tableState.streamPos = stream.pos; + tableState.entryNum = i; + tableState.parserBuf1 = parser.buf1; + tableState.parserBuf2 = parser.buf2; + const entry = {}; + entry.offset = parser.getObj(); + entry.gen = parser.getObj(); + const type = parser.getObj(); + if (type instanceof Cmd) { + switch (type.cmd) { + case "f": + entry.free = true; + break; + case "n": + entry.uncompressed = true; + break; + } + } + if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) { + throw new FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`); + } + if (i === 0 && entry.free && first === 1) { + first = 0; + } + if (!this.entries[i + first]) { + this.entries[i + first] = entry; + } + } + tableState.entryNum = 0; + tableState.streamPos = stream.pos; + tableState.parserBuf1 = parser.buf1; + tableState.parserBuf2 = parser.buf2; + delete tableState.firstEntryNum; + delete tableState.entryCount; + } + if (this.entries[0] && !this.entries[0].free) { + throw new FormatError("Invalid XRef table: unexpected first object"); + } + return obj; + } + processXRefStream(stream) { + if (!("streamState" in this)) { + const { + dict, + pos + } = stream; + const byteWidths = dict.get("W"); + const range = dict.get("Index") || [0, dict.get("Size")]; + this.streamState = { + entryRanges: range, + byteWidths, + entryNum: 0, + streamPos: pos + }; + } + this.readXRefStream(stream); + delete this.streamState; + return stream.dict; + } + readXRefStream(stream) { + const streamState = this.streamState; + stream.pos = streamState.streamPos; + const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] = streamState.byteWidths; + const entryRanges = streamState.entryRanges; + while (entryRanges.length > 0) { + const [first, n] = entryRanges; + if (!Number.isInteger(first) || !Number.isInteger(n)) { + throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`); + } + if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) { + throw new FormatError(`Invalid XRef entry fields length: ${first}, ${n}`); + } + for (let i = streamState.entryNum; i < n; ++i) { + streamState.entryNum = i; + streamState.streamPos = stream.pos; + let type = 0, + offset = 0, + generation = 0; + for (let j = 0; j < typeFieldWidth; ++j) { + const typeByte = stream.getByte(); + if (typeByte === -1) { + throw new FormatError("Invalid XRef byteWidths 'type'."); + } + type = type << 8 | typeByte; + } + if (typeFieldWidth === 0) { + type = 1; + } + for (let j = 0; j < offsetFieldWidth; ++j) { + const offsetByte = stream.getByte(); + if (offsetByte === -1) { + throw new FormatError("Invalid XRef byteWidths 'offset'."); + } + offset = offset << 8 | offsetByte; + } + for (let j = 0; j < generationFieldWidth; ++j) { + const generationByte = stream.getByte(); + if (generationByte === -1) { + throw new FormatError("Invalid XRef byteWidths 'generation'."); + } + generation = generation << 8 | generationByte; + } + const entry = {}; + entry.offset = offset; + entry.gen = generation; + switch (type) { + case 0: + entry.free = true; + break; + case 1: + entry.uncompressed = true; + break; + case 2: + break; + default: + throw new FormatError(`Invalid XRef entry type: ${type}`); + } + if (!this.entries[first + i]) { + this.entries[first + i] = entry; + } + } + streamState.entryNum = 0; + streamState.streamPos = stream.pos; + entryRanges.splice(0, 2); + } + } + indexObjects() { + const TAB = 0x9, + LF = 0xa, + CR = 0xd, + SPACE = 0x20; + const PERCENT = 0x25, + LT = 0x3c; + function readToken(data, offset) { + let token = "", + ch = data[offset]; + while (ch !== LF && ch !== CR && ch !== LT) { + if (++offset >= data.length) { + break; + } + token += String.fromCharCode(ch); + ch = data[offset]; + } + return token; + } + function skipUntil(data, offset, what) { + const length = what.length, + dataLength = data.length; + let skipped = 0; + while (offset < dataLength) { + let i = 0; + while (i < length && data[offset + i] === what[i]) { + ++i; + } + if (i >= length) { + break; + } + offset++; + skipped++; + } + return skipped; + } + const gEndobjRegExp = /\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g; + const gStartxrefRegExp = /\b(startxref|\d+\s+\d+\s+obj)\b/g; + const objRegExp = /^(\d+)\s+(\d+)\s+obj\b/; + const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]); + const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]); + const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]); + this.entries.length = 0; + this._cacheMap.clear(); + const stream = this.stream; + stream.pos = 0; + const buffer = stream.getBytes(), + bufferStr = bytesToString(buffer), + length = buffer.length; + let position = stream.start; + const trailers = [], + xrefStms = []; + while (position < length) { + let ch = buffer[position]; + if (ch === TAB || ch === LF || ch === CR || ch === SPACE) { + ++position; + continue; + } + if (ch === PERCENT) { + do { + ++position; + if (position >= length) { + break; + } + ch = buffer[position]; + } while (ch !== LF && ch !== CR); + continue; + } + const token = readToken(buffer, position); + let m; + if (token.startsWith("xref") && (token.length === 4 || /\s/.test(token[4]))) { + position += skipUntil(buffer, position, trailerBytes); + trailers.push(position); + position += skipUntil(buffer, position, startxrefBytes); + } else if (m = objRegExp.exec(token)) { + const num = m[1] | 0, + gen = m[2] | 0; + const startPos = position + token.length; + let contentLength, + updateEntries = false; + if (!this.entries[num]) { + updateEntries = true; + } else if (this.entries[num].gen === gen) { + try { + const parser = new Parser({ + lexer: new Lexer(stream.makeSubStream(startPos)) + }); + parser.getObj(); + updateEntries = true; + } catch (ex) { + if (ex instanceof ParserEOFException) { + warn(`indexObjects -- checking object (${token}): "${ex}".`); + } else { + updateEntries = true; + } + } + } + if (updateEntries) { + this.entries[num] = { + offset: position - stream.start, + gen, + uncompressed: true + }; + } + gEndobjRegExp.lastIndex = startPos; + const match = gEndobjRegExp.exec(bufferStr); + if (match) { + const endPos = gEndobjRegExp.lastIndex + 1; + contentLength = endPos - position; + if (match[1] !== "endobj") { + warn(`indexObjects: Found "${match[1]}" inside of another "obj", ` + 'caused by missing "endobj" -- trying to recover.'); + contentLength -= match[1].length + 1; + } + } else { + contentLength = length - position; + } + const content = buffer.subarray(position, position + contentLength); + const xrefTagOffset = skipUntil(content, 0, xrefBytes); + if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) { + xrefStms.push(position - stream.start); + this._xrefStms.add(position - stream.start); + } + position += contentLength; + } else if (token.startsWith("trailer") && (token.length === 7 || /\s/.test(token[7]))) { + trailers.push(position); + const startPos = position + token.length; + let contentLength; + gStartxrefRegExp.lastIndex = startPos; + const match = gStartxrefRegExp.exec(bufferStr); + if (match) { + const endPos = gStartxrefRegExp.lastIndex + 1; + contentLength = endPos - position; + if (match[1] !== "startxref") { + warn(`indexObjects: Found "${match[1]}" after "trailer", ` + 'caused by missing "startxref" -- trying to recover.'); + contentLength -= match[1].length + 1; + } + } else { + contentLength = length - position; + } + position += contentLength; + } else { + position += token.length + 1; + } + } + for (const xrefStm of xrefStms) { + this.startXRefQueue.push(xrefStm); + this.readXRef(true); + } + const trailerDicts = []; + let isEncrypted = false; + for (const trailer of trailers) { + stream.pos = trailer; + const parser = new Parser({ + lexer: new Lexer(stream), + xref: this, + allowStreams: true, + recoveryMode: true + }); + const obj = parser.getObj(); + if (!isCmd(obj, "trailer")) { + continue; + } + const dict = parser.getObj(); + if (!(dict instanceof Dict)) { + continue; + } + trailerDicts.push(dict); + if (dict.has("Encrypt")) { + isEncrypted = true; + } + } + let trailerDict, trailerError; + for (const dict of [...trailerDicts, "genFallback", ...trailerDicts]) { + if (dict === "genFallback") { + if (!trailerError) { + break; + } + this._generationFallback = true; + continue; + } + let validPagesDict = false; + try { + const rootDict = dict.get("Root"); + if (!(rootDict instanceof Dict)) { + continue; + } + const pagesDict = rootDict.get("Pages"); + if (!(pagesDict instanceof Dict)) { + continue; + } + const pagesCount = pagesDict.get("Count"); + if (Number.isInteger(pagesCount)) { + validPagesDict = true; + } + } catch (ex) { + trailerError = ex; + continue; + } + if (validPagesDict && (!isEncrypted || dict.has("Encrypt")) && dict.has("ID")) { + return dict; + } + trailerDict = dict; + } + if (trailerDict) { + return trailerDict; + } + if (this.topDict) { + return this.topDict; + } + if (!trailerDicts.length) { + for (const num in this.entries) { + const entry = this.entries[num]; + if (!entry) { + continue; + } + const ref = Ref.get(parseInt(num), entry.gen); + let obj; + try { + obj = this.fetch(ref); + } catch { + continue; + } + if (obj instanceof BaseStream) { + obj = obj.dict; + } + if (obj instanceof Dict && obj.has("Root")) { + return obj; + } + } + } + throw new InvalidPDFException("Invalid PDF structure."); + } + readXRef(recoveryMode = false) { + const stream = this.stream; + const startXRefParsedCache = new Set(); + while (this.startXRefQueue.length) { + try { + const startXRef = this.startXRefQueue[0]; + if (startXRefParsedCache.has(startXRef)) { + warn("readXRef - skipping XRef table since it was already parsed."); + this.startXRefQueue.shift(); + continue; + } + startXRefParsedCache.add(startXRef); + stream.pos = startXRef + stream.start; + const parser = new Parser({ + lexer: new Lexer(stream), + xref: this, + allowStreams: true + }); + let obj = parser.getObj(); + let dict; + if (isCmd(obj, "xref")) { + dict = this.processXRefTable(parser); + if (!this.topDict) { + this.topDict = dict; + } + obj = dict.get("XRefStm"); + if (Number.isInteger(obj) && !this._xrefStms.has(obj)) { + this._xrefStms.add(obj); + this.startXRefQueue.push(obj); + } + } else if (Number.isInteger(obj)) { + if (!Number.isInteger(parser.getObj()) || !isCmd(parser.getObj(), "obj") || !((obj = parser.getObj()) instanceof BaseStream)) { + throw new FormatError("Invalid XRef stream"); + } + dict = this.processXRefStream(obj); + if (!this.topDict) { + this.topDict = dict; + } + if (!dict) { + throw new FormatError("Failed to read XRef stream"); + } + } else { + throw new FormatError("Invalid XRef stream header"); + } + obj = dict.get("Prev"); + if (Number.isInteger(obj)) { + this.startXRefQueue.push(obj); + } else if (obj instanceof Ref) { + this.startXRefQueue.push(obj.num); + } + } catch (e) { + if (e instanceof MissingDataException) { + throw e; + } + info("(while reading XRef): " + e); + } + this.startXRefQueue.shift(); + } + if (this.topDict) { + return this.topDict; + } + if (recoveryMode) { + return undefined; + } + throw new XRefParseException(); + } + getEntry(i) { + const xrefEntry = this.entries[i]; + if (xrefEntry && !xrefEntry.free && xrefEntry.offset) { + return xrefEntry; + } + return null; + } + fetchIfRef(obj, suppressEncryption = false) { + if (obj instanceof Ref) { + return this.fetch(obj, suppressEncryption); + } + return obj; + } + fetch(ref, suppressEncryption = false) { + if (!(ref instanceof Ref)) { + throw new Error("ref object is not a reference"); + } + const num = ref.num; + const cacheEntry = this._cacheMap.get(num); + if (cacheEntry !== undefined) { + if (cacheEntry instanceof Dict && !cacheEntry.objId) { + cacheEntry.objId = ref.toString(); + } + return cacheEntry; + } + let xrefEntry = this.getEntry(num); + if (xrefEntry === null) { + return xrefEntry; + } + if (this._pendingRefs.has(ref)) { + this._pendingRefs.remove(ref); + warn(`Ignoring circular reference: ${ref}.`); + return CIRCULAR_REF; + } + this._pendingRefs.put(ref); + try { + xrefEntry = xrefEntry.uncompressed ? this.fetchUncompressed(ref, xrefEntry, suppressEncryption) : this.fetchCompressed(ref, xrefEntry, suppressEncryption); + this._pendingRefs.remove(ref); + } catch (ex) { + this._pendingRefs.remove(ref); + throw ex; + } + if (xrefEntry instanceof Dict) { + xrefEntry.objId = ref.toString(); + } else if (xrefEntry instanceof BaseStream) { + xrefEntry.dict.objId = ref.toString(); + } + return xrefEntry; + } + fetchUncompressed(ref, xrefEntry, suppressEncryption = false) { + const gen = ref.gen; + let num = ref.num; + if (xrefEntry.gen !== gen) { + const msg = `Inconsistent generation in XRef: ${ref}`; + if (this._generationFallback && xrefEntry.gen < gen) { + warn(msg); + return this.fetchUncompressed(Ref.get(num, xrefEntry.gen), xrefEntry, suppressEncryption); + } + throw new XRefEntryException(msg); + } + const stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start); + const parser = new Parser({ + lexer: new Lexer(stream), + xref: this, + allowStreams: true + }); + const obj1 = parser.getObj(); + const obj2 = parser.getObj(); + const obj3 = parser.getObj(); + if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) { + throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`); + } + if (obj3.cmd !== "obj") { + if (obj3.cmd.startsWith("obj")) { + num = parseInt(obj3.cmd.substring(3), 10); + if (!Number.isNaN(num)) { + return num; + } + } + throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`); + } + xrefEntry = this.encrypt && !suppressEncryption ? parser.getObj(this.encrypt.createCipherTransform(num, gen)) : parser.getObj(); + if (!(xrefEntry instanceof BaseStream)) { + this._cacheMap.set(num, xrefEntry); + } + return xrefEntry; + } + fetchCompressed(ref, xrefEntry, suppressEncryption = false) { + const tableOffset = xrefEntry.offset; + const stream = this.fetch(Ref.get(tableOffset, 0)); + if (!(stream instanceof BaseStream)) { + throw new FormatError("bad ObjStm stream"); + } + const first = stream.dict.get("First"); + const n = stream.dict.get("N"); + if (!Number.isInteger(first) || !Number.isInteger(n)) { + throw new FormatError("invalid first and n parameters for ObjStm stream"); + } + let parser = new Parser({ + lexer: new Lexer(stream), + xref: this, + allowStreams: true + }); + const nums = new Array(n); + const offsets = new Array(n); + for (let i = 0; i < n; ++i) { + const num = parser.getObj(); + if (!Number.isInteger(num)) { + throw new FormatError(`invalid object number in the ObjStm stream: ${num}`); + } + const offset = parser.getObj(); + if (!Number.isInteger(offset)) { + throw new FormatError(`invalid object offset in the ObjStm stream: ${offset}`); + } + nums[i] = num; + const entry = this.getEntry(num); + if (entry?.offset === tableOffset && entry.gen !== i) { + entry.gen = i; + } + offsets[i] = offset; + } + const start = (stream.start || 0) + first; + const entries = new Array(n); + for (let i = 0; i < n; ++i) { + const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined; + if (length < 0) { + throw new FormatError("Invalid offset in the ObjStm stream."); + } + parser = new Parser({ + lexer: new Lexer(stream.makeSubStream(start + offsets[i], length, stream.dict)), + xref: this, + allowStreams: true + }); + const obj = parser.getObj(); + entries[i] = obj; + if (obj instanceof BaseStream) { + continue; + } + const num = nums[i], + entry = this.entries[num]; + if (entry && entry.offset === tableOffset && entry.gen === i) { + this._cacheMap.set(num, obj); + } + } + xrefEntry = entries[xrefEntry.gen]; + if (xrefEntry === undefined) { + throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`); + } + return xrefEntry; + } + async fetchIfRefAsync(obj, suppressEncryption) { + if (obj instanceof Ref) { + return this.fetchAsync(obj, suppressEncryption); + } + return obj; + } + async fetchAsync(ref, suppressEncryption) { + try { + return this.fetch(ref, suppressEncryption); + } catch (ex) { + if (!(ex instanceof MissingDataException)) { + throw ex; + } + await this.pdfManager.requestRange(ex.begin, ex.end); + return this.fetchAsync(ref, suppressEncryption); + } + } + getCatalogObj() { + return this.root; + } +} + +;// ./src/core/document.js + + + + + + + + + + + + + + + + + + + + + + + +const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; +class Page { + #areAnnotationsCached = false; + #resourcesPromise = null; + constructor({ + pdfManager, + xref, + pageIndex, + pageDict, + ref, + globalIdFactory, + fontCache, + builtInCMapCache, + standardFontDataCache, + globalColorSpaceCache, + globalImageCache, + systemFontCache, + nonBlendModesSet, + xfaFactory + }) { + this.pdfManager = pdfManager; + this.pageIndex = pageIndex; + this.pageDict = pageDict; + this.xref = xref; + this.ref = ref; + this.fontCache = fontCache; + this.builtInCMapCache = builtInCMapCache; + this.standardFontDataCache = standardFontDataCache; + this.globalColorSpaceCache = globalColorSpaceCache; + this.globalImageCache = globalImageCache; + this.systemFontCache = systemFontCache; + this.nonBlendModesSet = nonBlendModesSet; + this.evaluatorOptions = pdfManager.evaluatorOptions; + this.xfaFactory = xfaFactory; + const idCounters = { + obj: 0 + }; + this._localIdFactory = class extends globalIdFactory { + static createObjId() { + return `p${pageIndex}_${++idCounters.obj}`; + } + static getPageObjId() { + return `p${ref.toString()}`; + } + }; + } + #createPartialEvaluator(handler, pageIndex = this.pageIndex) { + return new PartialEvaluator({ + xref: this.xref, + handler, + pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions + }); + } + createAnnotationEvaluator(handler) { + return this.#createPartialEvaluator(handler); + } + #getInheritableProperty(key, getArray = false) { + const value = getInheritableProperty({ + dict: this.pageDict, + key, + getArray, + stopWhenFound: false + }); + if (!Array.isArray(value)) { + return value; + } + if (value.length === 1 || !(value[0] instanceof Dict)) { + return value[0]; + } + return Dict.merge({ + xref: this.xref, + dictArray: value + }); + } + get content() { + return this.pageDict.getArray("Contents"); + } + get resources() { + const resources = this.#getInheritableProperty("Resources"); + return shadow(this, "resources", resources instanceof Dict ? resources : Dict.empty); + } + getBoundingBox(name) { + if (this.xfaData) { + return this.xfaData.bbox; + } + const box = lookupNormalRect(this.#getInheritableProperty(name, true), null); + if (box) { + if (box[2] - box[0] > 0 && box[3] - box[1] > 0) { + return box; + } + warn(`Empty, or invalid, /${name} entry.`); + } + return null; + } + get mediaBox() { + return shadow(this, "mediaBox", this.getBoundingBox("MediaBox") || LETTER_SIZE_MEDIABOX); + } + get cropBox() { + return shadow(this, "cropBox", this.getBoundingBox("CropBox") || this.mediaBox); + } + get userUnit() { + const obj = this.pageDict.get("UserUnit"); + return shadow(this, "userUnit", typeof obj === "number" && obj > 0 ? obj : 1.0); + } + get view() { + const { + cropBox, + mediaBox + } = this; + if (cropBox !== mediaBox && !isArrayEqual(cropBox, mediaBox)) { + const box = Util.intersect(cropBox, mediaBox); + if (box && box[2] - box[0] > 0 && box[3] - box[1] > 0) { + return shadow(this, "view", box); + } + warn("Empty /CropBox and /MediaBox intersection."); + } + return shadow(this, "view", mediaBox); + } + get rotate() { + let rotate = this.#getInheritableProperty("Rotate") || 0; + if (rotate % 90 !== 0) { + rotate = 0; + } else if (rotate >= 360) { + rotate %= 360; + } else if (rotate < 0) { + rotate = (rotate % 360 + 360) % 360; + } + return shadow(this, "rotate", rotate); + } + #onSubStreamError(reason, objId) { + if (this.evaluatorOptions.ignoreErrors) { + warn(`getContentStream - ignoring sub-stream (${objId}): "${reason}".`); + return; + } + throw reason; + } + async getContentStream() { + const content = await this.pdfManager.ensure(this, "content"); + if (content instanceof BaseStream && !content.isImageStream) { + if (content.isAsync) { + const bytes = await content.asyncGetBytes(); + if (bytes) { + return new Stream(bytes, 0, bytes.length, content.dict); + } + } + return content; + } + if (Array.isArray(content)) { + const promises = []; + for (let i = 0, ii = content.length; i < ii; i++) { + const item = content[i]; + if (item instanceof BaseStream && item.isAsync) { + promises.push(item.asyncGetBytes().then(bytes => { + if (bytes) { + content[i] = new Stream(bytes, 0, bytes.length, item.dict); + } + })); + } + } + if (promises.length > 0) { + await Promise.all(promises); + } + return new StreamsSequenceStream(content, this.#onSubStreamError.bind(this)); + } + return new NullStream(); + } + get xfaData() { + return shadow(this, "xfaData", this.xfaFactory ? { + bbox: this.xfaFactory.getBoundingBox(this.pageIndex) + } : null); + } + async #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) { + const promises = []; + for (const annotation of annotations) { + if (annotation.id) { + const ref = Ref.fromString(annotation.id); + if (!ref) { + warn(`A non-linked annotation cannot be modified: ${annotation.id}`); + continue; + } + if (annotation.deleted) { + deletedAnnotations.put(ref, ref); + if (annotation.popupRef) { + const popupRef = Ref.fromString(annotation.popupRef); + if (popupRef) { + deletedAnnotations.put(popupRef, popupRef); + } + } + continue; + } + if (annotation.popup?.deleted) { + const popupRef = Ref.fromString(annotation.popupRef); + if (popupRef) { + deletedAnnotations.put(popupRef, popupRef); + } + } + existingAnnotations?.put(ref); + annotation.ref = ref; + promises.push(this.xref.fetchAsync(ref).then(obj => { + if (obj instanceof Dict) { + annotation.oldAnnotation = obj.clone(); + } + }, () => { + warn(`Cannot fetch \`oldAnnotation\` for: ${ref}.`); + })); + delete annotation.id; + } + } + await Promise.all(promises); + } + async saveNewAnnotations(handler, task, annotations, imagePromises, changes) { + if (this.xfaFactory) { + throw new Error("XFA: Cannot save new annotations."); + } + const partialEvaluator = this.#createPartialEvaluator(handler); + const deletedAnnotations = new RefSetCache(); + const existingAnnotations = new RefSet(); + await this.#replaceIdByRef(annotations, deletedAnnotations, existingAnnotations); + const pageDict = this.pageDict; + const annotationsArray = this.annotations.filter(a => !(a instanceof Ref && deletedAnnotations.has(a))); + const newData = await AnnotationFactory.saveNewAnnotations(partialEvaluator, this.xref, task, annotations, imagePromises, changes); + for (const { + ref + } of newData.annotations) { + if (ref instanceof Ref && !existingAnnotations.has(ref)) { + annotationsArray.push(ref); + } + } + const dict = pageDict.clone(); + dict.set("Annots", annotationsArray); + changes.put(this.ref, { + data: dict + }); + for (const deletedRef of deletedAnnotations) { + changes.put(deletedRef, { + data: null + }); + } + } + async save(handler, task, annotationStorage, changes) { + const partialEvaluator = this.#createPartialEvaluator(handler); + const annotations = await this._parsedAnnotations; + const promises = []; + for (const annotation of annotations) { + promises.push(annotation.save(partialEvaluator, task, annotationStorage, changes).catch(function (reason) { + warn("save - ignoring annotation data during " + `"${task.name}" task: "${reason}".`); + return null; + })); + } + return Promise.all(promises); + } + async loadResources(keys) { + await (this.#resourcesPromise ??= this.pdfManager.ensure(this, "resources")); + await ObjectLoader.load(this.resources, keys, this.xref); + } + async #getMergedResources(streamDict, keys) { + const localResources = streamDict?.get("Resources"); + if (!(localResources instanceof Dict && localResources.size)) { + return this.resources; + } + await ObjectLoader.load(localResources, keys, this.xref); + return Dict.merge({ + xref: this.xref, + dictArray: [localResources, this.resources], + mergeSubDicts: true + }); + } + async getOperatorList({ + handler, + sink, + task, + intent, + cacheKey, + pageIndex = this.pageIndex, + annotationStorage = null, + modifiedIds = null + }) { + const contentStreamPromise = this.getContentStream(); + const resourcesPromise = this.loadResources(RESOURCES_KEYS_OPERATOR_LIST); + const partialEvaluator = this.#createPartialEvaluator(handler, pageIndex); + const newAnnotsByPage = !this.xfaFactory ? getNewAnnotationsMap(annotationStorage) : null; + const newAnnots = newAnnotsByPage?.get(this.pageIndex); + let newAnnotationsPromise = Promise.resolve(null); + let deletedAnnotations = null; + if (newAnnots) { + const annotationGlobalsPromise = this.pdfManager.ensureDoc("annotationGlobals"); + let imagePromises; + const missingBitmaps = new Set(); + for (const { + bitmapId, + bitmap + } of newAnnots) { + if (bitmapId && !bitmap && !missingBitmaps.has(bitmapId)) { + missingBitmaps.add(bitmapId); + } + } + const { + isOffscreenCanvasSupported + } = this.evaluatorOptions; + if (missingBitmaps.size > 0) { + const annotationWithBitmaps = newAnnots.slice(); + for (const [key, annotation] of annotationStorage) { + if (!key.startsWith(AnnotationEditorPrefix)) { + continue; + } + if (annotation.bitmap && missingBitmaps.has(annotation.bitmapId)) { + annotationWithBitmaps.push(annotation); + } + } + imagePromises = AnnotationFactory.generateImages(annotationWithBitmaps, this.xref, isOffscreenCanvasSupported); + } else { + imagePromises = AnnotationFactory.generateImages(newAnnots, this.xref, isOffscreenCanvasSupported); + } + deletedAnnotations = new RefSet(); + newAnnotationsPromise = Promise.all([annotationGlobalsPromise, this.#replaceIdByRef(newAnnots, deletedAnnotations, null)]).then(([annotationGlobals]) => { + if (!annotationGlobals) { + return null; + } + return AnnotationFactory.printNewAnnotations(annotationGlobals, partialEvaluator, task, newAnnots, imagePromises); + }); + } + const pageListPromise = Promise.all([contentStreamPromise, resourcesPromise]).then(async ([contentStream]) => { + const resources = await this.#getMergedResources(contentStream.dict, RESOURCES_KEYS_OPERATOR_LIST); + const opList = new OperatorList(intent, sink); + handler.send("StartRenderPage", { + transparency: partialEvaluator.hasBlendModes(resources, this.nonBlendModesSet), + pageIndex, + cacheKey + }); + await partialEvaluator.getOperatorList({ + stream: contentStream, + task, + resources, + operatorList: opList + }); + return opList; + }); + let [pageOpList, annotations, newAnnotations] = await Promise.all([pageListPromise, this._parsedAnnotations, newAnnotationsPromise]); + if (newAnnotations) { + annotations = annotations.filter(a => !(a.ref && deletedAnnotations.has(a.ref))); + for (let i = 0, ii = newAnnotations.length; i < ii; i++) { + const newAnnotation = newAnnotations[i]; + if (newAnnotation.refToReplace) { + const j = annotations.findIndex(a => a.ref && isRefsEqual(a.ref, newAnnotation.refToReplace)); + if (j >= 0) { + annotations.splice(j, 1, newAnnotation); + newAnnotations.splice(i--, 1); + ii--; + } + } + } + annotations = annotations.concat(newAnnotations); + } + if (annotations.length === 0 || intent & RenderingIntentFlag.ANNOTATIONS_DISABLE) { + pageOpList.flush(true); + return { + length: pageOpList.totalLength + }; + } + const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS), + isEditing = !!(intent & RenderingIntentFlag.IS_EDITING), + intentAny = !!(intent & RenderingIntentFlag.ANY), + intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY), + intentPrint = !!(intent & RenderingIntentFlag.PRINT); + const opListPromises = []; + for (const annotation of annotations) { + if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage, renderForms) && annotation.mustBeViewedWhenEditing(isEditing, modifiedIds) || intentPrint && annotation.mustBePrinted(annotationStorage)) { + opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, annotationStorage).catch(function (reason) { + warn("getOperatorList - ignoring annotation data during " + `"${task.name}" task: "${reason}".`); + return { + opList: null, + separateForm: false, + separateCanvas: false + }; + })); + } + } + const opLists = await Promise.all(opListPromises); + let form = false, + canvas = false; + for (const { + opList, + separateForm, + separateCanvas + } of opLists) { + pageOpList.addOpList(opList); + form ||= separateForm; + canvas ||= separateCanvas; + } + pageOpList.flush(true, { + form, + canvas + }); + return { + length: pageOpList.totalLength + }; + } + async extractTextContent({ + handler, + task, + includeMarkedContent, + disableNormalization, + sink, + intersector = null + }) { + const contentStreamPromise = this.getContentStream(); + const resourcesPromise = this.loadResources(RESOURCES_KEYS_TEXT_CONTENT); + const langPromise = this.pdfManager.ensureCatalog("lang"); + const [contentStream,, lang] = await Promise.all([contentStreamPromise, resourcesPromise, langPromise]); + const resources = await this.#getMergedResources(contentStream.dict, RESOURCES_KEYS_TEXT_CONTENT); + const partialEvaluator = this.#createPartialEvaluator(handler); + return partialEvaluator.getTextContent({ + stream: contentStream, + task, + resources, + includeMarkedContent, + disableNormalization, + sink, + viewBox: this.view, + lang, + intersector + }); + } + async getStructTree() { + const structTreeRoot = await this.pdfManager.ensureCatalog("structTreeRoot"); + if (!structTreeRoot) { + return null; + } + await this._parsedAnnotations; + try { + const structTree = await this.pdfManager.ensure(this, "_parseStructTree", [structTreeRoot]); + const data = await this.pdfManager.ensure(structTree, "serializable"); + return data; + } catch (ex) { + warn(`getStructTree: "${ex}".`); + return null; + } + } + _parseStructTree(structTreeRoot) { + const tree = new StructTreePage(structTreeRoot, this.pageDict); + tree.parse(this.ref); + return tree; + } + async getAnnotationsData(handler, task, intent) { + const annotations = await this._parsedAnnotations; + if (annotations.length === 0) { + return annotations; + } + const annotationsData = [], + textContentPromises = []; + let partialEvaluator; + const intentAny = !!(intent & RenderingIntentFlag.ANY), + intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY), + intentPrint = !!(intent & RenderingIntentFlag.PRINT); + const highlightedAnnotations = []; + for (const annotation of annotations) { + const isVisible = intentAny || intentDisplay && annotation.viewable; + if (isVisible || intentPrint && annotation.printable) { + annotationsData.push(annotation.data); + } + if (annotation.hasTextContent && isVisible) { + partialEvaluator ??= this.#createPartialEvaluator(handler); + textContentPromises.push(annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]).catch(function (reason) { + warn(`getAnnotationsData - ignoring textContent during "${task.name}" task: "${reason}".`); + })); + } else if (annotation.overlaysTextContent && isVisible) { + highlightedAnnotations.push(annotation); + } + } + if (highlightedAnnotations.length > 0) { + const intersector = new Intersector(highlightedAnnotations); + textContentPromises.push(this.extractTextContent({ + handler, + task, + includeMarkedContent: false, + disableNormalization: false, + sink: null, + viewBox: this.view, + lang: null, + intersector + }).then(() => { + intersector.setText(); + })); + } + await Promise.all(textContentPromises); + return annotationsData; + } + get annotations() { + const annots = this.#getInheritableProperty("Annots"); + return shadow(this, "annotations", Array.isArray(annots) ? annots : []); + } + get _parsedAnnotations() { + const promise = this.pdfManager.ensure(this, "annotations").then(async annots => { + if (annots.length === 0) { + return annots; + } + const [annotationGlobals, fieldObjects] = await Promise.all([this.pdfManager.ensureDoc("annotationGlobals"), this.pdfManager.ensureDoc("fieldObjects")]); + if (!annotationGlobals) { + return []; + } + const orphanFields = fieldObjects?.orphanFields; + const annotationPromises = []; + for (const annotationRef of annots) { + annotationPromises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, orphanFields, null, this.ref).catch(function (reason) { + warn(`_parsedAnnotations: "${reason}".`); + return null; + })); + } + const sortedAnnotations = []; + let popupAnnotations, widgetAnnotations; + for (const annotation of await Promise.all(annotationPromises)) { + if (!annotation) { + continue; + } + if (annotation instanceof WidgetAnnotation) { + (widgetAnnotations ||= []).push(annotation); + continue; + } + if (annotation instanceof PopupAnnotation) { + (popupAnnotations ||= []).push(annotation); + continue; + } + sortedAnnotations.push(annotation); + } + if (widgetAnnotations) { + sortedAnnotations.push(...widgetAnnotations); + } + if (popupAnnotations) { + sortedAnnotations.push(...popupAnnotations); + } + return sortedAnnotations; + }); + this.#areAnnotationsCached = true; + return shadow(this, "_parsedAnnotations", promise); + } + get jsActions() { + const actions = collectActions(this.xref, this.pageDict, PageActionEventType); + return shadow(this, "jsActions", actions); + } + async collectAnnotationsByType(handler, task, types, promises, annotationGlobals) { + const { + pageIndex + } = this; + if (this.#areAnnotationsCached) { + const cachedAnnotations = await this._parsedAnnotations; + for (const { + data + } of cachedAnnotations) { + if (!types || types.has(data.annotationType)) { + data.pageIndex = pageIndex; + promises.push(Promise.resolve(data)); + } + } + return; + } + const annots = await this.pdfManager.ensure(this, "annotations"); + for (const annotationRef of annots) { + promises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, null, types, this.ref).then(async annotation => { + if (!annotation) { + return null; + } + annotation.data.pageIndex = pageIndex; + if (annotation.hasTextContent && annotation.viewable) { + const partialEvaluator = this.#createPartialEvaluator(handler); + await annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]); + } + return annotation.data; + }).catch(function (reason) { + warn(`collectAnnotationsByType: "${reason}".`); + return null; + })); + } + } +} +const PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]); +const STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]); +const ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]); +function find(stream, signature, limit = 1024, backwards = false) { + const signatureLength = signature.length; + const scanBytes = stream.peekBytes(limit); + const scanLength = scanBytes.length - signatureLength; + if (scanLength <= 0) { + return false; + } + if (backwards) { + const signatureEnd = signatureLength - 1; + let pos = scanBytes.length - 1; + while (pos >= signatureEnd) { + let j = 0; + while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) { + j++; + } + if (j >= signatureLength) { + stream.pos += pos - signatureEnd; + return true; + } + pos--; + } + } else { + let pos = 0; + while (pos <= scanLength) { + let j = 0; + while (j < signatureLength && scanBytes[pos + j] === signature[j]) { + j++; + } + if (j >= signatureLength) { + stream.pos += pos; + return true; + } + pos++; + } + } + return false; +} +class PDFDocument { + #pagePromises = new Map(); + #version = null; + constructor(pdfManager, stream) { + if (stream.length <= 0) { + throw new InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes."); + } + this.pdfManager = pdfManager; + this.stream = stream; + this.xref = new XRef(stream, pdfManager); + const idCounters = { + font: 0 + }; + this._globalIdFactory = class { + static getDocId() { + return `g_${pdfManager.docId}`; + } + static createFontId() { + return `f${++idCounters.font}`; + } + static createObjId() { + unreachable("Abstract method `createObjId` called."); + } + static getPageObjId() { + unreachable("Abstract method `getPageObjId` called."); + } + }; + } + parse(recoveryMode) { + this.xref.parse(recoveryMode); + this.catalog = new Catalog(this.pdfManager, this.xref); + } + get linearization() { + let linearization = null; + try { + linearization = Linearization.create(this.stream); + } catch (err) { + if (err instanceof MissingDataException) { + throw err; + } + info(err); + } + return shadow(this, "linearization", linearization); + } + get startXRef() { + const stream = this.stream; + let startXRef = 0; + if (this.linearization) { + stream.reset(); + if (find(stream, ENDOBJ_SIGNATURE)) { + stream.skip(6); + let ch = stream.peekByte(); + while (isWhiteSpace(ch)) { + stream.pos++; + ch = stream.peekByte(); + } + startXRef = stream.pos - stream.start; + } + } else { + const step = 1024; + const startXRefLength = STARTXREF_SIGNATURE.length; + let found = false, + pos = stream.end; + while (!found && pos > 0) { + pos -= step - startXRefLength; + if (pos < 0) { + pos = 0; + } + stream.pos = pos; + found = find(stream, STARTXREF_SIGNATURE, step, true); + } + if (found) { + stream.skip(9); + let ch; + do { + ch = stream.getByte(); + } while (isWhiteSpace(ch)); + let str = ""; + while (ch >= 0x20 && ch <= 0x39) { + str += String.fromCharCode(ch); + ch = stream.getByte(); + } + startXRef = parseInt(str, 10); + if (isNaN(startXRef)) { + startXRef = 0; + } + } + } + return shadow(this, "startXRef", startXRef); + } + checkHeader() { + const stream = this.stream; + stream.reset(); + if (!find(stream, PDF_HEADER_SIGNATURE)) { + return; + } + stream.moveStart(); + stream.skip(PDF_HEADER_SIGNATURE.length); + let version = "", + ch; + while ((ch = stream.getByte()) > 0x20 && version.length < 7) { + version += String.fromCharCode(ch); + } + if (PDF_VERSION_REGEXP.test(version)) { + this.#version = version; + } else { + warn(`Invalid PDF header version: ${version}`); + } + } + parseStartXRef() { + this.xref.setStartXRef(this.startXRef); + } + get numPages() { + let num = 0; + if (this.catalog.hasActualNumPages) { + num = this.catalog.numPages; + } else if (this.xfaFactory) { + num = this.xfaFactory.getNumPages(); + } else if (this.linearization) { + num = this.linearization.numPages; + } else { + num = this.catalog.numPages; + } + return shadow(this, "numPages", num); + } + #hasOnlyDocumentSignatures(fields, recursionDepth = 0) { + const RECURSION_LIMIT = 10; + if (!Array.isArray(fields)) { + return false; + } + return fields.every(field => { + field = this.xref.fetchIfRef(field); + if (!(field instanceof Dict)) { + return false; + } + if (field.has("Kids")) { + if (++recursionDepth > RECURSION_LIMIT) { + warn("#hasOnlyDocumentSignatures: maximum recursion depth reached"); + return false; + } + return this.#hasOnlyDocumentSignatures(field.get("Kids"), recursionDepth); + } + const isSignature = isName(field.get("FT"), "Sig"); + const rectangle = field.get("Rect"); + const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0); + return isSignature && isInvisible; + }); + } + get _xfaStreams() { + const { + acroForm + } = this.catalog; + if (!acroForm) { + return null; + } + const xfa = acroForm.get("XFA"); + const entries = new Map(["xdp:xdp", "template", "datasets", "config", "connectionSet", "localeSet", "stylesheet", "/xdp:xdp"].map(e => [e, null])); + if (xfa instanceof BaseStream && !xfa.isEmpty) { + entries.set("xdp:xdp", xfa); + return entries; + } + if (!Array.isArray(xfa) || xfa.length === 0) { + return null; + } + for (let i = 0, ii = xfa.length; i < ii; i += 2) { + let name; + if (i === 0) { + name = "xdp:xdp"; + } else if (i === ii - 2) { + name = "/xdp:xdp"; + } else { + name = xfa[i]; + } + if (!entries.has(name)) { + continue; + } + const data = this.xref.fetchIfRef(xfa[i + 1]); + if (!(data instanceof BaseStream) || data.isEmpty) { + continue; + } + entries.set(name, data); + } + return entries; + } + get xfaDatasets() { + const streams = this._xfaStreams; + if (!streams) { + return shadow(this, "xfaDatasets", null); + } + for (const key of ["datasets", "xdp:xdp"]) { + const stream = streams.get(key); + if (!stream) { + continue; + } + try { + const str = stringToUTF8String(stream.getString()); + const data = { + [key]: str + }; + return shadow(this, "xfaDatasets", new DatasetReader(data)); + } catch { + warn("XFA - Invalid utf-8 string."); + break; + } + } + return shadow(this, "xfaDatasets", null); + } + get xfaData() { + const streams = this._xfaStreams; + if (!streams) { + return null; + } + const data = Object.create(null); + for (const [key, stream] of streams) { + if (!stream) { + continue; + } + try { + data[key] = stringToUTF8String(stream.getString()); + } catch { + warn("XFA - Invalid utf-8 string."); + return null; + } + } + return data; + } + get xfaFactory() { + let data; + if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) { + data = this.xfaData; + } + return shadow(this, "xfaFactory", data ? new XFAFactory(data) : null); + } + get isPureXfa() { + return this.xfaFactory ? this.xfaFactory.isValid() : false; + } + get htmlForXfa() { + return this.xfaFactory ? this.xfaFactory.getPages() : null; + } + async #loadXfaImages() { + const xfaImages = await this.pdfManager.ensureCatalog("xfaImages"); + if (!xfaImages) { + return; + } + this.xfaFactory.setImages(xfaImages); + } + async #loadXfaFonts(handler, task) { + const acroForm = await this.pdfManager.ensureCatalog("acroForm"); + if (!acroForm) { + return; + } + const resources = await acroForm.getAsync("DR"); + if (!(resources instanceof Dict)) { + return; + } + await ObjectLoader.load(resources, ["Font"], this.xref); + const fontRes = resources.get("Font"); + if (!(fontRes instanceof Dict)) { + return; + } + const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions, { + useSystemFonts: false + }); + const { + builtInCMapCache, + fontCache, + standardFontDataCache + } = this.catalog; + const partialEvaluator = new PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: -1, + idFactory: this._globalIdFactory, + fontCache, + builtInCMapCache, + standardFontDataCache, + options + }); + const operatorList = new OperatorList(); + const pdfFonts = []; + const initialState = { + get font() { + return pdfFonts.at(-1); + }, + set font(font) { + pdfFonts.push(font); + }, + clone() { + return this; + } + }; + const parseFont = (fontName, fallbackFontDict, cssFontInfo) => partialEvaluator.handleSetFont(resources, [Name.get(fontName), 1], null, operatorList, task, initialState, fallbackFontDict, cssFontInfo).catch(reason => { + warn(`loadXfaFonts: "${reason}".`); + return null; + }); + const promises = []; + for (const [fontName, font] of fontRes) { + const descriptor = font.get("FontDescriptor"); + if (!(descriptor instanceof Dict)) { + continue; + } + let fontFamily = descriptor.get("FontFamily"); + fontFamily = fontFamily.replaceAll(/[ ]+(\d)/g, "$1"); + const fontWeight = descriptor.get("FontWeight"); + const italicAngle = -descriptor.get("ItalicAngle"); + const cssFontInfo = { + fontFamily, + fontWeight, + italicAngle + }; + if (!validateCSSFont(cssFontInfo)) { + continue; + } + promises.push(parseFont(fontName, null, cssFontInfo)); + } + await Promise.all(promises); + const missingFonts = this.xfaFactory.setFonts(pdfFonts); + if (!missingFonts) { + return; + } + options.ignoreErrors = true; + promises.length = 0; + pdfFonts.length = 0; + const reallyMissingFonts = new Set(); + for (const missing of missingFonts) { + if (!getXfaFontName(`${missing}-Regular`)) { + reallyMissingFonts.add(missing); + } + } + if (reallyMissingFonts.size) { + missingFonts.push("PdfJS-Fallback"); + } + for (const missing of missingFonts) { + if (reallyMissingFonts.has(missing)) { + continue; + } + for (const fontInfo of [{ + name: "Regular", + fontWeight: 400, + italicAngle: 0 + }, { + name: "Bold", + fontWeight: 700, + italicAngle: 0 + }, { + name: "Italic", + fontWeight: 400, + italicAngle: 12 + }, { + name: "BoldItalic", + fontWeight: 700, + italicAngle: 12 + }]) { + const name = `${missing}-${fontInfo.name}`; + promises.push(parseFont(name, getXfaFontDict(name), { + fontFamily: missing, + fontWeight: fontInfo.fontWeight, + italicAngle: fontInfo.italicAngle + })); + } + } + await Promise.all(promises); + this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts); + } + loadXfaResources(handler, task) { + return Promise.all([this.#loadXfaFonts(handler, task).catch(() => {}), this.#loadXfaImages()]); + } + serializeXfaData(annotationStorage) { + return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null; + } + get version() { + return this.catalog.version || this.#version; + } + get formInfo() { + const formInfo = { + hasFields: false, + hasAcroForm: false, + hasXfa: false, + hasSignatures: false + }; + const { + acroForm + } = this.catalog; + if (!acroForm) { + return shadow(this, "formInfo", formInfo); + } + try { + const fields = acroForm.get("Fields"); + const hasFields = Array.isArray(fields) && fields.length > 0; + formInfo.hasFields = hasFields; + const xfa = acroForm.get("XFA"); + formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof BaseStream && !xfa.isEmpty; + const sigFlags = acroForm.get("SigFlags"); + const hasSignatures = !!(sigFlags & 0x1); + const hasOnlyDocumentSignatures = hasSignatures && this.#hasOnlyDocumentSignatures(fields); + formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures; + formInfo.hasSignatures = hasSignatures; + } catch (ex) { + if (ex instanceof MissingDataException) { + throw ex; + } + warn(`Cannot fetch form information: "${ex}".`); + } + return shadow(this, "formInfo", formInfo); + } + get documentInfo() { + const { + catalog, + formInfo, + xref + } = this; + const docInfo = { + PDFFormatVersion: this.version, + Language: catalog.lang, + EncryptFilterName: xref.encrypt?.filterName ?? null, + IsLinearized: !!this.linearization, + IsAcroFormPresent: formInfo.hasAcroForm, + IsXFAPresent: formInfo.hasXfa, + IsCollectionPresent: !!catalog.collection, + IsSignaturesPresent: formInfo.hasSignatures + }; + let infoDict; + try { + infoDict = xref.trailer.get("Info"); + } catch (err) { + if (err instanceof MissingDataException) { + throw err; + } + info("The document information dictionary is invalid."); + } + if (!(infoDict instanceof Dict)) { + return shadow(this, "documentInfo", docInfo); + } + for (const [key, value] of infoDict) { + switch (key) { + case "Title": + case "Author": + case "Subject": + case "Keywords": + case "Creator": + case "Producer": + case "CreationDate": + case "ModDate": + if (typeof value === "string") { + docInfo[key] = stringToPDFString(value); + continue; + } + break; + case "Trapped": + if (value instanceof Name) { + docInfo[key] = value; + continue; + } + break; + default: + let customValue; + switch (typeof value) { + case "string": + customValue = stringToPDFString(value); + break; + case "number": + case "boolean": + customValue = value; + break; + default: + if (value instanceof Name) { + customValue = value; + } + break; + } + if (customValue === undefined) { + warn(`Bad value, for custom key "${key}", in Info: ${value}.`); + continue; + } + docInfo.Custom ??= Object.create(null); + docInfo.Custom[key] = customValue; + continue; + } + warn(`Bad value, for key "${key}", in Info: ${value}.`); + } + return shadow(this, "documentInfo", docInfo); + } + get fingerprints() { + const FINGERPRINT_FIRST_BYTES = 1024; + const EMPTY_FINGERPRINT = "\x00".repeat(16); + function validate(data) { + return typeof data === "string" && data.length === 16 && data !== EMPTY_FINGERPRINT; + } + const id = this.xref.trailer.get("ID"); + let hashOriginal, hashModified; + if (Array.isArray(id) && validate(id[0])) { + hashOriginal = stringToBytes(id[0]); + if (id[1] !== id[0] && validate(id[1])) { + hashModified = stringToBytes(id[1]); + } + } else { + hashOriginal = calculateMD5(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES); + } + return shadow(this, "fingerprints", [hashOriginal.toHex(), hashModified?.toHex() ?? null]); + } + async #getLinearizationPage(pageIndex) { + const { + catalog, + linearization, + xref + } = this; + const ref = Ref.get(linearization.objectNumberFirst, 0); + try { + const obj = await xref.fetchAsync(ref); + if (obj instanceof Dict) { + let type = obj.getRaw("Type"); + if (type instanceof Ref) { + type = await xref.fetchAsync(type); + } + if (isName(type, "Page") || !obj.has("Type") && !obj.has("Kids") && obj.has("Contents")) { + if (!catalog.pageKidsCountCache.has(ref)) { + catalog.pageKidsCountCache.put(ref, 1); + } + if (!catalog.pageIndexCache.has(ref)) { + catalog.pageIndexCache.put(ref, 0); + } + return [obj, ref]; + } + } + throw new FormatError("The Linearization dictionary doesn't point to a valid Page dictionary."); + } catch (reason) { + warn(`_getLinearizationPage: "${reason.message}".`); + return catalog.getPageDict(pageIndex); + } + } + getPage(pageIndex) { + const cachedPromise = this.#pagePromises.get(pageIndex); + if (cachedPromise) { + return cachedPromise; + } + const { + catalog, + linearization, + xfaFactory + } = this; + let promise; + if (xfaFactory) { + promise = Promise.resolve([Dict.empty, null]); + } else if (linearization?.pageFirst === pageIndex) { + promise = this.#getLinearizationPage(pageIndex); + } else { + promise = catalog.getPageDict(pageIndex); + } + promise = promise.then(([pageDict, ref]) => new Page({ + pdfManager: this.pdfManager, + xref: this.xref, + pageIndex, + pageDict, + ref, + globalIdFactory: this._globalIdFactory, + fontCache: catalog.fontCache, + builtInCMapCache: catalog.builtInCMapCache, + standardFontDataCache: catalog.standardFontDataCache, + globalColorSpaceCache: catalog.globalColorSpaceCache, + globalImageCache: catalog.globalImageCache, + systemFontCache: catalog.systemFontCache, + nonBlendModesSet: catalog.nonBlendModesSet, + xfaFactory + })); + this.#pagePromises.set(pageIndex, promise); + return promise; + } + async checkFirstPage(recoveryMode = false) { + if (recoveryMode) { + return; + } + try { + await this.getPage(0); + } catch (reason) { + if (reason instanceof XRefEntryException) { + this.#pagePromises.delete(0); + await this.cleanup(); + throw new XRefParseException(); + } + } + } + async checkLastPage(recoveryMode = false) { + const { + catalog, + pdfManager + } = this; + catalog.setActualNumPages(); + let numPages; + try { + await Promise.all([pdfManager.ensureDoc("xfaFactory"), pdfManager.ensureDoc("linearization"), pdfManager.ensureCatalog("numPages")]); + if (this.xfaFactory) { + return; + } else if (this.linearization) { + numPages = this.linearization.numPages; + } else { + numPages = catalog.numPages; + } + if (!Number.isInteger(numPages)) { + throw new FormatError("Page count is not an integer."); + } else if (numPages <= 1) { + return; + } + await this.getPage(numPages - 1); + } catch (reason) { + this.#pagePromises.delete(numPages - 1); + await this.cleanup(); + if (reason instanceof XRefEntryException && !recoveryMode) { + throw new XRefParseException(); + } + warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`); + let pagesTree; + try { + pagesTree = await catalog.getAllPageDicts(recoveryMode); + } catch (reasonAll) { + if (reasonAll instanceof XRefEntryException && !recoveryMode) { + throw new XRefParseException(); + } + catalog.setActualNumPages(1); + return; + } + for (const [pageIndex, [pageDict, ref]] of pagesTree) { + let promise; + if (pageDict instanceof Error) { + promise = Promise.reject(pageDict); + promise.catch(() => {}); + } else { + promise = Promise.resolve(new Page({ + pdfManager, + xref: this.xref, + pageIndex, + pageDict, + ref, + globalIdFactory: this._globalIdFactory, + fontCache: catalog.fontCache, + builtInCMapCache: catalog.builtInCMapCache, + standardFontDataCache: catalog.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, + globalImageCache: catalog.globalImageCache, + systemFontCache: catalog.systemFontCache, + nonBlendModesSet: catalog.nonBlendModesSet, + xfaFactory: null + })); + } + this.#pagePromises.set(pageIndex, promise); + } + catalog.setActualNumPages(pagesTree.size); + } + } + async fontFallback(id, handler) { + const { + catalog, + pdfManager + } = this; + for (const translatedFont of await Promise.all(catalog.fontCache)) { + if (translatedFont.loadedName === id) { + translatedFont.fallback(handler, pdfManager.evaluatorOptions); + return; + } + } + } + async cleanup(manuallyTriggered = false) { + return this.catalog ? this.catalog.cleanup(manuallyTriggered) : clearGlobalCaches(); + } + async #collectFieldObjects(name, parentRef, fieldRef, promises, annotationGlobals, visitedRefs, orphanFields) { + const { + xref + } = this; + if (!(fieldRef instanceof Ref) || visitedRefs.has(fieldRef)) { + return; + } + visitedRefs.put(fieldRef); + const field = await xref.fetchAsync(fieldRef); + if (!(field instanceof Dict)) { + return; + } + let subtype = await field.getAsync("Subtype"); + subtype = subtype instanceof Name ? subtype.name : null; + switch (subtype) { + case "Link": + return; + } + if (field.has("T")) { + const partName = stringToPDFString(await field.getAsync("T")); + name = name === "" ? partName : `${name}.${partName}`; + } else { + let obj = field; + while (true) { + obj = obj.getRaw("Parent") || parentRef; + if (obj instanceof Ref) { + if (visitedRefs.has(obj)) { + break; + } + obj = await xref.fetchAsync(obj); + } + if (!(obj instanceof Dict)) { + break; + } + if (obj.has("T")) { + const partName = stringToPDFString(await obj.getAsync("T")); + name = name === "" ? partName : `${name}.${partName}`; + break; + } + } + } + if (parentRef && !field.has("Parent") && isName(field.get("Subtype"), "Widget")) { + orphanFields.put(fieldRef, parentRef); + } + promises.getOrInsertComputed(name, makeArr).push(AnnotationFactory.create(xref, fieldRef, annotationGlobals, null, true, orphanFields, null, null).then(annotation => annotation?.getFieldObject()).catch(function (reason) { + warn(`#collectFieldObjects: "${reason}".`); + return null; + })); + if (!field.has("Kids")) { + return; + } + const kids = await field.getAsync("Kids"); + if (Array.isArray(kids)) { + for (const kid of kids) { + await this.#collectFieldObjects(name, fieldRef, kid, promises, annotationGlobals, visitedRefs, orphanFields); + } + } + } + get fieldObjects() { + const promise = this.pdfManager.ensureDoc("formInfo").then(async formInfo => { + if (!formInfo.hasFields) { + return null; + } + const annotationGlobals = await this.annotationGlobals; + if (!annotationGlobals) { + return null; + } + const { + acroForm + } = annotationGlobals; + const visitedRefs = new RefSet(); + const allFields = Object.create(null); + const fieldPromises = new Map(); + const orphanFields = new RefSetCache(); + for (const fieldRef of acroForm.get("Fields")) { + await this.#collectFieldObjects("", null, fieldRef, fieldPromises, annotationGlobals, visitedRefs, orphanFields); + } + const allPromises = []; + for (const [name, promises] of fieldPromises) { + allPromises.push(Promise.all(promises).then(fields => { + fields = fields.filter(field => !!field); + if (fields.length > 0) { + allFields[name] = fields; + } + })); + } + await Promise.all(allPromises); + return { + allFields: objectSize(allFields) > 0 ? allFields : null, + orphanFields + }; + }); + return shadow(this, "fieldObjects", promise); + } + get hasJSActions() { + const promise = this.pdfManager.ensureDoc("_parseHasJSActions"); + return shadow(this, "hasJSActions", promise); + } + async _parseHasJSActions() { + const [catalogJsActions, fieldObjects] = await Promise.all([this.pdfManager.ensureCatalog("jsActions"), this.pdfManager.ensureDoc("fieldObjects")]); + if (catalogJsActions) { + return true; + } + if (fieldObjects?.allFields) { + return Object.values(fieldObjects.allFields).some(fieldObject => fieldObject.some(object => object.actions !== null)); + } + return false; + } + get calculationOrderIds() { + const calculationOrder = this.catalog.acroForm?.get("CO"); + if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) { + return shadow(this, "calculationOrderIds", null); + } + const ids = []; + for (const id of calculationOrder) { + if (id instanceof Ref) { + ids.push(id.toString()); + } + } + return shadow(this, "calculationOrderIds", ids.length ? ids : null); + } + get annotationGlobals() { + return shadow(this, "annotationGlobals", AnnotationFactory.createGlobals(this.pdfManager)); + } + async toJSObject(value, firstCall = true) { + throw new Error("Not implemented: toJSObject"); + } +} + +;// ./src/core/pdf_manager.js + + + + + + + + + + + +function parseDocBaseUrl(url) { + if (url) { + const absoluteUrl = createValidAbsoluteUrl(url); + if (absoluteUrl) { + return absoluteUrl.href; + } + warn(`Invalid absolute docBaseUrl: "${url}".`); + } + return null; +} +class BasePdfManager { + constructor({ + docBaseUrl, + docId, + enableXfa, + evaluatorOptions, + handler, + password + }) { + this._docBaseUrl = parseDocBaseUrl(docBaseUrl); + this._docId = docId; + this._password = password; + this.enableXfa = enableXfa; + evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported; + evaluatorOptions.isImageDecoderSupported &&= FeatureTest.isImageDecoderSupported; + if (evaluatorOptions.enableWebGPU) { + let prepareWebGPUSent = false; + evaluatorOptions.prepareWebGPU = () => { + if (!prepareWebGPUSent) { + prepareWebGPUSent = true; + handler.send("PrepareWebGPU", null); + } + }; + } + delete evaluatorOptions.enableWebGPU; + this.evaluatorOptions = Object.freeze(evaluatorOptions); + ImageResizer.setOptions(evaluatorOptions); + JpegStream.setOptions(evaluatorOptions); + OperatorList.setOptions(evaluatorOptions); + const options = { + ...evaluatorOptions, + handler + }; + JpxImage.setOptions(options); + IccColorSpace.setOptions(options); + CmykICCBasedCS.setOptions(options); + JBig2CCITTFaxWasmImage.setOptions(options); + } + get docId() { + return this._docId; + } + get password() { + return this._password; + } + get docBaseUrl() { + return this._docBaseUrl; + } + ensureDoc(prop, args) { + return this.ensure(this.pdfDocument, prop, args); + } + ensureXRef(prop, args) { + return this.ensure(this.pdfDocument.xref, prop, args); + } + ensureCatalog(prop, args) { + return this.ensure(this.pdfDocument.catalog, prop, args); + } + getPage(pageIndex) { + return this.pdfDocument.getPage(pageIndex); + } + fontFallback(id, handler) { + return this.pdfDocument.fontFallback(id, handler); + } + cleanup(manuallyTriggered = false) { + return this.pdfDocument.cleanup(manuallyTriggered); + } + async ensure(obj, prop, args) { + unreachable("Abstract method `ensure` called"); + } + requestRange(begin, end) { + unreachable("Abstract method `requestRange` called"); + } + requestLoadedStream(noFetch = false) { + unreachable("Abstract method `requestLoadedStream` called"); + } + sendProgressiveData(chunk) { + unreachable("Abstract method `sendProgressiveData` called"); + } + updatePassword(password) { + this._password = password; + } + terminate(reason) { + unreachable("Abstract method `terminate` called"); + } +} +class LocalPdfManager extends BasePdfManager { + constructor(args) { + super(args); + const stream = new Stream(args.source); + this.pdfDocument = new PDFDocument(this, stream); + this._loadedStreamPromise = Promise.resolve(stream); + } + async ensure(obj, prop, args) { + const value = obj[prop]; + if (typeof value === "function") { + return value.apply(obj, args); + } + return value; + } + requestRange(begin, end) { + return Promise.resolve(); + } + requestLoadedStream(noFetch = false) { + return this._loadedStreamPromise; + } + terminate(reason) {} +} +class NetworkPdfManager extends BasePdfManager { + constructor(args) { + super(args); + this.streamManager = new ChunkedStreamManager(args.source, { + msgHandler: args.handler, + length: args.length, + disableAutoFetch: args.disableAutoFetch, + rangeChunkSize: args.rangeChunkSize + }); + this.pdfDocument = new PDFDocument(this, this.streamManager.getStream()); + } + async ensure(obj, prop, args) { + try { + const value = obj[prop]; + if (typeof value === "function") { + return value.apply(obj, args); + } + return value; + } catch (ex) { + if (!(ex instanceof MissingDataException)) { + throw ex; + } + await this.requestRange(ex.begin, ex.end); + return this.ensure(obj, prop, args); + } + } + requestRange(begin, end) { + return this.streamManager.requestRange(begin, end); + } + requestLoadedStream(noFetch = false) { + return this.streamManager.requestAllChunks(noFetch); + } + sendProgressiveData(chunk) { + this.streamManager.onReceiveData({ + chunk + }); + } + terminate(reason) { + this.streamManager.abort(reason); + } +} + +;// ./src/shared/message_handler.js + +const CallbackKind = { + DATA: 1, + ERROR: 2 +}; +const StreamKind = { + CANCEL: 1, + CANCEL_COMPLETE: 2, + CLOSE: 3, + ENQUEUE: 4, + ERROR: 5, + PULL: 6, + PULL_COMPLETE: 7, + START_COMPLETE: 8 +}; +function onFn() {} +function wrapReason(ex) { + if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) { + return ex; + } + if (!(ex instanceof Error || typeof ex === "object" && ex !== null)) { + unreachable('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); + } + switch (ex.name) { + case "AbortException": + return new AbortException(ex.message); + case "InvalidPDFException": + return new InvalidPDFException(ex.message); + case "PasswordException": + return new PasswordException(ex.message, ex.code); + case "ResponseException": + return new ResponseException(ex.message, ex.status, ex.missing); + case "UnknownErrorException": + return new UnknownErrorException(ex.message, ex.details); + } + return new UnknownErrorException(ex.message, ex.toString()); +} +class MessageHandler { + #messageAC = new AbortController(); + constructor(sourceName, targetName, comObj) { + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); + comObj.addEventListener("message", this.#onMessage.bind(this), { + signal: this.#messageAC.signal + }); + } + #onMessage({ + data + }) { + if (data.targetName !== this.sourceName) { + return; + } + if (data.stream) { + this.#processStreamMessage(data); + return; + } + if (data.callback) { + const callbackId = data.callbackId; + const capability = this.callbackCapabilities[callbackId]; + if (!capability) { + throw new Error(`Cannot resolve callback ${callbackId}`); + } + delete this.callbackCapabilities[callbackId]; + if (data.callback === CallbackKind.DATA) { + capability.resolve(data.data); + } else if (data.callback === CallbackKind.ERROR) { + capability.reject(wrapReason(data.reason)); + } else { + throw new Error("Unexpected callback case"); + } + return; + } + const action = this.actionHandler[data.action]; + if (!action) { + throw new Error(`Unknown action from worker: ${data.action}`); + } + if (data.callbackId) { + const sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + Promise.try(action, data.data).then(function (result) { + comObj.postMessage({ + sourceName, + targetName, + callback: CallbackKind.DATA, + callbackId: data.callbackId, + data: result + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + callback: CallbackKind.ERROR, + callbackId: data.callbackId, + reason: wrapReason(reason) + }); + }); + return; + } + if (data.streamId) { + this.#createStreamSink(data); + return; + } + action(data.data); + } + on(actionName, handler) { + const ah = this.actionHandler; + if (ah[actionName]) { + throw new Error(`There is already an actionName called "${actionName}"`); + } + ah[actionName] = handler; + } + send(actionName, data, transfers) { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data + }, transfers); + } + sendWithPromise(actionName, data, transfers) { + const callbackId = this.callbackId++; + const capability = Promise.withResolvers(); + this.callbackCapabilities[callbackId] = capability; + try { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + callbackId, + data + }, transfers); + } catch (ex) { + capability.reject(ex); + } + return capability.promise; + } + sendWithStream(actionName, data, queueingStrategy, transfers) { + const streamId = this.streamId++, + sourceName = this.sourceName, + targetName = this.targetName, + comObj = this.comObj; + return new ReadableStream({ + start: controller => { + const startCapability = Promise.withResolvers(); + this.streamControllers[streamId] = { + controller, + startCall: startCapability, + pullCall: null, + cancelCall: null, + isClosed: false + }; + comObj.postMessage({ + sourceName, + targetName, + action: actionName, + streamId, + data, + desiredSize: controller.desiredSize + }, transfers); + return startCapability.promise; + }, + pull: controller => { + const pullCapability = Promise.withResolvers(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: reason => { + assert(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = Promise.withResolvers(); + this.streamControllers[streamId].cancelCall = cancelCapability; + this.streamControllers[streamId].isClosed = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL, + streamId, + reason: wrapReason(reason) + }); + return cancelCapability.promise; + } + }, queueingStrategy); + } + #createStreamSink(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const self = this, + action = this.actionHandler[data.action]; + const streamSink = { + enqueue(chunk, size = 1, transfers) { + if (this.isCancelled) { + return; + } + const lastDesiredSize = this.desiredSize; + this.desiredSize -= size; + if (lastDesiredSize > 0 && this.desiredSize <= 0) { + this.sinkCapability = Promise.withResolvers(); + this.ready = this.sinkCapability.promise; + } + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ENQUEUE, + streamId, + chunk + }, transfers); + }, + close() { + if (this.isCancelled) { + return; + } + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CLOSE, + streamId + }); + delete self.streamSinks[streamId]; + }, + error(reason) { + assert(reason instanceof Error, "error must have a valid reason"); + if (this.isCancelled) { + return; + } + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ERROR, + streamId, + reason: wrapReason(reason) + }); + }, + sinkCapability: Promise.withResolvers(), + onPull: null, + onCancel: null, + isCancelled: false, + desiredSize: data.desiredSize, + ready: null + }; + streamSink.sinkCapability.resolve(); + streamSink.ready = streamSink.sinkCapability.promise; + this.streamSinks[streamId] = streamSink; + Promise.try(action, data.data, streamSink).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + } + #processStreamMessage(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const streamController = this.streamControllers[streamId], + streamSink = this.streamSinks[streamId]; + switch (data.stream) { + case StreamKind.START_COMPLETE: + if (data.success) { + streamController.startCall.resolve(); + } else { + streamController.startCall.reject(wrapReason(data.reason)); + } + break; + case StreamKind.PULL_COMPLETE: + if (data.success) { + streamController.pullCall.resolve(); + } else { + streamController.pullCall.reject(wrapReason(data.reason)); + } + break; + case StreamKind.PULL: + if (!streamSink) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + break; + } + if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { + streamSink.sinkCapability.resolve(); + } + streamSink.desiredSize = data.desiredSize; + Promise.try(streamSink.onPull || onFn).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + break; + case StreamKind.ENQUEUE: + assert(streamController, "enqueue should have stream controller"); + if (streamController.isClosed) { + break; + } + streamController.controller.enqueue(data.chunk); + break; + case StreamKind.CLOSE: + assert(streamController, "close should have stream controller"); + if (streamController.isClosed) { + break; + } + streamController.isClosed = true; + streamController.controller.close(); + this.#deleteStreamController(streamController, streamId); + break; + case StreamKind.ERROR: + assert(streamController, "error should have stream controller"); + streamController.controller.error(wrapReason(data.reason)); + this.#deleteStreamController(streamController, streamId); + break; + case StreamKind.CANCEL_COMPLETE: + if (data.success) { + streamController.cancelCall.resolve(); + } else { + streamController.cancelCall.reject(wrapReason(data.reason)); + } + this.#deleteStreamController(streamController, streamId); + break; + case StreamKind.CANCEL: + if (!streamSink) { + break; + } + const dataReason = wrapReason(data.reason); + Promise.try(streamSink.onCancel || onFn, dataReason).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + streamSink.sinkCapability.reject(dataReason); + streamSink.isCancelled = true; + delete this.streamSinks[streamId]; + break; + default: + throw new Error("Unexpected stream case"); + } + } + async #deleteStreamController(streamController, streamId) { + await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]); + delete this.streamControllers[streamId]; + } + destroy() { + this.#messageAC?.abort(); + this.#messageAC = null; + } +} + +;// ./src/core/writer.js + + + + + + + +async function writeObject(ref, obj, buffer, { + encrypt = null, + encryptRef = null +}) { + const transform = encrypt && encryptRef !== ref ? encrypt.createCipherTransform(ref.num, ref.gen) : null; + buffer.push(`${ref.num} ${ref.gen} obj\n`); + await writeValue(obj, buffer, transform); + buffer.push("\nendobj\n"); +} +async function writeDict(dict, buffer, transform) { + buffer.push("<<"); + for (const [key, rawObj] of dict.getRawEntries()) { + buffer.push(` /${escapePDFName(key)} `); + await writeValue(rawObj, buffer, transform); + } + buffer.push(">>"); +} +async function writeStream(stream, buffer, transform) { + stream = stream.getOriginalStream(); + stream.reset(); + let bytes = stream.getBytes(); + const { + dict + } = stream; + const [filter, params] = await Promise.all([dict.getAsync("Filter"), dict.getAsync("DecodeParms")]); + const filterZero = Array.isArray(filter) ? await dict.xref.fetchIfRefAsync(filter[0]) : filter; + const isFilterZeroFlateDecode = isName(filterZero, "FlateDecode"); + const MIN_LENGTH_FOR_COMPRESSING = 256; + if (bytes.length >= MIN_LENGTH_FOR_COMPRESSING && !isFilterZeroFlateDecode) { + try { + const cs = new CompressionStream("deflate"); + const writer = cs.writable.getWriter(); + await writer.ready; + writer.write(bytes).then(async () => { + await writer.ready; + await writer.close(); + }).catch(() => {}); + bytes = await new Response(cs.readable).bytes(); + let newFilter, newParams; + if (!filter) { + newFilter = Name.get("FlateDecode"); + } else if (!isFilterZeroFlateDecode) { + newFilter = Array.isArray(filter) ? [Name.get("FlateDecode"), ...filter] : [Name.get("FlateDecode"), filter]; + if (params) { + newParams = Array.isArray(params) ? [null, ...params] : [null, params]; + } + } + if (newFilter) { + dict.set("Filter", newFilter); + } + if (newParams) { + dict.set("DecodeParms", newParams); + } + } catch (ex) { + info(`writeStream - cannot compress data: "${ex}".`); + } + } + let string = bytesToString(bytes); + if (transform) { + string = transform.encryptString(string); + } + dict.set("Length", string.length); + await writeDict(dict, buffer, transform); + buffer.push(" stream\n", string, "\nendstream"); +} +async function writeArray(array, buffer, transform) { + buffer.push("["); + for (let i = 0, ii = array.length; i < ii; i++) { + await writeValue(array[i], buffer, transform); + if (i < ii - 1) { + buffer.push(" "); + } + } + buffer.push("]"); +} +async function writeValue(value, buffer, transform) { + if (value instanceof Name) { + buffer.push(`/${escapePDFName(value.name)}`); + } else if (value instanceof Ref) { + buffer.push(`${value.num} ${value.gen} R`); + } else if (Array.isArray(value) || ArrayBuffer.isView(value)) { + await writeArray(value, buffer, transform); + } else if (typeof value === "string") { + if (transform) { + value = transform.encryptString(value); + } + buffer.push(`(${escapeString(value)})`); + } else if (typeof value === "number") { + buffer.push(value.toString()); + } else if (typeof value === "boolean") { + buffer.push(value.toString()); + } else if (value instanceof Dict) { + await writeDict(value, buffer, transform); + } else if (value instanceof BaseStream) { + await writeStream(value, buffer, transform); + } else if (value === null) { + buffer.push("null"); + } else { + warn(`Unhandled value in writer: ${typeof value}, please file a bug.`); + } +} +function writeInt(number, size, offset, buffer) { + for (let i = size + offset - 1; i > offset - 1; i--) { + buffer[i] = number & 0xff; + number >>= 8; + } + return offset + size; +} +function writeString(string, offset, buffer) { + const ii = string.length; + for (let i = 0; i < ii; i++) { + buffer[offset + i] = string.charCodeAt(i) & 0xff; + } + return offset + ii; +} +function computeMD5(filesize, xrefInfo) { + const time = Math.floor(Date.now() / 1000); + const filename = xrefInfo.filename || ""; + const md5Buffer = [time.toString(), filename, filesize.toString(), ...xrefInfo.infoMap.values()]; + const md5BufferLen = Math.sumPrecise(md5Buffer.map(str => str.length)); + const array = new Uint8Array(md5BufferLen); + let offset = 0; + for (const str of md5Buffer) { + offset = writeString(str, offset, array); + } + return bytesToString(calculateMD5(array, 0, array.length)); +} +function writeXFADataForAcroform(str, changes) { + const xml = new SimpleXMLParser({ + hasAttributes: true + }).parseFromString(str); + for (const { + xfa + } of changes) { + if (!xfa) { + continue; + } + const { + path, + value + } = xfa; + if (!path) { + continue; + } + const nodePath = parseXFAPath(path); + let node = xml.documentElement.searchNode(nodePath, 0); + if (!node && nodePath.length > 1) { + node = xml.documentElement.searchNode([nodePath.at(-1)], 0); + } + if (node) { + node.childNodes = Array.isArray(value) ? value.map(val => new SimpleDOMNode("value", val)) : [new SimpleDOMNode("#text", value)]; + } else { + warn(`Node not found for path: ${path}`); + } + } + const buffer = []; + xml.documentElement.dump(buffer); + return buffer.join(""); +} +async function updateAcroform({ + xref, + acroForm, + acroFormRef, + hasXfa, + hasXfaDatasetsEntry, + xfaDatasetsRef, + needAppearances, + changes +}) { + if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) { + warn("XFA - Cannot save it"); + } + if (!needAppearances && (!hasXfa || !xfaDatasetsRef || hasXfaDatasetsEntry)) { + return; + } + const dict = acroForm.clone(); + if (hasXfa && !hasXfaDatasetsEntry) { + const newXfa = acroForm.get("XFA").slice(); + newXfa.splice(2, 0, "datasets"); + newXfa.splice(3, 0, xfaDatasetsRef); + dict.set("XFA", newXfa); + } + if (needAppearances) { + dict.set("NeedAppearances", true); + } + changes.put(acroFormRef, { + data: dict + }); +} +function updateXFA({ + xfaData, + xfaDatasetsRef, + changes, + xref +}) { + if (xfaData === null) { + const datasets = xref.fetchIfRef(xfaDatasetsRef); + xfaData = writeXFADataForAcroform(datasets.getString(), changes); + } + const xfaDataStream = new StringStream(xfaData); + xfaDataStream.dict = new Dict(xref); + xfaDataStream.dict.setIfName("Type", "EmbeddedFile"); + changes.put(xfaDatasetsRef, { + data: xfaDataStream + }); +} +async function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) { + buffer.push("xref\n"); + const indexes = getIndexes(newRefs); + let indexesPosition = 0; + for (const { + ref, + data + } of newRefs) { + if (ref.num === indexes[indexesPosition]) { + buffer.push(`${indexes[indexesPosition]} ${indexes[indexesPosition + 1]}\n`); + indexesPosition += 2; + } + if (data !== null) { + buffer.push(`${baseOffset.toString().padStart(10, "0")} ${Math.min(ref.gen, 0xffff).toString().padStart(5, "0")} n\r\n`); + baseOffset += data.length; + } else { + buffer.push(`0000000000 ${Math.min(ref.gen + 1, 0xffff).toString().padStart(5, "0")} f\r\n`); + } + } + computeIDs(baseOffset, xrefInfo, newXref); + buffer.push("trailer\n"); + await writeDict(newXref, buffer, null); + buffer.push("\nstartxref\n", baseOffset.toString(), "\n%%EOF\n"); +} +function getIndexes(newRefs) { + const indexes = []; + for (const { + ref + } of newRefs) { + if (ref.num === indexes.at(-2) + indexes.at(-1)) { + indexes[indexes.length - 1] += 1; + } else { + indexes.push(ref.num, 1); + } + } + return indexes; +} +async function getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) { + const xrefTableData = []; + let maxOffset = 0; + let maxGen = 0; + for (const { + ref, + data, + objStreamRef, + index + } of newRefs) { + let gen; + maxOffset = Math.max(maxOffset, baseOffset); + if (objStreamRef) { + gen = index; + xrefTableData.push([2, objStreamRef.num, gen]); + } else if (data !== null) { + gen = Math.min(ref.gen, 0xffff); + xrefTableData.push([1, baseOffset, gen]); + baseOffset += data.length; + } else { + gen = Math.min(ref.gen + 1, 0xffff); + xrefTableData.push([0, 0, gen]); + } + maxGen = Math.max(maxGen, gen); + } + newXref.set("Index", getIndexes(newRefs)); + const offsetSize = getSizeInBytes(maxOffset); + const maxGenSize = getSizeInBytes(maxGen); + const sizes = [1, offsetSize, maxGenSize]; + newXref.set("W", sizes); + computeIDs(baseOffset, xrefInfo, newXref); + const structSize = Math.sumPrecise(sizes); + const data = new Uint8Array(structSize * xrefTableData.length); + const stream = new Stream(data); + stream.dict = newXref; + let offset = 0; + for (const [type, objOffset, gen] of xrefTableData) { + offset = writeInt(type, sizes[0], offset, data); + offset = writeInt(objOffset, sizes[1], offset, data); + offset = writeInt(gen, sizes[2], offset, data); + } + await writeObject(xrefInfo.newRef, stream, buffer, {}); + buffer.push("startxref\n", baseOffset.toString(), "\n%%EOF\n"); +} +function computeIDs(baseOffset, xrefInfo, newXref) { + if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) { + const md5 = computeMD5(baseOffset, xrefInfo); + newXref.set("ID", [xrefInfo.fileIds[0] || md5, md5]); + } +} +function getTrailerDict(xrefInfo, changes, useXrefStream) { + const newXref = new Dict(null); + newXref.setIfDefined("Prev", xrefInfo?.startXRef); + const refForXrefTable = xrefInfo.newRef; + if (useXrefStream) { + changes.put(refForXrefTable, { + data: "" + }); + newXref.set("Size", refForXrefTable.num + 1); + newXref.setIfName("Type", "XRef"); + } else { + newXref.set("Size", refForXrefTable.num); + } + newXref.setIfDefined("Root", xrefInfo?.rootRef); + newXref.setIfDefined("Info", xrefInfo?.infoRef); + newXref.setIfDefined("Encrypt", xrefInfo?.encryptRef); + return newXref; +} +async function writeChanges(changes, xref, buffer = []) { + const newRefs = []; + for (const [ref, { + data, + objStreamRef, + index + }] of changes.items()) { + if (objStreamRef) { + newRefs.push({ + ref, + data, + objStreamRef, + index + }); + continue; + } + if (data === null || typeof data === "string") { + newRefs.push({ + ref, + data + }); + continue; + } + await writeObject(ref, data, buffer, xref); + newRefs.push({ + ref, + data: buffer.join("") + }); + buffer.length = 0; + } + return newRefs.sort((a, b) => a.ref.num - b.ref.num); +} +async function incrementalUpdate({ + originalData, + xrefInfo, + changes, + xref = null, + hasXfa = false, + xfaDatasetsRef = null, + hasXfaDatasetsEntry = false, + needAppearances, + acroFormRef = null, + acroForm = null, + xfaData = null, + useXrefStream = false +}) { + await updateAcroform({ + xref, + acroForm, + acroFormRef, + hasXfa, + hasXfaDatasetsEntry, + xfaDatasetsRef, + needAppearances, + changes + }); + if (hasXfa) { + updateXFA({ + xfaData, + xfaDatasetsRef, + changes, + xref + }); + } + const newXref = getTrailerDict(xrefInfo, changes, useXrefStream); + const buffer = []; + const newRefs = await writeChanges(changes, xref, buffer); + let baseOffset = originalData.length; + const lastByte = originalData.at(-1); + if (lastByte !== 0x0a && lastByte !== 0x0d) { + buffer.push("\n"); + baseOffset += 1; + } + for (const { + data + } of newRefs) { + if (data !== null) { + buffer.push(data); + } + } + await (useXrefStream ? getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) : getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer)); + const totalLength = originalData.length + Math.sumPrecise(buffer.map(str => str.length)); + const array = new Uint8Array(totalLength); + array.set(originalData); + let offset = originalData.length; + for (const str of buffer) { + offset = writeString(str, offset, array); + } + return array; +} + +;// ./src/core/editor/pdf_editor.js + + + + + + + + +const MAX_LEAVES_PER_PAGES_NODE = 16; +const MAX_IN_NAME_TREE_NODE = 64; +class PageData { + constructor(page, documentData) { + this.page = page; + this.documentData = documentData; + this.annotations = null; + this.pointingNamedDestinations = null; + documentData.pagesMap.put(page.ref, this); + } +} +class DocumentData { + constructor(document) { + this.document = document; + this.destinations = null; + this.pageLabels = null; + this.pagesMap = new RefSetCache(); + this.oldRefMapping = new RefSetCache(); + this.dedupNamedDestinations = new Map(); + this.usedNamedDestinations = new Set(); + this.postponedRefCopies = new RefSetCache(); + this.usedStructParents = new Set(); + this.oldStructParentMapping = new Map(); + this.structTreeRoot = null; + this.parentTree = null; + this.idTree = null; + this.roleMap = null; + this.classMap = null; + this.namespaces = null; + this.structTreeAF = null; + this.structTreePronunciationLexicon = []; + this.acroForm = null; + this.acroFormDefaultAppearance = ""; + this.acroFormDefaultResources = null; + this.acroFormQ = 0; + this.hasSignatureAnnotations = false; + this.fieldToParent = new RefSetCache(); + this.outline = null; + } +} +class XRefWrapper { + constructor(entries, getNewRef) { + this.entries = entries; + this._getNewRef = getNewRef; + } + fetch(ref) { + return ref instanceof Ref ? this.entries[ref.num] : ref; + } + fetchIfRefAsync(ref) { + return Promise.resolve(this.fetch(ref)); + } + fetchIfRef(ref) { + return this.fetch(ref); + } + fetchAsync(ref) { + return Promise.resolve(this.fetch(ref)); + } + getNewTemporaryRef() { + return this._getNewRef(); + } +} +class PDFEditor { + hasSingleFile = false; + #newAnnotationsParams = null; + currentDocument = null; + oldPages = []; + newPages = []; + xref = [null]; + xrefWrapper = new XRefWrapper(this.xref, () => this.newRef); + newRefCount = 1; + namesDict = null; + version = "1.7"; + pageLabels = null; + namedDestinations = new Map(); + parentTree = new Map(); + structTreeKids = []; + idTree = new Map(); + classMap = new Dict(); + roleMap = new Dict(); + namespaces = new Map(); + structTreeAF = []; + structTreePronunciationLexicon = []; + fields = []; + acroFormDefaultAppearance = ""; + acroFormDefaultResources = null; + acroFormNeedAppearances = false; + acroFormSigFlags = 0; + acroFormCalculationOrder = null; + acroFormQ = 0; + outlineItems = null; + constructor({ + useObjectStreams = true, + title = "", + author = "" + } = {}) { + [this.rootRef, this.rootDict] = this.newDict; + [this.infoRef, this.infoDict] = this.newDict; + [this.pagesRef, this.pagesDict] = this.newDict; + this.useObjectStreams = useObjectStreams; + this.objStreamRefs = useObjectStreams ? new Set() : null; + this.title = title; + this.author = author; + } + get newRef() { + const ref = Ref.get(this.newRefCount++, 0); + return ref; + } + get newDict() { + const ref = this.newRef; + const dict = this.xref[ref.num] = new Dict(); + return [ref, dict]; + } + async #cloneObject(obj, xref) { + const ref = this.newRef; + this.xref[ref.num] = await this.#collectDependencies(obj, true, xref); + return ref; + } + cloneDict(dict) { + const newDict = dict.clone(); + newDict.xref = this.xrefWrapper; + return newDict; + } + async #collectDependencies(obj, mustClone, xref) { + if (obj instanceof Ref) { + const { + currentDocument: { + oldRefMapping + } + } = this; + let newRef = oldRefMapping.get(obj); + if (newRef) { + return newRef; + } + const oldRef = obj; + obj = await xref.fetchAsync(oldRef); + if (typeof obj === "number") { + return obj; + } + newRef = this.newRef; + oldRefMapping.put(oldRef, newRef); + this.xref[newRef.num] = await this.#collectDependencies(obj, true, xref); + return newRef; + } + const promises = []; + const { + currentDocument: { + postponedRefCopies + } + } = this; + if (Array.isArray(obj)) { + if (mustClone) { + obj = obj.slice(); + } + for (let i = 0, ii = obj.length; i < ii; i++) { + const postponedActions = obj[i] instanceof Ref && postponedRefCopies.get(obj[i]); + if (postponedActions) { + postponedActions.push(ref => obj[i] = ref); + continue; + } + promises.push(this.#collectDependencies(obj[i], true, xref).then(newObj => obj[i] = newObj)); + } + await Promise.all(promises); + return obj; + } + let dict; + if (obj instanceof BaseStream) { + ({ + dict + } = obj = obj.getOriginalStream().clone()); + dict.xref = this.xrefWrapper; + } else if (obj instanceof Dict) { + if (mustClone) { + obj = obj.clone(); + obj.xref = this.xrefWrapper; + } + dict = obj; + } + if (dict) { + for (const [key, rawObj] of dict.getRawEntries()) { + const postponedActions = rawObj instanceof Ref && postponedRefCopies.get(rawObj); + if (postponedActions) { + postponedActions.push(ref => dict.set(key, ref)); + continue; + } + promises.push(this.#collectDependencies(rawObj, true, xref).then(newObj => dict.set(key, newObj))); + } + await Promise.all(promises); + } + return obj; + } + async #cloneStructTreeNode(parentStructRef, node, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles, visited = new RefSet()) { + const { + currentDocument: { + pagesMap, + oldRefMapping + } + } = this; + const pg = node.getRaw("Pg"); + if (pg instanceof Ref && !pagesMap.has(pg)) { + return null; + } + let kids; + const k = kids = node.getRaw("K"); + if (k instanceof Ref) { + if (visited.has(k)) { + return null; + } + kids = await xref.fetchAsync(k); + if (!Array.isArray(kids)) { + kids = [k]; + } + } + kids = Array.isArray(kids) ? kids : [kids]; + const newKids = []; + const structElemIndices = []; + for (let kid of kids) { + const kidRef = kid instanceof Ref ? kid : null; + if (kidRef) { + if (visited.has(kidRef)) { + continue; + } + visited.put(kidRef); + kid = await xref.fetchAsync(kidRef); + } + if (typeof kid === "number") { + newKids.push(kid); + continue; + } + if (!(kid instanceof Dict)) { + continue; + } + const pgRef = kid.getRaw("Pg"); + if (pgRef instanceof Ref && !pagesMap.has(pgRef)) { + continue; + } + const type = kid.get("Type"); + if (!type || isName(type, "StructElem")) { + let setAsSpan = false; + if (kidRef && removedStructElements.has(kidRef)) { + if (!isName(kid.get("S"), "Link")) { + continue; + } + setAsSpan = true; + } + const newKidRef = await this.#cloneStructTreeNode(kidRef, kid, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles, visited); + if (newKidRef) { + structElemIndices.push(newKids.length); + newKids.push(newKidRef); + if (kidRef) { + oldRefMapping.put(kidRef, newKidRef); + } + if (setAsSpan) { + this.xref[newKidRef.num].setIfName("S", "Span"); + } + } + continue; + } + if (isName(type, "OBJR")) { + if (!kidRef) { + continue; + } + const newKidRef = oldRefMapping.get(kidRef); + if (!newKidRef) { + continue; + } + const newKid = this.xref[newKidRef.num]; + const objRef = newKid.getRaw("Obj"); + if (objRef instanceof Ref) { + const obj = this.xref[objRef.num]; + if (obj instanceof Dict && !obj.has("StructParent") && parentStructRef) { + const structParent = this.parentTree.size; + this.parentTree.set(structParent, [oldRefMapping, parentStructRef]); + obj.set("StructParent", structParent); + } + } + newKids.push(newKidRef); + continue; + } + if (isName(type, "MCR")) { + const newKid = await this.#collectDependencies(kidRef || kid, true, xref); + newKids.push(newKid); + continue; + } + if (kidRef) { + const newKidRef = await this.#collectDependencies(kidRef, true, xref); + newKids.push(newKidRef); + } + } + if (kids.length !== 0 && newKids.length === 0) { + return null; + } + const newNodeRef = this.newRef; + const newNode = this.xref[newNodeRef.num] = this.cloneDict(node); + newNode.delete("ID"); + newNode.delete("C"); + newNode.delete("K"); + newNode.delete("P"); + newNode.delete("S"); + await this.#collectDependencies(newNode, false, xref); + const classNames = node.get("C"); + if (classNames instanceof Name) { + const newClassName = dedupClasses.get(classNames.name); + if (newClassName) { + newNode.set("C", Name.get(newClassName)); + } else { + newNode.set("C", classNames); + } + } else if (Array.isArray(classNames)) { + const newClassNames = []; + for (const className of classNames) { + if (className instanceof Name) { + const newClassName = dedupClasses.get(className.name); + if (newClassName) { + newClassNames.push(Name.get(newClassName)); + } else { + newClassNames.push(className); + } + } + } + newNode.set("C", newClassNames); + } + const roleName = node.get("S"); + if (roleName instanceof Name) { + const newRoleName = dedupRoles.get(roleName.name); + if (newRoleName) { + newNode.set("S", Name.get(newRoleName)); + } else { + newNode.set("S", roleName); + } + } + const id = node.get("ID"); + if (typeof id === "string") { + const stringId = stringToPDFString(id, false); + const newId = dedupIDs.get(stringId); + if (newId) { + newNode.set("ID", stringToAsciiOrUTF16BE(newId)); + } else { + newNode.set("ID", id); + } + } + let attributes = newNode.get("A"); + if (attributes) { + if (!Array.isArray(attributes)) { + attributes = [attributes]; + } + for (let attr of attributes) { + attr = this.xrefWrapper.fetch(attr); + if (isName(attr.get("O"), "Table") && attr.has("Headers")) { + const headers = this.xrefWrapper.fetch(attr.getRaw("Headers")); + if (Array.isArray(headers)) { + for (let i = 0, ii = headers.length; i < ii; i++) { + const newId = dedupIDs.get(stringToPDFString(headers[i], false)); + if (newId) { + headers[i] = newId; + } + } + } + } + } + } + for (const index of structElemIndices) { + const structElemRef = newKids[index]; + const structElem = this.xref[structElemRef.num]; + structElem.set("P", newNodeRef); + } + if (newKids.length === 1) { + newNode.set("K", newKids[0]); + } else if (newKids.length > 1) { + newNode.set("K", newKids); + } + return newNodeRef; + } + async extractPages(pageInfos, annotationStorage, handler, task) { + const promises = []; + let newIndex = 0; + this.hasSingleFile = pageInfos.length === 1; + const allDocumentData = []; + if (annotationStorage) { + this.#newAnnotationsParams = { + handler, + task, + newAnnotationsByPage: getNewAnnotationsMap(annotationStorage), + imagesPromises: AnnotationFactory.generateImages(annotationStorage.values(), this.xrefWrapper, true) + }; + } + for (const { + document, + includePages, + excludePages, + pageIndices + } of pageInfos) { + if (!document) { + continue; + } + if (pageIndices) { + newIndex = -1; + } + const documentData = new DocumentData(document); + allDocumentData.push(documentData); + promises.push(this.#collectDocumentData(documentData)); + let keptIndices, keptRanges, deletedIndices, deletedRanges; + for (const page of includePages || []) { + if (Array.isArray(page)) { + (keptRanges ||= []).push(page); + } else { + (keptIndices ||= new Set()).add(page); + } + } + for (const page of excludePages || []) { + if (Array.isArray(page)) { + (deletedRanges ||= []).push(page); + } else { + (deletedIndices ||= new Set()).add(page); + } + } + let pageIndex = 0; + for (let i = 0, ii = document.numPages; i < ii; i++) { + if (deletedIndices?.has(i)) { + continue; + } + if (deletedRanges) { + let isDeleted = false; + for (const [start, end] of deletedRanges) { + if (i >= start && i <= end) { + isDeleted = true; + break; + } + } + if (isDeleted) { + continue; + } + } + let takePage = false; + if (keptIndices) { + takePage = keptIndices.has(i); + } + if (!takePage && keptRanges) { + for (const [start, end] of keptRanges) { + if (i >= start && i <= end) { + takePage = true; + break; + } + } + } + if (!takePage && !keptIndices && !keptRanges) { + takePage = true; + } + if (!takePage) { + continue; + } + let newPageIndex; + if (pageIndices) { + newPageIndex = pageIndices[pageIndex++]; + } + if (newPageIndex === undefined) { + if (newIndex !== -1) { + newPageIndex = newIndex++; + } else { + for (newPageIndex = 0; this.oldPages[newPageIndex] !== undefined; newPageIndex++) {} + } + } + this.oldPages[newPageIndex] = null; + promises.push(document.getPage(i).then(page => { + this.oldPages[newPageIndex] = new PageData(page, documentData); + })); + } + } + await Promise.all(promises); + promises.length = 0; + this.#collectValidDestinations(allDocumentData); + this.#collectOutlineDestinations(allDocumentData); + this.#collectPageLabels(); + for (const page of this.oldPages) { + promises.push(this.#postCollectPageData(page)); + } + await Promise.all(promises); + this.#findDuplicateNamedDestinations(); + this.#setPostponedRefCopies(allDocumentData); + for (let i = 0, ii = this.oldPages.length; i < ii; i++) { + this.newPages[i] = await this.#makePageCopy(i, null); + } + this.#fixPostponedRefCopies(allDocumentData); + await this.#mergeStructTrees(allDocumentData); + await this.#mergeAcroForms(allDocumentData); + this.#buildOutline(allDocumentData); + return this.writePDF(); + } + async #collectDocumentData(documentData) { + const { + document: { + pdfManager, + xref + } + } = documentData; + await Promise.all([pdfManager.ensureCatalog("destinations").then(destinations => documentData.destinations = destinations), pdfManager.ensureCatalog("rawPageLabels").then(pageLabels => documentData.pageLabels = pageLabels), pdfManager.ensureCatalog("structTreeRoot").then(structTreeRoot => documentData.structTreeRoot = structTreeRoot), pdfManager.ensureCatalog("acroForm").then(acroForm => documentData.acroForm = acroForm), pdfManager.ensureCatalog("documentOutlineForEditor").then(outline => documentData.outline = outline)]); + const structTreeRoot = documentData.structTreeRoot; + if (structTreeRoot) { + const rootDict = structTreeRoot.dict; + const parentTree = rootDict.get("ParentTree"); + if (parentTree) { + const numberTree = new NumberTree(parentTree, xref); + documentData.parentTree = numberTree.getAll(true); + } + const idTree = rootDict.get("IDTree"); + if (idTree) { + const nameTree = new NameTree(idTree, xref); + documentData.idTree = nameTree.getAll(true); + } + documentData.roleMap = rootDict.get("RoleMap") || null; + documentData.classMap = rootDict.get("ClassMap") || null; + let namespaces = rootDict.get("Namespaces") || null; + if (namespaces && !Array.isArray(namespaces)) { + namespaces = [namespaces]; + } + documentData.namespaces = namespaces; + documentData.structTreeAF = rootDict.get("AF") || null; + documentData.structTreePronunciationLexicon = rootDict.get("PronunciationLexicon") || null; + } + } + async #postCollectPageData(pageData) { + const { + page: { + xref, + annotations + }, + documentData: { + pagesMap, + destinations, + usedNamedDestinations, + fieldToParent + } + } = pageData; + if (!annotations) { + return; + } + const promises = []; + let newAnnotations = []; + let newIndex = 0; + let { + hasSignatureAnnotations + } = pageData.documentData; + for (const annotationRef of annotations) { + const newAnnotationIndex = newIndex++; + promises.push(xref.fetchIfRefAsync(annotationRef).then(async annotationDict => { + if (!isName(annotationDict.get("Subtype"), "Link")) { + if (isName(annotationDict.get("Subtype"), "Widget")) { + hasSignatureAnnotations ||= isName(annotationDict.get("FT"), "Sig"); + const parentRef = annotationDict.get("Parent") || null; + annotationDict.delete("Parent"); + fieldToParent.put(annotationRef, parentRef); + } + newAnnotations[newAnnotationIndex] = annotationRef; + return; + } + const action = annotationDict.get("A"); + const dest = action instanceof Dict ? action.get("D") : annotationDict.get("Dest"); + if (!dest || Array.isArray(dest) && (!(dest[0] instanceof Ref) || pagesMap.has(dest[0]))) { + newAnnotations[newAnnotationIndex] = annotationRef; + } else if (typeof dest === "string") { + const destString = stringToPDFString(dest, true); + if (destinations.has(destString)) { + newAnnotations[newAnnotationIndex] = annotationRef; + usedNamedDestinations.add(destString); + } + } + })); + } + await Promise.all(promises); + newAnnotations = newAnnotations.filter(annot => !!annot); + pageData.annotations = newAnnotations.length > 0 ? newAnnotations : null; + pageData.documentData.hasSignatureAnnotations ||= hasSignatureAnnotations; + } + #setPostponedRefCopies(allDocumentData) { + for (const { + postponedRefCopies, + pagesMap + } of allDocumentData) { + for (const oldPageRef of pagesMap.keys()) { + postponedRefCopies.put(oldPageRef, []); + } + } + } + #fixPostponedRefCopies(allDocumentData) { + for (const { + postponedRefCopies, + oldRefMapping + } of allDocumentData) { + for (const [oldRef, actions] of postponedRefCopies.items()) { + const newRef = oldRefMapping.get(oldRef); + for (const action of actions) { + action(newRef); + } + } + postponedRefCopies.clear(); + } + } + #visitObject(obj, callback, visited = new RefSet()) { + if (obj instanceof Ref) { + if (!visited.has(obj)) { + visited.put(obj); + this.#visitObject(this.xref[obj.num], callback, visited); + } + return; + } + if (Array.isArray(obj)) { + for (const item of obj) { + this.#visitObject(item, callback, visited); + } + return; + } + let dict; + if (obj instanceof BaseStream) { + ({ + dict + } = obj); + } else if (obj instanceof Dict) { + dict = obj; + } + if (dict) { + callback(dict); + for (const value of dict.getRawValues()) { + this.#visitObject(value, callback, visited); + } + } + } + async #mergeStructTrees(allDocumentData) { + let newStructParentId = 0; + const { + parentTree: newParentTree + } = this; + for (let i = 0, ii = this.newPages.length; i < ii; i++) { + const { + documentData: { + parentTree, + oldRefMapping, + oldStructParentMapping, + usedStructParents, + document: { + xref + } + } + } = this.oldPages[i]; + if (!parentTree) { + continue; + } + const pageRef = this.newPages[i]; + const pageDict = this.xref[pageRef.num]; + const visited = new RefSet(); + visited.put(pageRef); + this.#visitObject(pageDict, dict => { + const structParent = dict.get("StructParent") ?? dict.get("StructParents"); + if (typeof structParent !== "number") { + return; + } + usedStructParents.add(structParent); + let parent = parentTree.get(structParent); + const parentRef = parent instanceof Ref ? parent : null; + if (parentRef) { + const array = xref.fetch(parentRef); + if (Array.isArray(array)) { + parent = array; + } + } + if (Array.isArray(parent) && parent.every(ref => ref === null)) { + parent = null; + } + if (!parent) { + if (dict.has("StructParent")) { + dict.delete("StructParent"); + } else { + dict.delete("StructParents"); + } + return; + } + let newStructParent = oldStructParentMapping.get(structParent); + if (newStructParent === undefined) { + newStructParent = newStructParentId++; + oldStructParentMapping.set(structParent, newStructParent); + newParentTree.set(newStructParent, [oldRefMapping, parent]); + } + if (dict.has("StructParent")) { + dict.set("StructParent", newStructParent); + } else { + dict.set("StructParents", newStructParent); + } + }, visited); + } + const { + structTreeKids, + idTree: newIdTree, + classMap: newClassMap, + roleMap: newRoleMap, + namespaces: newNamespaces, + structTreeAF: newStructTreeAF, + structTreePronunciationLexicon: newStructTreePronunciationLexicon + } = this; + for (const documentData of allDocumentData) { + const { + document: { + xref + }, + oldRefMapping, + parentTree, + usedStructParents, + structTreeRoot, + idTree, + classMap, + roleMap, + namespaces, + structTreeAF, + structTreePronunciationLexicon + } = documentData; + if (!structTreeRoot) { + continue; + } + this.currentDocument = documentData; + const removedStructElements = new RefSet(); + for (const [key, value] of parentTree || []) { + if (!usedStructParents.has(key) && value instanceof Ref) { + removedStructElements.put(value); + } + } + const dedupIDs = new Map(); + for (const [id, nodeRef] of idTree || []) { + let _id = id; + if (newIdTree.has(id)) { + for (let i = 1;; i++) { + const newId = `${id}_${i}`; + if (!newIdTree.has(newId)) { + dedupIDs.set(id, newId); + _id = newId; + break; + } + } + } + newIdTree.set(_id, nodeRef); + } + const dedupClasses = new Map(); + if (classMap?.size > 0) { + for (let [className, classDict] of classMap) { + classDict = await this.#collectDependencies(classDict, true, xref); + if (newClassMap.has(className)) { + for (let i = 1;; i++) { + const newClassName = `${className}_${i}`; + if (!newClassMap.has(newClassName)) { + dedupClasses.set(className, newClassName); + className = newClassName; + break; + } + } + } + newClassMap.set(className, classDict); + } + } + const dedupRoles = new Map(); + if (roleMap?.size > 0) { + for (const [roleName, mappedName] of roleMap) { + const newMappedName = newRoleMap.get(roleName); + if (!newMappedName) { + newRoleMap.set(roleName, mappedName); + continue; + } + if (newMappedName === mappedName) { + continue; + } + for (let i = 1;; i++) { + const newRoleName = `${roleName}_${i}`; + if (!newRoleMap.has(newRoleName)) { + dedupRoles.set(roleName, newRoleName); + newRoleMap.set(newRoleName, mappedName); + break; + } + } + } + } + if (namespaces?.length > 0) { + for (const namespaceRef of namespaces) { + const namespace = await xref.fetchIfRefAsync(namespaceRef); + let ns = namespace.get("NS"); + if (!ns || newNamespaces.has(ns)) { + continue; + } + ns = stringToPDFString(ns, false); + const newNamespace = await this.#collectDependencies(namespace, true, xref); + newNamespaces.set(ns, newNamespace); + } + } + if (structTreeAF) { + for (const afRef of structTreeAF) { + newStructTreeAF.push(await this.#collectDependencies(afRef, true, xref)); + } + } + if (structTreePronunciationLexicon) { + for (const lexiconRef of structTreePronunciationLexicon) { + newStructTreePronunciationLexicon.push(await this.#collectDependencies(lexiconRef, true, xref)); + } + } + let kids = structTreeRoot.dict.get("K"); + if (!kids) { + continue; + } + kids = Array.isArray(kids) ? kids : [kids]; + for (let kid of kids) { + const kidRef = kid instanceof Ref ? kid : null; + if (kidRef && removedStructElements.has(kidRef)) { + continue; + } + kid = await xref.fetchIfRefAsync(kid); + const newKidRef = await this.#cloneStructTreeNode(kidRef, kid, xref, removedStructElements, dedupIDs, dedupClasses, dedupRoles); + if (newKidRef) { + structTreeKids.push(newKidRef); + } + } + for (const [id, nodeRef] of idTree || []) { + const newNodeRef = nodeRef instanceof Ref && oldRefMapping.get(nodeRef); + const newId = dedupIDs.get(id) || id; + if (newNodeRef) { + newIdTree.set(newId, newNodeRef); + } else { + newIdTree.delete(newId); + } + } + } + for (const [key, [oldRefMapping, parent]] of newParentTree) { + if (!parent) { + newParentTree.delete(key); + continue; + } + if (!Array.isArray(parent)) { + const newParent = oldRefMapping.get(parent); + if (newParent === undefined) { + newParentTree.delete(key); + } else { + newParentTree.set(key, newParent); + } + continue; + } + const newParents = parent.map(ref => ref instanceof Ref && oldRefMapping.get(ref) || null); + if (newParents.length === 0 || newParents.every(ref => ref === null)) { + newParentTree.delete(key); + continue; + } + newParentTree.set(key, newParents); + } + this.currentDocument = null; + } + #collectValidDestinations(allDocumentData) { + for (const documentData of allDocumentData) { + if (!documentData.destinations) { + continue; + } + const { + destinations, + pagesMap + } = documentData; + const newDestinations = documentData.destinations = new Map(); + for (const [key, dest] of Object.entries(destinations)) { + const pageRef = dest[0]; + const pageData = pageRef instanceof Ref && pagesMap.get(pageRef); + if (!pageData) { + continue; + } + (pageData.pointingNamedDestinations ||= new Set()).add(key); + newDestinations.set(key, dest); + } + } + } + #findDuplicateNamedDestinations() { + const { + namedDestinations + } = this; + const getUniqueDestinationName = name => { + if (!namedDestinations.has(name)) { + return name; + } + for (let i = 1;; i++) { + const dedupedName = `${name}_${i}`; + if (!namedDestinations.has(dedupedName)) { + return dedupedName; + } + } + }; + for (let i = 0, ii = this.oldPages.length; i < ii; i++) { + const page = this.oldPages[i]; + const { + documentData: { + destinations, + dedupNamedDestinations, + usedNamedDestinations + } + } = page; + let { + pointingNamedDestinations + } = page; + if (!pointingNamedDestinations) { + continue; + } + page.pointingNamedDestinations = pointingNamedDestinations = pointingNamedDestinations.intersection(usedNamedDestinations); + for (const pointingDest of pointingNamedDestinations) { + if (!usedNamedDestinations.has(pointingDest)) { + continue; + } + const dest = destinations.get(pointingDest).slice(); + if (!namedDestinations.has(pointingDest)) { + namedDestinations.set(pointingDest, dest); + continue; + } + const newName = getUniqueDestinationName(`${pointingDest}_p${i + 1}`); + dedupNamedDestinations.set(pointingDest, newName); + namedDestinations.set(newName, dest); + } + } + } + #fixNamedDestinations(annotations, dedupNamedDestinations) { + if (dedupNamedDestinations.size === 0) { + return; + } + const fixDestination = (dict, key, dest) => { + if (typeof dest === "string") { + dict.set(key, dedupNamedDestinations.get(stringToPDFString(dest, true)) || dest); + } + }; + for (const annotRef of annotations) { + const annotDict = this.xref[annotRef.num]; + if (!isName(annotDict.get("Subtype"), "Link")) { + continue; + } + const action = annotDict.get("A"); + if (action instanceof Dict && action.has("D")) { + const dest = action.get("D"); + fixDestination(action, "D", dest); + continue; + } + const dest = annotDict.get("Dest"); + fixDestination(annotDict, "Dest", dest); + } + } + #collectOutlineDestinations(allDocumentData) { + const collect = (items, destinations, usedNamedDestinations) => { + for (const item of items) { + if (typeof item.dest === "string" && destinations?.has(item.dest)) { + usedNamedDestinations.add(item.dest); + } + if (item.items.length > 0) { + collect(item.items, destinations, usedNamedDestinations); + } + } + }; + for (const documentData of allDocumentData) { + const { + outline, + destinations, + usedNamedDestinations + } = documentData; + if (outline?.length) { + collect(outline, destinations, usedNamedDestinations); + } + } + } + #isValidOutlineDest(item, documentData) { + const { + dest, + action, + url, + unsafeUrl, + attachment, + setOCGState + } = item; + if (action || url || unsafeUrl || attachment || setOCGState) { + return true; + } + if (!dest) { + return false; + } + if (typeof dest === "string") { + const name = documentData.dedupNamedDestinations.get(dest) || dest; + return this.namedDestinations.has(name); + } + if (Array.isArray(dest) && dest[0] instanceof Ref) { + return !!documentData.oldRefMapping.get(dest[0]); + } + return false; + } + #filterOutlineItems(items, documentData) { + const result = []; + for (const item of items) { + const filteredChildren = this.#filterOutlineItems(item.items, documentData); + const hasValidOwnDest = this.#isValidOutlineDest(item, documentData); + if (hasValidOwnDest || filteredChildren.length > 0) { + result.push({ + ...item, + dest: hasValidOwnDest ? item.dest : null, + items: filteredChildren, + _documentData: documentData + }); + } + } + return result; + } + #buildOutline(allDocumentData) { + const outlineItems = []; + for (const documentData of allDocumentData) { + const { + outline + } = documentData; + if (!outline?.length) { + continue; + } + outlineItems.push(...this.#filterOutlineItems(outline, documentData)); + } + this.outlineItems = outlineItems.length > 0 ? outlineItems : null; + } + async #setOutlineItemDest(itemDict, item) { + const { + dest, + rawDict + } = item; + const documentData = item._documentData; + if (dest) { + if (typeof dest === "string") { + const name = documentData.dedupNamedDestinations.get(dest) || dest; + itemDict.set("Dest", stringToAsciiOrUTF16BE(name)); + } else if (Array.isArray(dest)) { + const newDest = dest.slice(); + if (newDest[0] instanceof Ref) { + newDest[0] = documentData.oldRefMapping.get(newDest[0]) || newDest[0]; + } + itemDict.set("Dest", newDest); + } + return; + } + const actionDict = rawDict?.get("A"); + if (actionDict instanceof Dict) { + this.currentDocument = documentData; + const actionRef = await this.#cloneObject(actionDict, documentData.document.xref); + this.currentDocument = null; + itemDict.set("A", actionRef); + } + } + async #makeOutline() { + const { + outlineItems + } = this; + if (!outlineItems?.length) { + return; + } + const [outlineRootRef, outlineRootDict] = this.newDict; + outlineRootDict.setIfName("Type", "Outlines"); + const assignRefs = items => { + for (const item of items) { + [item._ref] = this.newDict; + if (item.items.length > 0) { + assignRefs(item.items); + } + } + }; + assignRefs(outlineItems); + const fillItems = async (items, parentRef) => { + let totalCount = 0; + for (let i = 0; i < items.length; i++) { + const item = items[i]; + const dict = this.xref[item._ref.num]; + dict.set("Title", stringToAsciiOrUTF16BE(item.title)); + dict.set("Parent", parentRef); + if (i > 0) { + dict.set("Prev", items[i - 1]._ref); + } + if (i < items.length - 1) { + dict.set("Next", items[i + 1]._ref); + } + if (item.items.length > 0) { + dict.set("First", item.items[0]._ref); + dict.set("Last", item.items.at(-1)._ref); + const childCount = await fillItems(item.items, item._ref); + if (item.count !== undefined) { + dict.set("Count", item.count < 0 ? -childCount : childCount); + } + totalCount += item.count !== undefined && item.count < 0 ? 1 : childCount + 1; + } else { + totalCount += 1; + } + await this.#setOutlineItemDest(dict, item); + const flags = (item.bold ? 2 : 0) | (item.italic ? 1 : 0); + if (flags !== 0) { + dict.set("F", flags); + } + if (item.color && (item.color[0] !== 0 || item.color[1] !== 0 || item.color[2] !== 0)) { + dict.set("C", [item.color[0] / 255, item.color[1] / 255, item.color[2] / 255]); + } + } + return totalCount; + }; + const totalCount = await fillItems(outlineItems, outlineRootRef); + outlineRootDict.set("First", outlineItems[0]._ref); + outlineRootDict.set("Last", outlineItems.at(-1)._ref); + outlineRootDict.set("Count", totalCount); + this.rootDict.set("Outlines", outlineRootRef); + } + async #mergeAcroForms(allDocumentData) { + this.#setAcroFormDefaultBasicValues(allDocumentData); + this.#setAcroFormDefaultAppearance(allDocumentData); + this.#setAcroFormQ(allDocumentData); + await this.#setAcroFormDefaultResources(allDocumentData); + const newFields = this.fields; + for (const documentData of allDocumentData) { + let fields = documentData.acroForm?.get("Fields") || null; + if (!fields && documentData.fieldToParent.size > 0) { + fields = this.#fixFields(documentData.fieldToParent, documentData.document.xref); + } + if (Array.isArray(fields) && fields.length > 0) { + this.currentDocument = documentData; + await this.#cloneFields(newFields, fields); + this.currentDocument = null; + } + } + this.#setAcroFormCalculationOrder(allDocumentData); + } + #setAcroFormQ(allDocumentData) { + let firstQ = 0; + let firstDocData = null; + for (const documentData of allDocumentData) { + const q = documentData.acroForm?.get("Q"); + if (typeof q !== "number" || q === 0) { + continue; + } + if (firstDocData?.acroFormQ > 0) { + documentData.acroFormQ = q; + continue; + } + if (firstQ === 0) { + firstQ = q; + firstDocData = documentData; + continue; + } + if (q === firstQ) { + continue; + } + firstDocData.acroFormQ ||= firstQ; + documentData.acroFormQ = q; + firstQ = 0; + } + if (firstQ > 0) { + this.acroFormQ = firstQ; + } + } + #setAcroFormDefaultBasicValues(allDocumentData) { + let sigFlags = 0; + let needAppearances = false; + for (const documentData of allDocumentData) { + if (!documentData.acroForm) { + continue; + } + const sf = documentData.acroForm.get("SigFlags"); + if (typeof sf === "number" && documentData.hasSignatureAnnotations) { + sigFlags |= sf; + } + if (documentData.acroForm.get("NeedAppearances") === true) { + needAppearances = true; + } + } + this.acroFormSigFlags = sigFlags; + this.acroFormNeedAppearances = needAppearances; + } + #setAcroFormCalculationOrder(allDocumentData) { + const calculationOrder = []; + for (const documentData of allDocumentData) { + const co = documentData.acroForm?.get("CO") || null; + if (!Array.isArray(co)) { + continue; + } + const { + oldRefMapping + } = documentData; + for (const coRef of co) { + const newCoRef = coRef instanceof Ref && oldRefMapping.get(coRef); + if (newCoRef) { + calculationOrder.push(newCoRef); + } + } + } + this.acroFormCalculationOrder = calculationOrder.length > 0 ? calculationOrder : null; + } + #setAcroFormDefaultAppearance(allDocumentData) { + let firstDA = null; + let firstDocData = null; + for (const documentData of allDocumentData) { + const da = documentData.acroForm?.get("DA") || null; + if (!da || typeof da !== "string") { + continue; + } + if (firstDocData?.acroFormDefaultAppearance) { + documentData.acroFormDefaultAppearance = da; + continue; + } + if (!firstDA) { + firstDA = da; + firstDocData = documentData; + continue; + } + if (da === firstDA) { + continue; + } + firstDocData.acroFormDefaultAppearance ||= firstDA; + documentData.acroFormDefaultAppearance = da; + firstDA = null; + } + if (firstDA) { + this.acroFormDefaultAppearance = firstDA; + } + } + async #setAcroFormDefaultResources(allDocumentData) { + let firstDR = null; + let firstDRRef = null; + let firstDocData = null; + for (const documentData of allDocumentData) { + const dr = documentData.acroForm?.get("DR") || null; + if (!dr || !(dr instanceof Dict)) { + continue; + } + if (firstDocData?.acroFormDefaultResources) { + documentData.acroFormDefaultResources = dr; + continue; + } + if (!firstDR) { + firstDR = dr; + firstDRRef = documentData.acroForm.getRaw("DR"); + firstDocData = documentData; + continue; + } + if (deepCompare(firstDR, dr)) { + continue; + } + firstDocData.acroFormDefaultResources ||= firstDR; + documentData.acroFormDefaultResources = dr; + firstDR = null; + firstDRRef = null; + } + if (firstDR) { + this.currentDocument = firstDocData; + this.acroFormDefaultResources = await this.#collectDependencies(firstDRRef, true, firstDocData.document.xref); + this.currentDocument = null; + } + } + #fixFields(fieldToParent, xref) { + const newFields = []; + const processed = new RefSet(); + for (const [fieldRef, parentRef] of fieldToParent) { + if (!parentRef) { + newFields.push(fieldRef); + continue; + } + let parent = parentRef; + let lastNonNullParent = parentRef; + while (true) { + parent = xref.fetchIfRef(parent)?.getRaw("Parent") || null; + if (!parent) { + break; + } + lastNonNullParent = parent; + } + if (lastNonNullParent instanceof Ref && !processed.has(lastNonNullParent)) { + newFields.push(lastNonNullParent); + processed.put(lastNonNullParent); + } + } + return newFields; + } + async #cloneFields(newFields, fields) { + const processed = new RefSet(); + const stack = [{ + kids: fields, + newKids: newFields, + pos: 0, + oldParentRef: null, + parentRef: null, + parent: null + }]; + const { + document: { + xref + }, + oldRefMapping, + fieldToParent, + acroFormDefaultAppearance, + acroFormDefaultResources, + acroFormQ + } = this.currentDocument; + const daToFix = []; + const drToFix = []; + while (stack.length > 0) { + const data = stack.at(-1); + const { + kids, + newKids, + parent, + pos + } = data; + if (pos === kids.length) { + stack.pop(); + if (newKids.length === 0 || !parent) { + continue; + } + const parentDict = this.xref[data.parentRef.num] = this.cloneDict(parent); + parentDict.delete("Parent"); + parentDict.delete("Kids"); + await this.#collectDependencies(parentDict, false, xref); + parentDict.set("Kids", newKids); + if (stack.length > 0) { + const lastData = stack.at(-1); + if (!lastData.parentRef && lastData.oldParentRef) { + const parentRef = lastData.parentRef = this.newRef; + parentDict.set("Parent", parentRef); + oldRefMapping.put(lastData.oldParentRef, parentRef); + } + lastData.newKids.push(data.parentRef); + } + continue; + } + const oldKidRef = kids[data.pos++]; + if (!(oldKidRef instanceof Ref) || processed.has(oldKidRef)) { + continue; + } + processed.put(oldKidRef); + const kid = xref.fetchIfRef(oldKidRef); + if (kid.has("Kids")) { + const kidsArray = kid.get("Kids"); + if (!Array.isArray(kidsArray)) { + continue; + } + stack.push({ + kids: kidsArray, + newKids: [], + pos: 0, + oldParentRef: oldKidRef, + parentRef: null, + parent: kid + }); + continue; + } + if (!fieldToParent.has(oldKidRef)) { + continue; + } + const newRef = oldRefMapping.get(oldKidRef); + if (!newRef) { + continue; + } + newKids.push(newRef); + if (!data.parentRef && data.oldParentRef) { + data.parentRef = this.newRef; + oldRefMapping.put(data.oldParentRef, data.parentRef); + } + const newKid = this.xref[newRef.num]; + if (data.parentRef) { + newKid.set("Parent", data.parentRef); + } + if (acroFormDefaultAppearance && isName(newKid.get("FT"), "Tx") && !newKid.has("DA")) { + daToFix.push(newKid); + } + if (acroFormDefaultResources && !newKid.has("Kids") && newKid.get("AP") instanceof Dict) { + drToFix.push(newKid); + } + if (acroFormQ && !newKid.has("Q")) { + newKid.set("Q", acroFormQ); + } + } + for (const field of daToFix) { + const da = getInheritableProperty({ + dict: field, + key: "DA" + }); + if (!da) { + field.set("DA", acroFormDefaultAppearance); + } + } + const resourcesValuesCache = new Map(); + for (const field of drToFix) { + const ap = field.get("AP"); + for (const value of ap.getValues()) { + if (!(value instanceof BaseStream)) { + continue; + } + let resources = value.dict.getRaw("Resources"); + if (!resources) { + const newResourcesRef = await resourcesValuesCache.getOrInsertComputed(acroFormDefaultResources, () => this.#cloneObject(acroFormDefaultResources, xref)); + value.dict.set("Resources", newResourcesRef); + continue; + } + resources = xref.fetchIfRef(resources); + for (const [resKey, resValue] of acroFormDefaultResources.getRawEntries()) { + if (!resources.has(resKey)) { + let newResValue = resValue; + if (resValue instanceof Ref) { + newResValue = await this.#collectDependencies(resValue, true, xref); + } else if (resValue instanceof Dict || resValue instanceof BaseStream || Array.isArray(resValue)) { + newResValue = await resourcesValuesCache.getOrInsertComputed(resValue, () => this.#cloneObject(resValue, xref)); + } + resources.set(resKey, newResValue); + } + } + } + } + } + async #collectPageLabels() { + if (!this.hasSingleFile) { + return; + } + const { + documentData: { + document, + pageLabels + } + } = this.oldPages[0]; + if (!pageLabels) { + return; + } + const numPages = document.numPages; + const oldPageLabels = []; + const oldPageIndices = new Set(this.oldPages.map(({ + page: { + pageIndex + } + }) => pageIndex)); + let currentLabel = null; + let stFirstIndex = -1; + for (let i = 0; i < numPages; i++) { + const newLabel = pageLabels.get(i); + if (newLabel) { + currentLabel = newLabel; + stFirstIndex = currentLabel.has("St") ? i : -1; + } + if (!oldPageIndices.has(i)) { + continue; + } + if (stFirstIndex !== -1) { + const st = currentLabel.get("St"); + currentLabel = this.cloneDict(currentLabel); + currentLabel.set("St", st + (i - stFirstIndex)); + stFirstIndex = -1; + } + oldPageLabels.push(currentLabel); + } + currentLabel = oldPageLabels[0]; + let currentIndex = 0; + const newPageLabels = this.pageLabels = [[0, currentLabel]]; + for (let i = 0, ii = oldPageLabels.length; i < ii; i++) { + const label = oldPageLabels[i]; + if (label === currentLabel) { + continue; + } + currentIndex = i; + currentLabel = label; + newPageLabels.push([currentIndex, currentLabel]); + } + } + async #makePageCopy(pageIndex) { + const { + page, + documentData, + annotations, + pointingNamedDestinations + } = this.oldPages[pageIndex]; + this.currentDocument = documentData; + const { + dedupNamedDestinations, + oldRefMapping + } = documentData; + const { + xref, + rotate, + mediaBox, + resources, + ref: oldPageRef + } = page; + const pageRef = this.newRef; + const pageDict = this.xref[pageRef.num] = this.cloneDict(page.pageDict); + oldRefMapping.put(oldPageRef, pageRef); + if (pointingNamedDestinations) { + for (const pointingDest of pointingNamedDestinations) { + const name = dedupNamedDestinations.get(pointingDest) || pointingDest; + const dest = this.namedDestinations.get(name); + dest[0] = pageRef; + } + } + for (const key of ["Rotate", "MediaBox", "CropBox", "BleedBox", "TrimBox", "ArtBox", "Resources", "Annots", "Parent", "UserUnit"]) { + pageDict.delete(key); + } + const lastRef = this.newRefCount; + await this.#collectDependencies(pageDict, false, xref); + pageDict.set("Rotate", rotate); + pageDict.set("MediaBox", mediaBox); + for (const boxName of ["CropBox", "BleedBox", "TrimBox", "ArtBox"]) { + const box = page.getBoundingBox(boxName); + if (box?.some((value, index) => value !== mediaBox[index])) { + pageDict.set(boxName, box); + } + } + const userUnit = page.userUnit; + if (userUnit !== 1) { + pageDict.set("UserUnit", userUnit); + } + pageDict.setIfDict("Resources", await this.#collectDependencies(resources, true, xref)); + let newAnnots = null; + if (annotations) { + const newAnnotations = await this.#collectDependencies(annotations, true, xref); + this.#fixNamedDestinations(newAnnotations, dedupNamedDestinations); + if (Array.isArray(newAnnotations) && newAnnotations.length > 0) { + newAnnots = newAnnotations; + } + } + const newAnnotations = this.#newAnnotationsParams?.newAnnotationsByPage?.get(pageIndex); + if (newAnnotations) { + const { + handler, + task, + imagesPromises + } = this.#newAnnotationsParams; + const changes = new RefSetCache(); + const newData = await AnnotationFactory.saveNewAnnotations(page.createAnnotationEvaluator(handler), this.xrefWrapper, task, newAnnotations, imagesPromises, changes); + for (const [ref, { + data + }] of changes.items()) { + this.xref[ref.num] = data; + } + newAnnots ||= []; + for (const { + ref + } of newData.annotations) { + newAnnots.push(ref); + } + } + pageDict.setIfArray("Annots", newAnnots); + if (this.useObjectStreams) { + const newLastRef = this.newRefCount; + const pageObjectRefs = []; + for (let i = lastRef; i < newLastRef; i++) { + const obj = this.xref[i]; + if (obj instanceof BaseStream) { + continue; + } + pageObjectRefs.push(Ref.get(i, 0)); + } + for (let i = 0; i < pageObjectRefs.length; i += 0xffff) { + const objStreamRef = this.newRef; + this.objStreamRefs.add(objStreamRef.num); + this.xref[objStreamRef.num] = pageObjectRefs.slice(i, i + 0xffff); + } + } + this.currentDocument = null; + return pageRef; + } + #makePageTree() { + const { + newPages: pages, + rootDict, + pagesRef, + pagesDict + } = this; + rootDict.set("Pages", pagesRef); + pagesDict.setIfName("Type", "Pages"); + pagesDict.set("Count", pages.length); + const maxLeaves = MAX_LEAVES_PER_PAGES_NODE <= 1 ? pages.length : MAX_LEAVES_PER_PAGES_NODE; + const stack = [{ + dict: pagesDict, + kids: pages, + parentRef: pagesRef + }]; + while (stack.length > 0) { + const { + dict, + kids, + parentRef + } = stack.pop(); + if (kids.length <= maxLeaves) { + dict.set("Kids", kids); + for (const ref of kids) { + this.xref[ref.num].set("Parent", parentRef); + } + continue; + } + const chunkSize = Math.max(maxLeaves, Math.ceil(kids.length / maxLeaves)); + const kidsChunks = []; + for (let i = 0; i < kids.length; i += chunkSize) { + kidsChunks.push(kids.slice(i, i + chunkSize)); + } + const kidsRefs = []; + dict.set("Kids", kidsRefs); + for (const chunk of kidsChunks) { + const [kidRef, kidDict] = this.newDict; + kidsRefs.push(kidRef); + kidDict.setIfName("Type", "Pages"); + kidDict.set("Parent", parentRef); + kidDict.set("Count", chunk.length); + stack.push({ + dict: kidDict, + kids: chunk, + parentRef: kidRef + }); + } + } + } + #makeNameNumTree(map, areNames) { + const allEntries = map.sort(areNames ? ([keyA], [keyB]) => keyA.localeCompare(keyB) : ([keyA], [keyB]) => keyA - keyB); + const maxLeaves = MAX_IN_NAME_TREE_NODE <= 1 ? allEntries.length : MAX_IN_NAME_TREE_NODE; + const [treeRef, treeDict] = this.newDict; + const stack = [{ + dict: treeDict, + entries: allEntries + }]; + const valueType = areNames ? "Names" : "Nums"; + while (stack.length > 0) { + const { + dict, + entries + } = stack.pop(); + if (entries.length <= maxLeaves) { + dict.set("Limits", [entries[0][0], entries.at(-1)[0]]); + dict.set(valueType, entries.flat()); + continue; + } + const entriesChunks = []; + const chunkSize = Math.max(maxLeaves, Math.ceil(entries.length / maxLeaves)); + for (let i = 0; i < entries.length; i += chunkSize) { + entriesChunks.push(entries.slice(i, i + chunkSize)); + } + const entriesRefs = []; + dict.set("Kids", entriesRefs); + for (const chunk of entriesChunks) { + const [entriesRef, entriesDict] = this.newDict; + entriesRefs.push(entriesRef); + entriesDict.set("Limits", [chunk[0][0], chunk.at(-1)[0]]); + stack.push({ + dict: entriesDict, + entries: chunk + }); + } + } + return treeRef; + } + #makePageLabelsTree() { + const { + pageLabels + } = this; + if (!pageLabels || pageLabels.length === 0) { + return; + } + const { + rootDict + } = this; + const pageLabelsRef = this.#makeNameNumTree(this.pageLabels, false); + rootDict.set("PageLabels", pageLabelsRef); + } + #makeDestinationsTree() { + const { + namedDestinations + } = this; + if (namedDestinations.size === 0) { + return; + } + if (!this.namesDict) { + [this.namesRef, this.namesDict] = this.newDict; + this.rootDict.set("Names", this.namesRef); + } + this.namesDict.set("Dests", this.#makeNameNumTree(Array.from(namedDestinations.entries()), true)); + } + #makeStructTree() { + const { + structTreeKids + } = this; + if (!structTreeKids || structTreeKids.length === 0) { + return; + } + const { + rootDict + } = this; + const structTreeRef = this.newRef; + const structTree = this.xref[structTreeRef.num] = new Dict(); + structTree.setIfName("Type", "StructTreeRoot"); + structTree.setIfArray("K", structTreeKids); + for (const kidRef of structTreeKids) { + const kid = this.xref[kidRef.num]; + const type = kid.get("Type"); + if (!type || isName(type, "StructElem")) { + kid.set("P", structTreeRef); + } + } + if (this.parentTree.size > 0) { + const parentTreeRef = this.#makeNameNumTree(Array.from(this.parentTree.entries()), false); + const parentTree = this.xref[parentTreeRef.num]; + parentTree.setIfName("Type", "ParentTree"); + structTree.set("ParentTree", parentTreeRef); + structTree.set("ParentTreeNextKey", this.parentTree.size); + } + if (this.idTree.size > 0) { + const idTreeRef = this.#makeNameNumTree(Array.from(this.idTree.entries()), true); + const idTree = this.xref[idTreeRef.num]; + idTree.setIfName("Type", "IDTree"); + structTree.set("IDTree", idTreeRef); + } + if (this.classMap.size > 0) { + const classMapRef = this.newRef; + this.xref[classMapRef.num] = this.classMap; + structTree.set("ClassMap", classMapRef); + } + if (this.roleMap.size > 0) { + const roleMapRef = this.newRef; + this.xref[roleMapRef.num] = this.roleMap; + structTree.set("RoleMap", roleMapRef); + } + if (this.namespaces.size > 0) { + const namespacesRef = this.newRef; + this.xref[namespacesRef.num] = Array.from(this.namespaces.values()); + structTree.set("Namespaces", namespacesRef); + } + if (this.structTreeAF.length > 0) { + const structTreeAFRef = this.newRef; + this.xref[structTreeAFRef.num] = this.structTreeAF; + structTree.set("AF", structTreeAFRef); + } + if (this.structTreePronunciationLexicon.length > 0) { + const structTreePronunciationLexiconRef = this.newRef; + this.xref[structTreePronunciationLexiconRef.num] = this.structTreePronunciationLexicon; + structTree.set("PronunciationLexicon", structTreePronunciationLexiconRef); + } + rootDict.set("StructTreeRoot", structTreeRef); + } + #makeAcroForm() { + if (this.fields.length === 0) { + return; + } + const { + rootDict + } = this; + const acroFormRef = this.newRef; + const acroForm = this.xref[acroFormRef.num] = new Dict(); + rootDict.set("AcroForm", acroFormRef); + acroForm.set("Fields", this.fields); + if (this.acroFormNeedAppearances) { + acroForm.set("NeedAppearances", true); + } + if (this.acroFormSigFlags > 0) { + acroForm.set("SigFlags", this.acroFormSigFlags); + } + acroForm.setIfArray("CO", this.acroFormCalculationOrder); + acroForm.setIfDict("DR", this.acroFormDefaultResources); + if (this.acroFormDefaultAppearance) { + acroForm.set("DA", this.acroFormDefaultAppearance); + } + if (this.acroFormQ > 0) { + acroForm.set("Q", this.acroFormQ); + } + } + async #makeRoot() { + const { + rootDict + } = this; + rootDict.setIfName("Type", "Catalog"); + rootDict.setIfName("Version", this.version); + this.#makeAcroForm(); + this.#makePageTree(); + this.#makePageLabelsTree(); + this.#makeDestinationsTree(); + this.#makeStructTree(); + await this.#makeOutline(); + } + #makeInfo() { + const infoMap = new Map(); + if (this.hasSingleFile) { + const { + xref: { + trailer + } + } = this.oldPages[0].documentData.document; + const oldInfoDict = trailer.get("Info"); + for (const [key, value] of oldInfoDict || []) { + if (typeof value === "string") { + infoMap.set(key, stringToPDFString(value)); + } + } + } + infoMap.delete("ModDate"); + infoMap.set("CreationDate", getModificationDate()); + infoMap.set("Creator", "PDF.js"); + infoMap.set("Producer", "Firefox"); + if (this.author) { + infoMap.set("Author", this.author); + } + if (this.title) { + infoMap.set("Title", this.title); + } + for (const [key, value] of infoMap) { + this.infoDict.set(key, stringToAsciiOrUTF16BE(value)); + } + return infoMap; + } + async #makeEncrypt() { + if (!this.hasSingleFile) { + return [null, null, null]; + } + const { + documentData + } = this.oldPages[0]; + const { + document: { + xref: { + trailer, + encrypt + } + } + } = documentData; + if (!trailer.has("Encrypt")) { + return [null, null, null]; + } + const encryptDict = trailer.get("Encrypt"); + if (!(encryptDict instanceof Dict)) { + return [null, null, null]; + } + this.currentDocument = documentData; + const result = [await this.#cloneObject(encryptDict, trailer.xref), encrypt, trailer.get("ID")]; + this.currentDocument = null; + return result; + } + async #createChanges() { + const changes = new RefSetCache(); + changes.put(Ref.get(0, 0xffff), { + data: null + }); + for (let i = 1, ii = this.xref.length; i < ii; i++) { + if (this.objStreamRefs?.has(i)) { + await this.#createObjectStream(Ref.get(i, 0), this.xref[i], changes); + } else { + changes.put(Ref.get(i, 0), { + data: this.xref[i] + }); + } + } + return [changes, this.newRef]; + } + async #createObjectStream(objStreamRef, objRefs, changes) { + const streamBuffer = [""]; + const objOffsets = []; + let offset = 0; + const buffer = []; + for (let i = 0, ii = objRefs.length; i < ii; i++) { + const objRef = objRefs[i]; + changes.put(objRef, { + data: null, + objStreamRef, + index: i + }); + objOffsets.push(`${objRef.num} ${offset}`); + const data = this.xref[objRef.num]; + await writeValue(data, buffer, null); + const obj = buffer.join(""); + buffer.length = 0; + streamBuffer.push(obj); + offset += obj.length + 1; + } + streamBuffer[0] = objOffsets.join("\n"); + const objStream = new StringStream(streamBuffer.join("\n")); + const objStreamDict = objStream.dict = new Dict(); + objStreamDict.setIfName("Type", "ObjStm"); + objStreamDict.set("N", objRefs.length); + objStreamDict.set("First", streamBuffer[0].length + 1); + changes.put(objStreamRef, { + data: objStream + }); + } + async writePDF() { + await this.#makeRoot(); + const infoMap = this.#makeInfo(); + const [encryptRef, encrypt, fileIds] = await this.#makeEncrypt(); + const [changes, xrefTableRef] = await this.#createChanges(); + const header = [...`%PDF-${this.version}\n%`.split("").map(c => c.charCodeAt(0)), 0xfa, 0xde, 0xfa, 0xce]; + return incrementalUpdate({ + originalData: new Uint8Array(header), + changes, + xrefInfo: { + startXRef: null, + rootRef: this.rootRef, + infoRef: this.infoRef, + encryptRef, + newRef: xrefTableRef, + fileIds: fileIds || [null, null], + infoMap + }, + useXrefStream: this.useObjectStreams, + xref: { + encrypt, + encryptRef + } + }); + } +} + +;// ./src/shared/base_pdf_stream.js + +class BasePDFStream { + #PDFStreamReader = null; + #PDFStreamRangeReader = null; + _fullReader = null; + _rangeReaders = new Set(); + _source = null; + constructor(source, PDFStreamReader, PDFStreamRangeReader) { + this._source = source; + this.#PDFStreamReader = PDFStreamReader; + this.#PDFStreamRangeReader = PDFStreamRangeReader; + } + get _progressiveDataLength() { + return this._fullReader?._loaded ?? 0; + } + getFullReader() { + assert(!this._fullReader, "BasePDFStream.getFullReader can only be called once."); + return this._fullReader = new this.#PDFStreamReader(this); + } + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + const reader = new this.#PDFStreamRangeReader(this, begin, end); + this._rangeReaders.add(reader); + return reader; + } + cancelAllRequests(reason) { + this._fullReader?.cancel(reason); + for (const reader of new Set(this._rangeReaders)) { + reader.cancel(reason); + } + } +} +class BasePDFStreamReader { + onProgress = null; + _contentLength = 0; + _filename = null; + _headersCapability = Promise.withResolvers(); + _isRangeSupported = false; + _isStreamingSupported = false; + _loaded = 0; + _stream = null; + constructor(stream) { + this._stream = stream; + } + _callOnProgress() { + this.onProgress?.({ + loaded: this._loaded, + total: this._contentLength + }); + } + get headersReady() { + return this._headersCapability.promise; + } + get filename() { + return this._filename; + } + get contentLength() { + return this._contentLength; + } + get isRangeSupported() { + return this._isRangeSupported; + } + get isStreamingSupported() { + return this._isStreamingSupported; + } + async read() { + unreachable("Abstract method `read` called"); + } + cancel(reason) { + unreachable("Abstract method `cancel` called"); + } +} +class BasePDFStreamRangeReader { + _stream = null; + constructor(stream, begin, end) { + this._stream = stream; + } + async read() { + unreachable("Abstract method `read` called"); + } + cancel(reason) { + unreachable("Abstract method `cancel` called"); + } +} + +;// ./src/core/worker_stream.js + +class PDFWorkerStream extends BasePDFStream { + constructor(source) { + super(source, PDFWorkerStreamReader, PDFWorkerStreamRangeReader); + } +} +class PDFWorkerStreamReader extends BasePDFStreamReader { + _reader = null; + constructor(stream) { + super(stream); + const { + msgHandler + } = stream._source; + const readableStream = msgHandler.sendWithStream("GetReader"); + this._reader = readableStream.getReader(); + msgHandler.sendWithPromise("ReaderHeadersReady").then(data => { + this._contentLength = data.contentLength; + this._isStreamingSupported = data.isStreamingSupported; + this._isRangeSupported = data.isRangeSupported; + this._headersCapability.resolve(); + }, this._headersCapability.reject); + } + async read() { + const { + value, + done + } = await this._reader.read(); + if (done) { + return { + value: undefined, + done: true + }; + } + return { + value: value.buffer, + done: false + }; + } + cancel(reason) { + this._reader.cancel(reason); + } +} +class PDFWorkerStreamRangeReader extends BasePDFStreamRangeReader { + _reader = null; + constructor(stream, begin, end) { + super(stream, begin, end); + const { + msgHandler + } = stream._source; + const readableStream = msgHandler.sendWithStream("GetRangeReader", { + begin, + end + }); + this._reader = readableStream.getReader(); + } + async read() { + const { + value, + done + } = await this._reader.read(); + if (done) { + return { + value: undefined, + done: true + }; + } + return { + value: value.buffer, + done: false + }; + } + cancel(reason) { + this._reader.cancel(reason); + } +} + +;// ./src/core/worker.js + + + + + + + + + + + +class WorkerTask { + constructor(name) { + this.name = name; + this.terminated = false; + this._capability = Promise.withResolvers(); + } + get finished() { + return this._capability.promise; + } + finish() { + this._capability.resolve(); + } + terminate() { + this.terminated = true; + } + ensureNotTerminated() { + if (this.terminated) { + throw new Error("Worker task was terminated"); + } + } +} +class WorkerMessageHandler { + static { + if (typeof window === "undefined" && !isNodeJS && typeof self !== "undefined" && typeof self.postMessage === "function" && "onmessage" in self) { + this.initializeFromPort(self); + } + } + static setup(handler, port) { + let testMessageProcessed = false; + handler.on("test", data => { + if (testMessageProcessed) { + return; + } + testMessageProcessed = true; + handler.send("test", data instanceof Uint8Array); + }); + handler.on("configure", data => { + setVerbosityLevel(data.verbosity); + }); + handler.on("GetDocRequest", data => this.createDocumentHandler(data, port)); + } + static createDocumentHandler(docParams, port) { + let pdfManager; + let terminated = false; + let cancelXHRs = null; + const WorkerTasks = new Set(); + const verbosity = getVerbosityLevel(); + const { + docId, + apiVersion + } = docParams; + const workerVersion = "5.6.205"; + if (apiVersion !== workerVersion) { + throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`); + } + const buildMsg = (type, prop) => `The \`${type}.prototype\` contains unexpected enumerable property ` + `"${prop}", thus breaking e.g. \`for...in\` iteration of ${type}s.`; + for (const prop in {}) { + throw new Error(buildMsg("Object", prop)); + } + for (const prop in []) { + throw new Error(buildMsg("Array", prop)); + } + const workerHandlerName = docId + "_worker"; + let handler = new MessageHandler(workerHandlerName, docId, port); + function ensureNotTerminated() { + if (terminated) { + throw new Error("Worker was terminated"); + } + } + function startWorkerTask(task) { + WorkerTasks.add(task); + } + function finishWorkerTask(task) { + task.finish(); + WorkerTasks.delete(task); + } + async function loadDocument(recoveryMode) { + await pdfManager.ensureDoc("checkHeader"); + await pdfManager.ensureDoc("parseStartXRef"); + await pdfManager.ensureDoc("parse", [recoveryMode]); + await pdfManager.ensureDoc("checkFirstPage", [recoveryMode]); + await pdfManager.ensureDoc("checkLastPage", [recoveryMode]); + const isPureXfa = await pdfManager.ensureDoc("isPureXfa"); + if (isPureXfa) { + const task = new WorkerTask("loadXfaResources"); + startWorkerTask(task); + await pdfManager.ensureDoc("loadXfaResources", [handler, task]); + finishWorkerTask(task); + } + const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc("numPages"), pdfManager.ensureDoc("fingerprints")]); + const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc("htmlForXfa") : null; + return { + numPages, + fingerprints, + htmlForXfa + }; + } + async function getPdfManager({ + data, + password, + disableAutoFetch, + rangeChunkSize, + docBaseUrl, + enableXfa, + evaluatorOptions + }) { + const pdfManagerArgs = { + source: null, + disableAutoFetch, + docBaseUrl, + docId, + enableXfa, + evaluatorOptions, + handler, + length: 0, + password, + rangeChunkSize + }; + if (data) { + pdfManagerArgs.source = data; + return new LocalPdfManager(pdfManagerArgs); + } + const pdfStream = new PDFWorkerStream({ + msgHandler: handler + }), + fullReader = pdfStream.getFullReader(); + const { + promise, + resolve, + reject + } = Promise.withResolvers(); + let newPdfManager, + cachedChunks = []; + cancelXHRs = reason => pdfStream.cancelAllRequests(reason); + fullReader.headersReady.then(() => { + if (!fullReader.isRangeSupported) { + return; + } + pdfManagerArgs.source = pdfStream; + pdfManagerArgs.length = fullReader.contentLength; + pdfManagerArgs.disableAutoFetch ||= fullReader.isStreamingSupported; + newPdfManager = new NetworkPdfManager(pdfManagerArgs); + for (const chunk of cachedChunks) { + newPdfManager.sendProgressiveData(chunk); + } + cachedChunks = null; + resolve(newPdfManager); + cancelXHRs = null; + }).catch(reason => { + reject(reason); + cancelXHRs = null; + }); + async function readData() { + let loaded = 0; + while (true) { + const { + value, + done + } = await fullReader.read(); + ensureNotTerminated(); + if (done) { + break; + } + loaded += value.byteLength; + if (!fullReader.isStreamingSupported) { + handler.send("DocProgress", { + loaded, + total: fullReader.contentLength + }); + } + if (newPdfManager) { + newPdfManager.sendProgressiveData(value); + } else { + cachedChunks.push(value); + } + } + if (!newPdfManager) { + pdfManagerArgs.source = arrayBuffersToBytes(cachedChunks); + cachedChunks = null; + newPdfManager = new LocalPdfManager(pdfManagerArgs); + resolve(newPdfManager); + } + cancelXHRs = null; + } + readData().catch(reason => { + reject(reason); + cancelXHRs = null; + }); + return promise; + } + function setupDoc(data) { + function onSuccess(doc) { + ensureNotTerminated(); + handler.send("GetDoc", { + pdfInfo: doc + }); + } + function onFailure(ex) { + if (terminated) { + return; + } + if (ex instanceof PasswordException) { + const task = new WorkerTask(`PasswordException: response ${ex.code}`); + startWorkerTask(task); + handler.sendWithPromise("PasswordRequest", ex).then(function ({ + password + }) { + finishWorkerTask(task); + pdfManager.updatePassword(password); + pdfManagerReady(); + }).catch(function () { + finishWorkerTask(task); + handler.send("DocException", ex); + }); + } else { + handler.send("DocException", wrapReason(ex)); + } + } + function pdfManagerReady() { + ensureNotTerminated(); + loadDocument(false).then(onSuccess, function (reason) { + ensureNotTerminated(); + if (!(reason instanceof XRefParseException)) { + onFailure(reason); + return; + } + pdfManager.requestLoadedStream().then(function () { + ensureNotTerminated(); + loadDocument(true).then(onSuccess, onFailure); + }); + }); + } + ensureNotTerminated(); + getPdfManager(data).then(function (newPdfManager) { + if (terminated) { + newPdfManager.terminate(new AbortException("Worker was terminated.")); + throw new Error("Worker was terminated"); + } + pdfManager = newPdfManager; + pdfManager.requestLoadedStream(true).then(stream => { + handler.send("DataLoaded", { + length: stream.bytes.byteLength + }); + }); + }).then(pdfManagerReady, onFailure); + } + handler.on("GetPage", function (data) { + return pdfManager.getPage(data.pageIndex).then(function (page) { + return Promise.all([pdfManager.ensure(page, "rotate"), pdfManager.ensure(page, "ref"), pdfManager.ensure(page, "userUnit"), pdfManager.ensure(page, "view")]).then(function ([rotate, ref, userUnit, view]) { + return { + rotate, + ref, + refStr: ref?.toString() ?? null, + userUnit, + view + }; + }); + }); + }); + handler.on("GetPageIndex", function (data) { + const pageRef = Ref.get(data.num, data.gen); + return pdfManager.ensureCatalog("getPageIndex", [pageRef]); + }); + handler.on("GetDestinations", function (data) { + return pdfManager.ensureCatalog("destinations"); + }); + handler.on("GetDestination", function (data) { + return pdfManager.ensureCatalog("getDestination", [data.id]); + }); + handler.on("GetPageLabels", function (data) { + return pdfManager.ensureCatalog("pageLabels"); + }); + handler.on("GetPageLayout", function (data) { + return pdfManager.ensureCatalog("pageLayout"); + }); + handler.on("GetPageMode", function (data) { + return pdfManager.ensureCatalog("pageMode"); + }); + handler.on("GetViewerPreferences", function (data) { + return pdfManager.ensureCatalog("viewerPreferences"); + }); + handler.on("GetOpenAction", function (data) { + return pdfManager.ensureCatalog("openAction"); + }); + handler.on("GetAttachments", function (data) { + return pdfManager.ensureCatalog("attachments"); + }); + handler.on("GetDocJSActions", function (data) { + return pdfManager.ensureCatalog("jsActions"); + }); + handler.on("GetPageJSActions", function ({ + pageIndex + }) { + return pdfManager.getPage(pageIndex).then(page => pdfManager.ensure(page, "jsActions")); + }); + handler.on("GetAnnotationsByType", async function ({ + types, + pageIndexesToSkip + }) { + const [numPages, annotationGlobals] = await Promise.all([pdfManager.ensureDoc("numPages"), pdfManager.ensureDoc("annotationGlobals")]); + if (!annotationGlobals) { + return null; + } + const pagePromises = []; + const annotationPromises = []; + let task = null; + try { + for (let i = 0, ii = numPages; i < ii; i++) { + if (pageIndexesToSkip?.has(i)) { + continue; + } + if (!task) { + task = new WorkerTask("GetAnnotationsByType"); + startWorkerTask(task); + } + pagePromises.push(pdfManager.getPage(i).then(async page => { + if (!page) { + return []; + } + return page.collectAnnotationsByType(handler, task, types, annotationPromises, annotationGlobals) || []; + })); + } + await Promise.all(pagePromises); + const annotations = await Promise.all(annotationPromises); + return annotations.filter(a => !!a); + } finally { + if (task) { + finishWorkerTask(task); + } + } + }); + handler.on("GetOutline", function (data) { + return pdfManager.ensureCatalog("documentOutline"); + }); + handler.on("GetOptionalContentConfig", function (data) { + return pdfManager.ensureCatalog("optionalContentConfig"); + }); + handler.on("GetPermissions", function (data) { + return pdfManager.ensureCatalog("permissions"); + }); + handler.on("GetMetadata", function (data) { + return Promise.all([pdfManager.ensureDoc("documentInfo"), pdfManager.ensureCatalog("metadata"), pdfManager.ensureCatalog("hasStructTree")]); + }); + handler.on("GetMarkInfo", function (data) { + return pdfManager.ensureCatalog("markInfo"); + }); + handler.on("GetData", function (data) { + return pdfManager.requestLoadedStream().then(stream => stream.bytes); + }); + handler.on("GetAnnotations", function ({ + pageIndex, + intent + }) { + return pdfManager.getPage(pageIndex).then(function (page) { + const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`); + startWorkerTask(task); + return page.getAnnotationsData(handler, task, intent).then(data => { + finishWorkerTask(task); + return data; + }, reason => { + finishWorkerTask(task); + throw reason; + }); + }); + }); + handler.on("GetFieldObjects", function (data) { + return pdfManager.ensureDoc("fieldObjects").then(fieldObjects => fieldObjects?.allFields || null); + }); + handler.on("HasJSActions", function (data) { + return pdfManager.ensureDoc("hasJSActions"); + }); + handler.on("GetCalculationOrderIds", function (data) { + return pdfManager.ensureDoc("calculationOrderIds"); + }); + handler.on("ExtractPages", async function ({ + pageInfos, + annotationStorage + }) { + if (!pageInfos) { + warn("extractPages: nothing to extract."); + return null; + } + if (!Array.isArray(pageInfos)) { + pageInfos = [pageInfos]; + } + let newDocumentId = 0; + for (const pageInfo of pageInfos) { + if (pageInfo.document === null) { + pageInfo.document = pdfManager.pdfDocument; + } else if (ArrayBuffer.isView(pageInfo.document)) { + const manager = new LocalPdfManager({ + source: pageInfo.document, + docId: `${docId}_extractPages_${newDocumentId++}`, + handler, + password: pageInfo.password ?? null, + evaluatorOptions: Object.assign({}, pdfManager.evaluatorOptions) + }); + let recoveryMode = false; + let isValid = true; + while (true) { + try { + await manager.requestLoadedStream(); + await manager.ensureDoc("checkHeader"); + await manager.ensureDoc("parseStartXRef"); + await manager.ensureDoc("parse", [recoveryMode]); + break; + } catch (e) { + if (e instanceof XRefParseException) { + if (recoveryMode === false) { + recoveryMode = true; + continue; + } else { + isValid = false; + warn("extractPages: XRefParseException."); + } + } else if (e instanceof PasswordException) { + const task = new WorkerTask(`PasswordException: response ${e.code}`); + startWorkerTask(task); + try { + const { + password + } = await handler.sendWithPromise("PasswordRequest", e); + manager.updatePassword(password); + } catch { + isValid = false; + warn("extractPages: invalid password."); + } finally { + finishWorkerTask(task); + } + } else { + isValid = false; + warn("extractPages: invalid document."); + } + if (!isValid) { + break; + } + } + } + if (!isValid) { + pageInfo.document = null; + } + const isPureXfa = await manager.ensureDoc("isPureXfa"); + if (isPureXfa) { + pageInfo.document = null; + warn("extractPages does not support pure XFA documents."); + } else { + pageInfo.document = manager.pdfDocument; + } + } else { + warn("extractPages: invalid document."); + } + } + let task; + try { + const pdfEditor = new PDFEditor(); + task = new WorkerTask(`ExtractPages: ${pageInfos.length} page(s)`); + startWorkerTask(task); + const buffer = await pdfEditor.extractPages(pageInfos, annotationStorage, handler, task); + return buffer; + } catch (reason) { + console.error(reason); + return null; + } finally { + if (task) { + finishWorkerTask(task); + } + } + }); + handler.on("SaveDocument", async function ({ + isPureXfa, + numPages, + annotationStorage, + filename + }) { + const globalPromises = [pdfManager.requestLoadedStream(), pdfManager.ensureCatalog("acroForm"), pdfManager.ensureCatalog("acroFormRef"), pdfManager.ensureDoc("startXRef"), pdfManager.ensureDoc("xref"), pdfManager.ensureCatalog("structTreeRoot")]; + const changes = new RefSetCache(); + const promises = []; + const newAnnotationsByPage = !isPureXfa ? getNewAnnotationsMap(annotationStorage) : null; + const [stream, acroForm, acroFormRef, startXRef, xref, _structTreeRoot] = await Promise.all(globalPromises); + const catalogRef = xref.trailer.getRaw("Root") || null; + let structTreeRoot; + if (newAnnotationsByPage) { + if (!_structTreeRoot) { + if (await StructTreeRoot.canCreateStructureTree({ + catalogRef, + pdfManager, + newAnnotationsByPage + })) { + structTreeRoot = null; + } + } else if (await _structTreeRoot.canUpdateStructTree({ + pdfManager, + newAnnotationsByPage + })) { + structTreeRoot = _structTreeRoot; + } + const imagePromises = AnnotationFactory.generateImages(annotationStorage.values(), xref, pdfManager.evaluatorOptions.isOffscreenCanvasSupported); + const newAnnotationPromises = structTreeRoot === undefined ? promises : []; + for (const [pageIndex, annotations] of newAnnotationsByPage) { + newAnnotationPromises.push(pdfManager.getPage(pageIndex).then(page => { + const task = new WorkerTask(`Save (editor): page ${pageIndex}`); + startWorkerTask(task); + return page.saveNewAnnotations(handler, task, annotations, imagePromises, changes).finally(function () { + finishWorkerTask(task); + }); + })); + } + if (structTreeRoot === null) { + promises.push(Promise.all(newAnnotationPromises).then(async () => { + await StructTreeRoot.createStructureTree({ + newAnnotationsByPage, + xref, + catalogRef, + pdfManager, + changes + }); + })); + } else if (structTreeRoot) { + promises.push(Promise.all(newAnnotationPromises).then(async () => { + await structTreeRoot.updateStructureTree({ + newAnnotationsByPage, + pdfManager, + changes + }); + })); + } + } + if (isPureXfa) { + promises.push(pdfManager.ensureDoc("serializeXfaData", [annotationStorage])); + } else { + for (let pageIndex = 0; pageIndex < numPages; pageIndex++) { + promises.push(pdfManager.getPage(pageIndex).then(function (page) { + const task = new WorkerTask(`Save: page ${pageIndex}`); + startWorkerTask(task); + return page.save(handler, task, annotationStorage, changes).finally(function () { + finishWorkerTask(task); + }); + })); + } + } + const refs = await Promise.all(promises); + let xfaData = null; + if (isPureXfa) { + xfaData = refs[0]; + if (!xfaData) { + return stream.bytes; + } + } else if (changes.size === 0) { + return stream.bytes; + } + const needAppearances = acroFormRef && acroForm instanceof Dict && changes.values().some(ref => ref.needAppearances); + const xfa = acroForm instanceof Dict && acroForm.get("XFA") || null; + let xfaDatasetsRef = null; + let hasXfaDatasetsEntry = false; + if (Array.isArray(xfa)) { + for (let i = 0, ii = xfa.length; i < ii; i += 2) { + if (xfa[i] === "datasets") { + xfaDatasetsRef = xfa[i + 1]; + hasXfaDatasetsEntry = true; + } + } + if (xfaDatasetsRef === null) { + xfaDatasetsRef = xref.getNewTemporaryRef(); + } + } else if (xfa) { + warn("Unsupported XFA type."); + } + let newXrefInfo = Object.create(null); + if (xref.trailer) { + const infoMap = new Map(); + const xrefInfo = xref.trailer.get("Info") || null; + if (xrefInfo instanceof Dict) { + for (const [key, value] of xrefInfo) { + if (typeof value === "string") { + infoMap.set(key, stringToPDFString(value)); + } + } + } + newXrefInfo = { + rootRef: catalogRef, + encryptRef: xref.trailer.getRaw("Encrypt") || null, + newRef: xref.getNewTemporaryRef(), + infoRef: xref.trailer.getRaw("Info") || null, + infoMap, + fileIds: xref.trailer.get("ID") || null, + startXRef, + filename + }; + } + return incrementalUpdate({ + originalData: stream.bytes, + xrefInfo: newXrefInfo, + changes, + xref, + hasXfa: !!xfa, + xfaDatasetsRef, + hasXfaDatasetsEntry, + needAppearances, + acroFormRef, + acroForm, + xfaData, + useXrefStream: isDict(xref.topDict, "XRef") + }).finally(() => { + xref.resetNewTemporaryRef(); + }); + }); + handler.on("GetOperatorList", function (data, sink) { + const { + pageId, + pageIndex + } = data; + pdfManager.getPage(pageId).then(function (page) { + const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`); + startWorkerTask(task); + const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0; + page.getOperatorList({ + handler, + sink, + task, + intent: data.intent, + cacheKey: data.cacheKey, + annotationStorage: data.annotationStorage, + modifiedIds: data.modifiedIds, + pageIndex + }).then(function (operatorListInfo) { + finishWorkerTask(task); + if (start) { + info(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`); + } + sink.close(); + }, function (reason) { + finishWorkerTask(task); + if (task.terminated) { + return; + } + sink.error(reason); + }); + }); + }); + handler.on("GetTextContent", function (data, sink) { + const { + pageId, + pageIndex, + includeMarkedContent, + disableNormalization + } = data; + pdfManager.getPage(pageId).then(function (page) { + const task = new WorkerTask("GetTextContent: page " + pageIndex); + startWorkerTask(task); + const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0; + page.extractTextContent({ + handler, + task, + sink, + includeMarkedContent, + disableNormalization + }).then(function () { + finishWorkerTask(task); + if (start) { + info(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`); + } + sink.close(); + }, function (reason) { + finishWorkerTask(task); + if (task.terminated) { + return; + } + sink.error(reason); + }); + }); + }); + handler.on("GetStructTree", function (data) { + return pdfManager.getPage(data.pageIndex).then(page => pdfManager.ensure(page, "getStructTree")); + }); + handler.on("FontFallback", function (data) { + return pdfManager.fontFallback(data.id, handler); + }); + handler.on("Cleanup", function (data) { + return pdfManager.cleanup(true); + }); + handler.on("Terminate", async function (data) { + terminated = true; + const waitOn = []; + if (pdfManager) { + pdfManager.terminate(new AbortException("Worker was terminated.")); + const cleanupPromise = pdfManager.cleanup(); + waitOn.push(cleanupPromise); + pdfManager = null; + } else { + clearGlobalCaches(); + } + cancelXHRs?.(new AbortException("Worker was terminated.")); + for (const task of WorkerTasks) { + waitOn.push(task.finished); + task.terminate(); + } + await Promise.all(waitOn); + handler.destroy(); + handler = null; + }); + handler.on("Ready", function (data) { + setupDoc(docParams); + docParams = null; + }); + return workerHandlerName; + } + static initializeFromPort(port) { + const handler = new MessageHandler("worker", "main", port); + this.setup(handler, port); + handler.send("ready", null); + } +} + +;// ./src/pdf.worker.js + +globalThis.pdfjsWorker = { + WorkerMessageHandler: WorkerMessageHandler +}; + +export { WorkerMessageHandler }; + +//# sourceMappingURL=pdf.worker.mjs.map \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 3f4bbed..10fa28c 100644 --- a/dist/index.html +++ b/dist/index.html @@ -5,8 +5,8 @@ 91写作 - AI智能小说创作工具 - - + +
    diff --git a/src/views/BookAnalysis.vue b/src/views/BookAnalysis.vue index 82192ef..ba3e518 100644 --- a/src/views/BookAnalysis.vue +++ b/src/views/BookAnalysis.vue @@ -592,8 +592,9 @@ import { import { useNovelStore } from '@/stores/novel' import * as pdfjsLib from 'pdfjs-dist' import mammoth from 'mammoth' +import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.mjs?url' -pdfjsLib.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js` +pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker const novelStore = useNovelStore()