From 41eef2d63b48d9632e2b5ebe0001de8f4cdfefbc Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Tue, 21 Jul 2026 00:57:12 +0800 Subject: [PATCH] fix: refresh frontend assets for upload UI --- .../css/{870.16cbea0a.css => 148.ff5f4652.css} | 2 +- frontend-dist/css/148.ff5f4652.css.gz | Bin 0 -> 11864 bytes frontend-dist/css/870.16cbea0a.css.gz | Bin 11733 -> 0 bytes .../css/{888.793f4b66.css => 888.af58b0bb.css} | 0 ...888.793f4b66.css.gz => 888.af58b0bb.css.gz} | Bin .../css/{957.db5680df.css => 903.7a90c42f.css} | 2 +- frontend-dist/css/903.7a90c42f.css.gz | Bin 0 -> 15313 bytes frontend-dist/css/957.db5680df.css.gz | Bin 15291 -> 0 bytes .../css/{app.c8e85cb3.css => app.ffc502cb.css} | 0 ...app.c8e85cb3.css.gz => app.ffc502cb.css.gz} | Bin frontend-dist/img/background.de27f549.jpg | Bin 0 -> 346393 bytes frontend-dist/img/background.ea1b7ee7.jpg | Bin 243082 -> 0 bytes frontend-dist/index.html | 2 +- frontend-dist/index.html.gz | Bin 546 -> 546 bytes frontend-dist/js/148.b1b1da05.js | 2 ++ frontend-dist/js/148.b1b1da05.js.gz | Bin 0 -> 33624 bytes frontend-dist/js/148.b1b1da05.js.map | 1 + frontend-dist/js/148.b1b1da05.js.map.gz | Bin 0 -> 85144 bytes frontend-dist/js/21.e06c66b8.js.gz | Bin 2719 -> 0 bytes frontend-dist/js/21.e06c66b8.js.map | 1 - frontend-dist/js/21.e06c66b8.js.map.gz | Bin 8086 -> 0 bytes .../js/{21.e06c66b8.js => 21.f318bc2e.js} | 4 ++-- frontend-dist/js/21.f318bc2e.js.gz | Bin 0 -> 2719 bytes frontend-dist/js/21.f318bc2e.js.map | 1 + frontend-dist/js/21.f318bc2e.js.map.gz | Bin 0 -> 8071 bytes frontend-dist/js/278.66af4a0a.js.gz | Bin 3550 -> 0 bytes frontend-dist/js/278.66af4a0a.js.map | 1 - frontend-dist/js/278.66af4a0a.js.map.gz | Bin 9799 -> 0 bytes .../js/{278.66af4a0a.js => 278.bb8355a5.js} | 4 ++-- frontend-dist/js/278.bb8355a5.js.gz | Bin 0 -> 3552 bytes frontend-dist/js/278.bb8355a5.js.map | 1 + frontend-dist/js/278.bb8355a5.js.map.gz | Bin 0 -> 9782 bytes frontend-dist/js/331.0b44b778.js.gz | Bin 3771 -> 0 bytes frontend-dist/js/331.0b44b778.js.map | 1 - frontend-dist/js/331.0b44b778.js.map.gz | Bin 10076 -> 0 bytes .../js/{331.0b44b778.js => 331.4f42d273.js} | 4 ++-- frontend-dist/js/331.4f42d273.js.gz | Bin 0 -> 3772 bytes frontend-dist/js/331.4f42d273.js.map | 1 + frontend-dist/js/331.4f42d273.js.map.gz | Bin 0 -> 10059 bytes frontend-dist/js/870.9e7db652.js | 2 -- frontend-dist/js/870.9e7db652.js.gz | Bin 33560 -> 0 bytes frontend-dist/js/870.9e7db652.js.map | 1 - frontend-dist/js/870.9e7db652.js.map.gz | Bin 85084 -> 0 bytes frontend-dist/js/903.808d69b5.js | 2 ++ frontend-dist/js/903.808d69b5.js.gz | Bin 0 -> 58913 bytes frontend-dist/js/903.808d69b5.js.map | 1 + frontend-dist/js/903.808d69b5.js.map.gz | Bin 0 -> 147096 bytes frontend-dist/js/957.e8a16dfc.js | 2 -- frontend-dist/js/957.e8a16dfc.js.gz | Bin 57836 -> 0 bytes frontend-dist/js/957.e8a16dfc.js.map | 1 - frontend-dist/js/957.e8a16dfc.js.map.gz | Bin 146478 -> 0 bytes frontend-dist/js/967.4c8a2786.js.gz | Bin 3633 -> 0 bytes frontend-dist/js/967.4c8a2786.js.map | 1 - frontend-dist/js/967.4c8a2786.js.map.gz | Bin 9801 -> 0 bytes .../js/{967.4c8a2786.js => 967.db104add.js} | 4 ++-- frontend-dist/js/967.db104add.js.gz | Bin 0 -> 3633 bytes frontend-dist/js/967.db104add.js.map | 1 + frontend-dist/js/967.db104add.js.map.gz | Bin 0 -> 9787 bytes .../js/{app.e9233b6a.js => app.08a5e390.js} | 4 ++-- frontend-dist/js/app.08a5e390.js.gz | Bin 0 -> 25179 bytes frontend-dist/js/app.08a5e390.js.map | 1 + frontend-dist/js/app.08a5e390.js.map.gz | Bin 0 -> 18374 bytes frontend-dist/js/app.e9233b6a.js.gz | Bin 25181 -> 0 bytes frontend-dist/js/app.e9233b6a.js.map | 1 - frontend-dist/js/app.e9233b6a.js.map.gz | Bin 18398 -> 0 bytes 65 files changed, 24 insertions(+), 24 deletions(-) rename frontend-dist/css/{870.16cbea0a.css => 148.ff5f4652.css} (60%) create mode 100644 frontend-dist/css/148.ff5f4652.css.gz delete mode 100644 frontend-dist/css/870.16cbea0a.css.gz rename frontend-dist/css/{888.793f4b66.css => 888.af58b0bb.css} (100%) rename frontend-dist/css/{888.793f4b66.css.gz => 888.af58b0bb.css.gz} (100%) rename frontend-dist/css/{957.db5680df.css => 903.7a90c42f.css} (66%) create mode 100644 frontend-dist/css/903.7a90c42f.css.gz delete mode 100644 frontend-dist/css/957.db5680df.css.gz rename frontend-dist/css/{app.c8e85cb3.css => app.ffc502cb.css} (100%) rename frontend-dist/css/{app.c8e85cb3.css.gz => app.ffc502cb.css.gz} (100%) create mode 100644 frontend-dist/img/background.de27f549.jpg delete mode 100644 frontend-dist/img/background.ea1b7ee7.jpg create mode 100644 frontend-dist/js/148.b1b1da05.js create mode 100644 frontend-dist/js/148.b1b1da05.js.gz create mode 100644 frontend-dist/js/148.b1b1da05.js.map create mode 100644 frontend-dist/js/148.b1b1da05.js.map.gz delete mode 100644 frontend-dist/js/21.e06c66b8.js.gz delete mode 100644 frontend-dist/js/21.e06c66b8.js.map delete mode 100644 frontend-dist/js/21.e06c66b8.js.map.gz rename frontend-dist/js/{21.e06c66b8.js => 21.f318bc2e.js} (98%) create mode 100644 frontend-dist/js/21.f318bc2e.js.gz create mode 100644 frontend-dist/js/21.f318bc2e.js.map create mode 100644 frontend-dist/js/21.f318bc2e.js.map.gz delete mode 100644 frontend-dist/js/278.66af4a0a.js.gz delete mode 100644 frontend-dist/js/278.66af4a0a.js.map delete mode 100644 frontend-dist/js/278.66af4a0a.js.map.gz rename frontend-dist/js/{278.66af4a0a.js => 278.bb8355a5.js} (99%) create mode 100644 frontend-dist/js/278.bb8355a5.js.gz create mode 100644 frontend-dist/js/278.bb8355a5.js.map create mode 100644 frontend-dist/js/278.bb8355a5.js.map.gz delete mode 100644 frontend-dist/js/331.0b44b778.js.gz delete mode 100644 frontend-dist/js/331.0b44b778.js.map delete mode 100644 frontend-dist/js/331.0b44b778.js.map.gz rename frontend-dist/js/{331.0b44b778.js => 331.4f42d273.js} (99%) create mode 100644 frontend-dist/js/331.4f42d273.js.gz create mode 100644 frontend-dist/js/331.4f42d273.js.map create mode 100644 frontend-dist/js/331.4f42d273.js.map.gz delete mode 100644 frontend-dist/js/870.9e7db652.js delete mode 100644 frontend-dist/js/870.9e7db652.js.gz delete mode 100644 frontend-dist/js/870.9e7db652.js.map delete mode 100644 frontend-dist/js/870.9e7db652.js.map.gz create mode 100644 frontend-dist/js/903.808d69b5.js create mode 100644 frontend-dist/js/903.808d69b5.js.gz create mode 100644 frontend-dist/js/903.808d69b5.js.map create mode 100644 frontend-dist/js/903.808d69b5.js.map.gz delete mode 100644 frontend-dist/js/957.e8a16dfc.js delete mode 100644 frontend-dist/js/957.e8a16dfc.js.gz delete mode 100644 frontend-dist/js/957.e8a16dfc.js.map delete mode 100644 frontend-dist/js/957.e8a16dfc.js.map.gz delete mode 100644 frontend-dist/js/967.4c8a2786.js.gz delete mode 100644 frontend-dist/js/967.4c8a2786.js.map delete mode 100644 frontend-dist/js/967.4c8a2786.js.map.gz rename frontend-dist/js/{967.4c8a2786.js => 967.db104add.js} (99%) create mode 100644 frontend-dist/js/967.db104add.js.gz create mode 100644 frontend-dist/js/967.db104add.js.map create mode 100644 frontend-dist/js/967.db104add.js.map.gz rename frontend-dist/js/{app.e9233b6a.js => app.08a5e390.js} (98%) create mode 100644 frontend-dist/js/app.08a5e390.js.gz create mode 100644 frontend-dist/js/app.08a5e390.js.map create mode 100644 frontend-dist/js/app.08a5e390.js.map.gz delete mode 100644 frontend-dist/js/app.e9233b6a.js.gz delete mode 100644 frontend-dist/js/app.e9233b6a.js.map delete mode 100644 frontend-dist/js/app.e9233b6a.js.map.gz diff --git a/frontend-dist/css/870.16cbea0a.css b/frontend-dist/css/148.ff5f4652.css similarity index 60% rename from frontend-dist/css/870.16cbea0a.css rename to frontend-dist/css/148.ff5f4652.css index 280f2ac6..eb591cbc 100644 --- a/frontend-dist/css/870.16cbea0a.css +++ b/frontend-dist/css/148.ff5f4652.css @@ -1 +1 @@ -.history-container[data-v-f70e7770]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-f70e7770]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-f70e7770]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-f70e7770]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-f70e7770]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-f70e7770]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-f70e7770]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-f70e7770]{display:flex;gap:10px}.header-right .el-button[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-f70e7770]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-f70e7770]{background:#dc2626;color:#fff}.history-content[data-v-f70e7770]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-f70e7770]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-f70e7770]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:1px solid var(--glass-border)}.grid-item[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-f70e7770]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-f70e7770],.grid-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-f70e7770]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-f70e7770]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-f70e7770]{opacity:1}.grid-actions[data-v-f70e7770]{display:flex;gap:15px}.grid-info[data-v-f70e7770]{padding:12px}.file-name[data-v-f70e7770]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-f70e7770]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-f70e7770]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.list-item[data-v-f70e7770]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-f70e7770]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-f70e7770],.list-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-f70e7770]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-f70e7770]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-f70e7770]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-f70e7770]{display:flex;gap:8px}.empty-state[data-v-f70e7770]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-f70e7770]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-f70e7770]::-webkit-scrollbar{width:8px}.history-content[data-v-f70e7770]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-f70e7770]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-f70e7770]:last-child{border-left:2px solid transparent}.timeline-header[data-v-f70e7770]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-f70e7770]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:none;z-index:2;box-sizing:border-box}.date-label[data-v-f70e7770]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-f70e7770]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-f70e7770]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-f70e7770],.no-more-hint[data-v-f70e7770]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-f70e7770]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-f70e7770]{padding:15px 20px}.header-left h2[data-v-f70e7770]{font-size:20px}.history-content[data-v-f70e7770]{padding:15px 20px}.grid-view[data-v-f70e7770]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-f70e7770]{height:120px}.list-meta[data-v-f70e7770]{display:none}.list-info[data-v-f70e7770]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.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.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.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;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-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:translateX(-50%);-webkit-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;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:translateX(-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:translateX(-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}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.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%}}.upload-list-item[data-v-3620a174]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(37,99,235,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,hsla(0,0%,100%,.8));box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-3620a174]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-3620a174]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-3620a174]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-3620a174]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-3620a174]:last-child{margin-bottom:0}.upload-list-item-url[data-v-3620a174]{display:flex;flex-direction:column}.file-icon[data-v-3620a174]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-3620a174]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,rgba(37,99,235,.05));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(37,99,235,.12));transition:all .3s ease}.upload-list-item-name-wrapper[data-v-3620a174]:hover{background:var(--file-name-hover-bg,rgba(37,99,235,.09));border-color:var(--file-name-hover-border,rgba(37,99,235,.2))}.upload-list-item-name[data-v-3620a174]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-3620a174]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,rgba(37,99,235,.04));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(37,99,235,.1))}.upload-list-item-progress[data-v-3620a174] .el-progress{--el-color-primary:#2563eb}.upload-list-item-progress[data-v-3620a174] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,rgba(0,0,0,.045));box-shadow:none;overflow:hidden}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner{border-radius:8px;background:#2563eb!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.12);pointer-events:none}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-3620a174 1s linear infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner{background:#16a34a!important;background-size:200% 100%;box-shadow:none;animation:none}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:progressPulse-3620a174 1s ease-in-out infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-3620a174{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-3620a174{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-3620a174] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-3620a174] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(37,99,235,.08),transparent);animation:shimmer-3620a174 2s infinite;z-index:0}@keyframes shimmer-3620a174{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-3620a174] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-3620a174 2s ease-in-out infinite}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-3620a174{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-3620a174]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-3620a174]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-3620a174]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-3620a174]{background:var(--file-action-primary-bg,#2563eb);color:#fff;box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-3620a174]{background:var(--file-action-danger-bg,#dc2626);color:#fff;box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}@media (max-width:768px){.upload-list-item-content[data-v-3620a174]{margin-left:2px}.upload-list-item-url-row[data-v-3620a174]{width:42vw;flex-direction:column;gap:6px}.upload-list-item-progress[data-v-3620a174]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:8px!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}.modern-file-action-btn[data-v-3620a174]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-3620a174]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-3620a174]{font-size:12px;width:32vw}}.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);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-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-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-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-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-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;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{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-vertical) var(--el-upload-dragger-padding-horizontal);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-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;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{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%;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;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}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-f81fd314{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-f81fd314],.upload-list-card[data-v-f81fd314]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-f81fd314]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-f81fd314] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-f81fd314]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-f81fd314],.upload-list-container[data-v-f81fd314]{width:70vw}}.upload-list-card.upload-list-busy[data-v-f81fd314],.upload-list-container.upload-list-busy[data-v-f81fd314]{height:40vh}.upload-list-card.is-uploading[data-v-f81fd314]{border:1px solid var(--el-upload-dragger-uniform-color,#2563eb)!important;box-shadow:none!important}.upload-card-wrapper[data-v-f81fd314]{position:relative;overflow:visible}.upload-card-glow[data-v-f81fd314]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-f81fd314]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-f81fd314]{width:70vw}}.upload-card-busy[data-v-f81fd314] .el-upload-dragger{height:17vh}[data-v-f81fd314] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:1px solid var(--glass-border);opacity:.7;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow)}[data-v-f81fd314] .el-upload:focus .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-f81fd314] .el-upload-dragger.is-dragover,[data-v-f81fd314] .el-upload-dragger:hover{opacity:.7;box-shadow:var(--glass-shadow)}.is-uploading[data-v-f81fd314] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-f81fd314]{position:relative;background:none}.upload-card.is-uploading[data-v-f81fd314]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-f81fd314 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-f81fd314]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}@media (max-width:768px){.el-upload__text[data-v-f81fd314]{font-size:small}}.el-upload__text.upload-list-busy[data-v-f81fd314]{font-size:small}.el-icon--upload[data-v-f81fd314]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-f81fd314]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-f81fd314]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-f81fd314]{font-size:30px}}.paste-card[data-v-f81fd314]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-f81fd314]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-f81fd314]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-f81fd314]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-f81fd314 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-f81fd314] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-f81fd314]{height:17vh}.upload-card-textarea[data-v-f81fd314]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,rgba(37,99,235,.02));transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-f81fd314]{height:50%}.upload-card-textarea[data-v-f81fd314]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:rgba(37,99,235,.2);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-f81fd314]:hover:before{opacity:1}.upload-card-textarea[data-v-f81fd314]:focus-within:before{opacity:1;background:rgba(37,99,235,.4)}[data-v-f81fd314] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-f81fd314] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-f81fd314] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-f81fd314] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(37,99,235,.03))}[data-v-f81fd314] .el-textarea__inner:focus{border-color:transparent;box-shadow:none;background:var(--textarea-inner-focus-bg,rgba(37,99,235,.02))}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar-thumb{background:rgba(37,99,235,.5);border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-f81fd314]{display:flex;justify-content:space-between;align-items:center;width:50vw;margin-top:3%}.paste-card-upload-button[data-v-f81fd314]{min-width:100px;height:42px;border-radius:14px!important;font-weight:600;font-size:15px;letter-spacing:2px;background:#2563eb!important;border:none!important;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)!important;position:relative;overflow:hidden}.paste-card-upload-button[data-v-f81fd314]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:hsla(0,0%,100%,.25);transition:left .6s ease}.paste-card-upload-button[data-v-f81fd314]:hover{transform:scale(1.02);box-shadow:none}.paste-card-upload-button[data-v-f81fd314]:hover:before{left:100%}.paste-card-upload-button[data-v-f81fd314]:active{transform:translateY(-1px) scale(.98)}.upload-card-busy .paste-card-upload-button[data-v-f81fd314]{min-width:70px;height:32px;border-radius:10px!important;font-size:13px;letter-spacing:1px}.upload-card-busy .paste-card-actions[data-v-f81fd314]{margin-top:2%}.paste-card-method-group[data-v-f81fd314]{background:var(--paste-method-group-bg,rgba(37,99,235,.08));border-radius:14px;padding:4px;border:1px solid var(--paste-method-group-border,rgba(37,99,235,.15))}.paste-card-method-group[data-v-f81fd314] .el-radio-button__inner{transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:10px!important;border:none!important;background:transparent;font-weight:500;padding:10px 20px;color:var(--el-text-color-regular)}.paste-card-method-group[data-v-f81fd314] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-f81fd314] .el-radio-button:last-child .el-radio-button__inner{border-radius:10px!important}.paste-card-method-group[data-v-f81fd314] .el-radio-button__inner:hover{background:var(--paste-method-hover-bg,rgba(37,99,235,.12));color:var(--el-color-primary)}.paste-card-method-group[data-v-f81fd314] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:#2563eb!important;color:#fff!important;box-shadow:none}@media (max-width:768px){.paste-card[data-v-f81fd314]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-f81fd314]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-f81fd314]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-f81fd314]:before{border-radius:11px}[data-v-f81fd314] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-f81fd314]{width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-f81fd314]{height:30px;min-width:55px;border-radius:8px!important;font-size:12px;letter-spacing:.5px;padding:0 10px}.paste-card-method-group[data-v-f81fd314]{border-radius:8px;padding:2px;height:30px;display:flex;align-items:center}.paste-card-method-group[data-v-f81fd314] .el-radio-button__inner{padding:4px 10px;font-size:11px;border-radius:6px!important;height:26px;display:flex;align-items:center}}.upload-list-dashboard[data-v-f81fd314]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;box-sizing:border-box;width:100%;min-width:0;position:sticky;top:0;z-index:1;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow);opacity:.7}[data-v-f81fd314] .el-upload-dragger{position:relative;overflow:hidden}[data-v-f81fd314] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-f81fd314] .el-upload-dragger:after,[data-v-f81fd314] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-f81fd314] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-f81fd314]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-f81fd314 60s linear infinite}.upload-card[data-v-f81fd314]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-f81fd314 40s linear infinite,starPulse-f81fd314 4s ease-in-out infinite}@keyframes starScroll-f81fd314{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-f81fd314{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-f81fd314]{display:flex;align-items:center;gap:5px;height:44px;box-sizing:border-box;padding:5px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-group[data-v-f81fd314]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-f81fd314]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-f81fd314]:focus,.modern-action-btn[data-v-f81fd314]:focus-visible{outline:none!important}.modern-action-btn[data-v-f81fd314]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-f81fd314]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-f81fd314]:hover:before{opacity:.08}.modern-action-btn[data-v-f81fd314]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-f81fd314]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-f81fd314]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-f81fd314]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-f81fd314]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-f81fd314]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-f81fd314]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-f81fd314]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;padding:0 14px;background:var(--dashboard-title-bg,rgba(37,99,235,.06));border:1px solid var(--glass-border);border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-f81fd314]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-f81fd314]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-f81fd314]{width:32px;height:32px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-f81fd314]{font-size:12px;padding:4px 10px}.upload-list-dashboard[data-v-f81fd314]{padding:0 8px;gap:4px}.upload-list-dashboard-title[data-v-f81fd314]{gap:4px;padding:3px 8px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-f81fd314]{flex-shrink:0}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.directory-suggestion-input[data-v-28b8eda7]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-28b8eda7]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:1px solid var(--glass-border);background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-28b8eda7]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-28b8eda7]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-28b8eda7]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.container[data-v-579106c0]{background:var(--bg-color);min-height:100vh}.rotate[data-v-579106c0]{animation:spin-579106c0 2s ease-in-out}.scale[data-v-579106c0]{animation:scale-579106c0 .5s ease-in-out}@keyframes spin-579106c0{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-579106c0{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-579106c0{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-579106c0{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-579106c0{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-579106c0]{display:inline-block}.mobile-only[data-v-579106c0]{display:none}@media (max-width:768px){.desktop-only[data-v-579106c0]{display:none!important}.mobile-only[data-v-579106c0]{display:flex!important}}.toggle-dark-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}html.dark .toggle-dark-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .more-dropdown .more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown .more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .more-dropdown .more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-method-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}html.dark .upload-method-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}@media (max-width:768px){.upload-method-button[data-v-579106c0]{width:2rem;height:2rem}}.upload-method-icon[data-v-579106c0]{outline:none}.more-button .svg-inline--fa[data-v-579106c0],.upload-method-button .svg-inline--fa[data-v-579106c0]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-579106c0]{font-size:1.3em}.mobile-more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-579106c0]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .mobile-more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .mobile-more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder-container[data-v-579106c0]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-579106c0]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-579106c0],.upload-folder-container[data-v-579106c0]{right:58px}}.upload-folder[data-v-579106c0]{width:100px;height:2.5rem;border-radius:12px;display:flex;align-items:center;box-sizing:border-box;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-579106c0]{width:200px}@media (max-width:768px){.upload-folder[data-v-579106c0]{width:80px;height:2rem}.upload-folder.active[data-v-579106c0]{width:120px}}.directory-tree-trigger[data-v-579106c0]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border:1px solid var(--glass-border);margin-left:10px;background-color:var(--glass-bg);box-shadow:var(--glass-shadow);color:var(--theme-toggle-color);border-radius:12px;outline:none;cursor:pointer;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.directory-tree-trigger[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc;transform:scale(1.05)}html.dark .directory-tree-trigger[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.directory-tree-trigger[data-v-579106c0]{width:2rem;height:2rem}}.upload-folder[data-v-579106c0] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-579106c0] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-579106c0] .el-input__wrapper{border-radius:12px;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);height:100%;padding:0 10px;box-sizing:border-box;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important}.upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;border:1px solid #d9dce2;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}html.dark .quick-toolbar[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.quick-toolbar-button[data-v-579106c0]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-579106c0]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-579106c0]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-579106c0]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-579106c0]{margin-top:4px}.quick-toolbar-icon[data-v-579106c0]{font-size:16px}.quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(0deg)}.info-container[data-v-579106c0]:hover,.quick-toolbar-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .quick-toolbar[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar-button[data-v-579106c0]:hover{transform:none}.toggle-dark-button[data-v-579106c0]:hover,.upload-method-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .toggle-dark-button[data-v-579106c0]:hover,html.dark .upload-method-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-579106c0]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-579106c0]{gap:2px}.quick-toolbar-more[data-v-579106c0]{margin-top:3px}.quick-toolbar-icon[data-v-579106c0]{font-size:14px}}[data-v-579106c0] .el-dialog{border-radius:12px;border:1px solid var(--glass-border);background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-579106c0]{display:flex;justify-content:center;margin-top:20px}.header[data-v-579106c0]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-579106c0]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-579106c0 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-579106c0]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-579106c0]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-579106c0]:hover:after{width:80%}.main-title[data-v-579106c0]{color:var(--upload-main-title-color);text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3));transition:opacity .16s ease}.title:hover .main-title[data-v-579106c0]{opacity:0}.title[data-v-579106c0]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-579106c0]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:var(--upload-title-crayon-deep,#1d2129);opacity:0;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -10px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-579106c0]{animation:crayonWrite-579106c0 .82s steps(18) forwards,crayonScratch-579106c0 .16s steps(2) .82s 3}@keyframes float-579106c0{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-579106c0{0%{opacity:0;clip-path:inset(-10px 100% -10px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -10px -10px)}47%{clip-path:inset(-10px 52% -10px -10px)}63%{clip-path:inset(-10px 34% -10px -10px)}78%{clip-path:inset(-10px 18% -10px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -10px -10px)}}@keyframes crayonScratch-579106c0{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-579106c0]{font-size:1.55rem;letter-spacing:1px}.title[data-v-579106c0]:hover{transform:scale(1.05)}}.upload-home[data-v-579106c0]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-579106c0]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-579106c0]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-579106c0]{padding-bottom:5px}.upload[data-v-579106c0]{top:-3.8vh}}.footer[data-v-579106c0]{height:6vh} \ No newline at end of file +.history-container[data-v-f70e7770]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-f70e7770]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-f70e7770]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-f70e7770]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-f70e7770]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-f70e7770]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-f70e7770]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-f70e7770]{display:flex;gap:10px}.header-right .el-button[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-f70e7770]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-f70e7770]{background:#dc2626;color:#fff}.history-content[data-v-f70e7770]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-f70e7770]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-f70e7770]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:1px solid var(--glass-border)}.grid-item[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-f70e7770]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-f70e7770],.grid-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-f70e7770]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-f70e7770]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-f70e7770]{opacity:1}.grid-actions[data-v-f70e7770]{display:flex;gap:15px}.grid-info[data-v-f70e7770]{padding:12px}.file-name[data-v-f70e7770]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-f70e7770]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-f70e7770]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.list-item[data-v-f70e7770]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-f70e7770]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-f70e7770],.list-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-f70e7770]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-f70e7770]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-f70e7770]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-f70e7770]{display:flex;gap:8px}.empty-state[data-v-f70e7770]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-f70e7770]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-f70e7770]::-webkit-scrollbar{width:8px}.history-content[data-v-f70e7770]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-f70e7770]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-f70e7770]:last-child{border-left:2px solid transparent}.timeline-header[data-v-f70e7770]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-f70e7770]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:none;z-index:2;box-sizing:border-box}.date-label[data-v-f70e7770]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-f70e7770]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-f70e7770]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-f70e7770],.no-more-hint[data-v-f70e7770]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-f70e7770]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-f70e7770]{padding:15px 20px}.header-left h2[data-v-f70e7770]{font-size:20px}.history-content[data-v-f70e7770]{padding:15px 20px}.grid-view[data-v-f70e7770]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-f70e7770]{height:120px}.list-meta[data-v-f70e7770]{display:none}.list-info[data-v-f70e7770]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.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.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.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;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-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:translateX(-50%);-webkit-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;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:translateX(-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:translateX(-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}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.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%}}.upload-list-item[data-v-3620a174]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(37,99,235,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,hsla(0,0%,100%,.8));box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-3620a174]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-3620a174]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-3620a174]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-3620a174]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-3620a174]:last-child{margin-bottom:0}.upload-list-item-url[data-v-3620a174]{display:flex;flex-direction:column}.file-icon[data-v-3620a174]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-3620a174]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,rgba(37,99,235,.05));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(37,99,235,.12));transition:all .3s ease}.upload-list-item-name-wrapper[data-v-3620a174]:hover{background:var(--file-name-hover-bg,rgba(37,99,235,.09));border-color:var(--file-name-hover-border,rgba(37,99,235,.2))}.upload-list-item-name[data-v-3620a174]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-3620a174]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,rgba(37,99,235,.04));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(37,99,235,.1))}.upload-list-item-progress[data-v-3620a174] .el-progress{--el-color-primary:#2563eb}.upload-list-item-progress[data-v-3620a174] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,rgba(0,0,0,.045));box-shadow:none;overflow:hidden}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner{border-radius:8px;background:#2563eb!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.12);pointer-events:none}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-3620a174 1s linear infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner{background:#16a34a!important;background-size:200% 100%;box-shadow:none;animation:none}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:progressPulse-3620a174 1s ease-in-out infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-3620a174{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-3620a174{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-3620a174] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-3620a174] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(37,99,235,.08),transparent);animation:shimmer-3620a174 2s infinite;z-index:0}@keyframes shimmer-3620a174{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-3620a174] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-3620a174 2s ease-in-out infinite}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-3620a174{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-3620a174]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-3620a174]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-3620a174]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-3620a174]{background:var(--file-action-primary-bg,#2563eb);color:#fff;box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-3620a174]{background:var(--file-action-danger-bg,#dc2626);color:#fff;box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}@media (max-width:768px){.upload-list-item-content[data-v-3620a174]{margin-left:2px}.upload-list-item-url-row[data-v-3620a174]{width:42vw;flex-direction:column;gap:6px}.upload-list-item-progress[data-v-3620a174]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:8px!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}.modern-file-action-btn[data-v-3620a174]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-3620a174]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-3620a174]{font-size:12px;width:32vw}}.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);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-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-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-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-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-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;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{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-vertical) var(--el-upload-dragger-padding-horizontal);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-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;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{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%;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;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}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-5afbc1b3{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-5afbc1b3],.upload-list-card[data-v-5afbc1b3]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-5afbc1b3]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-5afbc1b3] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-5afbc1b3]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-5afbc1b3],.upload-list-container[data-v-5afbc1b3]{width:70vw}}.upload-list-card.upload-list-busy[data-v-5afbc1b3],.upload-list-container.upload-list-busy[data-v-5afbc1b3]{height:40vh}.upload-list-card.is-uploading[data-v-5afbc1b3]{border:1px solid var(--el-upload-dragger-uniform-color,#2563eb)!important;box-shadow:none!important}.upload-card-wrapper[data-v-5afbc1b3]{position:relative;overflow:visible}.upload-card-glow[data-v-5afbc1b3]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-5afbc1b3]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-5afbc1b3]{width:70vw}}.upload-card-busy[data-v-5afbc1b3] .el-upload-dragger{height:17vh}[data-v-5afbc1b3] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:1px solid var(--glass-border);opacity:.7;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow)}[data-v-5afbc1b3] .el-upload:focus .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-5afbc1b3] .el-upload-dragger.is-dragover,[data-v-5afbc1b3] .el-upload-dragger:hover{opacity:.7;box-shadow:var(--glass-shadow)}.is-uploading[data-v-5afbc1b3] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-5afbc1b3]{position:relative;background:none}.upload-card.is-uploading[data-v-5afbc1b3]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-5afbc1b3 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-5afbc1b3]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}@media (max-width:768px){.el-upload__text[data-v-5afbc1b3]{font-size:small}}.el-upload__text.upload-list-busy[data-v-5afbc1b3]{font-size:small}.el-icon--upload[data-v-5afbc1b3]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-5afbc1b3]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-5afbc1b3]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-5afbc1b3]{font-size:30px}}.paste-card[data-v-5afbc1b3]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-5afbc1b3]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-5afbc1b3]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-5afbc1b3]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-5afbc1b3 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-5afbc1b3] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-5afbc1b3]{height:17vh}.upload-card-textarea[data-v-5afbc1b3]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,rgba(37,99,235,.02));transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-5afbc1b3]{height:50%}.upload-card-textarea[data-v-5afbc1b3]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:rgba(37,99,235,.2);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-5afbc1b3]:hover:before{opacity:1}.upload-card-textarea[data-v-5afbc1b3]:focus-within:before{opacity:1;background:rgba(37,99,235,.4)}[data-v-5afbc1b3] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-5afbc1b3] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-5afbc1b3] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-5afbc1b3] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(37,99,235,.03))}[data-v-5afbc1b3] .el-textarea__inner:focus{border-color:transparent;box-shadow:none;background:var(--textarea-inner-focus-bg,rgba(37,99,235,.02))}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar-thumb{background:rgba(37,99,235,.5);border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-5afbc1b3]{display:flex;justify-content:space-between;align-items:center;width:50vw;gap:12px;margin-top:16px}.paste-card-upload-button[data-v-5afbc1b3]{min-width:92px;height:38px;border-radius:10px!important;font-weight:600;font-size:14px;letter-spacing:.04em;color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 10%,var(--toolbar-button-bg-color))!important;border:1px solid color-mix(in srgb,var(--el-upload-dragger-uniform-color) 30%,var(--glass-border))!important;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,transform .2s ease!important}.paste-card-upload-button[data-v-5afbc1b3]:hover{color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 15%,var(--toolbar-button-bg-color))!important;border-color:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 48%,var(--glass-border))!important;transform:translateY(-1px);box-shadow:none}.paste-card-upload-button[data-v-5afbc1b3]:focus-visible{color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 15%,var(--toolbar-button-bg-color))!important;border-color:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 48%,var(--glass-border))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--el-upload-dragger-uniform-color) 14%,transparent)!important}.paste-card-upload-button[data-v-5afbc1b3]:active{transform:translateY(0);background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 18%,var(--toolbar-button-bg-color))!important}.upload-card-busy .paste-card-upload-button[data-v-5afbc1b3]{min-width:72px;height:32px;border-radius:8px!important;font-size:13px;letter-spacing:.02em}.upload-card-busy .paste-card-actions[data-v-5afbc1b3]{margin-top:10px}.paste-card-method-group[data-v-5afbc1b3]{display:inline-flex;align-items:center;height:38px;box-sizing:border-box;gap:2px;padding:3px;background:var(--modern-action-group-bg);border:1px solid var(--modern-action-group-border);border-radius:10px}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__inner{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:30px;box-sizing:border-box;padding:0 14px;border-radius:7px!important;border:none!important;background:transparent;font-weight:500;font-size:13px;line-height:1;color:var(--toolbar-button-color);box-shadow:none!important;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-5afbc1b3] .el-radio-button:last-child .el-radio-button__inner{border-radius:7px!important}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__inner:hover{background:var(--modern-action-group-hover-bg);color:var(--el-text-color-primary)}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 16%,var(--toolbar-button-bg-color))!important;color:var(--el-upload-dragger-uniform-color)!important;font-weight:600;box-shadow:0 0 0 1px color-mix(in srgb,var(--el-upload-dragger-uniform-color) 52%,var(--glass-border)) inset!important}@media (max-width:768px){.paste-card[data-v-5afbc1b3]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-5afbc1b3]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-5afbc1b3]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-5afbc1b3]:before{border-radius:11px}[data-v-5afbc1b3] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-5afbc1b3]{width:100%!important;margin-top:8px;gap:8px}.paste-card-upload-button[data-v-5afbc1b3]{height:32px;min-width:64px;border-radius:8px!important;font-size:12px;letter-spacing:.02em;padding:0 12px}.paste-card-method-group[data-v-5afbc1b3]{height:32px;padding:3px;border-radius:9px}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__inner{min-width:52px;height:26px;padding:0 10px;font-size:11px;border-radius:6px!important}}.upload-list-dashboard[data-v-5afbc1b3]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;box-sizing:border-box;width:100%;min-width:0;position:sticky;top:0;z-index:1;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow);opacity:.7}[data-v-5afbc1b3] .el-upload-dragger{position:relative;overflow:hidden}[data-v-5afbc1b3] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-5afbc1b3] .el-upload-dragger:after,[data-v-5afbc1b3] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-5afbc1b3] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-5afbc1b3]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-5afbc1b3 60s linear infinite}.upload-card[data-v-5afbc1b3]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-5afbc1b3 40s linear infinite,starPulse-5afbc1b3 4s ease-in-out infinite}@keyframes starScroll-5afbc1b3{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-5afbc1b3{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-5afbc1b3]{display:flex;align-items:center;gap:5px;height:44px;box-sizing:border-box;padding:5px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-group[data-v-5afbc1b3]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-5afbc1b3]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-5afbc1b3]:focus,.modern-action-btn[data-v-5afbc1b3]:focus-visible{outline:none!important}.modern-action-btn[data-v-5afbc1b3]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-5afbc1b3]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-5afbc1b3]:hover:before{opacity:.08}.modern-action-btn[data-v-5afbc1b3]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-5afbc1b3]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-5afbc1b3]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-5afbc1b3]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-5afbc1b3]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-5afbc1b3]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-5afbc1b3]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-5afbc1b3]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;padding:0 14px;background:var(--dashboard-title-bg,rgba(37,99,235,.06));border:1px solid var(--glass-border);border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-5afbc1b3]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-5afbc1b3]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-5afbc1b3]{width:32px;height:32px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-5afbc1b3]{font-size:12px;padding:4px 10px}.upload-list-dashboard[data-v-5afbc1b3]{padding:0 8px;gap:4px}.upload-list-dashboard-title[data-v-5afbc1b3]{gap:4px;padding:3px 8px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-5afbc1b3]{flex-shrink:0}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.directory-suggestion-input[data-v-28b8eda7]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-28b8eda7]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:1px solid var(--glass-border);background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-28b8eda7]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-28b8eda7]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-28b8eda7]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.container[data-v-579106c0]{background:var(--bg-color);min-height:100vh}.rotate[data-v-579106c0]{animation:spin-579106c0 2s ease-in-out}.scale[data-v-579106c0]{animation:scale-579106c0 .5s ease-in-out}@keyframes spin-579106c0{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-579106c0{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-579106c0{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-579106c0{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-579106c0{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-579106c0]{display:inline-block}.mobile-only[data-v-579106c0]{display:none}@media (max-width:768px){.desktop-only[data-v-579106c0]{display:none!important}.mobile-only[data-v-579106c0]{display:flex!important}}.toggle-dark-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}html.dark .toggle-dark-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .more-dropdown .more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown .more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .more-dropdown .more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-method-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}html.dark .upload-method-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}@media (max-width:768px){.upload-method-button[data-v-579106c0]{width:2rem;height:2rem}}.upload-method-icon[data-v-579106c0]{outline:none}.more-button .svg-inline--fa[data-v-579106c0],.upload-method-button .svg-inline--fa[data-v-579106c0]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-579106c0]{font-size:1.3em}.mobile-more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-579106c0]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .mobile-more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .mobile-more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder-container[data-v-579106c0]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-579106c0]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-579106c0],.upload-folder-container[data-v-579106c0]{right:58px}}.upload-folder[data-v-579106c0]{width:100px;height:2.5rem;border-radius:12px;display:flex;align-items:center;box-sizing:border-box;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-579106c0]{width:200px}@media (max-width:768px){.upload-folder[data-v-579106c0]{width:80px;height:2rem}.upload-folder.active[data-v-579106c0]{width:120px}}.directory-tree-trigger[data-v-579106c0]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border:1px solid var(--glass-border);margin-left:10px;background-color:var(--glass-bg);box-shadow:var(--glass-shadow);color:var(--theme-toggle-color);border-radius:12px;outline:none;cursor:pointer;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.directory-tree-trigger[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc;transform:scale(1.05)}html.dark .directory-tree-trigger[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.directory-tree-trigger[data-v-579106c0]{width:2rem;height:2rem}}.upload-folder[data-v-579106c0] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-579106c0] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-579106c0] .el-input__wrapper{border-radius:12px;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);height:100%;padding:0 10px;box-sizing:border-box;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important}.upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;border:1px solid #d9dce2;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}html.dark .quick-toolbar[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.quick-toolbar-button[data-v-579106c0]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-579106c0]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-579106c0]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-579106c0]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-579106c0]{margin-top:4px}.quick-toolbar-icon[data-v-579106c0]{font-size:16px}.quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(0deg)}.info-container[data-v-579106c0]:hover,.quick-toolbar-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .quick-toolbar[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar-button[data-v-579106c0]:hover{transform:none}.toggle-dark-button[data-v-579106c0]:hover,.upload-method-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .toggle-dark-button[data-v-579106c0]:hover,html.dark .upload-method-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-579106c0]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-579106c0]{gap:2px}.quick-toolbar-more[data-v-579106c0]{margin-top:3px}.quick-toolbar-icon[data-v-579106c0]{font-size:14px}}[data-v-579106c0] .el-dialog{border-radius:12px;border:1px solid var(--glass-border);background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-579106c0]{display:flex;justify-content:center;margin-top:20px}.header[data-v-579106c0]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-579106c0]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-579106c0 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-579106c0]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-579106c0]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-579106c0]:hover:after{width:80%}.main-title[data-v-579106c0]{color:var(--upload-main-title-color);text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3));transition:opacity .16s ease}.title:hover .main-title[data-v-579106c0]{opacity:0}.title[data-v-579106c0]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-579106c0]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:var(--upload-title-crayon-deep,#1d2129);opacity:0;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -10px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-579106c0]{animation:crayonWrite-579106c0 .82s steps(18) forwards,crayonScratch-579106c0 .16s steps(2) .82s 3}@keyframes float-579106c0{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-579106c0{0%{opacity:0;clip-path:inset(-10px 100% -10px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -10px -10px)}47%{clip-path:inset(-10px 52% -10px -10px)}63%{clip-path:inset(-10px 34% -10px -10px)}78%{clip-path:inset(-10px 18% -10px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -10px -10px)}}@keyframes crayonScratch-579106c0{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-579106c0]{font-size:1.55rem;letter-spacing:1px}.title[data-v-579106c0]:hover{transform:scale(1.05)}}.upload-home[data-v-579106c0]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-579106c0]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-579106c0]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-579106c0]{padding-bottom:5px}.upload[data-v-579106c0]{top:-3.8vh}}.footer[data-v-579106c0]{height:6vh} \ No newline at end of file diff --git a/frontend-dist/css/148.ff5f4652.css.gz b/frontend-dist/css/148.ff5f4652.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ea18f5f36dc4be22393400a62e08960700e1cbb6 GIT binary patch literal 11864 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 diff --git a/frontend-dist/css/888.793f4b66.css b/frontend-dist/css/888.af58b0bb.css similarity index 100% rename from frontend-dist/css/888.793f4b66.css rename to frontend-dist/css/888.af58b0bb.css diff --git a/frontend-dist/css/888.793f4b66.css.gz b/frontend-dist/css/888.af58b0bb.css.gz similarity index 100% rename from frontend-dist/css/888.793f4b66.css.gz rename to frontend-dist/css/888.af58b0bb.css.gz diff --git a/frontend-dist/css/957.db5680df.css b/frontend-dist/css/903.7a90c42f.css similarity index 66% rename from frontend-dist/css/957.db5680df.css rename to frontend-dist/css/903.7a90c42f.css index d3980723..7c25673b 100644 --- a/frontend-dist/css/957.db5680df.css +++ b/frontend-dist/css/903.7a90c42f.css @@ -1 +1 @@ -.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-3b79a1b6]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-3b79a1b6]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-3b79a1b6]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-3b79a1b6]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:rgba(56,189,248,.1);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-3b79a1b6]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-3b79a1b6]:before{content:"";display:inline-block;width:4px;height:16px;background:#38bdf8;border-radius:2px}.mobile-drawer-close[data-v-3b79a1b6]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-3b79a1b6]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-3b79a1b6]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-3b79a1b6]{background:rgba(56,189,248,.15);color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-3b79a1b6]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-3b79a1b6]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-3b79a1b6]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-3b79a1b6]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-3b79a1b6]{animation:slideInLeft-3b79a1b6 .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-3b79a1b6]{animation:slideOutLeft-3b79a1b6 .2s ease-in}.drawer-slide-enter-from[data-v-3b79a1b6],.drawer-slide-leave-to[data-v-3b79a1b6]{opacity:0}@keyframes slideInLeft-3b79a1b6{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-3b79a1b6{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-efef5a4c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-efef5a4c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-efef5a4c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:none}.bottom-sheet-header[data-v-efef5a4c]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-efef5a4c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-efef5a4c]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.dark .bottom-sheet-title[data-v-efef5a4c]{color:#f0f0f0}.bottom-sheet-content[data-v-efef5a4c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-efef5a4c]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--bottom-sheet-item-bg,rgba(0,0,0,.04));color:var(--el-text-color-primary)}html.dark .bottom-sheet-item[data-v-efef5a4c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-efef5a4c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-efef5a4c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-efef5a4c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-efef5a4c],.bottom-sheet-danger[data-v-efef5a4c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-efef5a4c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-efef5a4c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-efef5a4c]{animation:slideUp-efef5a4c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-efef5a4c]{animation:slideDown-efef5a4c .2s ease-in}.bottom-sheet-enter-from[data-v-efef5a4c],.bottom-sheet-leave-to[data-v-efef5a4c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-efef5a4c],.bottom-sheet-leave-to .bottom-sheet[data-v-efef5a4c]{transform:translateY(100%)}@keyframes slideUp-efef5a4c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-efef5a4c{0%{transform:translateY(0)}to{transform:translateY(100%)}}.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__active-bar.is-bottom{bottom:auto}.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-bottom:after{bottom:auto;top:0}.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);box-sizing:border-box;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);margin-top:-1px;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}.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:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.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:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.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:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.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}.batch-tag-container[data-v-0d04afa1]{padding:0}.tab-content[data-v-0d04afa1]{padding:20px}.tab-description[data-v-0d04afa1]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-0d04afa1]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-0d04afa1]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-0d04afa1]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-0d04afa1]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-0d04afa1],.tags-to-add-section[data-v-0d04afa1]{margin-bottom:20px}.common-tags-section h4[data-v-0d04afa1],.tags-to-add-section h4[data-v-0d04afa1]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-0d04afa1]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-0d04afa1]{cursor:default}.empty-message[data-v-0d04afa1]{color:#59636e;font-size:13px;padding:10px 0}.action-buttons[data-v-0d04afa1]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-24c809e4]{padding:10px 0}.input-section[data-v-24c809e4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-24c809e4]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-24c809e4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-24c809e4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-24c809e4],.popular-tags-section[data-v-24c809e4]{margin-bottom:20px}.current-tags-section h4[data-v-24c809e4],.popular-tags-section h4[data-v-24c809e4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-24c809e4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-24c809e4]{cursor:default}.tag-item.clickable[data-v-24c809e4]{cursor:pointer;transition:transform .2s}.empty-message[data-v-24c809e4]{color:#59636e;font-size:13px;padding:10px 0}.dialog-footer[data-v-24c809e4]{display:flex;justify-content:flex-end}.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;padding-right:0;text-align:left;width:fit-content}.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-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.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}.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-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;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;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:translateX(-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:translateX(-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%}.el-image-viewer-parent--hidden{overflow:hidden}.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)}}.detail-actions[data-v-38a97614]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-38a97614]{margin-left:0!important}.video-preview[data-v-38a97614]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-38a97614],.video-preview[data-v-38a97614]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-38a97614]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-38a97614] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-38a97614]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-38a97614]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-38a97614]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-38a97614] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-38a97614] .el-descriptions__content .el-tag,[data-v-38a97614] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-38a97614] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-38a97614] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-38a97614]{justify-content:center}}.batch-floating-bar[data-v-6de9da06]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:6px;max-width:min(720px,calc(100vw - 48px));padding:6px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow)}.batch-selection-summary[data-v-6de9da06]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-6de9da06]{min-width:18px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-batch-clear-color);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-6de9da06]{width:1px;height:16px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.58}.batch-floating-actions[data-v-6de9da06]{display:flex;align-items:center;gap:4px}.batch-floating-btn[data-v-6de9da06]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-6de9da06]:hover{transform:none;background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.danger[data-v-6de9da06]{color:var(--admin-batch-delete-color)}.batch-floating-btn.ban[data-v-6de9da06],.batch-floating-btn.tag[data-v-6de9da06],.batch-floating-btn.white[data-v-6de9da06]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ghost[data-v-6de9da06]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-6de9da06]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-6de9da06],.batch-toolbar-leave-active[data-v-6de9da06]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-6de9da06]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:4px;padding:5px;border-radius:999px}.batch-selection-summary[data-v-6de9da06]{padding:0 1px}.batch-selection-count[data-v-6de9da06]{min-width:16px;height:22px;padding:0 3px;font-size:12px}.batch-toolbar-divider[data-v-6de9da06]{height:14px}.batch-floating-actions[data-v-6de9da06]{flex:1;min-width:0;gap:3px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-6de9da06]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-6de9da06]{width:32px;height:32px;min-width:32px;padding:0;border-radius:50%}.batch-floating-icon[data-v-6de9da06]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{transform:translateX(-50%) translateY(0) scale(1)}}.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-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.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 .btn-next,.el-pagination .btn-prev{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 .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev: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;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}.dashboard-checkbox[data-v-f8222714]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--list[data-v-f8222714]{width:18px;height:18px;border:2px solid #d9dce2;border-radius:5px;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--list[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--list[data-v-f8222714]:hover{border-color:#38bdf8;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--list[data-v-f8222714]:hover{background:rgba(22,22,24,.88)}.dashboard-checkbox--list[data-v-f8222714]:focus-visible{outline:none;border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.14)}.dashboard-checkbox--list.checked[data-v-f8222714],.dashboard-checkbox--list.indeterminate[data-v-f8222714]{border-color:#38bdf8;background:#0ea5e9}.dashboard-checkbox--breadcrumb[data-v-f8222714]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]{border:1px solid #34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid #d9dce2;border-radius:5px;background:transparent;transition:border-color .18s ease,background .18s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:before{border-color:#34343a}.dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#4a4a52;background:rgba(22,22,24,.88)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:focus-visible{outline:none;border-color:rgba(56,189,248,.34)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714],.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#d9dce2;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--breadcrumb.checked[data-v-f8222714],html.dark .dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]:before{border-color:hsla(0,0%,100%,.4);background:#0ea5e9}.dashboard-checkbox-mark[data-v-f8222714]{position:relative;z-index:1;width:10px;height:10px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--list[data-v-f8222714]{width:16px;height:16px;border-width:1.5px}.dashboard-checkbox--list .dashboard-checkbox-mark[data-v-f8222714]{width:9px;height:9px}.dashboard-checkbox--breadcrumb[data-v-f8222714]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{inset:6px;border-radius:5px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:10px;height:10px}}.list-item[data-v-4b029ac8]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-4b029ac8]:last-child{border-bottom:none}.list-item[data-v-4b029ac8]:hover{background:var(--el-fill-color-light)}.list-col[data-v-4b029ac8]{display:flex;align-items:center}.list-col-checkbox[data-v-4b029ac8]{justify-content:center;min-width:40px}.list-col-preview[data-v-4b029ac8]{justify-content:center;cursor:pointer}.list-col-name[data-v-4b029ac8]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-4b029ac8]:hover{color:#38bdf8}.filename-ellipsis[data-v-4b029ac8]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-4b029ac8]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-4b029ac8]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-4b029ac8]{font-size:13px}.address-box[data-v-4b029ac8],.channel-name-box[data-v-4b029ac8]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-4b029ac8]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-4b029ac8]{width:70px}.address-box[data-v-4b029ac8]::-webkit-scrollbar,.channel-name-box[data-v-4b029ac8]::-webkit-scrollbar{display:none}.list-col-tags[data-v-4b029ac8]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-4b029ac8]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-4b029ac8]{min-width:30px;text-align:center}.list-empty[data-v-4b029ac8]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-4b029ac8]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-4b029ac8]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-4b029ac8]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-4b029ac8]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-4b029ac8]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-4b029ac8]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-4b029ac8]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-4b029ac8]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-4b029ac8],.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8],.list-col-tags[data-v-4b029ac8]{display:none}.list-col-name[data-v-4b029ac8]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-4b029ac8]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-4b029ac8]{font-size:24px}.list-file-icon[data-v-4b029ac8]{font-size:21px}.list-col-actions[data-v-4b029ac8]{gap:3px}.list-action-btn[data-v-4b029ac8]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-4b029ac8]{width:18px;min-width:18px}}.img-card[data-v-12b39bad]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-12b39bad]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-12b39bad] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-12b39bad] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-12b39bad]:hover{transform:scale(1.05)}.image-preview[data-v-12b39bad],.video-preview[data-v-12b39bad]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-12b39bad]{cursor:pointer}.img-card:hover .file-icon[data-v-12b39bad],.img-card:hover .image-preview[data-v-12b39bad],.img-card:hover .video-preview[data-v-12b39bad]{transform:scale(1.03)}.image-preview[data-v-12b39bad]:hover{opacity:.8}.file-short-info[data-v-12b39bad]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-12b39bad]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-12b39bad]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-12b39bad]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-12b39bad]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-12b39bad]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-12b39bad]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-12b39bad]{cursor:pointer}.card-bottom-overlay[data-v-12b39bad]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-12b39bad]{display:flex;align-items:center;justify-content:center}.file-name[data-v-12b39bad]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-12b39bad]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-12b39bad]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-12b39bad],.action-bar-right[data-v-12b39bad]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-12b39bad]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-12b39bad]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-12b39bad]:active{transform:scale(.95)}.action-btn-danger[data-v-12b39bad]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-12b39bad]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-12b39bad] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-12b39bad]:hover{transform:none}.file-short-info[data-v-12b39bad]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-12b39bad],.primary-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-12b39bad]{padding:22px 6px 6px}.file-name[data-v-12b39bad]{font-size:11px}.file-icon[data-v-12b39bad]{font-size:34px}.action-bar[data-v-12b39bad]{display:none!important}}@keyframes skeleton-shimmer-12b39bad{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-12b39bad]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-12b39bad 1.5s ease-in-out infinite}.error-wrapper[data-v-12b39bad]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-12b39bad]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-12b39bad]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-e3ec6a12]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-e3ec6a12] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-e3ec6a12] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-e3ec6a12]:hover{transform:scale(1.05)}.folder-card[data-v-e3ec6a12]{cursor:pointer}.folder-icon[data-v-e3ec6a12]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-e3ec6a12]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-e3ec6a12]{transform:scale(1.03)}.card-bottom-overlay[data-v-e3ec6a12]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-e3ec6a12]{display:flex;align-items:center;justify-content:center}.file-name[data-v-e3ec6a12]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-e3ec6a12]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-e3ec6a12]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-e3ec6a12],.action-bar-right[data-v-e3ec6a12]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-e3ec6a12]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-e3ec6a12]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-e3ec6a12]:active{transform:scale(.95)}.action-btn-danger[data-v-e3ec6a12]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-e3ec6a12]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-e3ec6a12] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-e3ec6a12]:hover{transform:none}.folder-icon-svg[data-v-e3ec6a12]{font-size:36px}.card-bottom-overlay[data-v-e3ec6a12]{padding:22px 6px 6px}.file-name[data-v-e3ec6a12]{font-size:11px}.action-bar[data-v-e3ec6a12]{display:none!important}}@keyframes skeleton-shimmer-ef863880{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-ef863880{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-ef863880]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-ef863880]{width:100%;height:100%;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-info[data-v-ef863880]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-ef863880]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-list-item[data-v-ef863880]{animation:skeleton-pulse-ef863880 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-ef863880]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-ef863880]{width:40px;height:40px;border-radius:6px}.skeleton-preview[data-v-ef863880],.skeleton-text-long[data-v-ef863880]{background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-text-long[data-v-ef863880]{height:14px;width:80%;border-radius:4px}.skeleton-text-short[data-v-ef863880]{width:60px}.skeleton-text-short[data-v-ef863880],.skeleton-text-tiny[data-v-ef863880]{height:14px;border-radius:4px;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-text-tiny[data-v-ef863880]{width:40px}.skeleton-tag[data-v-ef863880]{height:20px;width:50px;border-radius:10px;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-actions[data-v-ef863880]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-ef863880]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-ef863880]{display:flex;align-items:center}.list-col-checkbox[data-v-ef863880],.list-col-preview[data-v-ef863880]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-ef863880]{height:148px;border-radius:7px}.skeleton-info[data-v-ef863880]{padding:22px 6px 6px}.skeleton-text[data-v-ef863880]{height:11px;width:68%;border-radius:3px}.list-item[data-v-ef863880]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-ef863880]{width:16px;height:16px}.skeleton-preview[data-v-ef863880]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-ef863880],.skeleton-text-short[data-v-ef863880],.skeleton-text-tiny[data-v-ef863880]{height:10px;border-radius:3px}.skeleton-actions[data-v-ef863880]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-ef863880],.list-col-channel-name[data-v-ef863880],.list-col-channel[data-v-ef863880],.list-col-date[data-v-ef863880],.list-col-size[data-v-ef863880],.list-col-tags[data-v-ef863880]{display:none}}.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-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-e6a38b20]{flex-shrink:0}.filter-trigger[data-v-e6a38b20]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-e6a38b20]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-e6a38b20]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-e6a38b20] .el-badge__content{background:#0ea5e9;border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-e6a38b20]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-e6a38b20]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-e6a38b20]:last-of-type{border-bottom:none}.filter-title[data-v-e6a38b20]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-e6a38b20],.filter-options[data-v-e6a38b20] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-e6a38b20] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-e6a38b20] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-e6a38b20]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-e6a38b20]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-e6a38b20]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-e6a38b20]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-e6a38b20]:hover:not(:disabled){background:#0ea5e9;border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-e6a38b20]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-e6a38b20]{min-width:160px;max-height:320px}.filter-section[data-v-e6a38b20]{padding:6px 10px}.filter-title[data-v-e6a38b20]{font-size:11px;margin-bottom:4px}.filter-options[data-v-e6a38b20] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:12px}.header-icon[data-v-e6a38b20]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-07e603fa]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-07e603fa]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-07e603fa]{z-index:1200}.page-switcher-sheet[data-v-07e603fa]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-07e603fa]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-07e603fa]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-07e603fa]{line-height:1}.page-switcher-arrow[data-v-07e603fa]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-07e603fa]{transform:rotate(180deg)}.page-option[data-v-07e603fa]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-07e603fa]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-07e603fa]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-07e603fa]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-07e603fa]{opacity:1}.page-switcher.is-open .page-option-list[data-v-07e603fa]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-07e603fa]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-07e603fa],.page-option.is-current>.page-switcher-arrow[data-v-07e603fa],.page-option.is-current>.page-switcher-title[data-v-07e603fa]{translate:0 1px}.page-option[data-v-07e603fa]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-07e603fa]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-07e603fa]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-07e603fa]{gap:6px}.page-switcher-title[data-v-07e603fa]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-07e603fa]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-07e603fa]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-07e603fa]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-07e603fa]{width:15px}.page-option-list[data-v-07e603fa]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-07e603fa]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-07e603fa]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-07e603fa]{margin-left:4px}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-07e603fa] #themeToggle,.tabs[data-v-07e603fa] #themeToggle:hover,.tabs[data-v-07e603fa] .language-switcher,.tabs[data-v-07e603fa] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.container[data-v-57eabdee]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-57eabdee] .el-container,[data-v-57eabdee] .el-main{overflow:visible}[data-v-57eabdee] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-57eabdee]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-57eabdee]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-57eabdee]{font-size:.95em}.header-content .actions[data-v-57eabdee]{gap:10px}.search-card[data-v-57eabdee] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-57eabdee] .el-input__wrapper{padding:0 10px}.search-card[data-v-57eabdee] .el-input__inner:focus{width:65vw}}.header-content[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.82);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-57eabdee]:hover{background:rgba(35,35,35,.85);box-shadow:none}.header-icon[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-57eabdee]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-57eabdee]{height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb-view-toggle[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb-view-toggle[data-v-57eabdee]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .breadcrumb-view-toggle[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-view-button[data-v-57eabdee]{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-57eabdee]:hover{color:#38bdf8}.breadcrumb-view-button.is-active[data-v-57eabdee]{color:#38bdf8;background:rgba(56,189,248,.12);box-shadow:none}.breadcrumb-view-icon[data-v-57eabdee]{width:14px;height:14px}@media (max-width:768px){.breadcrumb-container[data-v-57eabdee]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-57eabdee]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-button[data-v-57eabdee]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-57eabdee]{width:12px;height:12px}}.stats-badge[data-v-57eabdee]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:hsla(0,0%,100%,.72);padding:4px 12px;border-radius:12px;border:1px solid #d9dce2;box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}html.dark .stats-badge[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.stats-badge[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .stats-badge[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.stats-badge-icon[data-v-57eabdee]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-57eabdee]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-57eabdee]{font-size:9px}}.header-content .actions[data-v-57eabdee]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-57eabdee]{margin-top:10px}}.header-content .actions i[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-57eabdee]{color:#c0c4cc;pointer-events:none}.header-content .actions .enabled[data-v-57eabdee]{color:var(--admin-purple)}.search-area[data-v-57eabdee]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-57eabdee]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-57eabdee]{display:flex;align-items:center}.search-card[data-v-57eabdee] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-57eabdee] .el-input__wrapper{border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-57eabdee] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-57eabdee] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-57eabdee] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-57eabdee] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-57eabdee] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-57eabdee] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner:focus{width:55vw}}.search-icon[data-v-57eabdee]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-57eabdee]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-57eabdee] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-57eabdee]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-57eabdee]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:86px}}.content[data-v-57eabdee]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-57eabdee],.list-view.is-drag-selecting[data-v-57eabdee]{cursor:crosshair}.content.is-drag-selecting[data-v-57eabdee] .img-card:hover,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-57eabdee] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-57eabdee] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-57eabdee] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-57eabdee]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-57eabdee]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-57eabdee]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-57eabdee]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-57eabdee]{padding:80px 20px}@media (max-width:768px){.content[data-v-57eabdee]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-57eabdee]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-57eabdee]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-57eabdee]{display:flex;align-items:center}.list-col-checkbox[data-v-57eabdee]{justify-content:center;min-width:40px}@media (max-width:768px){.list-header[data-v-57eabdee]{display:none}}.pagination-container[data-v-57eabdee]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-57eabdee]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-57eabdee] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-57eabdee] .el-pager li{background:hsla(0,0%,100%,.72);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .el-pager li{background:rgba(22,22,24,.75);border:1px solid #34343a}.pagination-container[data-v-57eabdee] .el-pager li:hover{color:#38bdf8;background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .pagination-container[data-v-57eabdee] .el-pager li:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.pagination-container[data-v-57eabdee] .el-pager li.is-active{background:#0ea5e9!important;color:#fff!important;border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-57eabdee] .el-pager li.is-active:hover{box-shadow:none!important}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{background:hsla(0,0%,100%,.72)!important;border-radius:10px!important;min-width:36px;height:36px;border:1px solid #d9dce2!important;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .btn-next,html.dark .pagination-container[data-v-57eabdee] .btn-prev{background:rgba(22,22,24,.75)!important;border:1px solid #34343a!important}.pagination-container[data-v-57eabdee] .btn-next:hover,.pagination-container[data-v-57eabdee] .btn-prev:hover{color:#38bdf8;background:hsla(0,0%,100%,.85)!important;border-color:#bfc4cc!important}html.dark .pagination-container[data-v-57eabdee] .btn-next:hover,html.dark .pagination-container[data-v-57eabdee] .btn-prev:hover{background:rgba(22,22,24,.88)!important;border-color:#4a4a52!important}.pagination-right[data-v-57eabdee]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-57eabdee]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-57eabdee]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-57eabdee]{width:50px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:hsla(0,0%,100%,.72);box-shadow:none;border:1px solid #d9dce2;border-radius:8px;padding:0 8px;height:28px}html.dark .page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:rgba(22,22,24,.75);border:1px solid #34343a}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-57eabdee]{background:#0ea5e9;border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:none;transition:all .3s ease}.page-jump .jump-btn[data-v-57eabdee]:hover{box-shadow:none}@media (max-width:768px){.pagination-container[data-v-57eabdee]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-57eabdee]{order:0;gap:6px;flex-wrap:wrap;justify-content:center}.pagination-container[data-v-57eabdee] .el-pager li{min-width:30px;height:30px;line-height:30px;margin:0 2px;border-radius:8px;font-size:12px}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{position:static!important;top:auto!important;left:auto!important;right:auto!important;display:none!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px;scale:1!important}.pagination-right[data-v-57eabdee]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-57eabdee],.page-total[data-v-57eabdee]{font-size:12px}.page-jump .jump-input[data-v-57eabdee]{width:40px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{height:26px;line-height:26px;font-size:12px}.page-jump .jump-btn[data-v-57eabdee]{height:26px;padding:0 10px;border-radius:7px;font-size:11px}.refresh-btn[data-v-57eabdee]{width:30px!important;min-width:30px!important;padding:0!important}.load-more[data-v-57eabdee],.refresh-btn[data-v-57eabdee]{--el-button-size:30px;height:30px!important;border-radius:8px!important;font-size:12px!important}.load-more[data-v-57eabdee]{min-height:30px!important;padding:0 10px!important}}.refresh-btn[data-v-57eabdee]{cursor:pointer;background:hsla(0,0%,100%,.72);box-shadow:none;color:#38bdf8;border:1px solid #d9dce2;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .refresh-btn[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.refresh-btn[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc;color:#0ea5e9}html.dark .refresh-btn[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.load-more[data-v-57eabdee]{cursor:pointer;background:#0ea5e9;box-shadow:none;color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-57eabdee]:hover{box-shadow:none}[data-v-57eabdee] .btn-prev{left:8px}[data-v-57eabdee] .btn-next,[data-v-57eabdee] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-57eabdee] .btn-next{right:8px}@media (min-width:768px){[data-v-57eabdee] .el-pagination.is-background .btn-next,[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:rgba(22,22,24,.75);border:1px solid #34343a}[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}}.question-icon[data-v-57eabdee]{margin:0 3px}.breadcrumb[data-v-57eabdee]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb[data-v-57eabdee]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb[data-v-57eabdee]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .breadcrumb[data-v-57eabdee]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-home-icon[data-v-57eabdee]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-57eabdee]:hover{color:#38bdf8}[data-v-57eabdee] .el-breadcrumb__item{cursor:pointer}[data-v-57eabdee] .el-breadcrumb,[data-v-57eabdee] .el-breadcrumb__inner,[data-v-57eabdee] .el-breadcrumb__item,[data-v-57eabdee] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-57eabdee] .el-breadcrumb__inner{cursor:pointer}[data-v-57eabdee] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-57eabdee]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:hsla(0,0%,100%,.72);border-radius:8px;border:1px solid #d9dce2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .mobile-directory-trigger[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-directory-trigger[data-v-57eabdee]:active{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}.mobile-directory-icon[data-v-57eabdee]{flex:0 0 auto;font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-57eabdee]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-57eabdee]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-57eabdee]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-57eabdee]{display:flex}.desktop-only[data-v-57eabdee]{display:none!important}.breadcrumb-container[data-v-57eabdee]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-57eabdee]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px} \ No newline at end of file +.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-3b79a1b6]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-3b79a1b6]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-3b79a1b6]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-3b79a1b6]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:rgba(56,189,248,.1);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-3b79a1b6]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-3b79a1b6]:before{content:"";display:inline-block;width:4px;height:16px;background:#38bdf8;border-radius:2px}.mobile-drawer-close[data-v-3b79a1b6]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-3b79a1b6]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-3b79a1b6]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-3b79a1b6]{background:rgba(56,189,248,.15);color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-3b79a1b6]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-3b79a1b6]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-3b79a1b6]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-3b79a1b6]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-3b79a1b6]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-3b79a1b6]{animation:slideInLeft-3b79a1b6 .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-3b79a1b6]{animation:slideOutLeft-3b79a1b6 .2s ease-in}.drawer-slide-enter-from[data-v-3b79a1b6],.drawer-slide-leave-to[data-v-3b79a1b6]{opacity:0}@keyframes slideInLeft-3b79a1b6{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-3b79a1b6{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-efef5a4c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-efef5a4c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-efef5a4c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:none}.bottom-sheet-header[data-v-efef5a4c]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-efef5a4c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-efef5a4c]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.dark .bottom-sheet-title[data-v-efef5a4c]{color:#f0f0f0}.bottom-sheet-content[data-v-efef5a4c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-efef5a4c]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--bottom-sheet-item-bg,rgba(0,0,0,.04));color:var(--el-text-color-primary)}html.dark .bottom-sheet-item[data-v-efef5a4c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-efef5a4c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-efef5a4c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-efef5a4c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-efef5a4c],.bottom-sheet-danger[data-v-efef5a4c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-efef5a4c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-efef5a4c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-efef5a4c]{animation:slideUp-efef5a4c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-efef5a4c]{animation:slideDown-efef5a4c .2s ease-in}.bottom-sheet-enter-from[data-v-efef5a4c],.bottom-sheet-leave-to[data-v-efef5a4c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-efef5a4c],.bottom-sheet-leave-to .bottom-sheet[data-v-efef5a4c]{transform:translateY(100%)}@keyframes slideUp-efef5a4c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-efef5a4c{0%{transform:translateY(0)}to{transform:translateY(100%)}}.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__active-bar.is-bottom{bottom:auto}.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-bottom:after{bottom:auto;top:0}.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);box-sizing:border-box;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);margin-top:-1px;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}.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:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.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:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.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:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.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}.batch-tag-container[data-v-0d04afa1]{padding:0}.tab-content[data-v-0d04afa1]{padding:20px}.tab-description[data-v-0d04afa1]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-0d04afa1]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-0d04afa1]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-0d04afa1]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-0d04afa1]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-0d04afa1],.tags-to-add-section[data-v-0d04afa1]{margin-bottom:20px}.common-tags-section h4[data-v-0d04afa1],.tags-to-add-section h4[data-v-0d04afa1]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-0d04afa1]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-0d04afa1]{cursor:default}.empty-message[data-v-0d04afa1]{color:#59636e;font-size:13px;padding:10px 0}.action-buttons[data-v-0d04afa1]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-24c809e4]{padding:10px 0}.input-section[data-v-24c809e4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-24c809e4]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-24c809e4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-24c809e4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-24c809e4],.popular-tags-section[data-v-24c809e4]{margin-bottom:20px}.current-tags-section h4[data-v-24c809e4],.popular-tags-section h4[data-v-24c809e4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-24c809e4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-24c809e4]{cursor:default}.tag-item.clickable[data-v-24c809e4]{cursor:pointer;transition:transform .2s}.empty-message[data-v-24c809e4]{color:#59636e;font-size:13px;padding:10px 0}.dialog-footer[data-v-24c809e4]{display:flex;justify-content:flex-end}.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;padding-right:0;text-align:left;width:fit-content}.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-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.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}.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-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;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;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:translateX(-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:translateX(-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%}.el-image-viewer-parent--hidden{overflow:hidden}.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)}}.detail-actions[data-v-38a97614]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-38a97614]{margin-left:0!important}.video-preview[data-v-38a97614]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-38a97614],.video-preview[data-v-38a97614]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-38a97614]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-38a97614] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-38a97614]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-38a97614]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-38a97614]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-38a97614] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-38a97614] .el-descriptions__content .el-tag,[data-v-38a97614] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-38a97614] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-38a97614] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-38a97614]{justify-content:center}}.batch-floating-bar[data-v-6de9da06]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:6px;max-width:min(720px,calc(100vw - 48px));padding:6px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow)}.batch-selection-summary[data-v-6de9da06]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-6de9da06]{min-width:18px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-batch-clear-color);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-6de9da06]{width:1px;height:16px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.58}.batch-floating-actions[data-v-6de9da06]{display:flex;align-items:center;gap:4px}.batch-floating-btn[data-v-6de9da06]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-6de9da06]:hover{transform:none;background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.danger[data-v-6de9da06]{color:var(--admin-batch-delete-color)}.batch-floating-btn.ban[data-v-6de9da06],.batch-floating-btn.tag[data-v-6de9da06],.batch-floating-btn.white[data-v-6de9da06]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ghost[data-v-6de9da06]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-6de9da06]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-6de9da06],.batch-toolbar-leave-active[data-v-6de9da06]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-6de9da06]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:4px;padding:5px;border-radius:999px}.batch-selection-summary[data-v-6de9da06]{padding:0 1px}.batch-selection-count[data-v-6de9da06]{min-width:16px;height:22px;padding:0 3px;font-size:12px}.batch-toolbar-divider[data-v-6de9da06]{height:14px}.batch-floating-actions[data-v-6de9da06]{flex:1;min-width:0;gap:3px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-6de9da06]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-6de9da06]{width:32px;height:32px;min-width:32px;padding:0;border-radius:50%}.batch-floating-icon[data-v-6de9da06]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{transform:translateX(-50%) translateY(0) scale(1)}}.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-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.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 .btn-next,.el-pagination .btn-prev{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 .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev: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;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}.dashboard-checkbox[data-v-f8222714]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--list[data-v-f8222714]{width:18px;height:18px;border:2px solid #d9dce2;border-radius:5px;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--list[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--list[data-v-f8222714]:hover{border-color:#38bdf8;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--list[data-v-f8222714]:hover{background:rgba(22,22,24,.88)}.dashboard-checkbox--list[data-v-f8222714]:focus-visible{outline:none;border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.14)}.dashboard-checkbox--list.checked[data-v-f8222714],.dashboard-checkbox--list.indeterminate[data-v-f8222714]{border-color:#38bdf8;background:#0ea5e9}.dashboard-checkbox--breadcrumb[data-v-f8222714]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]{border:1px solid #34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid #d9dce2;border-radius:5px;background:transparent;transition:border-color .18s ease,background .18s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:before{border-color:#34343a}.dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#4a4a52;background:rgba(22,22,24,.88)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:focus-visible{outline:none;border-color:rgba(56,189,248,.34)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714],.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#d9dce2;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--breadcrumb.checked[data-v-f8222714],html.dark .dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]:before{border-color:hsla(0,0%,100%,.4);background:#0ea5e9}.dashboard-checkbox-mark[data-v-f8222714]{position:relative;z-index:1;width:10px;height:10px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--list[data-v-f8222714]{width:16px;height:16px;border-width:1.5px}.dashboard-checkbox--list .dashboard-checkbox-mark[data-v-f8222714]{width:9px;height:9px}.dashboard-checkbox--breadcrumb[data-v-f8222714]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{inset:6px;border-radius:5px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:10px;height:10px}}.list-item[data-v-4b029ac8]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-4b029ac8]:last-child{border-bottom:none}.list-item[data-v-4b029ac8]:hover{background:var(--el-fill-color-light)}.list-col[data-v-4b029ac8]{display:flex;align-items:center}.list-col-checkbox[data-v-4b029ac8]{justify-content:center;min-width:40px}.list-col-preview[data-v-4b029ac8]{justify-content:center;cursor:pointer}.list-col-name[data-v-4b029ac8]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-4b029ac8]:hover{color:#38bdf8}.filename-ellipsis[data-v-4b029ac8]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-4b029ac8]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-4b029ac8]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-4b029ac8]{font-size:13px}.address-box[data-v-4b029ac8],.channel-name-box[data-v-4b029ac8]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-4b029ac8]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-4b029ac8]{width:70px}.address-box[data-v-4b029ac8]::-webkit-scrollbar,.channel-name-box[data-v-4b029ac8]::-webkit-scrollbar{display:none}.list-col-tags[data-v-4b029ac8]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-4b029ac8]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-4b029ac8]{min-width:30px;text-align:center}.list-empty[data-v-4b029ac8]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-4b029ac8]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-4b029ac8]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-4b029ac8]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-4b029ac8]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-4b029ac8]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-4b029ac8]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-4b029ac8]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-4b029ac8]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-4b029ac8],.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8],.list-col-tags[data-v-4b029ac8]{display:none}.list-col-name[data-v-4b029ac8]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-4b029ac8]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-4b029ac8]{font-size:24px}.list-file-icon[data-v-4b029ac8]{font-size:21px}.list-col-actions[data-v-4b029ac8]{gap:3px}.list-action-btn[data-v-4b029ac8]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-4b029ac8]{width:18px;min-width:18px}}.img-card[data-v-12b39bad]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-12b39bad]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-12b39bad] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-12b39bad] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-12b39bad]:hover{transform:scale(1.05)}.image-preview[data-v-12b39bad],.video-preview[data-v-12b39bad]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-12b39bad]{cursor:pointer}.img-card:hover .file-icon[data-v-12b39bad],.img-card:hover .image-preview[data-v-12b39bad],.img-card:hover .video-preview[data-v-12b39bad]{transform:scale(1.03)}.image-preview[data-v-12b39bad]:hover{opacity:.8}.file-short-info[data-v-12b39bad]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-12b39bad]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-12b39bad]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-12b39bad]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-12b39bad]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-12b39bad]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-12b39bad]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-12b39bad]{cursor:pointer}.card-bottom-overlay[data-v-12b39bad]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-12b39bad]{display:flex;align-items:center;justify-content:center}.file-name[data-v-12b39bad]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-12b39bad]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-12b39bad]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-12b39bad],.action-bar-right[data-v-12b39bad]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-12b39bad]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-12b39bad]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-12b39bad]:active{transform:scale(.95)}.action-btn-danger[data-v-12b39bad]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-12b39bad]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-12b39bad] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-12b39bad]:hover{transform:none}.file-short-info[data-v-12b39bad]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-12b39bad],.primary-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-12b39bad]{padding:22px 6px 6px}.file-name[data-v-12b39bad]{font-size:11px}.file-icon[data-v-12b39bad]{font-size:34px}.action-bar[data-v-12b39bad]{display:none!important}}@keyframes skeleton-shimmer-12b39bad{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-12b39bad]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-12b39bad 1.5s ease-in-out infinite}.error-wrapper[data-v-12b39bad]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-12b39bad]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-12b39bad]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-e3ec6a12]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-e3ec6a12] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-e3ec6a12] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-e3ec6a12]:hover{transform:scale(1.05)}.folder-card[data-v-e3ec6a12]{cursor:pointer}.folder-icon[data-v-e3ec6a12]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-e3ec6a12]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-e3ec6a12]{transform:scale(1.03)}.card-bottom-overlay[data-v-e3ec6a12]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-e3ec6a12]{display:flex;align-items:center;justify-content:center}.file-name[data-v-e3ec6a12]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-e3ec6a12]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-e3ec6a12]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-e3ec6a12],.action-bar-right[data-v-e3ec6a12]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-e3ec6a12]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-e3ec6a12]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-e3ec6a12]:active{transform:scale(.95)}.action-btn-danger[data-v-e3ec6a12]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-e3ec6a12]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-e3ec6a12] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-e3ec6a12]:hover{transform:none}.folder-icon-svg[data-v-e3ec6a12]{font-size:36px}.card-bottom-overlay[data-v-e3ec6a12]{padding:22px 6px 6px}.file-name[data-v-e3ec6a12]{font-size:11px}.action-bar[data-v-e3ec6a12]{display:none!important}}@keyframes skeleton-shimmer-070880ec{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-070880ec{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-070880ec]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-070880ec]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-info[data-v-070880ec]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-070880ec]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.25) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-list-item[data-v-070880ec]{animation:skeleton-pulse-070880ec 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-070880ec]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-070880ec]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-long[data-v-070880ec]{width:80%}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-short[data-v-070880ec]{width:60px}.skeleton-text-tiny[data-v-070880ec]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-tag[data-v-070880ec]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-070880ec]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-070880ec]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-070880ec]{display:flex;align-items:center}.list-col-checkbox[data-v-070880ec],.list-col-preview[data-v-070880ec]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-070880ec]{height:148px;border-radius:7px}.skeleton-info[data-v-070880ec]{padding:22px 6px 6px}.skeleton-text[data-v-070880ec]{height:11px;width:68%;border-radius:3px}.list-item[data-v-070880ec]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-070880ec]{width:16px;height:16px}.skeleton-preview[data-v-070880ec]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{height:10px;border-radius:3px}.skeleton-actions[data-v-070880ec]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-070880ec],.list-col-channel-name[data-v-070880ec],.list-col-channel[data-v-070880ec],.list-col-date[data-v-070880ec],.list-col-size[data-v-070880ec],.list-col-tags[data-v-070880ec]{display:none}}.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-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-e6a38b20]{flex-shrink:0}.filter-trigger[data-v-e6a38b20]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-e6a38b20]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-e6a38b20]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-e6a38b20] .el-badge__content{background:#0ea5e9;border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-e6a38b20]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-e6a38b20]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-e6a38b20]:last-of-type{border-bottom:none}.filter-title[data-v-e6a38b20]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-e6a38b20],.filter-options[data-v-e6a38b20] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-e6a38b20] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-e6a38b20] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-e6a38b20]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-e6a38b20]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-e6a38b20]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-e6a38b20]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-e6a38b20]:hover:not(:disabled){background:#0ea5e9;border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-e6a38b20]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-e6a38b20]{min-width:160px;max-height:320px}.filter-section[data-v-e6a38b20]{padding:6px 10px}.filter-title[data-v-e6a38b20]{font-size:11px;margin-bottom:4px}.filter-options[data-v-e6a38b20] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:12px}.header-icon[data-v-e6a38b20]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-07e603fa]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-07e603fa]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-07e603fa]{z-index:1200}.page-switcher-sheet[data-v-07e603fa]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-07e603fa]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-07e603fa]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-07e603fa]{line-height:1}.page-switcher-arrow[data-v-07e603fa]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-07e603fa]{transform:rotate(180deg)}.page-option[data-v-07e603fa]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-07e603fa]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-07e603fa]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-07e603fa]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-07e603fa]{opacity:1}.page-switcher.is-open .page-option-list[data-v-07e603fa]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-07e603fa]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-07e603fa],.page-option.is-current>.page-switcher-arrow[data-v-07e603fa],.page-option.is-current>.page-switcher-title[data-v-07e603fa]{translate:0 1px}.page-option[data-v-07e603fa]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-07e603fa]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-07e603fa]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-07e603fa]{gap:6px}.page-switcher-title[data-v-07e603fa]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-07e603fa]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-07e603fa]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-07e603fa]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-07e603fa]{width:15px}.page-option-list[data-v-07e603fa]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-07e603fa]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-07e603fa]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-07e603fa]{margin-left:4px}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-07e603fa] #themeToggle,.tabs[data-v-07e603fa] #themeToggle:hover,.tabs[data-v-07e603fa] .language-switcher,.tabs[data-v-07e603fa] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.container[data-v-57eabdee]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-57eabdee] .el-container,[data-v-57eabdee] .el-main{overflow:visible}[data-v-57eabdee] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-57eabdee]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-57eabdee]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-57eabdee]{font-size:.95em}.header-content .actions[data-v-57eabdee]{gap:10px}.search-card[data-v-57eabdee] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-57eabdee] .el-input__wrapper{padding:0 10px}.search-card[data-v-57eabdee] .el-input__inner:focus{width:65vw}}.header-content[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.82);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-57eabdee]:hover{background:rgba(35,35,35,.85);box-shadow:none}.header-icon[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-57eabdee]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-57eabdee]{height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb-view-toggle[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb-view-toggle[data-v-57eabdee]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .breadcrumb-view-toggle[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-view-button[data-v-57eabdee]{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-57eabdee]:hover{color:#38bdf8}.breadcrumb-view-button.is-active[data-v-57eabdee]{color:#38bdf8;background:rgba(56,189,248,.12);box-shadow:none}.breadcrumb-view-icon[data-v-57eabdee]{width:14px;height:14px}@media (max-width:768px){.breadcrumb-container[data-v-57eabdee]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-57eabdee]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-button[data-v-57eabdee]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-57eabdee]{width:12px;height:12px}}.stats-badge[data-v-57eabdee]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:hsla(0,0%,100%,.72);padding:4px 12px;border-radius:12px;border:1px solid #d9dce2;box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}html.dark .stats-badge[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.stats-badge[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .stats-badge[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.stats-badge-icon[data-v-57eabdee]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-57eabdee]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-57eabdee]{font-size:9px}}.header-content .actions[data-v-57eabdee]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-57eabdee]{margin-top:10px}}.header-content .actions i[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-57eabdee]{color:#c0c4cc;pointer-events:none}.header-content .actions .enabled[data-v-57eabdee]{color:var(--admin-purple)}.search-area[data-v-57eabdee]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-57eabdee]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-57eabdee]{display:flex;align-items:center}.search-card[data-v-57eabdee] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-57eabdee] .el-input__wrapper{border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-57eabdee] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-57eabdee] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-57eabdee] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-57eabdee] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-57eabdee] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-57eabdee] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner:focus{width:55vw}}.search-icon[data-v-57eabdee]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-57eabdee]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-57eabdee] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-57eabdee]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-57eabdee]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:86px}}.content[data-v-57eabdee]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-57eabdee],.list-view.is-drag-selecting[data-v-57eabdee]{cursor:crosshair}.content.is-drag-selecting[data-v-57eabdee] .img-card:hover,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-57eabdee] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-57eabdee] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-57eabdee] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-57eabdee]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-57eabdee]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-57eabdee]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-57eabdee]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-57eabdee]{padding:80px 20px}@media (max-width:768px){.content[data-v-57eabdee]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-57eabdee]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-57eabdee]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-57eabdee]{display:flex;align-items:center}.list-col-checkbox[data-v-57eabdee]{justify-content:center;min-width:40px}@media (max-width:768px){.list-header[data-v-57eabdee]{display:none}}.pagination-container[data-v-57eabdee]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-57eabdee]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-57eabdee] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-57eabdee] .el-pager li{background:hsla(0,0%,100%,.72);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .el-pager li{background:rgba(22,22,24,.75);border:1px solid #34343a}.pagination-container[data-v-57eabdee] .el-pager li:hover{color:#38bdf8;background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .pagination-container[data-v-57eabdee] .el-pager li:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.pagination-container[data-v-57eabdee] .el-pager li.is-active{background:#0ea5e9!important;color:#fff!important;border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-57eabdee] .el-pager li.is-active:hover{box-shadow:none!important}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{background:hsla(0,0%,100%,.72)!important;border-radius:10px!important;min-width:36px;height:36px;border:1px solid #d9dce2!important;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .btn-next,html.dark .pagination-container[data-v-57eabdee] .btn-prev{background:rgba(22,22,24,.75)!important;border:1px solid #34343a!important}.pagination-container[data-v-57eabdee] .btn-next:hover,.pagination-container[data-v-57eabdee] .btn-prev:hover{color:#38bdf8;background:hsla(0,0%,100%,.85)!important;border-color:#bfc4cc!important}html.dark .pagination-container[data-v-57eabdee] .btn-next:hover,html.dark .pagination-container[data-v-57eabdee] .btn-prev:hover{background:rgba(22,22,24,.88)!important;border-color:#4a4a52!important}.pagination-right[data-v-57eabdee]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-57eabdee]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-57eabdee]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-57eabdee]{width:50px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:hsla(0,0%,100%,.72);box-shadow:none;border:1px solid #d9dce2;border-radius:8px;padding:0 8px;height:28px}html.dark .page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:rgba(22,22,24,.75);border:1px solid #34343a}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-57eabdee]{background:#0ea5e9;border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:none;transition:all .3s ease}.page-jump .jump-btn[data-v-57eabdee]:hover{box-shadow:none}@media (max-width:768px){.pagination-container[data-v-57eabdee]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-57eabdee]{order:0;gap:6px;flex-wrap:wrap;justify-content:center}.pagination-container[data-v-57eabdee] .el-pager li{min-width:30px;height:30px;line-height:30px;margin:0 2px;border-radius:8px;font-size:12px}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{position:static!important;top:auto!important;left:auto!important;right:auto!important;display:none!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px;scale:1!important}.pagination-right[data-v-57eabdee]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-57eabdee],.page-total[data-v-57eabdee]{font-size:12px}.page-jump .jump-input[data-v-57eabdee]{width:40px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{height:26px;line-height:26px;font-size:12px}.page-jump .jump-btn[data-v-57eabdee]{height:26px;padding:0 10px;border-radius:7px;font-size:11px}.refresh-btn[data-v-57eabdee]{width:30px!important;min-width:30px!important;padding:0!important}.load-more[data-v-57eabdee],.refresh-btn[data-v-57eabdee]{--el-button-size:30px;height:30px!important;border-radius:8px!important;font-size:12px!important}.load-more[data-v-57eabdee]{min-height:30px!important;padding:0 10px!important}}.refresh-btn[data-v-57eabdee]{cursor:pointer;background:hsla(0,0%,100%,.72);box-shadow:none;color:#38bdf8;border:1px solid #d9dce2;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .refresh-btn[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.refresh-btn[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc;color:#0ea5e9}html.dark .refresh-btn[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.load-more[data-v-57eabdee]{cursor:pointer;background:#0ea5e9;box-shadow:none;color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-57eabdee]:hover{box-shadow:none}[data-v-57eabdee] .btn-prev{left:8px}[data-v-57eabdee] .btn-next,[data-v-57eabdee] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-57eabdee] .btn-next{right:8px}@media (min-width:768px){[data-v-57eabdee] .el-pagination.is-background .btn-next,[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:rgba(22,22,24,.75);border:1px solid #34343a}[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}}.question-icon[data-v-57eabdee]{margin:0 3px}.breadcrumb[data-v-57eabdee]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb[data-v-57eabdee]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb[data-v-57eabdee]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .breadcrumb[data-v-57eabdee]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-home-icon[data-v-57eabdee]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-57eabdee]:hover{color:#38bdf8}[data-v-57eabdee] .el-breadcrumb__item{cursor:pointer}[data-v-57eabdee] .el-breadcrumb,[data-v-57eabdee] .el-breadcrumb__inner,[data-v-57eabdee] .el-breadcrumb__item,[data-v-57eabdee] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-57eabdee] .el-breadcrumb__inner{cursor:pointer}[data-v-57eabdee] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-57eabdee]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:hsla(0,0%,100%,.72);border-radius:8px;border:1px solid #d9dce2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .mobile-directory-trigger[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-directory-trigger[data-v-57eabdee]:active{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}.mobile-directory-icon[data-v-57eabdee]{flex:0 0 auto;font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-57eabdee]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-57eabdee]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-57eabdee]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-57eabdee]{display:flex}.desktop-only[data-v-57eabdee]{display:none!important}.breadcrumb-container[data-v-57eabdee]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-57eabdee]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px} \ No newline at end of file diff --git a/frontend-dist/css/903.7a90c42f.css.gz b/frontend-dist/css/903.7a90c42f.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..883913e5392ea69447d987c7c1c4589170a96a91 GIT binary patch literal 15313 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/css/957.db5680df.css.gz b/frontend-dist/css/957.db5680df.css.gz deleted file mode 100644 index 346301cd4715871e1d968bb3a4e1acd757c77fe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15291 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 diff --git a/frontend-dist/css/app.c8e85cb3.css b/frontend-dist/css/app.ffc502cb.css similarity index 100% rename from frontend-dist/css/app.c8e85cb3.css rename to frontend-dist/css/app.ffc502cb.css diff --git a/frontend-dist/css/app.c8e85cb3.css.gz b/frontend-dist/css/app.ffc502cb.css.gz similarity index 100% rename from frontend-dist/css/app.c8e85cb3.css.gz rename to frontend-dist/css/app.ffc502cb.css.gz diff --git a/frontend-dist/img/background.de27f549.jpg b/frontend-dist/img/background.de27f549.jpg new file mode 100644 index 0000000000000000000000000000000000000000..995118637236eab49aa77737e2dab17cd1a0e9bd GIT binary patch literal 346393 zcma&NWmFu&*0wz`gImzx?(VJ$PH^|&?(P8sAq01K*Whl!-6gndaEFAvP0l&b`hI@B zhMA(Px_TE2xaz+5?!QZaH$iV?C1oT*P*6~yf5+by(0dRpv(L)i#I&hGRMGY}>=w`Tf+L#2npIcV$h?=lD(3|xT@MhA(2ez)l33gCls zyr<9_z*v|^;c)ALVw`w(XH`t5mz8Fgrl80}+05c*-ZQiYIZg+wwB1(gvI1!*Qs+(N z*y93Ly4wl*$E+mv$a}S)$Jb5m7=AS%p?8D zptkVbyZCmm>lgNHq&Q>&u9hOTYc<}YtDr`6db>8yIs0XSJ_&+}3 z2O~6O&^Nz3eq0{m0Z08QiJ*!4tt1T_Y`pwq|CZ9n^imLpoj-`jj%cLXeXxqY%-|X1R!{e(8@G4ERdFH8Lg;VM+eo=TMwNQmETBtI||| z$h_JxA~Lwzvo-0sFhLk5g-E0YyZZTK$gbLaw2Agi-$vg&bztR6Pn-lyyi4P@0ms!} z&_bOc{<;;_jQv}+NE3s^V+6_vz8t^UL0Ub2_Ly~or&EXJI6uEgoB5VHFN?2YHf~4+ zn`baiEn$#|k3sHfGB--R%{9VYeSx~v+^T^D!Ew{g6Ht@%R({`*?B4CDsDCS=P*0jQ zSy}7NjKYkmY?|oOL+lLeDQDDtYrZ`{kz_h5KnA}g!rF5+g6g83J+yKtAYfm0JZc}` zoayQjNkzw00?)iJag`aJh*A6O=vQ7*cX?9Pk?~l?qZjAHr0^FcYkbz29QT2Tg^C1VBthEtKf6MRZ7u#bdq0q7K?GT!v(Cg1`T*pxE}EZl>(^PrLlapb5)- z?ZCt^FOI&Xcotz>GxfSjywb7fl9f1gCuiy?Rm$*A!kH)}>0;89!DL=u2LtPrOB2Bw zn^>tzosO5U?6}oCH4cbZcqH`kD|K%QcSH)??#hMK)sOhA)wB)&g3y|4vX!QFG@_`@ zG+M%$25lTf+XF}GaLXqLcNEOrtxS-3vqmg}?$mtvOf)1D==LRuc49~vh&nSawO_C` z9SZsjf2*m;b0({@U67-EGoy$bZjqxvKZ+}=tYasy*6Dg6NL|op_xT31<$#{Af7}N$ z`{K0p+)QjemXvp2e9n1_*k_$75BerQ|9jcK+zofb_E2`mW-o>f!o7~>y*RwK?=P@d z8Cxe@RzntrhPXfB(#rRy{Kw-TnW67P{W<9oTD6hl`geBB~k2>(aXYbuBQ?$STo^(Z0ksF6n6%-jzwkR-HC7 z5ck7~ZDy^0HervI?vK*HJbSn(L-~DBa7GNWLoKVK3LPKgY(5JkJ25y5rcy$!bfOg+ zJf&}QZOQqcTTu-4m_9g+U7_@Sf`XXrpQcUJ8Ms!J9sMys8c26-^uV;&tV=j$lo_RE z`qUkp*#cWsRT(6kEP_c`vn)miy<^J9{z+sz3)kdvK=-bkw)%_m5ff%<8s%IN*A1zn zg>Bm}17qJf>0|DG_PdGs$w~w7M!l~riQ{9ma;1?SBPNtj_qW(dY0i}=lGJsHeb(vH zh>&p2z{ph$;d;r;4Q1VBQa>#jTWk-c=0(Sy=0p&TaD%DrVNP9Z<7_N4uUur4k|G{V zswp1iDMre6wkUBi*<)c>uc6F9`@rS_Z1=--hfFbX&c_r#mSABKfvNLjj3R*xa#f!_ zIH>cu_e7)LqOMholH*4?`AE7BoygYr-P+hcVZSU{4Xt@<^!g!v1cD=({;j?Iy1%gk#=6!mM9 z`~K_rEnR&S{LNjdRDtK-#XUEr@?H!f=AkV6iCk{qD7&S@H&Hi1GEzHB3kP}&B5;%Ej1HX7 zNwr-;a&jpzp5`i1A|@IGi~}t?VG&9a(1C-6SUJjwFc4)~xaGhj(S9)28yM)oa9CO_ zG##KJnxjOEg$Qej_wN%c@AZtbEDU5CU4j-1{Ms7=9iA~IX^HhNQ1p2U7)vL{DegTb z4fKG+;d9b}iS#%`bCtzui4LiQXt6MXYd|?BScsq;i!@kE5*-*YFt-Hc^^V9>Fpwz; zkPK>F_2U6qn0d;i7ug>XQC~7_Z>R;)jYof=LI! zEN~_y^Vi^w@bTs{D>q0GXVi!`wyD@9h<;aubgO26JISGbW?_NM#?7CZ+{?BR(~cIE zTJvKw@eW+JbyI=0yr3ParIKXHN_?kO723*7(5QS{_}ztY4t%pVj`W$)k0BxMkWJnv z_1Kb3L)o--izKS6HKHM(n~ff$ZYOCKJKGApE?OzP})J!W;*> zh){!-nyB71w>SyT=FE`skl^;ii_j!6Swuxm_BFcU$kK}jUcZ)fGg@iKoUvW93iDzb z9mPd&r|9p-ckV5E;I@&ueTG5Jb}Qt!Pg?vQC@5oW*(2sOq<=y0y|K9_425Nfe`~C4 z**fUZVdsk`Gq8t6=+>^JJbF%TX11pSrnXe*nyr|jA(aVm;X%U~Q z3P!NI{wXMR@GxRnk@bK#{o2&*Mq&RGYEQ~;tzZ97%EH|GUyu&8LP@>Xc|H}1K@GG_ zAtEcx*vCLRC1HOOqH7tBS^ACV!T_QCjU$)$rMgn1o|FZ-VgoyvpOz|ZMc&#yNab07 zW%{#Mxyk_U-_jS&T|cIN-(qShdzE>eO^4li&Jk_rM8u=9e6&tg!w%iAkF$gQR0uy z?8VCX3lhdpoVQ+dwEEs}f&Jqr*K%dMCfjKe!)ITVDn+onPw*ZWUv{#b%|fAth;+bj z5j$HZ;-6!&Ki9b*cG;OX)!LX>|AIK}HfDznja;V^x=8R z#z008gQ`E_otNDnrZ^$=bZca8jAIK?Enh$EucwOEXhj8EyQsoB_bUfhy%7qHCc*C! zD3u*(M`zY<%)^53{(_M4RXeK-1KzYW^82l_H#GFuhnNazJL8({OP+@QveEz0AOEBA zx#-kQpPz~UZtn$lr7!NsxPB@{vq=zJ{N`7YrtbxH9;YHiHaDT)%x0hR2ay*C0uTyY zkM_0JEIy-g)_ngVx0U6atEcgFW>I+XW76R06sfc_&vUx)>sw#>ZLC-i+3vzQZDkWuW(a=EV8pMCXyUdHXYw%`o>Jg3U$+HQ^)LHh%raI z^|L7Zr+4-@wiXmz6Z0y^#FQ#b%_&lZB|Xyi?^&F-QH49o#LFzYX3r?&W_;zHtnkpl zPSm(tnS{P4cOnheYK!lSHX^A9n3!j@xlp)Zmk!82+>LlGskTVa;GPLF2zlvioOomR zAA2V8RNK)BK@nFMd)6Olvth?<3AU z&TRER59~?@Z!r(4XCKD>E{rZV(PUYkXqf(-HvEB&dnkc*UDAM?q%h&h&u2l`ySAB! zdsm*GCzMBe8hVfIsa?>X;XJ&Vn?R0jg=tqQBw9H_5o#c?wPKjHg?;$DmhpUb03>pFjR#s5sVOAt|0< zW-4yTtgOoO@!H|_EL4d?n?s04yv-`2Ua!X#F3d zfrdCR;=jCx0XIMnH~}yMS7Bz+hP{5O&W67Zl862TkS-hs2Y_)14i;t_3`PPlp|WbU z4nRympkkpZ0zj021d8SrbBZeoIf*_g3ApDd2`8XhLV$Uo0EBWPE6GEYM63~BCq@?o zFbbM_jSUiz1E4wJL^LN_2jDsC9J+*pWytGQ$WKaaqPOGF;Xn|;T1uX#0uUkm z4%QoMI8MZW<6oDCRtO!K_TPn(0}D!nvxWhu{ks)#hs_<{okq)&JS;@ym|n&iNT5g8 z)$_~z$K!%H%sjo-71E}*dhyU_i{w5j0{3T;mR~kRYc*|pV?jSnn9z-NcZnJ^u5bxo z`ZQ9FW0Ry-(N#aOwhV6E=UmZ#MOF`{BMpv`a+E5`YvK~pxz=u$OTVJDj5Ssl#dc@; zenYcROgO|-Maqp+cyl=3-&y=dj5FOp91l_jNBjHZlX0g0g@!_AZA}OJ@_Gz~bAEpq z$=9&!xH72q>@kJ_@w9K9Neg*VKIOb-Ei4OCC+Hy=B1O5gGaXvmwNxPJ(`gbTf*o{8^2q*5K&yC*tktV*qJmD6fUR|%D< z>&jxaPZy+PXc!fLG!Q$3BC+m2oBQ>z_v z<9r&P=;~eBpg=b1yEAB`Naf`>WTC3%?lh(=BS;3xZ925ca}>}OYK>5b>wcnebLuQ?I+3P)aJ z#rh2V#O6O(|C8@i*ib33&0Niudr9)o zkT69np)GQTy~)+{V);S)Z!h5^ui+}=A6It^Zrm!kSt^*2PnGfAwwDpla~Ut17{bl1 zb`7Bst;|h?a&+W!-{3z5jGIAfkmA@;eOus~E8Hyhc8*%-=Irdw;x=TCQ>i<@HwoAk z#XLkpw6^5Ce|MKZd6=3+%o(>XI++n886csV48OweS%kDp4jU77%vyUj}*;6(C3?fOJPBr$d{IOWYRgiGgr`%kgogfn<{o& zZQLki6N;RLl>htBYz6qz^es2d@?%XQ=4ZDCj+LOWTv6S`mFqfiLbA~B=6)IXT{(?K zjcH863Ki4lNb05prxy5;n4Q0%?n-rUp7=&-0{u5ICehre+?T@x0%^g79v4G}R4b5~ z482m-xZpaXE?$TS;m%CXwa{MWY(u(qoeVlP_d!4Wszaz)=*3Diz0+L*S3_}Fu6a1Q z84rZsvrr5ZW-!eRN-qX<9o`s?xi*meZvGl&)Js9F95Xw?n@2by#&(Q`G14lXPRY~O z7_TX&m~jASOFQto`V~E)5aUVLpioN3u zD%YOAsj(m$zZsPK`sw2OJG^NOwpmQ%h=)4`Z>2$jTcZ696z$|hyeTB|DzviVr3ZTYcnm^dui7VDQl8`PVBa*vtL}zu_=@I zl)(wHtXTQ(*I=EKy+#x7x%S^Yhdw`j5p1bu%`%d-D@+|wv|M&IRxydX3mzQ`F1~lp zM@wnzG?r7Qb!M`J zB#H@F^y3}hgEo2{(@LbsyTY>I8*7N1UU{8RRp`yZ*#&HJf}bJ z4iCnUA&?S2rg&@zzt=wM%svha>Fh9#&&*DA*J3v0g)$RMplKusUldvr)}1E_N{dVw z`@?zenuD>RsjH$SbrdDG8&KqEQ*fr?KvF!;d}?o7MLcu&wy`;EYb#Nfmtsv9w!tLx zqE92|I-G1A5YPX36%GSF7tJw!Rs!TO;(rPD-v*#r0SY4GzrG>lkxml2p; zF9aTmVPQ&0fE(WAq``p0L3aS40iPH+DVldoOR0=H2ar!m5ddR6a2+imn58NqQ}Ph+ zDFG!~!YMc`g2eU7&huq}vCR;&c@%$Jvdegt42h!w69;&%ueC|U@#pkKEI*P`cQyHoPe zfq>!$=q&+05j~@&;lvb$4dQs+2)v#his$_JnG%k`RPUl!C=z=!HcoUiYeTUE{Rmm$ zOBgP-7iq-Kk=X9(WHRr~IEYO(k(Z(di};1ymzSLnW2X-$I-RIa6)svQj}{991rly~ zRBy-45NPIP!F@^DX3tn~fQSl@wiKW7$;O|{X~nV?Ha!Qayw5OX{%kL4QL!l|8e1tk zRVw$k!Z&keY&&4BOCn_Nv;cj{`nerDGwx3Mie${WqT6ZGdOUqkFInr*sVLvg%~Tj; zTr`H_6FFrR#J1(Jt9+qY$WMdOneR#CCoGEc%#DbS-i`k6Yepm=Ge44GFKdMvQ9dcj z1JuZ&mwEn;LGsaPA_KVjfyI2-%Jx;K#ZIG&HxIRBGRzQr)7ae==C-8EH_*;-BS3C3I6e&*gQXSSFbTx zMMIe>$+>Lw=MGIwg#emAy&HqUPD0D~&e|wGW^&7&lc1-7G}8`bWDM{~Kfr$KN_KS!lAIl-DJd2_eUTvg3zAzs zCQ_<3Y?&%((qBk+Vt?@r+mqd;{>i=YaO@(|wrp|gMH{(}BKgGLbZ09&l+Qpq_?WT- z)urQpS258gTYN0QBv)F{5qO4es)%|uYmu-Di)*jjxOxS(GpF{joAqISAhUF3S!?A; zXNgV54%YUT8xE2M@nEach8N1@LDp!!_GPL_zV~?2^T2e&PG}spR7=h6`=ONqUDe!e z2D*|G-mdedx)`)6Il`|{*4JM9k>_!7dbLH+ujloy5ixBd9j~w^l%U*ZK9VdA+LsSH zGM{FA*B;)X*hDu`_j(d*$3~Jo9+$Zz{l#ddsnXO~!ZWN{6ZP&4r9E|R3q7iP7aXji z9IezCU1E=KQ{J_OAKvxNj$YOTSt{AlnY%p3OJgVNmNKT_*E?J3FaX{M(*0MNJ)AQZ9*#5CRiGITi ziI4r&d*`wb7(uu(0+9u*6kXV+J#|I8)baU6DHZoP?k_fYYfbI+3hw7St`*bWZ8~D_ z6Ud37OhdCb6|l$M!UJ6P-)tLVp$XN>y1-TaLgLOTKftKY{*J?Rfd`%$I@PNfU; zw~P3r`%9u92&%5^^gAvqW5FhmUdxX1dY!{oIK?*9bv%l_CeBfDwJYln%uELm)4Sn! zepwmUw$o17nT2gshhKS`mlomSDZNX9o%~&CKKZbdpv1ltW%~E3FEGioT-e8=o&-Fw zxE5k<*;Ral3&Dm)pJRH#L}A@K2hU~ye3WppF(Vq(tajYCMtum0sH z++gcchrd)3&C97~92o5l1(?|M0IvZ4h+&BXrf;~Cz$^U#aQ@>I(1nnPg)R{SQliD} zf0LI0oDchFWFt?1n36yj1P1F%yx9g+Z-P`A8YkdCD~XA$2U)&))@TjTL2P22sM~=z zIZ8s7Sm5PA(bu-|t4!Yd2(S`x!(XqW#mzAe5|Vgj@2fKn199}f!30PNL;wZ6 z6TX`6>z^!NWi!xE;ti-<5a4^i_QPNS-2V?&p+7kRHh2T{>p(#JMmPL#6@W`GMpQ!6 z0GSe^B?eaU|1klG6W?28yx}FjL673dxQ_6i0=5RcIZE1xt(EKP9D;0>eN+U4ffG|l zQC@_*9=K(-oyoJyU5ajUqLD6<_H$r|OG+uhbhi3@-)c@z`d(qTn{f-5S)aFQ4Fx?1 z?KOsB?DSG@5Sy=9xg$xEyM7GBd5hz%X)hbv?FsPfT#>%K+kBGm+8g)&c-~NFxJ21I zBMAt6VXN#8oHO$cps#sR@;lreb%O~OwU7w|(z6-8;qYqWw;;0u+B$vsOc4|+CuQBKs>Fei=gfwXduWN4B;9P~S}u83Vfu9oqxGR;!DZ zhn>Btwxq(30{d=3d+;801OEbp4${}kLYdRme#Q^P+=NDfLtF(O8irwxt6UX4n>|=@ zCQ91z+vLj|oU!O%jZHS7Yxu6_j;!X^Sluew&RpGm#)G#jsNUhq;hr}P@MJsnf|YHp z{qff}eomJBJeH&R(JnsR$$l+G&9?HpAL2pL)W}fn@{DRO_5R{os#IqXByd2pwd+iX zt-hK&0s9w}UpiFfQb9nZ=wUN|*W4PWvs$B`G^5(cdhDKR5-Wfq06x*%)g-Yqn!^`7 z|BblqlhUph==!`jaT~ys5H$K3Oc}&bAIr8-V7u_cXDMlY>#DZ9ib~u!^y>RrWiMUD z2I69CQ|Q^`CNY<#YD&JNY&q%!MQqOwQ6xsCEmvs2CA>%D}?;!2_2FTA{ z4Bnp7xo2HHL-m`eWTN(`1Tx0YjM!DmgP&`&L|yf2bVcVQ zN!2H9kCm6#W~1w;iE2|#mh|*nUvg+jX*)Q?WTP7Bdi6da37E^DjAA&lO?aN3YL!J~ z=0RX&CJrZ^0*{5P5yAr?GMLq0QHJ|!VmKl$dOC24U%o6<;+i#D?n`~uPbn3{6n+DX zyPjSPrf~`vt1EPU`BpGWxv)^vzNq}*;T%yb*Zeyg{iYdmG8&iT zI3iV?^E8crrS}cDQFa|;)!4GoxS~kUOYQqr#+|@-2{zr>F+qtW$&0Ey(M80_7U(Xh zue+?ULH3M=E%nVI7$ngs+d8T0A?@jWrhdh2@fqdCCSrLPhBnHP8oZ`;3#Z!Xr`7rk zI9dY&1MbpsbdQ(!<p-y3p{^h+CBv|n5m;5wz?G+GA+xnS6sf> zvU~|%y^eYm)F{@9EEkZc9^rhTU7q08?O!3FeppsykRh;Jt=QZFhu)Px>hK$)EOTM3 zjN1@~w+X8Ak-Gb4dEHg0;*-FaQnKr<^vx`@#r+I}O5k=Lk{Ss}OXEO5A8M^zw|_fP z;Mi#(M(_7*<};0d_ea;m(uh5lF6~_w%?M%5Hmf8bTm-RIaB0wn>fEWSO8qB^E=P59 z7`D*AZ_!M7$fF1n!^NptVjw4^su!huma0EUwEE)D#Og=PpC|O<0r(L@nIM{IL&u!wz zJ)+ETPPYuJewRw7YBK8LrU$qm6L&>KDhn`sV|F}RBMZQaLU%yRirZ;y@RESj86U1iFT@!xl|qH_GPoEya1>5s5Gk5 zE=dITLAMY5D0(%aT9d9{U6z!^%k)Iq$! zME~d*xDJf`57*4Yl~`%X|6K^Y7a|6V{smoz1JV6AA^UGR0N?=WD+~k(24pLsFF9Wq z`Fb<(A4@Rlu2b}R8k)l1Wg8?~@8iouPGH1i8;LbazImLJwSi{0F#0A9}JM;p$Eq^UtHK4{s^qYdvk~r8)MTV$f=aPo=A#i$$=i>PNL){fmR- zhE8!k`7@A(*?FHmopDB1dxL+pJmdEtjJzmRE6+S>mb>!IxmM`ui?$8qTeYMFKAATO zd#+5qWSeMrXzN@&t{3O5>9B^oMX8bwnf7LoIIWsDF+WMTCfA6Q>`>a2{s_y*F#Rln ztE6_nawJ~nwak;4Mg{++Hfp2My7ux&>=3`+<1gq715fvA-3POJOiE200S|rzKFl8h zax4O0N-8}lW2-dZ-r;yO-s2<{$i|wTR-;i%84$k}n*UPh^rBvE!I!KMK5_20*KT1d zHu;6BEsFc>#nAZH`nxrMz*p;PHfp3#?)-bEdKU4~_t5L=tgYD;bXGujNmgLa)B3JhS&=)`}lAzeYBiXD+4>^`UPKxFR^ za>lwGU>BliV5*-QrXP@f&}=~$v?anlT@S}~N*VxM5kVDCayLBrz7nBtG`Y9A+B-N` zItuA&NG0mjQs&ScczTa=j$;vg@1IqswToB3Wt!Xggc<2e4y)|=+SJSAysv+YbLG_- zyXr$2taD(I66<1AD1$J+4x`V+TzIK|bC^UGVwiwN5JwepV9gUysnB}4Up+gK?aoEs z1sP_mji}RG<`y#(NhOT!N~PpoYxp7@sk#xTZ`w3xTU~%=$0!Y|$n9}e zT|={dnoBVELRzcP<*;#P&xxT5SDsiPJcGDD&7ic5eGs=5Y(a*H?73gD`naEpMfNpT z*>9!ht%D0%AnXSOc#3e*hO&@2DGJFZ-CUn!w-_G!ioYOcgag|z(S>kr3^sJk;JMQr9Nc&T+Cpwn5VEZ0l-$ttM(wY0ii*dh;hKyFf*FMO!*lo=CwNv6)f0UhrfD zO`N5HxNg`;KGp#R-Y{JF$O)>}1k*I}z7#oCB)p+W&fU}ILe9cGW0kkPC6{B3mQX|% zZE77STc^V5=%^$b@v#sczmNcA@n)jnyPX(GciXpX18ld1#}4Bd5<%Z508x5Lg($1^ z_iyB>nm+rQa8mTaS(3s=XAWkqH?&|>+BNtfjiTeSu2|oVRLszkBjo$zm_3uE`q8`U z}u!+%D*71Zw#r-YK0SNT_on0SAkz5Cn@u=pK9fay$)y`|3s?4=d>bU)0eDds_>Uf!gbCrVKq!4ITfp| zWq!vfgU@Hu?1<1!R`bX3P(m!*?FXL<_(zsSjLB^j6vazD{0tqg;e)P)DeJkTzu_L- z?2#HSUj(!q{KVdkDMbt1(z6=jf%1)o{HzJh1Aa~lps*-}gGaFTFO_#!69Zb{r?LbAyC;W(gP@p%qn}Q<7as+YvwH66- zpA#%Wiwl(JNC1XpZU{7>yb#GG{`MFu1p|7j*bO#xX=ht<XP;nLM2Q z^t+i^gRgF19>7jG&$_8H%1OV(PD4rP?u$Km>rP9zCiOv0s-Ff#sT>LK9oTmN9J?H| z_j#7#<=mhsA0dVk^w4Fg5fb{*vT)94%Maulxw+UQ;!z~chc|&CM8$Wcb0;|LQO#XR zYVpcV!77$1^)9lVguOyNo{gb!i=@wUag&k_Tz{N5N~(7{(l$2n$lf%CeC5G{gQ;s0 zp6A=|(=5!%5?ZLOs4ZcCrttielk z^vw`<zc84_B{v@6o(n;#n3#daiXl0Y)sSiJBfPJ3{K;fs4Wf@{_c z0T$K^hr*~n(TKlFSyLix_Lm7@g&ubQf~+mF>GXtK3UpSEQCrOh`$Z4<_8NK0&PcdL z(y=?u{;*#c->j|Yy$~{&Em2|+%yvpb4K6e|%NGgh-DGvxA_uK(8{zdW{GxgvU6v(0 zkTHJK71gHL`%vX7&wqK&6q&i3k~JeE#ZHc%GD7UQq2t>`8L5aqEr3(g*0!pyt+MxB z#%?qwOL;PZL}7j)k~@pro#(x4cR)%6@;CBmYDFvTChsd0BLzJl>WgI9D|y@y{RL(na1`l#U7;a)Yt5`!~6v>&7B%LWz1;-4;zb zPwLYa7QBI5sZEI!lp&t$k)w1(>Eq+(kpcp^wr)s~lAL003@A;~((V$rvExq6vppCWiZqA$`*3#|WY>ow>7~4%FPDemjP7{H0|p zoNb=Kn6Me4b&}EHmH1U}!Ud+XKE>W+C4*zs3w?thmBsy>n~V$n?gcS>jj>IE!IM?i z_MUPk3(3Us*7x_zLBlq0;<%Eu$mrt~uM$&Y8)FU zUT+4+V%#&eWxI(IhogC1S2=8yJrL1@$vdhQ{@MuyMioUCL=ewn8-S zV7z0!DNi-#yv*C!e95sD_fEFVdAgHt7xiRZny2+kNq)0?+N5OCO}#(XUF-;M(bld@ zGfX1X4jv@DFZoEQ(5F3SI`Sp406W45NXOu;<19L2ojIJ+rBJneU z24yeVB^E}2f=kbnrht27CQlh7MZ%=uS0ll(4>cq1I;+^Ypcn)h?(4R{ppil%_(i*l z(`7%Y-l!!=NZ%k0CSjHIRW0VzUr>i&xW1yq3xUvn;cSFmQO5^;Ew(XsI}-L>0rk6k zFhK}QJaN6g3XwNW(ADCmLnYsZS`779r_{<7fuC^4M2ib4H3!Oz4xH22`9GS%uRdeS z&@)zKTyaNpWL)G}L|0PI>NY03^T)&;D8{?bZb`~qv%Zw95NP{$hhmYtrk{jWWi9Mc zgx{jK^Qt99ZKIBKH^Mo^b+J#IpO7@I3DMZMR@T}Kn)g3NCgu1;Wk1=oI)iu z!lhfjI259n<1@N^-IP9qjDCe>Cq(-Yz&hz9rtHooQ~g2Z=x`c#yfN3tv8FYCNggX@ z&#%`-Lp*KQd-h^dY`(vJx}Q3+RR0TywbKuOfwh2(*$xZGSDFcOlK2lW0htIS4aEVS7`PlBj*v$VVD&$* zZ~%y?H=^OM$x1NbdiK9^(fAWB4X^=#05wEU|FF#o2GWq6Z{%Ndolc^hn9BfNUu%N@ zrxgD+?sB3msRP9zfO^H_M74x{wP^u~3ZzVNU$+p%?NhH>6tIHfUyGA~K!Fgj(3M00 zcQ?m-KL~9-@Dre8g>U{hDJgJk7qR0Y;W^AfAkPad`+q$^19E_c(`rx*{5h`J6zCm& z_c!>d*7OCB??+;9*}+OvgH3u`P18I+Rbgk|_03<2hfeg31*#X0YS* z!G;}woFbF-Tt~y~!e&EVJI(>5mv$_cr;KF3=Z|`-N`r=gVz~6O`GfgK$`rEIGDRA5 zukNRX!atEMzbLYmaCBUH$jh;UHf3te4@Q3a+R-d+XN*oQA(Xogl$4g~pbJ{Bd~EK) z`}nT;40U1GXV$~CFo~Pw{d_fN%Gu}#gT1k!>BTo=2#?zgyF)@#foF7Hv5wgqTCQz2 zR{C2DjQU&bQv1|%5w`9V>}c5O`+2P^+U<=kx|{vgq-H)gG18uE@bpW+mIlp>w{2+t z>@Fam3dTRIQ*OMO{vas*`@`9mu7K1OzJkjPH`QX%LPJ=Un+&CRnq^;2p9^BHQ!}H* z&5od^;n8EpEtlEV^Fl-JksZ%PCC0+~#0YP@l(aEOdI(CL>6-c1eU*^MeB<(wAsk5iy$EK(Dp%WOi@&KYVdRJ>*G#XW z==9U1Ka{?9Va z-PeJSNi(Rho4zXo;B48XUxdv0WyfjEWz6=g;|1$+H4NB^G5&cun~#1S&EjtR+P}?T3oh{qQ5d8W*|qvtRk!M|JOZ1Y^?;UNsDffmR zTU=U17Y74ZS|7iyd3A+&yQeGiiSr4cn{_Jh@|m@z5K} zbO`qGo)Xu|tV{rk(ml|FCIV3GKYT1GiTjR5KH#X&ebw)xdoZZ2>U66wCtp89-QGNt z6KHEH9YKdkJqu=5@mxX`BhG6vsPeM!w3!1Q`KZ!AKrpjnUzMU~Q>u)jTy2lAu)3k> zpfr*&d8mTyo^S_X5`LzOTd{Q@p7Bz?k|q%DUg*M~+&y(|8|To`c5u~AXb+}-k5P&O zM{GCbg(&6!EHC+Uyct&XsNFem0_oH!16rW;CZ`}9c;KVCaieEj0=>_1XcyjORSuq# zFvr;CdlcGw1Al*i;tBA8Qf=t+x)*_TYb0Z_Tqyg1I@HD3;Edu7Nfd9z2A#S$%Li*6 zoaUw^opdo1x3NZ!&@3LwvwVnG%~d0Z?z&^_RNLTAy=n}sm{bf#X^?LLOA3kJ9~*QV zm9sr2N|`eRsY|#obUmWap=;w$E|dOf))WKZXE*wV<_rFUepGKQmy>n}7EHnqiH(`= zG~aF)VGD7U8!FmR6)TZ1um2owl+LHI2<_YYWG||ETj@qKO*}Jo^fcVk2CIu6Ye$N^ zOcF{hF>KcJsFPOi$Nj=fu61gBQCX2up!uc>N{VLRK=vmpHfF}# z(D>6mbT6JJ@uu>ALSpYGOgjsUENKfd80AOi53!>a(o4NGORfTp_0C+Bb}7}_xnWpQ zMx_e_w!ffTCwbY0sdUNajx@TwFd4E9s`hlp$&53E;F_+za`?LV+?%zxrHoHqADD_) zY02+kh^abO?F-BTDdApnPc*Netg^U+mE!&shQQQi-Z{h1@z)TWOs3O%O`2#uSr}9n zv^NA6d&O-I{GeN<&#R$u_L33g{|l;AUs#NAxYHN^6-OU)*OB7RhxcOGAv$nt`se|T zI^C3Y;JB0B0L!^SlH|Z@_SkH{)^`7l4un!2Q6lVaz z4*1N<%13~v7M~-&QF*1e&-ANNE&D&kj=cSE4?rDeF%v{f9UcyPb(v|7L~rsaIF*zD zk^br#)4uXO9Of+|Iq+;xNsf{CE}{7;a-W>NvIo(A6!@^~#`dUXZ> zMg6bf2-rzbzurdzeEProBfv`lr1l$2JkHmY>uYWm*ancuLh%CF|F{28Rz4A<4vU!n zPpB$kC9fn8LIIuyN`rr`lZqAnw{-x%0gM2bWnlNQ5IE=!tP7Cl|Fs4XUZV$IbY^x# zvQ4cSBxiKt4Rs4{IE^nvjPKQ()P;#Uy4gKNQ9p=#%@RHE7KWA=Sboc_Ng2#bq9Iui z+@f2ll@Mq3m#7T4;%-cSbJ7^c+p4E!jZ=$q@gXY`?`jn9&-)-D6ouB7SXGNM zOe^A84`+({y6kPHDx+-p z_MKx*#(lDd;Jwb^Es+aO;@9+|sF0N?}2fDbZ5kC%-@vp7mC_3Jt>Dk5}~3r7yTAJgp0vZn=8#F5DSGx_qVt zLtkr)1heGq2YQ}WI|G_@4`wY?=9xHC#*%03o0|rIkRt!;K42i0ggV$0S#G&z(d@DQ zaiTb9TVbppBuCJoy&3e5atTk2oYl+V_b2OH_U#fkB8*-Y&oc)Ti{?h98u*k71*l;S zI4X{_2CoxLf`vaKg(o#M^6x6nt?LY}o>T?Ef)zPK-}waIXCOai_|czdj|!%IUUY36 z2pxDN_>f5Y;MUkN%8_^3EX__e!MeI%Q@?=J#&AismYF_Yyh@M2#6s>ka`}s3Ms4>E z?x&o4!VBv^UN~=#7Cc(j_>01`d%eSv0^oESKP9=Za)0|2nHa}SF~-&}a58yO203o7 z_mdS8QEqI|f`^RT`+lRj<}?vt_cv1UlJRXt5=frI_c98#f!Fig9V%Ox0kNeN=;hPh zZH70c-{oZa*6Gu)l z%akfIS>zmOkGnGY3vxewAzq$y5o(9|Rt8>|ZsOU?78|fp89or4t66?QPra>*wmM_+ z)g{p6j#+Ba$eK|n_{QO=!S{s>eq{sO-)E9TCyTsD+ci`2NnSv5j){vP**tplK5T>3 z#GZh5ebrQx*?Yk(@yBiTd*OIHyK<``=``wi=oC3Ou7(uo za0-hn!6E`YBgjfTKXI8nZZA=yEsV&w|81*SZOzG6+w^Bs^J)vSP_&bBk%&;iOuFG% z)Fr4naDud1f*{c_xE`=iQ4!9?@-(-I7;kDvEiAt>{2X&{Cs$CT+e@&hLoSl!Eo1!o zel-Nni!>Y0xAGPh&DVm9wEHng`&82ehM;kHDHlx1_897w$7b!3l!p2hwW-WpUifx_ zI-Hd%j!U)M*J;(vMYVj7zj^-h^eJv#;19cHHJRiJMgN{>>LP?cn|HDlc;rVSSzjU! z*L4;%G>IG$+h2>0kT6QPPpxca*7atFla__iBuW3OU2|*6j*{f+E^2%$Bltu!x4}yg zqX(j6(=c9w7qaGQyW5IB@C&F5upP!<%3D?F?Mc+Yj_F*B%HJCv_;t`#DR#&>J-DS` z;X>*6xjggO-%QX{Re}*G%|EqF-?~*OXmxetyeU<#f(3&WQVV-!F9`~QOEJZ7v+c9B z6zQYp(a|Wkwp|_rN~Ub~>M}{{OPj(roPG~YR;Q>;LLyyd812nscUTC<_)x~2GoVM- zW*u*cRh59>I2#o8EM3Pb1JT^g*5I%Cv8a0v$B=t0f)184Yj^tA043=<3KG)kb)viSUGm3~1v@>)f#{892Z(_Lr0=MvsFCe3nS>=l1}6u#*q~l`NnpxJYbu))i@umO0M_YRqnr z%2+cqD>*IX;tCFV3Ci4}+AB8fzkXf88K8`cV70e0)*z;p!Sx6p>+ zPC^I&nEU@P6nNX91A`t&?Yu>P-lq2rK*|4`pzr)w{8MR!Ca6h66M(TRhnb@+N}b&g ztpJ&$49MTVazlF*0I$>= z695nhZ+@${7Xt?)r{o|2t^f~~?Tvf?hajMUuyX@|4KS6Dg>rEY0+2BQK^*`wfEXP> z{g1UbERIxpQ^$p#{w13MAR+fI05UsEM}gT12s=w=8&Cc3`U=33=42i30=%ZY!W8pW z9Yqp?$>L#G%I}yaLYz?LE1MA0%)-^ezH(fMapFFO%6_Y~Jd5<-2=`eMXU(20!OeS@+ z`K}p3HNmBqYq?uiru@t;%h1bvH6^a>+m^=DHCHp&wT!klGs3zUE&b(Lb{}=ImWK|~ zb1RywhD>a_W-sPP4Ij7?)5t}f zui?vW5!&F@l&%WL2x28FEpM-l6b*{VTji>HjvU~23{uv;ujQKwu;aLO+|&rm2scNU zR;GeL?X?@0O1OI|u7U0n!L^6n>(?xYM;4yLTQ|$iV9{vq1!pN6RjDTVRIYt!tY6R= z(T-54IprpK{rM#XiKF(yoCtMv(j3^xSxj}6FrPO!8uYt8th~(cJ`Ylbc_+6w?MaY+ zcp$=vb|SV0I7bS+*8QL?b@Thw!aCPf#)>?dfXJ4INi;vbUom?wwuHMcbE;Ppz7!_) zbLVVr_%gO7@q+NX16e-S{i)7+Nlx}~Mgxau>Lq*gLH(J-yUlvPg%}7%R=+L~Gw$>4 zeV+#@pLk*tesN@fw`w~@Zt5b$8QKOPi^?*H|0hdlp}9rT%c^9};;PW~obx{U*wDP3|f4ZjphJYvIO`w2~|ql%YGKW>~|Ef)$=H zfPWCxQn4A2PnH`n1D0%nbMg5KzUJM3$EEWrng$AH9Ydd$00~vrt=u@_6S?~2)Hq}C_#KI z>e;6>h;%fB^`#)_`g+iTH`f3hvfMoWZerd}mz!Z)G<63R7g^eBT<)~3|rQSi>fvI_lfC=>DVgnC& zNvrK>-1zp#Y;VEx1mn$#L@Id2TlDzD5G0gaoS#u-v=|dNN5W`PeM5(p0f9XHj0?8H z%)sh2x$?eI{kfX*zGq4qex36lEg3uO_%n;-HiusQ>)z$MZrp>y{x1?mCmdDQ)4>|) zgP2M*muYs;0S*Cz8@1Gw+UvCEVjtKR?jgN33#j^3V@6PY+hNdV!PqM%&5rhBoG)MWi$zJL3WlaG!`VdDs@x*M zh)XQ(d4(5PwaJ@~J0RKcRKJs)jc-05;jMwHekp-L{=Qpy^P)Sme38=@p(d8P2x}-q zZWG(>l)V4t$lj@6ewaak^mRrL5BtM819=VebFL&6h17efxX4KTd9{s9XJjq5zYqvy z^Q1r52QBC>%(Zb$8~IG|arFf~@z$x*&k=_YXU`N>?^9(UcP;j9jOojdxPvZ*xd`(d zd6{3pV8br0`JE$RqZBq}Q+bg+Km6Ik&lIy62Xfir=Vqp?&!74DTL;D$o;LjX7B_8S za@jQ5g*pi4Jp;eV6ivy&nhT|YG?PR-`XNo7AciKsgkNz!F~1Q4zg~zVMAzVA*}Fp9 z@vv;2@(+;((B_FOxJ39=<`8MLmVToik!*%Y8pH=R8*R=_Ypb{VoaH^sr7+N&h2XsR zCqTLr^b7=neS0@z!QTjZ0yQGd)feMK#nwM3qAMhLl{5~&`@Wsh3`Zr}` znb0?vHq;w-05ZkE$j*`mqQ1b4zCoEo*=0ikY%6ag90{1Nfav}~YjN}AU+}Y_0KqTsI-~Vrwf9C?;Famt{1aB%N4i}#f zZ5ew*`C@{Ejcr?gN&pGpyYXMRd`K^r6VA?Y$65kmg=+$>;FZ*N$K@{{86`e}dhM0T zP>P^E)jS`as07p=!pH4O8VD`sB*i-F_2JHPC;C@c$*(s%j50s3(#DVV#Y;_6vDX0I zD8PHoIT1byM~*-ixtDI0Srh@IO+;>l}zGD4QlPhI?It-Vmun# zA}FJtILg1{E2;F6-rT$Oa5J$nD;&<%dB&qlwk@I>5c=^k>Pz8Q-WcYc%2)N_^2Q|2 zr||No#;eJE=}6$uMMfeaYMdDMfXJr7mjG*}Nlr7RJ5DuY$s`oLnXI)M-!1THsf@Q< zs>A}1p|{n%mOo>SPp)VqBP!P3^)t%%zS(P8)phfghH&~MwfI5&65|BheOfMZ);+^g zBUQ3^;Z`;?s1^nJKdR_4e<5IUnVzilBBZ0;s~j(}7(Uz^kPtw=Ff7d-n`kau@z~^7 z>zXf)8xc4#MOiR&t24#dG?^-cKmRHzt1KVHZdX!i`qj2ZtiKVN?ze>dm3vqqv;Ns> z+|tAL*oUmhymZAl#6F(W(Rg1{kcO%WHs-cSkFresX@ColX$NupxRLdNHj4*S=1??BSzuDABfQnkTRKSK1l0^fQqz~b!Y^*IsoZVLx@Nfo z&2c?UKWRreCl;@v-IGC1{2<((GW-_;)Ni`UrFGpYs9{lKrS)yRU3o>CVs7e_q)D6# zX^J5^PJS#ZM{l53CgXgB6x$IK1I65Fa;VMy*RXhF(=hvPG=uB>SjY>Rt@4kxGOPt- z)KboBk+DW`-tBd$z|QVMuz7JzsVB!D2;*wT$A2>1q_xMz^*+FVDd>;Pe(!c(DYEAtzFFZFZS|dW zm&{T@f?Vw!IVa2;cgwp|gnGrm&Nt6f%>~`0So0(a{aDQntzs)xEO>iO9B}|%qk8Fg z^>r~n*z&t9-8}Y3{0p{6KJmt+-p-m>Om~8eG(Usbw6^*9w2Cmp&KLz6D?Y;`@uWCd zxvO$V0t1cc!#R|>2qN~EuM0D;_%@&AI_KCPNi`4KqB!}~Kg8n5d!=+NbA z{0jlSs%|EfCY^dBpDYemq(G-b|Af-AjUPH2LH_vlcto0<7JeG9RfPy!grfWA4#T$L5JjX%Ecc_7Vk~}B zOTk^)M^?!i9SzA^&DEN<9O1a7Y|4$TjD9SClyVrSp`CoSsP#FuU^}#e_LcCMP?@+N zD<}{cRfZXhnOwPa^^hJji<^D*%cem61nIDi>tl`RJQeZ z)9f%)j781$U43Uo>uBRxLjXzfJ6K)cwKguW8zw^!XEDCw6Kc9&zBFHGH)_NimDhlIk=4|`RpA6Z!{;doka7~!7(7kI#8wp;VHshd zW^zMMmszt?O2KmBhqwrOhA(!^u-PbTx*$^9x@C+JdN04~yOX>KSIFqEr@}EBYZ8ju zM$~+BnzV&GllX1$Io?n5H>8K9Tz71Gn zrD6`o1{ta9eG=PttUW3w-J*`nn#|nm$D(E5gTdO-fb7#2Wn*V!vdjlJriuO_CCs&s zkN!KFA6c6ZeO8KBj3&Sl*PrA?^6ZWsWWIKMm(U)K(7zj1NA`|SUN+rmtTRejsrBa* z;ZRK?Rm<$ej^A%5yE@!!Gu8pG{m*x0xbp=ApnR*?Rmt1Ymr>ZTSDQs;82?ZN$k_X?dsQF`j@AU4hR-}XKgzLYc>r}#}L z0A~1w@Y@t8>-e7tHSqI4VDSGN;%|fhz+Y$&NKnH9(XBV<9$>hKYJhk#$9X9x1-J~t zBfu6Pee;j85SRm2R(U&@3U@KtTd5i3e~18BL->E)f-vU)-~q5QJka>~{{5ybWrmOA z3P%ovQL!PN*Dw2p>(`{ifR^n}Q2Fv}>b^mVMb|Hz#fMgJpOGO05(rGO<=BL!-z_-m zf|EW-JbaBS-|AQLQJTD~8Wf7}6unAR*W6!5Cy&&nKK2>mI4u-@LZC zvg7wR)i)@qUQ0xCdLR^Wa~%NwC#CPack*`X-zo3Zi6g#c$4l#3fWCfOE+T9hu^3C=CrsqXuMYYgvTd0 zG}_3f$IE*=wv+YbWT<4l>(0*Qw~w1tlAL?K3rNf4c|YCbM_>yq6m4&unwquByvaEm z@F^N;vP4b3WfBb|XBF*M0(-m>cf8JX!45jB3uO<2mJxdJYO5?StYh>@1 zuq|c#mpRLt^GkG-lZ)%UmRSCQU}zHk@Nux(s6#q&g%kKMgtei2wC`Vt4MT>BVFskc zQY4BgKjYAJP(0NL&tY7q7!{TvW%u_~FuvXPii~*Nx6b|9r3YpDp(3QxW&Fk~kbq^I zx{Fq;<57rATf18O1OCI<>1ZHUYjsaN^B&CW{9<%h+w0&ecwNIfyEWdzO{e1WL(gze zwaHpO`WoKvm$DEr5D_E9lR@UebW5`wif6`;ld|V$9a+n{sWAIlr^niy3KrL}BV4ce zxIIm9XqY1)d;ka4#lBo(b1%^d|4jsL~r^}7?b8$|d!=TLo^{MLy>wc#a+ZEG1r#vfG z#vJllxIEq~d$fIN8C=9Ji$^`!3#on56S20rR$hfvnuJ~Fv`1|2v#T%z$gdPSmv91s z&1I%lg|k{K>!ORE&Sk|bc^{T^v3#M~ zh{5}Qf(2oF2)%$H+0@#C3Jnh6M6n^~)ilxN6B|I;*p$w#Qw~Z!unNne*jKS2K;nyM zbR^e{8?=@86qa(LcxiZEsgnN&^n5K`_6uZ@1_$MZq7`G+Tt_p1|25w?Fc30#EnA!R zN0@$tL`o6gbR`g)ir+*3~A}Nt)^yiQ2+yFjrhP-vs#HfLnVLtQF=uIOnVr`+2$Tt*Y-(OR0ERF#2T+E=;NH#wgAy7d|r=tlm`I@YrV7a6Ha z7z0Z7Bp_zCa~K!3mL!|o_F^tKYjhxw?Zi2psv@J6Fr+R;{wzON-&t5c$7W8&W6V0z zA0K3JA8lAoXUs3b0_kR7q?z{1A4FOvUcJO;sL za9-k_F>#fE?VRbF?(rg?c%6RgM2M?x`92>`38Ow z|3vuye~qGVhCg985#Z_nYcfM8$D?IQh3`jylj6gHa?vklJ!{2TDN|5yX~Y}AVXYZQB%+2Qd2 zgCpLM0$jEeU@fGE0$2zrfC2zKf54~*2n|%=AQj*$D0mlY1ay+Yu>se}2D}=mb^(w9 z1OPY^gvr>@BmX=9f9!!1P{i^dLNNj&1_WfdtMURC*{ol#n|h{tS8FoO6C! z7Y>vz$rCz44R7RU2Fz30AJPNv1ZbQkthP(cT}$WxSq2syfubRSv{}SGoEFlO*LJHD~(}D3KO-CGa~t= zlKIaYL@ZfV>@i6jtzR3|7wj!LJR|A`Nb6hG#9V-mZQ^O53WWH!Qm6a(=tf+1%i3M^ zf~^+>XaAqTp_j6%y~&-u^NPdT7BB6fReCCDvwI}e#hHe)B)J?H@e(g5tHKT62v+7W zO0v&3H)?`aNAm1c$kONKw`tUDbvahzV%5>&Uidc(2V*Ud zi_O;=54u3Xe{vxz?TH7UBrn|f@TxZlucL;PfR*VTWb^DzMae95A#_lsH)%|pS1VY- zGp};&0ps=|wx4)=9Wn*)F0_&~teA}{G+3GW0%L`V&qUq$$>unDngfMfQ+7N3IDc)F z{APu0$@`g=)&xD*{?asBU5i05a9NJ=YvdX<8OS3kX%ILd-&6%q3pPeyXV_o3#ESbU znrpio+ehKi7&%Fq1!)Eo9Jo#`#zzcS%PH!QGw^zTt0wH8nrS@KC98ZC84)m8zB;+M zVNYAUCv;ag|E-~G0YB$S*qx~6KsXkcKoC0~;L6N*CYVofb)lZ8#hIAcR@-@_7%jFwEW1{(U#YFT3VDn0@2w|>UoP1WD$uZ7@V8DA`=y zTM1H}WlF1MQ9QfiU>V5J%5@o7Ngr^1F~0BJfuU>qW^#uGa+cxO#pAX8Y{EN!YU3debKgA$!Np zNPbk$&E4`ztS6Dlk_tX^n{!{L-Bs)fAsWiR5UhDn*Dc6P_cxVlJXW6IbDH{F4Qy^c z)?v)S_fl%Tbi@*bWn>`>JgI|1t--6`LYG$86Sci=kfvaDk7={mB(jo?4I4;x6P2ol zx_@3k=7J=RUC2nvP~b|m>|b0;SIs90uc63vt3uc$VFukpm-gGpm~w9Of9sstIn%3W zD3F04=dBBCn;%TjV(3>@J{vcYbrn^(w7;@+nnn4*fXO~f@l>OH{nnOe>_*h?IzboT z@Uu1+M&+CY>5v?04tF=L6{LV$`vCD_z1Ds2#hg50mlZ_Q^3LwY{=3O;BX4+K|9n(s z9@H1tED*_xx*M4-LQ~Sd3ts?rq^GgxkClRk2!9v)$M6kr{}xrLZll3u)K1H-joEYK z*H7#f2o zt`URng;4^f5}OD%+njh=sJJ6!CoHXsYYUeA3fo}=V$jOEOlaNn5$gu=oOgpy-e-|` z?W!LeIEjKEa3PWXxS@^se8jMRpI1H8Pq)_epJpFx^~RI8H3&`1`XGf3$loI2ZSo)1 z4(nlnH^RUuQ5{xtrpt+>eP7)Dk|~JNH0}gv*20e|pB&qlvQ3IdyJ3LZPiUZJ9GLC^ zxBfQwP5oGa*-Bji1hew)!9k_V9w8cYc~0m#~k-Q+x1L{4e~!G0Qf$Y3jek_SLw!r#)AWFf&a_^ux#jW z%ELc@z}t*}BNyJnfWWREkQ@G87_lXw^xtLU!2p*79C;%u0;s9pu3H**2B0i}4_*KV zz>ojK3&8IKId|ZI&(T{oxdZUbTWU}k7Wn$N+}nZwP6M1)lB<;Rr_Rkr$MZWU4qbCf zq`DO*2;x~P0i_WymCi)<=~g$rSz7_t1-6^$EPZ+!YsdG|I8k=WqvDZ2OC9@1QldLcNisUi%+Ci z!IK37A~&Y{PCj;d%SY?NP8OD1gR$GJ`2#w}C97x0I4b5}Z(My@M1^BHBEYnmhQ40zrrXoubSn?@;=is8?!mtBjbuVBm*%*H^PXIHfr80ez$eTQMW#%sg%2Vf}Qn33@^oERK zLf**s7orE*%d;5iwf4z|^eUdz0r1G^!%y3V-5#4i)tq!5#t_6=upJJ~pke3lc_v21 zaui$fMg-P(*cRN40onoLQ-{1FyXizPWp0Zx7Catvt-Ynbq3yFavjsi{6?s8Qe0|>K zSpK7^>aeL}57$(Q6IpX;C#}_i%Ck0OPmvKjx>_{RF816m(4gN&aoUGzS-nb?j88-p z2b$!q9W4~%56c0uzvBE*VD&vp9{Y!mDj7VjvOPJa7SFb|AD)76(X!t;r!rD}`82T@ zdJl^wpcntD7pdDiiQY2J*($H1soR(IL55G3Dj1$QzV9S9g3~3Qiu^s9-_mf&VyH|F zhnu{QXJc*uWzyxyM6D=lU_hJnkf3~x_)7_ue_Od6+lqCn95}Hi)c|Wv$b{qYF!Fn_ z!PDYBRyu84?#(z=kxN>~JFF|;$o@_!-o#+ZJo0R1KctB3xZhCPClwL6mA=6%dO@vi z%;M$KIE8wjxQ9^wLL61Bxw20x=2TdqZRRw^6C;SriY0V$O>B5^RY)iD$t`m71pAxJ zW@rVu*g%aMl!92b*R_dBg1t?0A-N@;Q zwar$h_n@Cnl93maTqhf(f8c*8XOF^P|Xd0B*Iq?l1c;RUjY8ac^ z#@*X799_x+Bcbr05b9AV9ci6+ZU%%`)G(CEQQHLKG(Ns#Kt42 zZb8Ea$#nCmO1`qi+an!3%Ji&p`Q1Qj+a<{QY^y0kRzqn94vHSpZZ8z+T&YXMQoF45 zOk`C$b&4^Eu%n}GtXifWIf@KI)K+^BHIpATr;Mk1J}Rms7*v#o$SYdYgz}9n(!+aW zFy84z#)iRWCBFi%XFE?}i_wE7?)drFf_PV74x~yDG4*6s4eZJ5PdRD#=H*_V%hJIy z70AHmErLH&mX?Gvc}FYWAGOA6dyF$Gm<%qnIL<#eEbWeCFbR;(k0h0A3$rQFNT)=0va6_X>&^ir~OsV$H@GxB!oXB8&ccCVB zS)<-Jjx`#KC-*x?Vz%dE?;0KWAXz}LeP}7nrVV7Q-p{V9k+!w7M@;JTJgDzxeuX8C|t1DCfv&So~&^Jf-8W^;{{hF17E2i#b<3OrQORK zL}ZgPa5%^-arQ;4i3syD$T|FJ!MxA0pS8St647DeY&5Havftac%J+RDXM*a{x0wMq zzE<+0-?MWOj=p0=(^;I2R#p5LjXe9;RN`vJ_Nr4L7lZm>0yN=0bnTkq$f^QiXdqJH z`|xk}1A`vm2yzQU!{I3d000vX`L8GyP%<3)-wX}Z1wcrUO~lVjQ4y$i4Tl6I1O*_p zK;j@4f(a@5500Pi(s-$Oc$B%}ct3@U`2aHE zty(8W>n$qr4^Rjb)xR+z{~n_Ylllt*DhA+xxIqtxWkUkk3Iz!+06-B;AwvOz1|UVe zIWzweD*b4?Y%0DTZ}{bHDF7SM!T=ow$Zwss|JBo?162rbzwy?u@DC#W-#PiF*l23%P}p?qXcMZ}*eKh1hu5I5~{He)&ji5vGd zT)xL)R}@wJ5vl$rhP!Ep0Tb1jjvds&J)v+{Zj1H%BowMogPTZb@>o zoWpbi^o>@j&Xj&9aj-;T=INrx>|; zR;S6|xvj|f$}PFV+I4_jm;YBo@PO*A33+~Hc zcBJ+3L9|SG^qcJ*{sw>XE`Pc+_x!A9o4B|yXL`Ouo%*a96^1VzAc~*Ay=oMBhEwUi zY%`gAn?%IceDhj3&5mzFDa-}xpI=Wuf-a%tC~xECBvKmI>T0+vPRM64aglK!&lo}K zCP(s?%vX*jjOL`ewHLFxW@&S0F&FjSzVC|Gr9i?K)q&xAw|+&M`O@^xfG zaxW!+JxK)RVS0#|#17;W#l&pVHm9d@+}6RkM_;S|#fedHBo=wJ*F!api{V6RlDTG* zO7h6{$#YYWZSs9jNq{Pa&?M*{GPCcFedadlQ(R|a3}qCj+y->w%#2v#l0(RVkoz94 zvA6fq)`HC+7N?oUL>`xP2VpBrPIosHFj9Fbvqadr)6)D!nbszpRj-vjJidO$2%94c z0rjIwCMU|88hVMZ8P<4tDi8;|Rvu#9SWiw)RYC}%{jRCLKZ544$(Fg?TWD=?oMFY+EW?1zW`o_0CXftGi&j|0r^gf)Yt#nXxJGuO0by)~x$%F>azPDfx(aR{by8cNia zLkBBtvUWJc==*F~oq`x8zcmw5``A;tO?3^I7a~PPSUb(H5g@mLch>N=Y+ID<>zNA#!`6@S-iJ91(Y(l zWGD|?{e^IME*mO}>8WwYAIzwQ_V~mS(ygvGAWYy^p*r}{tVn9MR-@r(u#=5@k{-6b z02ZgaBiZi*DcCXCjn;|!xSMUhc=2nUs@{j}k=RD*>dE&gFgR}g4rO}0tu>OAoj!Op zx+@lxN0iQF4$$WPxa~?NXS7!rGxC9qI!wq z-jOg&Km3tTq$BZcF|(rN*~S(B+!TW)oX6bZ&?~V8bWbNTBA&) zl8gpPgQ3m1x^E_P^6^QL|JWsxG1pqx>l;Q z@qEiE%J*+!}qfsew8F%`ky6BA+_K2Rf%jAJyLx&R%{!g86c*CNCu7b}%OY8$B zIbtBG%hkI4O5uEX;>|`nuXz7Pyx-ahSCi;mU4pj94Tt;p#;4X*+ z=C;T`6Cw=qJOA*v&UaC2fQTq!LviTG0`9;D|D=dy=)V~w4LA-EfKCOV(tvmBt2rk6 zeQwd2C?F^RbAKFqcf-%)ZG_`NVxj=Yekv}xcx6kyi?ER6rb z3Sj|YLEw3+jyDEn+{S^upikX(0uWU+$y~_MMjTPZEOpdp*edI1o&v5n23+KbeyiGr zq!%MwQrVG?jP=W!%09-BEwsGi&9yGh)|WA6oD?*m}i`lGUs5LjJ8DR$Ijrz_?Y$+^9~26{K_EY^2HS$2VjoHvSd%`TaZr-<7-ohRj4wlmFfPrq>sah1S- zc&*EFEZHilqq?QKC2_$8MiM8l-dGBkZ2p^LIcjqmU+%`*cpVHx|7Dq z^~p3Bn?-JI#Q`c%lwphWx^Sfcnzl3}ue+FZqeHqu&9Tu_^A8N(*IqCLu=}fzr`cgdIaY%V%Lq4{m#n5F%p}1OJ-~%`*+Q zab-EM-1kw@_DFd%*AvS~<;MHnu2hc6>(s^GiPKaq( z4zGJOnUXdUpLsgt1?wFw)_@x)sSA0fpeXqBOl!ydK}zEb-iDVXg^PJ0{Ykx~$~DLR zfR&Go$AF9POooA#8@}c(!*cMgYXRsv5N8Io$*Qdhb`ajIq7f+s<+ zMbWTE1ve51X)?hX^Vm{I*>sD|sa8BmC$vz#11qAyQ+(~8MFvY0Npq)SelK!IXE85; zaMEYo)?lljKwuYoFFwIZv$as(!+6ubvMA+tpehD9zc+C92IB^V&rUQuK@tnB4eKC4 zleb~xn5|nW|E@V*$&3)`y;fW@`Dn#nZycdoy$L~~uaM6I*^SuEwacvod|saEmNTg< z)knxTMV()S7o)8P%nr9d=c95+crNnkRt0$6bYvB|F!io~&@EiJ>$dQ<_pcxo+#z!% zr^6DE{o}8^SF1^t>f(znM_2C5pdo6_r2G)iOoX`^KSO7tjqso(bOY1!NTrn)0YCHb zh56FJm$MW^7VET$y!2#Py8C{Iyr!HETOzbvXe$q;4`WR=P%yZw2UKJ@8{tojz8^OW zEuA7*#2+Pdsy@olUpKLcufkgv5d@12T0*MH9OHtHzEwOQnXr-C-NbwR3B>czL*PVW zcR@(b@qG6yDh3e|y8k}kVBlTm z%dnW@V2awhLp59W(qDW4YjM z4?wSoi}mi27dKefa3fY!Ow1@xDk;-iS>epQ)_X6X1D$>j8>|>!`+-ay8_%@_GifTQ zxi+1@{Di{RHPxe5hO?arj^tm7z}%Y zxF1V2PLh_#g`h-HhUop72ZiqTAMQZK7Q97X3_5 z9tjMNJRE~7W2B@<6x|N%f&O$k2!Xx?&=C`##Y`KTB*`>vR1KRV4Q%GDm!!z!V!osz z|BRF_=QSHy+KOF6k6RU#4hZm}JkX{K9m~REC}A>j%+J3rHx3RP9?W3reJyQBR~KWi zQaXCY0K_M{=ji#ta)Wn_; zPQ3Kp#n;M(h7KzK;?;HwGRCjCxxB{WUw>U~W~zo*29ACF-Hju48HP%|_oz*{NSxD| zQOwCi*&g#%dz^M<#p-CERRa3l@WY-*>}O-~F#$b!=`iI&VNBO)*)RuNMvb=BHGLVx zu5o;7`nI1>(RdZAjUXF>DILTRbJK94Fh4l=E07^7N!HIPg9pbS2~?2ZjRHX-i z7A89YCq)o6aK~3lKQX8dh-pQDgAnD;_AP*VDF*K9`ZUD?41b^*ALbuaFa&fKK$}4y zhq~DC1F(tU29TuyM3VoE80M7q{0iBnqf@}SpjFi4sf$T#N&W{V{0Bh(Eu!$R>HZCQ z{4ZL8ctaO(X8?!t?-)RF_zM9B(E_0Okva$HO9s#!jnL2=26;mo+{Kt^5)A;@c+;5v zm)Vg210*W`J%lF~4y1~5&L>%*n9as) zq&W=NEI{~)GGa_!u)v?z(hk(G3r9`_w-va_u1GlGlnT^b6$4P|UEmBIFWj6-au5{Q zOEp0(YVoV(9VKQ*$SOXO)O8mDkg&L&^{jWJ zZoDpTvd9RUyYk-)QqiX+*}peCz!}7?(A<^M!U(CGi+bsA{eso8#z_iz$Qi*T+14g; z_BhfXXKQZ8ogZ39G15S{r~`yluYV!TT{C2|e>Oj0esGTzVTsoNjE_x1XM31=*x+IO z?5SJ0_^Tk?%0n0Nhq+1QSv==^P5BzwxNl2?nLwi>N<^XO%)L-lIV0NUvEw`BGESC+ z6I|}W&W%kYrEyI?F@5|m;n&@XK2!?J?DcL4PMGCOCc6wo_Frsv`4;F$Reri4NT6T+-m0+jq^QGm< zyJxVNJ%c~2snu12Ru{L6gKEjK4OEwr?{K0uto-c`RC1i5Y8ha1*-*S4f7A;pV648j zkNUd=|JOw{ubLAch*e995=5twoYy6o-s-1Z>tahDY`$9C^xjyp*M6=@uB%&4X;buB zA?9Ii0BvCryAhRJq0r+OB0l#cCqd9*hwF3QF8E7y-8Z|Pp#4R~n}w2XZVrxXNgb^5 zJ|+xF+#G&za6e0`F4f}zor{#w=# zjKn0A5~F`1*qJR>mYx~HS9s;gD|P-tgpv%ynXV`cRyaixTTb2Ecsj$+YO6jB-!v^V zX4s6)Xb<}{Dm)M6H7yif+A`Sg1V1zu4ENVOSZkgYL91 zI-!8_En18Eju&G4*?+B)N%V~H*8ZU*+TADsHKh|x!mr-kmi8`y9W&C$wXm(Xx_;)!Yzz%ZryWxT#`>&P1(?;$S9Sbv5+u`1G>y0UUsC>nr4!!o%OdC}y-cT%5@8GC;w z)7sc%TpPRtPa3bT-RAm!fvnLy-MbcQt*Y9VpPEdquD&a@-x-_6Yz24TF{a)P1Y7AN zj{KorgPunv3$kPcZyCb<+)>xcXAf@WqfT9J%c&3TO2xn&?vGJlnugYzr425tfzAH^}&8o)Gs8zPA&w*C#&CmU0@nDIcahni((Q|6w#Bw|Iu=nT>970_1 zb3sXgaZlQ7O6~+iU0x;5{7+V?tk1eh+%zS}Gx0{yevrHS*UuGecyp=a(FafjvD%he z4oo)1LJ0#!BLh@AK}KM&@T6Xidp{Z0Vil*g^!Hq+5(~AY=wvOyTcN-3<68FpwrFlj z%TGW3tm=#XwHNSR{f6Y_MNHI2jP?{Ga+mi27n;*Vk0Y|4X{{!6b89@i$xrDEa)s)RiHPA5 zBU=^ErovFRh7d0yj8xfAlSz(PSg+cT@{J4bM{!)Dy%M71=S6eI1nCB|q zXkBy2_k`wkwGqgFR<4!G7TO7&0Mu=bl`ap0mE+o`o)kP$FWX2`#-ewvLdcM#mk9$8 zyE-6}?PN1?H4XJfn`L1xCyjRUz9%g0DX6WRyEX#8f31~g`h}Bich^%DR;XA6Gpisf zI-rI-Z_MrP?kLL5|FdN2X~*2*(5pdpmXMDZ9twV?FYL|Nq7RlUh`oiDjvqG2X~i;n zjSu@GoiNVNM}OU7%>tk379OC>Z+a4Q^>mMH9lGnM=i85Y-}`-VHSCXka2&K9>+tBQ zV{rZ%NYTUJLzpduBGB|B*i(nt0{%PT4)6lO0g~A<1#dUfGYkL%B7+ygMD5e^fO?{c zS^&)XbAYaJ1xOOyY`0v$Khr1x*#fjWNCCH0cr%bX2~9R&0j-q0Z^%I42H-%VpMjz5 zFU)^LuJ$7wi?oah&~+5VsY!rB8Z`6S;Sy0i0D!!;O!mK_lm8c7yrGP@wg})L9*p^a z51?Iv8|VJ#7d84Gas#*A1L`i`;wEJOlVqj-4*&tU1`>c#|FbAG-v9bY{}&6L z2=O0L76YA?{=ns{Vh9mTd4_8mIMAa^OLk=7l%eYG!UVc0b+*r)Zz|6pZu-!Yg}}AM z7DLLM{Thaf_Yi2HijgUAt*o;tVf%=#A#CAD3h!>DH)^Nop^;jv~WJ=fkYlnLaRpU^<#Z->@8OhUl^=TuH~J`o$@Do zBm;7gnN%ZK;r^*g&dYmSdn4?ZD9kJ~B~5tHyP&LftLmOMsjPpn~c zy1I6-PyIhsodr-F3$&&oIKkZ^Kp<#v2^KItz6-80gJv}`XReW>KFSX`rfj#}c757AY@vheKTYcf14ej{`@x1T7xsknA&y-UE z4PO-*3GjgsqIslxA%{8^KU}D;P535uNtCoZ;tK4mITOtMU1O&8yL5XPgI0?Tqm`@F z1y-O+W&0V~++{mE<}af+0yWw#`zIee} zj}AEXkk;=CzF6a1=fWF)g9K1$UNRWOuEY{o9z-h__Qu1HjV%`3=R8|eG*Ro?kP!Ts zCSs-p>`+STS|f_GjrpIIcLhhsd+av@1qGJLQ(C10`9JbwB#>bI2udDW9;!Ww*7;v# zqz()ZNU_eO+o!h??jeh)dJ-9S(fpzggGT&`+GhS|nrH17k2ZtZ2ey6TF9~L~t$GpD zRb=nmBipC*B_y09xM6Xr4ca`E#!R(sZfr%>*Rf|vaVd2ynxxEF%Dg(Qi_H0RU>{=J zh$grNl6b9gK$PNW}9kN z@F(i@3EQPdE?kzWwyf6?r^#>n%@i&&7l%ScNbHC?2=Cj{LS;#<3k>a+jCwPlZp)`y zTUR_ax=f0jYeZ*gzVC?y&p@Z&at^FErWJJhZ#TOo7@GGo$|0nD;8p&9C>(aIREyn@ za#7u)Wx5`b5JxZ|sV^vFwiK$%VU4fS)|jm6K8wX^WIW}*EL1egYkuz4)37C$uYL4L zzobdL`bi+FIy@SUi_eGL16XQ01!wtk<1h^z6$ zj7oP&sffU8o=C~y6u6aJgObO5Up~&n#-&lvR!mufaa)uLced}6F1VKrKe1wsnl?Dv z553rA=bP$|W3L5Cz!)_sm08n8WBgvmc6^qK#9f~BLaDO;`scAv?oUO?snvE}drhnt z2WH=w5QJ2Fq2NHjunO51`zFkot zC@3_s#Zq6$;`+R$qPwQ+Rz|T9AWZ%B6ibxttmy+#0T)p89DP?@ZtX~tEYwqAK^@3_O96W`%o8KDp;TSSilNsxXJe=!onAzfX7g#qW{FVBpx>T_ zKH|!Q2C|$(#~2*0Y$Mi;ffIXPyfCI+UN3knpW=_Bkje-vDv(c!%Ls4sLus@uP}}qv zpf)m90dtc&V0dFGP`L?MmFGY=A249CMc#s6$u8vYPag5(+u6&(=T7E2UqUjAEK0zj zjaqTbGeR?tfNAl27Ip_)(*H7ELhVZ{h$AkegFMML+Vye2s}@i3S;PTC$?}ZK0&cN< ztQ%2cPr9K{sB1tLX>XCxBi)QKOEgx-7Z0xm_fUeB~|X=>w!|nlz1pBkH-}*a~s|3qz9$iXI&YNx- zuyp~mn~?@j)D{vC6U?*Mup39UjpZlSsLkyRZfWSzpFsyZO04@Z0p;i(-!l(E>K?vI zt&oQI=k?2TY+t7811aMl{Opz;7pv{BEA*u9W=YAjZ%At(oZqtu0qKa zJLpAJhmxy-m-py8K7=3vV#Z_%Vuh)2ADv4y1@Z)$yxrT?%Xy8tntAdfJn`nzy-T3? zIJyA$b@dYnWOCqa0BRG#YZSnKN;36o&ACQ1M~IriJQkJAR)i7#KoW*P6G8;UdBXsc zB=~LKAl^7bk7OwW=kXB#&b& ziP@=vbEo?FJuRgBr@a4V6230oT5!U7%`Uxn_gPx$4e8T)FC#;fQ*ljs$}Xm3B3Y)@ zrKLtmIntg&Sc}yi;m`z>VG|g?ECxJpJX!t^6sj+p^-bHdfso=6H)cYZm2XhOo2hEj zftiPzD>L}IXSER_x{C`SUGdM$I_Bk%_O=k7AhS@D_xTbFrE#9;sFI@w9fi(<4f&=0 zAVC9hHpG1BE=HCvvzUq_=z{RF1!rr%ViRH9=9(E}p`SLL=0yrEwr`h2qVV$1TYoRT z)y;uS?@Ky$v^4}VT?`AqSCk;5;Ju>T2r6IeT&hYv#=F!SJAa(11^W^~V^9y~u-OF? zqml`5#W6S%fHU66ipb9~+17W|jlht^EXTW|AhZA(}5me>(@!Zz%*J(3iIk-4%gf6}U@UN`!1mJdNlt!JzY z#cj`GPtNL67=k)ps=Amm$1zRX_OI)0bzayv<1QT*``5=C#m7|(sJQO%p%yD zIvVx4gl-F-FJOh1aG@8u>mMkO&eJL9ob|P(Ve8W{%9UD<AZpN3_;Yz6z!iocd-> zLWM}*txtY0^cG+5We(|xD~rD`$m=IMiHw?8xiTQx9~O6}jhP*-#8;iNc6K8|9iTJT z!{Swri$LQhugW2tZBZuYo&o+uNkxB;7V?F=pvCp|J06vz+UOWulO-HWJO*4_5XGt& zy5(s}2X)0+Tr^B|Ao^_8xm&8KSvb2F>56+>ZM`jaBn~D7lD!&o6VOu$ecD|~=4_MF z;p-+{txKidb7iQ)G-Rfz$G^t1@>Rblz0Dl80~K+ZvfsBIP$zk_%Li?l@6F2CgWVm| zsbt#UjGZ*?2|ms7-EEfc6RA7vND&wFYe^@vp%cJhzaMK0LMv*mJzsGpnazxy_ENH} zF;d5Tk_ms94kW|*)9GqLLbczyhAO$KDV}%gl;OZ!3^}1mRA6*%Jck~#;x_t*v~tYT6@qM>+BP~Z zj7L7VTqbPc6Sv6CS6O z?MwR2=q3FvU@J{h22z)ZlT%~7mL*5F(;X~{rfWI^bZkxsXrd6AsZddCG%!bx_#vOc ztV1Z|qw$_L^4rt}x5OLizL#<&l{`^OQFGpZjFQ`ebxnTLon?IfV%f3J3NnqLG4 z_Qh^Hff^)+pg(U526}(sMxDWH1UW2V_LW0q*hZnRSirQlRb(^b0aNW#{&y%ga1!*x zy$-e8QNm-m&=}T{UjAu6Ny|)c2sZ5uqmtXQtwcm)( z$5=-7=6X2ni@?ibJr^FXYRJTCtOnFAkLS@}G!It`QAM$_Sj?u(M8%nMHNvonVk0na zagIat)it~D-rSYresk6ecc0Yhn`aq*%XlDRqJXsPja zm0fMT!L{??N1B1Yq7oi8zI1479e46scHyb~lHe-Jle|NUhVB%u>q{s#O7H+&^}+oH zbOg_-z!5sW%akr$oyn>-Gym6X`gT775tz%Z;tHFDIh)oI`6I2j%_pio?;D%#_ML7E zqV7#Y{gqs@SaPxQ zPldbhXv^E8_|MS^DMWqY?>#Utg_t=S1}xo-Ce=3W3?dDu+ebV_z65<&KZ>+py~KLczfP-)y)R`O67$gAML?>#%;v%?KG&$O~3G<1Cb=$Om85{L3MSLyo_@my9U z@UnOu>1C;&No$_38YMBLCI+XWZYPWoBWgWCFi4rp5A=colNulotse@=10evIX8gmO z5LaLl1q~CVgi^N7mf??LO z*V<;`##1c{8R^4~$9o({qqmGG9-+aO$<|YO-{_;wHIQ3LD}S(6UsLQ5%?s#S)tG=6 zZpJ?84Xjc!7fxqwaz5kB(<(t$k{UA^e26?9*lU%e*)S(?!JTG!cix(_aSvX0B!1#X zV@?s2**C=PHnn2?WLzjw9ldmeR43o`CVZ<7wLF4Ge}3S+anNP7itSovi=8;)Et$vC z);xHWJDM-4x2RtgLp-%{S{c>U*YmQzB7Leg`lE7cJo~5*xjwM|Sdc6p{ls75*S9n9 zQaZM<-zelUenx*W^CviyCT3WpP0U1nAA~*fp3aswEjeew@+K zIto)jtP2_D#-eX3?jC*&TR&e966*8GNS28LD?l*hA$4WMp2Y)S#=&gVkq4fJH3F+< z#XIGk3>kt)bDKIDOtczvlwebFA3g`3%JlmZX2Ilg*<2qAt%ktwoU^x?Kb;oThNwkr z$Nj2>Hm~-;IVTZm`@D4{8kJ~g@^j4&b~!EVF1id;Brs*LSM{sLN>^SSR_V zxw4Qcn;HW+*)(*-yvC?x92O0E(9_MJrsZkaRwPk0ivnwsmNdTVvNi6qj`*iXk>(0& zlWoOV`cQ!3OQz=lxv(t1Zx2u&;n7eIMHk>K6nFVy7xVnfv!(Bd#_@9MVWi75a}LCG z)fu)N_FelJ_C7D+L-MMx$Km}UY0@toaUA5uK5p5E~u-DEk<1GnbQ1#ZUR!pHfE&>=yX3`E=;S#eIXL%x4FVqfV-G0Mfy&xO%{6F(@lKh=u0f@GA z=b&5IMbh~W>?xw%A91)R{!4KRHAb68K`fl_eHL#7H;D^fi>=I{!Csy-qRuxpO1G0N zYH{SDCSpSieStC7r$|a{d}KF@N(lYh%S-Ji)}>ONl!NU^$SC*`(R5v4fs6E6l>vVc zRo|2)OGU+f?33R~m!IhR67T zh3o4Q!v@>UW|Vn6v}A=Oxc5V>?Q#wqPF>>8bZqvq(4Yt=MQlT~IRGDbD-vQW4&qsdqA{a-K4+G4!P=nKeoCY_#~X zEuhy1ff<)>FKzIuQ_5_oiHHW_g*2zP^ZG5)|2ypq5mt!pR9Ofjb>d4-hBIWwRa=CI}R^C47MZj~?H!SK(8%OQt zuN67S(x>dJoCbmqV?9}OH0u9>dLgvIqHyVb*JnhG(>$)?D;4J$_}eE@rJ8w1AMxwY zKIUZPho=P-0-=v)Ff}L27`5MOr}Jyw3zImLFPWL8hUjVG;9s~yCal*Cq{_cAgz)1S zFBGvMiQx5Oe7icT0NeWuZ|F2iY4Zlg){*#2MEVPwugbwYst{*#U~5a&oHWHFBX1A@ z{oPOw%^TPYGb-M*tsSFGj1JI9MvUQC)>JdD44Hk3^p%Kb_?q`Hpsi&b!=|L>^B{M4 z^XOk!Oxmm#*_L7_NQ64Z)lVcGp)|8m6W+?aV+in1R)Mu&>PxE2m{VnE8DOX;;YJ z7hW+TX7Ty8uq#Jz61BP80XoHfINV{|h(UN6tIwBpXlep~T=R)9Bx+>?`Uv3PjxzNdm;JfUu|Ua%+dCEpad*G|}kP*5H(LplT`MRxod__>Mkk z6(>Z+c#y&%0lSNW{EMf8+6eHEbyE8)Vly!_Q-Q*iOo#uH+eA)TUVmW*2!#P;O&wRR zj@e6RYMxvpyFWT8BEP+Xx`*k(?T z`FI@3CC)!8{n_9=7O#&9F!W8M`{q-ePo}2V;Ouam{tfpA@O1;;BtQwQ2rQ}Kpa2CA zV8zY_WH|tS-~dT#7&`zjC<9=0lkNBwAP%V9bYS6zgW{}@lXb!3hzuAqM9g}zhcK<>VO4yd%%q6f4~D!8UHV5Hy}@X zl`)4Q_{>26HCO=?qt|hcz`o^Dioqx|j zczqVf>%ILQ{Jh@vzhCl}a0=IeZu!%)Of5lPi|!asS1pE5ALbo=f;%FOnK1(f$q&SaT-+lqt(0&4v58{4S^?;%?83p%=AkFwWZ|;pZH4j#g_T3exng^5uHZ_iM(U|~pda`H2+MZv*5Qt=r76}a@!_19DT1zU0yo0ydJkN3s| z`y_LoKj#3X*JC!*JoM!B=M>CL-D^l-jMLDzx3{Wfd&{!9JuU{g&`qRC^)@mK@a1n% zSEI^Htnu2c&l~3_g4AgcoUDA)xcEtk=7;vT+mE%^33eXAMXmAqk3pN9p-3I<93|dw zG2VZSqmB$hBXD_{9oZfQ3-zZBds0n(1m$Vv9O1S5ZYkM88Z#9Lo^bgws1e*1o9z#E z_}a{lxNRfE#hfeirtf~CO?g@WxC&*q(qY?E;yU~6z8=MTEX~R5!uFQWHRyKQ+_~bT z*CnHC@4)ibJLwxKNGZKrr>baF;@~Cw7<8%z zqpbMD@Xb8(Eo50U5U6aCX}YgY#O-K}n1Dtg2W+a~Nybxh|G;TvkgGnDyLvc$R$@^d z*x4Xi8?Tw_nQ%H)hg$TYHCItV-)cF`hgQIiN?oVP$V93AVRM`{v~j1j?7Yu~vjUhm zK-@kJM0+GVNO8VJ8hFTY;KDIk8lZWm&AbWJb=s?d+Z}aLs{!N032(fg$v%riRClwW zg`wCfWa3r<>T8M$Y=qH$M_RTdX;w`MqU(6s0_ zY^JDdbSW=JBu?;J_i`Bn#Tw}+yC!2TbPM@a`&}WBiP6K)EBM&Ck1wT2EG11(?GXi* zQ}EMozE}JQ3hOI@_4gp*m7+sqaiX6W__WCruD;6UdE45P zxT+5Ci7Dx_2Ck`%v^e_7dp*u6>ndulZnd^V@FSBTDVXG42#peK(=Y6kbtV=Vbu=`6 zvsm!@${5a>9iBC^BBnNvvcB}4KWBToZyMJ;lVwtHb?tLoi2eHI;FA2aCCZXqeoFvf zAp^%yDUE-9CS&Nfmzo|C4HjlnwR z6%9N_hW(A>(2+>p#MH=Q1koP}I0_jaUBw|{O(3}b-=kI$wOZ<{e$!&vzfG_%wndua zv)G~>wKDG2kA$!|<*M47rtu4=sM2~JhWJgSCy0s{e#$4D=w0DFt@b;{dt8nst;+qR z$+6GvEA7+;rx?TxF{0Q_R=p52NDd8Z1N8O*n=#n_gtIQ z3^7xn6UC@0vkteCj%9v8@A|UsQyoSeB+I-ew53kEeDAd8byR6I0g2 zlXE=xHX?WWlA7^0%IlK;&Y3D0;c%&v!Dlxw5vF8^`Je#Si0b;+%MEUUZvl{WlHVCT zGpEa0z9Ci9eD$@@$bsd-&RZ?^2G>ko5dYr)o}uh|TDt7|O0X`sk6Q}I^k~8N@vB~j zP=&9@F<;^Y5RR7`n<>tzy@m+%&j3j?fQJj}b<{#yOc~(D@dg#92?vD;4hk8e025G5 ze=sLYfCg+|e_h>3{jfmeEtOybAX5Tl(ST*^HGKvkBvycWUcu*2`oFLg?SXV%hLH2E zO5|82xfJn_f_pa6_c0>jyYdi#d;Ss?Vn6I8pga2C%dXc0z%uL=fBu{BQ2ouk<$Zmz z@2^M6>fZqBqt~B`bKwC26F^iPIsZUy18X!u6E%Ykgy+rxZZJ3)z?t^yFZTe>{CmB> zPfh@?{7P}6fK6SPAArYMG|SgVaD^pxzs25WkCUybYZ&V!za4d;HN8_K|1ByU04&=$ z0k8b359x|92(oH#|EB07#mP8cF2j%QYtRvOi+SjSUXN{x13XBN+w~heYEtb zq!G6u8Dijw;~qVgX8jW%uOy~XUUgQ#7&wr{pHvHzF~zFAz2YL&A&t9WfvtWs6t}Jv zz~Jpb9l6okq(~lByk=Epi=VZkvS*}S`M5QHRa8I8yuW-Az-#65ow{Z)+cs=do&d00 zRjN*mV3+P&ajN5uk0{URyE0wjB1|NPLE#77K-@k#<$pF$z5_7+f2+K_0B08al8&s>FSnwpt;2a?+XOT(BG|i~ViNNYtdE zxo^5p>hgS$zvrWJ{l>S^(!9>YsC4{lOq3){iQ#ZYHm+`}ZHo~zoAsQ%h6fsVTT1b~ zb@4JJO}gug7cBi;t7?7V4}!&b=Z?5$0#}G$I-1KRyl}*Asw)X{wBcneJk&@j$-4Qe z$$E5=@MK|Tf}jdIjUcOcoTDU@3ft`6jGKw%DXtI@!=R=ZMhvuUG_fH*<@=NItWrJ5 z$Q~ww`P{(v$}Dr8(VXKAGf5pE3-4v!?Z!|{%`lm8*ck?WQrzDBsMf_CQquUbxBZ zU0QnMr)$>xB}@zB8AO(*)^!={10Ti~i2{d>r|lNC$Z9T)DAt-aM=~RqpB6APnQE6Y?30je2A`>Zbrzs1)3#K-T0COQ zlQ$g3H6mdlgd&6g?YOrQHIT$n>po|Fsg++N%o=Y%m#BywpffQNJcL}-$x{+?QP}^! z{mm9N%8r}E=TTL5;-_WDJ%#P-OmJFm<@lVy$AKW2I*E?tzJ?&jm#+^D^nlL=m3kxb zq%BKRlZ}$JR!b|Qa?c1QQ<)h3r-49|C(8G=fTXJe-Lq1T@uIqBJjh{rCbdjkL>VC? zzKfk_B4;IIxWLgLwHDCBcuqcBx0O^oGCrR$K^$H3!D7Fmh&m03_jF#$FsU_Qa7y?s zi}~q%?*&1RgX=rp%@+8WIlV1ROYVRvb|51rG8!kHv6(#i`^u><^y9Z)jY_77A33Vx z;U5VM*=j#r0SU8JxGFlfI3o`6jdF4agA{I7{Jqq7CjUU`X%_$1+*;SDRgN5Z@((dk@PwVMh_yr*`#3Pz(_eG6-socaRZ4~=+CJ)~4QJ72}6$kESs`L+5 ziDzLct+j2^6@uF$lZ(?_&pxAdTLo76pYlXeFQvm$@?w%5-gw zi5(N(hag}1%e3YytW|MhFUIN-2X34e^LP(R$rtS(uExB*xZ@CEd5^4aX4i40_`ENVZG5)#958D}Duk%5{enZ@Lnx7(pOkzH86$BL>-#iB~Zy?vLZjT*u`eiA## z--+F7m+u`(BaRLY# z`NyZvPgwD~S{c51M)F&%FidkP{t7y1yPJxBz<*peG~(v&tv36$B5lydW#2`cD1E(y zSU)KVu8Bc6ED46F#lWbcNiP4!q$uEUFMt84;_T~(;_O(U2JqcF&;*F{SwX;@{I&fT zP21ogluXDbwM3!-`0cBroW?d zA<#etUtj^3cs;2#&a5v+hEn#JXCq8C>A#}N+d85tkxEkOs&6xR%fDC84}lGPiwdLJ za`>#duG;uDrE4K+P1i6J?{Wk-Z;n?X(Y8awUM=m#AA&D!Uw&;+Ba&uj) z?DBl)!Gxs=x$6Of&?)NpRNcty6uF}xQji*jEAHSO=oGJb9hLaRJi8^66yTJno#0sg_>LbB|jw8>Bi1w%tY|{63%=mpi#`+L4k{%Tg8GW6TFzaWzuAwhxC#9qSGQ*IvE`4x3O@2`>?`NP-X~+6)X*Is3-ck(8PUDO>Y-qndg$ zsUDXwM^Aak)mSrpnNN-fgDn4nN{I&5jpoNT^JBSd5XT@^xNeuw9)1jxOPxP)PK*X) zh?Z#P1ZF2Z(1!ZyQ3$aToUFLw95GhRLy%=+#i;|C_CY_*cW9j~J}h#)13O#!RGla( z%9mVzQoFw0wMd1Z4u-_4Jr{(jG@R#m*5h%1vMI9i z`P3r;4x8%1PT4VdR5wTxUYM)hGCB|-p2J%j54MGk23gO#K=(IRc9|aGZ}b+w;pX`V z>bg{Zu5LZ4NM1+7WR6w?ua(I^4zc27d#1kYPd-+Bn}c+ssR%gez|&4tJ~~U#g12>3 z2y?neFxRajvH$V|QAETW>RJrsX2r$Z3mP6q_A@z~I@@IC^1<%pJ>}R;ka@>JOS#cJ zuI=hcU(Il}wrIMzox;7?=N1~$do-vMwWEeHZy1pyzUAu{$Ya{VqIN$aP*FSB5bOB8 zA^Dv=?`5WVgJb)1nfN!zUPEo>89~E`+FpY!I0KmAxP^#>)rb>8nY&^prrfBWrI8~2 zr)Ms^WX05YvuKih$yB?~Snzxj%IOXaIy$At*FWJRG>AiqR2wwiKQ#J zNy&II;Xek*`;={&-OP2o##N6A#ko~U)l;~`qno!gPrhaKoX{LFoFRqSx;~-hPx?*ds)M&>b zk?DZ1)1ibPRn`g0QVyX<_7t0L@;~kO-z$eUW$X9}s3+=-J5}pY zqT7%lJvSEm$pAsrOO_=%x9Q^PYw7H7&=K!UfrY7B;oo))j5REc0eZIU=8?qk`Z zUUsKPCyrkJ^G)^bIv&B~5=8=?ZAgRTceYHGT;J&3Xm%s1@Iw^DDl~DN5uIv+iD2a=MpF0ng`S`Z>r(8^rimjY)sxj%6qze;zll zya_^VCNE|2uA18Ur|6f18`uC()X#7=zY?tC2vbNznSaBp{uU6`ARMs%GIzSPCCdsO zVJ(Q;MIE4U3L8DMUHvi;R}uDSOz^lkFKk^TO({jfwyO9x1zuGpW>PpBtK$40GXyf~l!AjIaD>4iS+lW^SYlRV!<$(f>6+pO_9 z2?OeU!~uzCS8H+(a}1<<(b1ChO)CW(?w!aW!u9FdZ5g~Q+SZb{3^Z-n1qH@(bvHx3 z&3;|tZ;3LcPgwWj{N<<*#@InhXr56=^0(y-pLKL-@)}jvttRz{(bMIAY*RIIJt0>)g$M?HH+t~nC5>7m0D`oAEz$9YDVh6!95SyXt@s#LI#&N0{l?9Z`Rziu z!R}HVnLgd@oiT;GeBtI1!VxZa_UWNw&$9BTW6BogEE{zRD9p$%p-L$oGt{5dJAMV|}VUX0<6n+`giZo~rFiaLu8H zKffN>sH5TN=tv!_saw5@dM|b%f(~KPrHMYiirVJv^pqa0nphQwcuYti$rpftF|u8H z4q#kDx1hA&b+Y}!P#2j}LKPNrDT+r4zzW(m`Zds}q$oxCx(6dI1`_yz^q|+2AKtMy z{u4ek$Os+?&%nqA1}GtZWsk0YSb&i*mjcWw6l9@{_#>jNw*F!eB`|jJ7pCz87GhX@ zDgi#T;yJ>+I8tfFM2N2{>sa{Q?AyP=gRe4cKnxA*{eM?x{}-hG{~yAjfyAHwe<6$N z1lX2c1MWLGnD4+$=t}?){G$ZKJ_ENggAAuo3_w^m86YJRyas3q5HG#vB?FF&{{Zd3 z>%K-8y@oI690J(HufX^1H9CmUT9Hiuy(D#r@!-3M9{(Z2?dS@1_7#f(9ClF-hb}H4 z_0y=?*j=9Ag{LsW*4<%>5#G!^_gxbF$tXPz$j(M zgxUtdXR@qXocVM2?6k2Dk_f42-YNFNn6<@x{;R8`a>%i&-@Hf8@6-guAxh%jh^NS+I^wvQk=6_ zZ|KEk1FIGi{L?dJ(pn!q>qIq5TKN!hcg`?sK(w}|#aXl^qXugvO5F&hxX(Tl9M-;i zo6<1zu~J#AT3YL8N^6xo%@S9N8_2zY#V|W>S7vgknH0>JPiCpnbpP?ZX4*9Ftfn(Gw&>;}M*#*kiF2yi?Fb~>-#zV+i5OhH9)`^!0?Kda z`BV|wuns%?&}?*LOmccL+Q-ny@J+EzBSxq4sU>L zFi}0}jLH&k;hj%VQS~I4p4z#Cks#*m4hx&wE&iKFMN=ngj}a1{*Y5U)YET3yecwW|E(2 zKU%959OHj-DPiXmdr(_LhV09D$PLE|ju^{R5w=++#5 zn&elg`)Wy6w4b+^3Xuy!bVb-Bq>j7EMb4g4*@xmYXEVZ{2K3#|%v=m*`r>R+fF@Lr z#HIrHkQ*ru$y4FlvBqjKYU81uN0NY6d1|c&}i<4REAS zpCTCb@1np3mgZo9GxdC>s7PGxu(foziEVIiDB2HRrm zPYsi#J!U)ckMbw#?G2xtJtELi`@-vNwi8y@VR)2pv}Yn!)5RoWzXyQZKe$tM+GnNO zp(k9@=gpQk-X+~0ju@bSw?p$PqJ|U9JFsLhlMmfmnaaXMT5V4EZwoTGHt;hKS&F@n zbFJrV8cIi8wGRMazd;l_{*3iWoLY^kRkAjB(|!1<*N12D8azrDcK4>gP=_X-9SN=n zE0s4&0pDfUXtidU+%l91KZ_95c|-^0X(C)C!A4L$ew{*2r_;QA99FFpdQuU`*YNaE z5U3I672R$SBp`GseFDNMZ#+TmV?$6?HMij_*7sEvz<(B;!7l!M(PI?ZXKzpagPCfO zkkNkdPZTO4_1UphO_OKgkbOa!*cP#0;MRLbLX#aEy=#Nx zm2awf8Y@Th7$9YJv5??imanc}jD096JLG#JZE=wY-u)J=pTw#*CpeVF821x1dG#H4 z;w=b`ZGZ7!rH%b?!dlTWp9<=$1R07LHm%Qo5uwFja~s zBzce%+r0W{q?t&{6+6q7w%faG*3%Y|is`#KLAdjYTo*mXwS2S8v@vPRDQxQP@X@r` zcQRuc+nrmd+Z&vIBhkzyaab6Tqo2P6p~Pmw9m3eS_W_rF0?k&@L^Gfr^J3xiRb9%p zdDrZV26CvWm2T4?q3V;TcU%nN-O65UYLQRUyIhH%K(PA<>b97DJlC+wGI%8Np{JN| zpIlE{L3v#>Rk~a%CE+xY1S@(XMc*s`k=z5F>rV9mf9ov+JVo8*vN%+h$nN&>v2dPa zk(a>bM3F=pL&lI*A6>#nK81a>avsX!`r4FLjk0_pfW0F_R_hn!rp*Yy=( zgLnKd0vYv9fVVktyc<{<{rO+2o`2y2FoW5vBE2b&{hXs)r;?x`DjL#{1K>t^G{^s) zz5IW}od2Iw{vGvTn9~HHLOFsf-uQU}Sn+xY30{`(GqJ=&tH!iDs7i?$FwLNPyhYpwC2sDTcU45|G7R)VVu3)x_ybU$7 z1r6lbQdbmfNx?siruVba5jY|3QZ@5G&er`&nv-+_Nq4|Gi^^}#pEKMyK85T{T!dn3 zCED0^**_mSI}|wm3VM7J;QJ*%V;U`ItxIvs%@D*m?n04(_9lMW)wTiD_8>{Lw|z9f z zK23q(dh-U=M%6a>BM`|tw|2QM*F?`rphRo2AYt&X_ty_Q_BLpTm8}NTI{M}1BIF> z5V|rtfP;3p*vfgAk0&Y&)NT0rj;9O=qzxZDIagE2Oo=nNxt-##BO(h!DxytBFV(g4 z1ZE2ra~P_3SFFC$wpO}tHRM}M;Vak2-6^DKSv-1=XpFdL@hekoGxAThp1@?H%Ik`u zs-BV+WDehnpI`s^g~<&n&AuP+D%SYo9y@V7NRegPetJS>vo`>5hDJnAXb34v6JpP| zO^W*Jg@>qa#rZ2?4BO1f5qr<-rF=VzK`C{& z%%W(;yeXNeA|J$@`zLK!iJvpp1oqR00cDOO{mT6fa6mYPAme%)5Ma#qaSat=fmS`0jDm9Lm#X{jQscB@- z7&*I4b0h={o1xY}b9wQ_($o|!{RA^$Q!DitF&|=aQ>s9fhptCJ+A`CQc9a%YmT%1D zBpq|I{AMVUDIdRx^h^~SwEYT;XT}V67TiiQtM5$k7?1ZYzFyLmf1_nNCrh1NX7g5V zl6NyvjXbXCeXN7pFB|%^gqraVh-JXXQOPPR%&+WSG7hapFc#a6AD+jo@t#GBgew=A zJM!{mi$!QgZWLfnL}6L=X6YM+8HP?RahILYb%ti`WD7t9vT_0ywhm(N?C{~xghp(* zq1C=Ptl@4|4&nnS;gvP5U#&mp4-r_`=W zkBu=h2q5$Z+G9RYE^&mOTrV45()UacT$WJBx%^;r8P#_rBn0yKMXhC-3i{ib=z}6j zWCUPMpq!{4><>@*Cfz)x%Mx_Xh>-SH3WAi>6Vi=+f_gp3h!4NeZ_ePYE5u7Ry1ac8 z6t`q2482agy`hi0{e3MI-~MxrI%h7-dHEP+?D!mQWL|`^=d&fpihmv}8{UO-0<`!@ zeMIrZC|G1@F=v%kN!}=6mKVI>D;mWKQ+x>%_u>*Zx-Ppv@^0NrdK@>YZR?xT zPjuk_BZmL3Gc&i4WALJQaWm0~mJSb*@!KQJigz(@2S}!^Ek*=|vEu)5_195Rt^XS^ z3{oPEfHX=-Bi$f5q;z-pkWvCtlF}`$bobER-8qDG4$=+h*?7+P{k_k#)-2X$=l$30 zYp%}~L~!_s9-adARHXL10SrBMpSM)BTyaAeRT%foSd5O&{NOP^${`F0oobYn)z`Ci zY`{tUe9$zfwf@NHbf-HJt<%v<)$c-;s~u(5X)efU*=T4gS_Za|?9I z^WJElP5#{n9D454u9~0cQnWefF01*t#jb_??Rj;KV>#0chhIMRWHLWREb4|zk-zg} z5$zxX!j`q){n+=(Tg%TQwt<-EK{7cTYfs_ea|F#5_hY=vgY!sazJ|GyMWiJjUz1o2 z!2b{&`9`kZ!FLyK(zl$irXD-NiSj}(O3lmfqf%)x^CjFkrPw_X+U@GVSPs%;@G3$H zE{+(cRD4wvyYU>H!4V5|u`pWJAu0T{yH?HclcWsXp=yNfD&EZ!)plw1Iuv%b(d0Nl z##6b>k50*@$u|PJWN5T4Y8%HkYg-E0+e{N;yo!!&8Pa~tNXHD7kVZ7Wc?0BU5p4D4g>XsM}t( zO;hrE)A2BHe%J4y1LL3LUq2ViK4WMU#EH7Vex_>fC+G?<0muW;GfV#afEaoISyT*g zGl2HxMF1N>e?0Rbe?+V5n!}hn8Y0 zwM&V`+xt?StMPy`m9Y-pi@WGDIp(vrWuNW5?u8}|bw;o1C$?}NX&VZJ9P;(o zWSs7vB<-8u>Lwu=lUXD)^n@*p?OX3-k8P4#SsL?W*x z15>nRaer(hTG4Iw7h(sO~sWOKaq4BX$IB>Fwqd!}wVhCw=z&w18wyOmP;x?Zm2;#1JOU%W{EzmJh1Sxb$HKWB9kG{^*g8Ga5b{s#`J z5pq&TZ||SFBP2($@h(fS2el_QwwwMwy!9VAcelH+S?GG%PaC&Kk>Hh0vzGc$!I~`g zsxdfd%^=T5>BA+tC?YwCNrg5;f$f` z@^kf)i9O-j^p3;ZeLQ{&42yQ%`xONS1{ZEQvKJ`7!jYXvCNnw$^7b7J!w{s95d%!Zd$x(DqCa3q(55t2v{vc}(8^T6a`3l;t zI+}Wx_Hw=#BybX5SI!3Hq+3(NON{qhoo2gA}wKFa;sdO#cbIMB5)Q)wq+DVi43el56@7U4lASz)WRb_!;b;u?+mo8+jg z9@Lyzw_)Op5vbBu5qTiR7qLQWS|l@GTJ&ySSO=mPygDH{x2x4mg0nkS5p?HBnrhpG z_imDesfetm(-QKs{Iy*l{tLy|gt+wmEICxXu+_5SsW<`MBwykKY1+v5jhqgj$l`z9HUk{?$VAKWec2;?rudHFo) z_Oz(AHL%szd)>AXplm(O7+Z(+pQ6A|>9 zow503m*moo)LUIUx!mo7yy4BAAviR!b~4C^&q_5&XFrWclFNF#$*C$@f5s3 zLGNvpu^PJBUgM%<@KuL{I`vnfgWV;gHNmxXOjx`?FtWCy zquPm2q^)+Jeb#}1?su2z^IW&&4;*@8)p3-X=1T*p0sQMXN%L2k zGR(Plb`~&7X_TG!j#3n|^E?FnjcCAEx*kusiG)-#xzWK-na5M@;#0DwsxA|W7*hK& zpv@xs=OxNi_CP#V@Cys}VdUAA!Ql`pa&JeMHQ`y1hc}wm4`ay?LOcK17?=Aq8!U~| z-h3Wh4_nq(`wM5Dy9)q|Ghri%F*L|87vhoem1t`{{K{$}3RU$icF#)a0dy;p81XZW z)Q=Dgyz(7k&ujX{X18AMav#*s&Qa|e@ylzNJfq(nxZTLLY9gvSL0gaSP!?l&;k97m6u9r zKsaP7Q0&ocYW*gy(W1FJA}D+tuXW^I6dMb&KHisWd=RV_-I#8R`_D+Q1n=_8F;7@( z0D3%ju=^JGzyfIimZQ(4-;s}XI5c$?mFh+}2p7t~jp_L|lkb{hU+IgSr@TZ zwih1)Lvalm7b}5Erx}kUMTV|1yyJVq!>$im2H{%S!zE|7PEjEA`=vD+8t;*)#vol}`J-^}cvcus3_xZcj zmw!a?5P+9D5Y0mi@EXxTpA`TUo}maJM@9zN5@1U67Y5)Q{(bcWYzP(bh6hy0q)MNx z0MYP2aKKb5^jD9v?7;c+iNJ*EFHrawI{>if@UIc;Sx`*z<$sh603cpJT>u)HtiS$r zKvf+6uTB_XTmT94GtdA`WWaXs3!ou`igf0A&jpvnD?s?H#PIU+**6a?k^(T2Dg7-4 zHTfUPdFG1J&o#yTfZc$}UJ~&t+Y~4b2U@Z4Uj6)Q^omh%=B292{=<)^v46k%GgZij z*DkNQ=EfE!?fuMh5HH8;vp;s&s|m-@-gv0qn!Txh{d_G_>ZcTt7Xm}PyX26$X859s5W{a z2DWK`$U6iEQKEwNTSI0=mb9X~fN7a2g2`;wOP>p;<>do6S?0|ptv>-;6pZg zmpg!Tn6TBbfUWS5A34XGbRJ^BQl4XXu7ed6r94KKVD27mNH=P~Mqj3oJN-F>e`oxL zYp}JpwL0LB7q$+c8KT^4@MYvoly#f6%YIb1Skp}D($)MqE~>XcqVi7Ut7EK3k>8KS z(}K3G4?O#}n5BDdrPCWpBwo$p4(<+LMLCLlTVS!s(vbKX_Or5xQ_bxI1=@QX-{{9> zzV?~gLSaM*VtBl+beugr5YIrQKtviPRWMbPI$mHnm7(Y~`-Y;E>(|tp0Lgd8hQ4_> z`5hwJYq3(NJul*~%+AoH)7noa8+Q|Z=hRMl+qEHV@>D~GiN48*&Ypy&=iBP3D+xkG zvnMMZQ!H79Mk}buH(heU#-!iR3&)g0sPH|T*MGoTOY}f?_AKNetDabB+A*B};D~v0 zKy%d^(ATrkvT8S3Yx^~4_Jtf~iIbB9S>fQRS&)dka;K!o?;={k(_Y(>9cg}(iWEo-c0$EJ+T`H5*BA_?_l!a6tqpQ9xJ0a0n*CfVk1hw z(-A30sfSpI2{)EdwrY(VPfgn_fr{+yk6d{>8kB>RXb}U-fFD=v!u@ZL$$Ayas?xru zSM8^D617dTJV+vLQ1+4d!9SHE-&=C!oVq2&AGi~fewg6~dX$QYa7Q@U3mer{CPO4| zE&7YrlMey2yLzEz<;=3~IHOddB<}adbli=XYYf8_o-H5u&%q@)nNQ;?Gj-fkv?PRd z!9<)7^oyL<}E2)Tmjy zMA%E>A*k;xFXOz8n_@%lf!Iw(czBK}&jgzdlIP$v*o^1Z*)ksO&t1RxB!DSq@DV(#EpQkLVE5EO=T1d;x zv9CD^`n<0>^0t9UgN2Wk$l1SDz|mIUhvpP#YH2iDS!cDZ{IaRq-6K088XKwy2X7)+ zokG2?h*lAs)--6DSgUV&5Q9?8Rn6ojq8i3Cg+~PZSF`gEWPg00m}!PfB-Ki#B?V}FRKXJU|9!F*{cP=5@^2ny>EjFZKwC{ zoW3FS_ewIH;p>yseyAVuVc5%6=`PkCG5_?YC*W53{E2v7Bo@tGu(*0~8Ji<@yT}(j z@BzlTAt-u!&1y}#AXj-VHJ@Sf1ceRcRfZ;LiVF=xSor4)!aw#qbv52MMxS1PHREV z^-Fv%&zSO204T!_?XsPEMeOp?xDO*+@G-BR`YQB~dNWDR5BkO1Kyl1V;NcsUS_20p z^ILmlj$5yma^cw@Tx9yCmH0{hnv$zSl9AI0QQcO|%SL``PqU1&_x{0dS!Y|@xtoMk zjlH5WGy1Geki$YO|H6K9O4qL7x8^d!jhm@+HKw{Jhs74N#y%+8iU?}ci#ZYPOow;L zw3%3Wy21ndAATl%AQtQC9jW4!Yur$Rhxh;ZBRvaxsBCJoggqzcf<}ZZ@o-Lb_JUR1 z>mHjy-MBK?M|v=NAQs!akC2~!Q29|L-K3a(rD=)LqdD;xe0m~{Gy@64M@^J0g-iV7 zK7pd$W+2-vucncnCaxH4#e4qKNa6Bhfnd~(^dM{O1{)t+IaXL;lIjBM#}R?>@X5@1 zruZC;?SN%4xeVLb@3s)Z39!`n6f@kK*3QISrcP%$(jY=Ovesa)aP){6J(K`1s|PM4 zR**ARAp&{pK?zt;hDe8C5Xc$oxW}sO#bFp^2=h%#w~Xw4HPg3%&S<&=FGk-H zdizG1~+-qLJ>lP(*m5sz%<*~%Tv2JXieRk03S#JQ zuu#a?Wj9XZX)4)L@1Lv+{arAGY1qDw+5^{d`kC04o*xfG(Xv>&*=yL?*F?Id`bODKb1aZei5E#7=KXeY$>p^r?U7=|#DsVMsoY7F zaCX#T;TInQA#2ugyA)K&=^MXU&p&ds!oFb3NXMws2xWgM6>-KFFR2>dUU9i5VDjl%1m=9#w*@Tx zvQvK6nUb-@TrYdGP}hgBT(XWC#(afyZATm5w8~dMkse;%S#9dnhS9VnjV@7O_3Q6o zZ|8^kdy! zyB19Q1Y=Uw%^_3e@RmPw`YjQ=>wm1Eo{V2IcN0<&X#)V1B%!Y}Ktp)u>T-D*FN&RC z1fxAE#hZ(&%Z-}xt6R`sz_6-U^I?efr3OT|6_+6PQ|3=sastWEw;JZ(NAMk~smKnX z@%?qhWe6HGb@z*(7hw{q)#6mpU$oz7aWMLptf0fuYP3~^mnAnhR9|=KS%8SVrUr`j z-{zUuGO-HXd;+gKRoo@nX-7`8k{c*%obfkvJ~xwqA4M&yKjCFdy=eB#(WKEPHL@Sv z^flHwxS=fwtDu^dcZaxq3x_jqddUjoXJe~0ebVI_9#6cp#v!IZm$Xq z1X*^2$qeP{4oG6lbjNa(rVQAMm`j)f?Lw&0Gu;XY9+~4fVpTkd-Gzlx%PaRudP$rA zFo7gn=7tvfHUom|P^)NGRQ?ClE21ft!=$ZEXMXHyZV~|Lx!+)qsFfKds_f?S)wW`6|_fGd;t4o6pE-hs_;1TC{yzhzNyK&Bc z?e5FG=8{B_J5)KCb3}!7^FbXv`~nVfn1c<-%y4ZFp4@4(VTrks>`k4V?6M1 zm*49aX0e|E+Tp|HmLXy>PpmwVbZe$DzA&Q+*{AX8H7dRHju{4`JFTh~y8_TXeMdr# z1+$Gp40(;bQtQC;B_(M3vYoZV4LybW<`L;&8B-!8(MOMe;Fe-M_V3faUlWY=Z7ua( z4Ko?OeIW+TAi0Fmcs>eRBt)8p3vtLcrpYY2VB}Uob(TgM1)Y~=cUfi9tIa*+uebz{ zy7(10UXU=_3Q3sg76$gjVOzZ16p*cO6L}R(N^EFR`@z*=oq%l(>xrsB7(amCnhM-Q zR?sGT+?I&1JM#rnmd~7DHqBjDYF&*z58-23C1}Z#;V_?r&ldh!WUVjv zONI&6m97Do9}Wt)JUNUx*SPene#igU+>KMpe>dtYW@nIWaztl49zbhT4bqcMjd3 zH()bI%Ouulh)5i9Wtj*?zbyk7ro7~s)p+M>o4vpabWg}}3&q>p)Y7I z4vhK*$+?LM1o{-?N3&do9%@N!-7#P-Z4BR9!_)XHcX0m#;C;_9GxDU3VY|Ew$NGe7O`tfx%##zizJbxQH%(y?ADmfWmcu2|6ml4gcrZLY(vo zj{jAG{e>-3Oa3B2CHvn{LV!gA@DG5SJ|RBCp;dp8QAA>3l=T-b{U4tC{{btJi_!nE z(KBxPclZD90X!tS?C)?*@|ot+c@D3BzG(z7z6&?`dotx;$NgW(MOOI!d95ga(bY3S z_5At!T*Sxc3!j-Qg}>|=0+254V-tjck9e*|$8A1+yb(no?hx#{hF7$sLDWffVJ?Ux z%XJ0efs>6wy_*0Jf?w^sUB^~g>sV7Z=og^+p?lh|I;Hy*si(=$b763AtZLDk%Ylaq zvB*hVq`#5BsyxQRH=7dp1m4_-Q7Oj$itcPftmxk1394xU8}1N|lWGbBHGIVNq&-gc zYPQ&m*0z*-D~h*Hw-Uy1%j5n-^+X-z=`Qyd@uMaOWMYeV0lJaI%FG$L;SiOh1#Q#* zl<2gi@h`i5i**^=3pRgph6xIc>FTnyj5n4Fadm6ud!(yBIJ&RLFV%V9So1GdB|Yr( z*Zq`hR*MZTKmf<7F}4ay@M#m0b9DAve8HE=(Ul@L)Kkz^L`R6pdQ4c5Kdxhj{REg^h1I9ISkRodY&gJD1qCtMWM84~2uJa(Pz7`2WDE=F}z+nKq;Z z(9kuWj0BQ|Ex^&Xnzo+}tQiP09D~hkM-xk^la~6Jk8_+Lt6F$B6J`-ecIU5)#*Q&4 zO}iI$eG#~cz2(iSOr0x-R!ymR$NFHk_?`K;I+yrIPNJN1acM42fllv)Nl*D3zzy~% z^+O=9GYnnHx%^qle|kT+97rELp($2-HE?<+4INv%f6A9f=retLD_egX(_Sv% z(`yP?(2#?C&8PV@TCY_Xj_PX?prGsdJj1(R$jdx`+OV$aVC}^bpqNdv zk>r>^ingyd4;In*$m!LF6PYLC32-V0I?yf4OT}bgy~E2ya<=ZY&ET9^mSIT1`)K<{fB%cdk2zd9<5H^uaJ&l6O^m*zU$H$E;pf;Fzniuw zlvP|Fmy$n4yp-2(PE{D^pA zZ+FRRwXw)wl~E!xbx`6wb*OZpQ3TG5vbus6}@I90ke ztWsKLud~pzB{GgQ@KlRN7Ri^^!z4nz#e!gQ;j@aH{lamDYYz9BOAdvjURN0wN0$WXcCgG{2BRB zJ{pgW*`InxR`WE}hX24xM+uf4Szkz%l(Db+sEljGdl_i`P?^&(k@(88F<8G%*W0Fg z2$PW>IHXU+$TXKr0;q^hM+>z0M&As!bN8Zvp{do?d4&KHyJBiTBT{^J9>FZ7(bd9n zj57l|Icw9FV3LBGMsq$kz1|pc3g2sdWDga&I1_TsP*!yKKDA9-EX7vkDCs$M)}|8$ z5=1O?z`T7UR3-WWfkTRl?d+|1)Yj{a1E~s%`Y(ZQb0;fb4e~qmHk}m|(7$K2|A^u_ zrr`aZdC^T?4yLj$FP-jA)fHb~5h0TMY21vNF@x2X*eLb;GETc3~=R~oTNoQyEx za`$WL9u7%|m&@byzx&{yjMIH>(3AG5T{z!qzim+W4RTcf>5wfHl0$!Fqg+KPhdW65 z;vh{MQ^9=;75i=%g=#h6ozWEGJ7kq7voMf$)pEH|bF65F#P`>U1`6;4W78MAbA@Nc zcm&X4vK~v`ez+OJJPmcit<#88AgX3xlx@&K=sefi`;<{ntjB!VH{n2_gcP6eD!cBq zY-!j8hkAe&%S6E?t33}n*O_()PF3?K92qj2glO_5@iw|oX@jAtmi~TKs1DRH=(#1fPoE|x5#TTACyr3M@>Bgo@e(R65_-&+Cp^y z3&sA`CIJRE9biMMYOlluEONpfz-f5q^1IAf!&Wl-u2(RJ`-L5 zSbO&9Uq07)@B-NE(_bN0D#{o5Y#%GKgRtin62x%V`{qmK>(D2S5nY!mBdu%>c33=0 z+J_(FG7OxO0p%Zi1&_VvH}#z z8rP&TG+yF9bNvz~dq2*UE%P5hNzHbDn)Q6sChVAn>6ogiHW7CG*68#T5yRf_z}xV> zp?THWBQ9ueYg6@&?xNWDL1xw>!5=%K*c~7TrPfgy{9~v@^-Sqb^Hg~z$uKGBozKvQ zyd}wo>u#718=XeOskx)WYcEZu|-Wo z)WKqaqTPmc7#!>~9}x=G6<4{vik^>nk-gDD2^yJ{cD;#tIDII@IgTf^(c+b;(jp2% zoy*963I3da?Y$=xO@a+X5f@F`44wvu3U??Mpsk~Y9uL;2Fw?9_Kk$EIeA6oGWmEQK z=~wP7cFpGJpBT!fK&ZOo)^uk{}<|y5~yz^+nm~_-^cvoz1cXTm6qG z-72~y5dO>xH>$QId^kxv8l*JKaKgyj>(Z|V4jlXC<$4iG{G(B=cGpd|gU)lTNe$Ck z-}53WyXnTLapKQ^-gX|@YoCvs^P~3h+AgL7`Oiv?2B7xT+mrHDD#;3;Q8&~&S#WEM|d-tUxdgD`K^O^(MJOALTWz&u<#h4ICYnYTZ)nJq)A=O;I zr$+5r2LIiGg*cv5a5Vn|w>zzd=U=UtWU}>mkW*O>;jB_Xe&pyqMh2tet%ydZ13XpJImg z8Z{NxTYH78*o-Z|Zv`sVM;_VRU(31M7gDF9s<#ivY7UM2`$-SNRul6f-rB}3I4~J! z5MebQVnB;Aq!M-)Ta_wN*0D!jA1qgaD-f#u+U-RGW{(~R-Pk3Ht=DFzm8b)FY2yHm zom|&ay5b#`L&&>z1+34$yGK6z$RA(G!Pw8bNTNe@zlFVTivVKDbW5zAF<06AxP`qk z`$8MpH#AR0G%eA$r7(!(z1uSF9T_xIsNEn@+GRhNO*MYJjer}c_L)zo2RC+d%C3g5 z8_?O8g;^cXu(`t0&CKptQILZRtREW5+(S=5>uVG`;oV&GopFEOCC&Z=$J8ICp5_Ny z73u88T&*jNtTodlXD{Z}Z+wf3@a6SG?$ctCvOi}e@1fh>9w<<$4vnG*w8Q-w0p6@1 zw@)geL>0u6GyQqd9{nzMp;Z2bJD|JhdHrp~ zrr=Yi&%O;Lu)mTrc6~tb(?4*91WF*Gn$_&mV0y4adAVg{reTzk4yv@(X7ZdQFM9Kg zXRxCp7ijgC@{~s!K`f`oqMuHI$IDE~D5ds;1(>3vS!D_;-SLf`7UMOK-9Y5o-JKfY zhuyX`*PXC;wap4wE}rqU7u;TVzh~u$mw42DS4o(~WvdWm=QpEYLzmJ0lx{6Tuj#WG zF*i~oVdP+EIfOT=+LGX+r5Lho$BFUR5xJ*X^8Uf9hZ^NV9Z84$`b{~qaUSo%jm9Jy zd0N*CE@J}jg{AfL99GUcOENB-Wy69>Y5uj%eH`n}9}XFOnIEM)f7zN_20ZbR&-$fu z{BFBE@AJBGjy7Fpy$=sR&0qD_bEn*@Yk@c;CMu>p&L+Q`x$`YkHfv+xD5MJ)K^@d! zhDAHr1mYjy`F@X-`>KuZG+?~^^(p7NkShVIugi2bR0if-E^n>R{C&@*Q>-cTnXz^T z)^cdCBLa8pPhzHt(5BfA6;4zoQ;~D%MkA4pN&95k zj146Q4Phu1;~zNq)fIc}5&{w(uJz4WAFO3J;aW|eo3I*Ko+wS%fY#Zo=fL*tsy*B0k)wG0*P+{}wU^z(XTcIIDG(_?PtL2OO$$as zWpb>)Q^jYrR(RQqIQcIi`~TA?6D59d(i?pZefH326T9-!giCWPn+fnF5} zCAvHSxsfNldim#HDOkjA`2Y3g{+pHwuy1&;Y8jA#$f!Jk(BlMHI^<_I&lK-<6hkL@ z0xlgsvYfRFT4;V8O(v(~INC{h_E~P!BB^@#+APxr)XPg3#%&qvprdg@-FXsA0#6uq z#4&zdI=uU8K3SzPZjO-?ipc7j+(n|D#)p2yXF(oZb`EM!oZWI4W)X!8aJSr{0rcFf z#e$faqJ4bG0oMi*x=UJm9aT~UC3f*cRbRvK63qoOvSXXCi`wjTVXY1`iZ1!0zg&HC zlke=PdTUz30`zrDe5qp8H?KiOp7&hhuIA`YX(a+dP4ygvnnNn0ecMb0lOgl1Hpm zSP2=Lb=#4G;mfo)Vp|=^66cbw9lmP+YHVZ^S~g`y?7$(lj|?PoNNampTB35E%SFb5 z;Q8*M7g^Wy7nA?2Ge`Q1YNrOTSqR~GeTCI?MX$pxx$pPt1Y;4!-d@(At`ST$X`nES zY=&g%Yew0sr1f;=;K|(aQHd{yrw*U5>^+>6gSh7VTkYZ8142&w#41Q6>31k7_PgRp z95TFYpO8z$@kP0NSsP|)bXHW(%tnJY%&=QaoTiBv*TZVGp*VhEw~bLXiOa!wR_y5* z(7btbPDzq4gc)sN7qfb5(9UQyZa`z(?3O*9acz?K%)1b~JXK?E zNsLR4t9k7acl@VLiaD2<-%Amv{=6gLVNVD3?4ZOz)(85!bRoV|TvaH4g&-Tu2<(IlXN53H?5+?`{24c zq#H>D=B`NlwOzoQO^QZGCIO1rpdPdYbXXk5r)gcSmSm~Lj>pV#bYCPleYj{kb&ID=pRJ0AZOTzzOZ)y}4kS@$yW&l+uHHKS zY=S?-HQl#|-`k3I~8z@OMV5d1VI`JOSz$c5S{wu64SVj^}_{>;|k zc#cdKl|}1i3&L;lWfVtXYK%e}dk){vWi+2G*AA)CHm^${N*=d6Kk>Rl@>k! z;xxczvl!(rQa^Qb23nra^pP ztrS#3Rw#nE!b}n!i+R32%y~AAmI^8R6u6>Df38h-5gKdsVQg(Vp-a+rHTcNKc3TC+ zqaA8LKB4Uv?r{axK*HyS?BvKI#QT~ML7IEc zij;NHLI%vP|E&C1JW>vbTy;l(vi_@dkx&lk47F~NOTgN$H%*a>Ni_IsFW|jf!ZouJM}8Ra zaEeaR*ip^&Zfh;%wfzv8h_6Cvpdca@McW@v=!ig1csEawQYWBMol$}JgW8=<(G|#1 zr;kC_+pVG^Prsif*0ihtx#5{Qb#*40x_Z2Pq)Kg6rGbzRSx!x1J!pSm?-DXqF{}Nq z*JVWUv|GF8t2k9 zco%%e=8Nvm>|n1$55}gfjrqO(3pXp109F-*({AaC(Gnj^WD6D}kjVg<$!81RR9=aM=-0(PtYT-Cmvq8xPbJ;hCbV+YN>3)=>4c^Wjbb8xVWikOB zW-c285%OEw{`MPgxYeZ^vM~YmrY6>k;#r`1B40+J$H|eaOC5s7d@%5n#(cjcdqj~6 zL-*FGT>PU@_BTh^R>KGFh~+${PT*M)1?c)SJZM}7$lK*7$?FM+&_X)YDd~OOqP9cI zm!o`&3CF4Gv0>-i9*9n{nY$5Y%J|m|(@Vp)yqM)>6u}R_c1Ji4`@Jo%izVk0@id7= z8bd}bVy85ylaNV~FtQSU2Zn1TGzFIkr@6y7MsZKQ|JKVqBTh42#PRPKEW;sHN!R)6f+1JTuNpo!pUQ*Kj3LYLH zyhNF9r>xHP8wxRo(s!&aa0?)a7MKb>XjWS4f`tNbzfBVC!{unx3%pF zeLO{w(iO-2cX@5lUh0;-s%+)fo=t0K{ylteUWEO==b~|Ao(vQyeRy;rGcb$r^E&* z?uwE9Bd(s2BbF?Z$iK&)fhj=d0r(J@7617whXYpUzyBr828;vfam_B8J zd7oiDP*+cT%-k-E+Sv^i3ona!a`Y+x=KgxS+fyi_d#|>c!w=$C`_CCXMdil(?$Y3I za)^WWa-cYWh`AK?AF=LtK`tB6rrtIkc30+}ChSR?`e1E#^@?1if)jQkW1`Jhzbj3X zcFBq_Im^n^=k2#$2>auG@QRJwF|BbP~+h)GbrR{$wX`z;`*9x#Xj) z;42y(y0g@@=2uj+=Dz-e`_g_;+RXb8#Mv!Enr|`IKlZwu$K0mBhf9cmSEens3-)Rl z4WF!0@1*;WzGu_ce6Te*KWc+uk%^@mv^o~T;M-6pm#pcueA(A%d6VdirMje$^rcz1 z-=T2-jmpdUo(SJGYbs-MK7j;k_ADp8hF#_-Mb{w%E8^9x^#`Ab6Pht}Tz0a!7mlwQ zhBAF3UB{Wfa`QjBJ)MiDfg0jJC!gv_aM`LTY-Bcfj3G!x^LWn*e$~8aHDs#CwN6cc zBF`!nFR*cA^+!|u7QT(eh?oQU9fBAisPewAtMxJ?J$atH!}^*ji-`EiH?Y#q9bzWz z@n)7|8&3lk{C(Xz(luw`D>15xHi>T!Z2-G;2;VzuM9V7Gh1oi%H}0p|&I34FQdMV! zVU+JusxAejVw z`X1jWt!{qxmb`JNrCXy9>s-!t8g|>ml?SJm=kU_F4`B8sK;Iyx(mwx>44|X zo$^A<++*pz8PSL{-I&kER_6nL?W&Uu)q*e4C;!0d8HO;w3tD9Q1FKe1AE$FlXCq~w zx3}+OyJF^0iY}@RbuFRuCfrdRsW*O7%c3fzN<<3Dvn-073xW>j*b=mgm7nM@48-bp zz3DS0!F|(*Fk%W`md}VrNsY^|t4oF)=-RF*D!PTA&52{yo6@77aOOCK7ZAo08kKAY zE^C-|o@bCx>+K!aPiLDa$g?O@s_-V!dkAnO4i{aNKin!k?>0 zr$@_}xUnINCA|H1!uDZ3lgP_SFMIIUg2xxv{!>2nOAHo6RC!Cv&(Y%)-$F>t&W)3+ zO4Msg4k1lCx(D?={5Cy0Qg1OfK$GUuSwwn04_-45ZW}sNX>u)VyjgF+@NZlQ1CE{H zdT7qGM##;%)D82+tqVK(yGiU?l9cgV!aGeR`(|0bS{g3gt3;$S=_Dji8fxF@1U;~T z?aL8vKHzqDk@K?C0ZlzcA06_SRu=WNh70uQ676GuHAWd%3Yy(^^rO8s&blmj1v}Rl z&1eXLF=nov^gnO+F`Fj@MDG{u2ndOjrr9-{IBNkuV;q z+I=~y+@+RCva)VDlyGsp*AWQ=zjMg@!*z>?k-=TeJN7JzW~dwFL^6bE&>lm&bN7#5 zLWd5nxXZklBAvjtY}OFdUO7+XEpR&{D8#vj+@tgQSLNcexR=#kexy5o&nIdJOHQ+I zr#z7d!z&8Ev4ol@5`~oS)$mB3S*zag#XXq<6s4qG6AU)+T679pjiuM`b0*CE)$5v7j(?1ZlF;UBsmZLn~Q7WCfhtHD%6FtX(Tfn!$pnxKuA z^#t1!rrDO|IQxYj9Q*jCEbarU-?khYf7~% zKZB}YK%@5bL%H=;W#_m}TfaW|H&cZfKKLw>)2jGQPrNX=;5PJ}^<$m6G>eLr&N10S zP?vP+s}_f&jyuz=!eUmNJAhddYA@65W@SC_VYnV&}ou-^S|q<6F3+=EClD<^yr)IM8m5J9R9*qkq!8txFXH zCscD}EpM}I6=3@(A_3+WDQ;&^1LrAMVKTVaoh7cpXd>qpH(F|DAsNb9sSsj~6bdvK zE^jX7;S>xRd_dOJY>cpQlZW$7fC)x+rv`fJp1IV9z!{~ZS5V;*iYj-x31|9Em`Nc8 zCNFg-_ObPw3m?o7u|!1WcD^$JZKMq2+$kPe@wNRwOq~T(RE_%eQ5p$Bnjwb{mF|-6 zkZz>ATR=d%ySuv?8tLwmZjkPd_dEFBd%yo$E*zON=Nu3gKc4;Uy(|8B;*{6Lnv~K+ zoREmrUxdlnkZe~G7t0;U_D|K1J5!`QjnDGZm0U%XQ%0AHLRV(sO(zuwJ=KVM0$-;> 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%0DNh;uB)0rA${I|ak;nyFpZS63@w~R)BH%12 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
kmR57`m_3j!@# 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 ImgHub

\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/frontend-dist/index.html.gz b/frontend-dist/index.html.gz index 5112725711f6b16d0bc735424c7efd2773924336..4c9ab56eb30c110f908e655f36a0a3551e4af29b 100644 GIT binary patch delta 534 zcmV+x0_pvt1fm3x7k~L^yM}*r*Pq5PWwGd4;pwvy}kR_-=hKO8?#9ekR4z~mInBk9PrdoW< zzT9T-$c>UsYf*qA&*-@pckgS|JwB4WbXbeY;C7_IPvW*l^M6oloQ%S31}ozY8)>ts zq{aGt<>XJ}k~`uQG0Z@=7HdzdN7<}1Tq~L|h^Df}Zy=zpg;C@M3<0}Z6p%W<@rF(ox*|4DT+ZvKS>iY$d%yzbWRx-3tJq%o>sMmBqyN(Ms+pxKqUq?zR+kd?B|w=&epvR$!d$pFm|PX^2cg zK6g|m9w@vJ{%k~3v0;nNN#RwoTvkhqps~ZSZ@I%DAO=;7;vp7lNPd$|=rx6yzqwdn zUareFe~6-~iiP?&2|12=c`dK-@}_)7oc%iZqvG>y-G7bJ>$l~3u3{96t&w*Y(o_wq1r!jie;%<(z~YebnJiw`M&vzX8|En2s>yKL!2k}-MD^8Eoj2%<88 zHZTSnG1wh!4G)wUKFUenFM~k8-v^z;CyO%T0fS*+n*A|8VO|x7tX1*55N#$fdVc!* YYPFe~st;JIE#^Ps7srA3V>1K*0J%^Fpa1{> delta 534 zcmV+x0_pvt1fm3x7k^2%-KDfr9H~M`loO~za6^tgN!)cj!5(MHzek&FOScsQE|#7( z@6E^axO` zl6^>|ukh-Pt~Y<;6w6Z8WTvY0^w|h8qU~m)cEq9a{KB`gOErURR*awrtCxh($ diff --git a/frontend-dist/js/148.b1b1da05.js b/frontend-dist/js/148.b1b1da05.js new file mode 100644 index 00000000..4ba35a97 --- /dev/null +++ b/frontend-dist/js/148.b1b1da05.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[148],{213:function(e,t,o){"use strict";o(85331),o(19104)},732:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i=["href","target"],l=["alt","src"];function n(e,t,o,n,r,d){return(0,a.uX)(),(0,a.CE)("a",{href:d.logoHref,target:o.target,class:(0,s.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,s.C4)(d.logoClasses),alt:o.alt,src:d.logoUrl},null,10,l)],10,i)}var r=o(60782),d={name:"Logo",props:{href:{type:String,default:"https://github.com/MarSeventh/CloudFlare-ImgBed"},target:{type:String,default:"_blank",validator:e=>["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,r.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||o(33153)},logoHref(){return this.useConfigLink&&this.userConfig?.logoLink?this.userConfig.logoLink:this.href},logoClasses(){return{logo:!0,[`logo--${this.position}`]:!0,[`logo--${this.size}`]:!0,"logo--hover-enabled":this.enableHover}}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-17f54292"]]);var p=u},2893:function(e,t,o){"use strict";o(85331)},3261:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},7835:function(e,t,o){"use strict";e.exports=o.p+"img/background-light.f17603bc.jpg"},10456:function(e,t,o){"use strict";o(85331)},10732:function(e,t,o){"use strict";e.exports=o.p+"img/background.de27f549.jpg"},11393:function(e,t,o){o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(a){if(t[a])return t[a].exports;var s=t[a]={i:a,l:!1,exports:{}};return e[a].call(s.exports,s,s.exports,o),s.l=!0,s.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)o.d(a,s,function(t){return e[t]}.bind(null,s));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var a;function s(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return l}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return g}),o.d(t,"urltoImage",function(){return f}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return k}),o.d(t,"EImageType",function(){return a}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(a||(a={}));var i=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function l(e,t=.92,o=a.JPEG){return i(this,void 0,void 0,function*(){return s(o)||(o=a.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=a.JPEG){return new Promise(a=>e.toBlob(e=>a(e),o,t))}var r=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let a=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let l=i.length;const n=new Uint8Array(l);for(;l--;)n[l]=i.charCodeAt(l);return s(t)&&(a=t),new Blob([n],{type:a})})}function c(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),a.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const a=document.createEvent("MouseEvents");a.initEvent("click",!1,!1),o.dispatchEvent(a),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),a=document.createElement("canvas"),s=a.getContext("2d");let i,l;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;l=e.width*t,i=e.height*t}else l=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=l,a.width=i):(a.height=i,a.width=l),o.orientation){case 3:s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 8:s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;case 2:s.translate(a.width,0),s.scale(-1,1),s.drawImage(e,0,0,a.width,a.height);break;case 4:s.translate(a.width,0),s.scale(-1,1),s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:s.translate(a.width,0),s.scale(-1,1),s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 7:s.translate(a.width,0),s.scale(-1,1),s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;default:s.drawImage(e,0,0,a.width,a.height)}return a})}function g(e){return fetch(e).then(e=>e.blob())}function f(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),a.src=e})}var y=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;s(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield l(u,t.quality,n),g=yield d(h,i);return g.size>e.size?e:g})}function k(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;s(t.type)&&(h=t.type,u=t.type);const g=yield c(r),f=yield m(g,Object.assign({},t));let y,b=.5;const k=[null,null];for(let e=1;e<=7;e++){y=yield l(f,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...k].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;k[0]=y,b+=Math.pow(.5,e+1)}}const v=yield d(y,u);return v.size>e.size?e:v})}}])})},13378:function(e,t,o){"use strict";o(85331),o(38736),o(79899)},15616:function(e,t,o){"use strict";o(85331),o(97197)},18785:function(e,t,o){"use strict";o(85331)},19104:function(e,t,o){"use strict";o(85331)},23597:function(e,t,o){"use strict";o(85331)},30694:function(e,t,o){"use strict";o(85331)},33153:function(e,t,o){"use strict";e.exports=o.p+"img/logo.e8dbfa27.png"},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var a=o(99114),s=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),l=(o(19104),o(31802)),n=(o(13378),o(80047)),r=(o(99648),o(56768)),d=o(45130),c=o(24232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},g={class:"node-label"},f={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},k={class:"node-label"};function v(e,t,o,v,C,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=l.qk,$=i.Vc,S=s.pw,T=a.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:C.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>C.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[C.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",g,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:C.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>C.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",f,[C.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:1},8,["modelValue","title"])],64))])}var C=o(457),w=o(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await C.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(71241);const U=(0,L.A)(F,[["render",v],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},34896:function(e,t,o){"use strict";o(85331)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},48903:function(e,t,o){"use strict";var a=o(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const o=document.createElement("img");o.id="bg2",o.className="background-image2",o.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(o,e.firstChild)},initializeBackground(e,t=".login",o=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:o,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),l=document.getElementById("bg2");if(!i||!l)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const n=this.userConfig?.[e];"bing"===n?this.setupBingWallpaper(i,l,t):Array.isArray(n)&&n.length>1?this.setupCustomWallpaperCarousel(i,l,n,t):Array.isArray(n)&&1===n.length?this.setupSingleCustomWallpaper(i,n[0],t):o&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,o){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,o,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,o,a){this.loadBackgroundImage(e,o[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,o)},this.bkInterval)},setupSingleCustomWallpaper(e,t,o){this.loadBackgroundImage(e,t,o)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=o(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,o,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(o);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},l=new Image;l.onload=()=>{e.src=t,i()},l.onerror=()=>{e.src=t,i()},l.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const o=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${o}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const o=0!=e.style.opacity,a=o?e:t,s=o?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const l=new Image;l.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},l.src=i},switchCustomWallpaper(e,t,o){const a=0!=e.style.opacity,s=a?e:t,i=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%o.length;const l=o[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const n=new Image;n.onload=()=>{i.src=l,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},n.src=l},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),o=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),o&&(o.style.transition="none",o.style.opacity=0,o.src="",setTimeout(()=>{o&&(o.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),o&&(o.style.opacity=0,setTimeout(()=>{o&&(o.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,s);const l=document.getElementById("bg1"),n=document.getElementById("bg2");if(!l||!n)return void this.reinitializeBackground(e,t,a,s);const r=0!=l.style.opacity?l:n,d=0!=l.style.opacity?n:l,c=this.useDarkMode,u=o(c?10732:7835),p=new Image;p.onload=()=>{d.src=u,d.onload=()=>{r.style.opacity=0,setTimeout(()=>{d.style.opacity=this.bkOpacity},50)}},p.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},p.src=u},reinitializeBackground(e,t=".login",o=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,o,a)},100)}}}},50148:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return To}});var a=o(78507),s=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),l=o(24232);const n={class:"history-header"},r={class:"header-left"},d={class:"record-count"},c={class:"header-right"},u={class:"timeline-header"},p={class:"date-label"},h={key:0,class:"grid-view"},m={class:"grid-preview"},g=["src"],f=["src"],y={key:2,class:"file-icon-wrapper"},b={class:"grid-overlay"},k={class:"grid-actions"},v={class:"grid-info"},C=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},x=["title"],_=["title"],I={class:"list-meta"},M={class:"upload-time"},A={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},R={key:1,class:"load-more-hint"},B={key:1,class:"no-more-hint"},P={key:1,class:"empty-state"};function W(e,t,o,W,N,z){const V=(0,i.g2)("font-awesome-icon"),H=s.S2,Q=a.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,l.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,l.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,l.v_)(e.$t("uploadHistory.totalRecords",{count:N.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",onClick:z.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"grid"===N.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:z.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"times"})]),_:1})])]),N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>z.handleScroll&&z.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(z.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[4]||(t[4]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,l.v_)(e.date),1)]),"grid"===N.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,g)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,f)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(V,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",k,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",v,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,C),(0,i.Lk)("div",w,(0,l.v_)(z.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,U)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(V,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,x),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,l.v_)(e.url),9,_)]),(0,i.Lk)("div",I,[(0,i.Lk)("div",M,(0,l.v_)(z.formatTime(e.time)),1)]),(0,i.Lk)("div",A,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),z.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[N.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(V,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",R,(0,l.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",B,(0,l.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(V,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,l.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var N={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),a=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[a]||(e[a]=[]),e[a].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,a=t.scrollHeight,s=t.clientHeight;a-o-s<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),l=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${s} ${i}:${l}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success(this.$t("uploadHistory.linkCopied"))}).catch(()=>{this.$message.error(this.$t("uploadHistory.copyFailed"))})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(96682)}}},z=o(71241);const V=(0,z.A)(N,[["render",W],["__scopeId","data-v-f70e7770"]]);var H=V,Q=o(86975),X=o(9267),q=(o(15616),o(81418)),O=(o(50333),o(74757)),j=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810)),Y=(o(34396),o(4885),o(53676));const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item"},se={class:"setting-label"},ie={key:0,class:"setting-item"},le={class:"setting-label"},ne={class:"setting-item"},re={class:"setting-label"},de={class:"setting-item"},ce={class:"setting-label"},ue={class:"dialog-section"},pe={class:"section-header"},he={class:"section-title"},me={class:"section-content"},ge={class:"dialog-section"},fe={class:"section-header"},ye={class:"section-title"},be={class:"section-content"},ke={class:"setting-item"},ve={class:"setting-label"},Ce={class:"setting-item"},we={class:"setting-label"},Fe={key:0,class:"setting-item slider-item"},Le={class:"setting-label"},Ue={class:"slider-wrapper"},$e={class:"slider-input-wrapper"},Se={key:1,class:"setting-item slider-item"},Te={class:"setting-label"},xe={class:"slider-wrapper"},_e={class:"slider-input-wrapper"},Ie={key:0,class:"dialog-section"},Me={class:"section-header"},Ae={class:"section-title"},Ee={class:"section-content"},De={class:"setting-item"},Re={class:"setting-label"},Be={class:"dialog-action"};function Pe(e,t,o,n,r,d){const c=Y.A,u=J.ll,p=J.MQ,h=(0,i.g2)("font-awesome-icon"),m=a.R7,g=K.P9,f=K.AV,y=G.WK,b=j.qi,k=O.B8,v=q.lq,C=s.S2,w=X.kZ;return(0,i.uX)(),(0,i.Wv)(w,{title:e.$t("uploadSettings.title"),modelValue:d.visible,"onUpdate:modelValue":t[12]||(t[12]=e=>d.visible=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[(0,i.Lk)("span",te,(0,l.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",oe,[(0,i.Lk)("div",ae,[(0,i.Lk)("span",se,(0,l.v_)(e.$t("uploadSettings.channelType")),1),(0,i.bF)(p,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"telegram",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"telegram",class:"channel-icon channel-brand-telegram"}),t[13]||(t[13]=(0,i.Lk)("span",null,"TG",-1))]),_:1}),(0,i.bF)(u,{label:"cfr2",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"cfr2",class:"channel-icon channel-brand-cfr2"}),t[14]||(t[14]=(0,i.Lk)("span",null,"R2",-1))]),_:1}),(0,i.bF)(u,{label:"s3",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"s3",class:"channel-icon channel-brand-s3"}),t[15]||(t[15]=(0,i.Lk)("span",null,"S3",-1))]),_:1}),(0,i.bF)(u,{label:"discord",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"discord",class:"channel-icon channel-brand-discord"}),t[16]||(t[16]=(0,i.Lk)("span",null,"DC",-1))]),_:1}),(0,i.bF)(u,{label:"huggingface",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"huggingface",class:"channel-icon channel-brand-huggingface"}),t[17]||(t[17]=(0,i.Lk)("span",null,"HF",-1))]),_:1}),(0,i.bF)(u,{label:"webdav",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"webdav",class:"channel-icon channel-brand-webdav"}),t[18]||(t[18]=(0,i.Lk)("span",null,"WD",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",ie,[(0,i.Lk)("span",le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(f,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(g,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",ne,[(0,i.Lk)("span",re,(0,l.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(y,{"model-value":o.uploadFolder,"onUpdate:modelValue":d.handleUploadFolderInput,placeholder:e.$t("uploadSettings.uploadDirectoryPlaceholder"),class:"setting-input"},null,8,["model-value","onUpdate:modelValue","placeholder"])]),(0,i.Lk)("div",de,[(0,i.Lk)("span",ce,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ue,[(0,i.Lk)("div",pe,[(0,i.Lk)("span",he,(0,l.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",me,[(0,i.bF)(p,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(u,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(u,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(u,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",ge,[(0,i.Lk)("div",fe,[(0,i.Lk)("span",ye,(0,l.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",be,[(0,i.Lk)("div",ke,[(0,i.Lk)("span",ve,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",Ce,[(0,i.Lk)("span",we,(0,l.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(b,{"model-value":o.customerCompress,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Fe,[(0,i.Lk)("span",Le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ue,[(0,i.bF)(k,{"model-value":o.compressBar,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",$e,[(0,i.bF)(v,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[19]||(t[19]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Se,[(0,i.Lk)("span",Te,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",xe,[(0,i.bF)(k,{"model-value":o.compressQuality,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",_e,[(0,i.bF)(v,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[20]||(t[20]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",Ie,[(0,i.Lk)("div",Me,[(0,i.Lk)("span",Ae,(0,l.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ee,[(0,i.Lk)("div",De,[(0,i.Lk)("span",Re,(0,l.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(b,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Be,[(0,i.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var We={name:"UploadSettingsDialog",components:{ChannelIcon:Y.A},methods:{handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const Ne=(0,z.A)(We,[["render",Pe]]);var ze=Ne,Ve=o(88559),He=(o(85970),o(813)),Qe=(o(34896),o(69655)),Xe=(o(2893),o(74253));o(79899);const qe={class:"upload-list-item"},Oe=["href"],je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Ge=["src"],Ke=["src"],Je={key:2,style:{width:"10vw","border-radius":"12px"}},Ye={class:"upload-list-item-content"},Ze={class:"upload-list-item-name-wrapper"},et={key:0,class:"upload-list-item-url"},tt={class:"upload-list-item-url-row"},ot={class:"upload-list-item-url-row"},at={key:1,class:"upload-list-item-progress"},st={class:"upload-list-item-action"};function it(e,t,o,a,s,n){const r=(0,i.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=Qe.ve,p=(0,i.g2)("Link"),h=He.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",qe,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",je,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ge),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,Ke)):((0,i.uX)(),(0,i.CE)("div",Je,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Oe),(0,i.Lk)("div",Ye,[(0,i.Lk)("div",Ze,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",et,[(0,i.Lk)("div",tt,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",ot,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",at,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",st,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var lt=o(57477);const nt=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],rt=["mp4","webm","ogg","mkv"];var dt={name:"UploadFileItem",components:{Link:lt.Link,Delete:lt.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return nt.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return rt.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const ct=(0,z.A)(dt,[["render",it],["__scopeId","data-v-3620a174"]]);var ut=ct,pt=o(62086),ht=(o(40670),o(88830),o(23597),o(70683)),mt=(o(95385),o(3261),o(47358));const gt={class:"upload-form"},ft={class:"upload-card-glow",ref:"uploadCardGlow"},yt=["innerHTML"],bt={key:0,class:"upload-card"},kt={class:"paste-card-actions"},vt={class:"upload-list-dashboard-action"},Ct={class:"modern-action-group"},wt={class:"modern-dropdown-item-content"},Ft={class:"modern-action-btn modern-action-btn-danger"};function Lt(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=He.tk,h=mt.j5,m=G.WK,g=s.S2,f=J.Zh,y=J.MQ,b=ht.Ik,k=(0,i.g2)("List"),v=(0,i.g2)("Checked"),C=(0,i.g2)("Failed"),w=Xe.$g,F=(0,i.g2)("font-awesome-icon"),L=a.R7,U=j.qi,$=pt.c6,S=pt.Iy,T=pt.dW,x=ut,_=Ve.kA;return(0,i.uX)(),(0,i.CE)("div",gt,[(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[0]||(t[0]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[1]||(t[1]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e))},[(0,i.Lk)("div",ft,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,l.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,l.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(u)]),_:1},8,["class"]),(0,i.Lk)("div",{class:(0,l.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,yt)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",bt,[(0,i.bF)(b,{class:(0,l.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[2]||(t[2]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:e.$t("upload.pasteUrlPlaceholder"),type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","placeholder","rows"]),(0,i.Lk)("div",kt,[(0,i.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,i.bF)(y,{modelValue:d.pasteUploadMethod,"onUpdate:modelValue":t[3]||(t[3]=e=>d.pasteUploadMethod=e),class:"paste-card-method-group",size:c.pasteCardMethodButtonSize},{default:(0,i.k6)(()=>[(0,i.bF)(f,{label:"save"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteSave")),1)]),_:1}),(0,i.bF)(f,{label:"external"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteExternal")),1)]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,l.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(_,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(w,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",vt,[(0,i.Lk)("div",Ct,[(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[4]||(t[4]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(F,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",wt,[(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadForm.autoRetry")),1),(0,i.bF)(U,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[6]||(t[6]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[5]||(t[5]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(F,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)($,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",Ft,[(0,i.bF)(F,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)(x,{key:e.name,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[7]||(t[7]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var Ut=o(457),$t=o(76334),St=o(60782);function Tt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function xt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function _t(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Tt(e.srcID,e.name,t);Object.assign(e,o)})}const It=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Mt=(e,t)=>e>>>t|e<<32-t;function At(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=Mt(o[u-15],7)^Mt(o[u-15],18)^o[u-15]>>>3,t=Mt(o[u-2],17)^Mt(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,s,i,l,n,r,d,c]=t;for(let u=0;u<64;u++){const e=Mt(n,6)^Mt(n,11)^Mt(n,25),t=n&r^~n&d,p=c+e+t+It[u]+o[u]>>>0,h=Mt(a,2)^Mt(a,13)^Mt(a,22),m=a&s^a&i^s&i,g=h+m>>>0;c=d,d=r,r=n,n=l+p>>>0,l=i,i=s,s=a,a=p+g>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+s>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+l>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function Et(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(s){a+=s.length;let i=0;if(o>0){const a=64-o,l=Math.min(a,s.length);t.set(s.subarray(0,l),o),o+=l,i=l,64===o&&(At(t,e),o=0)}while(i+64<=s.length)At(s.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),At(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(s/4294967296),!1),i.setUint32(60,s>>>0,!1),At(t,e);let l="";for(let t=0;t<8;t++)l+=e[t].toString(16).padStart(8,"0");return l}}}async function Dt(e){const t=Et(),o=4194304;let a=0;while(athis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){_t(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&_t(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,St.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),a=o?.uploadChannel||this.uploadChannel;if("external"===a)return void this.uploadSingleFile(e);if("huggingface"===a){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===a){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const s=20971520;e.file.size>s?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,a=t.uploadChannel||this.uploadChannel,s=this.autoRetry&&"external"!==a,i="external"===a?"default":this.uploadNameType,l=new AbortController;this.abortControllers.set(e.file.uid,l);const n=new FormData;if(n.append("file",e.file),"external"===a&&n.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Dt(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,Ut.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+s+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:l.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,a=new AbortController;this.abortControllers.set(e.file.uid,a);const s="discord"===o?9437184:16777216,i=e.file.size,l=e.file.type||"application/octet-stream",n=Math.ceil(i/s),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType;let u=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),u=await Dt(e.file),console.log("SHA256 computed:",u)}catch(p){console.error("Failed to compute SHA256:",p)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",l),t.append("totalChunks",n.toString());const h=await(0,Ut.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!h.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+h.data.message);const m=h.data.uploadId;console.log("分块上传初始化成功,uploadId:",m);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=m);const f=3,y=new Array(n).fill(0);let b=0,k=!1,v="",C=!1;const w=async t=>{if(k||C)return;const u=t*s,h=Math.min(u+s,i),g=e.file.slice(u,h),f=new FormData;f.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),f.append("chunkIndex",t.toString()),f.append("totalChunks",n.toString()),f.append("uploadId",m),f.append("originalFileName",e.file.name),f.append("originalFileType",l);let b=0;const w=3;while(b{if(k||C)return;const a=Math.round(o.loaded/o.total*100);y[t]=a;const s=Math.round(y.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:s,file:e.file})}})}catch(p){if("CanceledError"===p.name||"ERR_CANCELED"===p.code)return C=!0,void console.log("分块上传已取消:",e.file.name);if(b++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${b}/${w}):`,p),b>=w)throw k=!0,v=`分块 ${t+1}/${n} 上传失败: ${p.message}`,new Error(v);await new Promise(e=>setTimeout(e,2e3*b))}}},F=[];for(let e=0;e{while(bt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),p.response&&401!==p.response.status?(this.exceptionList.push(e),e.onError(p,e.file)):p.response||(this.exceptionList.push(e),e.onError(p,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Ut.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const a=o.uploadChannel||this.uploadChannel;if("external"!==a){const a=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+a;const s=Tt(a,t.name,this.rootUrl);Object.assign(o,s),o.srcID=a}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.$t("uploadForm.uploadSuccess",{name:this.truncateFilename(t.name)})}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(a){this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(xt(e,this.selectedUrlForm)),this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})):this.$message({type:"warning",message:this.$t("uploadForm.fileNotUploaded")})},beforeUpload(e){return new Promise(async(t,o)=>{let a=e;const s=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(s)try{const t=await this.convertImageToWebp(e);t&&(a=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,l=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)$t.compressAccurately(a,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const s=new File([t],a.name,{type:t.type});s.uid=e.uid;const i=this.uploadCount++,l=this.serverCompress&&s.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(s,l):setTimeout(()=>{n(s,l),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(l){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);0===e?n(a,t):setTimeout(()=>{n(a,t),this.uploadCount--},300*e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>xt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:this.$t("uploadForm.copyAllSuccess")})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:this.$t("uploadForm.fileListCleared")})):this.$message({type:"info",message:this.$t("uploadForm.fileListEmpty")})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:this.$t("uploadForm.successFilesCleared")})):this.$message({type:"info",message:this.$t("uploadForm.successFilesEmpty")})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,l=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:s,htmlURL:i,ubbURL:l,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&Ut.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(s){a=""}}""===a&&(o=t.exec(i),null!=o&&o[1]&&(a=decodeURIComponent(o[1])))}if(""===a){const t=new URL(e);a=t.pathname.split("/").pop()}if(""===a){const o=new URL(e);let s=o.pathname.split(".").pop();(!s||""===s||s.length>10)&&(s="bin"),a="PastedFile"+Date.now()+t+"."+s}const l=o.data,n=new File([l],a,{type:l.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:this.$t("uploadForm.urlRequestFailed")})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){this.exceptionList.length>0?(this.retryFailedFiles(this.exceptionList),this.exceptionList=[]):this.$message({type:"info",message:this.$t("uploadForm.noFailedFiles")})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?this.$t("uploadForm.autoRetryOn"):this.$t("uploadForm.autoRetryOff")}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e){e.forEach(e=>{const t=e.retryCount||0;tthis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):this.$message({type:"warning",message:this.$t("uploadForm.maxRetryReached",{name:e.name,max:this.maxRetryCount})})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Dt(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const a=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),s=btoa(String.fromCharCode(...a));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,Ut.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:s,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const l=i.data;if(console.log("Upload info:",l),l.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(l.needsLfs&&l.uploadAction){const{href:t,header:a}=l.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,l,o);else{console.log("Uploading to S3 (basic)...");const s=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!s.ok){const e=await s.text();throw new Error(`S3 upload failed: ${s.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,Ut.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:l.fullId,filePath:l.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:l.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(a){if("CanceledError"===a.name||"ERR_CANCELED"===a.code||"AbortError"===a.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",a),this.exceptionList.push(e),e.onError(a,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:s,header:i}=a,l=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${l}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,a=t*l,s=Math.min(a+l,e.file.size),n=e.file.slice(a,s);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(s,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const a=new Image,s=document.createElement("canvas"),i=s.getContext("2d");a.onload=()=>{s.width=a.width,s.height=a.height,i.drawImage(a,0,0),s.toBlob(s=>{if(s){const o=e.name,a=o.lastIndexOf("."),i=a>0?o.substring(0,a)+".webp":o+".webp",l=new File([s],i,{type:"image/webp"});l.uid=e.uid,t(l)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(a.src)},"image/webp",.92)},a.onerror=()=>{URL.revokeObjectURL(a.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},a.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),a=e.clientX-o.left,s=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=s+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Bt=(0,z.A)(Rt,[["render",Lt],["__scopeId","data-v-5afbc1b3"]]);var Pt=Bt,Wt=o(732),Nt=o(33892),zt=o(45130);const Vt={class:"directory-suggestion-input",ref:"wrapperRef"},Ht={class:"suggestion-dropdown"},Qt={class:"suggestion-list"},Xt=["title","onMousedown"];function qt(e,t,o,a,s,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",Vt,[(0,i.bF)(r,{ref:"inputRef",modelValue:n.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputValue=e),placeholder:o.placeholder,onFocus:n.handleFocus,onBlur:n.handleBlur,onInput:n.handleInput},null,8,["modelValue","placeholder","onFocus","onBlur","onInput"]),(0,i.bo)((0,i.Lk)("div",Ht,[(0,i.Lk)("ul",Qt,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,zt.D$)(t=>n.selectItem(e),["prevent"])},(0,l.v_)(e.value),41,Xt))),128))])],512),[[zt.aG,s.dropdownVisible&&s.suggestions.length>0]])],512)}var Ot={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,dropdownVisible:!1,isFocused:!1,suggestions:[]}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},watch:{modelValue(){this.isFocused&&this.refreshSuggestions()}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.ensureDirectoryTreeLoaded(),this.$emit("focus"),setTimeout(()=>{this.isFocused&&(this.refreshSuggestions(),this.dropdownVisible=!0)},500)},handleBlur(){this.isFocused=!1,this.dropdownVisible=!1,this.$emit("blur")},handleInput(e){this.$nextTick(()=>{this.refreshSuggestions(),this.isFocused&&(this.dropdownVisible=!0)})},selectItem(e){const t=e.value;this.inputValue=t,this.$emit("select",t);const o=this.normalizeDirectoryPath(t),a=this.directoryChildrenMap[o];a&&a.length>0?this.$nextTick(()=>{this.refreshSuggestions(),this.dropdownVisible=!0,this.$refs.inputRef?.focus()}):this.dropdownVisible=!1},refreshSuggestions(){this.suggestions=this.getDirectorySuggestions(this.modelValue||"")},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const a=this.normalizeDirectoryPath(e.path),s=Array.isArray(e.children)?e.children:[];t[a]=s.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),s.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Ut.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),a=o.split("/"),s=a[a.length-1]||"",i=a.slice(0,-1).filter(Boolean),l=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:s,parentPath:l}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),a=this.directoryChildrenMap[o]||[];if(!t)return a.slice(0,10).map(e=>({value:e.path}));const s=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(s)).slice(0,10).map(e=>({value:e.path}))}}};const jt=(0,z.A)(Ot,[["render",qt],["__scopeId","data-v-28b8eda7"]]);var Gt=jt,Kt=o(91543);const Jt={class:"container"},Yt={class:"upload-home"},Zt={class:"quick-toolbar-actions"},eo={class:"quick-toolbar-actions-inner"},to={class:"header"},oo={class:"title"},ao={class:"title-crayon-text","aria-hidden":"true"},so={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},io={class:"dialog-section"},lo={class:"section-header"},no={class:"section-title"},ro={class:"section-content"},co={class:"dialog-section"},uo={class:"section-header"},po={class:"section-title"},ho={class:"section-content"},mo={class:"setting-item"},go={class:"setting-label"},fo={key:0,class:"setting-item"},yo={class:"setting-label"},bo={class:"dialog-action"},ko=["innerHTML"],vo={class:"dialog-footer"};function Co(e,t,o,n,r,d){const c=Kt.A,u=(0,i.g2)("font-awesome-icon"),p=s.S2,h=pt.c6,m=pt.Iy,g=pt.dW,f=Gt,y=G.WK,b=Nt.A,k=a.R7,v=Wt.A,C=Pt,w=J.ll,F=J.MQ,L=j.qi,U=X.kZ,$=ze,S=Q.A,T=H;return(0,i.uX)(),(0,i.CE)("div",Jt,[(0,i.Lk)("div",Yt,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(g,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(f,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","placeholder","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(y,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","placeholder","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(p,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(k,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,i.bF)(g,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(h,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,i.Lk)("div",Zt,[(0,i.Lk)("div",eo,[(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,i.bF)(k,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(p,{class:(0,l.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,i.bF)(v,{useConfigLink:!0}),(0,i.Lk)("div",to,[(0,i.Lk)("h1",oo,[(0,i.Lk)("span",ao,(0,l.v_)(d.ownerName)+" ImgHub",1),(0,i.Lk)("a",so,(0,l.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub ",-1))])]),(0,i.bF)(C,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:e.$t("settings.linkFormatTitle"),modelValue:r.showUrlDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",io,[(0,i.Lk)("div",lo,[(0,i.Lk)("span",no,(0,l.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",ro,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[6]||(t[6]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",co,[(0,i.Lk)("div",uo,[(0,i.Lk)("span",po,(0,l.v_)(e.$t("settings.customLink")),1),(0,i.bF)(k,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ho,[(0,i.Lk)("div",mo,[(0,i.Lk)("span",go,(0,l.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",fo,[(0,i.Lk)("span",yo,(0,l.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[8]||(t[8]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",bo,[(0,i.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[11]||(t[11]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[12]||(t[12]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[13]||(t[13]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[14]||(t[14]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[15]||(t[15]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[16]||(t[16]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[17]||(t[17]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[18]||(t[18]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[19]||(t[19]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[20]||(t[20]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[21]||(t[21]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:e.$t("upload.announcementTitle"),modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",vo,[(0,i.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,ko)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var wo=o(46638),Fo=o(48903),Lo=o(90144),Uo=o(62388),$o={name:"UploadHome",mixins:[Fo.A],data(){return{selectedUrlForm:(0,Lo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,isQuickToolbarOpen:!1,isQuickToolbarPinned:!1,showAnnouncementDialog:!1,announcementContent:"",displayedAnnouncementRefreshAt:null,showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Uo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,St.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!0,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto",this.showAnnouncementIfNeeded()},components:{UploadForm:Pt,Footer:Q.A,ToggleDark:Kt.A,Logo:Wt.A,UploadHistory:H,UploadSettingsDialog:ze,DirectoryTreePicker:Nt.A,DirectorySuggestionInput:Gt},methods:{async fetchAvailableChannels(){try{const e=await Ut.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,a=this.availableChannels[this.uploadChannel]||[];t&&a.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&a.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,Uo.G)(e,{strict:t});return!!o.valid||(this.$message.error(o.error),!1)},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){Ut.A.post("/api/auth/logout",{authType:"user"},{withCredentials:!0}).finally(()=>{this.$store.commit("setUserLoggedIn",!1),this.$router.push("/login"),this.$message.success(this.$t("upload.logoutSuccess"))})},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleQuickToolbarMoreEnter(){this.isQuickToolbarOpen=!0},handleQuickToolbarLeave(){this.isQuickToolbarPinned||(this.isQuickToolbarOpen=!1)},toggleQuickToolbar(){this.isQuickToolbarPinned=!this.isQuickToolbarPinned,this.isQuickToolbarOpen=this.isQuickToolbarPinned},closeQuickToolbar(){this.isQuickToolbarPinned=!1,this.isQuickToolbarOpen=!1},handleQuickToolbarCommand(e){this.closeQuickToolbar(),"linkFormat"===e?this.openUrlDialog():"manage"===e?this.handleManage():"logout"===e&&this.handleLogout()},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){if("toggleTheme"===e)"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1));else if("toggleUploadMethod"===e)this.handleChangeUploadMethod();else if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},handleDesktopMenuCommand(e){if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?this.$t("theme.lightMode"):"light"===this.themeMode?this.$t("theme.darkMode"):this.$t("theme.autoMode")},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?this.openAnnouncement(e):this.$message.info(this.$t("upload.noAnnouncement"))},getAnnouncementRefreshAt(){const e=Number(this.userConfig?.announcementRefreshAt);return Number.isFinite(e)&&e>0?e:null},openAnnouncement(e){this.announcementContent=e,this.displayedAnnouncementRefreshAt=this.getAnnouncementRefreshAt(),this.showAnnouncementDialog=!0},showAnnouncementIfNeeded(){const e=this.userConfig?.announcement;if(!e)return;const t=this.getAnnouncementRefreshAt();if(t){const o=Number(localStorage.getItem("announcementAcknowledgedRefreshAt"));return void((!Number.isFinite(o)||t>o)&&this.openAnnouncement(e))}localStorage.getItem("announcementAcknowledgedAt")||this.openAnnouncement(e)},acknowledgeAnnouncement(){localStorage.setItem("announcementAcknowledgedAt",String(Date.now())),this.displayedAnnouncementRefreshAt&&localStorage.setItem("announcementAcknowledgedRefreshAt",String(this.displayedAnnouncementRefreshAt)),this.showAnnouncementDialog=!1},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const So=(0,z.A)($o,[["render",Co],["__scopeId","data-v-579106c0"]]);var To=So},50333:function(e,t,o){"use strict";o(85331),o(29092)},53676:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const s={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},l={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",(0,a.v6)(e.$attrs,{class:"channel-icon-wrapper"}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",s,[...t[0]||(t[0]=[(0,a.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...t[2]||(t[2]=[(0,a.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:d.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},d=o(71241);const c=(0,d.A)(r,[["render",n],["__scopeId","data-v-33933ada"]]);var u=c},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return s}});var a=o(46638);function s(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:a.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:a.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:a.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:a.Ay.global.t("validation.consecutiveSlashNotAllowed")};const s=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return s.test(e)?{valid:!1,error:a.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},67819:function(e,t,o){"use strict";o(85331)},70797:function(e,t,o){"use strict";o.d(t,{A:function(){return l}});o(44114);var a=o(25507),s=o(16915);let i=!1;async function l(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),s.A.push("/adminLogin").finally(()=>{i=!1})),o}},76334:function(e,t,o){e.exports=o(11393)},79899:function(e,t,o){"use strict";o(85331)},85970:function(e,t,o){"use strict";o(85331)},86975:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i={key:0,class:"page-footer"},l=["href"];function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return d.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,s.v_)(d.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,a.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,a.eW)(" for You! ",-1)),(0,a.Lk)("a",{href:d.footerLink,target:"_blank"},[(0,a.bF)(c,{icon:"paper-plane",class:"footer-link-icon"})],8,l)])]))}var r=o(60782),d={name:"Footer",computed:{...(0,r.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-08acbaa9"]]);var p=u},88830:function(e,t,o){"use strict";o(85331)},91543:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),s=o(45130),i=o(24232);const l={id:"themeMask"},n=["cx","cy","r"],r=["r"],d=["opacity"];function c(e,t,o,c,u,p){const h=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>p.handleToggleClick&&p.handleToggleClick(...e))},[(0,a.bF)(s.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[u.isAuto?((0,a.uX)(),(0,a.Wv)(h,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:u.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",l,[t[1]||(t[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:u.isDark?"50%":"100%",cy:u.isDark?"23%":"0%",r:u.isDark?"9":"5"},null,8,n)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:u.isDark?"9":"5",mask:"url(#themeMask)"},null,8,r),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:u.isDark?0:1},[...t[2]||(t[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,d)],2))]),_:1})])}var u={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},p=o(71241);const h=(0,p.A)(u,[["render",c],["__scopeId","data-v-66e6a1f0"]]);var m=h},95385:function(e,t,o){"use strict";o(85331)},96682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},96808:function(e,t,o){"use strict";o(85331),o(18785),o(67819),o(85970),o(19104)}}]); +//# sourceMappingURL=148.b1b1da05.js.map \ No newline at end of file diff --git a/frontend-dist/js/148.b1b1da05.js.gz b/frontend-dist/js/148.b1b1da05.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..cb69fbb0018c5901f8f218f1a2cdb4017b83a092 GIT binary patch literal 33624 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%0A*rhZ@|mwuM9Wx??YK1w@7%HbTnwJ5PG z)r+iLhuOuqWj}Ph8R0{J0l$p@K%sp_3+D);g&`F8qBW8tjFH$cY7|b;Es+kIM7y!T z6Ck{R=FPU-hVKlcZ+$^6$cFE@Wwxuk8u~S*n^`22z$+4>cG{M9tHLmXZCTY@mI8)e7-!ZR`bmx z?AAtbz>8IVu^zh+pzeQn>>*iIf4!Wq5T%g!0(1?!&^aJ;HGQ*^u|zvb{tMvcMm7HV4m&f`*k;{1dba` zu5Rc+-~k1_qx6%T)%^T$r^bA0sbsA+pl7q5&el}SFgse{`ITl_!qzW z{MB{z>hRU*)yr3}UtPVr`Pt83{lh=~htK}ar;}H|eDz84`Y0@kbr|pQ{kt6zc_xXTzp#B#TMx=PXV(?5rwh)oMLKB*EsYWhWQahvLjo zV240k&BXz1$n~b&T&}OL=hxSV^T`1O@uTh$t4Fi*`LZ7jV~sEzE(S*FpCS-OKePsh zb2Azx_03I^8>RFX5i3@GcTul4Lpmy)SWCQFXOXS^(KD(gPc-|nk)TV(L@AeD0yiG~h58!ja zxLcH=?SK8(NWwu%Np;sgxf`_8pQ>_&bZ}o*$V*zyqLU9%>~g)e2bS8Z%Xkp5JY7;O zN|0gPoB%(aZ_X}Hz;j2>%GLAgUA2T~VpFb8tIaqZ1;0srw8-DjU7DJtd)TGzd-SGW zMSrR<4}5;Pq~9HC8n^=8LAIFfb{ruP3ws)}zg!?xa(b~Smu==3KOzLOXcE69Hd#1$ z;}J=HXn1brD47Lt;$|z}iU7LW4gmUkl(hZ4CG2Bc==%B&s@^1F8k_nKm(}|Sr%XpU z|N7)|v2c%@;F_+-x3u3YcYS>zAZ4dR&~k}MngX=U?gLu5EvF}CSu~*KVsd$tSZme2 zmwX{Itv-6mpYK`nIunYIlKF7;FD6%W2J^W_?xw4A(*r$`|;MHJOl{5n}pUefPu z@-nV3$|)j3cjUp;%Y$ihnOp>UZ~?mlME&;hrxty{_|PpEjjo&TrL$^%;^zw=Ai<7O|}vs*4}R(+9pHm7rtZ%U}BbBe@`9LDouvY4`sa(~I@YXnz3-f0({`M|;m zFMuQgRh;-_U6hU~Ju4S)()DIlzik&Nm32o-eX4OsKBV7{$FX2pb&hqos8{3oUAa0; zQ=(Ex)=5uBNHo4rn39v#b!>gPOercu(xgS5`?RQ3=|8$k|IxjI_z7c-7(q&q>@*}n zcYQjm5Qd?->>Y^3rv)7+@EecgWxaHveKGLV1@j-rvc0vKFRN*J5szaE$=ZMLmwLWz zpSTC(CJP2e-$+A}pXcCeIF+{~FFnRd?>M)iDjb z;yPs73M!;WNB2;KdQKMQ6e;n(Yp5FH1iRLzA36`D!UNo1b?z4NIL_L%OG}@5&Q{MfmX41dx{=(}SGul-^f8E(SwrKdCyFaN91+K%3Lw?BM0oCl2Gy*d~^HPZ9FBsQ6iUMI4f>F>t51-$TX zqn5^l%o>iZ#&<+nO`IqnAKVeI^`;Z3bX&nRLCKt2@E3Tu6O#T7(xa0JJW&w-&dRAUs%$KJx{_u1nv}GsaM9fN_vA?X@d3o`F0Z&Wq<%HM)0RL63 AUH||9 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/148.b1b1da05.js.map b/frontend-dist/js/148.b1b1da05.js.map new file mode 100644 index 00000000..7e2ad724 --- /dev/null +++ b/frontend-dist/js/148.b1b1da05.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/148.b1b1da05.js","mappings":"sOACA,MAAMA,EAAa,CAAC,OAAQ,UACtBC,EAAa,CAAC,MAAO,OACpB,SAASC,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,OAAO,WAAc,QAAoB,IAAK,CAC5CC,KAAMD,EAASE,SACfC,OAAQN,EAAOM,OACfC,OAAO,QAAgBT,EAAKU,KAAOV,EAAKW,OACvC,EAAC,QAAoB,MAAO,CAC7BF,OAAO,QAAgBJ,EAASO,aAChCC,IAAKX,EAAOW,IACZC,IAAKT,EAASU,SACb,KAAM,GAAIjB,IAAc,GAAID,EACjC,C,eCZA,GACEmB,KAAM,OACNC,MAAO,CAELX,KAAM,CACJY,KAAMC,OACNC,QAAS,mDAGXZ,OAAQ,CACNU,KAAMC,OACNC,QAAS,SAETC,UAAWC,GAAS,CAAC,SAAU,QAAS,UAAW,QAAQC,SAASD,IAGtET,IAAK,CACHK,KAAMC,OACNC,QAAS,eAGXI,UAAW,CACTN,KAAMC,OACNC,QAAS,IAGXK,SAAU,CACRP,KAAMC,OACNC,QAAS,QAETC,UAAWC,GAAS,CAAC,QAAS,WAAY,WAAY,UAAUC,SAASD,IAG3EI,KAAM,CACJR,KAAMC,OACNC,QAAS,SAETC,UAAWC,GAAS,CAAC,QAAS,SAAU,SAASC,SAASD,IAG5DK,YAAa,CACXT,KAAMU,QACNR,SAAS,GAGXS,cAAe,CACbX,KAAMU,QACNR,SAAS,IAGbU,SAAU,KACL,QAAW,CAAC,eACf,OAAAf,GAEE,OAAOgB,KAAKP,WAAaO,KAAKC,YAAYjB,SAAW,EAAQ,MAC/D,EACA,QAAAR,GAEE,OAAIwB,KAAKF,eAAiBE,KAAKC,YAAYC,SAClCF,KAAKC,WAAWC,SAElBF,KAAKzB,IACd,EACA,WAAAM,GACE,MAAO,CACL,MAAQ,EACR,CAAC,SAASmB,KAAKN,aAAa,EAC5B,CAAC,SAASM,KAAKL,SAAS,EACxB,sBAAuBK,KAAKJ,YAEhC,I,WChEJ,MAAMO,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASnC,GAAQ,CAAC,YAAY,qBAEzF,O,oaCTC,SAASoC,EAAEC,GAAqDC,EAAOC,QAAQF,GAAiI,CAAhN,CAAkNL,EAAM,WAAW,OAAO,SAASI,GAAG,IAAIC,EAAE,CAAC,EAAE,SAASG,EAAEC,GAAG,GAAGJ,EAAEI,GAAG,OAAOJ,EAAEI,GAAGF,QAAQ,IAAIG,EAAEL,EAAEI,GAAG,CAACE,EAAEF,EAAEG,GAAE,EAAGL,QAAQ,CAAC,GAAG,OAAOH,EAAEK,GAAGI,KAAKH,EAAEH,QAAQG,EAAEA,EAAEH,QAAQC,GAAGE,EAAEE,GAAE,EAAGF,EAAEH,OAAO,CAAC,OAAOC,EAAEM,EAAEV,EAAEI,EAAEO,EAAEV,EAAEG,EAAEQ,EAAE,SAASZ,EAAEC,EAAEI,GAAGD,EAAEE,EAAEN,EAAEC,IAAIY,OAAOC,eAAed,EAAEC,EAAE,CAACc,YAAW,EAAGC,IAAIX,GAAG,EAAED,EAAEC,EAAE,SAASL,GAAG,oBAAoBiB,QAAQA,OAAOC,aAAaL,OAAOC,eAAed,EAAEiB,OAAOC,YAAY,CAAC/B,MAAM,WAAW0B,OAAOC,eAAed,EAAE,aAAa,CAACb,OAAM,GAAI,EAAEiB,EAAEJ,EAAE,SAASA,EAAEC,GAAG,GAAG,EAAEA,IAAID,EAAEI,EAAEJ,IAAI,EAAEC,EAAE,OAAOD,EAAE,GAAG,EAAEC,GAAG,iBAAiBD,GAAGA,GAAGA,EAAEmB,WAAW,OAAOnB,EAAE,IAAIK,EAAEQ,OAAOO,OAAO,MAAM,GAAGhB,EAAEC,EAAEA,GAAGQ,OAAOC,eAAeT,EAAE,UAAU,CAACU,YAAW,EAAG5B,MAAMa,IAAI,EAAEC,GAAG,iBAAiBD,EAAE,IAAI,IAAIM,KAAKN,EAAEI,EAAEQ,EAAEP,EAAEC,EAAE,SAASL,GAAG,OAAOD,EAAEC,EAAE,EAAEoB,KAAK,KAAKf,IAAI,OAAOD,CAAC,EAAED,EAAEA,EAAE,SAASJ,GAAG,IAAIC,EAAED,GAAGA,EAAEmB,WAAW,WAAW,OAAOnB,EAAEf,OAAO,EAAE,WAAW,OAAOe,CAAC,EAAE,OAAOI,EAAEQ,EAAEX,EAAE,IAAIA,GAAGA,CAAC,EAAEG,EAAEE,EAAE,SAASN,EAAEC,GAAG,OAAOY,OAAOS,UAAUC,eAAed,KAAKT,EAAEC,EAAE,EAAEG,EAAEoB,EAAE,GAAGpB,EAAEA,EAAEqB,EAAE,EAAE,CAAn5B,CAAq5B,CAAC,SAASzB,EAAEC,EAAEG,GAAG,aAAa,IAAIC,EAAE,SAASC,EAAEN,GAAG,MAAM,CAAC,YAAY,aAAa,aAAa0B,KAAKzB,GAAGA,IAAID,EAAE,CAACI,EAAEC,EAAEJ,GAAGG,EAAEQ,EAAEX,EAAE,kBAAmB,WAAW,OAAO0B,CAAC,GAAIvB,EAAEQ,EAAEX,EAAE,eAAgB,WAAW,OAAOU,CAAC,GAAIP,EAAEQ,EAAEX,EAAE,gBAAiB,WAAW,OAAOwB,CAAC,GAAIrB,EAAEQ,EAAEX,EAAE,iBAAkB,WAAW,OAAOO,CAAC,GAAIJ,EAAEQ,EAAEX,EAAE,eAAgB,WAAW,OAAOW,CAAC,GAAIR,EAAEQ,EAAEX,EAAE,gBAAiB,WAAW,OAAO2B,CAAC,GAAIxB,EAAEQ,EAAEX,EAAE,gBAAiB,WAAW,OAAO4B,CAAC,GAAIzB,EAAEQ,EAAEX,EAAE,YAAa,WAAW,OAAO6B,CAAC,GAAI1B,EAAEQ,EAAEX,EAAE,aAAc,WAAW,OAAOS,CAAC,GAAIN,EAAEQ,EAAEX,EAAE,WAAY,WAAW,OAAOuB,CAAC,GAAIpB,EAAEQ,EAAEX,EAAE,qBAAsB,WAAW,OAAO8B,CAAC,GAAI3B,EAAEQ,EAAEX,EAAE,aAAc,WAAW,OAAOI,CAAC,GAAI,SAASL,GAAGA,EAAEgC,IAAI,YAAYhC,EAAEiC,KAAK,aAAajC,EAAEkC,IAAI,WAAW,CAAnE,CAAqE7B,IAAIA,EAAE,CAAC,IAAI,IAAIE,EAAE,SAASP,EAAEC,EAAEG,EAAEC,GAAG,OAAO,IAAID,IAAIA,EAAE+B,UAAW,SAAS7B,EAAEC,GAAG,SAASoB,EAAE3B,GAAG,IAAIoC,EAAE/B,EAAEgC,KAAKrC,GAAG,CAAC,MAAMA,GAAGO,EAAEP,EAAE,CAAC,CAAC,SAASW,EAAEX,GAAG,IAAIoC,EAAE/B,EAAEiC,MAAMtC,GAAG,CAAC,MAAMA,GAAGO,EAAEP,EAAE,CAAC,CAAC,SAASoC,EAAEpC,GAAG,IAAIC,EAAED,EAAEuC,KAAKjC,EAAEN,EAAEb,QAAQc,EAAED,EAAEb,MAAMc,aAAaG,EAAEH,EAAE,IAAIG,EAAG,SAASJ,GAAGA,EAAEC,EAAE,IAAKuC,KAAKb,EAAEhB,EAAE,CAACyB,GAAG/B,EAAEA,EAAEoC,MAAMzC,EAAEC,GAAG,KAAKoC,OAAO,EAAG,EAAE,SAASV,EAAE3B,EAAEC,EAAE,IAAIG,EAAEC,EAAE4B,MAAM,OAAO1B,EAAEX,UAAK,OAAO,EAAQ,YAAY,OAAOU,EAAEF,KAAKA,EAAEC,EAAE4B,MAAMjC,EAAE0C,UAAUtC,EAAEH,EAAE,EAAG,CAAC,SAASU,EAAEX,EAAEC,EAAE,IAAIG,EAAEC,EAAE4B,MAAM,OAAO,IAAIE,QAAQ9B,GAAGL,EAAE2C,OAAO3C,GAAGK,EAAEL,GAAGI,EAAEH,GAAG,CAAC,IAAImC,EAAE,SAASpC,EAAEC,EAAEG,EAAEC,GAAG,OAAO,IAAID,IAAIA,EAAE+B,UAAW,SAAS7B,EAAEC,GAAG,SAASoB,EAAE3B,GAAG,IAAIoC,EAAE/B,EAAEgC,KAAKrC,GAAG,CAAC,MAAMA,GAAGO,EAAEP,EAAE,CAAC,CAAC,SAASW,EAAEX,GAAG,IAAIoC,EAAE/B,EAAEiC,MAAMtC,GAAG,CAAC,MAAMA,GAAGO,EAAEP,EAAE,CAAC,CAAC,SAASoC,EAAEpC,GAAG,IAAIC,EAAED,EAAEuC,KAAKjC,EAAEN,EAAEb,QAAQc,EAAED,EAAEb,MAAMc,aAAaG,EAAEH,EAAE,IAAIG,EAAG,SAASJ,GAAGA,EAAEC,EAAE,IAAKuC,KAAKb,EAAEhB,EAAE,CAACyB,GAAG/B,EAAEA,EAAEoC,MAAMzC,EAAEC,GAAG,KAAKoC,OAAO,EAAG,EAAE,SAASZ,EAAEzB,EAAEC,GAAG,OAAOmC,EAAExC,UAAK,OAAO,EAAQ,YAAY,MAAMQ,EAAEJ,EAAE4C,MAAM,KAAK,IAAIvC,EAAED,EAAE,GAAGyC,MAAM,WAAW,GAAG,MAAMtC,EAAEuC,KAAK1C,EAAE,IAAI,IAAIuB,EAAEpB,EAAEwC,OAAO,MAAMpC,EAAE,IAAIqC,WAAWrB,GAAG,KAAKA,KAAKhB,EAAEgB,GAAGpB,EAAE0C,WAAWtB,GAAG,OAAOrB,EAAEL,KAAKI,EAAEJ,GAAG,IAAIiD,KAAK,CAACvC,GAAG,CAAC5B,KAAKsB,GAAG,EAAG,CAAC,SAASG,EAAER,GAAG,OAAO,IAAImC,QAAQ,CAAClC,EAAEG,KAAK,MAAMC,EAAE,IAAI8C,MAAM9C,EAAE+C,OAAO,IAAInD,EAAEI,GAAGA,EAAEgD,QAAQ,IAAIjD,EAAE,IAAIkD,MAAM,yCAAyCjD,EAAE1B,IAAIqB,GAAG,CAAC,SAASY,EAAEZ,EAAEC,GAAG,MAAMG,EAAEmD,SAASC,cAAc,KAAKpD,EAAEjC,KAAKsF,OAAOC,IAAIC,gBAAgB3D,GAAGI,EAAEwD,SAAS3D,GAAG4D,KAAKC,MAAMC,SAAS,IAAIR,SAASS,KAAKC,YAAY7D,GAAG,MAAMC,EAAEkD,SAASW,YAAY,eAAe7D,EAAE8D,UAAU,SAAQ,GAAG,GAAI/D,EAAEgE,cAAc/D,GAAGkD,SAASS,KAAKK,YAAYjE,EAAE,CAAC,SAASwB,EAAE5B,GAAG,OAAO,IAAImC,QAAQlC,IAAI,MAAMG,EAAE,IAAIkE,WAAWlE,EAAEmE,UAAUvE,GAAGC,EAAED,EAAE3B,OAAOmG,QAAQpE,EAAEqE,cAAczE,IAAI,CAAC,IAAI0E,EAAE,SAAS1E,EAAEC,EAAEG,EAAEC,GAAG,OAAO,IAAID,IAAIA,EAAE+B,UAAW,SAAS7B,EAAEC,GAAG,SAASoB,EAAE3B,GAAG,IAAIoC,EAAE/B,EAAEgC,KAAKrC,GAAG,CAAC,MAAMA,GAAGO,EAAEP,EAAE,CAAC,CAAC,SAASW,EAAEX,GAAG,IAAIoC,EAAE/B,EAAEiC,MAAMtC,GAAG,CAAC,MAAMA,GAAGO,EAAEP,EAAE,CAAC,CAAC,SAASoC,EAAEpC,GAAG,IAAIC,EAAED,EAAEuC,KAAKjC,EAAEN,EAAEb,QAAQc,EAAED,EAAEb,MAAMc,aAAaG,EAAEH,EAAE,IAAIG,EAAG,SAASJ,GAAGA,EAAEC,EAAE,IAAKuC,KAAKb,EAAEhB,EAAE,CAACyB,GAAG/B,EAAEA,EAAEoC,MAAMzC,EAAEC,GAAG,KAAKoC,OAAO,EAAG,EAAE,SAASR,EAAE7B,EAAEC,EAAE,CAAC,GAAG,OAAOyE,EAAE9E,UAAK,OAAO,EAAQ,YAAY,MAAMQ,EAAES,OAAO8D,OAAO,CAAC,EAAE1E,GAAGI,EAAEkD,SAASC,cAAc,UAAUlD,EAAED,EAAEuE,WAAW,MAAM,IAAIrE,EAAEoB,EAAE,IAAI,MAAM3B,KAAKI,EAAES,OAAOS,UAAUC,eAAed,KAAKL,EAAEJ,KAAKI,EAAEJ,GAAG6E,OAAOzE,EAAEJ,KAAK,GAAGI,EAAE0E,MAAM,CAAC,MAAM7E,EAAEG,EAAE0E,MAAM,GAAG1E,EAAE0E,MAAM,GAAG1E,EAAE0E,MAAM,EAAEnD,EAAE3B,EAAE+E,MAAM9E,EAAEM,EAAEP,EAAEgF,OAAO/E,CAAC,MAAM0B,EAAEvB,EAAE2E,OAAO3E,EAAE4E,OAAOhF,EAAE+E,MAAM/E,EAAEgF,QAAQhF,EAAE+E,MAAMxE,EAAEH,EAAE4E,QAAQ5E,EAAE2E,MAAM/E,EAAEgF,OAAOhF,EAAE+E,OAAO/E,EAAEgF,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,GAAGtD,KAAK1B,GAAGA,IAAII,EAAE6E,cAAc5E,EAAE2E,OAAOrD,EAAEtB,EAAE0E,MAAMxE,IAAIF,EAAE2E,OAAOzE,EAAEF,EAAE0E,MAAMpD,GAAGvB,EAAE6E,aAAa,KAAK,EAAE3E,EAAE4E,OAAO,IAAIC,KAAKC,GAAG,KAAK9E,EAAE+E,UAAUrF,GAAGK,EAAE0E,OAAO1E,EAAE2E,OAAO3E,EAAE0E,MAAM1E,EAAE2E,QAAQ,MAAM,KAAK,EAAE1E,EAAE4E,OAAO,GAAGC,KAAKC,GAAG,KAAK9E,EAAE+E,UAAUrF,EAAE,GAAGK,EAAE0E,MAAM1E,EAAE2E,OAAO3E,EAAE0E,OAAO,MAAM,KAAK,EAAEzE,EAAE4E,OAAO,IAAIC,KAAKC,GAAG,KAAK9E,EAAE+E,UAAUrF,GAAGK,EAAE2E,OAAO,EAAE3E,EAAE2E,OAAO3E,EAAE0E,OAAO,MAAM,KAAK,EAAEzE,EAAEgF,UAAUjF,EAAE0E,MAAM,GAAGzE,EAAEwE,OAAO,EAAE,GAAGxE,EAAE+E,UAAUrF,EAAE,EAAE,EAAEK,EAAE0E,MAAM1E,EAAE2E,QAAQ,MAAM,KAAK,EAAE1E,EAAEgF,UAAUjF,EAAE0E,MAAM,GAAGzE,EAAEwE,OAAO,EAAE,GAAGxE,EAAE4E,OAAO,IAAIC,KAAKC,GAAG,KAAK9E,EAAE+E,UAAUrF,GAAGK,EAAE0E,OAAO1E,EAAE2E,OAAO3E,EAAE0E,MAAM1E,EAAE2E,QAAQ,MAAM,KAAK,EAAE1E,EAAEgF,UAAUjF,EAAE0E,MAAM,GAAGzE,EAAEwE,OAAO,EAAE,GAAGxE,EAAE4E,OAAO,GAAGC,KAAKC,GAAG,KAAK9E,EAAE+E,UAAUrF,EAAE,GAAGK,EAAE0E,MAAM1E,EAAE2E,OAAO3E,EAAE0E,OAAO,MAAM,KAAK,EAAEzE,EAAEgF,UAAUjF,EAAE0E,MAAM,GAAGzE,EAAEwE,OAAO,EAAE,GAAGxE,EAAE4E,OAAO,IAAIC,KAAKC,GAAG,KAAK9E,EAAE+E,UAAUrF,GAAGK,EAAE2E,OAAO,EAAE3E,EAAE2E,OAAO3E,EAAE0E,OAAO,MAAM,QAAQzE,EAAE+E,UAAUrF,EAAE,EAAE,EAAEK,EAAE0E,MAAM1E,EAAE2E,QAAQ,OAAO3E,CAAC,EAAG,CAAC,SAASyB,EAAE9B,GAAG,OAAOuF,MAAMvF,GAAGwC,KAAKxC,GAAGA,EAAEwF,OAAO,CAAC,SAAS9E,EAAEV,GAAG,OAAO,IAAImC,QAAQ,CAAClC,EAAEG,KAAK,MAAMC,EAAE,IAAI8C,MAAM9C,EAAE+C,OAAO,IAAInD,EAAEI,GAAGA,EAAEgD,QAAQ,IAAIjD,EAAE,IAAIkD,MAAM,mEAAmEjD,EAAE1B,IAAIqB,GAAG,CAAC,IAAIyF,EAAE,SAASzF,EAAEC,EAAEG,EAAEC,GAAG,OAAO,IAAID,IAAIA,EAAE+B,UAAW,SAAS7B,EAAEC,GAAG,SAASoB,EAAE3B,GAAG,IAAIoC,EAAE/B,EAAEgC,KAAKrC,GAAG,CAAC,MAAMA,GAAGO,EAAEP,EAAE,CAAC,CAAC,SAASW,EAAEX,GAAG,IAAIoC,EAAE/B,EAAEiC,MAAMtC,GAAG,CAAC,MAAMA,GAAGO,EAAEP,EAAE,CAAC,CAAC,SAASoC,EAAEpC,GAAG,IAAIC,EAAED,EAAEuC,KAAKjC,EAAEN,EAAEb,QAAQc,EAAED,EAAEb,MAAMc,aAAaG,EAAEH,EAAE,IAAIG,EAAG,SAASJ,GAAGA,EAAEC,EAAE,IAAKuC,KAAKb,EAAEhB,EAAE,CAACyB,GAAG/B,EAAEA,EAAEoC,MAAMzC,EAAEC,GAAG,KAAKoC,OAAO,EAAG,EAAE,SAASb,EAAExB,EAAEC,EAAE,CAAC,GAAG,OAAOwF,EAAE7F,UAAK,OAAO,EAAQ,YAAY,KAAKI,aAAakD,MAAM,MAAM,IAAII,MAAM,iEAAiE,GAAG,iBAAiBrD,IAAIA,EAAEY,OAAO8D,OAAO,CAACe,QAAQzF,KAAKA,EAAEyF,QAAQb,OAAO5E,EAAEyF,SAASb,OAAOc,MAAM1F,EAAEyF,SAAS,OAAO1F,EAAE,MAAMI,QAAQwB,EAAE5B,GAAG,IAAIO,EAAEH,EAAEwC,MAAM,KAAK,GAAGC,MAAM,WAAW,GAAGlC,EAAEN,EAAE4B,KAAK3B,EAAEL,EAAElB,QAAQ4B,EAAEV,EAAElB,KAAKwB,EAAEN,EAAElB,MAAM,MAAMqD,QAAQ5B,EAAEJ,GAAGQ,QAAQiB,EAAEO,EAAEvB,OAAO8D,OAAO,CAAC,EAAE1E,IAAIyE,QAAQ/C,EAAEf,EAAEX,EAAEyF,QAAQ/E,GAAGmB,QAAQL,EAAEiD,EAAEnE,GAAG,OAAOuB,EAAEvC,KAAKS,EAAET,KAAKS,EAAE8B,CAAC,EAAG,CAAC,SAASC,EAAE/B,EAAEC,EAAE,CAAC,GAAG,OAAOwF,EAAE7F,UAAK,OAAO,EAAQ,YAAY,KAAKI,aAAakD,MAAM,MAAM,IAAII,MAAM,2EAA2E,GAAG,iBAAiBrD,IAAIA,EAAEY,OAAO8D,OAAO,CAACpF,KAAKU,KAAKA,EAAEV,KAAKsF,OAAO5E,EAAEV,MAAMsF,OAAOc,MAAM1F,EAAEV,MAAM,OAAOS,EAAE,GAAG,KAAKC,EAAEV,KAAKS,EAAET,KAAK,OAAOS,EAAEC,EAAE2F,SAASf,OAAO5E,EAAE2F,YAAY3F,EAAE2F,UAAU3F,EAAE2F,SAAS,IAAI3F,EAAE2F,SAAS,OAAO3F,EAAE2F,SAAS,KAAK,MAAMxF,EAAEH,EAAEV,MAAM,EAAEU,EAAE2F,UAAU,KAAKrF,EAAE,KAAKN,EAAEV,KAAKoB,EAAEV,EAAEV,KAAKU,EAAE2F,SAAS,KAAKxD,QAAQR,EAAE5B,GAAG,IAAIY,EAAEwB,EAAEQ,MAAM,KAAK,GAAGC,MAAM,WAAW,GAAG6B,EAAErE,EAAE4B,KAAK3B,EAAEL,EAAElB,QAAQ2F,EAAEzE,EAAElB,KAAK6B,EAAEX,EAAElB,MAAM,MAAM+C,QAAQtB,EAAE4B,GAAG1B,QAAQmB,EAAEC,EAAEjB,OAAO8D,OAAO,CAAC,EAAE1E,IAAI,IAAIwF,EAAEjE,EAAE,GAAG,MAAMO,EAAE,CAAC,KAAK,MAAM,IAAI,IAAI/B,EAAE,EAAEA,GAAG,EAAEA,IAAI,CAACyF,QAAQ9D,EAAEjB,EAAEc,EAAEkD,GAAG,MAAMzE,EAAE,IAAIwF,EAAE1C,OAAO,GAAG,IAAI/C,EAAE,EAAEI,EAAEH,GAAGU,EAAEV,KAAKwF,EAAE,CAACA,KAAK1D,GAAG8D,OAAO7F,GAAGA,GAAG8F,KAAK,CAAC9F,EAAEC,IAAIkF,KAAKY,IAAI,IAAI/F,EAAE+C,OAAOxC,GAAG4E,KAAKY,IAAI,IAAI9F,EAAE8C,OAAOxC,IAAI,IAAI,KAAK,CAAC,GAAGH,EAAEH,EAAE8B,EAAE,GAAG0D,EAAEjE,GAAG2D,KAAKa,IAAI,GAAGhG,EAAE,OAAO,CAAC,KAAKW,EAAEV,GAAG,MAAM8B,EAAE,GAAG0D,EAAEjE,GAAG2D,KAAKa,IAAI,GAAGhG,EAAE,EAAE,CAAC,CAAC,MAAMiG,QAAQxE,EAAEgE,EAAE7E,GAAG,OAAOqF,EAAE1G,KAAKS,EAAET,KAAKS,EAAEiG,CAAC,EAAG,CAAC,GAAG,E,olBCCx3N,MAAMvI,EAAa,CACjBY,MAAO,yBAEHX,EAAa,CACjBW,MAAO,kBAEH4H,EAAa,CACjBC,IAAK,EACL7H,MAAO,eAEH8H,EAAa,CACjB9H,MAAO,cAEH+H,EAAa,CACjB/H,MAAO,cAEHgI,EAAa,CACjBhI,MAAO,kBAEHiI,EAAa,CACjBJ,IAAK,EACL7H,MAAO,eAEHkI,EAAa,CACjBlI,MAAO,cAEHmI,EAAa,CACjBnI,MAAO,cAEF,SAASV,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMwI,GAA+B,QAAkB,qBACjDC,EAAuB,KACvBC,EAAqB,KACrBC,EAAwB,KACxBC,EAAuB,KACvBC,EAAqB,IAC3B,OAAO,WAAc,QAAoB,MAAOrJ,EAAY,CAACQ,EAAS8I,YAAa,WAAc,QAAaH,EAAuB,CACnIV,IAAK,EACLc,QAAShJ,EAAMiJ,eACf,mBAAoBpJ,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAMiJ,eAAiBC,GAC/EC,UAAW,eACXrC,MAAO,IACPsC,QAAS,QACT,eAAgB,yBAChB,cAAc,EACd,aAAc,EACd,aAAc,GACdC,WAAY,kBACX,CACDC,WAAW,QAAS,IAAM,EAAC,QAAoB,OAAQ,CACrDjJ,MAAO,0BACPkJ,QAAS1J,EAAO,KAAOA,EAAO,IAAK,QAAe,OAAU,CAAC,WAC5D,EAAC,QAAYD,EAAK4J,OAAQ,UAAW,CAAC,OAAGC,GAAW,OACvDzI,SAAS,QAAS,IAAM,EAAC,UAAiB,WAAc,QAAoB,MAAOtB,EAAY,CAACM,EAAM0J,QAAS,WAAc,QAAoB,MAAOzB,EAAY,EAAC,QAAaQ,EAA8B,CAC9MkB,KAAM,qBACNtJ,MAAO,gBACL,QAAoB,OAAQ8H,GAAY,QAAiBnI,EAAM0J,OAAQ,IAAI,QAAahB,EAAsB,CAChH5H,KAAM,UACNQ,KAAM,QACNiI,QAAStJ,EAAS2J,oBACjB,CACD5I,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,wBAAyB,KAC5FC,EAAG,GACF,EAAG,CAAC,iBAAkB,WAAc,QAAanB,EAAoB,CACtET,IAAK,EACL6B,IAAK,UACLC,KAAMhK,EAAMiK,SACZpJ,MAAOb,EAAMkK,UACb,WAAY,OACZ,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAoBpK,EAAOqK,iBAC3B9J,MAAO,iBACP+J,YAAanK,EAASoK,iBACrB,CACDrJ,SAAS,QAAS,EAChBsJ,OACAN,UACI,EAAC,QAAoB,OAAQ,CACjC3J,OAAO,QAAgB,CAAC,YAAa,CACnC,aAAc2J,EAAKO,OAASzK,EAAOqK,qBAEpC,EAAC,QAAa1B,EAA8B,CAC7CkB,KAAMW,EAAKE,SAAW,cAAgB,SACtCnK,MAAO,eACN,KAAM,EAAG,CAAC,UAAU,QAAoB,OAAQ+H,GAAY,QAAiB4B,EAAKpJ,MAAO,IAAK,KACjGkJ,EAAG,GACF,EAAG,CAAC,OAAQ,QAAS,mBAAoB,oBAAqB,CAAC,CAAChB,EAAoB9I,EAAMyK,aAC7FX,EAAG,GACF,EAAG,CAAC,eAAgB,WAAc,QAAoB,KAAW,CAClE5B,IAAK,GACJ,EAAC,QAAoB,OAAQ,CAC9B7H,MAAO,yBACPkJ,QAAS1J,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAAS0K,YAAc1K,EAAS0K,cAAcD,KAC7F,EAAC,QAAY9K,EAAK4J,OAAQ,UAAW,CAAC,OAAGC,GAAW,MAAS,QAAaZ,EAAsB,CACjG+B,WAAY5K,EAAM6K,cAClB,sBAAuBhL,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAM6K,cAAgB3B,GACjF4B,UAAW,MACXxJ,KAAM,MACN,cAAc,EACd,eAAe,EACf,UAAW,IACXyJ,MAAOnL,EAAKiK,GAAG,iCACfxJ,MAAO,yBACN,CACDW,SAAS,QAAS,IAAM,EAAC,UAAiB,WAAc,QAAoB,MAAOqH,EAAY,CAACrI,EAAM0J,QAAS,WAAc,QAAoB,MAAOpB,EAAY,EAAC,QAAaG,EAA8B,CAC9MkB,KAAM,qBACNtJ,MAAO,gBACL,QAAoB,OAAQkI,GAAY,QAAiBvI,EAAM0J,OAAQ,IAAI,QAAahB,EAAsB,CAChH5H,KAAM,UACNQ,KAAM,QACNiI,QAAStJ,EAAS2J,oBACjB,CACD5I,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,wBAAyB,KAC5FC,EAAG,GACF,EAAG,CAAC,iBAAkB,WAAc,QAAanB,EAAoB,CACtET,IAAK,EACL6B,IAAK,gBACLC,KAAMhK,EAAMiK,SACZpJ,MAAOb,EAAMkK,UACb,WAAY,OACZ,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAoBpK,EAAOqK,iBAC3B9J,MAAO,6BACP+J,YAAanK,EAASoK,iBACrB,CACDrJ,SAAS,QAAS,EAChBsJ,OACAN,UACI,EAAC,QAAoB,OAAQ,CACjC3J,OAAO,QAAgB,CAAC,YAAa,CACnC,aAAc2J,EAAKO,OAASzK,EAAOqK,qBAEpC,EAAC,QAAa1B,EAA8B,CAC7CkB,KAAMW,EAAKE,SAAW,cAAgB,SACtCnK,MAAO,eACN,KAAM,EAAG,CAAC,UAAU,QAAoB,OAAQmI,GAAY,QAAiBwB,EAAKpJ,MAAO,IAAK,KACjGkJ,EAAG,GACF,EAAG,CAAC,OAAQ,QAAS,mBAAoB,oBAAqB,CAAC,CAAChB,EAAoB9I,EAAMyK,aAC7FX,EAAG,GACF,EAAG,CAAC,aAAc,WAAY,MACnC,C,wBC/IA,GACElJ,KAAM,sBACNC,MAAO,CACLsJ,iBAAkB,CAChBrJ,KAAMC,OACNC,QAAS,IAEXgK,OAAQ,CACNlK,KAAMC,OACNC,QAAS,SACTC,UAAWC,GAAS,CAAC,SAAU,SAASC,SAASD,KAGrD,IAAA8I,GACE,MAAO,CACLf,gBAAgB,EAChB4B,eAAe,EACfZ,SAAU,GACVQ,SAAS,EACTf,MAAO,GACPQ,UAAW,CACTe,SAAU,WACVC,MAAO,QAETC,YAAa3F,OAAO4F,WAExB,EACA1J,SAAU,CACR,SAAAqH,GACE,OAAOpH,KAAKwJ,aAAe,GAC7B,GAEFE,MAAO,CACL,cAAApC,CAAeqC,GACTA,EACF3J,KAAKiI,qBAGL2B,WAAW,KACT,IAAK5J,KAAKsH,gBAAkBtH,KAAK6J,MAAMC,QAAS,CAC9C,MAAMC,EAAQ/J,KAAK6J,MAAMC,QAAQC,MACjC,IAAK,MAAMxD,KAAOwD,EAAMC,SACtBD,EAAMC,SAASzD,GAAKsC,UAAW,CAEnC,GACC,IAEP,EACA,aAAAK,CAAcS,GACRA,EACF3J,KAAKiI,qBAGL2B,WAAW,KACT,IAAK5J,KAAKkJ,eAAiBlJ,KAAK6J,MAAMI,cAAe,CACnD,MAAMF,EAAQ/J,KAAK6J,MAAMI,cAAcF,MACvC,IAAK,MAAMxD,KAAOwD,EAAMC,SACtBD,EAAMC,SAASzD,GAAKsC,UAAW,CAEnC,GACC,IAEP,EACA,gBAAAL,CAAiBmB,GACf3J,KAAKkK,UAAU,KACTlK,KAAK6J,MAAMC,SAAWH,GACxB3J,KAAK6J,MAAMC,QAAQK,cAAcR,GAE/B3J,KAAK6J,MAAMI,eAAiBN,GAC9B3J,KAAK6J,MAAMI,cAAcE,cAAcR,IAG7C,GAEF,OAAAS,GACEvG,OAAOwG,iBAAiB,SAAUrK,KAAKsK,aACzC,EACA,aAAAC,GACE1G,OAAO2G,oBAAoB,SAAUxK,KAAKsK,aAC5C,EACAG,QAAS,CACP,YAAAH,GACEtK,KAAKwJ,YAAc3F,OAAO4F,UAC5B,EACA,UAAAT,GACEhJ,KAAKkJ,eAAgB,CACvB,EACA,wBAAMjB,GACJjI,KAAK8I,SAAU,EACf9I,KAAK+H,MAAQ,GACb,IACE,IAAIM,EACJ,GAAoB,UAAhBrI,KAAKqJ,OAAoB,CAC3B,MAAMqB,QAAiB,EAAAC,EAAA,GAAc,qBAAsB,CACzDC,OAAQ,QAEV,IAAKF,EAASG,GAMZ,YALwB,MAApBH,EAASI,OACX9K,KAAK+H,MAAQ/H,KAAKkI,GAAG,4BAErBlI,KAAK+H,MAAQ/H,KAAKkI,GAAG,8BAIzBG,QAAaqC,EAASK,MACxB,KAAO,CACL,MAAML,QAAiBM,EAAA,EAAM5J,IAAI,qBAAsB,CACrD6J,cAAc,IAEhB5C,EAAOqC,EAASrC,IAClB,CACIA,EAAK6C,KACPlL,KAAKsI,SAAW,CAACD,EAAK6C,MAEtBlL,KAAKsI,SAAW,EAEpB,CAAE,MAAO6C,GACPC,QAAQrD,MAAM,kCAAmCoD,GACpB,MAAzBA,EAAIT,UAAUI,OAChB9K,KAAK+H,MAAQ/H,KAAKkI,GAAG,4BAErBlI,KAAK+H,MAAQ/H,KAAKkI,GAAG,2BAEzB,CAAE,QACAlI,KAAK8I,SAAU,CACjB,CACF,EACA,eAAAJ,CAAgBL,GACd,IAAIO,EAAOP,EAAKO,KACZA,IAASA,EAAKyC,WAAW,KAC3BzC,EAAO,IAAMA,EACHA,IACVA,EAAO,KAET5I,KAAKsL,MAAM,SAAU1C,GACrB5I,KAAKsH,gBAAiB,EACtBtH,KAAKkJ,eAAgB,CACvB,I,WCnIJ,MAAM/I,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASnC,GAAQ,CAAC,YAAY,qBAEzF,O,iUCHA,KACEqK,IAAAA,GACE,MAAO,CACLkD,mBAAoB,EACpBC,qBAAsB,EACtBC,mBAAoB,KAEpBC,qBAAsB,KAE1B,EACA3L,SAAU,KACL4L,EAAAA,EAAAA,IAAW,CAAC,aAAc,iBAAkB,gBAC/CC,UAAAA,GACE,OAAO5L,KAAKC,YAAY2L,YAAc,GACxC,EACAC,SAAAA,GACE,OAAO7L,KAAKC,YAAY4L,WAAa,CACvC,EAEAC,wBAAAA,GACE,MAAO,8JAIT,EAEAC,sBAAAA,GACE,MAAO,4kCAkCT,GAGFrC,MAAO,CAELsC,WAAAA,CAAYrC,EAAQsC,GAEdtC,IAAWsC,GAAUjM,KAAK0L,sBAC5B1L,KAAKkK,UAAU,KACblK,KAAKkM,sBACHlM,KAAK0L,qBAAqBS,UAC1BnM,KAAK0L,qBAAqBU,kBAC1BpM,KAAK0L,qBAAqBW,qBAC1BrM,KAAK0L,qBAAqBY,qBAIlC,GAGFlC,OAAAA,GAEEpK,KAAKuM,wBACP,EAEAhC,aAAAA,GAEMvK,KAAKyL,oBACPe,cAAcxM,KAAKyL,oBAGrBzL,KAAKyM,uBAAsB,GAE3BzM,KAAK0M,wBACP,EAEAjC,QAAS,CAIP8B,sBAAAA,GACE,MAAMI,EAAU,4BAChB,IAAKhJ,SAASiJ,eAAeD,GAAU,CACrC,MAAME,EAAQlJ,SAASC,cAAc,SACrCiJ,EAAMC,GAAKH,EACXE,EAAME,YAAc/M,KAAK+L,uBACzBpI,SAASqJ,KAAK3I,YAAYwI,EAC5B,CACF,EAKAH,sBAAAA,GACE,MAAMC,EAAU,4BACVM,EAAgBtJ,SAASiJ,eAAeD,GAC1CM,GACFA,EAAcC,QAElB,EAMAC,wBAAAA,CAAyBC,GACvB,IAAKA,EAEH,YADAhC,QAAQiC,KAAK,cAKf,GAAI1J,SAASiJ,eAAe,QAAUjJ,SAASiJ,eAAe,OAC5D,OAIF,MAAMU,EAAM3J,SAASC,cAAc,OACnC0J,EAAIR,GAAK,MACTQ,EAAIC,UAAY,oBAChBD,EAAIxO,IAAM,mBAGV,MAAM0O,EAAM7J,SAASC,cAAc,OACnC4J,EAAIV,GAAK,MACTU,EAAID,UAAY,oBAChBC,EAAI1O,IAAM,mBAGVsO,EAAUK,aAAaH,EAAKF,EAAUM,YACtCN,EAAUK,aAAaD,EAAKJ,EAAUM,WACxC,EAQAC,oBAAAA,CAAqBxB,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAE/G,IAA0C,IAAtCtM,KAAKC,YAAY2N,iBAEnB,YADA5N,KAAKyM,uBAAsB,GAK7BzM,KAAK0L,qBAAuB,CAC1BS,YACAC,oBACAC,uBACAC,sBAIF,MAAMc,EAAYzJ,SAASkK,cAAczB,GACzCpM,KAAK8N,2BAA2BV,GAE5Bd,KACEc,GAAezJ,SAASiJ,eAAe,QAAWjJ,SAASiJ,eAAe,QAC5E5M,KAAKmN,yBAAyBC,IAIlC,MAAME,EAAM3J,SAASiJ,eAAe,OAC9BY,EAAM7J,SAASiJ,eAAe,OAEpC,IAAKU,IAAQE,EAEX,YADApC,QAAQiC,KAAK,4DAIf,MAAMU,EAAmB/N,KAAKC,aAAakM,GAElB,SAArB4B,EACF/N,KAAKgO,mBAAmBV,EAAKE,EAAKpB,GACzB6B,MAAMC,QAAQH,IAAqBA,EAAiB5K,OAAS,EACtEnD,KAAKmO,6BAA6Bb,EAAKE,EAAKO,EAAkB3B,GACrD6B,MAAMC,QAAQH,IAAiD,IAA5BA,EAAiB5K,OAC7DnD,KAAKoO,2BAA2Bd,EAAKS,EAAiB,GAAI3B,GACjDC,GACTrM,KAAKqO,sBAAsBf,EAAKlB,EAEpC,EAKA4B,kBAAAA,CAAmBV,EAAKE,EAAKpB,GAC3BpM,KAAKsO,OAAOC,SAAS,uBAAuB3L,KAAK,KACZ,IAA/B5C,KAAKwO,eAAerL,SAExBnD,KAAKyO,oBAAoBnB,EAAKtN,KAAKwO,eAAexO,KAAKuL,qBAAqBmD,IAAKtC,GAAmB,GAEpGpM,KAAKyL,mBAAqBkD,YAAY,KACpC3O,KAAK4O,oBAAoBtB,EAAKE,IAC7BxN,KAAK4L,cAEZ,EAKAuC,4BAAAA,CAA6Bb,EAAKE,EAAKqB,EAAYzC,GACjDpM,KAAKyO,oBAAoBnB,EAAKuB,EAAW7O,KAAKwL,sBAAuBY,GAAmB,GAExFpM,KAAKyL,mBAAqBkD,YAAY,KACpC3O,KAAK8O,sBAAsBxB,EAAKE,EAAKqB,IACpC7O,KAAK4L,WACV,EAKAwC,0BAAAA,CAA2Bd,EAAKyB,EAAc3C,GAC5CpM,KAAKyO,oBAAoBnB,EAAKyB,EAAc3C,EAC9C,EAKAiC,qBAAAA,CAAsBf,EAAKlB,GAEzB,MAAM4C,EAAShP,KAAKgM,YACdiD,EACFC,EADiBF,EACT,MACA,MAEZhP,KAAKyO,oBAAoBnB,EAAK2B,EAAc7C,EAC9C,EAKAqC,mBAAAA,CAAoBU,EAAYC,EAAUhD,EAAmBiD,GAAa,GAExEF,EAAWtC,MAAMyC,QAAU,EAC3BH,EAAWtC,MAAM0C,QAAU,EAC3BvP,KAAKwP,wBAAwBL,EAAYE,GACzC,MAAMjC,EAAYzJ,SAASkK,cAAczB,GACzCpM,KAAK8N,2BAA2BV,GAEhC,MAAMqC,EAAYA,KAChBC,sBAAsB,KACpBA,sBAAsB,KACpBP,EAAWtC,MAAM0C,QAAUvP,KAAK6L,UAC5BwD,IACFF,EAAWtC,MAAM8C,UAAY,qBAM/BC,EAAU,IAAIrM,MACpBqM,EAAQpM,OAAS,KACf2L,EAAWpQ,IAAMqQ,EACjBK,KAEFG,EAAQnM,QAAU,KAChB0L,EAAWpQ,IAAMqQ,EACjBK,KAEFG,EAAQ7Q,IAAMqQ,CAChB,EAEAI,uBAAAA,CAAwBL,EAAYE,GAAa,GAC/C,IAAKF,EAAY,OAEjB,MAAMU,EAAetK,KAAKuK,IAAI9P,KAAK4L,WAAa,KAAM,MACtDuD,EAAWtC,MAAMnF,WAAa2H,EAC1B,yDAAyDQ,eACzD,kEACJV,EAAWtC,MAAMkD,gBAAkB,gBACnCZ,EAAWtC,MAAM8C,UAAY,UAC/B,EAEA7B,0BAAAA,CAA2BV,GACzB,IAAKA,EAAW,OAEhB,MAAM4C,EAAgBnM,OAAOoM,iBAAiB7C,GACf,WAA3B4C,EAActQ,WAChB0N,EAAUP,MAAMnN,SAAW,YAGA,SAAzBsQ,EAAcV,SAChBlC,EAAUP,MAAMyC,OAAS,KAG3BlC,EAAUP,MAAMqD,UAAY,SAC9B,EAKAtB,mBAAAA,CAAoBtB,EAAKE,GACvB,GAAmC,IAA/BxN,KAAKwO,eAAerL,OAAc,OAEtC,MAAMgN,EAAoC,GAArB7C,EAAIT,MAAM0C,QACzBa,EAAQD,EAAe7C,EAAME,EAC7B6C,EAASF,EAAe3C,EAAMF,EAEpCtN,KAAKuL,oBAAsBvL,KAAKuL,mBAAqB,GAAKvL,KAAKwO,eAAerL,OAC9E,MAAMmN,EAAUtQ,KAAKwO,eAAexO,KAAKuL,qBAAqBmD,IAG9D0B,EAAMvD,MAAMyC,QAAU,EACtBe,EAAOxD,MAAMyC,QAAU,EACvBtP,KAAKwP,wBAAwBa,GAAQ,GAErC,MAAMT,EAAU,IAAIrM,MACpBqM,EAAQpM,OAAS,KACf6M,EAAOtR,IAAMuR,EAGb1G,WAAW,KACTyG,EAAOxD,MAAM0C,QAAUvP,KAAK6L,UAC5BwE,EAAOxD,MAAM8C,UAAY,eAGzB/F,WAAW,KACTwG,EAAMvD,MAAM0C,QAAU,EACtBvP,KAAKwP,wBAAwBY,GAAO,IACnC,OACF,KAELR,EAAQ7Q,IAAMuR,CAChB,EAKAxB,qBAAAA,CAAsBxB,EAAKE,EAAKqB,GAC9B,MAAMsB,EAAoC,GAArB7C,EAAIT,MAAM0C,QACzBa,EAAQD,EAAe7C,EAAME,EAC7B6C,EAASF,EAAe3C,EAAMF,EAEpCtN,KAAKwL,sBAAwBxL,KAAKwL,qBAAuB,GAAKqD,EAAW1L,OACzE,MAAMmN,EAAUzB,EAAW7O,KAAKwL,sBAGhC4E,EAAMvD,MAAMyC,QAAU,EACtBe,EAAOxD,MAAMyC,QAAU,EACvBtP,KAAKwP,wBAAwBa,GAAQ,GAErC,MAAMT,EAAU,IAAIrM,MACpBqM,EAAQpM,OAAS,KACf6M,EAAOtR,IAAMuR,EAEb1G,WAAW,KACTyG,EAAOxD,MAAM0C,QAAUvP,KAAK6L,UAC5BwE,EAAOxD,MAAM8C,UAAY,eAEzB/F,WAAW,KACTwG,EAAMvD,MAAM0C,QAAU,EACtBvP,KAAKwP,wBAAwBY,GAAO,IACnC,OACF,KAELR,EAAQ7Q,IAAMuR,CAChB,EAKAC,uBAAAA,GACMvQ,KAAKyL,qBACPe,cAAcxM,KAAKyL,oBACnBzL,KAAKyL,mBAAqB,KAE9B,EAMAgB,qBAAAA,CAAsB+D,GAAY,GAChC,MAAMlD,EAAM3J,SAASiJ,eAAe,OAC9BY,EAAM7J,SAASiJ,eAAe,OAEhC4D,GAEElD,IACFA,EAAIT,MAAMnF,WAAa,OACvB4F,EAAIT,MAAM0C,QAAU,EACpBjC,EAAIvO,IAAM,GAEV6K,WAAW,KACL0D,IAAKA,EAAIT,MAAMnF,WAAa,oEAC/B,KAED8F,IACFA,EAAIX,MAAMnF,WAAa,OACvB8F,EAAIX,MAAM0C,QAAU,EACpB/B,EAAIzO,IAAM,GAEV6K,WAAW,KACL4D,IAAKA,EAAIX,MAAMnF,WAAa,oEAC/B,OAID4F,IACFA,EAAIT,MAAM0C,QAAU,EACpB3F,WAAW,KACL0D,IAAKA,EAAIvO,IAAM,KAClB,OAEDyO,IACFA,EAAIX,MAAM0C,QAAU,EACpB3F,WAAW,KACL4D,IAAKA,EAAIzO,IAAM,KAClB,OAGT,EASAmN,qBAAAA,CAAsBC,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAChH,MAAMyB,EAAmB/N,KAAKC,aAAakM,GAG3C,IAAKE,QAA6CvE,IAArBiG,EAE3B,YADA/N,KAAKyQ,uBAAuBtE,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMgB,EAAM3J,SAASiJ,eAAe,OAC9BY,EAAM7J,SAASiJ,eAAe,OAEpC,IAAKU,IAAQE,EAGX,YADAxN,KAAKyQ,uBAAuBtE,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMoE,EAAiC,GAArBpD,EAAIT,MAAM0C,QAAejC,EAAME,EAC3C6C,EAA8B,GAArB/C,EAAIT,MAAM0C,QAAe/B,EAAMF,EAGxC0B,EAAShP,KAAKgM,YACd2E,EACFzB,EADkBF,EACV,MACA,MAGN4B,EAAa,IAAIrN,MACvBqN,EAAWpN,OAAS,KAElB6M,EAAOtR,IAAM4R,EAGbN,EAAO7M,OAAS,KAEdkN,EAAU7D,MAAM0C,QAAU,EAG1B3F,WAAW,KACTyG,EAAOxD,MAAM0C,QAAUvP,KAAK6L,WAC3B,MAIP+E,EAAWnN,QAAU,KAEnB2H,QAAQiC,KAAK,sBACbrN,KAAKyQ,uBAAuBtE,EAAWC,EAAmBC,EAAsBC,IAGlFsE,EAAW7R,IAAM4R,CACnB,EAKAF,sBAAAA,CAAuBtE,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GACjHtM,KAAKuQ,0BACLvQ,KAAKyM,uBAAsB,GAC3BzM,KAAKuL,mBAAqB,EAC1BvL,KAAKwL,qBAAuB,EAG5B5B,WAAW,KACT5J,KAAK2N,qBAAqBxB,EAAWC,EAAmBC,EAAsBC,IAC7E,IACL,G,gKCvgBJ,MAAMxO,EAAa,CACjBY,MAAO,kBAEHX,EAAa,CACjBW,MAAO,eAEH4H,EAAa,CACjB5H,MAAO,gBAEH8H,EAAa,CACjB9H,MAAO,gBAEH+H,EAAa,CACjB/H,MAAO,mBAEHgI,EAAa,CACjBhI,MAAO,cAEHiI,EAAa,CACjBJ,IAAK,EACL7H,MAAO,aAEHkI,EAAa,CACjBlI,MAAO,gBAEHmI,EAAa,CAAC,OACdgK,EAAc,CAAC,OACfC,EAAc,CAClBvK,IAAK,EACL7H,MAAO,qBAEHqS,EAAc,CAClBrS,MAAO,gBAEHsS,EAAc,CAClBtS,MAAO,gBAEHuS,EAAc,CAClBvS,MAAO,aAEHwS,EAAc,CAAC,SACfC,EAAc,CAClBzS,MAAO,eAEH0S,EAAc,CAClB7K,IAAK,EACL7H,MAAO,aAEH2S,EAAc,CAClB3S,MAAO,gBAEH4S,EAAc,CAAC,OACfC,EAAc,CAAC,OACfC,EAAc,CAClBjL,IAAK,EACL7H,MAAO,2BAEH+S,EAAc,CAClB/S,MAAO,aAEHgT,EAAc,CAAC,SACfC,EAAc,CAAC,SACfC,EAAc,CAClBlT,MAAO,aAEHmT,EAAc,CAClBnT,MAAO,eAEHoT,EAAc,CAClBpT,MAAO,gBAEHqT,EAAc,CAClBxL,IAAK,EACL7H,MAAO,uBAEHsT,EAAc,CAClBzL,IAAK,EACL7H,MAAO,qBAEHuT,EAAc,CAClB1L,IAAK,EACL7H,MAAO,kBAEHwT,EAAc,CAClB3L,IAAK,EACL7H,MAAO,gBAEHyT,EAAc,CAClB5L,IAAK,EACL7H,MAAO,eAEF,SAASV,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMwI,GAA+B,QAAkB,qBACjDC,EAAuB,KACvBqL,EAAwB,KAC9B,OAAO,WAAc,QAAoB,MAAO,CAC9C1T,OAAO,QAAgB,CAAC,oBAAqB,CAC3C,OAAUP,EAAOkU,SAElB,EAAC,QAAoB,MAAOvU,EAAY,EAAC,QAAoB,MAAOC,EAAY,EAAC,QAAoB,KAAM,MAAM,QAAiBE,EAAKiK,GAAG,wBAAyB,IAAI,QAAoB,OAAQ5B,GAAY,QAAiBrI,EAAKiK,GAAG,6BAA8B,CACvQoK,MAAOjU,EAAMkU,cACV,MAAM,QAAoB,MAAO/L,EAAY,EAAC,QAAa4L,EAAuB,CACrFI,QAASvU,EAAKiK,GAAG,4BACjBV,UAAW,UACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAa0H,EAAsB,CAC1D0L,OAAQ,GACR7K,QAAStJ,EAASoU,gBACjB,CACDrT,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAyB,SAAnB3J,EAAMsU,SAAsB,OAAS,YAC1C,KAAM,EAAG,CAAC,WACbxK,EAAG,GACF,EAAG,CAAC,cACPA,EAAG,GACF,EAAG,CAAC,aAAa,QAAaiK,EAAuB,CACtDI,QAASvU,EAAKiK,GAAG,8BACjBV,UAAW,UACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAa0H,EAAsB,CAC1D0L,OAAQ,GACRtT,KAAM,SACNyI,QAAStJ,EAASsU,cACjB,CACDvT,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,gBAERG,EAAG,GACF,EAAG,CAAC,cACPA,EAAG,GACF,EAAG,CAAC,aAAa,QAAapB,EAAsB,CACrD0L,OAAQ,GACR7K,QAAS1J,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,WACvD,CACDjM,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,YAERG,EAAG,QACG9J,EAAMwU,YAAY1P,OAAS,IAAK,WAAc,QAAoB,MAAO,CAC/EoD,IAAK,EACL7H,MAAO,kBACP0J,IAAK,iBACL0K,SAAU5U,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAASyU,cAAgBzU,EAASyU,gBAAgBhK,KAClG,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYzK,EAAS0U,eAAgBC,KACxF,WAAc,QAAoB,MAAO,CAC9C1M,IAAK0M,EAAMC,KACXxU,MAAO,iBACN,EAAC,QAAoB,MAAO+H,EAAY,CAACvI,EAAO,KAAOA,EAAO,IAAK,QAAoB,MAAO,CAC/FQ,MAAO,gBACN,MAAO,KAAK,QAAoB,OAAQgI,GAAY,QAAiBuM,EAAMC,MAAO,KAAyB,SAAnB7U,EAAMsU,WAAuB,WAAc,QAAoB,MAAOhM,EAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYsM,EAAME,MAAOC,KACtP,WAAc,QAAoB,MAAO,CAC9C7M,IAAK6M,EAAKC,KACV3U,MAAO,aACN,EAAC,QAAoB,MAAOkI,EAAY,CAACtI,EAASgV,QAAQF,EAAKnU,QAAS,WAAc,QAAoB,MAAO,CAClHsH,IAAK,EACLxH,IAAKqU,EAAK1E,IACV5F,QAAS,OACTyK,QAASrV,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAASkV,kBAAoBlV,EAASkV,oBAAoBzK,KACzG,KAAM,GAAIlC,IAAevI,EAASmV,QAAQL,EAAKnU,QAAS,WAAc,QAAoB,QAAS,CACpGsH,IAAK,EACLxH,IAAKqU,EAAK1E,IACVgF,MAAO,IACN,KAAM,EAAG7C,MAAiB,WAAc,QAAoB,MAAOC,EAAa,EAAC,QAAahK,EAA8B,CAC7HkB,KAAM,OACNtJ,MAAO,kBACF,QAAoB,MAAOqS,EAAa,EAAC,QAAoB,MAAOC,EAAa,EAAC,QAAajK,EAAsB,CAC1H0L,OAAQ,GACR9S,KAAM,UACNR,KAAM,UACNyI,QAASL,GAAUjJ,EAASqV,SAASP,EAAK1E,MACzC,CACDrP,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,WAERG,EAAG,GACF,EAAG,CAAC,aAAa,QAAapB,EAAsB,CACrD0L,OAAQ,GACR9S,KAAM,UACNjB,MAAO,kBACPkJ,QAASL,GAAUjJ,EAASsV,SAASR,EAAK1E,MACzC,CACDrP,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,wBAERG,EAAG,GACF,EAAG,CAAC,aAAa,QAAapB,EAAsB,CACrD0L,OAAQ,GACR9S,KAAM,UACNR,KAAM,SACNyI,QAASL,GAAUjJ,EAASuV,WAAWT,IACtC,CACD/T,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,gBAERG,EAAG,GACF,EAAG,CAAC,mBAAmB,QAAoB,MAAO8I,EAAa,EAAC,QAAoB,MAAO,CAC5FvS,MAAO,YACP0K,MAAOgK,EAAKnU,OACX,QAAiBmU,EAAKnU,MAAO,EAAGiS,IAAc,QAAoB,MAAOC,GAAa,QAAiB7S,EAASwV,WAAWV,EAAKC,OAAQ,SACzI,WAAY,WAAc,QAAoB,MAAOjC,EAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAY6B,EAAME,MAAOC,KAC/I,WAAc,QAAoB,MAAO,CAC9C7M,IAAK6M,EAAKC,KACV3U,MAAO,aACN,EAAC,QAAoB,MAAO2S,EAAa,CAAC/S,EAASgV,QAAQF,EAAKnU,QAAS,WAAc,QAAoB,MAAO,CACnHsH,IAAK,EACLxH,IAAKqU,EAAK1E,IACV5F,QAAS,OACTyK,QAASrV,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAASkV,kBAAoBlV,EAASkV,oBAAoBzK,KACzG,KAAM,GAAIuI,IAAgBhT,EAASmV,QAAQL,EAAKnU,QAAS,WAAc,QAAoB,QAAS,CACrGsH,IAAK,EACLxH,IAAKqU,EAAK1E,IACVgF,MAAO,IACN,KAAM,EAAGnC,MAAiB,WAAc,QAAoB,MAAOC,EAAa,EAAC,QAAa1K,EAA8B,CAC7HkB,KAAM,eACC,QAAoB,MAAOyJ,EAAa,EAAC,QAAoB,MAAO,CAC3E/S,MAAO,YACP0K,MAAOgK,EAAKnU,OACX,QAAiBmU,EAAKnU,MAAO,EAAGyS,IAAc,QAAoB,MAAO,CAC1EhT,MAAO,WACP0K,MAAOgK,EAAK1E,MACX,QAAiB0E,EAAK1E,KAAM,EAAGiD,MAAgB,QAAoB,MAAOC,EAAa,EAAC,QAAoB,MAAOC,GAAa,QAAiBvT,EAASwV,WAAWV,EAAKC,OAAQ,MAAM,QAAoB,MAAOvB,EAAa,EAAC,QAAa/K,EAAsB,CACrQ0L,OAAQ,GACR9S,KAAM,QACNR,KAAM,UACNyI,QAASL,GAAUjJ,EAASqV,SAASP,EAAK1E,MACzC,CACDrP,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,WAERG,EAAG,GACF,EAAG,CAAC,aAAa,QAAapB,EAAsB,CACrD0L,OAAQ,GACR9S,KAAM,QACNjB,MAAO,kBACPkJ,QAASL,GAAUjJ,EAASsV,SAASR,EAAK1E,MACzC,CACDrP,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,wBAERG,EAAG,GACF,EAAG,CAAC,aAAa,QAAapB,EAAsB,CACrD0L,OAAQ,GACR9S,KAAM,QACNR,KAAM,SACNyI,QAASL,GAAUjJ,EAASuV,WAAWT,IACtC,CACD/T,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,gBAERG,EAAG,GACF,EAAG,CAAC,kBACL,aACF,MAAO7J,EAASyV,UAAW,WAAc,QAAoB,MAAOhC,EAAa,CAAC1T,EAAM2V,cAAe,WAAc,QAAoB,MAAOhC,EAAa,EAAC,QAAalL,EAA8B,CAC3MkB,KAAM,UACNiM,KAAM,MACJ,QAAoB,OAAQ,MAAM,QAAiBhW,EAAKiK,GAAG,0BAA2B,QAAS,WAAc,QAAoB,MAAO+J,GAAa,QAAiBhU,EAAKiK,GAAG,iCAAkC,OAAS7J,EAAMwU,YAAY1P,OAAS,IAAK,WAAc,QAAoB,MAAO+O,GAAa,QAAiBjU,EAAKiK,GAAG,gCAAiC,KAAM,QAAoB,IAAI,IAAQ,QAAS,WAAc,QAAoB,MAAOiK,EAAa,EAAC,QAAarL,EAA8B,CAC5fkB,KAAM,UACNtJ,MAAO,gBACL,QAAoB,IAAK,MAAM,QAAiBT,EAAKiK,GAAG,+BAAgC,OAAQ,EACtG,C,gDC/PA,GACEjJ,KAAM,gBACNC,MAAO,CACLmT,KAAM,CACJlT,KAAMU,QACNR,SAAS,IAGb,IAAAgJ,GACE,MAAO,CACLwK,YAAa,GACbqB,WAAY,GAEZvB,SAAU,OAEVwB,SAAU,GAEVC,YAAa,EACbJ,aAAa,EACbzB,WAAY,EAEhB,EACA7I,MAAO,CACL,IAAA2I,CAAKgC,GACCA,GACFrU,KAAKsU,cAET,GAEFvU,SAAU,CACR,OAAAgU,GACE,OAAO/T,KAAK6S,YAAY1P,OAASnD,KAAKuS,UACxC,EACA,cAAAS,GACE,MAAMuB,EAAS,CAAC,EAWhB,OAVAvU,KAAK6S,YAAY2B,QAAQpB,IACvB,MAAMF,EAAO,IAAIjP,KAAKmP,EAAKC,MACrBoB,EAAU,GAAGvB,EAAKwB,iBAAiBtV,OAAO8T,EAAKyB,WAAa,GAAGC,SAAS,EAAG,QAAQxV,OAAO8T,EAAK2B,WAAWD,SAAS,EAAG,OACvHL,EAAOE,KACVF,EAAOE,GAAW,IAEpBF,EAAOE,GAASK,KAAK1B,KAIhBnS,OAAO8T,KAAKR,GAAQrO,KAAK,CAACnE,EAAGI,IAAM,IAAI8B,KAAK9B,GAAK,IAAI8B,KAAKlC,IAAIiT,IAAI9B,IAAQ,CAC/EA,OACAC,MAAOoB,EAAOrB,KAElB,GAEF,OAAA9I,GAEE,MAAM6K,EAAYC,aAAaC,QAAQ,mBACnCF,IACFjV,KAAK2S,SAAWsC,EAEpB,EACAxK,QAAS,CACP,YAAA6J,GACEtU,KAAK6S,YAAc,GACnB7S,KAAKoU,YAAc,EACnBpU,KAAKoV,iBACLpV,KAAKqV,UACP,EACA,cAAAD,GACE,IACE,MAAME,EAAUC,KAAKC,MAAMN,aAAaC,QAAQ,kBAAoB,MAEpEnV,KAAKkU,WAAaoB,EAAQpP,KAAK,CAACnE,EAAGI,IAAMA,EAAEkR,KAAOtR,EAAEsR,MACpDrT,KAAKuS,WAAavS,KAAKkU,WAAW/Q,MACpC,CAAE,MAAO9C,GACP+K,QAAQrD,MAAM,yBAA0B1H,GACxCL,KAAKkU,WAAa,GAClBlU,KAAKuS,WAAa,CACpB,CACF,EACA,QAAA8C,IACMrV,KAAKgU,aAAgBhU,KAAK+T,UAC9B/T,KAAKgU,aAAc,EAGnBpK,WAAW,KACT,MAAM6L,EAAQzV,KAAKoU,YAAcpU,KAAKmU,SAChCuB,EAAMD,EAAQzV,KAAKmU,SACnBwB,EAAW3V,KAAKkU,WAAW0B,MAAMH,EAAOC,GAC9C1V,KAAK6S,YAAc,IAAI7S,KAAK6S,eAAgB8C,GAC5C3V,KAAKoU,cACLpU,KAAKgU,aAAc,GAClB,IACL,EACA,YAAAjB,CAAa1S,GACX,MAAM+M,EAAY/M,EAAE5B,OACdoX,EAAYzI,EAAUyI,UACtBC,EAAe1I,EAAU0I,aACzBC,EAAe3I,EAAU2I,aAG3BD,EAAeD,EAAYE,EAAe,KAC5C/V,KAAKqV,UAET,EACA,cAAA3C,GACE1S,KAAK2S,SAA6B,SAAlB3S,KAAK2S,SAAsB,OAAS,OACpDuC,aAAac,QAAQ,kBAAmBhW,KAAK2S,SAC/C,EACA,YAAAC,GACE5S,KAAKiW,SAASjW,KAAKkI,GAAG,qCAAsClI,KAAKkI,GAAG,mCAAoC,CACtGgO,kBAAmBlW,KAAKkI,GAAG,gCAC3BiO,iBAAkBnW,KAAKkI,GAAG,oCAC1B/I,KAAM,YACLyD,KAAK,KACN5C,KAAK6S,YAAc,GACnB7S,KAAKkU,WAAa,GAClBlU,KAAKuS,WAAa,EAClBvS,KAAKoU,YAAc,EACnBc,aAAakB,WAAW,iBACxBpW,KAAKqW,SAASC,QAAQtW,KAAKkI,GAAG,mCAC7BqO,MAAM,OACX,EACA,UAAA1C,CAAWT,GACTpT,KAAKiW,SAASjW,KAAKkI,GAAG,sCAAuClI,KAAKkI,GAAG,mCAAoC,CACvGgO,kBAAmBlW,KAAKkI,GAAG,gCAC3BiO,iBAAkBnW,KAAKkI,GAAG,oCAC1B/I,KAAM,YACLyD,KAAK,KAEN5C,KAAK6S,YAAc7S,KAAK6S,YAAY5M,OAAOtF,GAAKA,EAAE0S,OAASD,EAAKC,MAChErT,KAAKkU,WAAalU,KAAKkU,WAAWjO,OAAOtF,GAAKA,EAAE0S,OAASD,EAAKC,MAC9DrT,KAAKuS,WAAavS,KAAKkU,WAAW/Q,OAGlC,IACE+R,aAAac,QAAQ,gBAAiBT,KAAKiB,UAAUxW,KAAKkU,aAC1DlU,KAAKqW,SAASC,QAAQtW,KAAKkI,GAAG,+BAChC,CAAE,MAAO7H,GACP+K,QAAQrD,MAAM,2BAA4B1H,EAC5C,IACCkW,MAAM,OACX,EACA,OAAAjD,CAAQmD,GACN,MAAMC,EAAkB,CAAC,MAAO,OAAQ,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,QAAS,OACtHC,EAAYF,EAAWA,EAASzT,MAAM,KAAK4T,MAAMC,cAAgB,GACvE,OAAOH,EAAgBlX,SAASmX,EAClC,EACA,OAAAlD,CAAQgD,GACN,MAAMK,EAAkB,CAAC,MAAO,OAAQ,MAAO,OACzCH,EAAYF,EAAWA,EAASzT,MAAM,KAAK4T,MAAMC,cAAgB,GACvE,OAAOC,EAAgBtX,SAASmX,EAClC,EACA,UAAA7C,CAAWiD,GACT,MAAM7D,EAAO,IAAIjP,KAAK8S,GAChBC,EAAO9D,EAAKwB,cACZuC,EAAQ7X,OAAO8T,EAAKyB,WAAa,GAAGC,SAAS,EAAG,KAChDsC,EAAM9X,OAAO8T,EAAK2B,WAAWD,SAAS,EAAG,KACzCuC,EAAQ/X,OAAO8T,EAAKkE,YAAYxC,SAAS,EAAG,KAC5CyC,EAAUjY,OAAO8T,EAAKoE,cAAc1C,SAAS,EAAG,KAChD2C,EAAUnY,OAAO8T,EAAKsE,cAAc5C,SAAS,EAAG,KACtD,MAAO,GAAGoC,KAAQC,KAASC,KAAOC,KAASE,KAAWE,GACxD,EACA,QAAA5D,CAASjF,GACP+I,UAAUC,UAAUC,UAAUjJ,GAAK9L,KAAK,KACtC5C,KAAKqW,SAASC,QAAQtW,KAAKkI,GAAG,+BAC7BqO,MAAM,KACPvW,KAAKqW,SAAStO,MAAM/H,KAAKkI,GAAG,8BAEhC,EACA,QAAA0L,CAASlF,GACP7K,OAAO+T,KAAKlJ,EAAK,SACnB,EACA,gBAAA8E,CAAiBnT,GACfA,EAAE5B,OAAOM,IAAM,EAAQ,MACzB,I,WC1KJ,MAAMoB,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASnC,GAAQ,CAAC,YAAY,qBAEzF,Q,qLCRA,MAAM,EAAa,CACjBU,MAAO,kBAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,iBAEH,GAAa,CACjBA,MAAO,mBAEH,GAAa,CACjBA,MAAO,gBAEH,GAAa,CACjBA,MAAO,iBAEH,GAAa,CACjB6H,IAAK,EACL7H,MAAO,gBAEH,GAAa,CACjBA,MAAO,iBAEH,GAAa,CACjBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,mBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,mBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClB6H,IAAK,EACL7H,MAAO,4BAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,wBAEH,GAAc,CAClB6H,IAAK,EACL7H,MAAO,4BAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,wBAEHmZ,GAAc,CAClBtR,IAAK,EACL7H,MAAO,kBAEHoZ,GAAc,CAClBpZ,MAAO,kBAEHqZ,GAAc,CAClBrZ,MAAO,iBAEHsZ,GAAc,CAClBtZ,MAAO,mBAEHuZ,GAAc,CAClBvZ,MAAO,gBAEHwZ,GAAc,CAClBxZ,MAAO,iBAEHyZ,GAAc,CAClBzZ,MAAO,iBAEF,SAAS,GAAOT,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAM8Z,EAAyB,IACzBC,EAAsB,KACtBC,EAA4B,KAC5BxR,GAA+B,QAAkB,qBACjDsL,EAAwB,KACxBmG,EAAuB,KACvBC,EAAuB,KACvBC,EAAsB,KACtBC,EAAuB,KACvBC,EAAuB,KACvBC,EAA6B,KAC7B7R,EAAuB,KACvB8R,EAAuB,KAC7B,OAAO,WAAc,QAAaA,EAAsB,CACtDzP,MAAOnL,EAAKiK,GAAG,wBACfe,WAAY3K,EAAS+I,QACrB,sBAAuBnJ,EAAO,MAAQA,EAAO,IAAMqJ,GAAUjJ,EAAS+I,QAAUE,GAChFpC,MAAO7G,EAASwa,YAChB,cAAc,EACdpa,MAAO,mBACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,EAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,IAAY,QAAiBpB,EAAKiK,GAAG,iCAAkC,MAAM,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,IAAY,QAAiBjK,EAAKiK,GAAG,+BAAgC,IAAI,QAAaoQ,EAA2B,CAC7a,cAAena,EAAO4a,cACtB,sBAAuB7a,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,uBAAwB/D,IAC9F7I,MAAO,4BACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAagZ,EAAqB,CACzD9O,MAAO,WACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAa+Y,EAAwB,CAC5DjZ,KAAM,WACNT,MAAO,wCACLR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,MAAO,MACzEiK,EAAG,KACD,QAAakQ,EAAqB,CACpC9O,MAAO,OACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAa+Y,EAAwB,CAC5DjZ,KAAM,OACNT,MAAO,oCACLR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,MAAO,MACzEiK,EAAG,KACD,QAAakQ,EAAqB,CACpC9O,MAAO,KACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAa+Y,EAAwB,CAC5DjZ,KAAM,KACNT,MAAO,kCACLR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,MAAO,MACzEiK,EAAG,KACD,QAAakQ,EAAqB,CACpC9O,MAAO,UACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAa+Y,EAAwB,CAC5DjZ,KAAM,UACNT,MAAO,uCACLR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,MAAO,MACzEiK,EAAG,KACD,QAAakQ,EAAqB,CACpC9O,MAAO,cACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAa+Y,EAAwB,CAC5DjZ,KAAM,cACNT,MAAO,2CACLR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,MAAO,MACzEiK,EAAG,KACD,QAAakQ,EAAqB,CACpC9O,MAAO,SACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAa+Y,EAAwB,CAC5DjZ,KAAM,SACNT,MAAO,sCACLR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,MAAO,MACzEiK,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,kBAAmBhK,EAAO6a,mBAAmB7V,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,GAAY,EAAC,SAAiB,QAAiBlF,EAAKiK,GAAG,+BAAiC,IAAK,IAAI,QAAakK,EAAuB,CACvRI,QAASvU,EAAKiK,GAAG,qCACjBV,UAAW,OACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,kBACNtJ,MAAO,uBAETyJ,EAAG,GACF,EAAG,CAAC,eAAe,QAAaqQ,EAAsB,CACvD,cAAera,EAAO8a,YACtB,sBAAuB/a,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,qBAAsB/D,IAC5F2R,YAAajb,EAAKiK,GAAG,6BACrBiR,UAAW,GACXza,MAAO,iBACN,CACDW,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYlB,EAAO6a,mBAAoBI,KAC/G,WAAc,QAAab,EAAsB,CACtDhS,IAAK6S,EAAGna,KACRsK,MAAO6P,EAAGna,KACVM,MAAO6Z,EAAGna,MACT,KAAM,EAAG,CAAC,QAAS,YACpB,QACJkJ,EAAG,GACF,EAAG,CAAC,cAAe,oBAAqB,QAAoB,IAAI,IAAO,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,IAAa,QAAiBlK,EAAKiK,GAAG,mCAAoC,IAAI,QAAauQ,EAAqB,CAC5P,cAAeta,EAAOkb,aACtB,sBAAuB/a,EAASgb,wBAChCJ,YAAajb,EAAKiK,GAAG,6CACrBxJ,MAAO,iBACN,KAAM,EAAG,CAAC,cAAe,sBAAuB,mBAAmB,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,GAAa,EAAC,SAAiB,QAAiBT,EAAKiK,GAAG,8BAAgC,IAAK,IAAI,QAAakK,EAAuB,CAC9QI,QAASvU,EAAKiK,GAAG,oCACjBV,UAAW,OACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,kBACNtJ,MAAO,uBAETyJ,EAAG,GACF,EAAG,CAAC,eAAe,QAAauQ,EAAsB,CACvD,cAAeva,EAAOob,UACtB,sBAAuBrb,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,mBAAoB/D,KACzF,KAAM,EAAG,CAAC,uBAAuB,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBtJ,EAAKiK,GAAG,8BAA+B,MAAM,QAAoB,MAAO,GAAa,EAAC,QAAaoQ,EAA2B,CAC5S,cAAena,EAAOqb,eACtB,sBAAuBtb,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,wBAAyB/D,IAC/F7I,MAAO,6BACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAagZ,EAAqB,CACzD9O,MAAO,UACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,MACNtJ,MAAO,gBACL,QAAoB,OAAQ,MAAM,QAAiBT,EAAKiK,GAAG,iCAAkC,KACjGC,EAAG,KACD,QAAakQ,EAAqB,CACpC9O,MAAO,QACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,UACNtJ,MAAO,gBACL,QAAoB,OAAQ,MAAM,QAAiBT,EAAKiK,GAAG,+BAAgC,KAC/FC,EAAG,KACD,QAAakQ,EAAqB,CACpC9O,MAAO,SACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,iBACNtJ,MAAO,gBACL,QAAoB,OAAQ,MAAM,QAAiBT,EAAKiK,GAAG,gCAAiC,KAChGC,EAAG,KACD,QAAakQ,EAAqB,CACpC9O,MAAO,QACP7K,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,eACNtJ,MAAO,gBACL,QAAoB,OAAQ,MAAM,QAAiBT,EAAKiK,GAAG,+BAAgC,KAC/FC,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,qBAAqB,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBlK,EAAKiK,GAAG,kCAAmC,IAAI,QAAakK,EAAuB,CACzPI,QAASvU,EAAKiK,GAAG,wCACjBV,UAAW,OACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,kBACNtJ,MAAO,wBAETyJ,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,GAAa,EAAC,SAAiB,QAAiBlK,EAAKiK,GAAG,iCAAmC,IAAK,IAAI,QAAakK,EAAuB,CAC1QI,QAASvU,EAAKiK,GAAG,uCACjBV,UAAW,OACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,kBACNtJ,MAAO,uBAETyJ,EAAG,GACF,EAAG,CAAC,eAAe,QAAauQ,EAAsB,CACvD,cAAeva,EAAOsb,cACtB,sBAAuBvb,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,uBAAwB/D,KAC7F,KAAM,EAAG,CAAC,mBAAmB,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBtJ,EAAKiK,GAAG,gCAAiC,IAAI,QAAawQ,EAAsB,CACjN,cAAeva,EAAOub,iBACtB,sBAAuBxb,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,0BAA2B/D,KAChG,KAAM,EAAG,CAAC,kBAAmBpJ,EAAOub,mBAAoB,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,GAAa,EAAC,SAAiB,QAAiBzb,EAAKiK,GAAG,qCAAuC,IAAK,IAAI,QAAakK,EAAuB,CACxRI,QAASvU,EAAKiK,GAAG,2CACjBV,UAAW,OACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,kBACNtJ,MAAO,uBAETyJ,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAO,GAAa,EAAC,QAAawQ,EAAsB,CAChG,cAAexa,EAAOwb,YACtB,sBAAuBzb,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,qBAAsB/D,IAC5FqS,IAAK,EACL9J,IAAK,GACL,iBAAkBvQ,GAAS,GAAGA,QAC7B,KAAM,EAAG,CAAC,cAAe,oBAAoB,QAAoB,MAAO,GAAa,EAAC,QAAaqZ,EAA4B,CAChI,cAAeza,EAAOwb,YACtB,sBAAuBzb,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,qBAAsB/D,IAC5FqS,IAAK,EACL9J,IAAK,GACL+J,KAAM,EACN,iBAAkB,EAClBnb,MAAO,eACP,oBAAqB,SACpB,KAAM,EAAG,CAAC,gBAAiBR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,CACpFQ,MAAO,eACN,MAAO,YAAa,QAAoB,IAAI,GAAOP,EAAOub,mBAAoB,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,GAAa,EAAC,SAAiB,QAAiBzb,EAAKiK,GAAG,gCAAkC,IAAK,IAAI,QAAakK,EAAuB,CACzSI,QAASvU,EAAKiK,GAAG,sCACjBV,UAAW,OACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,kBACNtJ,MAAO,uBAETyJ,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAO,GAAa,EAAC,QAAawQ,EAAsB,CAChG,cAAexa,EAAO2b,gBACtB,sBAAuB5b,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,yBAA0B/D,IAChGqS,IAAK,GACL9J,IAAK3R,EAAOwb,YACZE,KAAM,GACN,iBAAkBta,GAAS,GAAGA,QAC7B,KAAM,EAAG,CAAC,cAAe,MAAO,oBAAoB,QAAoB,MAAO,GAAa,EAAC,QAAaqZ,EAA4B,CACvI,cAAeza,EAAO2b,gBACtB,sBAAuB5b,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,yBAA0B/D,IAChGqS,IAAK,GACL9J,IAAK3R,EAAOwb,YACZE,KAAM,GACNE,UAAW,EACX,iBAAkB,GAClBrb,MAAO,eACP,oBAAqB,SACpB,KAAM,EAAG,CAAC,cAAe,QAASR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,CAC3FQ,MAAO,eACN,MAAO,YAAa,QAAoB,IAAI,OAAoC,aAAzBP,EAAO4a,gBAAgC,WAAc,QAAoB,MAAOlB,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAoB,OAAQC,IAAa,QAAiB9Z,EAAKiK,GAAG,kCAAmC,IAAI,QAAakK,EAAuB,CAC5UI,QAASvU,EAAKiK,GAAG,wCACjBV,UAAW,MACX,cAAe,IACd,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,kBACNtJ,MAAO,wBAETyJ,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAO6P,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAoB,OAAQC,IAAa,QAAiBja,EAAKiK,GAAG,kCAAmC,IAAI,QAAawQ,EAAsB,CAClP,cAAeva,EAAO6b,eACtB,sBAAuB9b,EAAO,MAAQA,EAAO,IAAMqJ,GAAUtJ,EAAKqN,MAAM,wBAAyB/D,KAChG,KAAM,EAAG,CAAC,wBAAyB,QAAoB,IAAI,IAAO,QAAoB,MAAO4Q,GAAa,EAAC,QAAapR,EAAsB,CAC/I5H,KAAM,UACNyI,QAAS1J,EAAO,MAAQA,EAAO,IAAMqJ,GAAUjJ,EAAS+I,SAAU,GAClE3I,MAAO,eACN,CACDW,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,2BAA4B,KAC/FC,EAAG,QAELA,EAAG,GACF,EAAG,CAAC,QAAS,aAAc,SAChC,CCrYA,QACElJ,KAAM,uBACNgb,WAAY,CACVC,YAAW,KAEbzP,QAAS,CACP,uBAAA6O,CAAwBjF,GAElBA,IAAQA,EAAIhJ,WAAW,OACzBgJ,EAAM,IAAMA,GAEdrU,KAAKsL,MAAM,sBAAuB+I,EACpC,GAEFnV,MAAO,CACL+J,WAAY,CACV9J,KAAMU,QACNR,SAAS,GAEX0Z,cAAe,CACb5Z,KAAMC,OACNC,QAAS,YAEX4Z,YAAa,CACX9Z,KAAMC,OACNC,QAAS,IAEX2Z,mBAAoB,CAClB7Z,KAAM8O,MACN5O,QAAS,IAAM,IAEjBga,aAAc,CACZla,KAAMC,OACNC,QAAS,IAEXka,UAAW,CACTpa,KAAMU,QACNR,SAAS,GAEXma,eAAgB,CACdra,KAAMC,OACNC,QAAS,WAEXoa,cAAe,CACbta,KAAMU,QACNR,SAAS,GAEXqa,iBAAkB,CAChBva,KAAMU,QACNR,SAAS,GAEXsa,YAAa,CACXxa,KAAM8F,OACN5F,QAAS,GAEXya,gBAAiB,CACf3a,KAAM8F,OACN5F,QAAS,GAEX2a,eAAgB,CACd7a,KAAMU,QACNR,SAAS,IAGb8a,MAAO,CAAC,oBAAqB,uBAAwB,qBAAsB,sBAAuB,mBAAoB,wBAAyB,uBAAwB,0BAA2B,qBAAsB,yBAA0B,yBAClPpa,SAAU,CACRsH,QAAS,CACP,GAAAjG,GACE,OAAOpB,KAAKiJ,UACd,EACA,GAAAmR,CAAI/F,GACFrU,KAAKsL,MAAM,oBAAqB+I,EAClC,GAEF,WAAAyE,GACE,OAAOjV,OAAO4F,WAAa,IAAM,MAAQ,KAC3C,ICxEJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,uFCNA,MAAM,GAAa,CACjB/K,MAAO,oBAEH,GAAa,CAAC,QACd,GAAa,CACjB6H,IAAK,EACLsG,MAAO,CACL,MAAS,OACT,gBAAiB,QAEnBwN,SAAU,GACV3G,MAAO,GACP4G,YAAa,GACbC,KAAM,IAEF,GAAa,CAAC,OACd,GAAa,CAAC,OACd,GAAa,CACjBhU,IAAK,EACLsG,MAAO,CACL,MAAS,OACT,gBAAiB,SAGf,GAAa,CACjBnO,MAAO,4BAEH,GAAa,CACjBA,MAAO,iCAEH,GAAa,CACjB6H,IAAK,EACL7H,MAAO,wBAEH,GAAc,CAClBA,MAAO,4BAEH,GAAc,CAClBA,MAAO,4BAEH,GAAc,CAClB6H,IAAK,EACL7H,MAAO,6BAEH,GAAc,CAClBA,MAAO,2BAEF,SAAS,GAAOT,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMwI,GAA+B,QAAkB,qBACjD0T,EAAqB,MACrB/B,EAAsB,KACtBgC,EAAyB,MACzBC,GAAkB,QAAkB,QACpCC,EAAqB,MACrBC,GAAoB,QAAkB,UAC5C,OAAO,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,IAAK,CACpFrc,KAAMJ,EAAO0c,KAAKnM,IAClBjQ,OAAQ,SACRC,MAAO,4BACN,CAACJ,EAASmV,QAAQtV,EAAO0c,KAAK5b,QAAS,WAAc,QAAoB,QAAS,GAAY,EAAC,QAAoB,SAAU,CAC9HF,IAAKZ,EAAO0c,KAAKnM,IACjBvP,KAAM,aACL,KAAM,EAAG,IAAajB,EAAO,KAAOA,EAAO,IAAK,QAAiB,kDAAmD,OAASI,EAASgV,QAAQnV,EAAO0c,KAAK5b,QAAS,WAAc,QAAoB,MAAO,CAC7MsH,IAAK,EACLsG,MAAO,CACL,MAAS,OACT,gBAAiB,QAEnB9N,IAAKZ,EAAO0c,KAAKnM,IACjB6E,QAASrV,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,gBAAiBnN,EAAO0c,QAC/E,KAAM,GAAI,OAAgB,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAa/T,EAA8B,CAC5HkB,KAAM,OACNtJ,MAAO,kBACD,EAAG,KAAa,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAa8b,EAAoB,CACvI9b,MAAO,wBACPoc,UAAW,IACV,CACDzb,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBf,EAASyc,iBAAiB5c,EAAO0c,KAAK5b,OAAQ,KACzGkJ,EAAG,MACwB,SAAvBhK,EAAO0c,KAAK/P,SAAqB,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAa2N,EAAqB,CACtKxP,WAAY9K,EAAO0c,KAAKG,SACxB,sBAAuB9c,EAAO,KAAOA,EAAO,GAAKqJ,GAAUpJ,EAAO0c,KAAKG,SAAWzT,GAClF0T,SAAU,GACVrT,QAAStJ,EAAS4c,cAClBvb,KAAMrB,EAAS6c,SACd,CACDC,SAAS,QAAS,IAAM,IAAKld,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAiB,OAAQ,OACjFiK,EAAG,GACF,EAAG,CAAC,aAAc,UAAW,UAAU,QAAasQ,EAAqB,CAC1ExP,WAAY9K,EAAO0c,KAAKQ,MACxB,sBAAuBnd,EAAO,KAAOA,EAAO,GAAKqJ,GAAUpJ,EAAO0c,KAAKQ,MAAQ9T,GAC/E0T,SAAU,GACVrT,QAAStJ,EAAS4c,cAClBvb,KAAMrB,EAAS6c,SACd,CACDC,SAAS,QAAS,IAAM,IAAKld,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAiB,YAAa,OACtFiK,EAAG,GACF,EAAG,CAAC,aAAc,UAAW,YAAY,QAAoB,MAAO,GAAa,EAAC,QAAasQ,EAAqB,CACrHxP,WAAY9K,EAAO0c,KAAKS,QACxB,sBAAuBpd,EAAO,KAAOA,EAAO,GAAKqJ,GAAUpJ,EAAO0c,KAAKS,QAAU/T,GACjF0T,SAAU,GACVrT,QAAStJ,EAAS4c,cAClBvb,KAAMrB,EAAS6c,SACd,CACDC,SAAS,QAAS,IAAM,IAAKld,EAAO,MAAQA,EAAO,IAAM,EAAC,QAAiB,QAAS,OACpFiK,EAAG,GACF,EAAG,CAAC,aAAc,UAAW,UAAU,QAAasQ,EAAqB,CAC1ExP,WAAY9K,EAAO0c,KAAKU,OACxB,sBAAuBrd,EAAO,KAAOA,EAAO,GAAKqJ,GAAUpJ,EAAO0c,KAAKU,OAAShU,GAChF0T,SAAU,GACVrT,QAAStJ,EAAS4c,cAClBvb,KAAMrB,EAAS6c,SACd,CACDC,SAAS,QAAS,IAAM,IAAKld,EAAO,MAAQA,EAAO,IAAM,EAAC,QAAiB,UAAW,OACtFiK,EAAG,GACF,EAAG,CAAC,aAAc,UAAW,gBAAiB,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAasS,EAAwB,CAC3Ie,WAAYrd,EAAO0c,KAAKY,UACxB3Q,OAAQ3M,EAAO0c,KAAK/P,OACpB,aAAa,GACZ,KAAM,EAAG,CAAC,aAAc,iBAAiB,QAAoB,MAAO,GAAa,EAAC,QAAoB,SAAU,CACjHpM,MAAO,wDACPkJ,QAAS1J,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,OAAQnN,EAAO0c,QACtE,EAAC,QAAaF,EAAoB,KAAM,CACzCtb,SAAS,QAAS,IAAM,EAAC,QAAaqb,KACtCvS,EAAG,OACC,QAAoB,SAAU,CAClCzJ,MAAO,uDACPkJ,QAAS1J,EAAO,KAAOA,EAAO,GAAKqJ,GAAUtJ,EAAKqN,MAAM,SAAUnN,EAAO0c,QACxE,EAAC,QAAaF,EAAoB,KAAM,CACzCtb,SAAS,QAAS,IAAM,EAAC,QAAaub,KACtCzS,EAAG,SAEP,C,gBCpIA,MAAMuT,GAAmB,CAAC,MAAO,OAAQ,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,QAAS,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,OAC9KC,GAAmB,CAAC,MAAO,OAAQ,MAAO,OAChD,QACE1c,KAAM,iBACNgb,WAAY,CACV2B,KAAI,QACJC,OAAM,WAER3c,MAAO,CACL2b,KAAM,CACJ1b,KAAM8B,OACN6a,UAAU,IAGd3B,MAAO,CAAC,OAAQ,SAAU,iBAC1Bpa,SAAU,CACR,OAAAob,GACE,OAAOtX,OAAO4F,WAAa,IAAM,QAAU,SAC7C,GAEFgB,QAAS,CACP,OAAA6I,CAAQmD,GACN,MAAMsF,EAAMtF,EAASzT,MAAM,KAAK4T,MAAMC,cACtC,OAAO6E,GAAiBlc,SAASuc,EACnC,EACA,OAAAtI,CAAQgD,GACN,MAAMsF,EAAMtF,EAASzT,MAAM,KAAK4T,MAAMC,cACtC,OAAO8E,GAAiBnc,SAASuc,EACnC,EACA,gBAAAhB,CAAiBiB,EAAUC,EAAY,IACrC,IAAKD,GAAYA,EAAS7Y,QAAU8Y,EAAW,OAAOD,EACtD,MAAME,EAAeF,EAASG,YAAY,KAC1C,IAAIld,EAAM8c,EACNG,EAAe,GACjBjd,EAAO+c,EAASI,UAAU,EAAGF,GAC7BH,EAAMC,EAASI,UAAUF,KAEzBjd,EAAO+c,EACPD,EAAM,IAER,MAAMM,EAAUN,EAAI5Y,OAAS,EACvBmZ,EAAYL,EAAYI,EAAU,EACxC,OAAIC,GAAa,EAAUN,EAASI,UAAU,EAAGH,EAAY,GAAK,MAC3Dhd,EAAKmd,UAAU,EAAGE,GAAa,MAAQrd,EAAK2W,OAAO,GAAKmG,CACjE,EACA,aAAAb,CAAcqB,GACZ9E,UAAUC,UAAUC,UAAU4E,EAAM9d,OAAOc,OAAOqD,KAAK,KACrD5C,KAAKqW,SAAS,CACZlX,KAAM,UACNqd,QAASxc,KAAKkI,GAAG,8BAElBqO,MAAM,KACPvW,KAAKqW,SAAS,CACZlX,KAAM,QACNqd,QAASxc,KAAKkI,GAAG,4BAGvB,ICnDJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,oFCRA,MAAM,GAAa,CACjBxJ,MAAO,eAEH,GAAa,CACjBA,MAAO,mBACP0J,IAAK,kBAED,GAAa,CAAC,aACd,GAAa,CACjB7B,IAAK,EACL7H,MAAO,eAEH,GAAa,CACjBA,MAAO,sBAEH,GAAa,CACjBA,MAAO,gCAEH,GAAa,CACjBA,MAAO,uBAEH,GAAa,CACjBA,MAAO,gCAEH,GAAa,CACjBA,MAAO,8CAEF,SAAS,GAAOT,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMme,GAA0B,QAAkB,gBAC5C9B,EAAqB,MACrB+B,EAAuB,MACvBjE,EAAsB,KACtB1R,EAAuB,KACvB4V,EAA6B,KAC7BrE,EAA4B,KAC5BsE,EAAqB,MACrBC,GAAkB,QAAkB,QACpCC,GAAqB,QAAkB,WACvCC,GAAoB,QAAkB,UACtCvC,EAAqB,MACrB1T,GAA+B,QAAkB,qBACjDsL,EAAwB,KACxBsG,EAAuB,KACvBsE,EAA8B,MAC9BC,EAA8B,MAC9BC,EAAyB,MACzBC,EAA4B,GAC5BC,EAA0B,MAChC,OAAO,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,CACtF1e,MAAO,sBACP2e,YAAanf,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAASgf,2BAA6Bhf,EAASgf,6BAA6BvU,IAChIwU,aAAcrf,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAASkf,4BAA8Blf,EAASkf,8BAA8BzU,KAClI,EAAC,QAAoB,MAAO,GAAY,KAAM,KAA8B,YAAxB5K,EAAOsf,eAA8B,WAAc,QAAaf,EAAsB,CAC3InW,IAAK,EACL7H,OAAO,QAAgB,CAAC,cAAe,CACrC,eAAgBL,EAAMqf,UACtB,mBAAoBrf,EAAMsf,SAASxa,UAErCya,KAAM,GACNC,SAAU,GACV,eAAgBvf,EAASwf,WACzBC,UAAWzf,EAAS0f,cACpB,WAAY1f,EAAS2f,YACrB,gBAAiB3f,EAAS4f,aAC1B,cAAe5f,EAAS6f,eACxB,YAAa9f,EAAMsf,SACnB,kBAAkB,GACjB,CACDte,SAAS,QAAS,IAAM,EAAC,QAAasb,EAAoB,CACxDjc,OAAO,QAAgB,CAAC,kBAAmB,CACzC,mBAAoBL,EAAMsf,SAASxa,WAEpC,CACD9D,SAAS,QAAS,IAAM,EAAC,QAAaod,KACtCtU,EAAG,GACF,EAAG,CAAC,WAAW,QAAoB,MAAO,CAC3CzJ,OAAO,QAAgB,CAAC,kBAAmB,CACzC,mBAAoBL,EAAMsf,SAASxa,UAErCib,UAAWngB,EAAKiK,GAAG,0BAClB,KAAM,GAAI,MACbC,EAAG,GACF,EAAG,CAAC,QAAS,eAAgB,YAAa,WAAY,gBAAiB,cAAe,gBAAiB,QAAoB,IAAI,IAAQ,IAA6B,UAAxBhK,EAAOsf,eAA4B,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAab,EAAoB,CACvQle,OAAO,QAAgB,CAAC,aAAc,CACpC,eAAgBL,EAAMqf,UACtB,mBAAoBrf,EAAMsf,SAASxa,WAEpC,CACD9D,SAAS,QAAS,IAAM,EAAC,QAAaoZ,EAAqB,CACzDxP,WAAY5K,EAAMggB,WAClB,sBAAuBngB,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAMggB,WAAa9W,GAC9E7I,MAAO,uBACPwa,YAAajb,EAAKiK,GAAG,8BACrB/I,KAAM,WACNmf,KAAMjgB,EAAMsf,SAASxa,OAAS,EAAI,IACjC,KAAM,EAAG,CAAC,aAAc,cAAe,UAAU,QAAoB,MAAO,GAAY,EAAC,QAAa4D,EAAsB,CAC7HrI,MAAO,2BACPS,KAAM,UACNQ,KAAMrB,EAASigB,0BACf3W,QAAStJ,EAASkgB,uBACjB,CACDnf,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,0BAA2B,KAC9FC,EAAG,GACF,EAAG,CAAC,OAAQ,aAAa,QAAamQ,EAA2B,CAClErP,WAAY5K,EAAMogB,kBAClB,sBAAuBvgB,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAMogB,kBAAoBlX,GACrF7I,MAAO,0BACPiB,KAAMrB,EAASigB,2BACd,CACDlf,SAAS,QAAS,IAAM,EAAC,QAAasd,EAA4B,CAChEpT,MAAO,QACN,CACDlK,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,qBAAsB,KACzFC,EAAG,KACD,QAAawU,EAA4B,CAC3CpT,MAAO,YACN,CACDlK,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,yBAA0B,KAC7FC,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,aAAc,aACrBA,EAAG,GACF,EAAG,CAAC,cAAe,QAAoB,IAAI,IAAO,QAAayU,EAAoB,CACpFle,OAAO,QAAgB,CAAC,mBAAoB,CAC1C,mBAAoBL,EAAMsf,SAASxa,OACnC,eAAgB9E,EAAMqf,cAEvB,CACDre,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,CAClDX,OAAO,QAAgB,CAAC,wBAAyB,CAC/C,mBAAoBL,EAAMsf,SAASxa,WAEpC,EAAC,QAAaia,EAAyB,CACxCtK,SAAUxU,EAASyU,aACnB3K,IAAK,mBACJ,CACD/I,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,CAClDX,OAAO,QAAgB,CAAC,wBAAyB,CAC/C,gBAAiBL,EAAMqgB,iBAExB,EAAC,QAAalE,EAAoB,CACnC9b,MAAO,+BACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAasb,EAAoB,KAAM,CAC9Dtb,SAAS,QAAS,IAAM,EAAC,QAAawd,KACtC1U,EAAG,KACD,SAAiB,QAAiB7J,EAASqgB,eAAiBrgB,EAASsgB,cAAgB,IAAK,IAAI,QAAajE,EAAoB,KAAM,CACvItb,SAAS,QAAS,IAAM,EAAC,QAAayd,KACtC3U,EAAG,KACD,SAAiB,QAAiB7J,EAASugB,oBAAsB,IAAK,IAAI,QAAalE,EAAoB,KAAM,CACnHtb,SAAS,QAAS,IAAM,EAAC,QAAa0d,KACtC5U,EAAG,KACD,SAAiB,QAAiB7J,EAASwgB,kBAAmB,KAClE3W,EAAG,KACD,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAaiK,EAAuB,CACtH2M,SAAUzgB,EAAS0gB,eACnBxM,QAASvU,EAAKiK,GAAG,kBACjBV,UAAW,OACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDX,MAAO,2CACPkJ,QAAS1J,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAAS2gB,SAAW3gB,EAAS2gB,WAAWlW,KACvF,EAAC,QAAajC,EAA8B,CAC7CkB,KAAM,aAERG,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAaiK,EAAuB,CAClE2M,SAAUzgB,EAAS0gB,eACnBxM,QAASvU,EAAKiK,GAAG,sBACjBV,UAAW,OACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAa6d,EAAwB,KAAM,CAClEgC,UAAU,QAAS,IAAM,EAAC,QAAajC,EAA6B,CAClEve,MAAO,wBACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAa2d,EAA6B,KAAM,CACvE3d,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,MAAM,QAAiBpB,EAAKiK,GAAG,yBAA0B,IAAI,QAAawQ,EAAsB,CAC3LzP,WAAY5K,EAAM8gB,aAClB,sBAAuBjhB,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAM8gB,aAAe5X,GAChF6X,SAAU9gB,EAAS+gB,sBACnB1f,KAAM,SACL,KAAM,EAAG,CAAC,aAAc,iBAC3BwI,EAAG,MAELA,EAAG,MAEL9I,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDX,MAAO,4CACPkJ,QAAS1J,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAASghB,YAAchhB,EAASghB,cAAcvW,KAC7F,EAAC,QAAajC,EAA8B,CAC7CkB,KAAM,aAERG,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAaiK,EAAuB,CAClE2M,SAAUzgB,EAAS0gB,eACnBxM,QAASvU,EAAKiK,GAAG,oBACjBV,UAAW,OACV,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAa6d,EAAwB,KAAM,CAClEgC,UAAU,QAAS,IAAM,EAAC,QAAajC,EAA6B,CAClEve,MAAO,wBACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAa2d,EAA6B,CACjEpV,QAAStJ,EAASihB,eACjB,CACDlgB,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,oBAAqB,KACxFC,EAAG,GACF,EAAG,CAAC,aAAa,QAAa6U,EAA6B,CAC5DpV,QAAStJ,EAASkhB,kBACjB,CACDngB,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,yBAA0B,KAC7FC,EAAG,GACF,EAAG,CAAC,cACPA,EAAG,MAEL9I,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,GAAY,EAAC,QAAayH,EAA8B,CAC7GkB,KAAM,kBAERG,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,WAAY,iBAAkB,KAAK,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAY9J,EAAMsf,SAAS/H,QAAQ6J,UAAW5E,KACtI,WAAc,QAAasC,EAA2B,CAC3D5W,IAAKsU,EAAK5b,KACV4b,KAAMA,EACN6E,OAAQphB,EAASqhB,WACjBC,SAAUthB,EAASuhB,aACnBC,eAAgB5hB,EAAO,KAAOA,EAAO,GAAK8D,GAAKA,EAAE0M,IAAM,EAAQ,SAC9D,KAAM,EAAG,CAAC,OAAQ,SAAU,eAC7B,QACJvG,EAAG,GACF,EAAG,CAAC,cAAe,KACtBA,EAAG,GACF,EAAG,CAAC,WACT,C,8GClOO,SAAS4X,GAAcC,EAAO/gB,EAAMghB,GACvC,MAAMvR,EAAMuR,EAAUD,EACtB,MAAO,CACHhF,SAAUtM,EACV2M,MAAO,KAAKpc,MAASyP,KACrB4M,QAAS,aAAa5M,WAAazP,mBACnCsc,OAAQ,QAAQ7M,UAExB,CAQO,SAASwR,GAAerF,EAAMsF,GACjC,MAAMnL,EAAM,CACRtG,IAAKmM,EAAKG,SACVoF,GAAIvF,EAAKQ,MACTgF,KAAMxF,EAAKS,QACXgF,IAAKzF,EAAKU,QAEd,OAAOvG,EAAImL,IAAWtF,EAAKG,QAC/B,CAOO,SAASuF,GAAmB5C,EAAUsC,GACzCtC,EAASnJ,QAAQpB,IACb,GAA2B,aAAvBA,EAAK2F,cACL,OAEJ,MAAMyH,EAAOT,GAAc3M,EAAK4M,MAAO5M,EAAKnU,KAAMghB,GAClDhf,OAAO8D,OAAOqO,EAAMoN,IAE5B,CC7CA,MAAMC,GAAI,IAAIC,YAAY,CACtB,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,aAGlFC,GAAOA,CAACC,EAAGpgB,IAAOogB,IAAMpgB,EAAMogB,GAAM,GAAKpgB,EAE/C,SAASqgB,GAAaC,EAAOC,GACzB,MAAMC,EAAI,IAAIN,YAAY,IAE1B,IAAK,IAAI/f,EAAI,EAAGA,EAAI,GAAIA,IACpBqgB,EAAErgB,GAAMmgB,EAAU,EAAJngB,IAAU,GAAOmgB,EAAU,EAAJngB,EAAQ,IAAM,GAAOmgB,EAAU,EAAJngB,EAAQ,IAAM,EAAKmgB,EAAU,EAAJngB,EAAQ,GAGrG,IAAK,IAAIA,EAAI,GAAIA,EAAI,GAAIA,IAAK,CAC1B,MAAMsgB,EAAKN,GAAKK,EAAErgB,EAAI,IAAK,GAAKggB,GAAKK,EAAErgB,EAAI,IAAK,IAAOqgB,EAAErgB,EAAI,MAAQ,EAC/DugB,EAAKP,GAAKK,EAAErgB,EAAI,GAAI,IAAMggB,GAAKK,EAAErgB,EAAI,GAAI,IAAOqgB,EAAErgB,EAAI,KAAO,GACnEqgB,EAAErgB,GAAMqgB,EAAErgB,EAAI,IAAMsgB,EAAKD,EAAErgB,EAAI,GAAKugB,IAAQ,CAChD,CAEA,IAAKnf,EAAGI,EAAGpB,EAAGC,EAAGX,EAAG2B,EAAGC,EAAG6C,GAAKic,EAE/B,IAAK,IAAIpgB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,MAAMwgB,EAAKR,GAAKtgB,EAAG,GAAKsgB,GAAKtgB,EAAG,IAAMsgB,GAAKtgB,EAAG,IACxC+Y,EAAM/Y,EAAI2B,GAAO3B,EAAI4B,EACrBmf,EAAStc,EAAIqc,EAAK/H,EAAKqH,GAAE9f,GAAKqgB,EAAErgB,KAAQ,EACxC0gB,EAAKV,GAAK5e,EAAG,GAAK4e,GAAK5e,EAAG,IAAM4e,GAAK5e,EAAG,IACxCuf,EAAOvf,EAAII,EAAMJ,EAAIhB,EAAMoB,EAAIpB,EAC/BwgB,EAASF,EAAKC,IAAS,EAE7Bxc,EAAI7C,EAAGA,EAAID,EAAGA,EAAI3B,EAClBA,EAAKW,EAAIogB,IAAW,EACpBpgB,EAAID,EAAGA,EAAIoB,EAAGA,EAAIJ,EAClBA,EAAKqf,EAAQG,IAAW,CAC5B,CAEAR,EAAE,GAAMA,EAAE,GAAKhf,IAAO,EACtBgf,EAAE,GAAMA,EAAE,GAAK5e,IAAO,EACtB4e,EAAE,GAAMA,EAAE,GAAKhgB,IAAO,EACtBggB,EAAE,GAAMA,EAAE,GAAK/f,IAAO,EACtB+f,EAAE,GAAMA,EAAE,GAAK1gB,IAAO,EACtB0gB,EAAE,GAAMA,EAAE,GAAK/e,IAAO,EACtB+e,EAAE,GAAMA,EAAE,GAAK9e,IAAO,EACtB8e,EAAE,GAAMA,EAAE,GAAKjc,IAAO,CAC1B,CAMO,SAAS0c,KACZ,IAAIT,EAAI,IAAIL,YAAY,CACpB,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,aAGpCe,EAAS,IAAIre,WAAW,IACxBse,EAAe,EACfC,EAAc,EAElB,MAAO,CACHC,MAAAA,CAAOvZ,GACHsZ,GAAetZ,EAAKlF,OACpB,IAAI0e,EAAS,EAEb,GAAIH,EAAe,EAAG,CAClB,MAAMI,EAAS,GAAKJ,EACdK,EAASxc,KAAKqU,IAAIkI,EAAQzZ,EAAKlF,QACrCse,EAAOrH,IAAI/R,EAAK2Z,SAAS,EAAGD,GAASL,GACrCA,GAAgBK,EAChBF,EAASE,EAEY,KAAjBL,IACAb,GAAaY,EAAQV,GACrBW,EAAe,EAEvB,CAEA,MAAOG,EAAS,IAAMxZ,EAAKlF,OACvB0d,GAAaxY,EAAK2Z,SAASH,EAAQA,EAAS,IAAKd,GACjDc,GAAU,GAGVA,EAASxZ,EAAKlF,SACdse,EAAOrH,IAAI/R,EAAK2Z,SAASH,GAAS,GAClCH,EAAerZ,EAAKlF,OAAS0e,EAErC,EACAI,MAAAA,GACI,MAAMC,EAA0B,EAAdP,EAGlBF,EAAOC,KAAkB,IAErBA,EAAe,KACfD,EAAOU,KAAK,EAAGT,EAAc,IAC7Bb,GAAaY,EAAQV,GACrBW,EAAe,GAGnBD,EAAOU,KAAK,EAAGT,EAAc,IAG7B,MAAMU,EAAO,IAAIC,SAASZ,EAAOA,QACjCW,EAAKE,UAAU,GAAI/c,KAAKgd,MAAML,EAAY,aAAc,GACxDE,EAAKE,UAAU,GAAIJ,IAAc,GAAG,GAEpCrB,GAAaY,EAAQV,GAGrB,IAAIyB,EAAM,GACV,IAAK,IAAI7hB,EAAI,EAAGA,EAAI,EAAGA,IACnB6hB,GAAOzB,EAAEpgB,GAAGwD,SAAS,IAAIyQ,SAAS,EAAG,KAEzC,OAAO4N,CACX,EAER,CAQOC,eAAeC,GAAc7H,GAChC,MAAM8H,EAASnB,KAEToB,EAAa,QACnB,IAAIf,EAAS,EAEb,MAAOA,EAAShH,EAAKlb,KAAM,CACvB,MAAMkjB,EAAQhI,EAAKjF,MAAMiM,EAAQtc,KAAKqU,IAAIiI,EAASe,EAAY/H,EAAKlb,OAC9D8hB,QAAeoB,EAAMC,cAC3BH,EAAOf,OAAO,IAAIxe,WAAWqe,IAC7BI,GAAUe,EAGNf,EAAS,SAAqBe,GAC9BxX,QAAQ2X,IAAI,oBAAoBxd,KAAKqU,IAAI,IAAKrU,KAAKyd,MAAMnB,EAAShH,EAAKlb,KAAO,SAEtF,CAEA,OAAOgjB,EAAOV,QAClB,CCzIA,QACEhjB,KAAM,aACNgb,WAAY,CACVgJ,eAAc,IAEhB/jB,MAAO,CACLgkB,gBAAiB,CACf/jB,KAAMC,OACNC,QAAS,MACTyc,UAAU,GAEZpC,iBAAkB,CAChBva,KAAMU,QACNR,SAAS,EACTyc,UAAU,GAEZhC,gBAAiB,CACf3a,KAAM8F,OACN5F,QAAS,EACTyc,UAAU,GAEZnC,YAAa,CACXxa,KAAM8F,OACN5F,QAAS,EACTyc,UAAU,GAEZ9B,eAAgB,CACd7a,KAAMU,QACNR,SAAS,EACTyc,UAAU,GAEZ/C,cAAe,CACb5Z,KAAMC,OACNC,QAAS,WACTyc,UAAU,GAEZ7C,YAAa,CACX9Z,KAAMC,OACNC,QAAS,GACTyc,UAAU,GAEZtC,eAAgB,CACdra,KAAMC,OACNC,QAAS,UACTyc,UAAU,GAEZqH,aAAc,CACZhkB,KAAMC,OACNC,QAAS,QACTyc,UAAU,GAEZsH,gBAAiB,CACfjkB,KAAMC,OACNC,QAAS,GACTyc,UAAU,GAEZvC,UAAW,CACTpa,KAAMU,QACNR,SAAS,EACTyc,UAAU,GAEZuH,UAAW,CACTlkB,KAAMC,OACNC,QAAS,GACTyc,UAAU,GAEZ2B,aAAc,CACZte,KAAMC,OACNC,QAAS,UACTyc,UAAU,GAEZzC,aAAc,CACZla,KAAMC,OACNC,QAAS,GACTyc,UAAU,GAEZrC,cAAe,CACbta,KAAMU,QACNR,SAAS,EACTyc,UAAU,IAGd,IAAAzT,GACE,MAAO,CACLsV,SAAU,GACVD,WAAW,EACX4F,aAAc,EACdC,cAAe,GACf7E,cAAc,EACd8E,eAAgB,EAChBC,YAAa,EACbpF,WAAY,GACZI,kBAAmB,OAEnBU,cAAc,EACduE,cAAe,GAEfC,WAAY,KAEZC,WAAY,KAGZC,YAAa,GAEbC,cAAe,EAEfC,qBAAsB,EAGtBC,iBAAkB,IAAIC,IAE1B,EACAva,MAAO,CACLiU,SAAU,CACR,OAAAuG,GACMlkB,KAAK2d,SAASxa,OAASnD,KAAKwjB,gBAC9BxjB,KAAKkK,UAAU,KACbN,WAAW,KACL5J,KAAK6J,MAAMsa,iBAEbnkB,KAAK6J,MAAMsa,gBAAgBC,aAAa,IAEzC,OAGPpkB,KAAKwjB,eAAiBxjB,KAAK2d,SAASxa,MACtC,EACAkhB,MAAM,GAERlB,aAAc,CACZ,OAAAe,GACE3D,GAAmBvgB,KAAK2d,SAAU3d,KAAKigB,QACzC,EACAzP,WAAW,GAEb4S,gBAAiB,CACf,OAAAc,GAC4B,SAAtBlkB,KAAKmjB,cACP5C,GAAmBvgB,KAAK2d,SAAU3d,KAAKigB,QAE3C,EACAzP,WAAW,GAEb,YAAA2O,CAAa9K,GACXrU,KAAKsO,OAAOgW,OAAO,uBAAwBjQ,EAC7C,GAEFtU,SAAU,KACL,SAAW,CAAC,sBACf,kBAAA8e,GACE,OAAO7e,KAAK2d,SAAS1X,OAAOmN,GAAwB,SAAhBA,EAAKtI,QAAqC,YAAhBsI,EAAKtI,QAAsB3H,MAC3F,EACA,gBAAA2b,GACE,OAAO9e,KAAK2d,SAAS1X,OAAOmN,GAAwB,cAAhBA,EAAKtI,QAAwB3H,MACnE,EACA,cAAAwb,GACE,OAAO3e,KAAK2d,SAAS1X,OAAOmN,GAAwB,cAAhBA,EAAKtI,QAAwB3H,MACnE,EACA,YAAAyb,GACE,OAAO5e,KAAK6jB,YAAY1gB,MAC1B,EACA,OAAAgY,GAEE,OAAOtX,OAAO4F,WAAa,IAAM,QAAU,SAC7C,EACA,cAAAuV,GACE,OAAOnb,OAAO4F,WAAa,GAC7B,EACA,OAAAwW,GAEE,MAA6B,SAAtBjgB,KAAKmjB,aAA0BnjB,KAAKojB,gBAAkBpjB,KAAKqjB,WAAa,GAAGxf,OAAO0gB,SAASC,aAAa3gB,OAAO0gB,SAASE,YACjI,EACA,yBAAAlG,GACE,OAAIve,KAAK2d,SAASxa,QAGTU,OAAO4F,WAAa,IAFpB,QAEoC,QAE/C,GAEF,OAAAW,GACEzG,SAAS0G,iBAAiB,QAASrK,KAAK0kB,aACxC1kB,KAAKmf,aAAenf,KAAK2kB,iBAC3B,EACA,aAAApa,GACE5G,SAAS6G,oBAAoB,QAASxK,KAAK0kB,aAE3C1kB,KAAK6jB,YAAc,GACnB7jB,KAAK2d,SAAW,GAChB3d,KAAK8jB,cAAgB,CACvB,EACArZ,QAAS,CAEP,gBAAAsQ,CAAiBiB,EAAUC,EAAY,IACrC,IAAKD,GAAYA,EAAS7Y,QAAU8Y,EAClC,OAAOD,EAET,MAAME,EAAeF,EAASG,YAAY,KAC1C,IAAIld,EAAM8c,EACNG,EAAe,GACjBjd,EAAO+c,EAASI,UAAU,EAAGF,GAC7BH,EAAMC,EAASI,UAAUF,KAEzBjd,EAAO+c,EACPD,EAAM,IAGR,MAAMM,EAAUN,EAAI5Y,OAAS,EACvBmZ,EAAYL,EAAYI,EAAU,EACxC,OAAIC,GAAa,EACRN,EAASI,UAAU,EAAGH,EAAY,GAAK,MAEzChd,EAAKmd,UAAU,EAAGE,GAAa,MAAQrd,EAAK2W,OAAO,GAAKmG,CACjE,EACA,UAAA+B,CAAWjD,GAET,IAAK7a,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKA,KAAKgK,KACrD,OAIF,GAAI7kB,KAAK8jB,eAAiB9jB,KAAK+jB,qBAAsB,CACnD/jB,KAAK6jB,YAAY/O,KAAK+F,GACtB,MAAMiK,EAAc9kB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKA,KAAKgK,KAEtE,YADIC,IAAaA,EAAYha,OAAS,WAExC,CAGA9K,KAAK8jB,gBACL,MAAMiB,EAAgB/kB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKA,KAAKgK,KACpEE,IAAeA,EAAcja,OAAS,aAC1C,MAAMka,EAAWhlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKA,KAAKgK,KAC7D9L,EAAgBiM,GAAUjM,eAAiB/Y,KAAK+Y,cAGtD,GAAsB,aAAlBA,EAEF,YADA/Y,KAAKilB,iBAAiBpK,GAOxB,GAAsB,gBAAlB9B,EAAiC,CACnC,MAAMmM,EAAsB,SAM5B,YALIrK,EAAKA,KAAKlb,MAAQulB,EACpBllB,KAAKmlB,0BAA0BtK,GAE/B7a,KAAKilB,iBAAiBpK,GAG1B,CAGA,GAAsB,YAAlB9B,EAA6B,CAC/B,MAAMqM,EAA0B,QAMhC,YALIvK,EAAKA,KAAKlb,KAAOylB,EACnBplB,KAAKqlB,mBAAmBxK,GAExB7a,KAAKilB,iBAAiBpK,GAG1B,CAGA,MAAMyK,EAAkB,SACpBzK,EAAKA,KAAKlb,KAAO2lB,EACnBtlB,KAAKqlB,mBAAmBxK,GAExB7a,KAAKilB,iBAAiBpK,EAE1B,EAEA,kBAAA0K,GAEE,GAAgC,IAA5BvlB,KAAK6jB,YAAY1gB,QAAgBnD,KAAK8jB,eAAiB9jB,KAAK+jB,qBAC9D,OAIF,MAAMyB,EAAWxlB,KAAK6jB,YAAY4B,QAC9BD,GAAYxlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQW,EAAS3K,KAAKgK,KACpE7kB,KAAK8d,WAAW0H,GAGhBxlB,KAAKulB,oBAET,EAEA,gBAAAG,GACE1lB,KAAK8jB,cAAgBve,KAAKuK,IAAI,EAAG9P,KAAK8jB,cAAgB,GAGtD9jB,KAAKulB,qBAGsB,IAAvBvlB,KAAK8jB,eAAmD,IAA5B9jB,KAAK6jB,YAAY1gB,SAC/CnD,KAAK0d,WAAY,EAErB,EAEA,sBAAMuH,CAAiBpK,GACrB,MAAMmK,EAAWhlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKA,KAAKgK,KACnE,IAAKG,EAAU,OAEf,MAAMW,EAAqBX,EAAShL,eAC9BjB,EAAgBiM,EAASjM,eAAiB/Y,KAAK+Y,cAC/CQ,EAAYvZ,KAAKuZ,WAA+B,aAAlBR,EAC9BS,EAAmC,aAAlBT,EAA+B,UAAY/Y,KAAKwZ,eAGjEoM,EAAkB,IAAIC,gBAC5B7lB,KAAKgkB,iBAAiB5J,IAAIS,EAAKA,KAAKgK,IAAKe,GACzC,MAAME,EAAW,IAAIC,SAOrB,GANAD,EAASE,OAAO,OAAQnL,EAAKA,MACP,aAAlB9B,GACF+M,EAASE,OAAO,MAAOnL,EAAKA,KAAKnM,KAIb,gBAAlBqK,EACF,IACE3N,QAAQ2X,IAAI,8CACZ,MAAMJ,QAAeD,GAAc7H,EAAKA,MACxCiL,EAASE,OAAO,SAAUrD,GAC1BvX,QAAQ2X,IAAI,mBAAoBJ,EAClC,CAAE,MAAOxX,GACPC,QAAQrD,MAAM,4BAA6BoD,EAE7C,EAEF,EAAAH,GAAA,GAAM,CACJ0D,IAAK,0BAAiCiX,EAAqB,kBAAoB5M,GAAiB/Y,KAAKiZ,YAAc,gBAAkBgN,mBAAmBjmB,KAAKiZ,aAAe,IAAM,mBAAqBO,EAAiB,cAAgBD,EAAY,iBAAmB0M,mBAAmBjmB,KAAKqZ,cAC/RzO,OAAQ,OACRvC,KAAMyd,EACN7a,cAAc,EACdib,OAAQN,EAAgBM,OAExBC,iBAAkBC,IAChB,MAAMC,EAAmB9gB,KAAKyd,MAAMoD,EAAcE,OAASF,EAAcG,MAAQ,KACjF1L,EAAK2L,WAAW,CACdC,QAASJ,EACTxL,KAAMA,EAAKA,UAGdjY,KAAK8jB,IACN7L,EAAKkD,UAAU2I,EAAK7L,EAAKA,QACxBtE,MAAMpL,IAEU,kBAAbA,EAAIlM,MAAyC,iBAAbkM,EAAIwb,KAIpCxb,EAAIT,UAAoC,MAAxBS,EAAIT,SAASI,QAC/B9K,KAAKujB,cAAczO,KAAK+F,GACxBA,EAAKtH,QAAQpI,EAAK0P,EAAKA,OACb1P,EAAIT,WAEd1K,KAAKujB,cAAczO,KAAK+F,GACxBA,EAAKtH,QAAQpI,EAAK0P,EAAKA,OATvBzP,QAAQ2X,IAAI,SAAUlI,EAAKA,KAAK5b,QAWjC2nB,QAAQ,KAET5mB,KAAKgkB,iBAAiB6C,OAAOhM,EAAKA,KAAKgK,KAEvC7kB,KAAK0lB,oBAET,EAEA,wBAAML,CAAmBxK,GACvB,MAAMmK,EAAWhlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKA,KAAKgK,KACnE,IAAKG,EAAU,OAEf,MAAMjM,EAAgBiM,EAASjM,eAAiB/Y,KAAK+Y,cAG/C6M,EAAkB,IAAIC,gBAC5B7lB,KAAKgkB,iBAAiB5J,IAAIS,EAAKA,KAAKgK,IAAKe,GAKzC,MAAMhD,EAA+B,YAAlB7J,EAA8B,QAC/C,SAEI+N,EAAWjM,EAAKA,KAAKlb,KACrBonB,EAAWlM,EAAKA,KAAK1b,MAAQ,2BAC7B6nB,EAAczhB,KAAK0hB,KAAKH,EAAWlE,GACnC+C,EAAqBX,EAAShL,eAC9BT,EAAYvZ,KAAKuZ,WAA+B,aAAlBR,EAC9BS,EAAmC,aAAlBT,EAA+B,UAAY/Y,KAAKwZ,eAGvE,IAAI0N,EAAoB,KACxB,GAAsB,gBAAlBnO,EACF,IACE3N,QAAQ2X,IAAI,sDACZmE,QAA0BxE,GAAc7H,EAAKA,MAC7CzP,QAAQ2X,IAAI,mBAAoBmE,EAClC,CAAE,MAAO/b,GACPC,QAAQrD,MAAM,4BAA6BoD,EAC7C,CAEF,IAEE,MAAMgc,EAAe,IAAIpB,SACzBoB,EAAanB,OAAO,mBAAoBnL,EAAKA,KAAK5b,MAClDkoB,EAAanB,OAAO,mBAAoBe,GACxCI,EAAanB,OAAO,cAAegB,EAAY7iB,YAC/C,MAAMijB,QAAqB,EAAApc,GAAA,GAAM,CAC/B0D,IAAK,0BAAiCiX,EAAqB,kBAAoB5M,GAAiB/Y,KAAKiZ,YAAc,gBAAkBgN,mBAAmBjmB,KAAKiZ,aAAe,IAAM,mBAAqBO,EAAiB,cAAgBD,EAAY,iBAAmB0M,mBAAmBjmB,KAAKqZ,cAAgB,oBAC/SzO,OAAQ,OACRvC,KAAM8e,EACNlc,cAAc,IAEhB,IAAKmc,EAAa/e,KAAKiO,QACrB,MAAM,IAAI5S,MAAM1D,KAAKkI,GAAG,8BAAgC,KAAOkf,EAAa/e,KAAKmU,SAEnF,MAAM6K,EAAWD,EAAa/e,KAAKgf,SACnCjc,QAAQ2X,IAAI,sBAAuBsE,GAGnC,MAAMrC,EAAWhlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKA,KAAKgK,KAC/DG,IACFA,EAASgC,YAAcA,EACvBhC,EAASqC,SAAWA,GAItB,MAAMC,EAAiB,EACjBC,EAAgB,IAAItZ,MAAM+Y,GAAa7E,KAAK,GAClD,IAAIqF,EAAiB,EACjBC,GAAW,EACXC,EAAW,GACXC,GAAc,EAElB,MAAMC,EAAcnF,UAClB,GAAIgF,GAAYE,EAAa,OAC7B,MAAMlS,EAAQoS,EAAajF,EACrBlN,EAAMnQ,KAAKqU,IAAInE,EAAQmN,EAAYkE,GACnCjE,EAAQhI,EAAKA,KAAKjF,MAAMH,EAAOC,GAC/BoQ,EAAW,IAAIC,SACrBD,EAASE,OAAO,OAAQnD,EAAO,GAAGhI,EAAKA,KAAK5b,YAAY4oB,EAAW1jB,WAAWyQ,SAAS,EAAG,QAC1FkR,EAASE,OAAO,aAAc6B,EAAW1jB,YACzC2hB,EAASE,OAAO,cAAegB,EAAY7iB,YAC3C2hB,EAASE,OAAO,WAAYqB,GAC5BvB,EAASE,OAAO,mBAAoBnL,EAAKA,KAAK5b,MAC9C6mB,EAASE,OAAO,mBAAoBe,GACpC,IAAIe,EAAa,EACjB,MAAMC,EAAa,EACnB,MAAOD,EAAaC,EAAY,CAC9B,GAAIN,GAAYE,EAAa,OAC7B,IAmBE,kBAlBM,EAAA3c,GAAA,GAAM,CACV0D,IAAK,0BAAiCiX,EAAqB,kBAAoB5M,GAAiB/Y,KAAKiZ,YAAc,gBAAkBgN,mBAAmBjmB,KAAKiZ,aAAe,IAAM,mBAAqBO,EAAiB,cAAgBD,EAAY,iBAAmB0M,mBAAmBjmB,KAAKqZ,cAAgB,gBAC/SzO,OAAQ,OACRvC,KAAMyd,EACN7a,cAAc,EACdib,OAAQN,EAAgBM,OAExBC,iBAAkBC,IAChB,GAAIqB,GAAYE,EAAa,OAC7B,MAAMlB,EAAUlhB,KAAKyd,MAAMoD,EAAcE,OAASF,EAAcG,MAAQ,KACxEgB,EAAcM,GAAcpB,EAC5B,MAAMuB,EAAeziB,KAAKyd,MAAMuE,EAAcU,OAAO,CAAClmB,EAAGI,IAAMJ,EAAII,EAAG,GAAK6kB,GAC3EnM,EAAK2L,WAAW,CACdC,QAASuB,EACTnN,KAAMA,EAAKA,SAKnB,CAAE,MAAO1P,GAEP,GAAiB,kBAAbA,EAAIlM,MAAyC,iBAAbkM,EAAIwb,KAGtC,OAFAgB,GAAc,OACdvc,QAAQ2X,IAAI,WAAYlI,EAAKA,KAAK5b,MAKpC,GAFA6oB,IACA1c,QAAQiC,KAAK,MAAMwa,EAAa,KAAKb,cAAwBc,KAAcC,MAAgB5c,GACvF2c,GAAcC,EAGhB,MAFAN,GAAW,EACXC,EAAW,MAAMG,EAAa,KAAKb,WAAqB7b,EAAIqR,UACtD,IAAI9Y,MAAMgkB,SAGZ,IAAInlB,QAAQ2lB,GAAWte,WAAWse,EAAS,IAAOJ,GAC1D,CACF,GAIIK,EAAO,GACb,IAAK,IAAIxnB,EAAI,EAAGA,EAAI2mB,EAAgB3mB,IAClCwnB,EAAKrT,KAAK,WACR,MAAO0S,EAAiBR,IAAgBS,IAAaE,EAAa,CAChE,MAAMS,EAAeZ,IACrB,UACQI,EAAYQ,EACpB,CAAE,MAAO/nB,GACFsnB,IACHF,GAAW,EACXC,EAAWrnB,EAAEmc,SAEf,KACF,CACF,CACD,EAbS,IAkBZ,SAHMja,QAAQ8lB,IAAIF,GAGdR,EAEF,YADAvc,QAAQ2X,IAAI,kBAGd,GAAI0E,EACF,MAAM,IAAI/jB,MAAMgkB,GAAY1nB,KAAKkI,GAAG,2BAItClI,KAAKqW,SAAS,CACZlX,KAAM,OACNqd,QAASxc,KAAKkI,GAAG,2BACjBogB,SAAU,IAEZ,MAAMC,EAAgB,IAAIxC,SAC1BwC,EAAcvC,OAAO,WAAYqB,GACjCkB,EAAcvC,OAAO,cAAegB,EAAY7iB,YAChDokB,EAAcvC,OAAO,mBAAoBnL,EAAKA,KAAK5b,MACnDspB,EAAcvC,OAAO,mBAAoBe,GAErCG,GACFqB,EAAcvC,OAAO,SAAUkB,GAEjC,MAAMxc,QAAiB,EAAAM,GAAA,GAAM,CAC3B0D,IAAK,0BAAiCiX,EAAqB,kBAAoB5M,GAAiB/Y,KAAKiZ,YAAc,gBAAkBgN,mBAAmBjmB,KAAKiZ,aAAe,IAAM,mBAAqBO,EAAiB,cAAgBD,EAAY,iBAAmB0M,mBAAmBjmB,KAAKqZ,cAAgB,2BAC/SzO,OAAQ,OACRvC,KAAMkgB,EACNtd,cAAc,IAIhBjL,KAAKqW,SAASmS,WAGd3N,EAAKkD,UAAUrT,EAAUmQ,EAAKA,KAChC,CAAE,MAAO1P,GAEP,GAAiB,kBAAbA,EAAIlM,MAAyC,iBAAbkM,EAAIwb,KAEtC,YADAvb,QAAQ2X,IAAI,WAAYlI,EAAKA,KAAK5b,MAGpCmM,QAAQrD,MAAM,UAAWoD,GAGzB,MAAM6Z,EAAWhlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKA,KAAKgK,KAC/DG,GAAYA,EAASqC,UACvBrnB,KAAKyoB,uBAAuBzD,EAASqC,SAAUrC,EAASgC,aAAapkB,KAAK,KACxEwI,QAAQ2X,IAAI,iBAAiBiC,EAASqC,cACrC9Q,MAAMmS,IACPtd,QAAQiC,KAAK,iBAAkBqb,KAG/Bvd,EAAIT,UAAoC,MAAxBS,EAAIT,SAASI,QAC/B9K,KAAKujB,cAAczO,KAAK+F,GACxBA,EAAKtH,QAAQpI,EAAK0P,EAAKA,OACb1P,EAAIT,WAEd1K,KAAKujB,cAAczO,KAAK+F,GACxBA,EAAKtH,QAAQpI,EAAK0P,EAAKA,MAE3B,CAAE,QAEA7a,KAAKgkB,iBAAiB6C,OAAOhM,EAAKA,KAAKgK,KAEvC7kB,KAAK0lB,kBACP,CACF,EACA,YAAA7F,CAAahF,GAEP7a,KAAKgkB,iBAAiB2E,IAAI9N,EAAKgK,OACjC7kB,KAAKgkB,iBAAiB5iB,IAAIyZ,EAAKgK,KAAK+D,QACpC5oB,KAAKgkB,iBAAiB6C,OAAOhM,EAAKgK,MAGpC7kB,KAAK6jB,YAAc7jB,KAAK6jB,YAAY5d,OAAOmN,GAAQA,EAAKyH,KAAKgK,MAAQhK,EAAKgK,KAE1E7kB,KAAK2d,SAAW3d,KAAK2d,SAAS1X,OAAOmN,GAAQA,EAAKyR,MAAQhK,EAAKgK,KAC/D7kB,KAAKqW,SAAS,CACZlX,KAAM,OACNqd,QAASxc,KAAKkI,GAAG,qBAAsB,CACrCjJ,KAAMe,KAAK+a,iBAAiBF,EAAK5b,SAGvC,EAEA,4BAAMwpB,CAAuBpB,EAAUL,EAAc,GACnD,UACQ,EAAAhc,GAAA,GAAM,CACV0D,IAAK,iCAAiC2Y,iBAAwBL,IAC9Dpc,OAAQ,MACRK,cAAc,EACd4d,QAAS,MAEXzd,QAAQ2X,IAAI,aAAasE,IAC3B,CAAE,MAAOtf,GACPqD,QAAQiC,KAAK,YAAatF,EAC5B,CACF,EACA,aAAAiW,CAActT,EAAUmQ,GACtB,MAAMmK,EAAWhlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKgK,KAC9D,GAAKG,EAEL,IAEE,MAAMjM,EAAgBiM,EAASjM,eAAiB/Y,KAAK+Y,cACrD,GAAsB,aAAlBA,EAA8B,CAEhC,MAAMiH,EAAQtV,EAASrC,KAAK,GAAGtJ,IAAI+pB,QAAQ,SAAU,IACrD9D,EAAStW,IAAM,GAAG7K,OAAO0gB,SAASC,aAAa3gB,OAAO0gB,SAASE,aAAezE,EAC9E,MAAMQ,EAAOT,GAAcC,EAAOnF,EAAK5b,KAAMe,KAAKigB,SAClDhf,OAAO8D,OAAOigB,EAAUxE,GACxBwE,EAAShF,MAAQA,CACnB,CACAgF,EAASvJ,UAAY,IACrBuJ,EAASla,OAAS,UAGlB9K,KAAK+oB,cAAc/D,GACnBhlB,KAAKqW,SAAS,CACZlX,KAAM,UACNqd,QAASxc,KAAKkI,GAAG,2BAA4B,CAC3CjJ,KAAMe,KAAK+a,iBAAiBF,EAAK5b,UAGrC2K,WAAW,KACT,MAAMwJ,EAAOpT,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKgK,KACtDzR,IAAMA,EAAKtI,OAAS,SACvB,IACL,CAAE,MAAO/C,GACP/H,KAAKqW,SAAStO,MAAM/H,KAAKkI,GAAG,0BAA2B,CACrDjJ,KAAMe,KAAK+a,iBAAiBF,EAAK5b,SAEnC+lB,EAASla,OAAS,WACpB,CAEF,EACA,aAAAie,CAAc/D,GACZ,IACE,MAAM1P,EAAUC,KAAKC,MAAMN,aAAaC,QAAQ,kBAAoB,MAC9D6T,EAAY,CAChB/pB,KAAM+lB,EAAS/lB,KACfyP,IAAKsW,EAAShK,SACd3H,KAAMpP,KAAKC,MACX/E,KAAM6lB,EAAS/lB,KAAK+D,MAAM,KAAK4T,MAAMC,eAEvCvB,EAAQR,KAAKkU,GACb9T,aAAac,QAAQ,gBAAiBT,KAAKiB,UAAUlB,GACvD,CAAE,MAAOjV,GACP+K,QAAQrD,MAAM,yBAA0B1H,EAC1C,CACF,EACA,WAAA4d,CAAY9S,EAAK0P,GACf,MAAMmK,EAAWhlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKgK,KACzDG,IAELhlB,KAAKqW,SAAStO,MAAM/H,KAAKkI,GAAG,0BAA2B,CACrDjJ,KAAMe,KAAK+a,iBAAiBF,EAAK5b,SAEnC+lB,EAASla,OAAS,YAGd9K,KAAKmf,cACPnf,KAAKipB,oBAGT,EACA,UAAAtJ,CAAW9E,GACT,MAAM/P,EAAS9K,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKgK,KAAK/Z,OAClD,SAAXA,GAAgC,YAAXA,GAOzB2M,UAAUC,UAAUC,UAAUuI,GAAerF,EAAM7a,KAAKkjB,kBACxDljB,KAAKqW,SAAS,CACZlX,KAAM,UACNqd,QAASxc,KAAKkI,GAAG,6BATjBlI,KAAKqW,SAAS,CACZlX,KAAM,UACNqd,QAASxc,KAAKkI,GAAG,+BASvB,EACA,YAAAgW,CAAarD,GACX,OAAO,IAAItY,QAAQkgB,MAAOyF,EAASgB,KACjC,IAAIC,EAAgBtO,EAIpB,MAAMuO,EAAmBppB,KAAKyZ,eAAiBoB,EAAK1b,KAAKK,SAAS,WAAaqb,EAAK1b,KAAKK,SAAS,UAAYqb,EAAK1b,KAAKK,SAAS,SAAWqb,EAAK1b,KAAKK,SAAS,OAC/J,GAAI4pB,EACF,IACE,MAAMC,QAAsBrpB,KAAKspB,mBAAmBzO,GAChDwO,IACFF,EAAgBE,EAChBje,QAAQ2X,IAAI,aAAalI,EAAK5b,WAAWoqB,EAAcpqB,cAAc4b,EAAKlb,KAAO,MAAM4pB,QAAQ,YAAYF,EAAc1pB,KAAO,MAAM4pB,QAAQ,QAElJ,CAAE,MAAOpe,GACPC,QAAQiC,KAAK,kBAAmBlC,EAElC,CAIF,MAAMqe,EAAqBL,EAAchqB,KAAKK,SAAS,UAAYQ,KAAK0Z,kBAAoByP,EAAcxpB,KAAO,KAAO,KAAOK,KAAK2Z,YAC9H8P,EAAUN,EAAcxpB,KAAO,KAAO,MAAQ,MAA+B,aAAvBK,KAAK+Y,cAC3D2Q,EAAkB,CAAC7O,EAAMb,KAC7B,MAAM2P,EAAU7lB,IAAIC,gBAAgB8W,GACpC7a,KAAK2d,SAAS7I,KAAK,CACjB+P,IAAKhK,EAAKgK,IACV5lB,KAAM4b,EAAK5b,KACXyP,IAAKib,EACL3O,SAAU,GACVK,MAAO,GACPC,QAAS,GACTC,OAAQ,GACRyE,MAAO,GACPlV,OAAQ,YACR2Q,UAAW,EACXzB,eAAgBA,EAChB8N,WAAY,IAEdI,EAAQrN,IAEV,GAAI2O,EAEF,sBAAmCL,EAAe,KAAOnpB,KAAK8Z,iBAAiBlX,KAAK8jB,IAE9EA,EAAI/mB,KAAO,KAAO,KAAO,MAA+B,aAAvBK,KAAK+Y,gBACxC/Y,KAAKqW,SAAStO,MAAM/H,KAAKkI,GAAG,oCAAqC,CAC/DjJ,KAAMkqB,EAAclqB,QAEtBiqB,EAAOlpB,KAAKkI,GAAG,iCAEjBlI,KAAK0d,WAAY,EAEjB,MAAMkM,EAAU,IAAIC,KAAK,CAACnD,GAAMyC,EAAclqB,KAAM,CAClDE,KAAMunB,EAAIvnB,OAEZyqB,EAAQ/E,IAAMhK,EAAKgK,IACnB,MAAMiF,EAAgB9pB,KAAKyjB,cAGrBkC,EAAqB3lB,KAAKga,gBAAkB4P,EAAQjqB,KAAO,KAAO,KAAO,IAA6B,aAAvBK,KAAK+Y,cACpE,IAAlB+Q,EACFJ,EAAgBE,EAASjE,GAEzB/b,WAAW,KACT8f,EAAgBE,EAASjE,GACzB3lB,KAAKyjB,eACJ,IAAMqG,KAEVvT,MAAMpL,IACPnL,KAAKqW,SAAStO,MAAM/H,KAAKkI,GAAG,wCAAyC,CACnEjJ,KAAMkqB,EAAclqB,QAEtBiqB,EAAO/d,UAEJ,GAAIse,EAAS,CAClBzpB,KAAK0d,WAAY,EACjB,MAAMoM,EAAgB9pB,KAAKyjB,cAGrBkC,EAA4C,aAAvB3lB,KAAK+Y,eAAgC/Y,KAAKga,kBAAmBmP,EAAchqB,KAAKK,SAAS,UAAW2pB,EAAcxpB,KAAO,KAAO,KAAO,IAC5I,IAAlBmqB,EACFJ,EAAgBP,EAAexD,GAE/B/b,WAAW,KACT8f,EAAgBP,EAAexD,GAC/B3lB,KAAKyjB,eACJ,IAAMqG,EAEb,MACE9pB,KAAKqW,SAAStO,MAAM/H,KAAKkI,GAAG,0BAA2B,CACrDjJ,KAAMkqB,EAAclqB,QAEtBiqB,EAAOlpB,KAAKkI,GAAG,iCAGrB,EACA,cAAAiW,CAAe5B,GACb,MAAMyI,EAAWhlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQtI,EAAM1B,KAAKgK,KAChEG,IACFA,EAASvJ,UAAYc,EAAMkK,QAE/B,EACA,OAAAxH,GACE,MAAMuB,EAAOxgB,KAAK2d,SAAS1X,OAAOmN,GAAwB,SAAhBA,EAAKtI,QAAqC,YAAhBsI,EAAKtI,QAAsBkK,IAAI5B,GAAQ8M,GAAe9M,EAAMpT,KAAKkjB,kBAAkB6G,KAAK,MAC5JtS,UAAUC,UAAUC,UAAU6I,GAC9BxgB,KAAKqW,SAAS,CACZlX,KAAM,UACNqd,QAASxc,KAAKkI,GAAG,8BAErB,EACA,aAAAqX,GACMvf,KAAK2d,SAASxa,OAAS,GAEzBnD,KAAKgkB,iBAAiBxP,QAAQ,CAACwV,EAAYnF,KACzCmF,EAAWpB,UAEb5oB,KAAKgkB,iBAAiBiG,QAEtBjqB,KAAK6jB,YAAc,GAEnB7jB,KAAK2d,SAAW,GAChB3d,KAAKqW,SAAS,CACZlX,KAAM,UACNqd,QAASxc,KAAKkI,GAAG,iCAGnBlI,KAAKqW,SAAS,CACZlX,KAAM,OACNqd,QAASxc,KAAKkI,GAAG,6BAGvB,EACA,gBAAAsX,GACMxf,KAAK6e,mBAAqB,GAC5B7e,KAAK2d,SAAW3d,KAAK2d,SAAS1X,OAAOmN,GAAwB,SAAhBA,EAAKtI,QAAqC,YAAhBsI,EAAKtI,QAC5E9K,KAAKqW,SAAS,CACZlX,KAAM,UACNqd,QAASxc,KAAKkI,GAAG,qCAGnBlI,KAAKqW,SAAS,CACZlX,KAAM,OACNqd,QAASxc,KAAKkI,GAAG,iCAGvB,EACA,WAAAwc,CAAYnI,GAEV,GAA6B,UAAzBA,EAAM9d,OAAOyrB,SAAgD,aAAzB3N,EAAM9d,OAAOyrB,QACnD,OAEF,MAAM/W,EAAQoJ,EAAM4N,cAAchX,MAC9BA,EAAMhQ,OAAS,GACjBnD,KAAKoqB,cAAcjX,EAEvB,EACA,qBAAAqL,GAEE,MAAMgC,EAAOxgB,KAAKqe,WAAWrb,MAAM,MAE7BqnB,EAAY7J,EAAKxL,IAAItG,GAAOA,EAAI4b,QAAQrkB,OAAOyI,GAAe,KAARA,GAAYzI,OAAOyI,GAAO,kCAAkC6b,KAAK7b,IAG7H,GAA+B,SAA3B1O,KAAKye,kBAEPze,KAAKoqB,cAAcC,EAAUrV,IAAItG,IACxB,CACL8b,KAAM,SACNC,YAAaC,IACXA,EAAShc,aAIV,GAA+B,aAA3B1O,KAAKye,kBAEd,IAAK,IAAI9d,EAAI,EAAGA,EAAI0pB,EAAUlnB,OAAQxC,IAAK,CACzC,MAAM+N,EAAM2b,EAAU1pB,GAChB8V,EAAW/H,EAAI1L,MAAM,KAAK4T,MAC1B+T,EAAQ,KAAKlU,MAAa/H,KAC1Bkc,EAAU,aAAalc,WAAa+H,mBACpCoU,EAAS,QAAQnc,UAEjBmM,EAAO,IAAIgP,KAAK,GAAInb,EAAI1L,MAAM,KAAK4T,MAAO,CAC9CzX,KAAM,eAER0b,EAAKgK,IAAM5gB,KAAKC,MAAQvD,EACxBka,EAAKnM,IAAMA,EACX1O,KAAK2d,SAAS7I,KAAK,CACjB+P,IAAKhK,EAAKgK,IACV5lB,KAAM4b,EAAK5b,KACXyP,IAAKA,EACLsM,SAAUtM,EACV2M,MAAOsP,EACPrP,QAASsP,EACTrP,OAAQsP,EACR7K,MAAOtR,EACP5D,OAAQ,YACR2Q,UAAW,EACXzB,gBAAgB,EAChBjB,cAAe,WACf+O,WAAY,IAGd9nB,KAAK8d,WAAW,CACdjD,KAAMA,EACN2L,WAAYsE,GAAO9qB,KAAKme,eAAe2M,GACvC/M,UAAW,CAACrT,EAAUmQ,IAAS7a,KAAKge,cAActT,EAAUmQ,GAC5DtH,QAAS,CAACxL,EAAO8S,IAAS7a,KAAKie,YAAYlW,EAAO8S,IAEtD,CAEJ,EACA,aAAAuP,CAAcjX,GACZ,IAAK,IAAIxS,EAAI,EAAGA,EAAIwS,EAAMhQ,OAAQxC,IAChC,GAAsB,SAAlBwS,EAAMxS,GAAG6pB,KAAiB,CAC5B,MAAM3P,EAAO1H,EAAMxS,GAAGoqB,YAEtBlQ,EAAKgK,IAAM5gB,KAAKC,MAAQvD,EAExB,MAAMqqB,EAAchrB,KAAKke,aAAarD,GAClCmQ,aAAuBzoB,SACzByoB,EAAYpoB,KAAKgnB,IACXA,aAAmBC,MACrB7pB,KAAK8d,WAAW,CACdjD,KAAM+O,EACNpD,WAAYsE,GAAO9qB,KAAKme,eAAe2M,GACvC/M,UAAW,CAACrT,EAAUmQ,IAAS7a,KAAKge,cAActT,EAAUmQ,GAC5DtH,QAAS,CAACxL,EAAO8S,IAAS7a,KAAKie,YAAYlW,EAAO8S,OAGrDtE,MAAMpL,IACPC,QAAQ2X,IAAI5X,IAGlB,KAA6B,WAAlBgI,EAAMxS,GAAG6pB,MAClBrX,EAAMxS,GAAG8pB,YAAYQ,IACnB,MAAMC,EAAa,kCACnB,IAAIzU,EAAW,GACXyU,EAAWX,KAAKU,IAClBjgB,GAAA,EAAMmgB,KAAK,gBAAiB,CAC1Bzc,IAAKuc,GACJ,CACDG,aAAc,OACdngB,cAAc,IACbrI,KAAK8H,IACcA,EAAS2gB,QAAQ,gBACrC,GAAuB,KAAnB3gB,EAASI,OAgEX,MAAM,IAAIpH,MAAM,aAhEU,CAE1B,MAAM4nB,EAAc5gB,EAAS2gB,QAAQ,uBACrC,GAAIC,EAAa,CACf,MAAMC,EAAgB,yCAChBC,EAAoB,oCAE1B,IAAIC,EAAUF,EAAcG,KAAKJ,GACjC,GAAe,MAAXG,GAAmBA,EAAQ,GAAI,CACjChV,EAAWgV,EAAQ,GAAG3C,QAAQ,QAAS,IAEvC,IACErS,EAAWkV,mBAAmBlV,EAChC,CAAE,MAAOpW,GACPoW,EAAW,EACb,CACF,CACiB,KAAbA,IACFgV,EAAUD,EAAkBE,KAAKJ,GAClB,MAAXG,GAAmBA,EAAQ,KAC7BhV,EAAWkV,mBAAmBF,EAAQ,KAG5C,CAEA,GAAiB,KAAbhV,EAAiB,CACnB,MAAM/H,EAAM,IAAI5K,IAAImnB,GACpBxU,EAAW/H,EAAIkd,SAAS5oB,MAAM,KAAK4T,KACrC,CAEA,GAAiB,KAAbH,EAAiB,CAEnB,MAAM/H,EAAM,IAAI5K,IAAImnB,GACpB,IAAItU,EAAYjI,EAAIkd,SAAS5oB,MAAM,KAAK4T,QAEnCD,GAA2B,KAAdA,GAAoBA,EAAUxT,OAAS,MACvDwT,EAAY,OAEdF,EAAW,aAAexS,KAAKC,MAAQvD,EAAI,IAAMgW,CACnD,CAGA,MAAM/Q,EAAO8E,EAASrC,KAChBwS,EAAO,IAAIgP,KAAK,CAACjkB,GAAO6Q,EAAU,CACtCtX,KAAMyG,EAAKzG,OAEb0b,EAAKgK,IAAM5gB,KAAKC,MAAQvD,EAExB,MAAMqqB,EAAchrB,KAAKke,aAAarD,GAClCmQ,aAAuBzoB,SACzByoB,EAAYpoB,KAAKgnB,IACXA,aAAmBC,MACrB7pB,KAAK8d,WAAW,CACdjD,KAAM+O,EACNpD,WAAYsE,GAAO9qB,KAAKme,eAAe2M,GACvC/M,UAAW,CAACrT,EAAUmQ,IAAS7a,KAAKge,cAActT,EAAUmQ,GAC5DtH,QAAS,CAACxL,EAAO8S,IAAS7a,KAAKie,YAAYlW,EAAO8S,OAGrDtE,MAAMpL,IACPC,QAAQ2X,IAAI5X,IAGlB,IAGCoL,MAAMxO,IACP/H,KAAKqW,SAAS,CACZlX,KAAM,UACNqd,QAASxc,KAAKkI,GAAG,oCAO/B,EACA,YAAA6K,CAAawJ,GACXvc,KAAK0e,aAAenC,EAAM1G,UAAY,GAAK7V,KAAK2d,SAASxa,OAAS,CACpE,EACA,UAAAmc,GACMtf,KAAKujB,cAAcpgB,OAAS,GAC9BnD,KAAK6rB,iBAAiB7rB,KAAKujB,eAC3BvjB,KAAKujB,cAAgB,IAErBvjB,KAAKqW,SAAS,CACZlX,KAAM,OACNqd,QAASxc,KAAKkI,GAAG,6BAGvB,EACA,qBAAAmX,CAAsBhL,GACpBrU,KAAKqW,SAAS,CACZlX,KAAMkV,EAAM,UAAY,OACxBmI,QAASnI,EAAMrU,KAAKkI,GAAG,0BAA4BlI,KAAKkI,GAAG,6BAIzDmM,GAAOrU,KAAKujB,cAAcpgB,OAAS,GACrCnD,KAAKipB,mBAET,EACA,gBAAA4C,CAAiBC,GACfA,EAAMtX,QAAQqG,IACZ,MAAMiN,EAAajN,EAAKiN,YAAc,EAClCA,EAAa9nB,KAAK0jB,eACpB7I,EAAKiN,WAAaA,EAAa,EAC/B9nB,KAAK8d,WAAW,CACdjD,KAAMA,EAAKA,KACX2L,WAAYsE,GAAO9qB,KAAKme,eAAe2M,GACvC/M,UAAW,CAACrT,EAAUmQ,IAAS7a,KAAKge,cAActT,EAAUmQ,GAC5DtH,QAAS,CAACxL,EAAO8S,IAAS7a,KAAKie,YAAYlW,EAAO8S,MAGpD7a,KAAKqW,SAAS,CACZlX,KAAM,UACNqd,QAASxc,KAAKkI,GAAG,6BAA8B,CAC7CjJ,KAAM4b,EAAK5b,KACX6Q,IAAK9P,KAAK0jB,mBAKpB,EACA,iBAAAuF,GACMjpB,KAAK2jB,YACPoI,aAAa/rB,KAAK2jB,YAEpB3jB,KAAK2jB,WAAa/Z,WAAW,KAC3B,GAAI5J,KAAKmf,cAAgBnf,KAAKujB,cAAcpgB,OAAS,EAAG,CACtD,MAAM6oB,EAAe,IAAIhsB,KAAKujB,eAC9BvjB,KAAKujB,cAAgB,GACrBvjB,KAAK6rB,iBAAiBG,EACxB,GACChsB,KAAK4jB,WACV,EAGA,+BAAMuB,CAA0BtK,GAC9B,MAAMmK,EAAWhlB,KAAK2d,SAASiH,KAAKxR,GAAQA,EAAKyR,MAAQhK,EAAKA,KAAKgK,KACnE,IAAKG,EAAU,OAGf,MAAMY,EAAkB,IAAIC,gBAC5B7lB,KAAKgkB,iBAAiB5J,IAAIS,EAAKA,KAAKgK,IAAKe,GACzC,IACExa,QAAQ2X,IAAI,qCACZ3X,QAAQ2X,IAAI,QAASlI,EAAKA,KAAK5b,KAAM,QAAS4b,EAAKA,KAAKlb,MAGxDkb,EAAK2L,WAAW,CACdC,QAAS,EACT5L,KAAMA,EAAKA,OAEbzP,QAAQ2X,IAAI,uBACZ,MAAMJ,QAAeD,GAAc7H,EAAKA,MAIxC,GAHAzP,QAAQ2X,IAAI,UAAWJ,GAGnBiD,EAAgBM,OAAO+F,QAEzB,YADA7gB,QAAQ2X,IAAI,qBAAsBlI,EAAKA,KAAK5b,MAK9C,MAAMitB,EAAc,IAAI9oB,iBAAiByX,EAAKA,KAAKjF,MAAM,EAAG,KAAKkN,eAC3DqJ,EAAaC,KAAKhtB,OAAOitB,gBAAgBH,IAG/CrR,EAAK2L,WAAW,CACdC,QAAS,GACT5L,KAAMA,EAAKA,OAEbzP,QAAQ2X,IAAI,6BACZ,MAAMuJ,QAAsB,EAAAthB,GAAA,GAAM,CAChC0D,IAAK,mCACL9D,OAAQ,OACRvC,KAAM,CACJye,SAAUjM,EAAKA,KAAKlb,KACpB8W,SAAUoE,EAAKA,KAAK5b,KACpB8nB,SAAUlM,EAAKA,KAAK1b,KACpBwjB,SACAwJ,aACAlT,YAAajZ,KAAKiZ,YAElBO,eAAgBxZ,KAAKwZ,eACrBH,aAAcrZ,KAAKqZ,cAErBpO,cAAc,EACdib,OAAQN,EAAgBM,SAE1B,IAAKoG,EAAcjkB,KAAKiO,QACtB,MAAM,IAAI5S,MAAM4oB,EAAcjkB,KAAKN,OAAS,4BAE9C,MAAMwkB,EAAaD,EAAcjkB,KAIjC,GAHA+C,QAAQ2X,IAAI,eAAgBwJ,GAGxBA,EAAWC,cACbphB,QAAQ2X,IAAI,+CACZlI,EAAK2L,WAAW,CACdC,QAAS,GACT5L,KAAMA,EAAKA,YAER,GAAI0R,EAAWE,UAAYF,EAAWG,aAAc,CAEzD,MAAM,KACJnuB,EAAI,OACJouB,GACEJ,EAAWG,aACf,GAAIC,GAAQC,iBAEJ5sB,KAAK6sB,6BAA6BhS,EAAM0R,EAAY3G,OACrD,CAELxa,QAAQ2X,IAAI,8BACZ,MAAM+J,QAAkBnnB,MAAMpH,EAAM,CAClCqM,OAAQ,MACRygB,QAASsB,GAAU,CAAC,EACpBvoB,KAAMyW,EAAKA,KACXqL,OAAQN,EAAgBM,SAE1B,IAAK4G,EAAUjiB,GAAI,CACjB,MAAM9C,QAAc+kB,EAAU7B,OAC9B,MAAM,IAAIvnB,MAAM,qBAAqBopB,EAAUhiB,YAAY/C,IAC7D,CACAqD,QAAQ2X,IAAI,qBACd,CACF,CAGA,GAAI6C,EAAgBM,OAAO+F,QAEzB,YADA7gB,QAAQ2X,IAAI,qBAAsBlI,EAAKA,KAAK5b,MAK9C4b,EAAK2L,WAAW,CACdC,QAAS,GACT5L,KAAMA,EAAKA,OAEbzP,QAAQ2X,IAAI,sBACZ,MAAMgK,QAAkB,EAAA/hB,GAAA,GAAM,CAC5B0D,IAAK,mCACL9D,OAAQ,OACRvC,KAAM,CACJ2kB,OAAQT,EAAWS,OACnBC,SAAUV,EAAWU,SACrBtK,SACAmE,SAAUjM,EAAKA,KAAKlb,KACpB8W,SAAUoE,EAAKA,KAAK5b,KACpB8nB,SAAUlM,EAAKA,KAAK1b,KACpB8Z,YAAasT,EAAWtT,aAE1BhO,cAAc,EACdib,OAAQN,EAAgBM,SAE1B,IAAK6G,EAAU1kB,KAAKiO,QAClB,MAAM,IAAI5S,MAAMqpB,EAAU1kB,KAAKN,OAAS,yBAE1CqD,QAAQ2X,IAAI,mBAAoBgK,EAAU1kB,MAE1C,MAAM6kB,EAAoB,CACxB7kB,KAAM,CAAC,CACLtJ,IAAKguB,EAAU1kB,KAAKtJ,OAGxB8b,EAAKkD,UAAUmP,EAAmBrS,EAAKA,KACzC,CAAE,MAAO1P,GAEP,GAAiB,kBAAbA,EAAIlM,MAAyC,iBAAbkM,EAAIwb,MAAwC,eAAbxb,EAAIlM,KAErE,YADAmM,QAAQ2X,IAAI,qBAAsBlI,EAAKA,KAAK5b,MAG9CmM,QAAQrD,MAAM,mCAAoCoD,GAClDnL,KAAKujB,cAAczO,KAAK+F,GACxBA,EAAKtH,QAAQpI,EAAK0P,EAAKA,KACzB,CAAE,QAEA7a,KAAKgkB,iBAAiB6C,OAAOhM,EAAKA,KAAKgK,KAEvC7kB,KAAK0lB,kBACP,CACF,EAEA,kCAAMmH,CAA6BhS,EAAM0R,EAAY3G,GACnD,MAAM,aACJ8G,GACEH,GAEFhuB,KAAM4uB,EAAa,OACnBR,GACED,EACEU,EAAYC,SAASV,EAAOC,YAG5BU,EAAQrsB,OAAO8T,KAAK4X,GAAQ1mB,OAAOM,GAAO,WAAWgkB,KAAKhkB,IAChE6E,QAAQ2X,IAAI,qBAAqBuK,EAAMnqB,6BAA6BiqB,KACpE,MAAMG,EAAgB,GAChBC,EAAaF,EAAMnqB,OACzB,IAAK,MAAMsqB,KAAQH,EAAO,CAExB,GAAI1H,GAAmBA,EAAgBM,OAAO+F,QAE5C,MADA7gB,QAAQ2X,IAAI,uBACN,IAAI2K,aAAa,mBAAoB,cAE7C,MAAMC,EAAQN,SAASI,GAAQ,EACzBhY,EAAQkY,EAAQP,EAChB1X,EAAMnQ,KAAKqU,IAAInE,EAAQ2X,EAAWvS,EAAKA,KAAKlb,MAC5CkjB,EAAQhI,EAAKA,KAAKjF,MAAMH,EAAOC,GACrCtK,QAAQ2X,IAAI,kBAAkB0K,KAAQD,KACtC,MAAM9iB,QAAiB/E,MAAMgnB,EAAOc,GAAO,CACzC7iB,OAAQ,MACRxG,KAAMye,EACNqD,OAAQN,EAAkBA,EAAgBM,YAASpe,IAErD,IAAK4C,EAASG,GACZ,MAAM,IAAInH,MAAM,yBAAyB+pB,MAAS/iB,EAASI,UAE7D,MAAM8iB,EAAOljB,EAAS2gB,QAAQjqB,IAAI,QAClC,IAAKwsB,EACH,MAAM,IAAIlqB,MAAM,oBAAoB+pB,KAEtCF,EAAczY,KAAK,CACjB+Y,WAAYR,SAASI,GACrBG,SAIF,MAAME,EAAW,GAAKvoB,KAAKyd,MAAMqK,SAASI,GAAQD,EAAa,IAC/D3S,EAAK2L,WAAW,CACdC,QAASqH,EACTjT,KAAMA,EAAKA,MAEf,CAGA,GAAI+K,GAAmBA,EAAgBM,OAAO+F,QAE5C,MADA7gB,QAAQ2X,IAAI,uBACN,IAAI2K,aAAa,mBAAoB,cAI7CtiB,QAAQ2X,IAAI,kCACZ,MAAMgL,QAAyBpoB,MAAMwnB,EAAe,CAClDviB,OAAQ,OACRygB,QAAS,CACP,OAAU,+BACV,eAAgB,gCAElBjnB,KAAMmR,KAAKiB,UAAU,CACnBwX,IAAKzB,EAAWyB,IAChBV,MAAOC,IAETrH,OAAQN,EAAkBA,EAAgBM,YAASpe,IAErD,IAAKimB,EAAiBljB,GAAI,CACxB,MAAM9C,QAAcgmB,EAAiB9C,OACrC,MAAM,IAAIvnB,MAAM,8BAA8BqqB,EAAiBjjB,YAAY/C,IAC7E,CACAqD,QAAQ2X,IAAI,4BACd,EAEA,wBAAMuG,CAAmBzO,GACvB,OAAO,IAAItY,QAAQ,CAAC2lB,EAASgB,KAE3B,GAAIrO,EAAK1b,KAAKK,SAAS,QAAUqb,EAAK1b,KAAKK,SAAS,QAAUqb,EAAK1b,KAAKK,SAAS,QAE/E,YADA0oB,EAAQ,MAGV,MAAM+F,EAAM,IAAI1qB,MACV2qB,EAASvqB,SAASC,cAAc,UAChCuqB,EAAMD,EAAOlpB,WAAW,MAC9BipB,EAAIzqB,OAAS,KACX0qB,EAAO/oB,MAAQ8oB,EAAI9oB,MACnB+oB,EAAO9oB,OAAS6oB,EAAI7oB,OACpB+oB,EAAI1oB,UAAUwoB,EAAK,EAAG,GACtBC,EAAOnrB,OAAO6C,IACZ,GAAIA,EAAM,CAER,MAAMwoB,EAAevT,EAAK5b,KACpBid,EAAekS,EAAajS,YAAY,KACxCkS,EAAUnS,EAAe,EAAIkS,EAAahS,UAAU,EAAGF,GAAgB,QAAUkS,EAAe,QAChGE,EAAW,IAAIzE,KAAK,CAACjkB,GAAOyoB,EAAS,CACzClvB,KAAM,eAERmvB,EAASzJ,IAAMhK,EAAKgK,IACpBqD,EAAQoG,EACV,MACEpF,EAAO,IAAIxlB,MAAM,cAInBI,IAAIyqB,gBAAgBN,EAAIlvB,MACvB,aAAc,MAEnBkvB,EAAIxqB,QAAU,KACZK,IAAIyqB,gBAAgBN,EAAIlvB,KACxBmqB,EAAO,IAAIxlB,MAAM1D,KAAKkI,GAAG,iCAE3B+lB,EAAIlvB,IAAM+E,IAAIC,gBAAgB8W,IAElC,EAEA,yBAAAyC,CAA0Bjd,GACxB,MAAMmuB,EAAOxuB,KAAK6J,MAAM4kB,eACxB,IAAKD,EAAM,OACX,MAAME,EAAOruB,EAAEsuB,cAAcC,wBACvBhO,EAAIvgB,EAAEwuB,QAAUH,EAAKI,KACrBjpB,EAAIxF,EAAE0uB,QAAUL,EAAKM,IAC3BR,EAAK3hB,MAAM0C,QAAU,IACrBif,EAAK3hB,MAAMiiB,KAAOlO,EAAI,KACtB4N,EAAK3hB,MAAMmiB,IAAMnpB,EAAI,IACvB,EAEA,0BAAA2X,GACE,MAAMgR,EAAOxuB,KAAK6J,MAAM4kB,eACnBD,IACLA,EAAK3hB,MAAM0C,QAAU,IACvB,GAEF,aAAA0f,GAEMjvB,KAAK2jB,YACPoI,aAAa/rB,KAAK2jB,WAEtB,GCp2CF,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,kCCRA,MAAM,GAAa,CACjBjlB,MAAO,6BACP0J,IAAK,cAED,GAAa,CACjB1J,MAAO,uBAEH,GAAa,CACjBA,MAAO,mBAEH,GAAa,CAAC,QAAS,eACtB,SAAS,GAAOT,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMma,EAAsB,KAC5B,OAAO,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAaA,EAAqB,CAC7FrQ,IAAK,WACLa,WAAY3K,EAAS4wB,WACrB,sBAAuBhxB,EAAO,KAAOA,EAAO,GAAKqJ,GAAUjJ,EAAS4wB,WAAa3nB,GACjF2R,YAAa/a,EAAO+a,YACpBiW,QAAS7wB,EAAS8wB,YAClBC,OAAQ/wB,EAASgxB,WACjBC,QAASjxB,EAASkxB,aACjB,KAAM,EAAG,CAAC,aAAc,cAAe,UAAW,SAAU,aAAa,SAAgB,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,GAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYnxB,EAAMoxB,YAAa,CAACrc,EAAMua,MAChQ,WAAc,QAAoB,KAAM,CAC7CpnB,IAAKonB,EACLjvB,MAAO,kBACP0K,MAAOgK,EAAK7T,MACZmwB,aAAa,SAAenoB,GAAUjJ,EAASqxB,WAAWvc,GAAO,CAAC,cACjE,QAAiBA,EAAK7T,OAAQ,GAAI,MACnC,SAAU,KAAM,CAAC,CAAC,MAAQlB,EAAMuxB,iBAAmBvxB,EAAMoxB,YAAYtsB,OAAS,MAAO,IAC3F,CCzBA,QACElE,KAAM,2BACNC,MAAO,CACL+J,WAAY,CACV9J,KAAMC,OACNC,QAAS,IAEX6Z,YAAa,CACX/Z,KAAMC,OACNC,QAAS,KAGb8a,MAAO,CAAC,oBAAqB,QAAS,OAAQ,UAC9C,IAAA9R,GACE,MAAO,CACLwnB,kBAAmB,KACnBC,qBAAqB,EACrBC,sBAAsB,EACtBC,qBAAsB,CAAC,EACvBC,UAAW,KACXL,iBAAiB,EACjBM,WAAW,EACXT,YAAa,GAEjB,EACA1vB,SAAU,CACRmvB,WAAY,CACV,GAAA9tB,GACE,OAAOpB,KAAKiJ,UACd,EACA,GAAAmR,CAAI/F,GACFrU,KAAKsL,MAAM,oBAAqB+I,EAClC,IAGJ3K,MAAO,CACL,UAAAT,GAEMjJ,KAAKkwB,WACPlwB,KAAKmwB,oBAET,GAEF1lB,QAAS,CACP,WAAA2kB,GACEpvB,KAAKkwB,WAAY,EACjBlwB,KAAKiwB,UAAYhsB,KAAKC,MACtBlE,KAAKowB,4BACLpwB,KAAKsL,MAAM,SACX1B,WAAW,KACL5J,KAAKkwB,YACPlwB,KAAKmwB,qBACLnwB,KAAK4vB,iBAAkB,IAExB,IACL,EACA,UAAAN,GACEtvB,KAAKkwB,WAAY,EACjBlwB,KAAK4vB,iBAAkB,EACvB5vB,KAAKsL,MAAM,OACb,EACA,WAAAkkB,CAAYnb,GAEVrU,KAAKkK,UAAU,KACblK,KAAKmwB,qBACDnwB,KAAKkwB,YACPlwB,KAAK4vB,iBAAkB,IAG7B,EACA,UAAAD,CAAWvc,GACT,MAAMxK,EAAOwK,EAAK7T,MAClBS,KAAKkvB,WAAatmB,EAClB5I,KAAKsL,MAAM,SAAU1C,GACrB,MAAMynB,EAAiBrwB,KAAKswB,uBAAuB1nB,GAC7CU,EAAWtJ,KAAKgwB,qBAAqBK,GACvC/mB,GAAYA,EAASnG,OAAS,EAChCnD,KAAKkK,UAAU,KACblK,KAAKmwB,qBACLnwB,KAAK4vB,iBAAkB,EACvB5vB,KAAK6J,MAAM0mB,UAAUC,UAGvBxwB,KAAK4vB,iBAAkB,CAE3B,EACA,kBAAAO,GACEnwB,KAAKyvB,YAAczvB,KAAKywB,wBAAwBzwB,KAAKiJ,YAAc,GACrE,EACA,sBAAAqnB,CAAuB1nB,GACrB,IAAKA,EAAM,MAAO,IAClB,IAAI8nB,EAAa9nB,EAGjB,OAFK8nB,EAAWrlB,WAAW,OAAMqlB,EAAa,IAAMA,GACjC,MAAfA,GAAuBA,EAAWC,SAAS,OAAMD,GAAc,KAC5DA,CACT,EACA,yBAAAE,CAA0BC,GACxB,MAAM7b,EAAM,CAAC,EACP8b,EAAOnoB,IACX,MAAMooB,EAAa/wB,KAAKswB,uBAAuB3nB,EAAKC,MAC9CU,EAAW2E,MAAMC,QAAQvF,EAAKW,UAAYX,EAAKW,SAAW,GAChE0L,EAAI+b,GAAcznB,EAAS0L,IAAIgc,IAAS,CACtC/xB,KAAM+xB,EAAM/xB,KACZ2J,KAAM5I,KAAKswB,uBAAuBU,EAAMpoB,SAE1CU,EAASkL,QAAQsc,IAEnBA,EAAKD,GACL7wB,KAAKgwB,qBAAuBhb,CAC9B,EACA,+BAAMob,GACJ,IAAIpwB,KAAK8vB,sBAAuB9vB,KAAK+vB,qBAArC,CACA/vB,KAAK+vB,sBAAuB,EAC5B,IACE,MAAMrlB,QAAiBM,GAAA,EAAM5J,IAAI,qBAAsB,CACrD6J,cAAc,IAEVC,EAAOR,GAAUrC,MAAM6C,KACzBA,IACFlL,KAAK6vB,kBAAoB3kB,EACzBlL,KAAK4wB,0BAA0B1lB,GAC/BlL,KAAK8vB,qBAAsB,EAE/B,CAAE,MAAO/nB,GACPqD,QAAQrD,MAAM,kDAAmDA,EACnE,CAAE,QACA/H,KAAK+vB,sBAAuB,CAC9B,CAhBiE,CAiBnE,EACA,mBAAAkB,CAAoB1xB,GAClB,MAAM2xB,EAAkB3xB,GAASA,EAAM8L,WAAW,KAAO9L,EAAQ,IAAIA,GAAS,KACxE4xB,EAAMD,EAAgBtb,MAAM,GAC5B0X,EAAQ6D,EAAInuB,MAAM,KAClBouB,EAAe9D,EAAMA,EAAMnqB,OAAS,IAAM,GAC1CkuB,EAAiB/D,EAAM1X,MAAM,GAAI,GAAG3P,OAAOpG,SAC3CkxB,EAAaM,EAAeluB,OAAS,EAAI,IAAIkuB,EAAetH,KAAK,QAAU,IACjF,MAAO,CACLqH,eACAL,aAEJ,EACA,uBAAAN,CAAwBa,GACtB,MAAM,aACJF,EAAY,WACZL,GACE/wB,KAAKixB,oBAAoBK,GACvBC,EAAiBvxB,KAAKgwB,qBAAqBe,IAAe,GAChE,IAAKK,EACH,OAAOG,EAAe3b,MAAM,EAAG,IAAIZ,IAAI5B,IAAQ,CAC7C7T,MAAO6T,EAAKxK,QAGhB,MAAM4oB,EAAUJ,EAAava,cAC7B,OAAO0a,EAAetrB,OAAOmN,GAAQA,EAAKnU,KAAK4X,cAAcxL,WAAWmmB,IAAU5b,MAAM,EAAG,IAAIZ,IAAI5B,IAAQ,CACzG7T,MAAO6T,EAAKxK,OAEhB,IC1JJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,YCRA,MAAM,GAAa,CACjBlK,MAAO,aAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,yBAEH,GAAa,CACjBA,MAAO,+BAEH,GAAa,CACjBA,MAAO,UAEH,GAAa,CACjBA,MAAO,SAEH,GAAa,CACjBA,MAAO,oBACP,cAAe,QAEX,GAAa,CACjBA,MAAO,aACPH,KAAM,kDACNE,OAAQ,UAEJ,GAAa,CACjBC,MAAO,kBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,mBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,mBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClB6H,IAAK,EACL7H,MAAO,gBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAAC,aACf,GAAc,CAClBA,MAAO,iBAEF,SAAS,GAAOT,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMmzB,EAAwB,KACxB3qB,GAA+B,QAAkB,qBACjDC,EAAuB,KACvBiW,EAA8B,MAC9BC,EAA8B,MAC9BC,EAAyB,MACzBwU,EAAsC,GACtCjZ,EAAsB,KACtBkZ,EAAiC,KACjCvf,EAAwB,KACxBwf,EAAkB,KAClBC,EAAwB,GACxBxZ,EAAsB,KACtBC,EAA4B,KAC5BI,EAAuB,KACvBG,EAAuB,KACvBiZ,EAAkC,GAClCC,EAAoB,IACpBC,EAA2B,EACjC,OAAO,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAaP,EAAuB,CACvI/yB,MAAO,qCACL,QAAawe,EAAwB,CACvCxe,MAAO,6BACP+I,QAAS,QACTwqB,UAAW3zB,EAAS4zB,0BACnB,CACDhT,UAAU,QAAS,IAAM,EAAC,QAAajC,EAA6B,KAAM,CACxE5d,SAAS,QAAS,IAAM,EAAC,QAAa2d,EAA6B,CACjEmV,QAAS,eACR,CACD9yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,UACN6E,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,aAEd,QAAiB,KAAM,QAAiB5O,EAAKiK,GAAG,mBAAoB,KACxEC,EAAG,KACD,QAAa6U,EAA6B,CAC5CmV,QAAS,mBACTpT,UAAWzgB,EAAS8zB,uBACnB,CACD/yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,WACN6E,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,aAEd,QAAiB,KAAM,QAAiB5O,EAAKiK,GAAG,wBAAyB,KAC7EC,EAAG,GACF,EAAG,CAAC,cAAc,QAAa6U,EAA6B,CAC7DmV,QAAS,kBACR,CACD9yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,QACN6E,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,aAEd,QAAiB,KAAM,QAAuC,UAAtB5O,EAAKo0B,MAAMC,OAAqB,UAAY,QAAS,KACjGnqB,EAAG,KACD,QAAa6U,EAA6B,CAC5CmV,QAAS,YACR,CACD9yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,OACN6E,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,aAEd,QAAiB,KAAM,QAAiB5O,EAAKiK,GAAG,oBAAqB,KACzEC,EAAG,MAELA,EAAG,MAEL9I,SAAS,QAAS,IAAM,EAAC,QAAa0H,EAAsB,CAC1DrI,MAAO,eACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,aACNrI,KAAM,SAERwI,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAO,CAC/CzJ,OAAO,QAAgB,CAAC,0BAA2B,CACjD,mBAAoBJ,EAAS8zB,0BAE9B,EAAC,QAAoB,MAAO,CAC7B1zB,OAAO,QAAgB,CAAC,gBAAiB,CACvC,OAAUL,EAAMk0B,wBAEjB,CAACj0B,EAASk0B,2BAA4B,WAAc,QAAad,EAAqC,CACvGnrB,IAAK,EACL0C,WAAY5K,EAAMgb,aAClB,sBAAuBnb,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAMgb,aAAe9R,GAChF7I,MAAO,qBACPwa,YAAajb,EAAKiK,GAAG,4BACrBinB,QAAS7wB,EAASm0B,uBAClBpD,OAAQ/wB,EAASo0B,sBACjBC,SAAUr0B,EAASs0B,uBAClB,KAAM,EAAG,CAAC,aAAc,cAAe,UAAW,SAAU,gBAAiB,WAAc,QAAana,EAAqB,CAC9HlS,IAAK,EACL7H,MAAO,qBACPuK,WAAY5K,EAAMgb,aAClB,sBAAuBnb,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAMgb,aAAe9R,GAChF2R,YAAajb,EAAKiK,GAAG,4BACrBinB,QAAS7wB,EAASm0B,uBAClBpD,OAAQ/wB,EAASo0B,uBAChB,KAAM,EAAG,CAAC,aAAc,cAAe,UAAW,aAAc,GAAIp0B,EAASk0B,2BAA4B,WAAc,QAAab,EAAgC,CACrKprB,IAAK,EACL,oBAAqBlI,EAAMgb,aAC3BhQ,OAAQ,SACRspB,SAAUr0B,EAASs0B,uBAClB,CACDnrB,SAAS,QAAS,IAAM,EAAC,QAAaV,EAAsB,CAC1DrI,MAAO,0BACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,kBAERG,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,oBAAqB,eAAgB,QAAoB,IAAI,IAAQ,IAAI,QAAaiK,EAAuB,CAClHI,QAASvU,EAAKiK,GAAG,6BACjBV,UAAW,SACXuX,SAAUzgB,EAAS0gB,gBAClB,CACD3f,SAAS,QAAS,IAAM,EAAC,QAAa0H,EAAsB,CAC1DrI,MAAO,oCACPkJ,QAAStJ,EAASu0B,0BACjB,CACDxzB,SAAS,QAAS,IAAM,CAAwB,YAAvBhB,EAAMof,eAA8B,WAAc,QAAa3W,EAA8B,CACpHP,IAAK,EACLyB,KAAM,cACNtJ,MAAO,qBACPiB,KAAM,QACqB,UAAvBtB,EAAMof,eAA4B,WAAc,QAAa3W,EAA8B,CAC/FP,IAAK,EACLyB,KAAM,QACNtJ,MAAO,qBACPiB,KAAM,SACF,QAAoB,IAAI,KAC9BwI,EAAG,GACF,EAAG,CAAC,cACPA,EAAG,GACF,EAAG,CAAC,UAAW,cAAc,QAAa+U,EAAwB,CACnExe,MAAO,mCACP+I,QAAS,QACTwqB,UAAW3zB,EAASw0B,yBACnB,CACD5T,UAAU,QAAS,IAAM,EAAC,QAAajC,EAA6B,KAAM,CACxE5d,SAAS,QAAS,IAAM,EAAC,QAAa2d,EAA6B,CACjEmV,QAAS,eACR,CACD9yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM1J,EAASy0B,eACflmB,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,WAEf,KAAM,EAAG,CAAC,UAAU,QAAiB,KAAM,QAAiBvO,EAAS00B,gBAAiB,KACzF7qB,EAAG,KACD,QAAa6U,EAA6B,CAC5CmV,QAAS,sBACR,CACD9yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAA6B,YAAvB3J,EAAMof,aAA6B,QAAU,cACnD5Q,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,WAEf,KAAM,EAAG,CAAC,UAAU,QAAiB,KAAM,QAAwC,YAAvBxO,EAAMof,aAA6Bxf,EAAKiK,GAAG,sBAAwBjK,EAAKiK,GAAG,sBAAuB,KACjKC,EAAG,KACD,QAAa6U,EAA6B,CAC5CmV,QAAS,eACR,CACD9yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,UACN6E,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,aAEd,QAAiB,KAAM,QAAiB5O,EAAKiK,GAAG,mBAAoB,KACxEC,EAAG,KACD,QAAa6U,EAA6B,CAC5CmV,QAAS,mBACTpT,UAAWzgB,EAAS8zB,uBACnB,CACD/yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,WACN6E,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,aAEd,QAAiB,KAAM,QAAiB5O,EAAKiK,GAAG,wBAAyB,KAC7EC,EAAG,GACF,EAAG,CAAC,cAAc,QAAa6U,EAA6B,CAC7DmV,QAAS,kBACR,CACD9yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,QACN6E,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,aAEd,QAAiB,KAAM,QAAuC,UAAtB5O,EAAKo0B,MAAMC,OAAqB,UAAY,QAAS,KACjGnqB,EAAG,KACD,QAAa6U,EAA6B,CAC5CmV,QAAS,YACR,CACD9yB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,OACN6E,MAAO,CACL,MAAS,OACT,eAAgB,MAChB,aAAc,aAEd,QAAiB,KAAM,QAAiB5O,EAAKiK,GAAG,oBAAqB,KACzEC,EAAG,MAELA,EAAG,MAEL9I,SAAS,QAAS,IAAM,EAAC,QAAa0H,EAAsB,CAC1DrI,MAAO,sBACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,aACNrI,KAAM,SAERwI,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAO,CAC/CzJ,OAAO,QAAgB,CAAC,gBAAiB,CACvC,cAAeL,EAAM40B,sBAEvB1V,aAAcrf,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAAS40B,yBAA2B50B,EAAS40B,2BAA2BnqB,KAC5H,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAaqJ,EAAuB,CACtH2M,SAAUzgB,EAAS0gB,iBAAmB3gB,EAAM40B,mBAC5CzgB,QAASvU,EAAKiK,GAAG,iBACjBV,UAAW,OACX,aAAc,GACb,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAa0H,EAAsB,CAC1DrI,MAAO,uBACPkJ,QAAS1J,EAAO,KAAOA,EAAO,GAAKqJ,GAAUjJ,EAAS60B,0BAA0B,YAC/E,CACD9zB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,eACNtJ,MAAO,yBAETyJ,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAaiK,EAAuB,CAClE2M,SAAUzgB,EAAS0gB,iBAAmB3gB,EAAM40B,mBAC5CzgB,QAASvU,EAAKiK,GAAG,iBACjBV,UAAW,OACX,aAAc,GACb,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAa0H,EAAsB,CAC1DrI,MAAO,uBACPkJ,QAAS1J,EAAO,KAAOA,EAAO,GAAKqJ,GAAUjJ,EAAS60B,0BAA0B,YAC/E,CACD9zB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,MACNtJ,MAAO,yBAETyJ,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAaiK,EAAuB,CAClE2M,SAAUzgB,EAAS0gB,iBAAmB3gB,EAAM40B,mBAC5CzgB,QAASvU,EAAKiK,GAAG,qBACjBV,UAAW,OACX,aAAc,GACb,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAa0H,EAAsB,CAC1DrI,MAAO,uBACPkJ,QAAS1J,EAAO,KAAOA,EAAO,GAAKqJ,GAAUjJ,EAAS60B,0BAA0B,gBAC/E,CACD9zB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,OACNtJ,MAAO,yBAETyJ,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,WAAY,iBAAiB,QAAaiK,EAAuB,CACtE2M,SAAUzgB,EAAS0gB,eACnBxM,QAASvU,EAAKiK,GAAG,mBACjBV,UAAW,OACX,aAAc,GACb,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAa0H,EAAsB,CAC1DrI,MAAO,uBACPkJ,QAAStJ,EAAS80B,oBACjB,CACD/zB,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,eACNtJ,MAAO,yBAETyJ,EAAG,GACF,EAAG,CAAC,cACPA,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAapB,EAAsB,CACjErI,OAAO,QAAgB,CAAC,0CAA2C,CACjE,YAAaL,EAAM40B,sBAErB,gBAAiB50B,EAAM40B,mBACvBI,aAAc/0B,EAASg1B,4BACvB1rB,QAAStJ,EAASi1B,oBACjB,CACDl0B,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,eACNtJ,MAAO,mDAETyJ,EAAG,GACF,EAAG,CAAC,QAAS,gBAAiB,eAAgB,aAAc,KAAK,QAAaypB,EAAiB,CAChG9xB,eAAe,KACb,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,GAAY,EAAC,QAAoB,OAAQ,IAAY,QAAiBxB,EAASk1B,WAAa,UAAW,IAAI,QAAoB,IAAK,IAAY,QAAiBl1B,EAASk1B,WAAY,GAAIt1B,EAAO,MAAQA,EAAO,KAAM,QAAiB,YAAa,SAAS,QAAa2zB,EAAuB,CACrW3O,gBAAiB7kB,EAAM6kB,gBACvBxJ,iBAAkBrb,EAAMqb,iBACxBI,gBAAiBzb,EAAMyb,gBACvBH,YAAatb,EAAMsb,YACnBK,eAAgB3b,EAAM2b,eACtBjB,cAAe1a,EAAM0a,cACrBE,YAAa5a,EAAM4a,YACnBO,eAAgBnb,EAAMmb,eACtB2J,aAAc9kB,EAAM8kB,aACpBC,gBAAiB/kB,EAAM+kB,gBACvB7J,UAAWlb,EAAMkb,UACjB8J,UAAW/kB,EAAS+kB,UACpB5F,aAAcpf,EAAMof,aACpBpE,aAAchb,EAAMgb,aACpBI,cAAepb,EAAMob,cACrB/a,MAAO,UACN,KAAM,EAAG,CAAC,kBAAmB,mBAAoB,kBAAmB,cAAe,iBAAkB,gBAAiB,cAAe,iBAAkB,eAAgB,kBAAmB,YAAa,YAAa,eAAgB,eAAgB,mBAAmB,QAAama,EAAsB,CAC3SzP,MAAOnL,EAAKiK,GAAG,4BACfe,WAAY5K,EAAMo1B,cAClB,sBAAuBv1B,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMo1B,cAAgBlsB,GACnFpC,MAAO7G,EAASwa,YAChB,cAAc,EACdpa,MAAO,mBACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBpB,EAAKiK,GAAG,6BAA8B,MAAM,QAAoB,MAAO,GAAa,EAAC,QAAaoQ,EAA2B,CAC/RrP,WAAY5K,EAAM6kB,gBAClB,sBAAuBhlB,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAM6kB,gBAAkB3b,GACnF6X,SAAU9gB,EAASo1B,cACnBh1B,MAAO,6BACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAagZ,EAAqB,CACzD9Y,MAAO,MACPb,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,OACNtJ,MAAO,gBACL,QAAoB,OAAQ,MAAM,QAAiBT,EAAKiK,GAAG,qBAAsB,KACrFC,EAAG,KACD,QAAakQ,EAAqB,CACpC9Y,MAAO,KACPb,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,OACNtJ,MAAO,eACLR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,YAAa,MAC/EiK,EAAG,KACD,QAAakQ,EAAqB,CACpC9Y,MAAO,OACPb,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,cACNtJ,MAAO,eACLR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,QAAS,MAC3EiK,EAAG,KACD,QAAakQ,EAAqB,CACpC9Y,MAAO,MACPb,MAAO,cACN,CACDW,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,cACNtJ,MAAO,eACLR,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,UAAW,MAC7EiK,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,aAAc,kBAAkB,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBlK,EAAKiK,GAAG,wBAAyB,IAAI,QAAakK,EAAuB,CAC1PI,QAASvU,EAAKiK,GAAG,8BACjBV,UAAW,MACX,cAAe,IACd,CACDnI,SAAS,QAAS,IAAM,EAAC,QAAayH,EAA8B,CAClEkB,KAAM,kBACNtJ,MAAO,wBAETyJ,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBlK,EAAKiK,GAAG,0BAA2B,IAAI,QAAawQ,EAAsB,CAC1OzP,WAAY5K,EAAM8kB,aAClB,sBAAuBjlB,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAM8kB,aAAe5b,GAChF,eAAgB,OAChB,iBAAkB,SACjB,KAAM,EAAG,CAAC,iBAAyC,SAAvBlJ,EAAM8kB,eAA2B,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBllB,EAAKiK,GAAG,0BAA2B,IAAI,QAAauQ,EAAqB,CACxPxP,WAAY5K,EAAM+kB,gBAClB,sBAAuBllB,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAM+kB,gBAAkB7b,GACnF2R,YAAajb,EAAKiK,GAAG,oCACrBxJ,MAAO,iBACN,KAAM,EAAG,CAAC,aAAc,oBAAqB,QAAoB,IAAI,QAAW,QAAoB,MAAO,GAAa,EAAC,QAAaqI,EAAsB,CAC7J5H,KAAM,UACNyI,QAAS1J,EAAO,KAAOA,EAAO,GAAKqJ,GAAUlJ,EAAMo1B,eAAgB,GACnE/0B,MAAO,eACN,CACDW,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,qBAAsB,KACzFC,EAAG,QAELA,EAAG,GACF,EAAG,CAAC,QAAS,aAAc,WAAW,QAAa2pB,EAAiC,CACrF7oB,WAAY5K,EAAMs1B,mBAClB,sBAAuBz1B,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMs1B,mBAAqBpsB,GACxFwR,cAAe1a,EAAM0a,cACrB,yBAA0B7a,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAM0a,cAAgBxR,GACtF0R,YAAa5a,EAAM4a,YACnB,uBAAwB/a,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAM4a,YAAc1R,GAClFyR,mBAAoB1a,EAAS0a,mBAC7BK,aAAchb,EAAMgb,aACpB,wBAAyBnb,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMgb,aAAe9R,GACpFgS,UAAWlb,EAAMkb,UACjB,qBAAsBrb,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMkb,UAAYhS,GAC9EiS,eAAgBnb,EAAMmb,eACtB,0BAA2Btb,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMmb,eAAiBjS,GACxFkS,cAAepb,EAAMob,cACrB,yBAA0Bvb,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMob,cAAgBlS,GACtFmS,iBAAkBrb,EAAMqb,iBACxB,4BAA6Bxb,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMqb,iBAAmBnS,GAC5FoS,YAAatb,EAAMsb,YACnB,uBAAwBzb,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMsb,YAAcpS,GAClFuS,gBAAiBzb,EAAMyb,gBACvB,2BAA4B5b,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMyb,gBAAkBvS,GAC1FyS,eAAgB3b,EAAM2b,eACtB,0BAA2B9b,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAM2b,eAAiBzS,IACvF,KAAM,EAAG,CAAC,aAAc,gBAAiB,cAAe,qBAAsB,eAAgB,YAAa,iBAAkB,gBAAiB,mBAAoB,cAAe,kBAAmB,sBAAsB,QAAawqB,EAAmB,CAC3PrzB,MAAO,YACL,QAAama,EAAsB,CACrCzP,MAAOnL,EAAKiK,GAAG,4BACfe,WAAY5K,EAAMu1B,uBAClB,sBAAuB11B,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAMu1B,uBAAyBrsB,GAC5FpC,MAAO7G,EAASwa,YAChB,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB+a,OAAQ,IACP,CACDC,QAAQ,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAa,EAAC,QAAa/sB,EAAsB,CACnG5H,KAAM,UACNyI,QAAStJ,EAASy1B,yBACjB,CACD10B,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBpB,EAAKiK,GAAG,2BAA4B,KAC/FC,EAAG,GACF,EAAG,CAAC,gBACP9I,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,CAClD+e,UAAW/f,EAAM21B,qBAChB,KAAM,EAAG,MACZ7rB,EAAG,GACF,EAAG,CAAC,QAAS,aAAc,WAAW,QAAa6pB,EAA0B,CAC9E3f,KAAMhU,EAAM41B,YACZC,QAASh2B,EAAO,MAAQA,EAAO,IAAMqJ,GAAUlJ,EAAM41B,aAAc,IAClE,KAAM,EAAG,CAAC,UACf,C,6DCzhBA,IACEh1B,KAAM,aACNk1B,OAAQ,CAACC,GAAA,GACT,IAAA/rB,GACE,MAAO,CACL6a,iBAAiB,SAAI,IACrBuQ,eAAe,EACfE,oBAAoB,EACpBja,kBAAkB,EAElBI,gBAAiB,EAEjBH,YAAa,EAEbF,eAAe,EAEfO,gBAAgB,EAEhBjB,cAAe,GAEfE,YAAa,GAEbob,kBAAmB,CAAC,EAEpB7a,eAAgB,GAEhB4J,gBAAiB,GAEjBD,aAAc,QAEd5J,WAAW,EAEX+a,qBAAqB,EACrB7W,aAAc,UAEdpE,aAAc,GAEdkZ,qBAAqB,EACrBU,oBAAoB,EACpBsB,sBAAsB,EACtBX,wBAAwB,EAExBI,oBAAqB,GAErBQ,+BAAgC,KAEhCP,aAAa,EACbQ,UAAW,OAEf,EACA/qB,MAAO,CACL,gBAAAgQ,CAAiBrF,GACfrU,KAAK00B,qBAAqB,mBAAoBrgB,EAChD,EACA,eAAAyF,CAAgBzF,GACdrU,KAAK00B,qBAAqB,kBAAmBrgB,EAC/C,EACA,WAAAsF,CAAYtF,GAEE,OAARA,QAAwBvM,IAARuM,GAAqBA,EAAM,EAC7CrU,KAAK2Z,YAAc,GAIjB3Z,KAAK8Z,gBAAkBzF,IACzBrU,KAAK8Z,gBAAkBzF,GAEzBrU,KAAK00B,qBAAqB,cAAergB,GAC3C,EACA,cAAA2F,CAAe3F,GACbrU,KAAK00B,qBAAqB,iBAAkBrgB,EAC9C,EACA,aAAAoF,CAAcpF,GACZrU,KAAK00B,qBAAqB,gBAAiBrgB,EAC7C,EACA,aAAA0E,CAAc1E,GACZrU,KAAK20B,yBAAyBtgB,GAE9B,MAAMugB,EAAiB50B,KAAKq0B,kBAAkBhgB,IAAQ,GAChDwgB,EAAmB70B,KAAK80B,iBAC1BD,GAAoBD,EAAe9yB,KAAKsX,GAAMA,EAAGna,OAAS41B,GAE5D70B,KAAKiZ,YAAc4b,EAGnB70B,KAAKiZ,YAAc,EAEvB,EACA,WAAAA,CAAY5E,GAEVrU,KAAKsO,OAAOgW,OAAO,sBAAuBjQ,GAAO,GACnD,EACA,cAAAmF,CAAenF,GACbrU,KAAK+0B,0BAA0B1gB,EACjC,EACA,eAAA+O,CAAgB/O,GACdrU,KAAKsO,OAAOgW,OAAO,uBAAwB,CACzC/d,IAAK,kBACLhH,MAAO8U,GAEX,EACA,YAAA8O,CAAa9O,GACXrU,KAAKsO,OAAOgW,OAAO,uBAAwB,CACzC/d,IAAK,eACLhH,MAAO8U,GAEX,EACA,SAAAkF,CAAUlF,GACRrU,KAAKsO,OAAOgW,OAAO,oBAAqBjQ,EAC1C,EACA,YAAAgF,CAAahF,GAEX,GAAIrU,KAAKg1B,qBAAqB3gB,GAAK,GAAQ,CAEzC,MAAM4gB,GAAe,QAAmB5gB,EAAK,CAC3C6gB,QAAQ,IAEND,EAAaE,OACfn1B,KAAKsO,OAAOgW,OAAO,uBAAwBjQ,EAG/C,MACErU,KAAKkK,UAAU,KACblK,KAAKqZ,aAAerZ,KAAKo1B,mBAG/B,GAEFr1B,SAAU,KACL,SAAW,CAAC,aAAc,oBAAqB,iBAAkB,qBAAsB,mBAAoB,sBAAuB,oBAAqB,iBAAkB,oBAAqB,sBACjM,SAAAyzB,GACE,OAAOxzB,KAAKC,YAAYuzB,WAAa,QACvC,EACA,WAAA1a,GACE,OAAOjV,OAAO4F,WAAa,IAAM,MAAQ,KAC3C,EACA,cAAAuV,GACE,OAAOnb,OAAO4F,WAAa,GAC7B,EACA,SAAA4Z,GAEE,OAAOrjB,KAAKC,YAAYojB,WAAa,GAAGxf,OAAO0gB,SAASC,aAAa3gB,OAAO0gB,SAASE,YACvF,EACA,qBAAA2N,GACE,QAASpyB,KAAKC,YAAYo1B,YAC5B,EAEA,wBAAA7C,GACE,OAAOxyB,KAAKC,YAAYuyB,2BAA4B,CACtD,EAEA,kBAAAxZ,GACE,OAAOhZ,KAAKq0B,kBAAkBr0B,KAAK+Y,gBAAkB,EACvD,GAEF,OAAA3O,GAEEpK,KAAK2N,qBAAqB,cAAe,cAAc,GAAM,GAG7D3N,KAAKkjB,gBAAkBljB,KAAKs1B,mBAAqB,MAEjDt1B,KAAK0Z,iBAAmB1Z,KAAKu1B,eAAe7b,kBAAoB1Z,KAAKw1B,aAAax1B,KAAKC,YAAYw1B,yBAAyB,GAC5Hz1B,KAAK8Z,gBAAkB9Z,KAAKu1B,eAAezb,iBAAmB9Z,KAAK01B,YAAY11B,KAAKC,YAAY01B,uBAAwB,GACxH31B,KAAK2Z,YAAc3Z,KAAKu1B,eAAe5b,aAAe3Z,KAAK01B,YAAY11B,KAAKC,YAAY21B,mBAAoB,GAC5G51B,KAAKga,eAAiBha,KAAKu1B,eAAevb,iBAAkB,EAC5Dha,KAAKyZ,cAAgBzZ,KAAKu1B,eAAe9b,eAAiBzZ,KAAKw1B,aAAax1B,KAAKC,YAAY41B,sBAAsB,GAEnH71B,KAAK+Y,cAAgB/Y,KAAK81B,oBAAsB91B,KAAKC,YAAY81B,sBAAwB,WAEzF/1B,KAAKuZ,UAAYvZ,KAAKg2B,eAEtBh2B,KAAKwZ,eAAiBxZ,KAAKi2B,qBAAuBj2B,KAAKC,YAAYi2B,uBAAyB,UAE5Fl2B,KAAKojB,gBAAkBpjB,KAAKm2B,kBAAkB/S,gBAC9CpjB,KAAKmjB,aAAenjB,KAAKm2B,kBAAkBhT,aAE3CnjB,KAAKyd,aAAezd,KAAKo2B,kBAEzBp2B,KAAKq2B,yBAELr2B,KAAKqZ,aAAerZ,KAAKo1B,mBAAqBp1B,KAAKC,YAAYq2B,qBAAuB,GAGtF,MAAMC,EAAcv2B,KAAKsO,OAAOkoB,QAAQD,YAClCvqB,EAAchM,KAAKsO,OAAOkoB,QAAQxqB,YAItChM,KAAKy0B,UAHF8B,EAEMvqB,EACQ,OAEA,QAJA,OAMnBhM,KAAKy2B,0BACP,EACAxc,WAAY,CACVyc,WAAU,GACVC,OAAM,IACNC,WAAU,KACVC,KAAI,KACJC,cAAa,EACbC,qBAAoB,GACpBC,oBAAmB,KACnBC,yBAAwB,IAE1BxsB,QAAS,CAEP,4BAAM4rB,GACJ,IACE,MAAM3rB,QAAiBM,GAAA,EAAM5J,IAAI,gBAAiB,CAChD6J,cAAc,IAEhB,GAAIP,EAASrC,KAAM,CACjBrI,KAAKq0B,kBAAoB3pB,EAASrC,KAElC,MAAMwsB,EAAmB70B,KAAK80B,iBACxBoC,EAAqBl3B,KAAKC,YAAYi3B,mBACtCle,EAAqBhZ,KAAKq0B,kBAAkBr0B,KAAK+Y,gBAAkB,GAIrE8b,GAAoB7b,EAAmBlX,KAAKsX,GAAMA,EAAGna,OAAS41B,GAChE70B,KAAKiZ,YAAc4b,EACW,KAArBA,GAAgD,OAArBA,QAAkD/sB,IAArB+sB,GAExC,KAArBA,GAA2BqC,GAAsBle,EAAmBlX,KAAKsX,GAAMA,EAAGna,OAASi4B,KAC7Fl3B,KAAKiZ,YAAcie,EAIzB,CACF,CAAE,MAAOnvB,GACPqD,QAAQrD,MAAM,sCAAuCA,EACvD,CACF,EAEA,oBAAAitB,CAAqBpsB,EAAMssB,GAAS,GAE9BtsB,IAASA,EAAKyC,WAAW,OAC3BzC,EAAO,IAAMA,EACb5I,KAAKqZ,aAAezQ,GAEtB,MAAMhE,GAAS,QAAmBgE,EAAM,CACtCssB,WAEF,QAAKtwB,EAAOuwB,QACVn1B,KAAKqW,SAAStO,MAAMnD,EAAOmD,QACpB,EAGX,EACA,sBAAA0qB,GACEzyB,KAAKuyB,qBAAsB,CAC7B,EACA,qBAAAG,GACE1yB,KAAKuyB,qBAAsB,EAEvBvyB,KAAKqZ,eAAiBrZ,KAAKqZ,aAAahO,WAAW,OACrDrL,KAAKqZ,aAAe,IAAMrZ,KAAKqZ,cAG5BrZ,KAAKg1B,qBAAqBh1B,KAAKqZ,cAAc,IAChDrZ,KAAKkK,UAAU,KACblK,KAAKqZ,aAAerZ,KAAKo1B,mBAG/B,EACA,YAAA+B,GACEn3B,KAAKo3B,QAAQtiB,KAAK,aACpB,EAEA,YAAA0gB,CAAaj2B,EAAO83B,GAClB,YAAcvvB,IAAVvI,GAAiC,OAAVA,EAAuB83B,EAC7B,mBAAV93B,EAA4BA,EAClB,kBAAVA,EAAqC,SAAVA,EAC/B83B,CACT,EAEA,WAAA3B,CAAYn2B,EAAO83B,GACjB,QAAcvvB,IAAVvI,GAAiC,OAAVA,EAAgB,OAAO83B,EAClD,MAAMC,EAAMC,WAAWh4B,GACvB,OAAOwG,MAAMuxB,GAAOD,EAAeC,CACrC,EACA,aAAAE,GACEx3B,KAAKyzB,eAAgB,CACvB,EACA,YAAAgE,GACEzsB,GAAA,EAAMmgB,KAAK,mBAAoB,CAC7BuM,SAAU,QACT,CACDC,iBAAiB,IAChB/Q,QAAQ,KACT5mB,KAAKsO,OAAOgW,OAAO,mBAAmB,GACtCtkB,KAAKo3B,QAAQtiB,KAAK,UAClB9U,KAAKqW,SAASC,QAAQtW,KAAKkI,GAAG,0BAElC,EACA,aAAAwrB,GACE1zB,KAAKsO,OAAOgW,OAAO,uBAAwBtkB,KAAKkjB,gBAClD,EACA,kBAAAkQ,GACEpzB,KAAK2zB,oBAAqB,CAC5B,EACA,oBAAAe,CAAqBnuB,EAAKhH,GACxBS,KAAKsO,OAAOgW,OAAO,oBAAqB,CACtC/d,MACAhH,SAEJ,EACA,wBAAAo1B,CAAyBp1B,GACvBS,KAAKsO,OAAOgW,OAAO,wBAAyB/kB,EAC9C,EACA,yBAAAw1B,CAA0Bx1B,GACxBS,KAAKsO,OAAOgW,OAAO,yBAA0B/kB,EAC/C,EACA,2BAAA+zB,GACEtzB,KAAKizB,oBAAqB,CAC5B,EACA,uBAAAC,GACOlzB,KAAKu0B,uBACRv0B,KAAKizB,oBAAqB,EAE9B,EACA,kBAAAM,GACEvzB,KAAKu0B,sBAAwBv0B,KAAKu0B,qBAClCv0B,KAAKizB,mBAAqBjzB,KAAKu0B,oBACjC,EACA,iBAAAqD,GACE53B,KAAKu0B,sBAAuB,EAC5Bv0B,KAAKizB,oBAAqB,CAC5B,EACA,yBAAAE,CAA0BhB,GACxBnyB,KAAK43B,oBACW,eAAZzF,EACFnyB,KAAKw3B,gBACgB,WAAZrF,EACTnyB,KAAKm3B,eACgB,WAAZhF,GACTnyB,KAAKy3B,cAET,EACA,wBAAA5E,GACE7yB,KAAKyd,aAAqC,YAAtBzd,KAAKyd,aAA6B,QAAU,UAChEzd,KAAKsO,OAAOgW,OAAO,kBAAmBtkB,KAAKyd,aAC7C,EACA,uBAAAqV,CAAwBX,GACtB,GAAgB,gBAAZA,EAEqB,SAAnBnyB,KAAKy0B,WAEPz0B,KAAKy0B,UAAY,QACjBz0B,KAAKsO,OAAOgW,OAAO,kBAAkB,GACrCtkB,KAAKsO,OAAOgW,OAAO,kBAAkB,IACT,UAAnBtkB,KAAKy0B,WAEdz0B,KAAKy0B,UAAY,OACjBz0B,KAAKsO,OAAOgW,OAAO,kBAAkB,GACrCtkB,KAAKsO,OAAOgW,OAAO,kBAAkB,KAGrCtkB,KAAKy0B,UAAY,OACjBz0B,KAAKsO,OAAOgW,OAAO,kBAAkB,SAElC,GAAgB,uBAAZ6N,EACTnyB,KAAK6yB,gCACA,GAAgB,aAAZV,EACTtuB,OAAO+T,KAAK,8BAA+B,eACtC,GAAgB,gBAAZua,EACTnyB,KAAKi0B,aAAc,OACd,GAAgB,qBAAZ9B,EACTnyB,KAAK63B,8BACA,GAAgB,mBAAZ1F,EAA8B,CACvC,MAAM1vB,EAA6B,UAAtBzC,KAAKqyB,MAAMC,OAAqB,KAAO,SACpD,SAAU7vB,EACZ,CACF,EACA,wBAAAyvB,CAAyBC,GACvB,GAAgB,aAAZA,EACFtuB,OAAO+T,KAAK,8BAA+B,eACtC,GAAgB,gBAAZua,EACTnyB,KAAKi0B,aAAc,OACd,GAAgB,qBAAZ9B,EACTnyB,KAAK63B,8BACA,GAAgB,mBAAZ1F,EAA8B,CACvC,MAAM1vB,EAA6B,UAAtBzC,KAAKqyB,MAAMC,OAAqB,KAAO,SACpD,SAAU7vB,EACZ,CACF,EACA,YAAAswB,GAEE,MAAuB,SAAnB/yB,KAAKy0B,UAA6B,MACf,UAAnBz0B,KAAKy0B,UAA8B,OAChC,QACT,EACA,YAAAzB,GAEE,MAAuB,SAAnBhzB,KAAKy0B,UAA6Bz0B,KAAKkI,GAAG,mBACvB,UAAnBlI,KAAKy0B,UAA8Bz0B,KAAKkI,GAAG,kBACxClI,KAAKkI,GAAG,iBACjB,EACA,sBAAA2vB,GACE,MAAMxC,EAAer1B,KAAKC,YAAYo1B,aAClCA,EACFr1B,KAAK83B,iBAAiBzC,GAEtBr1B,KAAKqW,SAAS0hB,KAAK/3B,KAAKkI,GAAG,yBAE/B,EACA,wBAAA8vB,GACE,MAAMC,EAAYhzB,OAAOjF,KAAKC,YAAYi4B,uBAC1C,OAAOjzB,OAAOkzB,SAASF,IAAcA,EAAY,EAAIA,EAAY,IACnE,EACA,gBAAAH,CAAiBzC,GACfr1B,KAAKg0B,oBAAsBqB,EAC3Br1B,KAAKw0B,+BAAiCx0B,KAAKg4B,2BAC3Ch4B,KAAK4zB,wBAAyB,CAChC,EACA,wBAAA6C,GACE,MAAMpB,EAAer1B,KAAKC,YAAYo1B,aACtC,IAAKA,EAAc,OACnB,MAAM4C,EAAYj4B,KAAKg4B,2BACvB,GAAIC,EAAW,CACb,MAAMG,EAAwBnzB,OAAOiQ,aAAaC,QAAQ,sCAI1D,cAHKlQ,OAAOkzB,SAASC,IAA0BH,EAAYG,IACzDp4B,KAAK83B,iBAAiBzC,GAG1B,CAGKngB,aAAaC,QAAQ,+BACxBnV,KAAK83B,iBAAiBzC,EAE1B,EACA,uBAAAtB,GACE7e,aAAac,QAAQ,6BAA8B5W,OAAO6E,KAAKC,QAC3DlE,KAAKw0B,gCACPtf,aAAac,QAAQ,oCAAqC5W,OAAOY,KAAKw0B,iCAExEx0B,KAAK4zB,wBAAyB,CAChC,EAEA,qBAAAhB,CAAsBhqB,GAEpB5I,KAAKqZ,aAAezQ,EAEhB5I,KAAKg1B,qBAAqBpsB,GAAM,IAClC5I,KAAKsO,OAAOgW,OAAO,uBAAwB1b,EAE/C,IC3cJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,S,0ICRA,MAAM9K,EAAa,CACjByI,IAAK,EACL7H,MAAO,mBACP25B,QAAS,gBACTC,MAAO,8BAEHv6B,EAAa,CACjBwI,IAAK,EACL7H,MAAO,mBACP25B,QAAS,gBACTC,MAAO,8BAEHhyB,EAAa,CACjBC,IAAK,EACL7H,MAAO,mBACP25B,QAAS,gBACTC,MAAO,8BAEF,SAASt6B,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMwI,GAA+B,QAAkB,qBACvD,OAAO,WAAc,QAAoB,QAAQ,QAAY7I,EAAKs6B,OAAQ,CACxE75B,MAAO,yBACL,CAAiB,aAAhBP,EAAOgB,OAAuB,WAAc,QAAoB,MAAOrB,EAAY,IAAKI,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAoB,OAAQ,CAClJ8C,EAAG,kdACF,MAAO,QAA2B,gBAAhB7C,EAAOgB,OAA0B,WAAc,QAAoB,MAAOpB,EAAY,IAAKG,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAmB,o8QAAy+Q,QAA2B,WAAhBC,EAAOgB,OAAqB,WAAc,QAAoB,MAAOmH,EAAY,IAAKpI,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAoB,OAAQ,CAC7xR8C,EAAG,ymEACF,MAAO,UAAY,WAAc,QAAa8F,EAA8B,CAC7EP,IAAK,EACLyB,KAAM1J,EAASk6B,iBACd,KAAM,EAAG,CAAC,WAAY,GAC3B,CC/BA,OACEv5B,KAAM,cACNw5B,cAAc,EACdv5B,MAAO,CACLC,KAAM,CACJA,KAAMC,OACN0c,UAAU,IAGd/b,SAAU,CACR,eAAAy4B,GACE,MAAME,EAAQ,CACZC,KAAM,CAAC,MAAO,cACdC,GAAI,CAAC,MAAO,OACZC,QAAS,CAAC,MAAO,YAEnB,OAAOH,EAAM14B,KAAKb,OAAS,QAC7B,I,WCVJ,MAAMgB,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASnC,GAAQ,CAAC,YAAY,qBAEzF,O,oFCGO,SAAS86B,EAAmBlwB,GAAM,OAAEssB,GAAS,GAAS,CAAC,GAE1D,IAAKtsB,GAAwB,KAAhBA,EAAK0hB,OACd,MAAO,CAAE6K,OAAO,GAIpB,GAAa,MAATvsB,EACA,MAAO,CAAEusB,OAAO,GAIpB,IAAKvsB,EAAKyC,WAAW,KACjB,MAAO,CACH8pB,OAAO,EACPptB,MAAOgxB,EAAAA,GAAKC,OAAO54B,EAAE,sCAK7B,GAAI,qBAAqBmqB,KAAK3hB,IAASA,EAAKpJ,SAAS,MACjD,MAAO,CACH21B,OAAO,EACPptB,MAAOgxB,EAAAA,GAAKC,OAAO54B,EAAE,uCAM7B,MAAM64B,EAAa/D,EAAS,aAAe,SAC3C,GAAI+D,EAAW1O,KAAK3hB,GAChB,MAAO,CACHusB,OAAO,EACPptB,MAAOgxB,EAAAA,GAAKC,OAAO54B,EAAE,mCAK7B,GAAIwI,EAAKpJ,SAAS,MACd,MAAO,CACH21B,OAAO,EACPptB,MAAOgxB,EAAAA,GAAKC,OAAO54B,EAAE,0CAM7B,MAAM84B,EAAe,8CACrB,OAAIA,EAAa3O,KAAK3hB,GACX,CACHusB,OAAO,EACPptB,MAAOgxB,EAAAA,GAAKC,OAAO54B,EAAE,iCAItB,CAAE+0B,OAAO,EACpB,C,qJCjEA,IAAIgE,GAAgB,EAEL1W,eAAe9X,EAAc+D,EAAK0qB,EAAU,CAAC,GAKxDA,EAAQC,YAAc,UAEtBD,EAAQ/N,QAAU,IACX+N,EAAQ/N,SAGf,MAAM3gB,QAAiB/E,MAAM+I,EAAK0qB,GAWlC,OATwB,MAApB1uB,EAASI,QAAmBquB,IAC5BA,GAAgB,EAChBpvB,EAAAA,EAAMua,OAAO,oBAAoB,GAEjCgV,EAAAA,EAAOxkB,KAAK,eAAe8R,QAAQ,KAC/BuS,GAAgB,KAIjBzuB,CACX,C,wBC5BApK,EAAOC,QAAU,EAAjBD,M,yLCCA,MAAMxC,EAAa,CACjByI,IAAK,EACL7H,MAAO,eAEHX,EAAa,CAAC,QACb,SAASC,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMwI,GAA+B,QAAkB,qBACvD,OAAQxI,EAASi7B,eAUU,QAAoB,IAAI,KAVjB,WAAc,QAAoB,MAAOz7B,EAAY,EAAC,QAAoB,IAAK,KAAM,EAAC,QAAiB,WAAY,QAAiBQ,EAASk7B,UAAY,gBAAiB,GAAIt7B,EAAO,KAAOA,EAAO,IAAK,QAAoB,IAAK,CACjQQ,MAAO,cACPH,KAAM,gCACNE,OAAQ,UACP,YAAa,IAAKP,EAAO,KAAOA,EAAO,IAAK,QAAiB,cAAe,KAAK,QAAoB,IAAK,CAC3GK,KAAMD,EAASm7B,WACfh7B,OAAQ,UACP,EAAC,QAAaqI,EAA8B,CAC7CkB,KAAM,cACNtJ,MAAO,sBACJ,EAAGX,OACV,C,eClBA,GACEkB,KAAM,SACNc,SAAU,KACL,QAAW,CAAC,eACf,UAAA05B,GACE,OAAOz5B,KAAKC,YAAYw5B,YAAc,+BACxC,EACA,QAAAD,GACE,OAAO,IAAIv1B,MAAOyQ,aACpB,EACA,aAAA6kB,GACE,OAAOv5B,KAAKC,YAAYs5B,gBAAiB,CAC3C,I,WCNJ,MAAMp5B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASnC,GAAQ,CAAC,YAAY,qBAEzF,O,uJCRA,MAAMF,EAAa,CACjBgP,GAAI,aAEA/O,EAAa,CAAC,KAAM,KAAM,KAC1BuI,EAAa,CAAC,KACdE,EAAa,CAAC,WACb,SAASxI,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMwI,GAA+B,QAAkB,qBACvD,OAAO,WAAc,QAAoB,MAAO,CAC9CgG,GAAI,cACJlF,QAAS1J,EAAO,KAAOA,EAAO,GAAK,IAAI6K,IAASzK,EAASo7B,mBAAqBp7B,EAASo7B,qBAAqB3wB,KAC3G,EAAC,QAAa,KAAa,CAC5B9J,KAAM,YACN06B,KAAM,UACL,CACDt6B,SAAS,QAAS,IAAM,CAAEhB,EAAMu7B,SA2EU,WAAc,QAAa9yB,EAA8B,CACjGP,IAAK,YACLyB,KAAM,qBACNtJ,MAAO,YACPmO,MAAO,CACL,YAAa,QACb,MAAS,kCAjF6B,WAAc,QAAoB,MAAO,CACjFtG,IAAK,WACL7H,OAAO,QAAgB,CAAC,mBAAoB,CAC1C,KAAQL,EAAM2Q,UAEhB7J,MAAO,QACPC,OAAQ,QACRizB,QAAS,YACTlW,KAAM,OACN,eAAgB,IAChB,iBAAkB,QAClB,kBAAmB,QACnB0X,OAAQ,gBACP,EAAC,QAAoB,OAAQ/7B,EAAY,CAACI,EAAO,KAAOA,EAAO,IAAK,QAAoB,OAAQ,CACjG0iB,EAAG,IACH/a,EAAG,IACHV,MAAO,OACPC,OAAQ,OACR+c,KAAM,SACL,MAAO,KAAK,QAAoB,SAAU,CAC3CzjB,MAAO,uBACPyjB,KAAM,QACN2X,GAAIz7B,EAAM2Q,OAAS,MAAQ,OAC3B+qB,GAAI17B,EAAM2Q,OAAS,MAAQ,KAC3BvO,EAAGpC,EAAM2Q,OAAS,IAAM,KACvB,KAAM,EAAGjR,MAAe,QAAoB,SAAU,CACvDW,MAAO,uBACPo7B,GAAI,KACJC,GAAI,KACJt5B,EAAGpC,EAAM2Q,OAAS,IAAM,IACxBgrB,KAAM,mBACL,KAAM,EAAG1zB,IAAa,QAAoB,IAAK,CAChD5H,MAAO,iBACPm7B,OAAQ,eACRtqB,QAASlR,EAAM2Q,OAAS,EAAI,GAC3B,IAAK9Q,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAoB,OAAQ,CAC7D+7B,GAAI,KACJC,GAAI,IACJC,GAAI,KACJC,GAAI,KACH,MAAO,IAAI,QAAoB,OAAQ,CACxCH,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACH,MAAO,IAAI,QAAoB,OAAQ,CACxCH,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,QACH,MAAO,IAAI,QAAoB,OAAQ,CACxCH,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SACH,MAAO,IAAI,QAAoB,OAAQ,CACxCH,GAAI,IACJC,GAAI,KACJC,GAAI,IACJC,GAAI,MACH,MAAO,IAAI,QAAoB,OAAQ,CACxCH,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACH,MAAO,IAAI,QAAoB,OAAQ,CACxCH,GAAI,OACJC,GAAI,QACJC,GAAI,OACJC,GAAI,SACH,MAAO,IAAI,QAAoB,OAAQ,CACxCH,GAAI,QACJC,GAAI,OACJC,GAAI,QACJC,GAAI,QACH,MAAO,MAAQ,EAAG5zB,IAAc,MASnC2B,EAAG,KAEP,CCtGA,OACElJ,KAAM,aACN,IAAAoJ,GACE,MAAO,CACL2G,OAAQhP,KAAKsO,OAAOkoB,QAAQxqB,YAC5B4tB,QAAS55B,KAAKsO,OAAOkoB,QAAQD,YAEjC,EACA9rB,QAAS,CACP,iBAAAivB,GAEM15B,KAAK45B,QAEP55B,KAAKgP,QAAS,EACdhP,KAAK45B,QAAS,EACd55B,KAAKsO,OAAOgW,OAAO,kBAAkB,GACrCtkB,KAAKsO,OAAOgW,OAAO,kBAAkB,IAC3BtkB,KAAKgP,QAOfhP,KAAK45B,QAAS,EACd55B,KAAKsO,OAAOgW,OAAO,kBAAkB,KANrCtkB,KAAKgP,QAAS,EACdhP,KAAKsO,OAAOgW,OAAO,kBAAkB,GACrCtkB,KAAKsO,OAAOgW,OAAO,kBAAkB,GAMzC,I,WCpBJ,MAAMnkB,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASnC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://sanyue_imghub/./src/components/Logo.vue?a6d2","webpack://sanyue_imghub/./src/components/Logo.vue","webpack://sanyue_imghub/./src/components/Logo.vue?4125","webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?0f8d","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?0f5d","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?9e81","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?73af","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?6707","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?cc0a","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?4482","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js","webpack://sanyue_imghub/./src/components/Footer.vue?4f81","webpack://sanyue_imghub/./src/components/Footer.vue","webpack://sanyue_imghub/./src/components/Footer.vue?d468","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0f43","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce"],"sourcesContent":["import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"href\", \"target\"];\nconst _hoisted_2 = [\"alt\", \"src\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"a\", {\n href: $options.logoHref,\n target: $props.target,\n class: _normalizeClass(_ctx.logo - _ctx.link)\n }, [_createElementVNode(\"img\", {\n class: _normalizeClass($options.logoClasses),\n alt: $props.alt,\n src: $options.logoUrl\n }, null, 10, _hoisted_2)], 10, _hoisted_1);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Logo',\n props: {\n // Logo链接地址(可被用户配置覆盖)\n href: {\n type: String,\n default: 'https://github.com/MarSeventh/CloudFlare-ImgBed'\n },\n // 链接打开方式\n target: {\n type: String,\n default: '_blank',\n // _blank, _self, _parent, _top\n validator: value => ['_blank', '_self', '_parent', '_top'].includes(value)\n },\n // 图片alt文本\n alt: {\n type: String,\n default: 'Sanyue logo'\n },\n // 自定义logo图片URL(可选)\n customSrc: {\n type: String,\n default: ''\n },\n // Logo位置样式\n position: {\n type: String,\n default: 'fixed',\n // fixed, relative, absolute\n validator: value => ['fixed', 'relative', 'absolute', 'static'].includes(value)\n },\n // Logo大小\n size: {\n type: String,\n default: 'normal',\n // small, normal, large\n validator: value => ['small', 'normal', 'large'].includes(value)\n },\n // 是否启用悬停动画\n enableHover: {\n type: Boolean,\n default: true\n },\n // 是否允许使用用户配置的链接(仅上传页面启用)\n useConfigLink: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters(['userConfig']),\n logoUrl() {\n // 优先级:customSrc > 用户配置 > 默认图片\n return this.customSrc || this.userConfig?.logoUrl || require('../assets/logo.png');\n },\n logoHref() {\n // 只有启用 useConfigLink 时才使用用户配置的链接\n if (this.useConfigLink && this.userConfig?.logoLink) {\n return this.userConfig.logoLink;\n }\n return this.href;\n },\n logoClasses() {\n return {\n 'logo': true,\n [`logo--${this.position}`]: true,\n [`logo--${this.size}`]: true,\n 'logo--hover-enabled': this.enableHover\n };\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Logo.vue?vue&type=template&id=17f54292&scoped=true\"\nimport script from \"./Logo.vue?vue&type=script&lang=js\"\nexport * from \"./Logo.vue?vue&type=script&lang=js\"\n\nimport \"./Logo.vue?vue&type=style&index=0&id=17f54292&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17f54292\"]])\n\nexport default __exports__","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t('uploadHistory.title')), 1), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadHistory.totalRecords', {\n count: $data.totalCount\n })), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.switchView'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.clearRecords'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[4] || (_cache[4] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadHistory.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('uploadHistory.pullToLoadMore')), 1))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('uploadHistory.noMoreRecords')), 1)) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('uploadHistory.emptyHistory')), 1)]))], 2);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm(this.$t('uploadHistory.clearConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success(this.$t('uploadHistory.recordsCleared'));\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm(this.$t('uploadHistory.deleteConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success(this.$t('uploadHistory.recordDeleted'));\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success(this.$t('uploadHistory.linkCopied'));\n }).catch(() => {\n this.$message.error(this.$t('uploadHistory.copyFailed'));\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=f70e7770&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=f70e7770&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f70e7770\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-header\"\n};\nconst _hoisted_3 = {\n class: \"section-title\"\n};\nconst _hoisted_4 = {\n class: \"section-content\"\n};\nconst _hoisted_5 = {\n class: \"setting-item\"\n};\nconst _hoisted_6 = {\n class: \"setting-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_8 = {\n class: \"setting-label\"\n};\nconst _hoisted_9 = {\n class: \"setting-item\"\n};\nconst _hoisted_10 = {\n class: \"setting-label\"\n};\nconst _hoisted_11 = {\n class: \"setting-item\"\n};\nconst _hoisted_12 = {\n class: \"setting-label\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"dialog-section\"\n};\nconst _hoisted_18 = {\n class: \"section-header\"\n};\nconst _hoisted_19 = {\n class: \"section-title\"\n};\nconst _hoisted_20 = {\n class: \"section-content\"\n};\nconst _hoisted_21 = {\n class: \"setting-item\"\n};\nconst _hoisted_22 = {\n class: \"setting-label\"\n};\nconst _hoisted_23 = {\n class: \"setting-item\"\n};\nconst _hoisted_24 = {\n class: \"setting-label\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_26 = {\n class: \"setting-label\"\n};\nconst _hoisted_27 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_28 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_30 = {\n class: \"setting-label\"\n};\nconst _hoisted_31 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_32 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_33 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_34 = {\n class: \"section-header\"\n};\nconst _hoisted_35 = {\n class: \"section-title\"\n};\nconst _hoisted_36 = {\n class: \"section-content\"\n};\nconst _hoisted_37 = {\n class: \"setting-item\"\n};\nconst _hoisted_38 = {\n class: \"setting-label\"\n};\nconst _hoisted_39 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('uploadSettings.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadSettings.uploadChannel')), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('uploadSettings.channelType')), 1), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"telegram\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"telegram\",\n class: \"channel-icon channel-brand-telegram\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"cfr2\",\n class: \"channel-icon channel-brand-cfr2\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"s3\",\n class: \"channel-icon channel-brand-s3\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"discord\",\n class: \"channel-icon channel-brand-discord\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"huggingface\",\n class: \"channel-icon channel-brand-huggingface\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"webdav\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"webdav\",\n class: \"channel-icon channel-brand-webdav\"\n }), _cache[18] || (_cache[18] = _createElementVNode(\"span\", null, \"WD\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.channelName')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.channelNameTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\", \"placeholder\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('uploadSettings.uploadDirectory')), 1), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: _ctx.$t('uploadSettings.uploadDirectoryPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\", \"placeholder\"])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.autoSwitch')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.autoSwitchTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('uploadSettings.fileNaming')), 1)]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingDefault')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingIndex')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingOrigin')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingShort')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('uploadSettings.filePreprocess')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.filePreprocessTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.convertToWebp')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.convertToWebpTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('uploadSettings.fileCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.compressThreshold')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.compressThresholdTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createElementVNode(\"span\", _hoisted_30, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.expectedSize')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.expectedSizeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_32, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('uploadSettings.serverCompress')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.serverCompressTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"span\", _hoisted_38, _toDisplayString(_ctx.$t('uploadSettings.enableCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","import ChannelIcon from '@/components/icons/ChannelIcon.vue';\nexport default {\n name: 'UploadSettingsDialog',\n components: {\n ChannelIcon\n },\n methods: {\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=3eb5cfdc\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('uploadForm.copyFailed')\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=3620a174&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=3620a174&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3620a174\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_3 = [\"innerHTML\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_5 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_6 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_7 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_8 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_9 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CameraFilled = _resolveComponent(\"CameraFilled\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[0] || (_cache[0] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_2, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_CameraFilled)]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n innerHTML: _ctx.$t('upload.dragUploadText')\n }, null, 10, _hoisted_3)]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: _ctx.$t('upload.pasteUrlPlaceholder'),\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"placeholder\", \"rows\"]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteUploadBtn')), 1)]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createVNode(_component_el_radio_group, {\n modelValue: $data.pasteUploadMethod,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.pasteUploadMethod = $event),\n class: \"paste-card-method-group\",\n size: $options.pasteCardMethodButtonSize\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"save\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteSave')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"external\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteExternal')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"size\"])])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length,\n 'is-uploading': $data.uploading\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-container\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[4] || (_cache[4] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.retryFailed'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-retry\",\n onClick: _cache[5] || (_cache[5] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.clearList'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearUploaded')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.name,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[7] || (_cache[7] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])], 2)]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n uploadCount: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map() // 存储每个文件的 AbortController\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const fileType = file.file.type || 'application/octet-stream';\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', fileType);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error(this.$t('uploadForm.chunkInitFailed') + ': ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', fileType);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || this.$t('uploadForm.uploadError'));\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.chunkMerging'),\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', fileType);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.deleted', {\n name: this.truncateFilename(file.name)\n })\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.uploadSuccess', {\n name: this.truncateFilename(file.name)\n })\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.fileNotUploaded')\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(this.$t('uploadForm.compressedFileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n const myUploadCount = this.uploadCount++;\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n if (myUploadCount === 0) {\n pushFileToQueue(newFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(newFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n }).catch(err => {\n this.$message.error(this.$t('uploadForm.compressFailedCannotUpload', {\n name: processedFile.name\n }));\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n const myUploadCount = this.uploadCount++;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n if (myUploadCount === 0) {\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(processedFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n } else {\n this.$message.error(this.$t('uploadForm.fileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copyAllSuccess')\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.fileListCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.fileListEmpty')\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.successFilesCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.successFilesEmpty')\n });\n }\n },\n handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const items = event.clipboardData.items;\n if (items.length > 0) {\n this.uploadFromUrl(items);\n }\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n // 允许上传任意类型的文件\n file.uid = Date.now() + i;\n //接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.urlRequestFailed')\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n this.retryFailedFiles(this.exceptionList);\n this.exceptionList = [];\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.noFailedFiles')\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? this.$t('uploadForm.autoRetryOn') : this.$t('uploadForm.autoRetryOff')\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files) {\n files.forEach(file => {\n const retryCount = file.retryCount || 0;\n if (retryCount < this.maxRetryCount) {\n file.retryCount = retryCount + 1;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.maxRetryReached', {\n name: file.name,\n max: this.maxRetryCount\n })\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: this.uploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error(this.$t('uploadForm.imageLoadFailed')));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=5afbc1b3&scoped=true\"\nimport script from \"./UploadForm.vue?vue&type=script&lang=js\"\nexport * from \"./UploadForm.vue?vue&type=script&lang=js\"\n\nimport \"./UploadForm.vue?vue&type=style&index=0&id=5afbc1b3&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5afbc1b3\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-suggestion-input\",\n ref: \"wrapperRef\"\n};\nconst _hoisted_2 = {\n class: \"suggestion-dropdown\"\n};\nconst _hoisted_3 = {\n class: \"suggestion-list\"\n};\nconst _hoisted_4 = [\"title\", \"onMousedown\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_input, {\n ref: \"inputRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n placeholder: $props.placeholder,\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onInput: $options.handleInput\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onInput\"]), _withDirectives(_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"ul\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, (item, index) => {\n return _openBlock(), _createElementBlock(\"li\", {\n key: index,\n class: \"suggestion-item\",\n title: item.value,\n onMousedown: _withModifiers($event => $options.selectItem(item), [\"prevent\"])\n }, _toDisplayString(item.value), 41, _hoisted_4);\n }), 128))])], 512), [[_vShow, $data.dropdownVisible && $data.suggestions.length > 0]])], 512);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n dropdownVisible: false,\n isFocused: false,\n suggestions: []\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n watch: {\n modelValue() {\n // 外部修改 modelValue 时也刷新建议\n if (this.isFocused) {\n this.refreshSuggestions();\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n setTimeout(() => {\n if (this.isFocused) {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n }\n }, 500);\n },\n handleBlur() {\n this.isFocused = false;\n this.dropdownVisible = false;\n this.$emit('blur');\n },\n handleInput(val) {\n // val 是 el-input @input 事件传来的最新值\n this.$nextTick(() => {\n this.refreshSuggestions();\n if (this.isFocused) {\n this.dropdownVisible = true;\n }\n });\n },\n selectItem(item) {\n const path = item.value;\n this.inputValue = path;\n this.$emit('select', path);\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n this.$nextTick(() => {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n this.$refs.inputRef?.focus();\n });\n } else {\n this.dropdownVisible = false;\n }\n },\n refreshSuggestions() {\n this.suggestions = this.getDirectorySuggestions(this.modelValue || '');\n },\n normalizeDirectoryPath(path) {\n if (!path) return '/';\n let normalized = path;\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized !== '/' && !normalized.endsWith('/')) normalized += '/';\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) return;\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n return parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=28b8eda7&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=28b8eda7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-28b8eda7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n class: \"quick-toolbar-actions\"\n};\nconst _hoisted_4 = {\n class: \"quick-toolbar-actions-inner\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"title-crayon-text\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_8 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-header\"\n};\nconst _hoisted_11 = {\n class: \"section-title\"\n};\nconst _hoisted_12 = {\n class: \"section-content\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"setting-item\"\n};\nconst _hoisted_18 = {\n class: \"setting-label\"\n};\nconst _hoisted_19 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_20 = {\n class: \"setting-label\"\n};\nconst _hoisted_21 = {\n class: \"dialog-action\"\n};\nconst _hoisted_22 = [\"innerHTML\"];\nconst _hoisted_23 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_dropdown, {\n class: \"more-dropdown desktop-only\",\n trigger: \"click\",\n onCommand: $options.handleDesktopMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('upload.switchUploadMethod'),\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\", \"disabled\"]), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? _ctx.$t('upload.pasteUpload') : _ctx.$t('upload.fileUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quick-toolbar\", {\n 'is-expanded': $data.isQuickToolbarOpen\n }]),\n onMouseleave: _cache[5] || (_cache[5] = (...args) => $options.handleQuickToolbarLeave && $options.handleQuickToolbarLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.logout'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleQuickToolbarCommand('logout'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.manage'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleQuickToolbarCommand('manage'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleQuickToolbarCommand('linkFormat'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: $options.openCompressDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_button, {\n class: _normalizeClass([\"quick-toolbar-button quick-toolbar-more\", {\n 'is-active': $data.isQuickToolbarOpen\n }]),\n \"aria-expanded\": $data.isQuickToolbarOpen,\n onMouseenter: $options.handleQuickToolbarMoreEnter,\n onClick: $options.toggleQuickToolbar\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"quick-toolbar-icon quick-toolbar-toggle-icon\"\n })]),\n _: 1\n }, 8, [\"class\", \"aria-expanded\", \"onMouseenter\", \"onClick\"])], 34), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString($options.ownerName) + \" ImgHub\", 1), _createElementVNode(\"a\", _hoisted_8, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub \", -1))])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('settings.linkFormatTitle'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [_createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_21, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[9] || (_cache[9] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[12] || (_cache[12] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[13] || (_cache[13] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[14] || (_cache[14] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[15] || (_cache[15] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[16] || (_cache[16] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[17] || (_cache[17] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[18] || (_cache[18] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[19] || (_cache[19] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[20] || (_cache[20] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[21] || (_cache[21] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: _ctx.$t('upload.announcementTitle'),\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_23, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.acknowledgeAnnouncement\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_22)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[23] || (_cache[23] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { setLocale } from '@/locales';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n isQuickToolbarOpen: false,\n isQuickToolbarPinned: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n displayedAnnouncementRefreshAt: null,\n // 当前弹窗所展示的公告版本\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', true, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n this.showAnnouncementIfNeeded();\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n this.$message.error(result.error);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n axios.post('/api/auth/logout', {\n authType: 'user'\n }, {\n withCredentials: true\n }).finally(() => {\n this.$store.commit('setUserLoggedIn', false);\n this.$router.push('/login');\n this.$message.success(this.$t('upload.logoutSuccess'));\n });\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleQuickToolbarMoreEnter() {\n this.isQuickToolbarOpen = true;\n },\n handleQuickToolbarLeave() {\n if (!this.isQuickToolbarPinned) {\n this.isQuickToolbarOpen = false;\n }\n },\n toggleQuickToolbar() {\n this.isQuickToolbarPinned = !this.isQuickToolbarPinned;\n this.isQuickToolbarOpen = this.isQuickToolbarPinned;\n },\n closeQuickToolbar() {\n this.isQuickToolbarPinned = false;\n this.isQuickToolbarOpen = false;\n },\n handleQuickToolbarCommand(command) {\n this.closeQuickToolbar();\n if (command === 'linkFormat') {\n this.openUrlDialog();\n } else if (command === 'manage') {\n this.handleManage();\n } else if (command === 'logout') {\n this.handleLogout();\n }\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n handleDesktopMenuCommand(command) {\n if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return this.$t('theme.lightMode');\n if (this.themeMode === 'light') return this.$t('theme.darkMode');\n return this.$t('theme.autoMode');\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.openAnnouncement(announcement);\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\n },\n getAnnouncementRefreshAt() {\n const refreshAt = Number(this.userConfig?.announcementRefreshAt);\n return Number.isFinite(refreshAt) && refreshAt > 0 ? refreshAt : null;\n },\n openAnnouncement(announcement) {\n this.announcementContent = announcement;\n this.displayedAnnouncementRefreshAt = this.getAnnouncementRefreshAt();\n this.showAnnouncementDialog = true;\n },\n showAnnouncementIfNeeded() {\n const announcement = this.userConfig?.announcement;\n if (!announcement) return;\n const refreshAt = this.getAnnouncementRefreshAt();\n if (refreshAt) {\n const acknowledgedRefreshAt = Number(localStorage.getItem('announcementAcknowledgedRefreshAt'));\n if (!Number.isFinite(acknowledgedRefreshAt) || refreshAt > acknowledgedRefreshAt) {\n this.openAnnouncement(announcement);\n }\n return;\n }\n\n // 尚未产生刷新时间的旧公告在升级后再展示一次,确认后使用新版时间标记。\n if (!localStorage.getItem('announcementAcknowledgedAt')) {\n this.openAnnouncement(announcement);\n }\n },\n acknowledgeAnnouncement() {\n localStorage.setItem('announcementAcknowledgedAt', String(Date.now()));\n if (this.displayedAnnouncementRefreshAt) {\n localStorage.setItem('announcementAcknowledgedRefreshAt', String(this.displayedAnnouncementRefreshAt));\n }\n this.showAnnouncementDialog = false;\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=579106c0&scoped=true\"\nimport script from \"./UploadHome.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHome.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHome.vue?vue&type=style&index=0&id=579106c0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-579106c0\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: \"channel-icon-wrapper\"\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=33933ada&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=33933ada&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-33933ada\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"page-footer\"\n};\nconst _hoisted_2 = [\"href\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return !$options.disableFooter ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"p\", null, [_createTextVNode(\"© 2024-\" + _toDisplayString($options.thisYear) + \" Designed by \", 1), _cache[0] || (_cache[0] = _createElementVNode(\"a\", {\n class: \"footer-name\",\n href: \"https://github.com/MarSeventh\",\n target: \"_blank\"\n }, \"SanyueQi\", -1)), _cache[1] || (_cache[1] = _createTextVNode(\" for You! \", -1)), _createElementVNode(\"a\", {\n href: $options.footerLink,\n target: \"_blank\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"footer-link-icon\"\n })], 8, _hoisted_2)])])) : _createCommentVNode(\"\", true);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Footer',\n computed: {\n ...mapGetters(['userConfig']),\n footerLink() {\n return this.userConfig?.footerLink || 'https://github.com/MarSeventh';\n },\n thisYear() {\n return new Date().getFullYear();\n },\n disableFooter() {\n return this.userConfig?.disableFooter || false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Footer.vue?vue&type=template&id=08acbaa9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=08acbaa9&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08acbaa9\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=66e6a1f0&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=66e6a1f0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66e6a1f0\"]])\n\nexport default __exports__"],"names":["_hoisted_1","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","href","logoHref","target","class","logo","link","logoClasses","alt","src","logoUrl","name","props","type","String","default","validator","value","includes","customSrc","position","size","enableHover","Boolean","useConfigLink","computed","this","userConfig","logoLink","__exports__","t","e","module","exports","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","bind","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","Image","onload","onerror","Error","document","createElement","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","accuracy","filter","sort","abs","pow","v","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","trigger","transition","reference","onClick","$slots","undefined","error","icon","fetchDirectoryTree","$t","_","ref","data","treeData","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","loading","args","openDrawer","modelValue","drawerVisible","direction","title","source","children","label","windowWidth","innerWidth","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","withAuthCode","tree","err","console","startsWith","$emit","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","useDarkMode","oldVal","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","getElementById","style","id","textContent","head","existingStyle","remove","createBackgroundElements","container","warn","bg1","className","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","zoomDuration","max","transformOrigin","computedStyle","getComputedStyle","isolation","isBg1Current","curBg","nextBg","nextUrl","clearBackgroundInterval","immediate","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_el_tooltip","show","count","totalCount","content","circle","toggleViewMode","viewMode","clearHistory","historyList","onScroll","handleScroll","groupedHistory","group","date","items","item","time","isImage","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","formatTime","hasMore","loadingMore","spin","allHistory","pageSize","currentPage","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","push","keys","map","savedMode","localStorage","getItem","loadAllHistory","loadMore","history","JSON","parse","start","end","newItems","slice","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_component_ChannelIcon","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","dialogWidth","uploadChannel","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","step","compressQuality","precision","serverCompress","components","ChannelIcon","emits","set","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","file","truncated","truncateFilename","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","_component_CameraFilled","_component_el_upload","_component_el_radio_button","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","innerHTML","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","disabled","disableTooltip","copyAll","dropdown","autoReUpload","onChange","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","x","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","fill","view","DataView","setUint32","floor","hex","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","uploadCount","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","scrollContainer","setScrollTop","deep","commit","location","protocol","host","handlePaste","storeAutoReUpload","find","uid","waitingItem","uploadingItem","fileItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","abortController","AbortController","formData","FormData","append","encodeURIComponent","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","onProgress","percent","res","code","finally","delete","fileSize","fileType","totalChunks","ceil","precomputedSha256","initFormData","initResponse","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","resolve","pool","currentIndex","all","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","replace","saveToHistory","newRecord","scheduleAutoRetry","reject","processedFile","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","File","myUploadCount","join","controller","clear","tagName","clipboardData","uploadFromUrl","validUrls","trim","test","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","index","etag","partNumber","progress","completeResponse","oid","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","beforeDestroy","inputValue","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","suggestions","onMousedown","selectItem","dropdownVisible","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","refreshSuggestions","ensureDirectoryTreeLoaded","normalizedPath","normalizeDirectoryPath","inputRef","focus","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","parentPath","child","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","queryString","parentChildren","keyword","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","onCommand","handleDesktopMenuCommand","command","announcementAvailable","$i18n","locale","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","onSelect","handleDirectorySelect","handleChangeUploadMethod","handleMobileMenuCommand","getThemeIcon","getThemeText","isQuickToolbarOpen","handleQuickToolbarLeave","handleQuickToolbarCommand","openCompressDialog","onMouseenter","handleQuickToolbarMoreEnter","toggleQuickToolbar","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","acknowledgeAnnouncement","announcementContent","showHistory","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","isQuickToolbarPinned","displayedAnnouncementRefreshAt","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","strict","valid","storeUploadFolder","announcement","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","getters","showAnnouncementIfNeeded","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","handleManage","$router","defaultValue","num","parseFloat","openUrlDialog","handleLogout","authType","withCredentials","closeQuickToolbar","handleShowAnnouncement","openAnnouncement","info","getAnnouncementRefreshAt","refreshAt","announcementRefreshAt","isFinite","acknowledgedRefreshAt","viewBox","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord","validateFolderPath","i18n","global","dotPattern","invalidChars","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink","handleToggleClick","mode","isAuto","stroke","cx","cy","mask","x1","y1","x2","y2"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/148.b1b1da05.js.map.gz b/frontend-dist/js/148.b1b1da05.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..4fc0c27cd1da3742843144ab2899fda13b4a53d5 GIT binary patch literal 85144 zcmV(yK;L|1QB_8rR+Or!Q%|YZsZq+DR+Xxq zHk4Uv<2RXwdLGu5YcrRw~u%0Daov$prMYEFG+(nYGUdfHT~eOgoMU7rR@l~0W_ zIb%-CN>z$fy6&CUm3c$+xBPvD+QXA7ecIIz^t{}lud0vycazGjxIH7)b5D&jd0lco zz2-)$r!8fA#&92=xRvHS0eWMN zqE%&Xjcwh#dBRhp%=I(>X{1C=sru=-sQjlF%(YSGwy|HNuDl0x+EA)V6RGN0hq_V? zyr(zxSB)Rmi>HC|m)=7-y;tS^Iy=gL3h<>-=HYg~M4MQ@Le%e;5LnU6H z_DclHe{G=dvNAW+R1=MMlzF3dQE#Wd@;oM?E-!KUj>gui^52F!@I2t%&}5=NttgXX z`cPDzx(~k(*7&}3+EJ>nJ*NU1lo^?lJZka`)Ri~Vc(f(jGrv%4Q-LIn7ZUjm{Z*sa z_aS}ML6PO#(-zH3P@89jde@ z8BIg!YK)bu3+tTls>xFt*6B$RtY}#T5panf^#l66cS}Eq zw>QjLcs{U+sfK{c`9$CW>OzD37rpnR27La(o8FVps2cY{iQDGd@ZpVHnrim=L5Y8I zh5W$3!H3*-So0N^D)R%T^)jAZabYx|oG17cEqGDgB`H$H`hp#U&w3U9`6#`lpH=4x zny5vy@glPk4XP-u(a&3XOT&MbMmkD$emP%p2imltOyNFCKVi^Rpy(E+HgE9mT@xqn zYaXeR+KCu%_FC#|dBkKx4W^idW9`rM-UlFRD)>t8z@lwc^y@n6j@l&%S%yG3xt+&r ze&P;>T1AQIJE^CyX%iRuA0lYPmg+buVn6e^i7cL}Lb}+#OiKX#Dbye!PRP@Q*jtjdI~OEIM?~)m`sy z*gMw8PXw`O3RRfeKDe%UiiT{W#P1jKG*9vgXn* zL1P{K{W%+IrCiEA(;;IER(ijDhtGhpcq1x(w_mu+v>26MJC)B9Dks_zWljUew$F9#gVY|g;P46P`X9(WLUZ$6~5gsYlSM5{cviYCe%FB zN-dmzUpnQp-}WSk3On2Y^DfrxQ{M?)#q6oG2Ov^ewfTDE6&Zimdt z*_?N=?Xj~_g}|eFPBdg$`ZBNG;w*6BNmfTZNMw+dwj-kM&rNjX%Wa7MuR08JN8V}5 z3?8Vrk7|}bu2-s=ntiTGKR?jlfpJdoS3YCgPN`RJtIdnzi#QRoM}FWttXa8Cj;;>U z$SXgQ^ND--iFr)9Ebkoy+ZuQ7>GO9J@^C*|-AB71@iqhBd2lYrKYcD+=ZRLi99CEZ z8wC4-ghoxO{Yqq}&iHE4SQ>XWyl`pieCLby#1S16vZbjnU|JwNW-#n5W}+-&C1gUh z9Z>{TF?Lw~)clwB{}Lx60=pnqZ1QVF)2D%CpiL( z(VcPNh}gp-ru@?=^=afy8YkXNJ3E0o{LF7(TsokSF^+Lj#J@J3%hcg1Y8znT7A3hJ zV1JO5($(3b!(!H`L7tr#MYDimi|&IYB>J=NXd?2(s4sGq7iGgUC6Zj6M_(?BxRTUq zF6`YZNa1DIkzbyj?#wr zzvt}AVQgO$sg8>7Y|2HKxd_e8+>6~c!wrzt4(qHRxVYX3W8G!47q~fZJ?FjC$1~5l zY0_VL_u6aUQhC`LUp%6}Cq-A>JHeZR=jgIPcwO+cloz#phHvBonnAy_`1BnA^-6BF zDbH3#Bp83U@f^xKht!tyY|Zhn<26gSoOe5G?EIifSc2Q8-3vM9_5utiYL-t!Owdxh zQ@6otm)wF|R}(4areLr#MHiwM<0a);k4=_rUvT?yW5`;ZfOpPIj?j9B@6ukv0!Rm< zcQt6gtym(&?=}yn{9W_mJeHH&iT5GWq=l_+|JtCX33vW}&}z5DH4aL9dqWDWo$C4d zCUFA7ALXCU_HXy#KTIWmx!?a@^7^+=^Uvs#=6U=3lqJ<#7Uu}ApI|iwM^5`FaTP1{ zc8x)8jB}c=OAgDVT4bD${|JG7>?t+&z7W{y!DlIw8n&hX3WfiRg+f%i`9dgMg8=fS zM4=E87Y)o(SSZm!emm`ZO7%V0R5N!8=6O$+>|jH?I<8MhIc)!`ib(NUk^#`OHa2$2 zeFIJ{q)e{^u4L!(MLnrHYqECr4Pdiz<-*8a>vKq_S?$JmRA&{wO>#HYJCOAEQf2!)*fGRrW+=AjK%& zU5b5_ncHn^14_N$+eFavtgXf6>rHflVsh#GVi#pft{@`Y=t4WB?QWwJoT+lZI7jc& zsA=pH=HTm%#6N^u2hMdzz#$Q7hqE7jmU4`uYS#u2wvEkLDB7;jueQB4hwaFi-M*wv zB>tf>=T_z_+#Ajs%D3D!l$U9=BBRfj9LxS?Dbh$5N)BXVh!@Y!KufMbA~Mjqw_8kV zxeSYiZ=#m?(<_I5FCCNfS<$Wo{g=UwQ(yoLDexm3d9*4`SLmYY{GBRy1Olq254D;I zxLy3pJIr$?OXVM6o_&9pd4fhx-$&Y*P4*T7W?-R+W}u&ee)`nPyLxh-H}QN(&(E)% z7XbGW*y$#Jg+d+WU0u3m3i6_@ysH!UMap^6b-U3Eoc8+eo9pEEhHjZr5LG*NUreGG zrO0S@B-E1TYR!vw!rOeP$slY7fLnbKzc4G{I%oXP9RDyt&1`gHu|OG7qPi$f>g1e_ z5`gWnF06hTgqCnF*t(J$jWUzqF`5{DTkmlNmHstgcVos4P5B|i?5YZX`bw2&EC)13 z&L^s`dE_Y%;6bY8X)YklK$*Kmh*>lbf*1JI%Jek!a2`SHTJgVpWquhL-G^G4C+c|- zmJExK#8G1LrWV6FFAlEJ@|jlVZg|bb)BA(rIj9jhv1)-mr%h#Y#jw_A{32KUu-FB6v2YAvvAA62>^g*Px&^mV(DtUqOUqJ@DO836cO|;I zUCM~NT0oRCAD7H`pXo`TC|X*p+PfH63)y|a_4clESE#q4%xw*S5?-^UMz?gew5GJ8#&C3)s!xxImkjuS-s;bJoFywMUb(^K;Zn305U`zsVFp|j3wcQY0 zb9Gjx?wPDE$gIt}3DYp28ih@;WbZStjvkrc|` zbCQaXNb4oqj|2aN$Mu{8RbNp3W@NF#y_+LgG=D?pNfJEGpmZ+Ekcu)-n`vzur(XQ0D0qD?7P~?c}~u=52EwP2epPeDipAIJ=72;XL??A5M4qq5orkI1C(; zUHxz7hdlEC6hplD|0hEnyVSM*k1|9HCnOo2X2+bawMhl=lo`pUUuf4=#@sBfEu9hN z>-lw(TZ;G8El2(`qjHiHi8&lQc|(k;D7N6_0zUmuT$b zT9ocJ%%UlnNDE&}UGEjD(R*@>3PSY@Um~mPqFh^uq;>Rr6r!^o66NADKQ30So*i^Zd*yFMeVtse+~vvI%4;Tu0Bushlu3S_@5TZ$+7CfYC! z27+;04W-lr7w)->&D`0nq!1ktxj^#IzH%K$r#c60%cPOjiV<<8w zQ_Vt2o%|}yQ=#nkFonH26#t}it-LvD5e^r*)C5)MNp8)!V|5~AI#bK8`&i`$1E`?y zM9(?#h>3Xv9WQyxs_=_G`Ps zR)!k~=a{)+zQW8DY>0>Hme0H8&u`f4lc$c#d&)3tiH-I0nurfC7rQUdheizz@hiVH zcRYj_y!wiLm7eD~To=rNe=YggY4U%nF@Wjd?1m+$oKD~D9vH83U<@H#U5&yoAUzXC z%%t^X=W&BoTxmVsdEVsPOj^%(p7YWNBf~=(F;C->dfpW6e^h90%pFffj~538Dk~KD zyx|MWU59zers6#G=X#5QeO69CKnp%u$G6f8x9&kGoCJ55dUwt%EUGqWmy`HP47Uf# zA8Nx6AJn{uu^<&zT-Qd|E=sRXZ~NDB!29CTX`Z-jgVMvCT-aNx5V3^O>;m7A5T>xq9h11w4y7FoXUDv zr_ZWLE5b%pvDCE5jgMWFVl7db#vuNv%KFJF;nFJXOHEUdjZIgT1pYIguHYV8i;6N2 ztUL^OPd@Y7_aHL`8?ZWJ0zM3MXUr`t`Tc6oQSDWp{t z(kv@354t6edX0%>aq8rK~L*C^&4HHUmy6j&~{~%QQ}{=S3B~MbtOesau&+Hj>lEpv_QMY7VWSDM^WLl~0eR(lHWWqIytrRwpD&!b zSj8q^lsez5vLfu^48vGoTbDf__8Yp@2|u1yMP0&}hB9*iC>qM@T(e6j$TexiS+A;;S@yzmd2~RTyr{+y^WTRe^y1rhgzt-ymbq25Gmoqo*rYK zgfdV^eE0FD{xm!S#$0GvwD1QrHCfbfZkvG#qf9co$?FYTJE!|E`%{$FhanCsqmQo< zymOzo1`}%A-5CM4aWjvG*Egc?e2%)jDIL@0OS?oH9q&Uxg`|2GEzBeLd~L{VBt5s3 z0K{FJ-N{VO9O!dY%Hyj#Ro90&h3Xta@mZ!N>O6<&-n+vVVTSmN(JzK|fyKUN$@YQR zEk%j(UZm`9`x&&KciW#qxI_Ezns@9o&bVF?+qch$aEs>@(B|e6Eaa1S4qwx5OiKJd!?IOcpMDmV`YhH+@3}3W4(T5L=$0QAMOnqt{=~c_O>2Y0NYHrlI<~JK z!SqAHhz+TPB8;{~m&9b^jPDgudazo=yiq^18im@+8tvVlK7$Bxhq2t^7W+*2kviQ= z7cBm?A4!<(X@KRV@Taj$>u2L{W+K+q>D1)ywA8Wf6!JkxdBmFx*!AXihh0}8LwPbm zUGDBXv*5YT8@V=z#A~*?#k9d|)IkA0(@kDqfMxLNcd~d@!r3F7|AQrYwa}{@`#*Rj z3vTkz?VKq<{2gN&m$h#X5Wi4_cSvPb+~pQa-C-$gv-f7Dmpj~|g&gxB_PvzOURfUc$8IGvpoVX5*d z3LAGFZg4-kFZ9fLk(CZ39IVQrNjXgz9iz`nyVQy~nra9J!AkCmzVaR~%HizZoE4)3 zVyEJFkB^qJ@`{%wr}?M-<}XXmn^^MzMF!gg&7Zr?KP5F^RYCE*v^V-#BiYh{0ohTP zS!G*QUh%WKH*u;p zyMg>D=-Mb>eb(eov-G0o$LPy~6(r>m?#xho{yhEoQU+#^9*jk@7QKS&3O_aR@R0(Te&0Eg&_(f6i~&3Z`eb5GHRe zyYogm&hO4~6e4tEK4gpDuOS$AewS7GX_v0PV~$O+w*+@5nA6Fvm36&|&RoS*1*8Lg zogcRrf$~SC1>WVup^$+P?6722b!NAcuW5O3B`Tkf8Uq4vEGu=?JSJ3bMuHMc!K>ZV z(4&Z7Imgr~R?f_=$VRSSDmFTk=j-y#sejrnn-xXEWMgJ^A5l9zfT->40%~(tA$r%x=`Qg!nPjG@R?gfzMMSvj9Vz{cHq2zXs8K8AKdI$pW!8Q z>rXku=sp}8M#8X057CF?2j|7)AsX+y`(paw3}xoN*(7xJgV(|>wY@p8mLG1ZbV4a6 z`n6jsn^21T_34(%-6W#C|1Qk->?Xo#7n0G~Kx(8P_RvZpqQ_+U&e>q4MRnLfq|x2r zxvNGT?Rmq4Ltjvl|%l367F4 zyHLFM1}h{4iZ_2aSmEbYgaR9RK!JVoQ8FQX290;Yh^2+bA^J>qpIr!8Q<>LIIT3@^ zR_0C}LT9zO5B+j9QOjcDL|y*5iCQ8=FR_W+&lrAj!3!&Mw))weRd`e0`@cH}QwMH2 zPg>aYmwpHsL3ws-eYwo4$io;^emIQhXcRSN`~qlT&A~pO({~^O<~0c$KIOd^6PcR1 zJCpO1@Q*iV2U?lNy>wxKk-&p*!-KNhLs@wqlfFU89 z(gD83PGe-{1=B1OO1KdL-EVjK(TM}#1*A67%fg+jQZ0h#-r~=4RE*ZY>q03%Y+r0i zyG`>AyG@(Ci*^RotDt8`%+R7D(mgnAS()Ws^8Dm6KM=ahT=X&9u;=Xl^gv3&^ep-B zdiPPnEmIAXMk3gmN%LxP717iNf6u@k*d@?B=1TawN|HOa%lz?J(i%Rpjp|*G9_{}y zC~TRwwtf_Q9l@VESl{~iG4j++8i0k9P5o~N&@F{tLJqt(&uhI87MDo);YJ3uS&+O} zLni{fMS#-|EV*#=dc2AQ6%Wb|6TNboQlTEBVCdmgz5cdaeIdukZH`u2`Qx9{EB>xKp!4XH$Rh z5QEX$p_a=ak%%~%Ldjk_o{9BCe8TmIb_(GM!PLeL`>bN)AN1=;aNv@qFB8?*d8XX@ z8e@GF_QTUvS7sZ80cza}213|Jut2ykyDTsj{23OQsYlnrRQ*RRaPrS#fgkK1+||8@ zAMwEX@AAOOkvuS+$OAhBcaA>#ygo>=Suge56#KbHvCJ^No?IiFdo_ZiNR0^dN6*4h z_xU2$)rSY1ur*c>2e-z~Rb{1jW-sM1`gtvh|J45HG5Xs7NJd}#k2CrqyNk8xA{4L*Kbb^VffA;ea|_mIu#D$6?P4)&&$zvvjG)qiJimE*O`;KGbgz>cTSR= z`9fz9bmk$}mlL`m$^Iu(oPTOgyG4__1I}}B9TGy!{b~FV<;EF3Byq~=;=w_)=p0u zS6iD`qgWvmL^2P+f;d1LqQW3dTiJaik#zeHz~^Y}5>_H8_JRaaVp=FxGn;uLm!Lv` zltvXe_X5&IWF)cM#tg`TS#p4AD;ZAUL_l^=qDvdKDew6GT!5~Z?t(Hve?r11BP1Jm z=Fzh$%Dq2AvoS?WGvb!!E~20!C@8RG#1qvpPCVpWxAPFk2e102o^A&4I(&JII32fnGEdRC(zlXDmIc6nUCI|fFFcA!Dry4#p|T; z@GM{_IC+@G!wfz2vjDnxiUOjezuDK?q#Tm<9wL&>iUVEU**h1^zuDLmJ+!J}O2}9I zz$R=*bUdchIxKBcCK@_g$f2@6{N)GDnB&uojP^#{o$SN0VH6PQi~Vj@S{cPZ?6Ol_ zzbfuHlla?r2C%0BtMoKCpT!Vud@DHPq|N^ot$Si_+hY<4FKCm=5Tn@WDLOQ3ihltI z$7=2l)8zH6Y6G2_r^w?l%{#Tpj)xD^hc9MuLAK(6ineamlf* zB=p-EpDguabRzaVVOKKaGS{+42i0ThD168AsvI+rxbn%pOSf=alUZe_%f_Z@zip98 zLAvwR@||b~7KIEof0e{g3GaJO4Ao;-)Ib?CZ0@c&9e4vyZB-ldQF0sk=?rx&DW(#& za`Yp5w)0o?!|D!}S1_yr9?a8P-#$bEw?`)G{0N=z zI-M_n(Ro7HnXBLHir{9KNnN3xlgG|s#J3zHNF@*x&Mui9iyu!F@!&`xYb*2e0n2Ir z=@_Yu;LpVctgnTqZ=^HQwiu~C6)QYs7q92dPSrW{39#eM=~fqiIrYR zJn)^;%c6}ap!|2<&o%y8=bu&l&032lgMT+pzR4V~cYRO-$p;b^KKeP}ds(><`FJdi zFpcl_RKya=sdp9Qqf5NmcRu!dChFZ8`@Gjj=v^LhAy2T~5ih0;`M`0Lzx3cIKVg>p zrlO;nlEd0NH%n1lc(ta>K)1Z>-}Y*)oz8A3)PRi`DL9jcgBHMTlpm`vANP|VkCPvF zkE`V3>Hs|9==Q_X0%h1O9e@0@(!(D;K2XW{-(UCNGABt(b^a%&bNz2^X#C>50NgJD zL-X#In!Y%1X6~E$i_?!qtmYSIg+AOjs~2b5*Y2B*Tid7mX6w8u*|fl_`fxNR=aM~3 z7{X%ZdpP~b4d5Jsll1030lTxfalj+%a(2Qx$Lcx#M=`E2xB1o&FeV?2=T9-}y->1By7TYnu+@E$Se_h=q)?5l zB>A!hUw&K3$+OTjX-bQO7i%~$w_e{NZ5Atzj+d z?9>!Ok@^pGwiAV9Cdd1cXqb%Cpz1RI{Wc=cDDT|I@^vqoB2CCTmKWC ztw)_*{H4xTly{>J*`G*fgurzdEdd_nAHRT}CGyAUp%Zg(RN7;eeTk|S^2?!vM_k<} z;t^-Y!6R0Wz#}GG;f8LQM#2$4d|n?4?b$)-q*`=_u8Pdd=iu6xe6EGOJoOV^j$k+7 z<+)Pko-H$j*IhuYnd|;N#!RZpZOaA3B~sH7hzme|?LxonfI%02BsILcQbP|EaDiLu zggkl8{Q^{dapydI1kqi**k=@{V;8qt6GZEjsKZ0EPFyUqFYC>3 zwYQ@lc7eJgdmPwMg<9f(wZgo=ze2+cTQ~Q4^8Z0 zX=Ub~3%|XWcMb;x6-;KJ+q*;ty8as&==ul-`twmIo+3LF&<`izz%i0eK1M$NdB@1& zHFn2dz5dP}8-dh!j*%lz?Sm(V?8$I`*UlIQx9%7|UU}PxgV_9J5CCUk5Iui)5RmpI z%f`p6jl!59;U7s!+t*!5odPi(rld`>grE5jQBv}`?JiBv=cUk ztUd)8wflqtFY{yfNm~}Re$-aUe!o?!d|hr)7^^$0yY50z+u1P;53!78RN&?=5jcJNNF$O>voP|qfkU8&Zz6}Yn*in$yHwN;UMjfOmW2H! z2$7jTGm{CkR#2?f+pgp+F`V4t8OTWQb$jPPS~+~uMHLbB7>?nQJvFc+4|>-?r4i&t zcL9SJBq;@dw!mtM@{QF!;TXbG1n8eUM)>TL>!?SC>wWaNue_(TmoV+YYwl$~bH=ms zp3YywtR_!|m*fl_nHPIxB1i>_U9z6}Hdl3)CZN!O-4o^H zTT%G(U-N{Dn#y~6Z$)EV9;j&6iX|FZ9VoVFMN_dsnadKlXMMh?)Mv|vTBlq@*@NXW zZtwH0WPJZ+%dTh?uK`yP8y4Ns8@_A1L#2o~V@OGyL7Ww7bT@59ko?7!L#009+k7X{ z2r%OPYudHHfWo0NV+w}D=`CH*ztARn3fde=@(7A){^>;(4<4hGCx|LkLCS?P$D;_$ z#=8!ahK7(Ge;={~Z1!p6^rK{MRhV_%#+NCF2Y-Zl;f-y69YD`4e8)y7J$g4=2?fbjJ?j$9xYKS|>w2 z&X0SXRO3bRr+QV;~eiKb|A%WVz7k1J{=a78gnY#dMs+dhsp1758S?fC-}UWS8PI&wf)tyPOo>rRLw0zK}V&thlnrFAKZ{K=WS#v zT)py|&EY(D!E)U%N#?pUokV@3U&*f9c5r=dvD;=)>X#2EKa+SlNYK_=IEwbPmpCOg z$;l&Nt6#@Y3E$vqg$Ja-{ZCBEvjn?bem^D8f}Khx9e1AQSBdk)S$xBJn*Ly(cwmjx z1JY3bZS%BqwQ=Xkg8ip|mUP%lKAe*I52mES48GR@T<f50a7L&-mf&e75r=!c$RD*s}SeY05lSWVJ!M?HF%ewLyj_fg!fn zEO#RKLbe?VN}1QlBRq}2FWDpU_M!y_5h(vxRy%h_kvLU@8%%5W-pB4h@2}C7Z27c* zC95G%rjZHCXd&lhUJi&|NhzVZ~JcnQ?l1$#I5^{CCu{sBKd$6sj~?D;GG zsDVpqV3O1T`;+uE{7I0juOR^q15N@(TnoXe;rEp1!>V!lY?B12D*M{NLkG^p9h=3^ zrvFGoZwKyIx#S+)`f&WDvqulWkWSi?=C6TJxXLdfv*%TGMUuB1t$Q2$(A*WR%E-It z-tg9G@YV}*&tcM`s9F!z@d*K&X(&nGD$VYTujC(6Vuk;kD z8fU+lW;g9UPo&Wo{!6iHY6q)1*Bm4uFq7hu>WU!Izo>EgUJCt-qKmo(j&%-s3`Oz$ z$fu&{s1{mr)k0n;1}06Yb#cHw$Rs}g_)+Og^P6}7F>MvnU)91SA33DK2=DJFTFe3* znwlvr)C8nsz7gk-uHVGmbNx0D^Esvy*wq>M7HGnL#AapoGzUv01q`c6KYZ&9vWPi@ zpcj|?c|n`KecXBa%Tl@%uD-d;bdW6j?byIo-8a^&U+CVO z{U7g!1#9@-&yTKg_{KS#F7@cm{(s5;Z#j|8C`i6a3q+n~>shIdMxy%a;*GSe zmrly^x5zS)4JOUl=GcvtYcI&b5fXSv);|V@GKAqv_=E?1IKicK}+( zg3~i{r5uKKL>QN27LG<@QyjGS<_544$Zj$dH#-y25r)NxW$Q~L*>$mtySr=){JINR25zQ)$IUY zz4Dc66&S%@@GMr9%xQP)RuYu@l5y`g&H*_XjoFi+Rg7-3#-u%T^h?;U;fCG+K%&hoXF!lF5-J z{V=@Q*nt<1ym@TF-n+~Kq7_>mwPNxa1t)ysgoYu$n8th8*Spg|^8{tU=y`~SbJkFL1u2AqSTWBk9C1J@s-?>>585N)QnihMb;b1afG5>JA`z;Y) z=sYn?grDAo!K7PsKxHM%0g1QQh^iO-i4KAx3tQ}RNH1@roj7=2G}9AfweKfKpy$I= z(%#Pt#V_<2YdPxD4TnG-GLt}m)Wr@5#K-=uFS=S{Y{a2t18=AGRq#dYpVE5v>()QI zT9UTyv^LspZF2QRYiH70?(5dp!d%9@okm`^8Q;4?UM*=ddk`oKsI006TwL!HGMv-K> zBr(MQ$otvsEPgmUt&3mb4F{w$^13EGb9YM*tT#IsTy-Mj*LT}5^DDg1$p-MUzrN!b ziC$unCqgo>PsCqkZ?>@m_OeR~ zEAWs$Q#GJ-k3_$#UI~-H9tDq?N|eQ8$_AAB=N;>c^?4=4bhdI8zJhM=Bt+?=9ol|s zdAi$?bZAr!om_K3m(CoE9G9_D8mW-w;j}eWYfenxEi~tL8io>%1(1jP# zrXw z#%5BDf2ogh9{QsaPj8h|69VDpPjP3czT#5tCpjRmlW~F zYF1Qmi`5I1mv*iRsW+7H*dxOe|C&H?mU}%z+umH-9(T31K&k5qI>E^>?pV}>w>(khu>W=<_$(`TF`~rxH2dzzJt!9u5 zkOuCODzKZSa-aeGe!qdT08=O4?yT<>4V+;X_v$ZybfdV?Jqju4VUl1X@Uhr9+QqGy zgXH=d_t6DYX1U*HI&&yyYMV+R87zd*-dcLdytur?f1GrxypYKWAKDS^JTx1Fh$@v7 z{|Yi(q?$z+IL)b<>oFAROSZ`dGyYXhT>;v_mMyRF1~J~5%CfBJ#+*q{AGu7f6Ls{w z6MMv|MRy;WjroA71U7ous%F(K81)s{H>n{88o6;zmPeA^=AL7fk9#sz(JUnQXr4+FaB7P zeA-~{o1(W{{u;@EeDGawN`}*TkNr8w7MaB>u*`;sQogr;DB;h5?pGH*oEuxPhbc}P ze_ae=9>HfV7RT4y!YY5x_kKDby?ef2z-y2X$2MY9_i(X566N}Yb1po*OSYgITXCs@ zH)p$5?ES9Z!zne2;9`>bVhD_Xt%nS&10);o^g>61|tH`PRYA+xettzIP+r{bpjmb5Ps;qM*NVLficyWxjS9Z0?lL zo3Gsm{hjhl^NmkmW9Ng}RpdM6q)&D`wK88jBkoSp$5m8*bW8)d zh+`1T&i8}fny)=5ck7>0T6_gll#D@!bvNH3|+vl6d^>ATl#s)<^?goq#X*& zo%f=+u9u#ys)s=CVY(rEsU_rJU=2W3^8RT=Uw?SER_{&3o3ip=!aw~NW4-RYSLuPr zWyKimDW8Jq$`-_NgDWeYlB-rU#Qtukq7T+yRb&;*nO`o#K(Z9A2f(8h^ajkJJS<}_ z%gVgohKW*ca@R<{0QJg(y-vN?iPRlEMn+vxzy@+`_;*t&NbRv*&^8zKs-mFnF^crE zf+h6sM-F}Quy~2QY!UjRRoAVjkpI+`NsL|1U7@OK^X%}apFOIb;pcW7-{_ed6$ zHzqW7*@=+P`Hnl0Y1om+eA|aVR8OupOSb;ZnBaPP5jYPQI(x;K*ph=S&N%Su!k3M- zcNT;;=VxW^^81EM?l5H4u3pGElgfx z-!QT{s(sxIvq)VC9Syn>9kobsoe06dW5=nXp30Niz)AYBfe>;gwg_w_GOW5!DT{*{ z1n2-6A=D^xdk$8eot;%v{zGGD%q5Oi>Ae%zCAC?Y5sNWR-qy!O&UgGn>T~4rIvcW< zeq+*hue`DGZ}NtAhgz(75lnj8LXIBPdf_{z0qH2BVR1spsW1~0-jVb_o-*h>GNq@ z`Agna3+91Pv3Vt$8YQLrBb%LYN{3{1qoq7;*^vfFzHfkP0+_xc;Dx%XYsZayQ(K&3D~kYnIJHyA3GHNTJIf!n+L4);fjwVM|uhg^U7|DlB;1}}m zkuJjTXG&}s2k3_Y$B5Y#?siTZpJ>|-nd+Wt?G$@iEF+e2!cNl_GM zVY?gCzj525tH7K+2-A8MS2O{&dM!dqm?Cb&D6BgZ%Mf?YE-mjY#jup?vHYS~E305h zCFjhuBD9ES9Mr!5B;a|Vr*joJBwFtM0tpTBZ1+|;&S0$V>lPxHNige~X0v)(Yy|s5`#4{{$OelMKz#&rxe?+ zLcSSwc~obqj*%83Y6lrgJGRyM&3LkQ$tcf`>N$1GJA37mc9;|k^A)?#t2#=HMK`y)~D)TbtKs;x9 za&>|fT&ImmHsO7K?W#I_b1UFX&)%fu5*^AI#V)*`#$1md?q?_e%y| zde$2wK$g17319eIc@Jh!M#b^_StCn>KlqEDVlCd~-m)jPCPv%5v; zUN93^=~e8_L1s}f7vqGI%qyl)RduiuysXipwQ!SU{stl!T^acXVI^<(7cx*|?Gck0 zX+Ahqc89S%{`2@s_YhzCT>+EkhLM7 z;AY#<_OjVv1S0T(lDm!oSpalhz?nMhO)3XOTyDrbOm1T`Ze5ipIywi_1pf2xu!hIU zu097jDM_e_Hiwg3#n~rO{jOwKQDqJpTT&P7ZfH~*AN3JQ15mpbW}hBV<^;9Yj1Xuu z5AISpIg+a*D|KP02^w@&8L+cP?Q(S~ZcEo423YIpHeNwoT>cMa+8Fm$U?~12JpuCreY06Q`nYB$?uW|gX z%r5&Ln4yln+GqZ~;`>gSgFJpxTuhUSvcY+7;Jz@6m!Qt`aKwKpmlMIp8 zjE}=<9mGb58)`q4KigzlE5I*tOuOCOEq}#WH4aY><>sgK>ev4yO-4m|Sz(AZcJ7yBy|+|&Wyk9fBSxPN74>4u6(epE79f$PEj8O}e#XQjYv9}r z5L+HMxRaL5LdiO@)s@eYkUYgV`pOyy;D>ktHg13kr5i|*&q`*Xy+dMepA#izz~9z@ z?-q*Fwsqb$_vJ|1JpX0Uc;3_YS8SWnK3ot5n5=UkFW*=ZF)PM47(t8J;|ef#OJih` z?=z~Ty$pF@WC8tMWf)eb0OvfCn7o@v?{S10%*^+!h46j!1X9`uDj6}R>vLl-s>)wN zFLp8&jiH>-W=@e|*cYN1I^X#D@=+KII;*xUUlcHen&VRj*P=-&@_4j_)Q44P*Q2a2 zEMGPAo#N|!jpF}uT&983A=1R z3n?d=B{;gsH~XTY{JF`LLu?o@5o>r@Pal4VW|qb6y`+l})K3){Thh-4WE+npPrl3F zrLNpTE)fb(9@;TU;2HJ_|8}o?6LW$qS~$y1k$F9L+jMx_V6s_I25sP2X@Dd_t+z~9 zPz{Q_#P{;z#Y1?X?&*}Iy|Im_c=^oR=N)`%Ve9Ob8D5`77Lw^**o=9SK;Rd#@0rc- zhnDQn=>z>i?H+T*n8??{19ui;wjkuNl89^D7{Q^n7%jwr;Zb)d<(TLKm*_NYR6-j> zJcn{9oKr|0^<1diqm;mwe}Ls|Ss&)z?2!K7Llw`;|0P>*%yG`{1o+gSvZj)K1qAc5 zyk^Wxf%iNXA;pAJml}RHP*qM529or0b)}w^*y*3;@9I`(DtjR)KLXeHSA+>d)05<} zDUJre!!9ngdKl<0u2F|SJ<+NzAT1Vlx_l6|VB&m=AoxqhVAY0QXreyB71?Y@zRS?z z@sYBmTLdZ7Sp!mqfp03=KR#b@&_HchM(o+LgiC57lJNcu;=GA3NMcERQB@|zF)@O3 z=xIt3b1=YI&ZSFqXT#lQ%a{CKab0D7ZVBV@fHfX;_Rf8|Jmgph(R`Pi-E@W%;QTe_ zNkA>1+XIm#HK>=;=*7g;pU!p9J_{k2 z$^Ffs;{3?5wyCbZY(g~}N2TRKcPo%7GcP)d+uH zj&iOzn0I4y@|pWjFDfy5#Perm?lZM0q1slw9~5Zi@)ppMKzYC5dp2j+b@t#4GF7Nj z$Q&^?H`Yf=RVPA`moLKluzkgB?G-#+bW`Kql}em^Qm1Z=NOWKF;CI77WHL8d9y}Cc z9&vb5Z>jruP#sO<8XU?86S5u$G9!u~T*Di(va)n6qLW1aX~IUr_$NgipdX@NTd@Jn zd-+8BwG`jBDzP=62vkruY{BvxzDN3VJrvVt)*5hIq7yl1(yI+-dlQP#ihI;N<<>{~ zgjH~*>xe_B`hboVZ>v+Ukt}xkwpYSz!+v}+Ajw=KQ5pMnJ+2-i+=029+O9$*aw~Hdt)MkRyjQ-Q)pLVcvST`V=AB^auGX@5PC3`s*%W~tOqz11gh?Hoa`AUFo*mv#g_WOd6o0NGJUecDot%bZ znQ?i+55=w}e7V!wQ7rX5*BU9;7Ph}uhGmAAJ5c$}Rp^-`CXDJP=34RF9t=aM$#aNY zeaTn7PJwBuBDWHedel%~_|{lpa@WiHp3rm=h-Y6{|7LvdxdVTnF(9k5dP{J`!4?(- zV5E!L0Dr)|Yt8rF=ShiWT{C8`)0~oE?!E4-ar!>!LYRyTr1!oC(*JCfL|+sATdMR6 zL>`ZPO%|A;4QA+~BkExoJYya%U+IgEr52O(ME?HSh-be)Vwx;FV!8^g+k6$8&}*F1 z2&}tB=WWFJ&p8jNTSU@Q=&jwCH9p#^bhe-L%$;1T;bQQY3@vvgd@OlY8w-U z1A%$~7_3T$rN#zH<-8Ryd9yd+wj88yc5d+|txp~h4u(Nn4SL_=Q^Tb7unpmd?+R_c z-ke-FulUxE!FeLf7+ACS?2HW!v%dxUizf{0%(e!XM zbRWYPe%4s^4U!M9cn5lO-gM33qv)ANkIb_iqxO{7=TQAvne$F7W1x)GG2+Csdg{pA$2~HD?XAHQ>R3qB9JspQQ zJ96(jc21Rfb#@xM3fu9HXa~XqH}=eqwg(%de4nN$AqmS${ZdG%qG0WLfUrerU5abb z`&X6s3o<<0m^SrYmS#hyHQ}`wIfA8Ng1Yn~1DNRvi;bV+#4!fIz*H}4kO~avsKC+v z$%v-%mNKV#uiu{G|7Ehj#bg8Jn|BCN8&)pt*sYGdcf1=_O*ty_3tr#Wn)l(;3Wd)) z@WM8@q5H5Nk|{R-m~`(ntXv9B6=P<&mE~Iu5ix~Tw2s@b+!ik8_Nti|GWdX!Bdb>f z?S9{tuuQ9g{)@LnzKe{XXxt0kyTLA%hzbd{4j-|%8`y7VqsM$3tWR*($(OF0<=kHE zoaTdVag2bC@}6~ZDyRvdlSR0hI_G5~7dy~FB~n!As^sm>0f2Q>Ssmrxs+1qfKerLcjJ zd}R;pDjQo)Qt(}XTf#Y{w}|bnLc-o+Z&3R<+Lb;oUG&=6TF$wvhPH*T$OgyiHxv3p z6SDj7a)k0B8a@9ZhfWf3Hm#U#Y(}J#jXOsYsqBL7Bq5%v3xzl?M)-17J)zK7-c~b~FfY<)IA%sNCBUN# z0+v~78?;UZg?Br@pHKTv5@F8o^6-}VcyV?uz<+w!TS8MqHR1+L61Sf+^ZP>+<{vd- z7vY3`TtkV=5UOQQ$1zkrV?k77(%Te@d(cmIUH#-#FpUJSwka9+=-s=wOAz#K0!Z(! z#~Z(-h(&c})cTqND5%i`(mTCGfLCv%t1!lGULprIGuH_3HGhfVtKM8stA~9G>R~M6 zcORh}1mgw=rsci^lX#(@-v)T{wjpN4Tu(j(?p{^q`u&5s8S5zUfq9eb zm(M8|DH_#vPI%qLLQ4j}9+VGg^f}9Eg6FL5xY^+#mmw*hTqD!rM6LuZF!^~&XId5k-hZg%BoO00D(Pa;97kEb7Cs@Nqo-^ha95Pr* zCz%_}^t)&sdwq#-!rU^?t_4c4fe!ybimOr>?;^M`e}es-zy3A0un5M! zY$2zQVhb54nrkegG#RNek;DVIs5amV#tEH_8hd{O7rA6)d~1O|ED3GprFHKpUT^{O zNXK}=XrC9%WbxB+Uht`vmo__#4>y5sIsBkPg&>4rx+QI*&JROVIj4d(H^5q!yC3o9 zmXy%Y-{{L%7h4Z2>{!pE1D($B-v`%Mlv;D3#aHos9}&Os<{WWH36TCfBJ~Tqko&PA z(D^&=u|=_h{|+v^%<;beFfN?pvlx=jI1)$#UjqnPv{>f)5|K@=IILIiLloy9I`m1K z=zA`~`gsp}4#cs26o<)Y<>zz*P?81C|4Ud=k@2FI9^)zQN4(X$(*GVyd8X%Gczeq+ z(;vt*G?`g0-A68$sTa9gb;TM2^;#+XpvtowSU;}?ZY?!%#;zmP;%3?IbKGn+pFD*GlDPS(zm*YsJuh`x`TNj{dCxUHN)?ktNN}G zYI0^L&g~&*);Z;$+wqA~Lw&|(%~}zO%W#I+;kmZ)ad^SE zdRC11(lDCOXQk@X4&UygzD%n3o6PUiJmXFo#iLD3JnGsa1&$;;Hwp3)@-K_}vabh&n1JLZ2}tKG zAVqOQK70fY0cdlj_n@kLL}mmo%sNz0)B*Eq0%DXR3?@QJzj)!LaL%2*OHPoA@*g3# zmLhF-8o9e4GZ=1tHM5=$EN(RDM)iSrm12k;YQovo6m%bwM6jKSo`U4pGmGc~`P42Y zheH9d_K7~hgK7Z@>FT1*2=e^Dnc4zD`W>XQ7EErKX=$m&tzwSJy)e*_g(*%*3h@y2 zP(JRg9vofIRQK5u-x*3QfqEF7abxhTF{y`f{R1i1tH)z8Dv*C;C`D_^^n53V)YjWq zvWup>4u(2f>BvGp7LWby^*)kts%J$&Hdt%($k4E9DN^Wftfbdg!9*jG0zngT5l7U= z(Ml4><0e%h6UPvZ1{{3MajfB;7#Re=%xVF}^QSbX6K@wv8!$$g zcMnG>Wx$|1qga-HxPiwO0`?J$BYZy8k^(%i8C_UU{1kEM>KvbXiw_I)psaK&lBpTR zDVZ)wAcDU_UmJYv+L{;f2ExsoCOjBd$ZWw82I zuh}G9`>AiH8ONJC!`l!h+nT)qAR}JgX4FxV1#702w=JDEPKUOG=LFLli=_w)Yc~QySvNxFvBU z%M3)YZrWeuFjr9?@qB3xr84PMZ;(Gdi$oyjYgV+*Z34~S=F0?{gKOt2)yl#EIVffB z`NEiLA@VCF6({b7#N7Ec7|P|E*K?!+9#6^R?k3ExN2LeoL4CO4xV<)Qz=4$FxZy&s zs9R2WDDSAvHP3b?@0$#Rla1v5*=QSBUzs_8q8}XpyH|6Uz+T|hW7Ug#~+ob+|gxN z!9)sXSozp!ab91=hx)u+Xln-s$T(Y~Ob!~E97X`3vt#?Mi6Xk6Tt`VA3fKFg@&n~P zUA#m|3Q`G43d+iVy$qwoD`RtK*5I?E2;XE1ELN++{Z7<;k`SZJ#-udC4GsZ%I3hW8 zwtRAjuC-8ut+b>bAmQQ0#*t>2cO{Cz{}6`1AHX1!UPY-~`Q!|zfR#UmrH-O8*wJ^RwV24( zHl`f$+4RU2l?mFJK}Z#EDqI)eTZp@@rN2f{Gi#t>Q}|MY7Rv8y&GP5XREpc)*9keN z_u}#o!3ko0Bn98iL>`>4bd*HE+lW_XX#KtA9xuP_u~P*vZ*CRu8hO`80M{Y>Z=NTw zjBvFES0}r`s2uBR(ROurEU~WpHtst0n!ORRjm5iegU~5!mlupQ02V_KQ)@YvoME|O zXKGa=ZJZFRpA)$)%kzr_uk>dBD;C)>Z5-y8FEF01{&NL<_*Sa@Tx-7Yto3#sZZI2(eJ+rJ z1!IFJ;t?;?fs{mL5!EfP6E~|%%qCm1J>?IGBbLhYv^gIMQCI1vJ<|4iP1oiyS?QYs zp3B-M#PNcpk(VrFzot@D~gnqz%R_g04F>&El25L{7%d;zz z_0aTp!! zSY~WxXdSCIon9yV>e$a|Brnzn$>tl)n>>K?aQZKAXmq~Z+QfR>fU$i=(dJBE!cep@ zBcch3#X~{rV$#FYw%C9m#$#lk&3)UYt-sf$DgtMk^!4>$yZk*T-2Fx(U9}Q#b)Ceg zpUGFiljO&Z#HaPdr|)c6X+y2!J?$50DRXxviPnqC+GkA%#1xr1Ak+c*XiU3(|Z5P&W0&^wQCcy@WQ$DvVn>&GY?|zsBmac zR+6;H>#JrlW~<07pI~;=!o%WAvoB@vnyds7{qeF4)!{W@eD6}Id^TYh+F=;QK z>EGSVBy8UM-)&%FKOM(hU~?YVLNImYEP9CYOfuty-o||tO&(t)a&5D`EBl!*O!+g zJl;E|5Sl64Z8R|V{_{p#ZN!#oNgk_b&PS?5ysB$ zRTZ>+7AE7SbGwv3QtVj#wj6aKRGhuGbk^dBtZr!&f-qP6qhnngG`Ok88r;0aHvIw_ zaLaoSaRnNbkCUSRdj9NUOCQUBG`!vO83Kq)=Hu+ca& z2{&>aLeF_vm3#R!BngWT1g@wB8nf5-cOAxmlH#LutUP1?f@NA@jumUBtU9s^Kwfs{ zS{Ymku@mOaY*j{{hwB-;pmljUHrIk-nFFygdu3+5(Sdxj#q-Zs`QQpU5AbwBDcj6M zmocT;R~vDSQKJ&TE8T)G65yN6qc-bxm-6a#fN4SjQ!xAt6Th5eQSt@{;loJjPE%{NYs&5w?_6puW9x zvnIPLy0?z24SY{in~^$jl|Wb=N;Rer#8;}TN9>JjCZ#DXw0R%O2VTgYj{GgBt9SDxVRW*{}Gs{kt~^_qe6;-ni3S2^q`7uCyWM z)p=?6-aV{EU7Z@+)$$+iYDbxy`-6{hpvDJm+U)LNVw7QM)G&wj!mNqzwrQs{p$-Tk`BnMEH*}NQB z^(1!(diTjzua$P{>Trh>02E)2dZfP`_J^}OHg}uYuupbb`RJ%|pMu<>(QI=fF2Ss5L<)~RD^&piaF^ZNBfL0z`x@|YU=8}bmYW4(s;B*|LV zYjsSG{0)hwb*$I8e&9|ciQ_lNREm$(SWmdtTbs6)GMwvUHYsi-o<2v3dhu$krmoR4sH72DCwg(ihQO%^&A`}_w7wboH-;Y z90D-_5r5LM=NUqc6ywok|3CKLz0HZ^N*w+w?O6v&(9-BSR|_(u8DI<;@PKbK^Nw4s zlGM=Zmb+VX0p@*h){eme<4t^v?OdEqVm4W0XOoSwjgt?vNWfqI3cu&nsqU`6NiEGl z$gZ>5py{eQb?VfqQ>UuV#d`#@o#D8xVBF*`XtX0CdjY#f+0NnHFS|y`MO>pqOLt~n z0f`?Ehd(_5Z=Q;N;^5vD)P)0R$T5xw>wFFkMLl*O;6pfR%*Wk5CJ^5&TD~k6@O89_ z-WbIkz14jQTQ>7?<{8>ZEYPv-AIQJ8R_bC!oLHz_XrkZ4Vl&6Ry};GXN!vubVn>7eos(>p8S+3mH!+xl2k&2KmXpIa zfW`VrH*)%-8#(>R++uyv@&BvpReSX@x17Z`Y>2j&u-Ke0K5h3!{RJ10LZ{~zYo(`c zm%_yt4oDt1#Ytwcb9QdA#_mp_dF}j5o@!@3V>IVI&W$g)YiJSfo^(4q#iB8Pn)=8z zz!-S3SviHbmk>|+w0&8-Sf~C9nj*F_e}T5F1zRF1SzHTKmM>a|F|Wf(nsxym>*qJ9-T$*4dSUnqOBVqR zCo2qo{w3QHZ0X#5;UznF6pHu@G~?L?J1Q&xo#r?R;s{(|pbA*1xQS}=6hl&=L#qax zvE37gHeGS!*6XyP+@=j*3N}RMVGSp_hFR*pBj*}GU{|qlt4xFY zWbL#v%?5L`z^rZ!wsTCfig3XWTYYYR0fR&@pu5dBb1AP0`jEtVE+ z7%ay&jj?t_oA-U@(|5pR&(XOqE%H8?Ce56Evhh4#r?WHHY4nB0KvK?Bv~Vgk&r}?6 zo>X!T+xpyL%mXKpF~?8xjOptWwGs@KG0yU6z-je(6U_vtAXD1n3vR^YDGF7Zra)ha z50pf}Tn4u*I<~Va9ow_vFma)uJI&Hrx=9Q949zcKj28sZ$l2^xK;M~Twgb%~OZ-v9 z@ASmonrFe~k74T72|L96(%j-R7-I;QXr->PluMywruZEhr|yW0(Vn)iVE%O$kW$C9 z$&qo47h&Y)ZU6SladcG-oDrGY#PlhqHZe;bZx!|zwJ@dcTyxtOILB?UvO}k5a3AVi zU=I(c>8rlOygA8jagOG}J6Sx8HJ6x!DUCSK%Z|=-ZX2!YX>)`+S2@#Pe8~}jCyjGF zJ~|8QOI44pdaPu@FH%j^4ON{-k7~N(x3@jeQ5z`DyP<{VCMz6mJheO9^IUFTYk>uW zgGO5~xs94H`6Q8%o#)c>*{;J27#ai;aTQL|;kQ}N#bfmXgOjemwCi}jLT8^}pc{g<+$Y6|nHieIvbLRZC zr}-3XPQCpXFB~3crJa}Pp?U+mZsY-@MQgr^2@Wv4Ej$~t7`S=cbNF1IhYsKIqynl} z>9ER5b%%@EjEh=%n`_7EnX@uoaf;62C7%|k+N3cw3l+O$yM_t7F*}%!^%gJ8w^_HZ zm*FzcJ4!wQZx( zjGn3B*JJeSF=hz-G&P_?T@|Bu=q&pMT6DWnKemxcmLMeQmg&U1SUg2sOHhsQ;hb^oHQKo1-Ff&5g+M3r{HcqwR z;m-nI=~)$(<*$t)M32lZ8H-a@)ZQ?PK+8^=8m+!nnu}rTTZMXY8}pdQnK~mFG$hR2 z`2{#yFTvjjaB*){xVriIS6GfEM7=Kx3Z9!M58K0MC@9c$iN-3WA%K~yyS5SP>TW`u z2bzljlYrY{Nr6%3ATW5vzU8D>Nf;A(8MS5$$Fj`g##ih>50%3Fg^GIsrogK#q5)f- z7eFmtWPaVvMFdLqrpBTZmf5O6f6v3tb{Yb+qCdyU&L&Nd_nfUdc@u4F82GLQ!>mw- zI`RS++9Hd|2Ny4}-5B;^HzvU(pOpe*t>%IisV=^;?T8yHHQjLFAkUj89by;@#&Le= zlqP)e@FOL=v8!V?bMtNmye()huv)`tfR18&0EewHUeOCEuPlY7YLXbS7O{F3EpeoC z>{4T@V23aO7Tdt+aL;Yfr~nETNYBmTL)a8XB$-69``k4BbFPR9jWPZ$tNRMQ7^1%` z$!?Iy9m4dQa2aUw2Lj}8`V>dN4pyv2#JS{*P+EOd@ zguo0ks28(!K4MnS0?DU6*;Mc<(0bmVCk3PWvEgpAtEAk8KBp7ASEfD!sohXC=TBp- zBnAL1gV@=j!gS;c6EXxv42uhYta%ijs+XgWZ7hNcL~pIkHIITNGK(BRm2P1F3Jr*w zV-p<;3!gX8ILEndpn+vJb1Z|#R&KrzGWb-$0N6J%pwrJCU}qwWja~^IJq>d~4+tk! zRs6P?6Y zoAK(m_@acHEb6X}KL2=BeF=-7zeimvV<)Ym5!l zPIDNI6?6Prp!QHvyY2NtIfh|ND(wX-^(S%5c*$0`Y^H^PT~u&Y*#6`Wnr@PZ|CbFK zc1)8V+c6Juhb@!wZ4W0+P@kDPaKn;^<=}V>t^vy z>)3d~ix(V(ZLN>8)D({b#o)yzbDBSQm_IZXapTEhypeOP&Ut1k4le+6n2D2GN-nXV zOEf^1n-%RSK6_litY|jUjjVl7fydv1GaT?8g;y4(vc)LeDAIeeN}h59Cu5ofys<@!oGW_!#+8Q|J!#nYs++)Ib6#V#QD{y?i9M~F zmAR$df+)`&J*J-a(2n+;v?)t34NNvPhGO zxEm1*qB)7#8)a;cwy7nQyc3IzJf|TY6pKm;(*R=jlvU>&>Y$iaSi={cnh+^^Ytf#t zkm*@u2dL&eOY4VEYVG;J8IV33vajyp2W@KbibJi~q42^~&|H;9bgPIJVh3H?TnYqP+E@t0AF?e8USydH%?amCy0W!6S(ixeALacbYN)$fM@`WQFTB8|byo^?Ia#udR7e zpMpFK2Trpdo`(*2_^$-uw~o5-+wq4rx%I3)uI<*MGqAH5_>Q^aPH`La1Zk=u$eUkc3xS>Ylt+lIxpik%X|{&>={v*13yNOS%IgJLeP922Wmj6-;uUPCO2 z&sUy9*?7Z3OnZe74lcIjOa^xhfG&RAlB-KqOs7^w_diQS3M)JtqVh*!i zSXhXm3Y#oaC+y->C9|VAFHRi8<#uFlsXdQIIVa}k&TN=W$U7A~EOig730+_%_a5$; zoo$Rx*-^;zOvL z5COxa6XN#q3NA#Z(f3gkAOz+Mb{#6@D^;cv?$O44dTR;Y87JWsc=oI}B+PT?0vpnW z$$3YKukdbw$9SVUg*gDypQmvfnPjJW$53l-$(jt>wJ$NpMjI{==k#euu-g$hLECgA za8^#CwHUNG6$#Qd`#cuxqHqL9fYPEhNdvpro0Icg4?aV8JGF3_R|=Rnphv|EAfTTU zDFBvL((o;zG&u7GA=ubX4xyq2@G=eeSftOh?Rb zYx}fwN6#*4C(d)wH$2eI(meMbSE$fU@EP0$+oj#?f}N*rE%`9V{f$$&O-OT#bK@sD zmOq9uh%pdxZoaeRDXY{Lxxb&cmj^QSo-3}l2%oMrjv%`7T;*x?a6jjUkhl{1r1PRY zIq!U7ra>4jv~a}bHh?JM4Jpg@0Po1pWGCDhHOJ`-0O;$%2vv(LG*xF3O7n|nT?KF& zPYKA#=Z-K9@I@|s)GNHB5QN@uo#ZSPUu32^RSZ#bzA|_2@Wgx=#m*hJj<{)2CXWXE zwcV$U9G&yi=&zlp;dPtf9?LZI$|+1~0zaRH8)Q4&${F=}*Xxcwt}O8`Kc}77BkG1) z(IDbA1=X16mp4i{%LCAK*+F`yd!jf9<>u3IDYcZ>9%q- zlsdtmCt`s)={5-ec{&!D)1C$)KbK>H2`9+Xu!Gur+MEuh&GN9cIT=N!qqb`+&HFib zq=Y;R`PP=TO5TYWwRlRbRIDR-P*$IIt@5e$z5cY%_&!gwf}C!iinbG~l;(>Ta(k&1 zX>_#6UgxF_J|hi%s#7p2*oho#U8Gk+i>GX8jZ;pZ`x--}Xx|#aH(#$KJv9}aS0>uq z$@=ge9h-Z`?I;B2kn3-wJpi#XU4}( zN!#v_b*0s4cB8m6p^XX<64ch+!(aHeT&0YHi&8kU3`#gT{hl5ZTg=?K1`;rxf`-F(_8k zBwODDID3K0#Pn2gAe@%6rD*1ORg%v)485b(PDq;6AjXj7=(JT`s*Rte{~T3JK!+lc ztxwhV0??iyQ!CX=BLi9{mZfM7b3u_*y}<@os_h}Xy+lo_Rr4dmJFKW=$s#Sr(NnoS zfwVX16!TembV#~^P$mn~;APse6x9LHG1Pew8S$2er>WVL@}-I0tSB4r-4DE4tJX#m zF3X)pgP4}0YfDlWKsi}m3oqT6)D4r|4UsbQL)(HjkwEJ((AwoMfaqc`78 z$5ok(tvO0%Mb|8%S)f}gt+sAh!bL&Tjh3V;7f3~wOjD3dVcq*l6l8-)7FkqDi)hw! z&*(Kms|7!cg5Dx*nHDGs3Sa0fzX_4A` zPACg2t7A=r)K|wuVRg)sj0Uk*$JT;%^H^6>Ev#x9GS(wobolj-CWG)245HPDkzALp zEm2sPCAmpN;mNk4w@p!a(j-==EecQ8Buf&7C-pY8F;l|DRZS2KVs#9S8*DNqh7Bya zIwk=Yw2>eH{xc4&jH);EqXwyqSc+qsVJKwqPgW+wtjzeQiQ-Pd2x$R-E86)KG}#e_ zm5|v=u8t|K28U7vU=NP;6ERZ^7fE%IlvEo-(~x~bJ8P&66Ro4FqL9mq+$^Qmd|z^@ z*;Q?4Omx|_CAE(b%OZwpGe}~iL$(s`T-Hck>ZleDMw41(Mo7R}B|(v*D9+d;9Um8< z=)uqa)_d!B-H*TM{^Ig?cdm4Ae188of4uk3&EAzSAH073-nX~z|Nh7KK6>xFJ6HKR zV=x54+HR8>Vc9Yits&YU85%P}qG?%eb7p+Jp;*mMH6!b-@e`7>s|d>_s-?sdtY_$-0(6-TtwEZs-&GyI3?rb0)7&Ob(5%d zQCM$F2GJ~0Shw`HU2VhOB4*%chY00^!iob-NYJ+Q2ezg^Exnys%P5+xc51{-(uS$P z$hsf>?cUWlB-QG@_eSsI|KxZn?wFRT929`Jf`q&O#vi)3KD_(YRVc>3&OUn_XZXS8 ztImAN9n;cV%fPL1`weymjCA)~;FjL6zjWrPt(yw4e|*SwWsB52lSIFWf;CrB?iXxOrgDMA9}tQW&xp*H1gjrQ zL_q~c?mrmX0+6<$2?^RN2KK!VKJUK$`|jJH!;1dVe|BH}xclbKd+&UM6^JHPRdQ6{ zAVy$F^SZ7QNehn2GCCxxpVwc#f9v+$Z~uPpotwM}x%c5~xQ@TObLH+guiw4>=G{BL ze(=eEKlsIO5H*JzJ0_{f{sOM4xCITSW68e0*HEd*_4h>sRi5{pojiK6F-$a8Te!DI63YeDlHmTffECX18X0 zqt#T*jNA0mCH&%|aLC>ypv)kzbQFUm6Pe67Y&MoT4yBp4)=0p;umVH>Y1lDT88cO4OszJZdhFf0F zKxcU_UDbAG$HcMm{X$1;tDT0Tr8hcoNU(KTp{AG=q_BV7Q3Fs zje+u<-bmX6TOC_lOTjRF>KoVhm^k)?t)V9^k)$rJj_K8NM7CDP%4MLNUT4EM_w5TQ z!+{^de=@9QnIuy)t7A4`u6m8s6^-oMhyP}zR_ze}Os=en1R6#4eu({>p(ovnbI_%I zSz%vysB96F&iGOn*-CatoVvIn83HL^+?jO_Dq7M=T~z8xvSO^ISPS@Vk8T#4=wY|p>>2zJXbdu65gH$|a=xt(H+qBw6qIFutfCWDDL{uA`#wmSBNP4?yOR#jK`?ZbaFmX1ou8L6>vUsRvLy5dEuIn1n%ouC}DI<}J% zqnfXdt*;Z)u4p%XB8x~{WiO*D^<-`z*|#rgm0=huacUp2r^}jE>d7LMhA@=1Zy)?O z<96mYgQ+#j3_(24CE+-g0)Se^NE%V-8?gRxfdTGb+T%#9os^hIq)bX6j@(wNt{X|p zS%RVoR!Ym%l7^^@&Y+3IzSas^+sRZFtwwPZ^;F7cIRhxAm4giK8}XswqM#!J^mk@L z3LT~fyoiVgZITiRbg28LhE-*RY8$$x!!R>V$vnBK*(AfI0Sy2~ySzHKIwopKEn}9m zsh#AChvzlQrzR1Aaxk4ZRqm?QVXWBk3Y@y71{rSyiADRbb8W)^*-+}MV`~{xZ;>P^ zA0*{+*-Gue9Fvr2k5ZPj4av0h1<8`mK6`w1EKHn8JE>p`xX=%;F7wrE2)JK;GqnB^ z3?jUN>S>^FYW4#|c=Z}zy{@Qaz;Nq)eM(D9uh3D4*KhFkJBDiM^QvAAue%wj+h?3D z58d@v+aP8H4(+h2bF$nqB#Wrq;f<<%qeY6yneBE2G6q!U*PWF)^~{m7mldtd)29~Q zkBlR&%#o$TWe;EOB#ld#l1BOBPAWw?UGZ)K8f*ggiX@v!?b4;BRz79uEyX0MRMJII z7nRgSXO&14Gh_Q=Cuw9fvSoqf+>s?qZbFHYv{E}ePHma5Z8Z&jvv2i|BW`A`OikCw zAw6kj@aQ;`BxUwnB!Z%umZZrb__RZ0MkAYo#^DUTCP`{1l}cr-Cef0TD5rKh$)r&> zGE%#((hcs?rIoc*3P+KG%G@3f+dVD6C*?%ZCJDys}t<7R9r7T%`HL0!S z*06GW($UXj+yN=9xLhHlVLS`z9m!rw{%9+OPX2<(fXn1Z6Jq#>!RV<`Y)8gkj%;c%2e2d!!w?{alEHb&1&=zUfxu+n!cGi`|NR64HXAiW)>B|Yzr%sOP3ZTi)1u?GnsPK z%w%CAB|05d_1ZRY57BCsrlQu8T58rNh##8`#N~wEG4T%*ure}=rdW2NtSa*P)iLpj zocKhJVxyRC;1aB0_`5bpOWz=N*Dhh|5tBxo3Df9=!9M*gffMAc#%7IZwXy~CX0ca_ zj6uwfN@-&dsWxZYQprl~pde{}FGz+FBn>LOFYY)*YQ~l&Ov#l@Q)y_)i#wnc8_|3( zGes#S>SZI-AQpWv+=8Nf%@#(AC{f9QeOPcH&{DCqX-%|1l4vUcx`?QPOC}` z`a8wWFQzQ1&gvv(_TgZ5-#+&9sa*CD`#F=FmC9CTQ>j_a{X|sCR;EdmM$_6)c8F>c zK`Luldg+p87qR-|cHK*t*cVYLYtA>;Zoge?+_C}LUuMls1-NFVBuXC0#5dc2Dl4VDy|&f27z{pXN1v*{59)kiV)?zPLKU;_G}&Nu*myVDPU1?HZ9^jst7viahE z!jsJ{CK-tiM&`K6{*n@tPq=?wy5#Vx3ro@_8 z%PaIc8~$gF>c3FMD(7acr^=JF)`0`5i`x#jx5T#Cw0kDy%w%c*wtXH~>d8rZoqI8< zJw+~Ek`GeEx63QrVkVQRu4U?qY7v8OaH))`8&;B@TgwOOW-L|BBmlG+z_gM|dkTnK z0JLLU@eb(NPmxr0CAU`I7Tf7EZPeB`lbMoe9mu6-L2Hsoiz~Wv%Fy!z7{U4xJo*$~c8DkxO4NuZ6Qhl7a(82!8h&ikF~+usmb$EW$HZj4u4~r1 zv`OIjz7A&fLOCcDlB;7-FU{(up&o4Wp%96>UhP;`BqXAyvAiDyn62pcP};9`TW^Ea zO*8;jp&tx5tn~wdS2f#!H$5H=K3fk$%Wrwpt69DZeWR>yShY`Z2|WQJ8=9h+f{ zxsqE0gSMpmS6O(H+W&%aV;E4Uf^Cx5RwbFz09Hp;w=BH{tI&XVe5^r_(KA9JZ)0s4 zN}~Z*jqd%hjcQwOw~3La%MH*B%1oO#oF-;d-%Lw}p>IM1&H`+8tf|yUTB=)6-zA#e z#Qt7#@sc##D3)^31zm5Y6)g=m$79SqoK1s4>ck+LOlF)7GMP+KlhANWcC#&MoGCje zQrM8vj4bI*11{j*Aqs-7Re(;;tYtm3mW5gKY90)gi(ps}<`RJaTFS9N6;?Pk2JP~n zG*#U)skZ{6L2=y?1;@HYq_j<~r5tNa$HFr}0q+KyOpda4^00O&2U0N|xo8G}DY(7` zI2HZGD>psxCuM^zS(RG!x-%^+hD_}M0&|Ev2})i@vCFh&dM)iG+e9L8dfxT2R?9?xNieJ%!Ud?VI?qfsUU14OQ~ zl8GAMMaCeOv7JcKF*}SV2wsUS(XQBaYZ6J3MVx~-Bt zOI>)J(MpzNi&`j!cO$2e`ER(Tr|6Dv7cKv+D&KJ4U-h3EfB^q7|ltB0)VZ1RJ35SG4T?cpLH1K^wn6dv(h=JjPib$*SB8qc&!X<@;Yw;yl zDMWHn@_>62u3=Hg4_L@_HmUa;B_;k0GN(v28JC4%Lt6tuv9c1>?3jj~VSlc1yVm-Q zP+)sG_U~v#{lti8mvPR3Uac(G-T}O*jsvysLxTePBu|kAyRX78*s{N!9$5cnDXiY z8_-=D+u%lDwOp0e-X$lpKk#dsvZ|XTplO28N;j$DL7?nHnwrhS_d+)7D4U7}ihIO1 zXcCpkt~5!cL_gDb)nfa+<5f~0u7WnPHwxP10-Zw#Fgzd1(zaTzY$t=X<6B&1qP(IUN>U58$nJlF5j z@Ac`uMf6KTkDBH$v}O2=u(IZSWL)B}OZQ`-k*D=359KNK!NSxa+KiB}fAUL^Uhsp5 zxYQyEcjei?(B$@cyw_y*w~D3_gMMO^neF52>|6zhILcD*RIUf%U|E=)n4S#~d=s9W z9gtoEgGtbHlFC5`Z{fg40ecH-63LY7{wq*>MXn9_FW>p<-XGrYzW(P2?|;^P`>pOb zf4%?rU-jPnpnK!jy{ngdA78!y=8x|E=&SGUTzl~9-@C70zkB;9z5o1#MT&U;uiZDk zzW3G_SfBTKr~FK;GfIo-9m~GO%(X6*oT{i?~O?sYegFPv&l>tF#o{-vsUIbr-mGfkK&D{mc$h5v*cKAQJKXybR zpUtNH?$|ardX~<^p7!3G-**3Wb>OrQKbhWhTIgJ&o;UQ2Vzb9{UJHHZ)xSRkXA#E= zMrdag`FxPRPJ93lJ%G3&3?YOr24YnZjbp??fE(V#vp&Zh-mR4)hLj(D@T z$>ti|!ua?%p;O4Pb@23YpHH4ScLZT#%hpOEfSXfsZNQKNE!RSYnn3NGg(NWyPuD;( z9RfvAo6y8z$E=%jz2H!aD!nra5!B(7Z*>vF$k^jQ)SpXt!J(0Z9{`T}T8DshNmExe zNmaK4%8V((dt-u|(00>YTHvU~5`y!-WA_rCen-P@P37~`F}Z9aUh z`{u9jfBS9sr`PU(d#m@;&mLU<=KkOQ4cm{yKk)wpgFo681J^}{=f=eF-I+KMsj7aG;k~+ig58)L5*$3Sp-NXTQZ+!>{^Pk^z z+d4J6SANm`^e5eG?{#ndsQ2y{-`%-}6uf);n+L!7pnK(w-u2(~-v8@^H?H^I`@*Rl zj)Y>Jk_@S3GBoT;JNRRVec*3QjDhjtL?Pj!lnGxtCJi%tLaz}TK#qZ_p0^3XlRhdM z+M$eFA08Xw0nb61gL$$o$%?fd7bL3=5OYCraL~T-_T9gI%G7H`re1H z^=^LB`^Dd#u3gfC50`m{$R7drTOGq|XZXv3n5J%FP$sEX zd39{wDG^v)k@1635c7Q?=3_#9IVNfDefU~sd6@;bjG)Uh2uX7=RWgC$^DVrAGie;l zS#PPOw`YW`@1siUR`4sci_B%SKk${H!(nIKX7ErAga7&B&#IkGI>(~KSHpO)H{|apj(KL%@nXe#CCPvXbDB9w%)PA zphK-00o^VNfa ze$u^j19xM)3bzTeYcx^N)f&5sGlCIGKfc+$eCOWBzv_MV@4a`v>fZR^?(KKFU;fv< zZ*DmI`u)GZfzlTvm3F`SbMKpf!){R_aN)YQ&%zVsGV9s7-VIX=Qr^`PamQ%{&Xs0M z*RAH6CTWo~4zDG>6@}<-Gcw(qkCAP0s5a=YvP{onx-mpsm>ARs-92!K=2FMfEBt$} z>1~_xuow5&P9Of_FHT(+>%Mujclp)cpKo?w|J|Tnmm;iaAYt5L*;{Y0!{E&-$JyV! zcK4gVK6vMH@AFr?SFiVOzy9FozYQp<&V6A}&-HMUtP;s^6u+nzKH4B2fBZ@J`k%3T ze)!+rxpwz93)6f5?{D;Of6{yRO7E8+dq_dMo%g9CNop|1ck$^rFgA|PpymY$i&xEY z2+Q3p+ug8(5&UO=zb#MR^ zKu`Q63N&>6ant3Wo)`?l%}o?r?0RmPckq^CLhh(#KfNO+%R9H8*1mc4lrip34ofSf zQuoS7-EY1Qo|m|aKWu~O6fPb;bK*F|dq;3YxR4g^|Nhn9jh_akT=&*j-Jjp|!*j^b ztk@iS+5$Q0!1fHAGJJTEd%?RY8Co*Y`}hxd*y(+IwfF87A1Yqf#**Zi7VEkaZ`cdf<(w<}icW-}o@59#|2>9{AJGZ)TU+)ji zs}2fj0crN&^3~o?{-gWzo6gPI{ab$nke6@tK6nfJ2?1Qij0!tKn6fCOSzZTJK`^;N zzd<|Dg1Vyv3-Xe@dDA0Iqr@IW`BSJhri)Y3)uKbFQ5F)ATtLwhV)%&IBZL@+Au9`< zT7Lhd-Y-AyzJ9a&r_0@cfA!wiw}Cld|1+AX0J%T<3#6#I{rbJPf6PYo)nD)b{hjVd zzx0Z^z%AXTq^fPWO_TxHkS>N5c*1hs`tm7A}?vBn0*H=2k z*tSQK42&)1BU{@bkTJ*|Tg7g{ZR*}p01E{N?c)@vfgFo zVENqt{L6cv+`9YsU*KEM-P@mauf5)V`;Yhk{`0$Ef5i5>EAO$KEWx=PO5b7>;2Ef{ zH0%QfFJ@Mp^|uz}s2~8ahk>__M3@kw!6oL|O9+)+xCwi=(-5xbUZiR8-Hc*l5MDn5 zDd1ZFM;6XUI4I;Iv8p&PRTQs^WI)(hmBY^u^-*993hV;{ZaSt^~i)H`TR6nU0}`43~L7@|^|{2wpV7{R6R_ z>!?1rnlz4UIPtym+aAvOz-1PH|2LQ=oXm7_xMJ|4c9bYH7OzCkl?!Ku%hlzZq&V}_ zM?s1^H{8sG%Lebj`H6_0rNJ}Pz5Z_Z&aZv*6E!n^M3;lv*-(xiWl|y_#UC3>&DM8F zaV4SegwXr-SH0`Ey5If`E|Ix+l6!CdwRibdJedWLO>6^KOn5!vwr%?{#b1$Gc3`;G zvfYm7nnP~dxF6bC<6Q2`oNL3D&NrCp+aOKd2C-QrcSp_~kM5{5hXykI?NP|gg<+ty z8ce4WG4SlNA%`wqOwsm|uD7C&f2hzoryqD5_|uQ>ef??gvwy$$$t_Noa=OgmE$;;? zF@&;^&h@Efzf_im?4T3E37tMT@ndt*Pdz4w6m|>T)HiKL4H0j^b;PvhGzFci4;xa8 zgzr&9RP9S$CKQ=fOrRlLBfGQ=LJooLz8jZ?1bY+CWQ(O#!ryqu`(da5%bA~+ZG!-d z3uVEH*UaBwvtky&Ih@`+?uHD)gRKeA+k`!5q4(o_N4A0O!|o{@f>&S+w@N}6IXw)z z^}{tioC}E7wE(ek6&l@+Mgwh0TS?!RD;yAV`D|7cir`k&XZ5=_3qqMg(<{_p9?hEJ z$%{O;J1y6=;bre0kQfcV^D!}KfKdG;wTXbG;<1W|)s|ae?&5N9XCql5Oj`AOCyAbS z+g8wipklr;G&=-W5_d)D|64^vQ0p)3=n7V4OjRgKd60tUVde_LG6~k1tekT?GypDFBvsJSBMvgg$31#{+ z@CJF>AQye02%H^37Dp8wfZK;32+{Ni zLkzMImxn*S25w#d=knXAEj{?`o!+0{{h!PK_T8Ni@89~5-us`zecCVo*!}w5@9tcK z>*bHAlK#nGdCOyCz7bHSI6@)``>9)f6)9}a9p4_p&TFGccQQuVsFOS>n>Vj_|8@&~ zUWHP&Wx}02RX}_HedGS8SGqsH*?aR%Bv!dtZ1q-JqMSM=S9VGfHowryZOu`smU9_~wI8Kq0<+=Yt0yz25uslkV%k>jO8g z&gA_I2=m!h>=!qw?yYOx*Kgkc{g3Z`^j`Pvx8Sn=D-@SYLCl9{);K4T^0F@|@ z;rmzj>)&_3{po{`{tC?Y`5$}l|N8!?KfeFz)!uubb^r7uZ*M_D34Vo+=S)t47ebAz zqS%iD3Ax;%XZV~~aiHHy**NNwkI4p0-5AIH_!kjDgOJBun1XGAIo8M2hXXfcn29GI%4!D5oCIZprsz9qJVm*S>OC3(Ni&u;3Xq+kMd>E8Z5Z=m_zovZzGZ7r3NxcNWj7IsrZeiKwcf*KbZ0x;hexfHu;5^*7z$UXMa> zu$1Bk5ry^Moyo&Qf$vTVvB`&!G#{U&`N1U3KYWtrQ;}FdLXtYZ>0VY3GB#+;Z+tx* zdq)y@ShfqDi_o29IA+;3g7zeif?zz0Ug}W7+c|xA=L#A>b$@of`}I3m#N1tOe9*o2 zUbsyEhne~Pv)S^6JI_2?W4@6sX2NW5sXf`<+t+&^e9jXSXBe%=@Qmy;pZo6473ai- zO~B^t#`}yJzx`A9XV-aN!&}PG@n5DR^4;5i@R=052X{Dn)3bQ^Q9sr(zE4x`K<`2O{###mZ@kxg?+dn&KL4uw^*g-m z9r@v1Bb!ui{o`KVJp+C48x}aC_udzggJTE0rB-9W$$Y8R=zBN^%2N9Y-^7EBKAwTT ze!I_Mo}*m9YtPTFcK`M|^AEwG7`LwVuDsoS`z@3Pc(I7el3yk`efAp$>X@`Wa<-p+ zxp;VC=k!6>lia;6AdTqS^W$9N@|qtCxMB695$-ooQ3WjFLRmm0!C3Xye;`2^KCfQ^ zyY^3iGDxrDhwovcKF`9g0k+M&-QWJ{{$G9v`{YNzd~o@4_sSOoC8gIY7nixKSq%b= zYF;As50kxv2-s)I^iySh1ak=DQ)p2y2~lM^AHT=I-y+n}!MQdXP>*wna8FzO^+KG7 zv~0W!;%t;&NSD{$+n2jv-00ondp-qIewP5ArgvV<}>J| zZ_Y4FZ!}Z_7}CqMq4R}}lmiK;YJ+u(X0D)OBp@FWYymV8lGRMBlF{Jvt%PPe8Y1af zRQez`kDk0qdolm?%xg33W5EG-p1B&tvNQU!21TBYLzqyPoBWoCp$P^wVEFi%we>S~o9fuEMYXv1*lM=b;A$gHzmhT56 zn9bg~3aIH8hYC_IolC{n6edD61(yoWPTy~L895>8Ua$t@s#v6DiUR!O$ktkP zx79IKy1?g01v#;ZS>70z<~%%`8zd&^XefjbQQ;PP#f689i&;LOB28_|QR_LSM)VP= zwE^wI=#`5>uNDSNhkYwded4aK;^w#xIcDU<-EQ}FZ>H9;n-Z@g5L=Va<>Mch3gU2@ zRfKNk=IUjex~D8U!!NIVx#_AMHB4`BA6K;VNqd%g{^L;EV};C}BS65N1fM>}Yh>X% z*>HJ~Mr3{VE%t7jmefp3{6tgs-m6us=tpT!6Q!*{mEP-DzV6t zMOu{5kDACKXN#eUyT&x1xtonBO!N4Z;-em> zZMmt&;dYBYg(e-X!@g@-b5iiZhx}BkZ?^A2d(8g|^1D#K@_VIzdGxFJ!Y!YFyo6i6FbMTXe83wz3LPjLgbip6K4gl+P_h*N!hU42 z92=R*z1D`=6X*B3@LsECLBf8o2|rSD|KHYwL)1L>(fK6uJGyxSa&nJ&374l@5WU)C z+Q_b;O^>v9+7vX~G|{p%;qbS++wTm#(j4wtm5n!HOY)I5hC()er|piap3#r%QVrhI`i) z%|GqonTG;rf4Cg9CJK32synWoC~R&9NuM*v?R1~S%t$npZo6YPX@1XHE)i)+ZN(x6 z*ve$61%}Z9>(-&#p=;-GO>`qoBzZXeT2kAtAIQY12?8jWGeY7lPsjwFHENpS~?YrMYc5nawESK1n+!8#6+d(P!2rkdx%hA$gJo8{nM2yk8t&0h3sB zS`CC4mwbFDFb8~cQI-^%?p1txdp>t(h~#^UrSf*hGV4t>EQ1-$&^Mfd}}><)KS^+h5X$<$8z z$%{;|*o7x_&1xo7G^9$VE!CDG*L5;4LeR0W`V@myNY$5p8OWc&!LKls)_hsVeWj6E z(gQWA+(He@oqYJoG4e89{E|gXp+-!ZXuzeuIX_7=BxcT&Z4Tl#q7+l2R#awIRTe=}N=#){FG{IQTHVSeQuftq9t+`2}eCocp zx;=zo?dBn4@{V7kK9C&idncW_dN_gxJUnItfo|s<8JSE4OL2YsR;j-khmf%yTy6|O zp)5STeDax0TQW?N45z7QQ^q_FiIp`^PJ5dhtJ?xBS;~(-iROxZp=|f=XT>UA@IqRU z0xRDqqHI?*7b=rxTw;0|q_2=9DgWrfw~P9aB@>4w1=68dI;EeDS3(qmoqGo0S;j%! zvH^+B&5~a{J8^0F!vS~!BPXFePdV9E{M=x-C{s<*D8lV6@)>f;_1NKz*m4&iwg-p_&wu?;sMuZf0P>Y(|70d+O930!A} zOt7gcGD%V}5Nfp+m?7Vy%VaYC&mv^rwz~*SAvdN22WCS;@4KX?YQQXa$}DC53({k+ zLjt=dA2yj}EU*@|W_`hpY1=b8nErARFzv6QwU5$lxgia(z}H4r6{1-oZTJE&OWptS z7x#YuP50|}AN=c0@Z)N42@sYE)v1sE(*5m+JYRc|N^>Jhd;5Nhx`YMPpn$XsEGVxL zXtIxJ_x&AixJkdvx|$y+56!4OM)ZRA^8s&*7{KpI>Ro5FPyj?&VOFrt31XU%-YmsB z>|gr~8Z?W(bqq!G^!n%w*|KKhKstFo!C$Y)k|q;%NEj8`$O8wD90_o;g&P7_WALWW z=)1(%_C`n#*p_{afXN+0_eMX&CtEmY8M7nHkS#faROsDiR)AupmPqkRUxw~uHa&Ly z?B&0Z8gq}#J}ZqX4Ego4?Z|AMC+dI^wJ0I-6}48%zZJ2Iqi!HODA{=v@RNYLpmaNU3ipeTbxZv`1Pe3zTO)%Oq0Y>!a~?aOe>_ z-%jimXg_PibKEoZnbx<})4=kJTNcqwxK0Milz@;MqL4V(CiLI7M*nFjb@->+YQsO9 zq)PuaH)x@y)M=?A>+p}Xft8y?ktwJ;{@r$9o@*!8X8j3p85W?!FnonW&d-e5R>9so zlSpOSdOMlQSo(2&6Vl+scU!99mi z7KXY0nDyhd9Rv_{AL47<)H{Y5Y<(0y$7tSCv<}>61o6j$7$8g{>sl=Y#4;B21;Hl! z9x-+jy8%hIjnpLG; z)g_~r*)$Z3z)nZ&_S1jj3QBl^tmti}zcLX897Sc+rmMHNQHXj$`-bnl#(Ia(5*k2h zlBOX`tXEY@JD&(YK5#3+b3RHojlzXl=FAP_*<$ z2i$GhONc4d6cZDq?jLtzP@pB28y+Du?zvshY;?$>jSkrd>PFcjtu|yM*r(LW^~o%m zoSe+=GiAL^YGpW|!!rqkY|4hxwqilWs{2$)Yn0DX?-+LXzkkH$++#!kmJt7Ep8~N+ z%GszfAz<0`LPiYTNE_#I;GKtaa)JVNfk21hqcBH;?xsf`{ zkJedXG`7qYN8`&}X(YzXO^nEyxycd7H#Oq;rbilIK0D(0@*^=zel%vu7e?x=I9g|= zxGP;SRRv-#^}}H_VG|N+h4s}x?ofUzs-2>>JJz7q)BOUI3_0?`XhNuv8*Su;{BA~G zDD<22SPQo>qF^eFCYTDN3Z}y3C~K)O+V)kLj*^0shn5dB!cCwfO_fXd~) zAwm35okAOhO{Hcvx!!R&&%;*-12BV2(|{t-F>g=j7pJB}%;DmWJc1BYqlAKTrVamO zk~Xo6I8U)+VT>G~A_{#O5kIrt4g|~!b5`I)J@-_&Iz|~Vy$d&#(n zdHnQt_4i8q}9@HQ{HhybR>^AKu)d@9j?XeiLg3$ z<_P?irY8PTZXhvOG<*`|x{-g3CLn-LJmO=saKd}TqArp`2 z&?ubbB`?WK@kzd1c!(sgDJDFxKSp#9!zdo{otEJN7)?Y7Lh990nuXW#8Yln=Y1?WtduCWo&hMPsq{)pkh8tbUBcg~c4; zE{zu@F%BObC1W2wLL#>HJ$mqb5pwXL^VQVV8Zn}09MWrG3XTMSWFe9P#tS|t@Zi-Z zUi%Ee2YV7+GHOwa0$ee9tWk!&HNoo!pU|YY*K(7F+wcfXCf~z~Ht_a@6?rlo^Wl5h zH7`g&M{v#Z`wjCck1h8A5;yb6(=ptF)iX_lm~egd(B+e_zwc$# zE`uYZDP}BjhNPdDjM!_*``$hgLzp>zgk3naAZDo>%)BLS%?SA{hYh-4yLP%Wc(o6` zz5L`w`g=z>G5>PB%UVCQA&5TJpXj`G>q8>F_i=slA(P&;NSiNbFC=ML3-CY%h~+}= z&^iAEZnYq*8@g(y+q$Ws#WX#p*eSgS%T@QCd)oU{H$C{B`(hNL9Zli8UmZI!@4ke` ze!SUhaX-W}Pa(T2aZk3|M7Br`Vt74dNzZrny^tRuZwk3R7V@V%lB!topAEdWBvY}a z4eKXT;$$-=ugvKq5m5$ZGr5PhA+)5e-R=y1BQlS^GYmUlUYR)kn9Nt(AhH5sRR(P( zd^Zn&GjXP#+g0*j+w*+(AH1u04iX+acZ_*w+hLEKQnC>L39c~26I@}KCpeQB8{9$b z;ar+|JBhRPaI9uXo38UApH1ig>XlkyB0k#;VWd}>8iH+z2KG@8<(9$AEb*Wi0fqRt~=Cmc5KI2;)>JHk547Xu%n%)ar5?wdF7fAYKT>o>bsuXjJcBaHik=0nc4 zCpIKCLn8v4&ns3lnHYz|2qzMuURg+tCxip=+aE>N4ty12?||qfL}(Tg!`z!qfp@(e zC8q)_^=#JxNGz040Fb+-`vQ=;mZtGx`C$aiH3OjLAkRh+5?e!SVIw@u?C(ZI$}u&H zPiz``D+CkUswF-y?3bTT{N?+uc)))du$wV*%60(EGkCHHKq-ZTVETS+FhwsI@2)k{ znB27otJRzlR_q1qu099}8R6m?ZhsxI=EIEIBF&+q9$@;s3xwabMW3-EHvhHo6d-Iz zJU(Vg(rtiTXD}NIVp9X;0$ch@f~Yt7A=r)K|yW`b59u!U)lDl8#(* zbXn*%m)&qvJ+6*bbpvihz#OS#vKsmJmK_QL{uhKZjGps%;d0lamZnPECSJjEUsYXi z+eh+<0DLQ}W2Pa8j;qwac)~O6{GJZGe=xqt2^?YjH9;_WFT2)Q38XdWyBaOKIUjr{>b_9#7}RUsNx}zN&m%_3uBIsb@m9O& zARkPAUUVM-Lf+Q{7e}jO!i##x5UPg0X%a)I>BJN?-4e`Bn=W;$NifK~U`dUP;NJTC zGQwk~fssk4v>F^OJSpM5dsM$&YT!P_9s8oGt!p%__wXTn7-ywvkn)7cgU3ryXTpkE zJ{Z#I$x|nGl{*y^)%zC=HHzo+rebDOp2zaBZ(-w`F%K|D0ZHu)pualc49PM&nk+eb z*Knb_`rNHLTyJ-9SWyY|9Atm*Evs{x%D;rs%BCe*9TVTdYPv>7egm71Z#SNe@ysiR z-6Qgd*A-1t&pvxRZWyBIaP&uwAVb%x$0Eu z7%Et9c-f+DkT%h3LAJV7!(`ap z9zAp7v08wgYBl~$^|i4NLVYYJD(smwY@+7pD|(IW;SyXMU8BkkFn+SnYc3^-ArsA_ znYsCS!HVvSJMQo^A-lde{wN+vxd#~EySdvR8#RT&;&SYXySg1|HmGg^`3)^iHAK7@ zfR}3_{Bzp>knVp*kL|?(d3_?(>AnJ#>byw1m`Yy&3>>ke^tXpgy_%#o;7Tikc(Kja zF(>3dh$F>$ANa1u_?J#qJG&2#vdyAzLb4M1}7hgED z_{{Rs$!C@yWg0tCNEp&4{39EA_(vnOQVshfZThGtDfEvPE!u3=6Yllwb4v@0C;iCx zPboLhFapjakN`2#B!bczf3nM*2=f8pmcW}RrfwJA7c!dTsy66Nlr3YIBYg+vh&MyF z|HOKed&+*3Gh33X(pNeAReW&T^nuwD@hUN9wmyIEHb0YkGW89ehj3S@_*t$mDuFX@ zo&6BOdiFSmy(RBe(ujWuTC6a=c{W z0T#g5B9X~t0y!#!?VL`WHo^f`jiyph7ootNKG#@-Q&*Fy@WxGGNNd~K`KaAttbB&a zka(8~mg6wtiB!NE1abl&){Pd;O}NZjrTFj#!=^wC#fRNE4uy@KDKP?>hiJ)QZ%=(} z7$)*rDK}XhDnDU3*!Y$VaodMvD2!<8Pf-{)tp6=33hl8CnWFF!XCKtSD@Ii=kP2w! zwA}kCB0=E*yNunY2NZ`%)i}U}WC%-8GvNjm3OV#c79r_GtmsTXB zc0`SQCoiBW1XT_39%!vkKEpnS0d_c?SZNL0l4%jd8&7g(?Bs_0OGZsHn{@Z`J-!b# zuV6<>c8X-_iDFt-u(mZrZ`brqEslA{^Z*37({0GX_7UWil3K)&4l63`OA$$>xGE3n zDV?b6IJwd7vHW2gBJ4i95C#Ao1P6mO#f7#9S+N+b@OkeBWuusIH}2BSl(x%l{QbqD7V!`t0b zF7J2DJwflrm^}i!L5nm=2n&3UV7vxBS+A*yPxDT$_>?Zr5iX&aY?Fl8wlk;zWSlR~ z!8gJ4OtoWfJ9Xjyf=krE4!6$5bj^?&o~N=_2Sk=HWc}(`)3VxWxbP&V<%#ayah9FK z6zsSk2m#K%a}R-d0U8o5oEjpzCb*=o8^qBTxY}5P%)!HTtqTL7PuUMyc6Isyp(<=# z9-?_)s5}+!ziU!Bh&$(|fDd{GRthp2oH-MI=iVG|*;eTDl*#{{+|7ouf zF}MswKdXygW{ww|Kokmng&;lJjck=w?ElmT;>y4Og-p16ynIB$aSztDFQ7_fvSgGih)X}^pN*uz;v4Nt+~rX>tO1w-2i!V8ClqA(-m ziqRhPQTZ6)13(@o&`W7Z5Bacr4n{)f)qAivz0bUa!lDWdU2XFe5Ipz=-S0znp;K%g z%!lbd&t{wcp0~8V-t+c!p*f1jN@Z=7e54Ue<}4?o_9no71n_XC4v1`7#Ly)5Q4MO5^|vR%u{mkRTW<}}8HSA% zvWqR3SE7O&Z(J2ijJZ{hxbcpxL3&1~YnG&FxR>meO5Hc$n|-&yb*F2~^lR|UL_c#T zC-f-*K~!AKhnFG)Xcw1y&Xv8dwIC#DIbup`4)NgYGW*EAz^WAiez>mzafySG+XTlBf|FqE6ARPEM?8y&^G3}x=2SJo zk2NZs=&);fkh!W)n#6h019W{^JN)LVA?EDix1nt4o~uvx&3n%|SW3oEJ_6|TY`WHm z&1_x7o@mrwxWIEm2K(D1mN6g}jBV2M5ZEScF!qB*xCCK^BSEB(E~g~bjS@nTvmOf^IuWwxikbhY9H)nnHV=NcE`SRO4NQAI0l7R3RKw}5k904rvk($#bfzw zgv)UXj_%zaQSN>YljggV=dMIINKN<2gW!Dmb(4QOkxxSngYx{nz<)>rKOh)`SCMoQ z4zrW6Z|RS)R}66*LwlxLVo))Tltwly$Gwsqks$0e@{gej?jWEC?T#>yP;iI2@9#qX zS%zdbF_+$>6N2>rL;+sW_9QF2_l^nu0#X@+Y!CyST14uSu$%PkUQ3y<9PLgV2M^8A zC#vo~^*c*JZ*K>568Pw=_bjtp@zuo7zPhK-MamnIBqXp)9Vk%;XI-Iedt@aOKOC1# zlUU|>FEX#U&)X#oe>y?XuLoy&G*TpFfu z@uFbI)|e4YW>`+cIJkc@?|=6LI+@#l3p+a;iToD4)sCXlRRxc7Njg%I`C~B*!Cu#J zqSKm|z_^y-e*np2S7B?~X@X189sv#8!|q=p~E7de|7&)pL}=c zTKC%P-M9bfP-~nLXPgav95IhzCQKg!AQ6KS-V!wsyI1wZjI04sE2 zXn3cUm2zaV=aOT~megKBbk}T0M+cRtX}|i_gEwyUKKe`Vy)W2=U3vfhCpYij{)|mD zNULvu29d^ZeR%h)tNe2A-uR$k80b7vc`>&BuaH5j~fBW`>H*UZ;B*ZbHENEm?IICz@Ay1hmxnd6@ zyH(6jN%{Kplqh7kCUb?!VsSbLzpEuVTd&G>_)Vs(rCL=g!SBL!X+qAIs_?rsUC-rm zby|NqU#L&zr6T;6syVqtY9-O_rZ$zGlqBpXm!B$>s#)4BUo7ONN>xI^m9p|=O)gMW z@>No*O;T`E*&3a@;uwI*jLq)GTK=ccRm++>mKh7_l(6VoyUP3l!roSd3~-`TpH zo36NGDBbfUSIy@N6m+qcmnQ&YK%Bp7b&6f7P?*ZrauoDLDJxADN=3wa zLdr^2I!{wMIWJG=k%0Nhd|sa7=SIp`>tssG;b?Nw#6*!clk>&uRCO{-e@{-xrJRH# z$W7xgt^bc0U<|=auXp%d0I3DCEkLUWO2*{ilWF8v(LDG-Y9K<{V%wKLCRwPlVih?W(HBkUnNEARJ2gpYU&2K;AEjuG6qA=l%kcdJq$N!Zt zg^-DQ<|K)*PpDHe{QvN?5mFI+xS^vYL?T$u2?wC*0pS>sh7w}UH+~L5XLcnxD%vPX zqL3@_f93Nb{kEiY(5ocu6RH$L_$AX{Rr)I&Rd78`F2fwPq;ni*9z9Vg3yoQ!0cY%4 zIA#lkFNWX^$(nEghaNIIc*>Ax1sQaYS)nSF1&J?~pgoceVdVR9$Wi9jLjOG=NWQv9 znV$*$_W+Q>SDa_Xc_@|x#RXPefZ|%9xX6l&P)q{FC01O5;(DNXf)&$+(Fhd(Kla}J zyNM%f6#Z8^d<>F^R8qI3mSo4_fC&@sfg~S~nR5^3BW6k&i$RlQ!vx1~B&FSi;7;l(D+QnRHt{FVoEBB`0|PfeLNGtoMClknAo zKrbcsn`^m7hyRo$wv&CpyC7lX+0LFHQ;3@saV-;S!qC>#lw-Q$sH`Z#O`Jx1v7;tI zLJqp7*}`u!^@>v9)*Ro)wLnj%j48VfcLvS2yIImpo}GJ6)}Hi_AcYC8>hvcK4Es`^ z_L|FclSt?#gcxZls~G?*tRkxxff|TjdL;&MBn}|Uui&P@u*6l5!zE4?FBZS$FK{>$Gih$ZJnTtdd4=gS7q=L{4uB`sd;zqy(F-Z28H*sKk6d0U4MzzM z9!h~uS~}fOC(PYlm?mZ=b0h~~vh4;#v8Q*lQkTJ?SX5p!TG-K5_(G{B?dIe=1vUgq>9-rM@td|eN0)`jpGZ4s0r*F5uxwS&6EZi|u`D|q?tBpocl3W? zmBFbFhxDeynu9LzRnN8*TPN&>1W4l~+m+&4%8Yqbc6ZF+NMf0c_)W%C*JV6)z#N)K zfd;&MpnVXz7Bxz$dJgrB7LIR~t>=|YDU(Y)bj)=rOn82n3Yln?hz1Chha59R>nuI` zaryn5gj-sZGAU3Ng1#)!F|T~_Ce>w;zI;PVgztLIwr1Oo`2yjkUYr*=wG)e=<~;kR zckHgn&6AWd$4Ch$4$uM6eOd#dHa8OH8N_Ox!V81y=jl~*L zas1`|ul&zLdw2ftmy|K3qHI>wk{0|a7M05GZAx>d-#zTGypNm#;qRpvh(Z{=j-*l< z?v;jrqb5%O77BQZ;5rJYnP<9{h&BOZXMn#m83f_$V;laG<=PN1AdVDfZzA&~}dL z79i|ZVbX9+z4Am|%$P^l)84h7U~tz;HSC-@iCWfd!93bDv0nm&r*0k=+8IaNmJ_7$ z?Yr%cQ^aMNu+C-(8rFtbs^ltm+Ck=DTv})b#Z0T?U`zY8>AI%v1hIdQ^v$DO9nOA} zm)N25f=Mw9BTQ#Yj7!D7-Ps0xnKsuycdx{?CC8mC?)B!B-ON_o*j{O*zJTv%apa`!(gIP1p64B$`b(!jmRxP6?uQC2wBK z3f7NG)Lq-VcHYjbvXy<_*wHtaLl5FP(4hCHYFCN9QW{so!!*6;}9$fN~uGojEVsHM~ zL~aiQIt8Q$p6Rj0VHge$#*r8U5KrzVhC^xq9mC%AJeL zAKv#){==`xJ{l2_eAYNh9)plssU^1e!L<|KXE#WXgRifHLtz-S+CH|gJqzfA{Ue!H z>^!{NR|l8xfx&@oxZT8gUsbJC;>M$G9^PB|@sq*jd#jhfeZ06ZxbwH=8-D_Emzfy$ z4qCeZ?$Y9?-uL&s^M4$iyWuU|<01W@eG{JMF#A?4D$BP{dq12cO+)|3E1!4^mjiG$ z-S!a*E{EMI0QjRnd#BG1ZvEA}c2nqt0ne;)blmDT`?hU%-Jl~q3R^OH(h<`h20DLf zaBqQr;TC61;vmFb7vrDpj9`t`ZljmY;fA-acz?J#xO0B#{#T*SV=Lc?o~P09K+Qo| zZ7!t&!TR7#5&v78PecwPDUO{j25EUw;fi+!dR#UxHx9ZDtoXim^KdkzH%(v;XlC_Y z`FCat8*OvSLBezQob2INv8cqi06B!5?R{1+p=Si)_V$=lwEShWJw4;%9T+^k>b-l@ zTe#~zxVZY(&FJ`P2QTGDx&BtK-;?w=AMw%$*?g3DY9D2VbUtW0zek{@mTagbw|vVq zdt5q;WX?f~KN1%?ZuC5vjPGkEnMHec)@-%0zcoriWo7p80*E;AsBOudyC(mp_ z%5|^=JbT3GFcTrT%(9E6n@L#ADMQCWR>W##r~QV_}yzp{mV7HEn> zlShPozww6h`o`mQQ5~ykU_DXKwp^=eb>@r3=*Jn$ap#MGDaF@?Wyc1C$_lw;WK=sR zdG|v%EFs;>TJ{`>R)026A1D3 z53*Aa+|I=h9LtIAYVj$UU}*o9%hLT@tCznWEPOS%bPLe`$B&jTen6ez|8!<>`b+Pd zi|`ocr^-?k#iB^kp7~!g7bRydDi#&8kHPkNe>$`J)=h8W9q;s6@4`8Fb&xL05s{T> zFHo{{|0`laTzmc_=&KyGU%vRk^1}}hLP=?n;;~^(8ItCoS*oNkAaP(FWhAgK{xJCX zntx=M?%!Ive-?zRYd2T!P?7ub;+d5@-wv*v^S=B0%3uEGEquEA!Do*b&n$oV?cm(! zD?h&PefTkVl0=T6+v53wew&0+rB7twWlg)4lR%OM4m)Q?7=FBXl`MhCtbvdTbN%6m zrTg!$esBTaKfU{@ck**00Tbaka;xyv=|xI&WkPN)l9GvKNWh3k06i+2V<~S#W45mk zOrty}&vcn%`wy5dB|}RyqiMmrc*48!9)To)?k^vE?|!;+o7Id&0rvd!LbkDh(R(_p zg|%{B=J*kq^@c2_Fr}$5Uj7r#hFxOtI4S6Vi|}mejW<{YIOF zy8poY?9%F=e+W(*_1?gRq-GR2@h_!h2)no4o$i<+Wk`!5FZZXX+ui9MM$=TtY#%RP zC2tt%rHwsER!^KBy!Rzt)TQse#q;cneGikziwiG+U%=zV(~lRguAaEM^5ZFGe24N| z%RUSSz@>+OUB2)RzhJBsyb-j2aV+cr_=3OPS^n@_(3&mW<>tD#48VMNQ5a$MgA0u2 zDF&D`q@O9HDTv4f7hc|RX#37RFOBazwD09TFYSH#)m_^$m%+O);QIyU${*qo%dp?U zi(|6xWO^ks&wUoN$n9<0Y`T&CjNaO5F=0L>QfzNKP0MbD2tmNAsCaA6tlT>ZU~lZ+ zrg(S10YqMS$NT8APi7W?rMrFFJ9%^I(Fd!i&NHgem@noB^edpfsSNCi`L_9^< z4QWXBqcLnd;`)o<5p06(j$==upJ6M!llPV$Uh+5M%;2vl2A_P+o=hO?@B9Pw)>rO$ z7rvmBh1n3E&_&@m6tSgnOoCrJ=tW_d26FQ}Lxicv+W}D_TmgA=yLA7(rTZrWrLv#m z96KHE4=?$wjEVC5d9eKDgTcZj!hr<3Z^DNFcZG+Jupd#K21fHzaC@wiKS@NCrHAK& z)x%5kQx60Hc;DZXAq1$ici^BKQU1r7X-~OX{^kzqZ`zdl>h;^iaEJoF1Vbd@O0ZRQ zaRNX4@W%4PTRvt`FbD(6P$2=$sPX3Z861=199U7XJnen=`O>3nVE0+L;Jy0^U<u0A-gM}eh^(Ju}r{2>MM{^`HXcAyj55YX`EjmsxTRO+UR3&XQui(_sO4hVRv#;M7 zPLPw$(AbM@x%W$(Au3I&13- z4EW#*%BHBs0a`ND{Sj1GnJqlQ8pHamD201o$!y|q0$1d*eHm|=bT!i*cxET|QbKU^UshG7rH2`O;~Y(+No+N|#u)3Y3x zP3%oxu=@DMd;ss}t$lX}Vps`|Fc9{1x@&YsL~4Xcd7k&%|L!5^%?PRd@w#{ZJI3{& z@+GeYzV*JB{Y!o<*W=L>)idp;*>!zprseZ1#08)00g=#sN|Emv;n!uq5Z;`ZuoQ$cQBZz$>VL)5mrrSL@mcqK}xKHbnm8Z3q6Dk>yxA+I|{(TzShm&JX+eSn;4>WY#=r+xcNsPzX_zd3x8OisT_Ut({ zzV(&ymv+6hJ(EkIs+6hy?(bwqBivm9(A0Qou1WouzbM&_O*JzMN~?v zOyK7H*W}9AU?)hpS<|+q`w&PBm_uWyA&d*e^3flcA6{F1|AUn~cYrj0@dpLq_wv4d zuW5%~+wJa`pIr=AL%m20b zU5U1ksGf*g5O1hV6?n$4&8ZYwU&(#cbKUPx)!7dB{aV>(x$qnWDJqIRo&;16U|@7x zisjCLYCF5{*TJ$o?b)_Ff)|_<(Ga!`{4Ep~$w6x;F`-adEvyGV&w!yBqu1-SiML15 zYPzOda9rCoW<|LV-{ItJ`W!&hY}SXD&!Z#UKHKz&d>WHN1Vj^*QY7!bjeX_q;Qg zcw@*J68MvVZD&g~Z?wB@cgIk5fx^`bUZ2#No1mQ5mD^zFOeql?^?>HXI#0B)W&3q!<(CbK560>tf$eXGK_x^Mv+eC2}ACF95l%#w06jtdJT?8;{z zCFjid04xa=W(V&sp_w%D}LF6|&Y{JBF_pixj$Ms92#bhCP>?GEN8W0;5BIqeamJrJ4IK;pZ zF*LBV%FF8}7#pPQa?EQ;X)Q(#Ni7h<6Uul2c!=pi=J@?=><+X~j>CbYHYyLqDd)S> z8Y*JU6)_MGF9^o zo5tZ`c+4YIj_1Rfj|4yzkCD;oWMShYx&uPM1K}^0bmMd@vG5sASwUm@-9J`-Jmpt{xb^w!SD$6pW(M}5KSbvfY=CbO6ZAjK1L=$iy{H=YG|?Qe+5*;P6WpZF|8e!i zn`B)pcfK2Z^9R9dxshT4&km3$+t{u$qLheZ z=~)ti#5?(q)yubHv};t@G3{wHjlP(xm{!)4H(INVDeq-XLgVl*66D4>vkSO~pZHT? za|r{h^2i&tH1Jp~pIhJ>mTagH_tXAG6aH)k#!Yy;)}s*T_IYg@ah`DFQ$09;VfnKM zG4uvCJCIRaL7A)9I=XIdHkvL^1!@BwCgfYDoB~z?e~agVUOupeYGRJTvP z;H3N}7nIlg?(g&wLaG>Oo)H&0V~|rC z^GGUEf7*A}g8Jk$#|I7vB?rZM{y~}esP4u?{Jd&`KGVN;(+^H}i}A0L1Qm(A29kvq z@@IojRCH=&Mq+ABJR@#oCS=L*a7OXN#R>#5;y|J>K;R8*H+NV`G+^978tQ~xax8O^ z1iWpReWN8v_Q{Ou>y%O5LI)&Vm_N+e#^b>iu!$LQjMp~3 zE@#!IO@UJzqPTa78fZkRmP(}rxhlBNq97y&ez?PAR~O4w3F5BoreZth*beqik`f*{ zkN4F4V4s2uY}7f*yYsy?2*UE!w+VB(^yBTp``?p*SaGK8Cwk&0bCP>5{_&JgV{Fzh zN>RSPU_S#MF!rMVKmBBwQLQS7pUb=saFtS3Zc{$F;-qU24DgG;C%Kx?Z z)mOlM#WAx$F**=&6W}{-y3mmiSvo)_huy#r9Lz+ukX>_bkBOc5$7DbcfQRWwghL2E zhsoWAJ9`AuS(&J7&1HGbDLHvu|H$ceAcQE&R6U`o0B2AlsSlaCBq*3vjf&(2wNaXV*gb9z!RV0 zwVh!0{0=+45y1_@WL>zk^xz#f6gbFkw@(kw{fRA%N^ndJ$0!kVnlmOOV%h5JHnX{( ziFy!(fjp7&CsYBb){H0=${fBhx)B;6che??EevAg#?pQ1oeSJF7*x{VxiHOFEE-M) zoQPv?%xG*C9}ADPr%8gQPP;d08FmZJ*=^U{XC8I4d{!C^S;{yGnOSn_B})lkk!)$Q zddGa8B3?kGK}AVKW&s2IFoldgom!j&1G;Sj%O|oD_VB4V~^5EeUp##!h(GU$1|II`1 zg>))W_R-PVUL?kLare3UvA#4|*betJ6tY7{Tcz+KIHj=Nkq>!=#Jz&**)Sqi zk>r#^uC=3m)NEzd-2DICMmpgakx>2hWT%iMCo5ju50^&7e2{lZT&{DU5bTvkZXh~L zz8wwaz_*U`RS}IBxBoI&_-^@ccgS&LPL=!!Y4o%S?Xa}|J{xn)`|Jk1Ou%1PuPk^c z7Nabp*&;!ynU{SWvLqZVCTulh&fK&~=z!Ts|Idp)f(Hqoq7RUqUGA>-Y-Bo;-d-3Z zf2CRma*qXRmLlT-Z;36{mahe+*8^|7jg!u%h+wXaDf{>ALL}KGk-PWr*(Euy{I!i4 zTLDG;?bb+eYv*O6XDIv&Eq%6qzuk$1SRgz+mkEYmS}l3`j5{0CqCYt)|A4gyvU1E( zjIeP+^N}R8M3=y(Me${1K6MxWJ0Hp98swZQ#hQ0FnF?Cq9j`Vkv(+=3Cb1*Mit^_uOX|-uqPGR!mYUo%*h6rfUsBBuZ$M%QWr+5=m z=&2i7IKI9H*UozHUYA{a((eIBN$xY6zU5~qxuq$4I#QbGwygl(LU@e`n&PJC$F7!tD114zS-C!N2T z;}kHS;>j!{KbSUUQOS)WKd$iY!WZPiApt>1jp)+ik809^3r=P9JZDpJwp&tgoN)Sy zB{QmLPjkG*Qzq~L!_J!gfDb?3PdIF<1D@u1&!-5@oZ>uBB{BqQ&aZfS*UbdX$7*zF zk{AC8lL@c0o`wb(cN7yEN%}xsYPci4i0{4T#mt+%W7zFcoHjL4KK)EwvqmrIKv3Sb zu?YsT;D%xQDc{nhV2UK73359U*LrCx z$zcvhQ;*)-ek9UIR ztm{!sMnbXevoIq2V~xW?V-?yl!PTGU3kQE9FU|JcV{y}vAS1=uSbU7;=!>A_+8w>5 z28qa*fKEK)J)|w*SUNxZKC+Wp!(K8u#v*qQ$veCJ_bV&ke!KMO?DC`AgDZCimrf0? zeLcAT4h}dA4nTv`H&(8nf#gKk<($O?a(%dPAHtvMR{|&Vov*yMe;;u!kFB%srT?{W z>z~9##$ANCB#vUT?-FdBdXLl}0!#W19H&tRmmDGEA&v$^ z-JE>_9KaNOAu+hY;T5}C#b2ml{$}5J&fjZ6Ao=AlAFNzI1IfI;xa8gaVfo7kB$pP% ze#Tx~tJfbcfBl7bVPXHCT`M=f%d^sx!#=+5{#krfE0c25}BafB6|AQ zpF2PdSkQd_V0Pp2zTKJ6y)J2jRp6x23+>ry&~J}TY#^g+_ufg=3-bum7;clR9(jipB*T2sd6os-^e2s_2(YJ333 z2L-siYbU%5=a%lDAZh*NVB=JX2lG<+MT9AOXSwE4x7h0#?QSMPyFL{v4?_vD5RbiAi(FTvrd#A&hmlM#jjtkawl zGj{G>rE#qL@c;WED1BYA8s%xkyXOj*ci17i_+l7)R|$f7o+tggQUU zyJ8+m(+Vj9m`l?|ay&?Q0AE`R2MT-k8}u zyvKC1$NVtmWXyS@{GG73{2`(*?_Hdh_eHr2 z5Ty7vT%f?pSUTQWSO5?Qh9Szxj85Sogz<(MLs`jS|Aj>|&*5X{*}*on!GHJM2j=__i%4Q%1`Wxmv!75G@WX4j>Gqk~5uGp5lp zZRbFSelGx%lQ}pl4`(7iC>?{8e5IJcCLm>;zX19;pG%7mrPXRXJ
*K6YJn0nGl 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 diff --git a/frontend-dist/js/21.e06c66b8.js.map b/frontend-dist/js/21.e06c66b8.js.map deleted file mode 100644 index a6c33e99..00000000 --- a/frontend-dist/js/21.e06c66b8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/21.e06c66b8.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?0caa","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?90ec"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"title\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: \"language-switcher\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleLocale && $options.toggleLocale(...args)),\n role: \"button\",\n title: _ctx.$t('language.switchTo')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n class: \"lang-icon\"\n })], 8, _hoisted_1);\n}","import { setLocale } from '@/locales';\nexport default {\n name: 'LanguageSwitcher',\n computed: {\n isZh() {\n return this.$i18n.locale === 'zh-CN';\n }\n },\n methods: {\n toggleLocale() {\n const next = this.isZh ? 'en' : 'zh-CN';\n setLocale(next);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./LanguageSwitcher.vue?vue&type=template&id=08567d0a&scoped=true\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\n\nimport \"./LanguageSwitcher.vue?vue&type=style&index=0&id=08567d0a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08567d0a\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","class","onClick","args","toggleLocale","role","title","$t","icon","name","isZh","$i18n","locale","next","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/21.e06c66b8.js.map.gz b/frontend-dist/js/21.e06c66b8.js.map.gz deleted file mode 100644 index b9078eb2668afa62f8ef52529e35e171f9c6ee39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8086 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 diff --git a/frontend-dist/js/21.e06c66b8.js b/frontend-dist/js/21.f318bc2e.js similarity index 98% rename from frontend-dist/js/21.e06c66b8.js rename to frontend-dist/js/21.f318bc2e.js index 9208340d..ab25b1d4 100644 --- a/frontend-dist/js/21.e06c66b8.js +++ b/frontend-dist/js/21.f318bc2e.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[21],{7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,n){e.exports=n.p+"img/background.ea1b7ee7.jpg"},48903:function(e,t,n){var a=n(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):n&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(n);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const n=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${n}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity,a=n?e:t,s=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,r=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const o=n[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),n&&(n.style.opacity=0,setTimeout(()=>{n&&(n.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const r=this.userConfig?.[e];if(!a||void 0!==r)return void this.reinitializeBackground(e,t,a,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,a,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,g=this.useDarkMode,u=n(g?10732:7835),d=new Image;d.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},d.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},d.src=u},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}},54047:function(e,t,n){n.d(t,{A:function(){return g}});var a=n(56768);const s=["title"];function r(e,t,n,r,o,i){const l=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",{class:"language-switcher",onClick:t[0]||(t[0]=(...e)=>i.toggleLocale&&i.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var o=n(46638),i={name:"LanguageSwitcher",computed:{isZh(){return"zh-CN"===this.$i18n.locale}},methods:{toggleLocale(){const e=this.isZh?"en":"zh-CN";(0,o.xS)(e)}}},l=n(71241);const c=(0,l.A)(i,[["render",r],["__scopeId","data-v-08567d0a"]]);var g=c}}]); -//# sourceMappingURL=21.e06c66b8.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[21],{7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,n){e.exports=n.p+"img/background.de27f549.jpg"},48903:function(e,t,n){var a=n(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):n&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(n);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const n=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${n}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity,a=n?e:t,s=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,r=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const o=n[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),n&&(n.style.opacity=0,setTimeout(()=>{n&&(n.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const r=this.userConfig?.[e];if(!a||void 0!==r)return void this.reinitializeBackground(e,t,a,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,a,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,g=this.useDarkMode,u=n(g?10732:7835),d=new Image;d.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},d.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},d.src=u},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}},54047:function(e,t,n){n.d(t,{A:function(){return g}});var a=n(56768);const s=["title"];function r(e,t,n,r,o,i){const l=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",{class:"language-switcher",onClick:t[0]||(t[0]=(...e)=>i.toggleLocale&&i.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var o=n(46638),i={name:"LanguageSwitcher",computed:{isZh(){return"zh-CN"===this.$i18n.locale}},methods:{toggleLocale(){const e=this.isZh?"en":"zh-CN";(0,o.xS)(e)}}},l=n(71241);const c=(0,l.A)(i,[["render",r],["__scopeId","data-v-08567d0a"]]);var g=c}}]); +//# sourceMappingURL=21.f318bc2e.js.map \ No newline at end of file diff --git a/frontend-dist/js/21.f318bc2e.js.gz b/frontend-dist/js/21.f318bc2e.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..84d1c9ff8ead1a33d82f172d9e91ec1ce97b0ae5 GIT binary patch literal 2719 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 Zy|w0c*KdLSnzRRG_+L60>%k@>003$;Jk\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"title\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: \"language-switcher\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleLocale && $options.toggleLocale(...args)),\n role: \"button\",\n title: _ctx.$t('language.switchTo')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n class: \"lang-icon\"\n })], 8, _hoisted_1);\n}","import { setLocale } from '@/locales';\nexport default {\n name: 'LanguageSwitcher',\n computed: {\n isZh() {\n return this.$i18n.locale === 'zh-CN';\n }\n },\n methods: {\n toggleLocale() {\n const next = this.isZh ? 'en' : 'zh-CN';\n setLocale(next);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./LanguageSwitcher.vue?vue&type=template&id=08567d0a&scoped=true\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\n\nimport \"./LanguageSwitcher.vue?vue&type=style&index=0&id=08567d0a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08567d0a\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","class","onClick","args","toggleLocale","role","title","$t","icon","name","isZh","$i18n","locale","next","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/21.f318bc2e.js.map.gz b/frontend-dist/js/21.f318bc2e.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..560efb5e5d4ee0d19407b3612c2436269ce9fa07 GIT binary patch literal 8071 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 VONL>KeWG~&e*s?ib#q^F004$9oa+Dp literal 0 HcmV?d00001 diff --git a/frontend-dist/js/278.66af4a0a.js.gz b/frontend-dist/js/278.66af4a0a.js.gz deleted file mode 100644 index 950975d3860e1f1d6269cbcc15f36a58ebb1eed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3550 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 YZ{q$QZer&H>5TCBPZs@P91$%508cQ<7XSbN diff --git a/frontend-dist/js/278.66af4a0a.js.map b/frontend-dist/js/278.66af4a0a.js.map deleted file mode 100644 index fc729148..00000000 --- a/frontend-dist/js/278.66af4a0a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/278.66af4a0a.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/WhiteListOn.vue?4bb2","webpack://sanyue_imghub/./src/views/WhiteListOn.vue","webpack://sanyue_imghub/./src/views/WhiteListOn.vue?05e5","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"whitelist-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"whitelist-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-title\"\n};\nconst _hoisted_10 = {\n class: \"status-description\"\n};\nconst _hoisted_11 = {\n class: \"status-actions\"\n};\nconst _hoisted_12 = {\n class: \"help-info\"\n};\nconst _hoisted_13 = {\n class: \"help-text\"\n};\nconst _hoisted_14 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n class: \"shield-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\",\n class: \"clock-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h1\", _hoisted_9, _toDisplayString(_ctx.$t('whitelist.title')), 1), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('whitelist.description')), 1), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goHome')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goBack')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", _hoisted_13, _toDisplayString(_ctx.$t('whitelist.helpText')), 1), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.uploadImage')), 1)]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.refreshPage')), 1)])])]), _cache[2] || (_cache[2] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[3] || (_cache[3] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'WhiteListOn',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'White List On',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.whitelist-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./WhiteListOn.vue?vue&type=template&id=0c389049&scoped=true\"\nimport script from \"./WhiteListOn.vue?vue&type=script&lang=js\"\nexport * from \"./WhiteListOn.vue?vue&type=script&lang=js\"\n\nimport \"./WhiteListOn.vue?vue&type=style&index=0&id=0c389049&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0c389049\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","$t","type","goBack","href","args","refreshPage","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/278.66af4a0a.js.map.gz b/frontend-dist/js/278.66af4a0a.js.map.gz deleted file mode 100644 index d333020c715aed076d5423f0376ae91b5dcd2f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9799 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[(0,s.bF)(w,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",d,[(0,s.Lk)("div",u,[(0,s.bF)(w,{icon:"shield-alt",class:"shield-icon"}),(0,s.Lk)("div",g,[(0,s.bF)(w,{icon:"clock",class:"clock-icon"})])])]),(0,s.Lk)("div",m,[(0,s.Lk)("h1",h,(0,i.v_)(e.$t("whitelist.title")),1),(0,s.Lk)("p",p,(0,i.v_)(e.$t("whitelist.description")),1),(0,s.Lk)("div",k,[(0,s.bF)(C,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:B.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"home",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goHome")),1)]),_:1},8,["onClick"]),(0,s.bF)(C,{size:"large",class:"action-btn secondary-btn",onClick:B.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"arrow-left",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goBack")),1)]),_:1},8,["onClick"])]),(0,s.Lk)("div",b,[(0,s.Lk)("p",y,(0,i.v_)(e.$t("whitelist.helpText")),1),(0,s.Lk)("div",f,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>B.goHome&&B.goHome(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"cloud-upload-alt"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.uploadImage")),1)]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>B.refreshPage&&B.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"redo"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.refreshPage")),1)])])]),t[2]||(t[2]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[3]||(t[3]=(0,s.Fv)('
',1))])}a(44114);var I=a(74354),B=a(60782),w=a(48903),C={name:"WhiteListOn",mixins:[w.A],computed:{...(0,B.L8)(["useDarkMode","userConfig"])},setup(){(0,I.u)({title:"White List On",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".whitelist-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()}}},W=a(71241);const x=(0,W.A)(C,[["render",v],["__scopeId","data-v-0c389049"]]);var P=x},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); -//# sourceMappingURL=278.66af4a0a.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[278],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.de27f549.jpg"},18278:function(e,t,a){a.r(t),a.d(t,{default:function(){return P}});var n=a(80047),s=(a(85331),a(99648),a(56768)),i=a(24232);const o={class:"whitelist-container"},r=["innerHTML"],l={class:"whitelist-content"},c={class:"back-button-wrapper"},d={class:"status-animation"},u={class:"status-icon"},g={class:"status-badge"},m={class:"status-info"},h={class:"status-title"},p={class:"status-description"},k={class:"status-actions"},b={class:"help-info"},y={class:"help-text"},f={class:"quick-links"};function v(e,t,a,v,I,B){const w=(0,s.g2)("font-awesome-icon"),C=n.S2;return(0,s.uX)(),(0,s.CE)("div",o,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,r),(0,s.Lk)("div",l,[(0,s.Lk)("div",c,[(0,s.bF)(C,{class:"back-button",onClick:B.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",d,[(0,s.Lk)("div",u,[(0,s.bF)(w,{icon:"shield-alt",class:"shield-icon"}),(0,s.Lk)("div",g,[(0,s.bF)(w,{icon:"clock",class:"clock-icon"})])])]),(0,s.Lk)("div",m,[(0,s.Lk)("h1",h,(0,i.v_)(e.$t("whitelist.title")),1),(0,s.Lk)("p",p,(0,i.v_)(e.$t("whitelist.description")),1),(0,s.Lk)("div",k,[(0,s.bF)(C,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:B.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"home",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goHome")),1)]),_:1},8,["onClick"]),(0,s.bF)(C,{size:"large",class:"action-btn secondary-btn",onClick:B.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"arrow-left",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goBack")),1)]),_:1},8,["onClick"])]),(0,s.Lk)("div",b,[(0,s.Lk)("p",y,(0,i.v_)(e.$t("whitelist.helpText")),1),(0,s.Lk)("div",f,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>B.goHome&&B.goHome(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"cloud-upload-alt"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.uploadImage")),1)]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>B.refreshPage&&B.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"redo"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.refreshPage")),1)])])]),t[2]||(t[2]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[3]||(t[3]=(0,s.Fv)('
',1))])}a(44114);var I=a(74354),B=a(60782),w=a(48903),C={name:"WhiteListOn",mixins:[w.A],computed:{...(0,B.L8)(["useDarkMode","userConfig"])},setup(){(0,I.u)({title:"White List On",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".whitelist-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()}}},W=a(71241);const x=(0,W.A)(C,[["render",v],["__scopeId","data-v-0c389049"]]);var P=x},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); +//# sourceMappingURL=278.bb8355a5.js.map \ No newline at end of file diff --git a/frontend-dist/js/278.bb8355a5.js.gz b/frontend-dist/js/278.bb8355a5.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..475e0d60be149008ee8fa52066e446ed710a0619 GIT binary patch literal 3552 zcmV<64IlC!iwFP!000023hi23ZzIWde$TIHmDk!XY_UaB(n!;Ek1$epV8JuqfoB#I zfFZ`k?qai6%_?qHH7PCGfC1acI9Mn9kQmvF9oUN)FcQS;02{>dW&LMHb9wS#Fsk~( zOLtSFaUQJ)u~~KM)VX|hF4Y9FB$iZy`U-SxNuog)Oi6!?{j-x{%+4fc7cqHEN8vE; zgPwOK#eClFL1!Gxq22Aa4-R{1c5t}6?+#+-E6SNokU|*Fh(pfDTqx;bXZ#MJqj0B> z{j*T;m<5f9hC}5HS_e0pyM5pJU>t%3wVDUJ?dvge0@6Mh?C;&oSsbpxy+i%5 zf8*fBA%uu}*lzE&ciXVzb0(F=y_p|jDP1rfQbi&vRm0~@VakXA2@+lxP{xS(`onv7 zK@UYW^n@vpAitQ^Iyd^UQk*rW0*}XrTTskPg;gvYn9&i|T7d+`>yy+sk$rk>qI(h1wp1_RDi15b(MBa&JHq7#of589p7 z^@cS58)!ph9#7tdHVEhhAdb3bju2p(W8hypAj7~q7J$+r5=KTALt=gPC zf;O>6reA^5Zrk%9WNl+(LzQm%}u{xYh@ z0A17rM2E76I+9hQW3bE!12h{7GH}5Mc!E=0xf4zUy9pO|Qr%{6KDYIUXFHBVpm!^W z#P)Xnl+Hj@3Y{RSIahJeh{qAf=^1@(^QCJ{j4Nz-eU)0NO08v;1Q`e-hxc)4^ji9Q zP2~g$`0FdQv`?;(fq?3^Qz6?uuO=sq`IHC}H2N2XAUQ%z(C;oJxSx_*#}}>zsx3BD zYAoHIosgT}kjCjKJSIVL1jd4YKzx-O1Xv|f3uu*4 zqXl!-c2m`MGu7@)p#ApO0y?n_PY(u)>W=qv`J+-fZsOyj4jq zhj>gZ^S{xmShEw*$<-^{Z@hB%jaTly@yh+$mFEB3$e2CB_TFBrwU?HhryjNs_ICI8 zAUgK2eWQ7B*oJ88VSDfJW^-59D>H^i#08HuQ14Qy-eUlb=s9K5?M|KBJ>>JzI94QZ zXO838O?2$sJ%n}_#FG3q7H9W(KmgL;#0h5u8iF27kR&P|+i+$#(Ww(dduEbgwvDCt zvCKw9VYi!!Ab6iE2~bw3x`1)Y0&XU}~ zf-K6YqBv?uA4kM%>Gl2)3rUm<-hX(faR`!L0uwaiF;gV4;YvY^<1rDZ8YFHL`LR@dR2uG=4DOn! zxjatQeJt=unwcaiVV*58pQ9Xs6(MAL28t8WgQ$PD@NnJ?8b>U+961Z3`Fxk`Ca8b* z-WdB-U2I&G(ah(q1l6?!1%tQ$mRZ@~*XSs;XyAc<*aCUDS?W2c=FkEbj+6%$P_@!T zymPCPQ@fT^`)W>amlb%RE+Qfe@xfwKrzEO1Tg+P4m`kdW` zwM@XYTd;b*!37N|b1k1}C9;n-Ge%LvA7U1gLeM2CR%lacU2B4c-Ds@4xRFjHt1q+% z7?IL$!DY#k4FGBX1t5O`NC6O#Bxs72KXhkH!CL1XI3ru0r?$6Eu&v4s+0$Fuz^P$?;7b{|3208)?#_;sJ?>uejJit940x+eM(=K#pU@ zPXxh=yqlHXFo8)$6{K;y;FyQyn(C&UXScUa#ZzR#8Zw9~t0R*N?5$=tEy##ZNR>22 z?Nldlc6Ucs^3w=291_uxh6r@%z}^bDA8UI!AyJuWjxSCFo4}lh@(LP%*@8AOe1NW2 zXy6f~9DUDtk`|}ly5>u14iyZC1P6}3@?*itkVb*6v{UNzejTOIlDH+6IvVVmS+yBc zeHI(#*suwlY2y%>l_R>(w)E~iBF+>GW`pNH{*UMX_{p;`pFaQb51#+?lNbN`y~|(z z-{q&jxcvTiUwrXX0JU}NBr&B3oXZcA>s_EkjkI{u219D=>%1FD+DPII1vvi z0|Ae1KOz#HQuZUbuK}rkmf2>6}nuE z$|1^SN#+u{aLI=;5f?c(TV;}r1sP+pWQ~)2V_QPRwzusqxe;$I0Jpa{<8eMuZBln= zB+MHn>TTW$ac}chCN$Cce2Z^5fiJ)N@$*kVzkK>-dgQFH^uw0*{K=2>L)+5l^9NsE zKKa!jfA{gr&;R$u&wlyr4?lVJv;TSZlh2<0`oAte{{H1B|M~I{pFaD|({%asCqKIU zT(K5uWo};`D&BFd}RGY>Gs;+0%@0mg5a^2FqnSmEUZv zs*|;?X?dW#apDA2j&+@3g8@9j{ zZs+fn?+831_El5svS*&l?m|pp&q<0t!UI{S;xza6A#ltn_>pbcIVGsIcAwG^EmY%FC`PL!wTy zYdTXC>yp;|B!K!l`zR;x^_O6g4|zb42rD`v03x7sT)HGZCrb;mg9DlX7K%{GBb;(c zAN6bSx*(}lXnLDM{5mw6TizPb5%cg7ag~k`N6ICgni%idH52c&;8*JfD30c}(@BS| z#g{gcrHHdJzDOO;iyyhv9ZG4=8r4ztAsrDOD?1x zW)T%=j)$7`k*9zPS4)o>S5uEITwRq4GiO&#X?NpQ=W=gTR_(}=AL;e{NSFL5mi#DI z{78*;c**W`vmfbo{V1>JM_KlxNF_~B?K_+LOAq@xw;mNmjD80J%R8s-7BM-c)CE^} z7Wk^pf*jdOmzd>D1N42P?v6{AG?oEnqt`L|a}!PK5{U5jwvB5A#U(*;ouGA${+|Se z?utzp0@WDI2${ogRn7Xf8P)1qU3XUAM6O&0=*keuB^c4_K2GOeHlLebQ#UEJd?O%8 z-Q5FXNG{^~6)+XA(*X1Nd`rBk2$2r8eATK)+!e^Lnh-8WLAgGUJ!}Wd^*IWcB3-x= z>3rjx82Kxs(UpGnH%7uVI3*}ttxH#L0-pW)x350?m*PI))o0(k{QIB2{Qd7Q|NXyT ze)01^{_f+;r~mfqJKwo{@~an5zj*!+KfiqPch7(L87Qt1c6Ic6kKkrNR?}fFAlO*ZE&R^~9e8rMH7CyO$$79OE_rG=5Yabjs a{r=(Z{yyG!K9J4`kN*TYHU8icEdT(q&DBN# literal 0 HcmV?d00001 diff --git a/frontend-dist/js/278.bb8355a5.js.map b/frontend-dist/js/278.bb8355a5.js.map new file mode 100644 index 00000000..d9b2bf37 --- /dev/null +++ b/frontend-dist/js/278.bb8355a5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/278.bb8355a5.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/WhiteListOn.vue?4bb2","webpack://sanyue_imghub/./src/views/WhiteListOn.vue","webpack://sanyue_imghub/./src/views/WhiteListOn.vue?05e5","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"whitelist-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"whitelist-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-title\"\n};\nconst _hoisted_10 = {\n class: \"status-description\"\n};\nconst _hoisted_11 = {\n class: \"status-actions\"\n};\nconst _hoisted_12 = {\n class: \"help-info\"\n};\nconst _hoisted_13 = {\n class: \"help-text\"\n};\nconst _hoisted_14 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n class: \"shield-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\",\n class: \"clock-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h1\", _hoisted_9, _toDisplayString(_ctx.$t('whitelist.title')), 1), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('whitelist.description')), 1), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goHome')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goBack')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", _hoisted_13, _toDisplayString(_ctx.$t('whitelist.helpText')), 1), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.uploadImage')), 1)]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.refreshPage')), 1)])])]), _cache[2] || (_cache[2] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[3] || (_cache[3] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'WhiteListOn',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'White List On',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.whitelist-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./WhiteListOn.vue?vue&type=template&id=0c389049&scoped=true\"\nimport script from \"./WhiteListOn.vue?vue&type=script&lang=js\"\nexport * from \"./WhiteListOn.vue?vue&type=script&lang=js\"\n\nimport \"./WhiteListOn.vue?vue&type=style&index=0&id=0c389049&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0c389049\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","$t","type","goBack","href","args","refreshPage","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/278.bb8355a5.js.map.gz b/frontend-dist/js/278.bb8355a5.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..1b528663f7e9472f9eb27e3a1301a1ab348f7413 GIT binary patch literal 9782 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 QClaUsKcErX1=5ZH08>C8SpWb4 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/331.0b44b778.js.gz b/frontend-dist/js/331.0b44b778.js.gz deleted file mode 100644 index cc4a4c9ae2e6f973c207fb704f05c152626ccb50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3771 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 diff --git a/frontend-dist/js/331.0b44b778.js.map b/frontend-dist/js/331.0b44b778.js.map deleted file mode 100644 index c4132fc8..00000000 --- a/frontend-dist/js/331.0b44b778.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/331.0b44b778.js","mappings":"gWACA,MAAMA,EAAa,CACjBC,MAAO,qBAEHC,EAAa,CAAC,aACdC,EAAa,CACjBF,MAAO,mBAEHG,EAAa,CACjBH,MAAO,uBAEHI,EAAa,CACjBJ,MAAO,oBAEHK,EAAa,CACjBL,MAAO,eAEHM,EAAa,CACjBN,MAAO,gBAEHO,EAAa,CACjBP,MAAO,eAEHQ,EAAa,CACjBR,MAAO,kBAEHS,EAAc,CAClBT,MAAO,aAEHU,EAAc,CAClBV,MAAO,eAEF,SAASW,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDC,EAAuB,KAC7B,OAAO,WAAc,QAAoB,MAAOpB,EAAY,EAAC,QAAoB,MAAO,CACtFC,MAAO,qBACPoB,UAAWR,EAAKS,0BACf,KAAM,EAAGpB,IAAa,QAAoB,MAAOC,EAAY,EAAC,QAAoB,MAAOC,EAAY,EAAC,QAAagB,EAAsB,CAC1InB,MAAO,cACPsB,QAASL,EAASM,OAClBC,OAAQ,GACRC,KAAM,SACL,CACDC,SAAS,QAAS,IAAM,EAAC,QAAaR,EAA8B,CAClES,KAAM,WAERC,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAOxB,EAAY,EAAC,QAAoB,MAAOC,EAAY,EAAC,QAAaa,EAA8B,CAC/IS,KAAM,MACN3B,MAAO,cACL,QAAoB,MAAOM,EAAY,EAAC,QAAaY,EAA8B,CACrFS,KAAM,cACN3B,MAAO,4BACC,QAAoB,MAAOO,EAAY,CAACM,EAAO,KAAOA,EAAO,IAAK,QAAoB,KAAM,CACpGb,MAAO,gBACN,WAAY,IAAKa,EAAO,MAAQA,EAAO,KAAM,QAAoB,IAAK,CACvEb,MAAO,sBACN,oBAAqB,IAAKa,EAAO,MAAQA,EAAO,KAAM,QAAoB,IAAK,CAChFb,MAAO,yBACN,6DAA8D,KAAK,QAAoB,MAAOQ,EAAY,EAAC,QAAaW,EAAsB,CAC/IU,KAAM,UACNJ,KAAM,QACNzB,MAAO,yBACPsB,QAASL,EAASM,QACjB,CACDG,SAAS,QAAS,IAAM,EAAC,QAAaR,EAA8B,CAClES,KAAM,OACN3B,MAAO,aACLa,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,MAC1De,EAAG,GACF,EAAG,CAAC,aAAa,QAAaT,EAAsB,CACrDM,KAAM,QACNzB,MAAO,2BACPsB,QAASL,EAASa,QACjB,CACDJ,SAAS,QAAS,IAAM,EAAC,QAAaR,EAA8B,CAClES,KAAM,aACN3B,MAAO,aACLa,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,MAC1De,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAOnB,EAAa,CAACI,EAAO,KAAOA,EAAO,IAAK,QAAoB,IAAK,CAChHb,MAAO,aACN,UAAW,KAAK,QAAoB,MAAOU,EAAa,EAAC,QAAoB,IAAK,CACnFqB,KAAM,qBACNT,QAAST,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASM,QAAUN,EAASM,UAAUS,IACtFhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CS,KAAM,qBACJd,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,OAAO,QAAoB,IAAK,CACxFkB,KAAM,qBACNT,QAAST,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASgB,aAAehB,EAASgB,eAAeD,IAChGhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CS,KAAM,SACJd,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,OAAO,QAAoB,IAAK,CACxFkB,KAAM,qBACNT,QAAST,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASiB,gBAAkBjB,EAASiB,kBAAkBF,IACtGhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CS,KAAM,oBACJd,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,UAAWA,EAAO,MAAQA,EAAO,KAAM,QAAoB,MAAO,CAC1Hb,MAAO,cACN,EAAC,QAAoB,IAAK,KAAM,EAAC,QAAiB,iBAAiB,QAAoB,IAAK,CAC7F+B,KAAM,kDACN/B,MAAO,gBACN,2BAA4B,QAASa,EAAO,MAAQA,EAAO,KAAM,QAAmB,0VAAuW,KAChc,C,8CCvGA,GACEsB,KAAM,eACNC,OAAQ,CAACC,EAAA,GACTC,SAAU,KACL,QAAW,CAAC,cAAe,gBAEhC,KAAAC,IACE,IAAAC,GAAQ,CACNC,MAAO,gBACPC,KAAM,CAAC,CACLP,KAAM,SACNQ,QAAS,qBACR,CACDR,KAAM,WACNQ,QAAS,uCACR,CACDC,QAAS,WAGf,EACA,OAAAC,GAEEC,KAAKC,qBAAqB,cAAe,sBAAsB,GAAO,EACxE,EACA,aAAAC,GAEEF,KAAKG,yBACP,EACAC,QAAS,CACP,MAAA3B,GACEuB,KAAKK,QAAQC,KAAK,IACpB,EACA,MAAAtB,GACMuB,OAAOC,QAAQC,OAAS,EAC1BT,KAAKK,QAAQK,IAAI,GAEjBV,KAAKK,QAAQC,KAAK,IAEtB,EACA,WAAAnB,GACEoB,OAAOI,SAASC,QAClB,EACA,cAAAxB,GAEEmB,OAAOM,KAAK,yDAA0D,SACxE,I,WC1CJ,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASjD,GAAQ,CAAC,YAAY,qBAEzF,O,uCCFA,KACEkD,IAAAA,GACE,MAAO,CACLC,mBAAoB,EACpBC,qBAAsB,EACtBC,mBAAoB,KAEpBC,qBAAsB,KAE1B,EACA3B,SAAU,KACL4B,EAAAA,EAAAA,IAAW,CAAC,aAAc,iBAAkB,gBAC/CC,UAAAA,GACE,OAAOrB,KAAKsB,YAAYD,YAAc,GACxC,EACAE,SAAAA,GACE,OAAOvB,KAAKsB,YAAYC,WAAa,CACvC,EAEAhD,wBAAAA,GACE,MAAO,8JAIT,EAEAiD,sBAAAA,GACE,MAAO,4kCAkCT,GAGFC,MAAO,CAELC,WAAAA,CAAYC,EAAQC,GAEdD,IAAWC,GAAU5B,KAAKmB,sBAC5BnB,KAAK6B,UAAU,KACb7B,KAAK8B,sBACH9B,KAAKmB,qBAAqBY,UAC1B/B,KAAKmB,qBAAqBa,kBAC1BhC,KAAKmB,qBAAqBc,qBAC1BjC,KAAKmB,qBAAqBe,qBAIlC,GAGFnC,OAAAA,GAEEC,KAAKmC,wBACP,EAEAjC,aAAAA,GAEMF,KAAKkB,oBACPkB,cAAcpC,KAAKkB,oBAGrBlB,KAAKqC,uBAAsB,GAE3BrC,KAAKsC,wBACP,EAEAlC,QAAS,CAIP+B,sBAAAA,GACE,MAAMI,EAAU,4BAChB,IAAKC,SAASC,eAAeF,GAAU,CACrC,MAAMG,EAAQF,SAASG,cAAc,SACrCD,EAAME,GAAKL,EACXG,EAAMG,YAAc7C,KAAKwB,uBACzBgB,SAASM,KAAKC,YAAYL,EAC5B,CACF,EAKAJ,sBAAAA,GACE,MAAMC,EAAU,4BACVS,EAAgBR,SAASC,eAAeF,GAC1CS,GACFA,EAAcC,QAElB,EAMAC,wBAAAA,CAAyBC,GACvB,IAAKA,EAEH,YADAC,QAAQC,KAAK,cAKf,GAAIb,SAASC,eAAe,QAAUD,SAASC,eAAe,OAC5D,OAIF,MAAMa,EAAMd,SAASG,cAAc,OACnCW,EAAIV,GAAK,MACTU,EAAIC,UAAY,oBAChBD,EAAIE,IAAM,mBAGV,MAAMC,EAAMjB,SAASG,cAAc,OACnCc,EAAIb,GAAK,MACTa,EAAIF,UAAY,oBAChBE,EAAID,IAAM,mBAGVL,EAAUO,aAAaJ,EAAKH,EAAUQ,YACtCR,EAAUO,aAAaD,EAAKN,EAAUQ,WACxC,EAQA1D,oBAAAA,CAAqB8B,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAE/G,IAA0C,IAAtClC,KAAKsB,YAAYsC,iBAEnB,YADA5D,KAAKqC,uBAAsB,GAK7BrC,KAAKmB,qBAAuB,CAC1BY,YACAC,oBACAC,uBACAC,sBAIF,MAAMiB,EAAYX,SAASqB,cAAc7B,GACzChC,KAAK8D,2BAA2BX,GAE5BjB,KACEiB,GAAeX,SAASC,eAAe,QAAWD,SAASC,eAAe,QAC5EzC,KAAKkD,yBAAyBC,IAIlC,MAAMG,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEpC,IAAKa,IAAQG,EAEX,YADAL,QAAQC,KAAK,4DAIf,MAAMU,EAAmB/D,KAAKsB,aAAaS,GAElB,SAArBgC,EACF/D,KAAKgE,mBAAmBV,EAAKG,EAAKzB,GACzBiC,MAAMC,QAAQH,IAAqBA,EAAiBtD,OAAS,EACtET,KAAKmE,6BAA6Bb,EAAKG,EAAKM,EAAkB/B,GACrDiC,MAAMC,QAAQH,IAAiD,IAA5BA,EAAiBtD,OAC7DT,KAAKoE,2BAA2Bd,EAAKS,EAAiB,GAAI/B,GACjDC,GACTjC,KAAKqE,sBAAsBf,EAAKtB,EAEpC,EAKAgC,kBAAAA,CAAmBV,EAAKG,EAAKzB,GAC3BhC,KAAKsE,OAAOC,SAAS,uBAAuBC,KAAK,KACZ,IAA/BxE,KAAKyE,eAAehE,SAExBT,KAAK0E,oBAAoBpB,EAAKtD,KAAKyE,eAAezE,KAAKgB,qBAAqB2D,IAAK3C,GAAmB,GAEpGhC,KAAKkB,mBAAqB0D,YAAY,KACpC5E,KAAK6E,oBAAoBvB,EAAKG,IAC7BzD,KAAKqB,cAEZ,EAKA8C,4BAAAA,CAA6Bb,EAAKG,EAAKqB,EAAY9C,GACjDhC,KAAK0E,oBAAoBpB,EAAKwB,EAAW9E,KAAKiB,sBAAuBe,GAAmB,GAExFhC,KAAKkB,mBAAqB0D,YAAY,KACpC5E,KAAK+E,sBAAsBzB,EAAKG,EAAKqB,IACpC9E,KAAKqB,WACV,EAKA+C,0BAAAA,CAA2Bd,EAAK0B,EAAchD,GAC5ChC,KAAK0E,oBAAoBpB,EAAK0B,EAAchD,EAC9C,EAKAqC,qBAAAA,CAAsBf,EAAKtB,GAEzB,MAAMiD,EAASjF,KAAK0B,YACdwD,EACFC,EADiBF,EACT,MACA,MAEZjF,KAAK0E,oBAAoBpB,EAAK4B,EAAclD,EAC9C,EAKA0C,mBAAAA,CAAoBU,EAAYC,EAAUrD,EAAmBsD,GAAa,GAExEF,EAAW1C,MAAM6C,QAAU,EAC3BH,EAAW1C,MAAM8C,QAAU,EAC3BxF,KAAKyF,wBAAwBL,EAAYE,GACzC,MAAMnC,EAAYX,SAASqB,cAAc7B,GACzChC,KAAK8D,2BAA2BX,GAEhC,MAAMuC,EAAYA,KAChBC,sBAAsB,KACpBA,sBAAsB,KACpBP,EAAW1C,MAAM8C,QAAUxF,KAAKuB,UAC5B+D,IACFF,EAAW1C,MAAMkD,UAAY,qBAM/BC,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfX,EAAWY,IAAMX,EACjBK,KAEFG,EAAQI,QAAU,KAChBb,EAAWY,IAAMX,EACjBK,KAEFG,EAAQG,IAAMX,CAChB,EAEAI,uBAAAA,CAAwBL,EAAYE,GAAa,GAC/C,IAAKF,EAAY,OAEjB,MAAMc,EAAeC,KAAKC,IAAIpG,KAAKqB,WAAa,KAAM,MACtD+D,EAAW1C,MAAM2D,WAAaf,EAC1B,yDAAyDY,eACzD,kEACJd,EAAW1C,MAAM4D,gBAAkB,gBACnClB,EAAW1C,MAAMkD,UAAY,UAC/B,EAEA9B,0BAAAA,CAA2BX,GACzB,IAAKA,EAAW,OAEhB,MAAMoD,EAAgBhG,OAAOiG,iBAAiBrD,GACf,WAA3BoD,EAAcE,WAChBtD,EAAUT,MAAM+D,SAAW,YAGA,SAAzBF,EAAchB,SAChBpC,EAAUT,MAAM6C,OAAS,KAG3BpC,EAAUT,MAAMgE,UAAY,SAC9B,EAKA7B,mBAAAA,CAAoBvB,EAAKG,GACvB,GAAmC,IAA/BzD,KAAKyE,eAAehE,OAAc,OAEtC,MAAMkG,EAAoC,GAArBrD,EAAIZ,MAAM8C,QACzBoB,EAAQD,EAAerD,EAAMG,EAC7BoD,EAASF,EAAelD,EAAMH,EAEpCtD,KAAKgB,oBAAsBhB,KAAKgB,mBAAqB,GAAKhB,KAAKyE,eAAehE,OAC9E,MAAMqG,EAAU9G,KAAKyE,eAAezE,KAAKgB,qBAAqB2D,IAG9DiC,EAAMlE,MAAM6C,QAAU,EACtBsB,EAAOnE,MAAM6C,QAAU,EACvBvF,KAAKyF,wBAAwBoB,GAAQ,GAErC,MAAMhB,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfc,EAAOb,IAAMc,EAGbC,WAAW,KACTF,EAAOnE,MAAM8C,QAAUxF,KAAKuB,UAC5BsF,EAAOnE,MAAMkD,UAAY,eAGzBmB,WAAW,KACTH,EAAMlE,MAAM8C,QAAU,EACtBxF,KAAKyF,wBAAwBmB,GAAO,IACnC,OACF,KAELf,EAAQG,IAAMc,CAChB,EAKA/B,qBAAAA,CAAsBzB,EAAKG,EAAKqB,GAC9B,MAAM6B,EAAoC,GAArBrD,EAAIZ,MAAM8C,QACzBoB,EAAQD,EAAerD,EAAMG,EAC7BoD,EAASF,EAAelD,EAAMH,EAEpCtD,KAAKiB,sBAAwBjB,KAAKiB,qBAAuB,GAAK6D,EAAWrE,OACzE,MAAMqG,EAAUhC,EAAW9E,KAAKiB,sBAGhC2F,EAAMlE,MAAM6C,QAAU,EACtBsB,EAAOnE,MAAM6C,QAAU,EACvBvF,KAAKyF,wBAAwBoB,GAAQ,GAErC,MAAMhB,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfc,EAAOb,IAAMc,EAEbC,WAAW,KACTF,EAAOnE,MAAM8C,QAAUxF,KAAKuB,UAC5BsF,EAAOnE,MAAMkD,UAAY,eAEzBmB,WAAW,KACTH,EAAMlE,MAAM8C,QAAU,EACtBxF,KAAKyF,wBAAwBmB,GAAO,IACnC,OACF,KAELf,EAAQG,IAAMc,CAChB,EAKA3G,uBAAAA,GACMH,KAAKkB,qBACPkB,cAAcpC,KAAKkB,oBACnBlB,KAAKkB,mBAAqB,KAE9B,EAMAmB,qBAAAA,CAAsB2E,GAAY,GAChC,MAAM1D,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEhCuE,GAEE1D,IACFA,EAAIZ,MAAM2D,WAAa,OACvB/C,EAAIZ,MAAM8C,QAAU,EACpBlC,EAAI0C,IAAM,GAEVe,WAAW,KACLzD,IAAKA,EAAIZ,MAAM2D,WAAa,oEAC/B,KAED5C,IACFA,EAAIf,MAAM2D,WAAa,OACvB5C,EAAIf,MAAM8C,QAAU,EACpB/B,EAAIuC,IAAM,GAEVe,WAAW,KACLtD,IAAKA,EAAIf,MAAM2D,WAAa,oEAC/B,OAID/C,IACFA,EAAIZ,MAAM8C,QAAU,EACpBuB,WAAW,KACLzD,IAAKA,EAAI0C,IAAM,KAClB,OAEDvC,IACFA,EAAIf,MAAM8C,QAAU,EACpBuB,WAAW,KACLtD,IAAKA,EAAIuC,IAAM,KAClB,OAGT,EASAlE,qBAAAA,CAAsBC,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAChH,MAAM6B,EAAmB/D,KAAKsB,aAAaS,GAG3C,IAAKE,QAA6CgF,IAArBlD,EAE3B,YADA/D,KAAKkH,uBAAuBnF,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMoB,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEpC,IAAKa,IAAQG,EAGX,YADAzD,KAAKkH,uBAAuBnF,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMiF,EAAiC,GAArB7D,EAAIZ,MAAM8C,QAAelC,EAAMG,EAC3CoD,EAA8B,GAArBvD,EAAIZ,MAAM8C,QAAe/B,EAAMH,EAGxC2B,EAASjF,KAAK0B,YACd0F,EACFjC,EADkBF,EACV,MACA,MAGNoC,EAAa,IAAIvB,MACvBuB,EAAWtB,OAAS,KAElBc,EAAOb,IAAMoB,EAGbP,EAAOd,OAAS,KAEdoB,EAAUzE,MAAM8C,QAAU,EAG1BuB,WAAW,KACTF,EAAOnE,MAAM8C,QAAUxF,KAAKuB,WAC3B,MAIP8F,EAAWpB,QAAU,KAEnB7C,QAAQC,KAAK,sBACbrD,KAAKkH,uBAAuBnF,EAAWC,EAAmBC,EAAsBC,IAGlFmF,EAAWrB,IAAMoB,CACnB,EAKAF,sBAAAA,CAAuBnF,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GACjHlC,KAAKG,0BACLH,KAAKqC,uBAAsB,GAC3BrC,KAAKgB,mBAAqB,EAC1BhB,KAAKiB,qBAAuB,EAG5B8F,WAAW,KACT/G,KAAKC,qBAAqB8B,EAAWC,EAAmBC,EAAsBC,IAC7E,IACL,G","sources":["webpack://sanyue_imghub/./src/views/BlockImage.vue?6078","webpack://sanyue_imghub/./src/views/BlockImage.vue","webpack://sanyue_imghub/./src/views/BlockImage.vue?e417","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"blocked-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"blocked-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-info\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n class: \"ban-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation\",\n class: \"exclamation-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_cache[9] || (_cache[9] = _createElementVNode(\"h1\", {\n class: \"status-title\"\n }, \"图片访问被禁止\", -1)), _cache[10] || (_cache[10] = _createElementVNode(\"p\", {\n class: \"status-description\"\n }, \" 抱歉,当前图片已被禁止访问。 \", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"status-description-en\"\n }, \" Sorry, current image is prohibited from being accessed. \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[3] || (_cache[3] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[8] || (_cache[8] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"您可以尝试:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 刷新页面 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.contactSupport && $options.contactSupport(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 联系支持 \", -1))])])]), _cache[12] || (_cache[12] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[13] || (_cache[13] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'BlockedImage',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'Blocked Image',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.blocked-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n },\n contactSupport() {\n // 可以实现联系支持的逻辑\n window.open('https://github.com/MarSeventh/CloudFlare-ImgBed/issues', '_blank');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BlockImage.vue?vue&type=template&id=98114f90&scoped=true\"\nimport script from \"./BlockImage.vue?vue&type=script&lang=js\"\nexport * from \"./BlockImage.vue?vue&type=script&lang=js\"\n\nimport \"./BlockImage.vue?vue&type=style&index=0&id=98114f90&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-98114f90\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","type","goBack","href","args","refreshPage","contactSupport","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","open","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/331.0b44b778.js.map.gz b/frontend-dist/js/331.0b44b778.js.map.gz deleted file mode 100644 index 8f89858f66a7d86ad25f946b35e2f6e421b05b82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10076 zcmV-iC!^ROiwFP!000023hjMschgqZ@L$pR=~E}IV#f&~A$>9(Np>7Jgg`@}3}Izt z`@|NpB_qj6$P8=IKBa{g3e%yK7TPJDUNSQ;flfPZ3bg$(6FJGJ{)Kn#eU7A~iyepF z=3Vcw7Kwc>`|Q2XzMmuI_lYH9TAHCJMhC^jf>tAm(Zp#hJvf+2^%wW;D-I8jq)uB2 zF;Q0=4Nb3DiP1#mxTHwplq5|_Vos7&QIV9>vH~sB;u%@WO(<@=q=>4dlof8=I2~7q zae1zNg0?rIy}-3UN81f(pXAyP(sm-{CZ@RNL$tX9!>76S!~XCiT=Vm^c@c)sKzj+= zYw}Uru1dLyS+4n*2W4EGk))a9&^L|bP2tZYk)P9wn3t4H78wSgrKe@_h$Jn_z$@i+ z7DqK@aZ*x-WpNtdABP2xNRlDrdJP$doPZw+*9<7x<38V&!-g!*O49M?VdUhD*e^@U zf;cHj$e?^f77IYQ4?&5A8){W6xV$C9dYOXG7B5N4VGAjlISBnTQ{ptRNC6U#0L{-U zbnO{QIS6yJ3i1r6047uZ5{U5#u29R(&}qk|-1CS^9)OM0PbgAEk_d(HP zoa6{P5@N`4UnbVL1ZohhmZ6lUPi1JXa;tN|MU-K|SgdV`itK6bwWtP&o>o+Y<%qk4ZsD7j)S-y@gI<=WYE&(Zl2rT`jcl zvlJqyUG7|c{0x&{us(;5A_I;_R?Wlkf+Q8{ICW;hlK^S<5c@nUNwdH^#U8IJo<1J( z8M!F?oE%nW{AHgj@5(;3sX^3N#upzS^@fq#R1i zyiFaDC21ek;r3>+E{pxgB&i8{pj1nuB917^QeFbZ%UKLKk(5Ks(SfF+tHBXR(Z_)` zq|W3x)zT7ZDa0gI^of!Jyv_mE5{3i-1|WLK9#&k(ASuvy@USN{hmKG~1AG5GnxE%g zhw1e-6}L~J4acQCY`-D_(zs?Whf7Q<00_JV;%Lce2J?VNPEuBKbdu^#8pla_YSOWj zt)Rg7DM^wBWn>jbG}0tW!V$U@5RI`64Id>NM@}_q)T6MG(*P|eDH-`F2Z2g5pm16~ z76&*_XL}h?*p^p9N0>RR}3HRCE-uw4#7wx|je5OuA#1 zjM!)4X9;>&6kH|;tMKEO0^=26JVw<^Fg_<$v*NNGqIKjssc;l~wJge7pm*P*A}uOM z#k`bv!&*hk9Yn~I1azEm1M9q$D^lI5HKZA>4>5%+!w1q$iJgnBui81GdVl zTtP{lnPP?q#0Dn~pR`Cf~w-9dJJ>4iu`;CS0$s&U}S`XUjou|sOnRa;!2?+ zNoQqD#+E3-Fg7p=?CLCx=}LXKL1@xu|>sFqagh zSi%YL%aYwa(P(D)0y2=gxY97XhE;_r^hg%Nf&uvjKywJ9BCyjM`atqRNCJ*$gAK}1 zZk1_h7F;4qSON9l(;6ldzSJC$sRMC$*6YbN6qd6UBO6u}4++M_Pa+UH!))Xdlu+#)#a7IRL(qud9 zIb}OXopL=V?w2KLzg*-%VR*I(CNvLeR1~6y;y4t5s|;r;NF&E~qRh${I0hAwLWEKY zgjmevp2@Lj1>@RDbpOCXFd`KNgIX%5ar6$l2HncB-~%(bCJGm0^rWQx7Vu5WD>-aA zo5P)|f+x(au<)cmhbm#nv`RB+XZf+KbY{hM4+F@7$w5?&I;ut^U-gW99S8MiY5XuL zDGgGS%t>bYYG9 zj;2g}lvl>PLHTKSgI47r4iE+^4Ez}x%*!#v{AmSBRt$4j4*GF&sS44RGNiP@*&mgY zlmk=<&d^wig5$&_FXd=jKc%6an>kHgZ$B6yrM!$V#sNlFlffw|Pz}VGHTPS0Y-oKN zca>`V`u#L=qw5BT?=DI6?vM&wElR8YR!IB8;H20MmV6XGvrNPZf#0z#@x|^C-Z*k@uxqQoSOhoqamX(>{>J z{so%nVA63mdjitR)vUOfbJJ>f_`WR5*)eq2X%-V<ExZ@>U{xVk zr8F2>8d6pBXb81DORP;)xCOv-P^N=QIndQA*lpM>tdUPWjV|%HctXlc@M#rQMk-ao z1u0dzp>TuuEADpY2ZKG893^4~{3EK*upCey&+gFx4s4M^t@CO&WSysJpp>&2e{juFF2837*0cp2D!1tFsbC0ki=)3jMi* z3!HYBJnf#8(sIBPg#A$-We#~K|FojQoar(RGx0l%XF*i;=1()( zJthNHrJ2LRL54a{i4#WVKLEgzoL0hON;%Y!YqW=^T~h$;81XoJa5d|Dgb-XKhrVP| z%4LTXZuN!e>O%_G6IdOckyL2LuWs|JFT|}rEfun9B|>{(ji%g&9+&1xtocn#x$IJu zkhY)#$TdTt@=(E=k!rcXjw@ZJ!b)|5Gc|G9TYiv+8#zF3zfyt1ykyE~P;!GbOJ=hc zCs@j&kNeBlDJ~WkJ0@#16{cqEhvcGpnv1UPb!80)Xw0S#M{KG@sF+eKI;c=9IwI5Y zOEKfAV4-QvuP6g@Oc39Xar^jbjN%t*6o1T(;`4_Lb|V4o+Y*?5Wl5$xb=;O+6PK&W zyp2N+=8G8ZPM5twWy;yv)v$%iXLym?#UdVuU|yV(3WrB1KO3?e&gOJ^I8dL0@@3KN zZW{_xzBXQ`eWvWv0cUsA2#&keHYE(Cvk;%2U^SdP-ZD5i5h>azURlzQhcMc$hFxDy z$`8pS<36j>`M}8pUu6oArVK;LOgSj#6Jo+Lnr4YuiP4jZWm0UYrNz;7+EVqiO){_5 zE7fK(ol09~DZQkTWh*V$jM8GEu2x8DsY#yQ-#X*Binl&Y&0V#0--Qy#&Jq1!~afo`qdFiczcy-+fVYLi@z)QN5%J7koJpjyIw zv{@8PVi~n1q8Rmtp%dN4f#F7xK@5XpFqSpDs@N;o!9Ke)j*^uK0$!UtXvS7;trQ-{ zwTgn#AUg682YBDaAgTU{nC5fBf@#!+xx`YF%q5aqU zE2Pb&k+uuz3r3qc2ij6q0+OsY(=z>$c~w$tbXqABm5DP=t+d!z)AU7e9kPOIx6ssa zeZeGpnV3EEB~XL;l3J<~QFx+Z8VySnp0J4BY>2`WWz|+i;R&OGIQOz;==vpB@#Yr{ z-JVyMiDlHuJTPAvi>hbOTmr`Rv2kpZdY_4fNNV#`cG^H9H6~jw1e4fJQ|FYfr&o+q zu%5X@SzDS*h#db!;be@}@kb)jAQ~=JV{Gn)8t)rygsHrxA(dR@# zZ`Nv}Fv1}-5J5YHjIXM@q3tWDKaviKV{|;39+w$?hOX4K(&DHm5~+$YVblrhE@@_| zMqsix!_ro&FcUSaIl?a_@$ng>b{;4A8jQD+MY!nxj4 zy$q50Q6a-t9}&S4GFs*mr(jT*Tp#M1>-)vWA;Tr2sQOIjc0~7V8_?D*(!)Op6|z#Q zsjeXoqr`OvP&?JT7p{&Vf?$JA9ylfZ;SWNO|81-djA|xMH<^*OHM{0Z+g!rA_3hTB zSGU){+j)C^`@_F)eez=K?uRhHFVoxW+P{;T{=nk!wcYBC4vUwGRWh}P>$w;TLhH59 zT6Zsf|LC&w&7Yi0S13x(SO4(vq3HeV{7XUjIkzpLaE4Kbvh5-DY32ZC-s`-NwBh4D9?MxA9(x+B26Bw!gdX+QO%EFURhMT@vGL2`#X33x%1wKKRtH`0!R(C=PoAkC3~jX zz-*0YaIov=;_;a#vCyW|&_2TM;Q(dBZH?oL*S9`@*t&kNb@@e(-LCDULKoyxW}v-E zYm=BYjAdeya$oUmg!DL@NVBh#G58*)fCTw0fZdZ+RBgLqji%ET&8{|!sghAoPpRe% zSt7b!O)Fp=#%roc`U>@mOv+Io+AxjNq+|zoa4sQ4rUGWCdQbVh^f?)f88Up(z!j`| z<`Vx?)|TkfV{>zJiG`Y>+L~VJBa~1J8U-i<^ey!r7|CSzEgb0ob-PJcRc#OffA(eK zXQs>AQdjc_e&GDUA2@&C51c>LX+Hi0*};u_W==ns5Z$`yT%u%{r0=wqt{dfMjaX@7 zrBu^Y&!!qptC~7(VOh|tqBbouLDaHaI86R#sY#j^Nmq$lPVximY9miAXw04N4k0i=D1vDz0jDR{N(n3(Z(X>f<)K#lg zD&-^Ib28bqNLDo$r;IX5iUNE!6+>UpD#=s5R9E09malqxT_B7{Jzh+R>7kFHz+njg z>cmz@g_GWJk08@18n)#R#L5+vMMs6CZfJU$tcZecEEu(#v7B^Ao#UcW4-{0~fpPJ` zmbJ279V?S1twj3pizsNiW@~D#&nl@kGL~rrzEo9BivWz-qvL%e{-{%KVEc^Er@GP9 zZBq6*l}-!J#rK>~Uw1Cw*#6(kt#|G@x4vb$SXHx93;V~$Z1;Zq>I${#QqqT8i>)I<6iS2LJTW{WV*57Tt{iXBH8i!D+ zMpVnLAXF*8mz-l(-wrD zWlb*|%c-hn*@k&GRU>-Et_r^vGQIq+1Qw_mJ$)G$x*(hrNX;T`M~Bf7gmXc>_{fV} zlp$6#N?4sqnFKbeCrni+tl$8EEYNgd{r#;s?(;5u>)n@k&OhA#_K%^(p!(XA+@lLj zYnIg{7D&!~v8L*aKId@{p?;kZ6X~afrrxMEE1KT7)Fgdg6k`cx%~FdsQWl;{d*+VT zxBc^!RQPmjsY#xM`ofsaYO+si|GK9%rt%e8*|_*&2BgP0(0>J5ngrk`)9?aq|z?TohC3R4T0-Wis!&BH%kn5i!$c z&9c*U<^-uV@W2nCvQqv$?Xu?Qg)t%h)PK#-AD(?aH$VSWI<#63rB@VAo=nm`ON#XO zDe+`-ejc$el#}9IBIHfy5~slCM?4U>Hj2$tbLN~bJSBMcY-|0_*0ooJDey(CZ|nNn z=7Tr39{zcA<2>!AsewP|-Itx$KG^=|8|Tf-)EY4b!1-zT1^;*Tw(h`)*915iFQ5vV zu4?0{hWA|%ikeA@<*~U$v67ifxB)JI+J#kN=u>O<*j&PQyEK5BOQe6@4&p!u zhyz_h{9Tu<*?RY7WoD-J!B@_stL^wQ1Lo4&ohzvb`TPv{*Dx#%9PFsDpskSdGr?Zl zXp9Q|p++b|Mq4q=8x=DB{r?^6sS>SHwPU-CA|{IqnmsC%j3r`*`d9ljY6AK)&xG;T zK#=>;EraqIItc@(Vi`r%HdWoFnhg>%sR2tMszv%Vz0YXcqOhRVY+?%isX^Ky(s>Jp zSr_(sqm8B=2OUO@3K;A5K(G`)qR%k3il&bWB?82-UlGREYJH`us#l1IE{98KG{t&U zSW?ZNzP|AG_t9=qD4MV*IC$*uRhzp^pDos9p}+i>WkeWoD1yH$?`F^CJIKad`ztcEFp&ee{0>oK|JVuljl7cdt_G+j{%U)}<@X*Ppi@{*f+A!vP;I zBusQ!;a6j0Y-Ol&qECzq3VMUuLNgI3;I5A57X7AZ76(+(hAP)4Tu-_?VK-P zA?f041HOPcudTJtzu5YG&AIULZa$Y)48XqlM7fSPD$dbT04LWEU*3H9<<9l25SL1!lHo}_O+W4(maaC-(PpGd`_3=$^ZV*<;{&No8Nr5 zb$xC7yH{HqcUo^09K0t1mAtcdVSeEJY*`IlsR<&Ssu0_~ zx^=ct?qRTcLneV+NEj2m$$^4>PZIl+0X4v;lm^H#(9vEvA!T=0g|UeKagiiH)x!a5 zuqn78rk9nfR%0Z@Y9F^<;qB={Ah^A0Cl)_=Z|EelqFGSvo(c22&1MDnHZVK1kAXfW z-93Bd73Gq1@s{)OK{Q+92L7f2hEw=G+|^@vpA$R-F7yf8pS;+*`exM1IqP3L@2rL4 zdF-cR=d<56$2}hG0NE(;@m-YTMvbJFRa5Utwr>B8raG5B=YXM{0&g{jW3;8j03^&GvWU6LV zG(9QCQ#9rt8O318`a*{lpS;w1|F&~s&H3!S^OqO59&CVUUijR(@cGW$cY)crzG%Ji zF@LV)eElW8w#A#cNPTWut<@S(Ma=2+m|<)ziootM-ZNpd#~(GL*%5eeqd}*Bz6E#8OCiYUlR(?N46hg^Y?9WSH#373!4W&g{i^ z=$N3{^gT9bJkK@E&07W+8oh!GGh2*ejF107=^&!SNQ5&jD% zwl3a)4+8>3NSD5KE`qXb-}`Fo&idwe@6mId&5gUx6DCq0cj6_uzcfUz-pj**NjgWx3xnVoW=eWFe_=q_WV zo*g*Dk`i7l(JcHOL7*3;HryCG;*P~i@lK%-FGV$trbTKTeqpFT2gbn8_BhXIdZk7} zm@|w+08jRx>KflTli3yrHZrt)$CbLtifDWxfUF4AGtv{j7)QQGq2dXlwK=#3K~iPS zYCv_eC%HiEQdJI~#r3A_D$(PrcYXyYFoWO0{$5TUBW%QrC_(p235bDuGTMgcrKg@v zHO*QKx$OE1zi0%3Xdwye3&i%yO&w~M%Nob4AoGLv+a+f)Qmo>ud%KGSIN$YmH^08r zja2Ne)Lx)ubtNlp_sWMuw^1ryyIeec3wyBF(&_ zX%TbangwSgoZEJfO2Px#tqo+3Fy_wVrRG_|BxjnMNqUmMNvoDcZ2tCS>U0BKIzM5w zI&hh9z?#|K6FMM?xm`s&15Et#TK+*Py~!kEyP=`hMYha407cgql_3_MQa zY4g#KgvP&6lESLIRb$x|)EM&yQb#OXav!xHH`O|c_fdNo+L61=D6%^*k%>?y_IVkF z90S`w6&@3k?8GJD*l@1%xmcK&4SI)C7!!1|OiN{ag_?Dz44sXN3vf8x z%@P<7rW1j)2Y1h6>)-rB#5A#%@>8!A4IRNKO5W0KJl1gkt-p*cd*BsJC6mUzaWizfELHC=B6D?;I6 zxAi>lmF!P;GEjj@nq|~n-AK|eB-xdt$I2p~E5?Oroidg1zCK<)=Z0i*C8My1(#P=R zCFo9m74X(fM4F~t!MKc@{47?rMgha{c(_gyKVbkTWZEYbk=zk%al5Xkq5AOOLVJG1 zAvSB)JfFFT>@{+N^RM&QXtcC*_j>E|xBhkhkKaFfcYFP>t+zjgdfNMccOJa;{iDlJ zOumId`kgQNTg9eai3C#|BPk0zg!OIBjB&PICJ({p+7;*9b?4!i z+u!|J80xQEP=Ut)wDr%c+n-)^-dStC_8MhZYvUiSKmWZ0D3Vs8|+`UBCrB2FOzwBIC+y3O0ty?#oYi~fQ{`Q*l;H}M#*LNP?+lx4K=V``s5Jq8C2?&5dbXmB%xuv7OAI`b6()N4u&l zMK4SI$3{kt!H;6aeslx%|BuPwFCn&jV28Vx)b2US_-L*3{mH%FpzK_Lg{OY@c%Tuz zfZ4kF?bb&RzJGMl+4zLNfcgESOPy{%X!SZNYpPAWOAq`F&)sfycHl2P_xHiaWxK!3 zVXKEzXiG!4TX&`1J+!Q3B1IbCvjnp0Bs?LIY&SHv{N@co?MNmg(MapX51o&$v_o)r zE5#Af4(lH;Cyz4)p_&xMW*~;81KqQ9V0V@d{PZjx=xvMj&&X2m>FS`UM+F-q=2su= zO}yJOc&}m?yBD#ZWN*UqgAsH$@o^CB?#3=YF2dhx`u@>HdezDK(-r5zb=t)qX1RLP zxqKturvGBs`2JtJs~7)h%+GRJ?}y)*iMv~ix5+j)uC#96n_p;#h)Ls8@E$%nS8O$K)J1i}xo&8xMEz zX%6(@T8Ctw<6Nh*=iN)rw-?y+AM}M6>z7*>uQ}J=pw@sE7HO~)wh7*voyeduCeEjl z9Ts1fqf_DCEslwnC%L*UAWhMA_s1*Z@{u1kaC?o99;3cN169Bh3d#aS5-zK*|CKU? z;d9|4++6?k_1)qsp8S9ibvPFGuV1^u>wNUt_7@+6pS<<{&iV7s#rwNj%HXYBs^)%V zwHsg><|TW7G26Qv13Rcpr%*P;FpnXjfR@H3F`+E?4Bs#JJVmG`+pcW1%Q)__2S3~5 z%M0Bcr1f`KAntD$7ovJ?Zk%`SUu~`b6CRd$`wMo2gU^6a%jVDNtn=;PfA-_crwDIq z2tR;~zwihAVHJ3d9R3{{|K+<0F@aBiB}Bh*fd4Ycf7!=>8REa}=f4c|Uq<*Z2ly|U z{=hfDg}%iJnoITy{(`qrCd35&D--Ymulm6Uc<~YZW-mL%(e2+-8tnGoQVlOrbpQTB zLQJ%K6;48QU%s3W6ZBnhz&U)sDg22ZZ54j8OLG8|t(XuK@TM)C1Y4O96Y$c{gqVOA zu_D3Vi`W2Q;KgbQx?>43L0^Fwz>mEG5hu}`0)PkOO%v9I_Z7lif^1^%34~AdZGX^3 zAJ>P$Rn0Gb4=`E{yIi% z=mXS1G+bz>Gu`+Ub`@V|0p#J!EPz|?>nUIp<8p1fgVbcWg2LMjwno@!fS^UJ25xlR z)A;VzawNwZY22Z>N5%nr`Vcp46U)|Me*^iNI|{(_hyh+GjQ#`kAT9(YfqNuAAtnM3 zetYP60HaSe@jRoSAsE3OGJ(0pif0NBQJqs!k&Bf9WS9SFX+li+Pm>~m;FEp{F%h_@ z2^!G$YEwXVJkg3iP>~Q5`0xtgV!59>-LQANW3PF;o#6}9XkKkfqx&=l8V6Lu;8hY- z*vQpg5JQtK&Ph?s-5;KFmNz7dD1U_ zhQaW3xXq~@pypn9Wa~sOv;vRZiZg}8%$GZh<~9HdQDMP0;KAMTONa@$k%$&(#Rcgq zf9NJ2XZBqc2;XJ{L=11fcee{a`={(^GEKRHRtb_5_F>lDMHby4FWDgwY_eOULYA~~ y8(u<2O`abZ`#dVtD-f7y72Pn&LCu1{_U8QsxaSSSPK+iJ=l(Cb*mhmbkpKV&H@M0G diff --git a/frontend-dist/js/331.0b44b778.js b/frontend-dist/js/331.4f42d273.js similarity index 99% rename from frontend-dist/js/331.0b44b778.js rename to frontend-dist/js/331.4f42d273.js index bae99abf..677ef5f7 100644 --- a/frontend-dist/js/331.0b44b778.js +++ b/frontend-dist/js/331.4f42d273.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[331],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},16331:function(e,t,a){a.r(t),a.d(t,{default:function(){return C}});var n=a(80047),s=(a(85331),a(99648),a(56768));const i={class:"blocked-container"},o=["innerHTML"],r={class:"blocked-content"},l={class:"back-button-wrapper"},c={class:"status-animation"},d={class:"status-icon"},u={class:"status-badge"},g={class:"status-info"},m={class:"status-actions"},p={class:"help-info"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",i,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",r,[(0,s.Lk)("div",l,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[(0,s.Lk)("div",d,[(0,s.bF)(f,{icon:"ban",class:"ban-icon"}),(0,s.Lk)("div",u,[(0,s.bF)(f,{icon:"exclamation",class:"exclamation-icon"})])])]),(0,s.Lk)("div",g,[t[9]||(t[9]=(0,s.Lk)("h1",{class:"status-title"},"图片访问被禁止",-1)),t[10]||(t[10]=(0,s.Lk)("p",{class:"status-description"}," 抱歉,当前图片已被禁止访问。 ",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"status-description-en"}," Sorry, current image is prohibited from being accessed. ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[3]||(t[3]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[8]||(t[8]=(0,s.Lk)("p",{class:"help-text"},"您可以尝试:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[5]||(t[5]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[6]||(t[6]=(0,s.eW)(" 刷新页面 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.contactSupport&&y.contactSupport(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"question-circle"}),t[7]||(t[7]=(0,s.eW)(" 联系支持 ",-1))])])]),t[12]||(t[12]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[13]||(t[13]=(0,s.Fv)('
',1))])}a(44114);var b=a(74354),y=a(60782),f=a(48903),I={name:"BlockedImage",mixins:[f.A],computed:{...(0,y.L8)(["useDarkMode","userConfig"])},setup(){(0,b.u)({title:"Blocked Image",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".blocked-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()},contactSupport(){window.open("https://github.com/MarSeventh/CloudFlare-ImgBed/issues","_blank")}}},v=a(71241);const B=(0,v.A)(I,[["render",k],["__scopeId","data-v-98114f90"]]);var C=B},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); -//# sourceMappingURL=331.0b44b778.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[331],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.de27f549.jpg"},16331:function(e,t,a){a.r(t),a.d(t,{default:function(){return C}});var n=a(80047),s=(a(85331),a(99648),a(56768));const i={class:"blocked-container"},o=["innerHTML"],r={class:"blocked-content"},l={class:"back-button-wrapper"},c={class:"status-animation"},d={class:"status-icon"},u={class:"status-badge"},g={class:"status-info"},m={class:"status-actions"},p={class:"help-info"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",i,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",r,[(0,s.Lk)("div",l,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[(0,s.Lk)("div",d,[(0,s.bF)(f,{icon:"ban",class:"ban-icon"}),(0,s.Lk)("div",u,[(0,s.bF)(f,{icon:"exclamation",class:"exclamation-icon"})])])]),(0,s.Lk)("div",g,[t[9]||(t[9]=(0,s.Lk)("h1",{class:"status-title"},"图片访问被禁止",-1)),t[10]||(t[10]=(0,s.Lk)("p",{class:"status-description"}," 抱歉,当前图片已被禁止访问。 ",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"status-description-en"}," Sorry, current image is prohibited from being accessed. ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[3]||(t[3]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[8]||(t[8]=(0,s.Lk)("p",{class:"help-text"},"您可以尝试:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[5]||(t[5]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[6]||(t[6]=(0,s.eW)(" 刷新页面 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.contactSupport&&y.contactSupport(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"question-circle"}),t[7]||(t[7]=(0,s.eW)(" 联系支持 ",-1))])])]),t[12]||(t[12]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[13]||(t[13]=(0,s.Fv)('
',1))])}a(44114);var b=a(74354),y=a(60782),f=a(48903),I={name:"BlockedImage",mixins:[f.A],computed:{...(0,y.L8)(["useDarkMode","userConfig"])},setup(){(0,b.u)({title:"Blocked Image",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".blocked-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()},contactSupport(){window.open("https://github.com/MarSeventh/CloudFlare-ImgBed/issues","_blank")}}},v=a(71241);const B=(0,v.A)(I,[["render",k],["__scopeId","data-v-98114f90"]]);var C=B},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); +//# sourceMappingURL=331.4f42d273.js.map \ No newline at end of file diff --git a/frontend-dist/js/331.4f42d273.js.gz b/frontend-dist/js/331.4f42d273.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..7dd51e4392bbaa73e8150ca4437430a48797aed9 GIT binary patch literal 3772 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 mD2fOjy!68tyk^s}Tm4oeXzVoYmxVn>(f [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n class: \"ban-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation\",\n class: \"exclamation-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_cache[9] || (_cache[9] = _createElementVNode(\"h1\", {\n class: \"status-title\"\n }, \"图片访问被禁止\", -1)), _cache[10] || (_cache[10] = _createElementVNode(\"p\", {\n class: \"status-description\"\n }, \" 抱歉,当前图片已被禁止访问。 \", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"status-description-en\"\n }, \" Sorry, current image is prohibited from being accessed. \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[3] || (_cache[3] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[8] || (_cache[8] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"您可以尝试:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 刷新页面 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.contactSupport && $options.contactSupport(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 联系支持 \", -1))])])]), _cache[12] || (_cache[12] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[13] || (_cache[13] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'BlockedImage',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'Blocked Image',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.blocked-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n },\n contactSupport() {\n // 可以实现联系支持的逻辑\n window.open('https://github.com/MarSeventh/CloudFlare-ImgBed/issues', '_blank');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BlockImage.vue?vue&type=template&id=98114f90&scoped=true\"\nimport script from \"./BlockImage.vue?vue&type=script&lang=js\"\nexport * from \"./BlockImage.vue?vue&type=script&lang=js\"\n\nimport \"./BlockImage.vue?vue&type=style&index=0&id=98114f90&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-98114f90\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","type","goBack","href","args","refreshPage","contactSupport","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","open","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/331.4f42d273.js.map.gz b/frontend-dist/js/331.4f42d273.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..475679c4559a17102575e16ca2a54f462037a65b GIT binary patch literal 10059 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["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,r.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||o(33153)},logoHref(){return this.useConfigLink&&this.userConfig?.logoLink?this.userConfig.logoLink:this.href},logoClasses(){return{logo:!0,[`logo--${this.position}`]:!0,[`logo--${this.size}`]:!0,"logo--hover-enabled":this.enableHover}}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-17f54292"]]);var p=u},2893:function(e,t,o){"use strict";o(85331)},3261:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},7835:function(e,t,o){"use strict";e.exports=o.p+"img/background-light.f17603bc.jpg"},10456:function(e,t,o){"use strict";o(85331)},10732:function(e,t,o){"use strict";e.exports=o.p+"img/background.ea1b7ee7.jpg"},11393:function(e,t,o){o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(a){if(t[a])return t[a].exports;var s=t[a]={i:a,l:!1,exports:{}};return e[a].call(s.exports,s,s.exports,o),s.l=!0,s.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)o.d(a,s,function(t){return e[t]}.bind(null,s));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var a;function s(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return l}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return g}),o.d(t,"urltoImage",function(){return f}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return k}),o.d(t,"EImageType",function(){return a}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(a||(a={}));var i=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function l(e,t=.92,o=a.JPEG){return i(this,void 0,void 0,function*(){return s(o)||(o=a.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=a.JPEG){return new Promise(a=>e.toBlob(e=>a(e),o,t))}var r=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let a=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let l=i.length;const n=new Uint8Array(l);for(;l--;)n[l]=i.charCodeAt(l);return s(t)&&(a=t),new Blob([n],{type:a})})}function c(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),a.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const a=document.createEvent("MouseEvents");a.initEvent("click",!1,!1),o.dispatchEvent(a),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),a=document.createElement("canvas"),s=a.getContext("2d");let i,l;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;l=e.width*t,i=e.height*t}else l=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=l,a.width=i):(a.height=i,a.width=l),o.orientation){case 3:s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 8:s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;case 2:s.translate(a.width,0),s.scale(-1,1),s.drawImage(e,0,0,a.width,a.height);break;case 4:s.translate(a.width,0),s.scale(-1,1),s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:s.translate(a.width,0),s.scale(-1,1),s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 7:s.translate(a.width,0),s.scale(-1,1),s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;default:s.drawImage(e,0,0,a.width,a.height)}return a})}function g(e){return fetch(e).then(e=>e.blob())}function f(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),a.src=e})}var y=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;s(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield l(u,t.quality,n),g=yield d(h,i);return g.size>e.size?e:g})}function k(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;s(t.type)&&(h=t.type,u=t.type);const g=yield c(r),f=yield m(g,Object.assign({},t));let y,b=.5;const k=[null,null];for(let e=1;e<=7;e++){y=yield l(f,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...k].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;k[0]=y,b+=Math.pow(.5,e+1)}}const v=yield d(y,u);return v.size>e.size?e:v})}}])})},13378:function(e,t,o){"use strict";o(85331),o(38736),o(79899)},15616:function(e,t,o){"use strict";o(85331),o(97197)},18785:function(e,t,o){"use strict";o(85331)},19104:function(e,t,o){"use strict";o(85331)},23597:function(e,t,o){"use strict";o(85331)},26870:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return To}});var a=o(78507),s=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),l=o(24232);const n={class:"history-header"},r={class:"header-left"},d={class:"record-count"},c={class:"header-right"},u={class:"timeline-header"},p={class:"date-label"},h={key:0,class:"grid-view"},m={class:"grid-preview"},g=["src"],f=["src"],y={key:2,class:"file-icon-wrapper"},b={class:"grid-overlay"},k={class:"grid-actions"},v={class:"grid-info"},C=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},x=["title"],_=["title"],I={class:"list-meta"},M={class:"upload-time"},A={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},R={key:1,class:"load-more-hint"},B={key:1,class:"no-more-hint"},P={key:1,class:"empty-state"};function W(e,t,o,W,N,z){const V=(0,i.g2)("font-awesome-icon"),H=s.S2,Q=a.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,l.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,l.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,l.v_)(e.$t("uploadHistory.totalRecords",{count:N.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",onClick:z.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"grid"===N.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:z.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"times"})]),_:1})])]),N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>z.handleScroll&&z.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(z.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[4]||(t[4]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,l.v_)(e.date),1)]),"grid"===N.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,g)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,f)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(V,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",k,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",v,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,C),(0,i.Lk)("div",w,(0,l.v_)(z.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,U)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(V,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,x),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,l.v_)(e.url),9,_)]),(0,i.Lk)("div",I,[(0,i.Lk)("div",M,(0,l.v_)(z.formatTime(e.time)),1)]),(0,i.Lk)("div",A,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),z.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[N.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(V,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",R,(0,l.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",B,(0,l.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(V,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,l.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var N={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),a=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[a]||(e[a]=[]),e[a].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,a=t.scrollHeight,s=t.clientHeight;a-o-s<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),l=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${s} ${i}:${l}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success(this.$t("uploadHistory.linkCopied"))}).catch(()=>{this.$message.error(this.$t("uploadHistory.copyFailed"))})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(96682)}}},z=o(71241);const V=(0,z.A)(N,[["render",W],["__scopeId","data-v-f70e7770"]]);var H=V,Q=o(86975),X=o(9267),q=(o(15616),o(81418)),O=(o(50333),o(74757)),j=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810)),Y=(o(34396),o(4885),o(53676));const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item"},se={class:"setting-label"},ie={key:0,class:"setting-item"},le={class:"setting-label"},ne={class:"setting-item"},re={class:"setting-label"},de={class:"setting-item"},ce={class:"setting-label"},ue={class:"dialog-section"},pe={class:"section-header"},he={class:"section-title"},me={class:"section-content"},ge={class:"dialog-section"},fe={class:"section-header"},ye={class:"section-title"},be={class:"section-content"},ke={class:"setting-item"},ve={class:"setting-label"},Ce={class:"setting-item"},we={class:"setting-label"},Fe={key:0,class:"setting-item slider-item"},Le={class:"setting-label"},Ue={class:"slider-wrapper"},$e={class:"slider-input-wrapper"},Se={key:1,class:"setting-item slider-item"},Te={class:"setting-label"},xe={class:"slider-wrapper"},_e={class:"slider-input-wrapper"},Ie={key:0,class:"dialog-section"},Me={class:"section-header"},Ae={class:"section-title"},Ee={class:"section-content"},De={class:"setting-item"},Re={class:"setting-label"},Be={class:"dialog-action"};function Pe(e,t,o,n,r,d){const c=Y.A,u=J.ll,p=J.MQ,h=(0,i.g2)("font-awesome-icon"),m=a.R7,g=K.P9,f=K.AV,y=G.WK,b=j.qi,k=O.B8,v=q.lq,C=s.S2,w=X.kZ;return(0,i.uX)(),(0,i.Wv)(w,{title:e.$t("uploadSettings.title"),modelValue:d.visible,"onUpdate:modelValue":t[12]||(t[12]=e=>d.visible=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[(0,i.Lk)("span",te,(0,l.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",oe,[(0,i.Lk)("div",ae,[(0,i.Lk)("span",se,(0,l.v_)(e.$t("uploadSettings.channelType")),1),(0,i.bF)(p,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"telegram",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"telegram",class:"channel-icon channel-brand-telegram"}),t[13]||(t[13]=(0,i.Lk)("span",null,"TG",-1))]),_:1}),(0,i.bF)(u,{label:"cfr2",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"cfr2",class:"channel-icon channel-brand-cfr2"}),t[14]||(t[14]=(0,i.Lk)("span",null,"R2",-1))]),_:1}),(0,i.bF)(u,{label:"s3",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"s3",class:"channel-icon channel-brand-s3"}),t[15]||(t[15]=(0,i.Lk)("span",null,"S3",-1))]),_:1}),(0,i.bF)(u,{label:"discord",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"discord",class:"channel-icon channel-brand-discord"}),t[16]||(t[16]=(0,i.Lk)("span",null,"DC",-1))]),_:1}),(0,i.bF)(u,{label:"huggingface",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"huggingface",class:"channel-icon channel-brand-huggingface"}),t[17]||(t[17]=(0,i.Lk)("span",null,"HF",-1))]),_:1}),(0,i.bF)(u,{label:"webdav",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"webdav",class:"channel-icon channel-brand-webdav"}),t[18]||(t[18]=(0,i.Lk)("span",null,"WD",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",ie,[(0,i.Lk)("span",le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(f,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(g,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",ne,[(0,i.Lk)("span",re,(0,l.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(y,{"model-value":o.uploadFolder,"onUpdate:modelValue":d.handleUploadFolderInput,placeholder:e.$t("uploadSettings.uploadDirectoryPlaceholder"),class:"setting-input"},null,8,["model-value","onUpdate:modelValue","placeholder"])]),(0,i.Lk)("div",de,[(0,i.Lk)("span",ce,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ue,[(0,i.Lk)("div",pe,[(0,i.Lk)("span",he,(0,l.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",me,[(0,i.bF)(p,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(u,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(u,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(u,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",ge,[(0,i.Lk)("div",fe,[(0,i.Lk)("span",ye,(0,l.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",be,[(0,i.Lk)("div",ke,[(0,i.Lk)("span",ve,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",Ce,[(0,i.Lk)("span",we,(0,l.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(b,{"model-value":o.customerCompress,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Fe,[(0,i.Lk)("span",Le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ue,[(0,i.bF)(k,{"model-value":o.compressBar,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",$e,[(0,i.bF)(v,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[19]||(t[19]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Se,[(0,i.Lk)("span",Te,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",xe,[(0,i.bF)(k,{"model-value":o.compressQuality,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",_e,[(0,i.bF)(v,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[20]||(t[20]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",Ie,[(0,i.Lk)("div",Me,[(0,i.Lk)("span",Ae,(0,l.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ee,[(0,i.Lk)("div",De,[(0,i.Lk)("span",Re,(0,l.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(b,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Be,[(0,i.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var We={name:"UploadSettingsDialog",components:{ChannelIcon:Y.A},methods:{handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const Ne=(0,z.A)(We,[["render",Pe]]);var ze=Ne,Ve=o(88559),He=(o(85970),o(813)),Qe=(o(34896),o(69655)),Xe=(o(2893),o(74253));o(79899);const qe={class:"upload-list-item"},Oe=["href"],je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Ge=["src"],Ke=["src"],Je={key:2,style:{width:"10vw","border-radius":"12px"}},Ye={class:"upload-list-item-content"},Ze={class:"upload-list-item-name-wrapper"},et={key:0,class:"upload-list-item-url"},tt={class:"upload-list-item-url-row"},ot={class:"upload-list-item-url-row"},at={key:1,class:"upload-list-item-progress"},st={class:"upload-list-item-action"};function it(e,t,o,a,s,n){const r=(0,i.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=Qe.ve,p=(0,i.g2)("Link"),h=He.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",qe,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",je,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ge),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,Ke)):((0,i.uX)(),(0,i.CE)("div",Je,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Oe),(0,i.Lk)("div",Ye,[(0,i.Lk)("div",Ze,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",et,[(0,i.Lk)("div",tt,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",ot,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",at,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",st,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var lt=o(57477);const nt=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],rt=["mp4","webm","ogg","mkv"];var dt={name:"UploadFileItem",components:{Link:lt.Link,Delete:lt.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return nt.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return rt.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const ct=(0,z.A)(dt,[["render",it],["__scopeId","data-v-3620a174"]]);var ut=ct,pt=o(62086),ht=(o(40670),o(88830),o(23597),o(70683)),mt=(o(95385),o(3261),o(47358));const gt={class:"upload-form"},ft={class:"upload-card-glow",ref:"uploadCardGlow"},yt=["innerHTML"],bt={key:0,class:"upload-card"},kt={class:"paste-card-actions"},vt={class:"upload-list-dashboard-action"},Ct={class:"modern-action-group"},wt={class:"modern-dropdown-item-content"},Ft={class:"modern-action-btn modern-action-btn-danger"};function Lt(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=He.tk,h=mt.j5,m=G.WK,g=s.S2,f=J.Zh,y=J.MQ,b=ht.Ik,k=(0,i.g2)("List"),v=(0,i.g2)("Checked"),C=(0,i.g2)("Failed"),w=Xe.$g,F=(0,i.g2)("font-awesome-icon"),L=a.R7,U=j.qi,$=pt.c6,S=pt.Iy,T=pt.dW,x=ut,_=Ve.kA;return(0,i.uX)(),(0,i.CE)("div",gt,[(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[0]||(t[0]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[1]||(t[1]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e))},[(0,i.Lk)("div",ft,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,l.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,l.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(u)]),_:1},8,["class"]),(0,i.Lk)("div",{class:(0,l.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,yt)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",bt,[(0,i.bF)(b,{class:(0,l.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[2]||(t[2]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:e.$t("upload.pasteUrlPlaceholder"),type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","placeholder","rows"]),(0,i.Lk)("div",kt,[(0,i.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,i.bF)(y,{modelValue:d.pasteUploadMethod,"onUpdate:modelValue":t[3]||(t[3]=e=>d.pasteUploadMethod=e),class:"paste-card-method-group",size:c.pasteCardMethodButtonSize},{default:(0,i.k6)(()=>[(0,i.bF)(f,{label:"save"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteSave")),1)]),_:1}),(0,i.bF)(f,{label:"external"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteExternal")),1)]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,l.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(_,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(w,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",vt,[(0,i.Lk)("div",Ct,[(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[4]||(t[4]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(F,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",wt,[(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadForm.autoRetry")),1),(0,i.bF)(U,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[6]||(t[6]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[5]||(t[5]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(F,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)($,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",Ft,[(0,i.bF)(F,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)(x,{key:e.name,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[7]||(t[7]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var Ut=o(457),$t=o(76334),St=o(60782);function Tt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function xt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function _t(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Tt(e.srcID,e.name,t);Object.assign(e,o)})}const It=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Mt=(e,t)=>e>>>t|e<<32-t;function At(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=Mt(o[u-15],7)^Mt(o[u-15],18)^o[u-15]>>>3,t=Mt(o[u-2],17)^Mt(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,s,i,l,n,r,d,c]=t;for(let u=0;u<64;u++){const e=Mt(n,6)^Mt(n,11)^Mt(n,25),t=n&r^~n&d,p=c+e+t+It[u]+o[u]>>>0,h=Mt(a,2)^Mt(a,13)^Mt(a,22),m=a&s^a&i^s&i,g=h+m>>>0;c=d,d=r,r=n,n=l+p>>>0,l=i,i=s,s=a,a=p+g>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+s>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+l>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function Et(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(s){a+=s.length;let i=0;if(o>0){const a=64-o,l=Math.min(a,s.length);t.set(s.subarray(0,l),o),o+=l,i=l,64===o&&(At(t,e),o=0)}while(i+64<=s.length)At(s.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),At(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(s/4294967296),!1),i.setUint32(60,s>>>0,!1),At(t,e);let l="";for(let t=0;t<8;t++)l+=e[t].toString(16).padStart(8,"0");return l}}}async function Dt(e){const t=Et(),o=4194304;let a=0;while(athis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){_t(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&_t(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,St.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),a=o?.uploadChannel||this.uploadChannel;if("external"===a)return void this.uploadSingleFile(e);if("huggingface"===a){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===a){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const s=20971520;e.file.size>s?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,a=t.uploadChannel||this.uploadChannel,s=this.autoRetry&&"external"!==a,i="external"===a?"default":this.uploadNameType,l=new AbortController;this.abortControllers.set(e.file.uid,l);const n=new FormData;if(n.append("file",e.file),"external"===a&&n.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Dt(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,Ut.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+s+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:l.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,a=new AbortController;this.abortControllers.set(e.file.uid,a);const s="discord"===o?9437184:16777216,i=e.file.size,l=e.file.type||"application/octet-stream",n=Math.ceil(i/s),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType;let u=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),u=await Dt(e.file),console.log("SHA256 computed:",u)}catch(p){console.error("Failed to compute SHA256:",p)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",l),t.append("totalChunks",n.toString());const h=await(0,Ut.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!h.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+h.data.message);const m=h.data.uploadId;console.log("分块上传初始化成功,uploadId:",m);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=m);const f=3,y=new Array(n).fill(0);let b=0,k=!1,v="",C=!1;const w=async t=>{if(k||C)return;const u=t*s,h=Math.min(u+s,i),g=e.file.slice(u,h),f=new FormData;f.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),f.append("chunkIndex",t.toString()),f.append("totalChunks",n.toString()),f.append("uploadId",m),f.append("originalFileName",e.file.name),f.append("originalFileType",l);let b=0;const w=3;while(b{if(k||C)return;const a=Math.round(o.loaded/o.total*100);y[t]=a;const s=Math.round(y.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:s,file:e.file})}})}catch(p){if("CanceledError"===p.name||"ERR_CANCELED"===p.code)return C=!0,void console.log("分块上传已取消:",e.file.name);if(b++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${b}/${w}):`,p),b>=w)throw k=!0,v=`分块 ${t+1}/${n} 上传失败: ${p.message}`,new Error(v);await new Promise(e=>setTimeout(e,2e3*b))}}},F=[];for(let e=0;e{while(bt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),p.response&&401!==p.response.status?(this.exceptionList.push(e),e.onError(p,e.file)):p.response||(this.exceptionList.push(e),e.onError(p,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Ut.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const a=o.uploadChannel||this.uploadChannel;if("external"!==a){const a=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+a;const s=Tt(a,t.name,this.rootUrl);Object.assign(o,s),o.srcID=a}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.$t("uploadForm.uploadSuccess",{name:this.truncateFilename(t.name)})}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(a){this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(xt(e,this.selectedUrlForm)),this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})):this.$message({type:"warning",message:this.$t("uploadForm.fileNotUploaded")})},beforeUpload(e){return new Promise(async(t,o)=>{let a=e;const s=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(s)try{const t=await this.convertImageToWebp(e);t&&(a=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,l=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)$t.compressAccurately(a,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const s=new File([t],a.name,{type:t.type});s.uid=e.uid;const i=this.uploadCount++,l=this.serverCompress&&s.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(s,l):setTimeout(()=>{n(s,l),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(l){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);0===e?n(a,t):setTimeout(()=>{n(a,t),this.uploadCount--},300*e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>xt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:this.$t("uploadForm.copyAllSuccess")})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:this.$t("uploadForm.fileListCleared")})):this.$message({type:"info",message:this.$t("uploadForm.fileListEmpty")})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:this.$t("uploadForm.successFilesCleared")})):this.$message({type:"info",message:this.$t("uploadForm.successFilesEmpty")})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,l=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:s,htmlURL:i,ubbURL:l,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&Ut.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(s){a=""}}""===a&&(o=t.exec(i),null!=o&&o[1]&&(a=decodeURIComponent(o[1])))}if(""===a){const t=new URL(e);a=t.pathname.split("/").pop()}if(""===a){const o=new URL(e);let s=o.pathname.split(".").pop();(!s||""===s||s.length>10)&&(s="bin"),a="PastedFile"+Date.now()+t+"."+s}const l=o.data,n=new File([l],a,{type:l.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:this.$t("uploadForm.urlRequestFailed")})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){this.exceptionList.length>0?(this.retryFailedFiles(this.exceptionList),this.exceptionList=[]):this.$message({type:"info",message:this.$t("uploadForm.noFailedFiles")})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?this.$t("uploadForm.autoRetryOn"):this.$t("uploadForm.autoRetryOff")}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e){e.forEach(e=>{const t=e.retryCount||0;tthis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):this.$message({type:"warning",message:this.$t("uploadForm.maxRetryReached",{name:e.name,max:this.maxRetryCount})})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Dt(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const a=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),s=btoa(String.fromCharCode(...a));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,Ut.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:s,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const l=i.data;if(console.log("Upload info:",l),l.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(l.needsLfs&&l.uploadAction){const{href:t,header:a}=l.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,l,o);else{console.log("Uploading to S3 (basic)...");const s=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!s.ok){const e=await s.text();throw new Error(`S3 upload failed: ${s.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,Ut.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:l.fullId,filePath:l.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:l.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(a){if("CanceledError"===a.name||"ERR_CANCELED"===a.code||"AbortError"===a.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",a),this.exceptionList.push(e),e.onError(a,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:s,header:i}=a,l=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${l}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,a=t*l,s=Math.min(a+l,e.file.size),n=e.file.slice(a,s);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(s,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const a=new Image,s=document.createElement("canvas"),i=s.getContext("2d");a.onload=()=>{s.width=a.width,s.height=a.height,i.drawImage(a,0,0),s.toBlob(s=>{if(s){const o=e.name,a=o.lastIndexOf("."),i=a>0?o.substring(0,a)+".webp":o+".webp",l=new File([s],i,{type:"image/webp"});l.uid=e.uid,t(l)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(a.src)},"image/webp",.92)},a.onerror=()=>{URL.revokeObjectURL(a.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},a.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),a=e.clientX-o.left,s=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=s+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Bt=(0,z.A)(Rt,[["render",Lt],["__scopeId","data-v-f81fd314"]]);var Pt=Bt,Wt=o(732),Nt=o(33892),zt=o(45130);const Vt={class:"directory-suggestion-input",ref:"wrapperRef"},Ht={class:"suggestion-dropdown"},Qt={class:"suggestion-list"},Xt=["title","onMousedown"];function qt(e,t,o,a,s,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",Vt,[(0,i.bF)(r,{ref:"inputRef",modelValue:n.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputValue=e),placeholder:o.placeholder,onFocus:n.handleFocus,onBlur:n.handleBlur,onInput:n.handleInput},null,8,["modelValue","placeholder","onFocus","onBlur","onInput"]),(0,i.bo)((0,i.Lk)("div",Ht,[(0,i.Lk)("ul",Qt,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,zt.D$)(t=>n.selectItem(e),["prevent"])},(0,l.v_)(e.value),41,Xt))),128))])],512),[[zt.aG,s.dropdownVisible&&s.suggestions.length>0]])],512)}var Ot={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,dropdownVisible:!1,isFocused:!1,suggestions:[]}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},watch:{modelValue(){this.isFocused&&this.refreshSuggestions()}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.ensureDirectoryTreeLoaded(),this.$emit("focus"),setTimeout(()=>{this.isFocused&&(this.refreshSuggestions(),this.dropdownVisible=!0)},500)},handleBlur(){this.isFocused=!1,this.dropdownVisible=!1,this.$emit("blur")},handleInput(e){this.$nextTick(()=>{this.refreshSuggestions(),this.isFocused&&(this.dropdownVisible=!0)})},selectItem(e){const t=e.value;this.inputValue=t,this.$emit("select",t);const o=this.normalizeDirectoryPath(t),a=this.directoryChildrenMap[o];a&&a.length>0?this.$nextTick(()=>{this.refreshSuggestions(),this.dropdownVisible=!0,this.$refs.inputRef?.focus()}):this.dropdownVisible=!1},refreshSuggestions(){this.suggestions=this.getDirectorySuggestions(this.modelValue||"")},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const a=this.normalizeDirectoryPath(e.path),s=Array.isArray(e.children)?e.children:[];t[a]=s.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),s.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Ut.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),a=o.split("/"),s=a[a.length-1]||"",i=a.slice(0,-1).filter(Boolean),l=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:s,parentPath:l}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),a=this.directoryChildrenMap[o]||[];if(!t)return a.slice(0,10).map(e=>({value:e.path}));const s=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(s)).slice(0,10).map(e=>({value:e.path}))}}};const jt=(0,z.A)(Ot,[["render",qt],["__scopeId","data-v-28b8eda7"]]);var Gt=jt,Kt=o(91543);const Jt={class:"container"},Yt={class:"upload-home"},Zt={class:"quick-toolbar-actions"},eo={class:"quick-toolbar-actions-inner"},to={class:"header"},oo={class:"title"},ao={class:"title-crayon-text","aria-hidden":"true"},so={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},io={class:"dialog-section"},lo={class:"section-header"},no={class:"section-title"},ro={class:"section-content"},co={class:"dialog-section"},uo={class:"section-header"},po={class:"section-title"},ho={class:"section-content"},mo={class:"setting-item"},go={class:"setting-label"},fo={key:0,class:"setting-item"},yo={class:"setting-label"},bo={class:"dialog-action"},ko=["innerHTML"],vo={class:"dialog-footer"};function Co(e,t,o,n,r,d){const c=Kt.A,u=(0,i.g2)("font-awesome-icon"),p=s.S2,h=pt.c6,m=pt.Iy,g=pt.dW,f=Gt,y=G.WK,b=Nt.A,k=a.R7,v=Wt.A,C=Pt,w=J.ll,F=J.MQ,L=j.qi,U=X.kZ,$=ze,S=Q.A,T=H;return(0,i.uX)(),(0,i.CE)("div",Jt,[(0,i.Lk)("div",Yt,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(g,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(f,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","placeholder","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(y,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","placeholder","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(p,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(k,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,i.bF)(g,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(h,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,i.Lk)("div",Zt,[(0,i.Lk)("div",eo,[(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,i.bF)(k,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(p,{class:(0,l.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,i.bF)(v,{useConfigLink:!0}),(0,i.Lk)("div",to,[(0,i.Lk)("h1",oo,[(0,i.Lk)("span",ao,(0,l.v_)(d.ownerName)+" ImgHub",1),(0,i.Lk)("a",so,(0,l.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub ",-1))])]),(0,i.bF)(C,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:e.$t("settings.linkFormatTitle"),modelValue:r.showUrlDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",io,[(0,i.Lk)("div",lo,[(0,i.Lk)("span",no,(0,l.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",ro,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[6]||(t[6]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",co,[(0,i.Lk)("div",uo,[(0,i.Lk)("span",po,(0,l.v_)(e.$t("settings.customLink")),1),(0,i.bF)(k,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ho,[(0,i.Lk)("div",mo,[(0,i.Lk)("span",go,(0,l.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",fo,[(0,i.Lk)("span",yo,(0,l.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[8]||(t[8]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",bo,[(0,i.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[11]||(t[11]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[12]||(t[12]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[13]||(t[13]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[14]||(t[14]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[15]||(t[15]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[16]||(t[16]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[17]||(t[17]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[18]||(t[18]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[19]||(t[19]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[20]||(t[20]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[21]||(t[21]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:e.$t("upload.announcementTitle"),modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",vo,[(0,i.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,ko)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var wo=o(46638),Fo=o(48903),Lo=o(90144),Uo=o(62388),$o={name:"UploadHome",mixins:[Fo.A],data(){return{selectedUrlForm:(0,Lo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,isQuickToolbarOpen:!1,isQuickToolbarPinned:!1,showAnnouncementDialog:!1,announcementContent:"",displayedAnnouncementRefreshAt:null,showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Uo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,St.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!0,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto",this.showAnnouncementIfNeeded()},components:{UploadForm:Pt,Footer:Q.A,ToggleDark:Kt.A,Logo:Wt.A,UploadHistory:H,UploadSettingsDialog:ze,DirectoryTreePicker:Nt.A,DirectorySuggestionInput:Gt},methods:{async fetchAvailableChannels(){try{const e=await Ut.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,a=this.availableChannels[this.uploadChannel]||[];t&&a.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&a.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,Uo.G)(e,{strict:t});return!!o.valid||(this.$message.error(o.error),!1)},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){Ut.A.post("/api/auth/logout",{authType:"user"},{withCredentials:!0}).finally(()=>{this.$store.commit("setUserLoggedIn",!1),this.$router.push("/login"),this.$message.success(this.$t("upload.logoutSuccess"))})},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleQuickToolbarMoreEnter(){this.isQuickToolbarOpen=!0},handleQuickToolbarLeave(){this.isQuickToolbarPinned||(this.isQuickToolbarOpen=!1)},toggleQuickToolbar(){this.isQuickToolbarPinned=!this.isQuickToolbarPinned,this.isQuickToolbarOpen=this.isQuickToolbarPinned},closeQuickToolbar(){this.isQuickToolbarPinned=!1,this.isQuickToolbarOpen=!1},handleQuickToolbarCommand(e){this.closeQuickToolbar(),"linkFormat"===e?this.openUrlDialog():"manage"===e?this.handleManage():"logout"===e&&this.handleLogout()},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){if("toggleTheme"===e)"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1));else if("toggleUploadMethod"===e)this.handleChangeUploadMethod();else if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},handleDesktopMenuCommand(e){if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?this.$t("theme.lightMode"):"light"===this.themeMode?this.$t("theme.darkMode"):this.$t("theme.autoMode")},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?this.openAnnouncement(e):this.$message.info(this.$t("upload.noAnnouncement"))},getAnnouncementRefreshAt(){const e=Number(this.userConfig?.announcementRefreshAt);return Number.isFinite(e)&&e>0?e:null},openAnnouncement(e){this.announcementContent=e,this.displayedAnnouncementRefreshAt=this.getAnnouncementRefreshAt(),this.showAnnouncementDialog=!0},showAnnouncementIfNeeded(){const e=this.userConfig?.announcement;if(!e)return;const t=this.getAnnouncementRefreshAt();if(t){const o=Number(localStorage.getItem("announcementAcknowledgedRefreshAt"));return void((!Number.isFinite(o)||t>o)&&this.openAnnouncement(e))}localStorage.getItem("announcementAcknowledgedAt")||this.openAnnouncement(e)},acknowledgeAnnouncement(){localStorage.setItem("announcementAcknowledgedAt",String(Date.now())),this.displayedAnnouncementRefreshAt&&localStorage.setItem("announcementAcknowledgedRefreshAt",String(this.displayedAnnouncementRefreshAt)),this.showAnnouncementDialog=!1},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const So=(0,z.A)($o,[["render",Co],["__scopeId","data-v-579106c0"]]);var To=So},30694:function(e,t,o){"use strict";o(85331)},33153:function(e,t,o){"use strict";e.exports=o.p+"img/logo.e8dbfa27.png"},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var a=o(99114),s=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),l=(o(19104),o(31802)),n=(o(13378),o(80047)),r=(o(99648),o(56768)),d=o(45130),c=o(24232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},g={class:"node-label"},f={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},k={class:"node-label"};function v(e,t,o,v,C,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=l.qk,$=i.Vc,S=s.pw,T=a.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:C.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>C.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[C.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",g,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:C.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>C.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",f,[C.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:1},8,["modelValue","title"])],64))])}var C=o(457),w=o(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await C.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(71241);const U=(0,L.A)(F,[["render",v],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},34896:function(e,t,o){"use strict";o(85331)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},48903:function(e,t,o){"use strict";var a=o(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const o=document.createElement("img");o.id="bg2",o.className="background-image2",o.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(o,e.firstChild)},initializeBackground(e,t=".login",o=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:o,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),l=document.getElementById("bg2");if(!i||!l)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const n=this.userConfig?.[e];"bing"===n?this.setupBingWallpaper(i,l,t):Array.isArray(n)&&n.length>1?this.setupCustomWallpaperCarousel(i,l,n,t):Array.isArray(n)&&1===n.length?this.setupSingleCustomWallpaper(i,n[0],t):o&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,o){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,o,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,o,a){this.loadBackgroundImage(e,o[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,o)},this.bkInterval)},setupSingleCustomWallpaper(e,t,o){this.loadBackgroundImage(e,t,o)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=o(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,o,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(o);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},l=new Image;l.onload=()=>{e.src=t,i()},l.onerror=()=>{e.src=t,i()},l.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const o=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${o}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const o=0!=e.style.opacity,a=o?e:t,s=o?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const l=new Image;l.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},l.src=i},switchCustomWallpaper(e,t,o){const a=0!=e.style.opacity,s=a?e:t,i=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%o.length;const l=o[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const n=new Image;n.onload=()=>{i.src=l,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},n.src=l},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),o=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),o&&(o.style.transition="none",o.style.opacity=0,o.src="",setTimeout(()=>{o&&(o.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),o&&(o.style.opacity=0,setTimeout(()=>{o&&(o.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,s);const l=document.getElementById("bg1"),n=document.getElementById("bg2");if(!l||!n)return void this.reinitializeBackground(e,t,a,s);const r=0!=l.style.opacity?l:n,d=0!=l.style.opacity?n:l,c=this.useDarkMode,u=o(c?10732:7835),p=new Image;p.onload=()=>{d.src=u,d.onload=()=>{r.style.opacity=0,setTimeout(()=>{d.style.opacity=this.bkOpacity},50)}},p.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},p.src=u},reinitializeBackground(e,t=".login",o=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,o,a)},100)}}}},50333:function(e,t,o){"use strict";o(85331),o(29092)},53676:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const s={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},l={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",(0,a.v6)(e.$attrs,{class:"channel-icon-wrapper"}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",s,[...t[0]||(t[0]=[(0,a.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...t[2]||(t[2]=[(0,a.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:d.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},d=o(71241);const c=(0,d.A)(r,[["render",n],["__scopeId","data-v-33933ada"]]);var u=c},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return s}});var a=o(46638);function s(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:a.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:a.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:a.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:a.Ay.global.t("validation.consecutiveSlashNotAllowed")};const s=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return s.test(e)?{valid:!1,error:a.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},67819:function(e,t,o){"use strict";o(85331)},70797:function(e,t,o){"use strict";o.d(t,{A:function(){return l}});o(44114);var a=o(25507),s=o(16915);let i=!1;async function l(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),s.A.push("/adminLogin").finally(()=>{i=!1})),o}},76334:function(e,t,o){e.exports=o(11393)},79899:function(e,t,o){"use strict";o(85331)},85970:function(e,t,o){"use strict";o(85331)},86975:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i={key:0,class:"page-footer"},l=["href"];function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return d.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,s.v_)(d.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,a.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,a.eW)(" for You! ",-1)),(0,a.Lk)("a",{href:d.footerLink,target:"_blank"},[(0,a.bF)(c,{icon:"paper-plane",class:"footer-link-icon"})],8,l)])]))}var r=o(60782),d={name:"Footer",computed:{...(0,r.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-08acbaa9"]]);var p=u},88830:function(e,t,o){"use strict";o(85331)},91543:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),s=o(45130),i=o(24232);const l={id:"themeMask"},n=["cx","cy","r"],r=["r"],d=["opacity"];function c(e,t,o,c,u,p){const h=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>p.handleToggleClick&&p.handleToggleClick(...e))},[(0,a.bF)(s.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[u.isAuto?((0,a.uX)(),(0,a.Wv)(h,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:u.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",l,[t[1]||(t[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:u.isDark?"50%":"100%",cy:u.isDark?"23%":"0%",r:u.isDark?"9":"5"},null,8,n)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:u.isDark?"9":"5",mask:"url(#themeMask)"},null,8,r),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:u.isDark?0:1},[...t[2]||(t[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,d)],2))]),_:1})])}var u={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},p=o(71241);const h=(0,p.A)(u,[["render",c],["__scopeId","data-v-66e6a1f0"]]);var m=h},95385:function(e,t,o){"use strict";o(85331)},96682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},96808:function(e,t,o){"use strict";o(85331),o(18785),o(67819),o(85970),o(19104)}}]); -//# sourceMappingURL=870.9e7db652.js.map \ No newline at end of file diff --git a/frontend-dist/js/870.9e7db652.js.gz b/frontend-dist/js/870.9e7db652.js.gz deleted file mode 100644 index 7664fd8bfbbfeee1e1edf985cebabce5582a6513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33560 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 diff --git a/frontend-dist/js/870.9e7db652.js.map b/frontend-dist/js/870.9e7db652.js.map deleted file mode 100644 index a531aa4a..00000000 --- a/frontend-dist/js/870.9e7db652.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/870.9e7db652.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/Logo.vue?a6d2","webpack://sanyue_imghub/./src/components/Logo.vue","webpack://sanyue_imghub/./src/components/Logo.vue?4125","webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?0f8d","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?0f5d","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?9e81","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?0613","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?6707","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?cc0a","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?4482","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js","webpack://sanyue_imghub/./src/components/Footer.vue?4f81","webpack://sanyue_imghub/./src/components/Footer.vue","webpack://sanyue_imghub/./src/components/Footer.vue?d468","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0f43","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce"],"sourcesContent":["import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"href\", \"target\"];\nconst _hoisted_2 = [\"alt\", \"src\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"a\", {\n href: $options.logoHref,\n target: $props.target,\n class: _normalizeClass(_ctx.logo - _ctx.link)\n }, [_createElementVNode(\"img\", {\n class: _normalizeClass($options.logoClasses),\n alt: $props.alt,\n src: $options.logoUrl\n }, null, 10, _hoisted_2)], 10, _hoisted_1);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Logo',\n props: {\n // Logo链接地址(可被用户配置覆盖)\n href: {\n type: String,\n default: 'https://github.com/MarSeventh/CloudFlare-ImgBed'\n },\n // 链接打开方式\n target: {\n type: String,\n default: '_blank',\n // _blank, _self, _parent, _top\n validator: value => ['_blank', '_self', '_parent', '_top'].includes(value)\n },\n // 图片alt文本\n alt: {\n type: String,\n default: 'Sanyue logo'\n },\n // 自定义logo图片URL(可选)\n customSrc: {\n type: String,\n default: ''\n },\n // Logo位置样式\n position: {\n type: String,\n default: 'fixed',\n // fixed, relative, absolute\n validator: value => ['fixed', 'relative', 'absolute', 'static'].includes(value)\n },\n // Logo大小\n size: {\n type: String,\n default: 'normal',\n // small, normal, large\n validator: value => ['small', 'normal', 'large'].includes(value)\n },\n // 是否启用悬停动画\n enableHover: {\n type: Boolean,\n default: true\n },\n // 是否允许使用用户配置的链接(仅上传页面启用)\n useConfigLink: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters(['userConfig']),\n logoUrl() {\n // 优先级:customSrc > 用户配置 > 默认图片\n return this.customSrc || this.userConfig?.logoUrl || require('../assets/logo.png');\n },\n logoHref() {\n // 只有启用 useConfigLink 时才使用用户配置的链接\n if (this.useConfigLink && this.userConfig?.logoLink) {\n return this.userConfig.logoLink;\n }\n return this.href;\n },\n logoClasses() {\n return {\n 'logo': true,\n [`logo--${this.position}`]: true,\n [`logo--${this.size}`]: true,\n 'logo--hover-enabled': this.enableHover\n };\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Logo.vue?vue&type=template&id=17f54292&scoped=true\"\nimport script from \"./Logo.vue?vue&type=script&lang=js\"\nexport * from \"./Logo.vue?vue&type=script&lang=js\"\n\nimport \"./Logo.vue?vue&type=style&index=0&id=17f54292&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17f54292\"]])\n\nexport default __exports__","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t('uploadHistory.title')), 1), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadHistory.totalRecords', {\n count: $data.totalCount\n })), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.switchView'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.clearRecords'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[4] || (_cache[4] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadHistory.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('uploadHistory.pullToLoadMore')), 1))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('uploadHistory.noMoreRecords')), 1)) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('uploadHistory.emptyHistory')), 1)]))], 2);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm(this.$t('uploadHistory.clearConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success(this.$t('uploadHistory.recordsCleared'));\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm(this.$t('uploadHistory.deleteConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success(this.$t('uploadHistory.recordDeleted'));\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success(this.$t('uploadHistory.linkCopied'));\n }).catch(() => {\n this.$message.error(this.$t('uploadHistory.copyFailed'));\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=f70e7770&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=f70e7770&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f70e7770\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-header\"\n};\nconst _hoisted_3 = {\n class: \"section-title\"\n};\nconst _hoisted_4 = {\n class: \"section-content\"\n};\nconst _hoisted_5 = {\n class: \"setting-item\"\n};\nconst _hoisted_6 = {\n class: \"setting-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_8 = {\n class: \"setting-label\"\n};\nconst _hoisted_9 = {\n class: \"setting-item\"\n};\nconst _hoisted_10 = {\n class: \"setting-label\"\n};\nconst _hoisted_11 = {\n class: \"setting-item\"\n};\nconst _hoisted_12 = {\n class: \"setting-label\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"dialog-section\"\n};\nconst _hoisted_18 = {\n class: \"section-header\"\n};\nconst _hoisted_19 = {\n class: \"section-title\"\n};\nconst _hoisted_20 = {\n class: \"section-content\"\n};\nconst _hoisted_21 = {\n class: \"setting-item\"\n};\nconst _hoisted_22 = {\n class: \"setting-label\"\n};\nconst _hoisted_23 = {\n class: \"setting-item\"\n};\nconst _hoisted_24 = {\n class: \"setting-label\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_26 = {\n class: \"setting-label\"\n};\nconst _hoisted_27 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_28 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_30 = {\n class: \"setting-label\"\n};\nconst _hoisted_31 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_32 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_33 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_34 = {\n class: \"section-header\"\n};\nconst _hoisted_35 = {\n class: \"section-title\"\n};\nconst _hoisted_36 = {\n class: \"section-content\"\n};\nconst _hoisted_37 = {\n class: \"setting-item\"\n};\nconst _hoisted_38 = {\n class: \"setting-label\"\n};\nconst _hoisted_39 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('uploadSettings.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadSettings.uploadChannel')), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('uploadSettings.channelType')), 1), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"telegram\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"telegram\",\n class: \"channel-icon channel-brand-telegram\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"cfr2\",\n class: \"channel-icon channel-brand-cfr2\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"s3\",\n class: \"channel-icon channel-brand-s3\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"discord\",\n class: \"channel-icon channel-brand-discord\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"huggingface\",\n class: \"channel-icon channel-brand-huggingface\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"webdav\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"webdav\",\n class: \"channel-icon channel-brand-webdav\"\n }), _cache[18] || (_cache[18] = _createElementVNode(\"span\", null, \"WD\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.channelName')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.channelNameTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\", \"placeholder\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('uploadSettings.uploadDirectory')), 1), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: _ctx.$t('uploadSettings.uploadDirectoryPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\", \"placeholder\"])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.autoSwitch')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.autoSwitchTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('uploadSettings.fileNaming')), 1)]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingDefault')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingIndex')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingOrigin')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingShort')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('uploadSettings.filePreprocess')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.filePreprocessTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.convertToWebp')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.convertToWebpTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('uploadSettings.fileCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.compressThreshold')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.compressThresholdTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createElementVNode(\"span\", _hoisted_30, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.expectedSize')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.expectedSizeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_32, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('uploadSettings.serverCompress')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.serverCompressTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"span\", _hoisted_38, _toDisplayString(_ctx.$t('uploadSettings.enableCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","import ChannelIcon from '@/components/icons/ChannelIcon.vue';\nexport default {\n name: 'UploadSettingsDialog',\n components: {\n ChannelIcon\n },\n methods: {\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=3eb5cfdc\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('uploadForm.copyFailed')\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=3620a174&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=3620a174&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3620a174\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_3 = [\"innerHTML\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_5 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_6 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_7 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_8 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_9 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CameraFilled = _resolveComponent(\"CameraFilled\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[0] || (_cache[0] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_2, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_CameraFilled)]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n innerHTML: _ctx.$t('upload.dragUploadText')\n }, null, 10, _hoisted_3)]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: _ctx.$t('upload.pasteUrlPlaceholder'),\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"placeholder\", \"rows\"]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteUploadBtn')), 1)]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createVNode(_component_el_radio_group, {\n modelValue: $data.pasteUploadMethod,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.pasteUploadMethod = $event),\n class: \"paste-card-method-group\",\n size: $options.pasteCardMethodButtonSize\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"save\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteSave')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"external\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteExternal')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"size\"])])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length,\n 'is-uploading': $data.uploading\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-container\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[4] || (_cache[4] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.retryFailed'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-retry\",\n onClick: _cache[5] || (_cache[5] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.clearList'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearUploaded')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.name,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[7] || (_cache[7] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])], 2)]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n uploadCount: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map() // 存储每个文件的 AbortController\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const fileType = file.file.type || 'application/octet-stream';\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', fileType);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error(this.$t('uploadForm.chunkInitFailed') + ': ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', fileType);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || this.$t('uploadForm.uploadError'));\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.chunkMerging'),\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', fileType);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.deleted', {\n name: this.truncateFilename(file.name)\n })\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.uploadSuccess', {\n name: this.truncateFilename(file.name)\n })\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.fileNotUploaded')\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(this.$t('uploadForm.compressedFileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n const myUploadCount = this.uploadCount++;\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n if (myUploadCount === 0) {\n pushFileToQueue(newFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(newFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n }).catch(err => {\n this.$message.error(this.$t('uploadForm.compressFailedCannotUpload', {\n name: processedFile.name\n }));\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n const myUploadCount = this.uploadCount++;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n if (myUploadCount === 0) {\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(processedFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n } else {\n this.$message.error(this.$t('uploadForm.fileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copyAllSuccess')\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.fileListCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.fileListEmpty')\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.successFilesCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.successFilesEmpty')\n });\n }\n },\n handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const items = event.clipboardData.items;\n if (items.length > 0) {\n this.uploadFromUrl(items);\n }\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n // 允许上传任意类型的文件\n file.uid = Date.now() + i;\n //接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.urlRequestFailed')\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n this.retryFailedFiles(this.exceptionList);\n this.exceptionList = [];\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.noFailedFiles')\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? this.$t('uploadForm.autoRetryOn') : this.$t('uploadForm.autoRetryOff')\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files) {\n files.forEach(file => {\n const retryCount = file.retryCount || 0;\n if (retryCount < this.maxRetryCount) {\n file.retryCount = retryCount + 1;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.maxRetryReached', {\n name: file.name,\n max: this.maxRetryCount\n })\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: this.uploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error(this.$t('uploadForm.imageLoadFailed')));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=f81fd314&scoped=true\"\nimport script from \"./UploadForm.vue?vue&type=script&lang=js\"\nexport * from \"./UploadForm.vue?vue&type=script&lang=js\"\n\nimport \"./UploadForm.vue?vue&type=style&index=0&id=f81fd314&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f81fd314\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-suggestion-input\",\n ref: \"wrapperRef\"\n};\nconst _hoisted_2 = {\n class: \"suggestion-dropdown\"\n};\nconst _hoisted_3 = {\n class: \"suggestion-list\"\n};\nconst _hoisted_4 = [\"title\", \"onMousedown\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_input, {\n ref: \"inputRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n placeholder: $props.placeholder,\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onInput: $options.handleInput\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onInput\"]), _withDirectives(_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"ul\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, (item, index) => {\n return _openBlock(), _createElementBlock(\"li\", {\n key: index,\n class: \"suggestion-item\",\n title: item.value,\n onMousedown: _withModifiers($event => $options.selectItem(item), [\"prevent\"])\n }, _toDisplayString(item.value), 41, _hoisted_4);\n }), 128))])], 512), [[_vShow, $data.dropdownVisible && $data.suggestions.length > 0]])], 512);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n dropdownVisible: false,\n isFocused: false,\n suggestions: []\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n watch: {\n modelValue() {\n // 外部修改 modelValue 时也刷新建议\n if (this.isFocused) {\n this.refreshSuggestions();\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n setTimeout(() => {\n if (this.isFocused) {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n }\n }, 500);\n },\n handleBlur() {\n this.isFocused = false;\n this.dropdownVisible = false;\n this.$emit('blur');\n },\n handleInput(val) {\n // val 是 el-input @input 事件传来的最新值\n this.$nextTick(() => {\n this.refreshSuggestions();\n if (this.isFocused) {\n this.dropdownVisible = true;\n }\n });\n },\n selectItem(item) {\n const path = item.value;\n this.inputValue = path;\n this.$emit('select', path);\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n this.$nextTick(() => {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n this.$refs.inputRef?.focus();\n });\n } else {\n this.dropdownVisible = false;\n }\n },\n refreshSuggestions() {\n this.suggestions = this.getDirectorySuggestions(this.modelValue || '');\n },\n normalizeDirectoryPath(path) {\n if (!path) return '/';\n let normalized = path;\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized !== '/' && !normalized.endsWith('/')) normalized += '/';\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) return;\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n return parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=28b8eda7&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=28b8eda7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-28b8eda7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n class: \"quick-toolbar-actions\"\n};\nconst _hoisted_4 = {\n class: \"quick-toolbar-actions-inner\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"title-crayon-text\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_8 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-header\"\n};\nconst _hoisted_11 = {\n class: \"section-title\"\n};\nconst _hoisted_12 = {\n class: \"section-content\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"setting-item\"\n};\nconst _hoisted_18 = {\n class: \"setting-label\"\n};\nconst _hoisted_19 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_20 = {\n class: \"setting-label\"\n};\nconst _hoisted_21 = {\n class: \"dialog-action\"\n};\nconst _hoisted_22 = [\"innerHTML\"];\nconst _hoisted_23 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_dropdown, {\n class: \"more-dropdown desktop-only\",\n trigger: \"click\",\n onCommand: $options.handleDesktopMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('upload.switchUploadMethod'),\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\", \"disabled\"]), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? _ctx.$t('upload.pasteUpload') : _ctx.$t('upload.fileUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quick-toolbar\", {\n 'is-expanded': $data.isQuickToolbarOpen\n }]),\n onMouseleave: _cache[5] || (_cache[5] = (...args) => $options.handleQuickToolbarLeave && $options.handleQuickToolbarLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.logout'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleQuickToolbarCommand('logout'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.manage'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleQuickToolbarCommand('manage'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleQuickToolbarCommand('linkFormat'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: $options.openCompressDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_button, {\n class: _normalizeClass([\"quick-toolbar-button quick-toolbar-more\", {\n 'is-active': $data.isQuickToolbarOpen\n }]),\n \"aria-expanded\": $data.isQuickToolbarOpen,\n onMouseenter: $options.handleQuickToolbarMoreEnter,\n onClick: $options.toggleQuickToolbar\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"quick-toolbar-icon quick-toolbar-toggle-icon\"\n })]),\n _: 1\n }, 8, [\"class\", \"aria-expanded\", \"onMouseenter\", \"onClick\"])], 34), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString($options.ownerName) + \" ImgHub\", 1), _createElementVNode(\"a\", _hoisted_8, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub \", -1))])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('settings.linkFormatTitle'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [_createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_21, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[9] || (_cache[9] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[12] || (_cache[12] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[13] || (_cache[13] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[14] || (_cache[14] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[15] || (_cache[15] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[16] || (_cache[16] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[17] || (_cache[17] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[18] || (_cache[18] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[19] || (_cache[19] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[20] || (_cache[20] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[21] || (_cache[21] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: _ctx.$t('upload.announcementTitle'),\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_23, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.acknowledgeAnnouncement\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_22)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[23] || (_cache[23] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { setLocale } from '@/locales';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n isQuickToolbarOpen: false,\n isQuickToolbarPinned: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n displayedAnnouncementRefreshAt: null,\n // 当前弹窗所展示的公告版本\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', true, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n this.showAnnouncementIfNeeded();\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n this.$message.error(result.error);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n axios.post('/api/auth/logout', {\n authType: 'user'\n }, {\n withCredentials: true\n }).finally(() => {\n this.$store.commit('setUserLoggedIn', false);\n this.$router.push('/login');\n this.$message.success(this.$t('upload.logoutSuccess'));\n });\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleQuickToolbarMoreEnter() {\n this.isQuickToolbarOpen = true;\n },\n handleQuickToolbarLeave() {\n if (!this.isQuickToolbarPinned) {\n this.isQuickToolbarOpen = false;\n }\n },\n toggleQuickToolbar() {\n this.isQuickToolbarPinned = !this.isQuickToolbarPinned;\n this.isQuickToolbarOpen = this.isQuickToolbarPinned;\n },\n closeQuickToolbar() {\n this.isQuickToolbarPinned = false;\n this.isQuickToolbarOpen = false;\n },\n handleQuickToolbarCommand(command) {\n this.closeQuickToolbar();\n if (command === 'linkFormat') {\n this.openUrlDialog();\n } else if (command === 'manage') {\n this.handleManage();\n } else if (command === 'logout') {\n this.handleLogout();\n }\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n handleDesktopMenuCommand(command) {\n if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return this.$t('theme.lightMode');\n if (this.themeMode === 'light') return this.$t('theme.darkMode');\n return this.$t('theme.autoMode');\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.openAnnouncement(announcement);\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\n },\n getAnnouncementRefreshAt() {\n const refreshAt = Number(this.userConfig?.announcementRefreshAt);\n return Number.isFinite(refreshAt) && refreshAt > 0 ? refreshAt : null;\n },\n openAnnouncement(announcement) {\n this.announcementContent = announcement;\n this.displayedAnnouncementRefreshAt = this.getAnnouncementRefreshAt();\n this.showAnnouncementDialog = true;\n },\n showAnnouncementIfNeeded() {\n const announcement = this.userConfig?.announcement;\n if (!announcement) return;\n const refreshAt = this.getAnnouncementRefreshAt();\n if (refreshAt) {\n const acknowledgedRefreshAt = Number(localStorage.getItem('announcementAcknowledgedRefreshAt'));\n if (!Number.isFinite(acknowledgedRefreshAt) || refreshAt > acknowledgedRefreshAt) {\n this.openAnnouncement(announcement);\n }\n return;\n }\n\n // 尚未产生刷新时间的旧公告在升级后再展示一次,确认后使用新版时间标记。\n if (!localStorage.getItem('announcementAcknowledgedAt')) {\n this.openAnnouncement(announcement);\n }\n },\n acknowledgeAnnouncement() {\n localStorage.setItem('announcementAcknowledgedAt', String(Date.now()));\n if (this.displayedAnnouncementRefreshAt) {\n localStorage.setItem('announcementAcknowledgedRefreshAt', String(this.displayedAnnouncementRefreshAt));\n }\n this.showAnnouncementDialog = false;\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=579106c0&scoped=true\"\nimport script from \"./UploadHome.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHome.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHome.vue?vue&type=style&index=0&id=579106c0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-579106c0\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: \"channel-icon-wrapper\"\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=33933ada&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=33933ada&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-33933ada\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"page-footer\"\n};\nconst _hoisted_2 = [\"href\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return !$options.disableFooter ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"p\", null, [_createTextVNode(\"© 2024-\" + _toDisplayString($options.thisYear) + \" Designed by \", 1), _cache[0] || (_cache[0] = _createElementVNode(\"a\", {\n class: \"footer-name\",\n href: \"https://github.com/MarSeventh\",\n target: \"_blank\"\n }, \"SanyueQi\", -1)), _cache[1] || (_cache[1] = _createTextVNode(\" for You! \", -1)), _createElementVNode(\"a\", {\n href: $options.footerLink,\n target: \"_blank\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"footer-link-icon\"\n })], 8, _hoisted_2)])])) : _createCommentVNode(\"\", true);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Footer',\n computed: {\n ...mapGetters(['userConfig']),\n footerLink() {\n return this.userConfig?.footerLink || 'https://github.com/MarSeventh';\n },\n thisYear() {\n return new Date().getFullYear();\n },\n disableFooter() {\n return this.userConfig?.disableFooter || false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Footer.vue?vue&type=template&id=08acbaa9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=08acbaa9&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08acbaa9\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=66e6a1f0&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=66e6a1f0&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66e6a1f0\"]])\n\nexport default __exports__"],"names":["_hoisted_1","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","href","logoHref","target","class","logo","link","logoClasses","alt","src","logoUrl","name","props","type","String","default","validator","value","includes","customSrc","position","size","enableHover","Boolean","useConfigLink","computed","this","userConfig","logoLink","__exports__","t","e","module","exports","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","bind","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","Image","onload","onerror","Error","document","createElement","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","accuracy","filter","sort","abs","pow","v","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","key","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_font_awesome_icon","_component_el_button","_component_el_tooltip","show","$t","count","totalCount","content","placement","circle","onClick","toggleViewMode","icon","viewMode","_","clearHistory","$event","$emit","historyList","ref","onScroll","args","handleScroll","groupedHistory","group","date","items","item","time","isImage","url","loading","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","title","formatTime","hasMore","loadingMore","spin","data","allHistory","pageSize","currentPage","watch","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","push","keys","map","mounted","savedMode","localStorage","getItem","methods","loadAllHistory","loadMore","history","JSON","parse","console","error","setTimeout","start","end","newItems","slice","container","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_component_ChannelIcon","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","modelValue","visible","dialogWidth","uploadChannel","label","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","components","ChannelIcon","startsWith","Array","emits","set","innerWidth","style","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","file","truncated","truncateFilename","status","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","_component_CameraFilled","_component_el_upload","_component_el_radio_button","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","innerHTML","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","disabled","disableTooltip","copyAll","dropdown","autoReUpload","onChange","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","x","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","fill","view","DataView","setUint32","floor","hex","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","uploadCount","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","$nextTick","$refs","scrollContainer","setScrollTop","deep","immediate","$store","commit","location","protocol","host","addEventListener","handlePaste","storeAutoReUpload","beforeUnmount","removeEventListener","find","uid","waitingItem","uploadingItem","fileItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","abortController","AbortController","formData","FormData","append","err","axios","encodeURIComponent","method","withAuthCode","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","onProgress","percent","res","code","response","finally","delete","fileSize","fileType","totalChunks","ceil","precomputedSha256","initFormData","initResponse","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","warn","resolve","pool","currentIndex","all","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","replace","saveToHistory","newRecord","scheduleAutoRetry","reject","processedFile","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","File","myUploadCount","join","controller","clear","tagName","clipboardData","uploadFromUrl","validUrls","trim","test","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","ok","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","index","undefined","etag","partNumber","progress","completeResponse","oid","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","opacity","beforeDestroy","inputValue","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","suggestions","onMousedown","selectItem","dropdownVisible","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","refreshSuggestions","ensureDirectoryTreeLoaded","path","normalizedPath","normalizeDirectoryPath","children","inputRef","focus","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","node","parentPath","isArray","child","tree","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","queryString","parentChildren","keyword","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","trigger","onCommand","handleDesktopMenuCommand","command","announcementAvailable","$i18n","locale","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","onSelect","handleDirectorySelect","source","handleChangeUploadMethod","handleMobileMenuCommand","getThemeIcon","getThemeText","isQuickToolbarOpen","handleQuickToolbarLeave","handleQuickToolbarCommand","openCompressDialog","onMouseenter","handleQuickToolbarMoreEnter","toggleQuickToolbar","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","acknowledgeAnnouncement","announcementContent","showHistory","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","isQuickToolbarPinned","displayedAnnouncementRefreshAt","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","strict","valid","storeUploadFolder","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","getters","useDarkMode","showAnnouncementIfNeeded","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","handleManage","$router","defaultValue","num","parseFloat","openUrlDialog","handleLogout","authType","withCredentials","closeQuickToolbar","handleShowAnnouncement","openAnnouncement","info","getAnnouncementRefreshAt","refreshAt","announcementRefreshAt","isFinite","acknowledgedRefreshAt","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","popoverVisible","transition","reference","$slots","fetchDirectoryTree","treeData","treeProps","currentDirectory","onNodeClick","handleNodeClick","expanded","openDrawer","drawerVisible","direction","windowWidth","newVal","treeRef","store","nodesMap","treeRefMobile","setCurrentKey","handleResize","fetchWithAuth","json","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","oldVal","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","getElementById","id","textContent","head","existingStyle","remove","createBackgroundElements","bg1","className","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","dispatch","bingWallPapers","loadBackgroundImage","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","zoomDuration","transformOrigin","computedStyle","getComputedStyle","isolation","isBg1Current","curBg","nextBg","nextUrl","clearBackgroundInterval","reinitializeBackground","currentBg","newThemeImage","preloadImg","viewBox","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord","validateFolderPath","i18n","global","dotPattern","invalidChars","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink","handleToggleClick","mode","isAuto","stroke","cx","cy","mask","x1","y1","x2","y2"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/870.9e7db652.js.map.gz b/frontend-dist/js/870.9e7db652.js.map.gz deleted file mode 100644 index 32b88177d01134eb9b79f1f88f5ac65ef3aca2a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85084 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.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",u,[w.error?((0,l.uX)(),(0,l.CE)("div",f,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",m,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",p,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,w.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>_.openDrawer&&_.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)($,{modelValue:w.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>w.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",g,[w.error?((0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",v,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,w.loading]])]),_:1},8,["modelValue","title"])],64))])}var w=a(457),_=a(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,_.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await w.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},C=a(71241);const T=(0,C.A)(F,[["render",y],["__scopeId","data-v-62eab69a"]]);var S=T},34396:function(e,t,a){"use strict";a(85331),a(4885)},34896:function(e,t,a){"use strict";a(85331)},37952:function(e,t,a){"use strict";a(85331),a(97197)},40670:function(e,t,a){"use strict";a(85331),a(99648),a(19104),a(85970)},44813:function(e,t,a){a(44114),a(18111),a(22489),a(7588),a(79577),a(41549),a(49797),a(49631),a(35623),a(59848),function(t){e.exports=t()}(function(){return function e(t,a,i){function n(r,o){if(!a[r]){if(!t[r]){var l=void 0;if(!o&&l)return require(r,!0);if(s)return s(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var c=a[r]={exports:{}};t[r][0].call(c.exports,function(e){var a=t[r][1][e];return n(a||e)},c,c.exports,e,t,a,i)}return a[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|a>>4,l=1>6:64,d=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(d++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(d++))),u[c++]=t,64!==o&&(u[c++]=a),64!==l&&(u[c++]=i);return u}},{"./support":30,"./utils":32}],2:[function(e,t,a){"use strict";var i=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,a,i,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=a,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new r("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,a){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(a)).pipe(new r("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,a){"use strict";var i=e("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},a.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,a){"use strict";var i=e("./utils"),n=function(){for(var e,t=[],a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==i.getTypeOf(e)?function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,a){"use strict";a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(e,t,a){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:i}},{lie:37}],7:[function(e,t,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=i?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}a.magic="\b\0",s.inherits(l,r),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},l.prototype.flush=function(){r.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},a.compressWorker=function(e){return new l("Deflate",e)},a.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,a){"use strict";function i(e,t){var a,i="";for(a=0;a>>=8;return i}function n(e,t,a,n,r,c){var h,u,f=e.file,m=e.compression,p=c!==o.utf8encode,g=s.transformTo("string",c(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",c(v)),y=s.transformTo("string",o.utf8encode(v)),w=b.length!==f.name.length,_=y.length!==v.length,F="",C="",T="",S=f.dir,$=f.date,L={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(L.crc32=e.crc32,L.compressedSize=e.compressedSize,L.uncompressedSize=e.uncompressedSize);var x=0;t&&(x|=8),p||!w&&!_||(x|=2048);var D=0,E=0;S&&(D|=16),"UNIX"===r?(E=798,D|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,S)):(E=20,D|=function(e){return 63&(e||0)}(f.dosPermissions)),h=$.getUTCHours(),h<<=6,h|=$.getUTCMinutes(),h<<=5,h|=$.getUTCSeconds()/2,u=$.getUTCFullYear()-1980,u<<=4,u|=$.getUTCMonth()+1,u<<=5,u|=$.getUTCDate(),w&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),_&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var A="";return A+="\n\0",A+=i(x,2),A+=m.magic,A+=i(h,2),A+=i(u,2),A+=i(L.crc32,4),A+=i(L.compressedSize,4),A+=i(L.uncompressedSize,4),A+=i(g.length,2),A+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+A+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(E,2)+A+i(k.length,2)+"\0\0\0\0"+i(D,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),d=e("../signature");function c(e,t,a,i){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=a,this.encodeFileName=i,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,r),c.prototype.push=function(e){var t=e.meta.percent||0,a=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:a?(t+100*(a-i-1))/a:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var a=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:a.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,a=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(a.dirRecord),t)this.push({data:function(e){return d.DATA_DESCRIPTOR+i(e.crc32,4)+i(e.compressedSize,4)+i(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:a.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)a=(a<<8)+this.byteAt(t);return this.index+=e,a},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,a){"use strict";var i=e("./Uint8ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,a){"use strict";var i=e("./DataReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,a){"use strict";var i=e("./ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,a){"use strict";var i=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=i.getTypeOf(e);return i.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(i.transformTo("uint8array",e)):new s(i.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,a){"use strict";a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../utils");function s(e){i.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,i),s.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,i),s.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}i.inherits(s,n),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}n.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=i.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,a){"use strict";function i(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var a=0;a "+e:e}},t.exports=i},{}],29:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./ConvertWorker"),s=e("./GenericWorker"),r=e("../base64"),o=e("../support"),l=e("../external"),d=null;if(o.nodestream)try{d=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,d=e._mimeType;e.on("data",function(e,a){s.push(e),t&&t(a)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,a){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),a);case"base64":return r.encode(t);default:return i.transformTo(e,t)}}(l,function(e,t){var a,i=0,n=null,s=0;for(a=0;a>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t}(e)},a.utf8decode=function(e){return n.nodebuffer?i.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,a,n,s,r=e.length,l=new Array(2*r);for(t=a=0;t>10&1023,l[a++]=56320|1023&n)}return l.length!==a&&(l.subarray?l=l.subarray(0,a):l.length=a),i.applyFromCharCode(l)}(e=i.transformTo(n.uint8array?"uint8array":"array",e))},i.inherits(d,r),d.prototype.processChunk=function(e){var t=i.transformTo(n.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var r=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+o[e[a]]>t?a:t}(t),l=t;r!==t.length&&(n.uint8array?(l=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(l=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:a.utf8decode(l),meta:e.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=d,i.inherits(c,r),c.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var i=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var a=0;a>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,a,i,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t},a.buf2binstring=function(e){return l(e,e.length)},a.binstring2buf=function(e){for(var t=new i.Buf8(e.length),a=0,n=t.length;a>10&1023,d[i++]=56320|1023&n)}return l(d,i)},a.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+r[e[a]]>t?a:t}},{"./common":41}],43:[function(e,t,a){"use strict";t.exports=function(e,t,a,i){for(var n=65535&e,s=e>>>16&65535,r=0;0!==a;){for(a-=r=2e3>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t,a,n){var s=i,r=n+a;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,a){"use strict";var i,n=e("../utils/common"),s=e("./trees"),r=e("./adler32"),o=e("./crc32"),l=e("./messages"),d=0,c=4,h=0,u=-2,f=-1,m=4,p=2,g=8,b=9,v=286,k=30,y=19,w=2*v+1,_=15,F=3,C=258,T=C+F+1,S=42,$=113,L=1,x=2,D=3,E=4;function A(e,t){return e.msg=l[t],t}function I(e){return(e<<1)-(4e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function P(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,U(e.strm)}function B(e,t){e.pending_buf[e.pending++]=t}function W(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function R(e,t){var a,i,n=e.max_chain_length,s=e.strstart,r=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,d=e.window,c=e.w_mask,h=e.prev,u=e.strstart+C,f=d[s+r-1],m=d[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(d[(a=t)+r]===m&&d[a+r-1]===f&&d[a]===d[s]&&d[++a]===d[s+1]){s+=2,a++;do{}while(d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function O(e){var t,a,i,s,l,d,c,h,u,f,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-T)){for(n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=a=e.hash_size;i=e.head[--t],e.head[t]=m<=i?i-m:0,--a;);for(t=a=m;i=e.prev[--t],e.prev[t]=m<=i?i-m:0,--a;);s+=m}if(0===e.strm.avail_in)break;if(d=e.strm,c=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=d.avail_in,u=F)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F)if(i=s._tr_tally(e,e.strstart-e.match_start,e.match_length-F),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=F){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F&&e.match_length<=e.prev_length){for(n=e.strstart+e.lookahead-F,i=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=n&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(O(e),0===e.lookahead&&t===d)return L;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,P(e,!1),0===e.strm.avail_out))return L;if(e.strstart-e.block_start>=e.w_size-T&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):(e.strstart>e.block_start&&(P(e,!1),e.strm.avail_out),L)}),new V(4,4,8,4,M),new V(4,5,16,8,M),new V(4,6,32,32,M),new V(4,4,16,16,N),new V(8,16,32,32,N),new V(8,16,128,128,N),new V(8,32,128,256,N),new V(32,128,258,1024,N),new V(32,258,258,4096,N)],a.deflateInit=function(e,t){return Z(e,t,g,15,8,0)},a.deflateInit2=Z,a.deflateReset=K,a.deflateResetKeep=j,a.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},a.deflate=function(e,t){var a,n,r,l;if(!e||!e.state||5>8&255),B(n,n.gzhead.time>>16&255),B(n,n.gzhead.time>>24&255),B(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),B(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(B(n,255&n.gzhead.extra.length),B(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=o(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(B(n,0),B(n,0),B(n,0),B(n,0),B(n,0),B(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),B(n,3),n.status=$);else{var f=g+(n.w_bits-8<<4)<<8;f|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(f|=32),f+=31-f%31,n.status=$,W(n,f),0!==n.strstart&&(W(n,e.adler>>>16),W(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending!==n.pending_buf_size));)B(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&U(e),n.pending+2<=n.pending_buf_size&&(B(n,255&e.adler),B(n,e.adler>>8&255),e.adler=0,n.status=$)):n.status=$),0!==n.pending){if(U(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&I(t)<=I(a)&&t!==c)return A(e,-5);if(666===n.status&&0!==e.avail_in)return A(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(O(e),0===e.lookahead)){if(t===d)return L;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:x}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(O(e),e.lookahead<=C&&t===d)return L;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=F&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=F?(a=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:x}(n,t):i[n.level].func(n,t);if(m!==D&&m!==E||(n.status=666),m===L||m===D)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===x&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),U(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(B(n,255&e.adler),B(n,e.adler>>8&255),B(n,e.adler>>16&255),B(n,e.adler>>24&255),B(n,255&e.total_in),B(n,e.total_in>>8&255),B(n,e.total_in>>16&255),B(n,e.total_in>>24&255)):(W(n,e.adler>>>16),W(n,65535&e.adler)),U(e),0=a.w_size&&(0===o&&(z(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,t,m-a.w_size,a.w_size,0),t=f,m=a.w_size),l=e.avail_in,d=e.next_in,c=e.input,e.avail_in=m,e.next_in=0,e.input=t,O(a);a.lookahead>=F;){for(i=a.strstart,s=a.lookahead-(F-1);a.ins_h=(a.ins_h<>>=y=k>>>24,m-=y,0===(y=k>>>16&255))S[s++]=65535&k;else{if(!(16&y)){if(0==(64&y)){k=p[(65535&k)+(f&(1<>>=y,m-=y),m<15&&(f+=T[i++]<>>=y=k>>>24,m-=y,!(16&(y=k>>>16&255))){if(0==(64&y)){k=g[(65535&k)+(f&(1<>>=y,m-=y,(y=s-r)<_){if(c<(y=_-y)&&a.sane){e.msg="invalid distance too far back",a.mode=30;break e}if(C=u,(F=0)===h){if(F+=d-y,y>3,f&=(1<<(m-=w<<3))-1,e.next_in=i,e.next_out=s,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function b(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=u,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(f),t.distcode=t.distdyn=new i.Buf32(m),t.sane=1,t.back=-1,c):h}function v(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,b(e)):h}function k(e,t){var a,i;return e&&e.state?(i=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(i.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),i.arraySet(r.window,t,a-n,s,r.wnext),(n-=s)?(i.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=s(a.check,O,2,0),w=y=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",a.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",a.mode=30;break}if(w-=4,U=8+(15&(y>>>=4)),0===a.wbits)a.wbits=U;else if(U>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=3;case 3:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),w=y=0,a.mode=4;case 4:for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=5;case 5:if(1024&a.flags){for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>>8&255,a.check=s(a.check,O,2,0)),w=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(S=a.length)&&(S=v),S&&(a.head&&(U=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,S,U)),512&a.flags&&(a.check=s(a.check,f,S,g)),v-=S,g+=S,a.length-=S),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(S=0;U=f[g+S++],a.head&&U&&a.length<65536&&(a.head.name+=String.fromCharCode(U)),U&&S>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>=7&w,w-=7&w,a.mode=27;break}for(;w<3;){if(0===v)break e;v--,y+=f[g++]<>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,w-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,w-=2;break;case 14:for(y>>>=7&w,w-=7&w;w<32;){if(0===v)break e;v--,y+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,w=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if(S=a.length){if(v>>=5,w-=5,a.ndist=1+(31&y),y>>>=5,w-=5,a.ncode=4+(15&y),y>>>=4,w-=4,286>>=3,w-=3}for(;a.have<19;)a.lens[M[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,B={bits:a.lenbits},P=o(0,a.lens,0,19,a.lencode,0,a.work,B),a.lenbits=B.bits,P){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=x,w-=x,a.lens[a.have++]=E;else{if(16===E){for(W=x+2;w>>=x,w-=x,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}U=a.lens[a.have-1],S=3+(3&y),y>>>=2,w-=2}else if(17===E){for(W=x+3;w>>=x)),y>>>=3,w-=3}else{for(W=x+7;w>>=x)),y>>>=7,w-=7}if(a.have+S>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;S--;)a.lens[a.have++]=U}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,B={bits:a.lenbits},P=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,B),a.lenbits=B.bits,P){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,B={bits:a.distbits},P=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,B),a.distbits=B.bits,P){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(6<=v&&258<=k){e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=w,r(e,F),b=e.next_out,m=e.output,k=e.avail_out,g=e.next_in,f=e.input,v=e.avail_in,y=a.hold,w=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;D=(R=a.lencode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,a.length=E,0===D){a.mode=26;break}if(32&D){a.back=-1,a.mode=12;break}if(64&D){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&D,a.mode=22;case 22:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;D=(R=a.distcode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,64&D){e.msg="invalid distance code",a.mode=30;break}a.offset=E,a.extra=15&D,a.mode=24;case 24:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===k)break e;if(S=F-k,a.offset>S){if((S=a.offset-S)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}$=S>a.wnext?(S-=a.wnext,a.wsize-S):a.wnext-S,S>a.length&&(S=a.length),L=a.window}else L=m,$=b-a.offset,S=a.length;for(kv?(y=B[W+h[C]],I[z+h[C]]):(y=96,0),f=1<>x)+(m-=f)]=k<<24|y<<16|w,0!==m;);for(f=1<>=1;if(0!==f?(A&=f-1,A+=f):A=0,C++,0==--U[F]){if(F===S)break;F=t[a+h[C]]}if($>>7)]}function B(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function W(e,t,a){e.bi_valid>p-a?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=a-p):(e.bi_buf|=t<>>=1,a<<=1,0<--t;);return a>>>1}function M(e,t,a){var i,n,s=new Array(m+1),r=0;for(i=1;i<=m;i++)s[i]=r=r+a[i-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=O(s[o]++,o))}}function N(e){var t;for(t=0;t>1;1<=a;a--)j(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j(e,s,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,s[2*n]=s[2*a]+s[2*i],e.depth[n]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,s[2*a+1]=s[2*i+1]=n,e.heap[1]=n++,j(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var a,i,n,s,r,o,l=t.dyn_tree,d=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,g=t.stat_desc.max_length,b=0;for(s=0;s<=m;s++)e.bl_count[s]=0;for(l[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a>=7;i>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=a+5,a+4<=r&&-1!==t?Q(e,t,a,i):4===e.strategy||o===r?(W(e,2+(i?1:0),3),K(e,T,S)):(W(e,4+(i?1:0),3),function(e,t,a,i){var n;for(W(e,t-257,5),W(e,a-1,5),W(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*(L[a]+d+1)]++,e.dyn_dtree[2*P(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){W(e,2,3),R(e,b,T),function(e){16===e.bi_valid?(B(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,a){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,i){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var a,i,n,s,r=1,o={},l=!1,d=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,a="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?(s="setImmediate$"+Math.random()+"$",e.addEventListener?e.addEventListener("message",f,!1):e.attachEvent("onmessage",f),function(t){e.postMessage(s+t,"*")}):e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){u(e.data)},function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,function(e){var t=d.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;iA.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(U,{onClick:A.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",f,[(0,c.Lk)("div",m,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},{prepend:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.targetDirectory")),1)]),_:1},8,["modelValue","placeholder"]),(0,c.bF)(P,{"current-directory":a.currentDirectory,source:"admin",onSelect:A.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(U,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])]),(0,c.Lk)("p",p,(0,h.v_)(e.$t("moveFile.hint")),1)])]),_:1},8,["modelValue","title","onClose"])):((0,c.uX)(),(0,c.Wv)(R,{key:1,modelValue:A.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",x,[(0,c.bF)(U,{onClick:A.handleClose,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",b,[(0,c.Lk)("div",v,[(0,c.Lk)("div",k,(0,h.v_)(e.$t("moveFile.targetDirectory")),1),(0,c.Lk)("div",y,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(U,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>E.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",w,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),E.showTreePicker?((0,c.uX)(),(0,c.CE)("div",_,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(U,{text:"",onClick:t[4]||(t[4]=e=>E.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[E.treeError?((0,c.uX)(),(0,c.CE)("div",S,[(0,c.bF)(z,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",$,(0,h.v_)(E.treeError),1),(0,c.bF)(U,{type:"primary",size:"small",onClick:A.fetchDirectoryTree},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.retry")),1)]),_:1},8,["onClick"])])):((0,c.uX)(),(0,c.Wv)(W,{key:1,ref:"treeRef",data:E.treeData,props:E.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:A.handleTreeNodeClick},{default:(0,c.k6)(({node:e,data:t})=>[(0,c.Lk)("span",{class:(0,h.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,c.bF)(z,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",L,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,E.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var E=a(70797),A={name:"MoveFileDialog",components:{DirectoryTreePicker:o.A},props:{modelValue:{type:Boolean,default:!1},currentDirectory:{type:String,default:""},isBatchMove:{type:Boolean,default:!1},initialPath:{type:String,default:"/"}},emits:["update:modelValue","confirm","close"],data(){return{targetPath:"/",loading:!1,windowWidth:window.innerWidth,showTreePicker:!1,treeData:[],treeLoading:!1,treeError:"",treeProps:{children:"children",label:"name"}}},computed:{dialogVisible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},isDesktop(){return this.windowWidth>768}},watch:{modelValue(e){e&&(this.targetPath=this.initialPath||"/",this.showTreePicker=!1)},showTreePicker(e){e&&!this.isDesktop&&this.fetchDirectoryTree()}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},handleDirectorySelect(e){this.targetPath=e},handleConfirm(){this.$emit("confirm",this.targetPath)},handleClose(){this.$emit("update:modelValue",!1),this.$emit("close")},async fetchDirectoryTree(){this.treeLoading=!0,this.treeError="";try{const e=await(0,E.A)("/api/directoryTree",{method:"GET"});if(!e.ok)return void(401===e.status?this.treeError=this.$t("moveFile.authFailed"):this.treeError=this.$t("moveFile.serverError"));const t=await e.json();t.tree?this.treeData=[t.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),this.treeError=this.$t("moveFile.loadTreeFailed")}finally{this.treeLoading=!1}},handleTreeNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.targetPath=t,this.showTreePicker=!1}}},I=a(71241);const z=(0,I.A)(A,[["render",D],["__scopeId","data-v-7aaa437c"]]);var U=z,P=a(45130);const B={class:"mobile-drawer-header"},W={class:"mobile-drawer-title"},R={class:"mobile-drawer-content"},O=["onClick"];function M(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(P.eB,{name:"drawer-slide"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,P.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",B,[(0,c.Lk)("span",W,(0,h.v_)(e.$t("mobileDirectory.title")),1),(0,c.bF)(r,{icon:"times",class:"mobile-drawer-close",onClick:s.close},null,8,["onClick"])]),(0,c.Lk)("div",R,[(0,c.Lk)("div",{class:(0,h.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>s.navigate(""))},[(0,c.bF)(r,{icon:"home",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.rootDirectory")),1)],2),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.pathParts,(e,t)=>((0,c.uX)(),(0,c.CE)("div",{key:t,class:(0,h.C4)(["mobile-drawer-item",{active:t===s.pathParts.length-1}]),style:(0,h.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>s.navigate(s.pathParts.slice(0,t+1).join("/"))},[(0,c.bF)(r,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],14,O))),128)),a.currentPath?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>s.goBack&&s.goBack(...e))},[(0,c.bF)(r,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.goBack")),1)])):(0,c.Q3)("",!0)])])])):(0,c.Q3)("",!0)]),_:1})])}a(18111),a(22489);var N={name:"MobileDirectoryDrawer",props:{modelValue:{type:Boolean,default:!1},currentPath:{type:String,default:""}},emits:["update:modelValue","navigate","goBack"],computed:{pathParts(){return this.currentPath.split("/").filter(Boolean)}},methods:{close(){this.$emit("update:modelValue",!1)},navigate(e){this.$emit("navigate",e),this.close()},goBack(){this.$emit("goBack"),this.close()}}};const V=(0,I.A)(N,[["render",M],["__scopeId","data-v-3b79a1b6"]]);var X=V;const j={class:"bottom-sheet-header"},K={class:"bottom-sheet-title"},Z={class:"bottom-sheet-content"};function G(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(P.eB,{name:"bottom-sheet"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,P.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",j,[t[10]||(t[10]=(0,c.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,c.Lk)("span",K,(0,h.v_)(a.title),1)]),(0,c.Lk)("div",Z,[a.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>s.handleAction("folderCopy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFolder")),1)])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>s.handleAction("detail"))},[(0,c.bF)(r,{icon:"info-circle",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.viewDetail")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>s.handleAction("copy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>s.handleAction("download"))},[(0,c.bF)(r,{icon:"download",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.downloadFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>s.handleAction("tag"))},[(0,c.bF)(r,{icon:"tags",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.tagManagement")),1)])],64)),(0,c.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>s.handleAction("delete"))},[(0,c.bF)(r,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(a.isFolder?e.$t("mobileAction.deleteFolder"):e.$t("mobileAction.deleteFile")),1)])])])])):(0,c.Q3)("",!0)]),_:1})])}var H={name:"MobileActionSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},isFolder:{type:Boolean,default:!1}},emits:["update:modelValue","action"],methods:{close(){this.$emit("update:modelValue",!1)},handleAction(e){this.$emit("action",e),this.close()}}};const q=(0,I.A)(H,[["render",G],["__scopeId","data-v-efef5a4c"]]);var Q=q,Y=a(4275),J=a(89559),ee=a(12687);a(18785);const te={class:"batch-tag-container"},ae={class:"tab-content"},ie={class:"tab-description"},ne={class:"input-section"},se={key:0,class:"suggestions-panel"},re=["onClick"],oe={class:"tags-to-add-section"},le={key:0,class:"tags-container"},de={key:1,class:"empty-message"},ce={class:"action-buttons"},he={class:"tab-content"},ue={class:"tab-description"},fe={key:0,class:"common-tags-section"},me={class:"tags-container"},pe={key:1,class:"empty-message"},ge={class:"tab-content"},be={class:"tab-description"},ve={class:"action-buttons"};function ke(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=Y.v$,g=J.KR,b=Y.q,v=r.kZ;return(0,c.uX)(),(0,c.Wv)(v,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",te,[(0,c.bF)(b,{modelValue:n.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>n.activeTab=e),type:"border-card"},{default:(0,c.k6)(()=>[(0,c.bF)(p,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("p",ie,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",ne,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,P.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",se,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,re))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",oe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",de,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",ce,[(0,c.bF)(u,{type:"primary",onClick:s.executeAddTags,loading:n.loading,disabled:0===n.tagsToAdd.length},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.addToAllFiles")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",he,[(0,c.Lk)("p",ue,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",fe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.commonTags")),1),(0,c.Lk)("div",me,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.commonTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",pe,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ge,[(0,c.Lk)("p",be,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(g,{title:e.$t("batchTag.clearWarningTitle"),type:"warning",description:e.$t("batchTag.clearWarningDesc"),closable:!1,style:{"margin-bottom":"20px"},center:""},null,8,["title","description"]),(0,c.Lk)("div",ve,[(0,c.bF)(u,{type:"danger",onClick:s.handleClearAllTags,loading:n.loading},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.confirmClearAll")),1)]),_:1},8,["onClick","loading"])])])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1},8,["title","modelValue","width","onClose"])}a(44114),a(61701);var ye=a(51219),we=a(12933),_e={name:"BatchTagDialog",props:{modelValue:{type:Boolean,default:!1},selectedFiles:{type:Array,required:!0,default:()=>[]}},emits:["update:modelValue","tagsUpdated"],data(){return{activeTab:"add",inputTag:"",tagsToAdd:[],commonTags:[],suggestions:[],showSuggestions:!1,loading:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"600px"},selectedFilesOnly(){return this.selectedFiles.filter(e=>!e.isFolder)},fileCount(){return this.selectedFilesOnly.length},fileIds(){return this.selectedFilesOnly.map(e=>e.name)}},watch:{visible(e){e?this.loadCommonTags():this.resetData()},activeTab(e){"remove"===e&&this.loadCommonTags()}},methods:{resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add"},async loadCommonTags(){if(0!==this.selectedFilesOnly.length)try{const e=this.selectedFilesOnly.map(e=>(0,E.A)(`/api/manage/tags/${encodeURIComponent(e.name)}`,{method:"GET"})),t=await Promise.all(e),a=[];for(const i of t)if(i.ok){const e=await i.json();a.push(e.tags||[])}a.length>0?this.commonTags=a[0].filter(e=>a.every(t=>t.includes(e))):this.commonTags=[]}catch(e){console.error("Error loading common tags:",e),ye.nk.error(this.$t("batchTag.loadCommonTagsFailed"))}else this.commonTags=[]},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.tagsToAdd.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddInputTag()},handleAddInputTag(){const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return ye.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.addFailed"));ye.nk.success(this.$t("batchTag.addSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),ye.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else ye.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();if(!(e.success||e.updated>0))throw new Error(this.$t("batchTag.removeFailed"));ye.nk.success(this.$t("batchTag.removeSuccess",{count:e.updated})),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}},handleClearAllTags(){we.s.confirm(this.$t("batchTag.clearConfirmMessage",{count:this.fileCount}),this.$t("batchTag.clearConfirmTitle"),{confirmButtonText:this.$t("batchTag.clearConfirmOk"),cancelButtonText:this.$t("batchTag.clearConfirmCancel"),type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{ye.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.clearFailed"));ye.nk.success(this.$t("batchTag.clearSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),ye.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const Fe=(0,I.A)(_e,[["render",ke],["__scopeId","data-v-0d04afa1"]]);var Ce=Fe,Te=a(813);a(34896);const Se={class:"tag-management-container"},$e={class:"input-section"},Le={key:0,class:"suggestions-panel"},xe=["onClick"],De={class:"current-tags-section"},Ee={key:0,class:"tags-container"},Ae={key:1,class:"empty-message"},Ie={class:"popular-tags-section"},ze={key:0,class:"tags-container"},Ue={key:1,class:"empty-message"},Pe={key:2,class:"empty-message"},Be={class:"dialog-footer"};function We(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=(0,c.g2)("Loading"),g=Te.tk,b=r.kZ;return(0,c.uX)(),(0,c.Wv)(b,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",Be,[(0,c.bF)(u,{onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",Se,[(0,c.Lk)("div",$e,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,P.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",Le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,xe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",De,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ee,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ae,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",Ie,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",ze,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.popularTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,onClick:t=>s.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):n.loadingPopularTags?((0,c.uX)(),(0,c.CE)("div",Ue,[(0,c.bF)(g,{class:"is-loading"},{default:(0,c.k6)(()=>[(0,c.bF)(p)]),_:1}),(0,c.eW)(" "+(0,h.v_)(e.$t("tagManagement.loading")),1)])):((0,c.uX)(),(0,c.CE)("div",Pe,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))])])]),_:1},8,["title","modelValue","width","onClose"])}var Re=a(57477),Oe={name:"TagManagementDialog",components:{Loading:Re.Loading},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"500px"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},methods:{async loadFileTags(){try{const e=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"GET"});if(!e.ok)throw new Error("Failed to load tags");{const t=await e.json();this.currentTags=t.tags||[]}}catch(e){console.error("Error loading file tags:",e),ye.nk.error(this.$t("tagManagement.loadFailed"))}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,E.A)("/api/manage/tags/autocomplete?limit=20",{method:"GET"});if(e.ok){const t=await e.json();this.popularTags=(t.tags||[]).filter(e=>!this.currentTags.includes(e))}}catch(e){console.error("Error loading popular tags:",e)}finally{this.loadingPopularTags=!1}},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.currentTags.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddTag()},async handleAddTag(){const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return ye.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[e]})});if(!t.ok){const e=await t.json();throw new Error(e.message||this.$t("tagManagement.addFailed"))}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,ye.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),ye.nk.error(t.message||this.$t("tagManagement.addFailed"))}}},async handleRemoveTag(e){try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],ye.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("tagManagement.removeFailed"))}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const Me=(0,I.A)(Oe,[["render",We],["__scopeId","data-v-24c809e4"]]);var Ne=Me,Ve=a(55558),Xe=(a(10456),a(66810)),je=(a(34396),a(4885),a(82006)),Ke=(a(98642),a(63003),a(59869)),Ze=(a(70415),a(73565),a(57009));a(78450);const Ge={class:"detail-actions"},He={class:"preview-section"},qe={class:"preview-content"},Qe=["src"],Ye=["src"],Je={key:1},et={key:1},tt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},at={key:1,style:{color:"#59636E"}},it={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},nt={key:1,style:{color:"#59636E"}};function st(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=Y.v$,p=Y.q,g=Ze.Zq,b=Ke.MF,v=ee.u,k=Ke.TS,y=je.xE,w=je.US,_=r.kZ;return(0,c.uX)(),(0,c.Wv)(_,{title:e.$t("fileDetail.title"),modelValue:s.visible,"onUpdate:modelValue":t[24]||(t[24]=e=>s.visible=e),width:s.dialogWidth},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ge,[n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"download",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.download")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:1,type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"tags",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.tags")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:2,type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"ban",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.blacklist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:3,type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"shield-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.whitelist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:4,type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"trash-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.deleteBtn")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:5,type:"warning",onClick:t[5]||(t[5]=e=>s.startEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"edit",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.edit")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:6,type:"info",onClick:t[6]||(t[6]=e=>s.openRenameDialog()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"i-cursor",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.rename")),1)]),_:1})),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:7,type:"success",onClick:t[7]||(t[7]=e=>s.saveMetadata()),round:"",size:"small",class:"detail-action",loading:n.editSaving},{default:(0,c.k6)(()=>[n.editSaving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save",style:{"margin-right":"3px"}})),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.save")),1)]),_:1},8,["loading"])):(0,c.Q3)("",!0),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:8,onClick:t[8]||(t[8]=e=>s.cancelEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.cancel")),1)]),_:1})):(0,c.Q3)("",!0)]),(0,c.bF)(p,{modelValue:n.activeTab,"onUpdate:modelValue":t[16]||(t[16]=e=>n.activeTab=e),onTabClick:s.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,c.k6)(()=>[(0,c.bF)(m,{label:e.$t("fileDetail.originUrl"),name:"originUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.originUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1},8,["label"]),(0,c.bF)(m,{label:"Markdown",name:"mdUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.mdUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"HTML",name:"htmlUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.htmlUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"BBCode",name:"bbUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[12]||(t[12]=e=>a.urls.bbUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,c.uX)(),(0,c.Wv)(m,{key:0,label:"TG File ID",name:"tgId"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[13]||(t[13]=e=>a.urls.tgId=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3Location?((0,c.uX)(),(0,c.Wv)(m,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[14]||(t[14]=e=>a.urls.S3Location=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,c.uX)(),(0,c.Wv)(m,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,c.Lk)("div",He,[(0,c.Lk)("div",qe,[s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[17]||(t[17]=(...e)=>s.openImageLink&&s.openImageLink(...e))},null,8,Qe)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Ye)):s.isImage?((0,c.uX)(),(0,c.Wv)(g,{key:2,src:a.fileLink,"preview-src-list":[a.fileLink],"preview-teleported":!0,fit:"contain",lazy:"",class:"image-preview"},null,8,["src","preview-src-list"])):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,c.bF)(k,{border:"",column:s.descColumn},{default:(0,c.k6)(()=>[(0,c.bF)(b,{label:e.$t("fileDetail.fileNameLabel")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileName,"onUpdate:modelValue":t[18]||(t[18]=e=>n.editForm.FileName=e),size:"small",placeholder:e.$t("fileDetail.fileNamePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Je,(0,h.v_)(a.file?.metadata?.FileName||a.file?.name),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileType")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileType,"onUpdate:modelValue":t[19]||(t[19]=e=>n.editForm.FileType=e),size:"small",placeholder:e.$t("fileDetail.fileTypePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",et,(0,h.v_)(a.file?.metadata?.FileType||e.$t("fileDetail.unknown")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileSizeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.fileSizeDisplay),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.imageDimensions")},{default:(0,c.k6)(()=>[s.imageDimensions?((0,c.uX)(),(0,c.CE)("div",tt,[(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Width)+" × "+(0,h.v_)(a.file?.metadata?.Height),1),(0,c.bF)(v,{size:"small",type:"info",style:{display:"inline-flex","align-items":"center","justify-content":"center"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.orientationIcon),1)]),_:1})])):((0,c.uX)(),(0,c.CE)("span",at,(0,h.v_)(e.$t("fileDetail.noDimensions")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadTimeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.uploadTime),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.channelTypeAndName")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:"info",style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.Channel||e.$t("fileDetail.unknown")),1)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.accessStatusAndReview")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:s.accessTagType,style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.accessType),1)]),_:1},8,["type"]),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Label||e.$t("fileDetail.noTags")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadIP")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadIP||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadAddressLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadAddress||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileTags")},{default:(0,c.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",it,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.file?.metadata?.Tags,e=>((0,c.uX)(),(0,c.Wv)(v,{key:e,size:"small"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128))])):((0,c.uX)(),(0,c.CE)("span",nt,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(_,{modelValue:n.showRenameDialog,"onUpdate:modelValue":t[23]||(t[23]=e=>n.showRenameDialog=e),title:e.$t("fileDetail.renameTitle"),width:s.dialogWidth,"append-to-body":""},{footer:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:t[21]||(t[21]=e=>s.closeRenameDialog())},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameCancel")),1)]),_:1}),(0,c.bF)(u,{type:"primary",onClick:t[22]||(t[22]=e=>s.submitRename()),loading:n.renameSaving,disabled:!n.renameValidation.valid},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameConfirm")),1)]),_:1},8,["loading","disabled"])]),default:(0,c.k6)(()=>[(0,c.bF)(w,{onSubmit:(0,P.D$)(s.submitRename,["prevent"])},{default:(0,c.k6)(()=>[(0,c.bF)(y,{label:e.$t("fileDetail.renameLabel"),error:n.renameValidation.error},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:n.renameForm.newFileId,"onUpdate:modelValue":t[20]||(t[20]=e=>n.renameForm.newFileId=e),placeholder:e.$t("fileDetail.renamePlaceholder"),onInput:s.validateRenameInput,clearable:""},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label","error"])]),_:1},8,["onSubmit"])]),_:1},8,["modelValue","title","width"])]),_:1},8,["title","modelValue","width"])}const rt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function ot(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:rt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var lt={name:"FileDetailDialog",props:{modelValue:{type:Boolean,default:!1},file:{type:Object,default:null},fileLink:{type:String,default:""},urls:{type:Object,default:()=>({originUrl:"",mdUrl:"",htmlUrl:"",bbUrl:"",tgId:"",S3Location:"",S3CdnFileUrl:""})}},emits:["update:modelValue","download","tagManagement","block","white","delete","metadataUpdated","fileRenamed"],watch:{visible(e){e||(this.isEditing=!1,this.editSaving=!1)}},data(){return{activeTab:"originUrl",isEditing:!1,editForm:{FileName:"",FileType:""},editSaving:!1,showRenameDialog:!1,renameForm:{newFileId:""},renameValidation:{valid:!0,error:""},renameSaving:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"95%":"900px"},descColumn(){return window.innerWidth<768?1:2},isVideo(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},uploadTime(){return this.file?.metadata?.TimeStamp?new Date(this.file.metadata.TimeStamp).toLocaleString():this.$t("fileDetail.unknown")},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?this.$t("fileDetail.accessNormalWhitelist"):"Block"===e?this.$t("fileDetail.accessBlockedBlacklist"):"adult"===t?this.$t("fileDetail.accessBlockedReview"):this.$t("fileDetail.accessNormal")},accessTagType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"success":"Block"===e||"adult"===t?"danger":"success"},imageDimensions(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;return!(!e||!t)||null},orientationIcon(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;if(!e||!t)return"";const a=e/t;return a>1.1?this.$t("fileDetail.orientationLandscape"):a<.9?this.$t("fileDetail.orientationPortrait"):this.$t("fileDetail.orientationSquare")},fileSizeDisplay(){const e=this.file?.metadata?.FileSizeBytes,t=this.file?.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:this.$t("fileDetail.unknown")}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleTabClick(){},handleUrlClick(e){const t=e.target;t.select(),navigator.clipboard.writeText(t.value).then(()=>{ye.nk.success(this.$t("fileDetail.linkCopied"))})},openImageLink(){this.fileLink&&window.open(this.fileLink,"_blank")},startEdit(){this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.isEditing=!0},cancelEdit(){this.isEditing=!1,this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.editSaving=!1},async saveMetadata(){this.editSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/metadata/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({FileName:this.editForm.FileName,FileType:this.editForm.FileType})});if(!t.ok){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.metadataSaveFailed"))}{const a=await t.json();ye.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),ye.nk.error(e.message||this.$t("fileDetail.metadataSaveFailed"))}finally{this.editSaving=!1}},openRenameDialog(){this.renameForm.newFileId=this.file?.name||"",this.renameValidation={valid:!0,error:""},this.showRenameDialog=!0},closeRenameDialog(){this.showRenameDialog=!1,this.renameForm.newFileId="",this.renameValidation={valid:!0,error:""}},validateRenameInput(){const e=ot(this.renameForm.newFileId,this.file?.name||"");this.renameValidation={valid:e.valid,error:e.error||""}},async submitRename(){if(!this.renameSaving&&(this.validateRenameInput(),this.renameValidation.valid)){this.renameSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/rename/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newFileId:this.renameForm.newFileId})});if(t.ok){const a=await t.json();ye.nk.success(this.$t("fileDetail.renameSuccess")),this.showRenameDialog=!1,this.$emit("fileRenamed",e,this.renameForm.newFileId,a.metadata)}else{if(409!==t.status){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.renameFailed"))}this.renameValidation={valid:!1,error:this.$t("fileDetail.renameConflict")}}}catch(e){console.error("Error renaming file:",e),ye.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const dt=(0,I.A)(lt,[["render",st],["__scopeId","data-v-38a97614"]]);var ct=dt,ht=a(78507);a(213);const ut={key:0,class:"batch-floating-bar"},ft={class:"batch-selection-summary"},mt={class:"batch-selection-count"},pt={class:"batch-floating-actions"};function gt(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ht.R7;return(0,c.uX)(),(0,c.Wv)(P.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",ut,[(0,c.bF)(d,{disabled:s.disableTooltip,content:e.$t("dashboard.clearSelection"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:"batch-floating-btn ghost","aria-label":e.$t("dashboard.clearSelection"),onClick:s.handleClear},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"times",class:"batch-floating-icon"})]),_:1},8,["aria-label","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:s.disableTooltip,content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ft,[(0,c.Lk)("span",mt,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["disabled","content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",pt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.actions,t=>((0,c.uX)(),(0,c.Wv)(d,{key:t.command,disabled:s.disableTooltip,content:e.$t(t.label),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:(0,h.C4)(["batch-floating-btn",t.className]),"aria-label":e.$t(t.label),onClick:e=>s.handleAction(t.command)},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:t.icon,class:"batch-floating-icon"},null,8,["icon"])]),_:2},1032,["class","aria-label","onClick"])]),_:2},1032,["disabled","content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var bt={name:"BatchActionBar",props:{selectedCount:{type:Number,required:!0}},emits:["action","clear"],data(){return{actions:[{command:"copy",label:"dashboard.copy",icon:"copy",className:"copy"},{command:"download",label:"dashboard.download",icon:"download",className:"download"},{command:"move",label:"dashboard.move",icon:"file-export",className:"move"},{command:"tagManagement",label:"dashboard.tagManagement",icon:"tags",className:"tag"},{command:"ban",label:"dashboard.addToBlacklist",icon:"ban",className:"ban"},{command:"white",label:"dashboard.addToWhitelist",icon:"shield-alt",className:"white"},{command:"delete",label:"dashboard.delete",icon:"trash-alt",className:"danger"}]}},computed:{disableTooltip(){return window.innerWidth<768}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const vt=(0,I.A)(bt,[["render",gt],["__scopeId","data-v-6de9da06"]]);var kt=vt,yt=a(54880),wt=(a(4318),a(77815));a(72907);const _t=["aria-checked"];function Ft(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.CE)("span",{class:(0,h.C4)(["dashboard-checkbox",[`dashboard-checkbox--${a.variant}`,{checked:a.checked,indeterminate:a.indeterminate&&!a.checked}]]),role:"checkbox","aria-checked":s.ariaChecked,tabindex:"0",onClick:t[0]||(t[0]=(...e)=>s.handleClick&&s.handleClick(...e)),onKeydown:[t[1]||(t[1]=(0,P.jR)((0,P.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["enter"])),t[2]||(t[2]=(0,P.jR)((0,P.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["space"]))]},[a.checked?((0,c.uX)(),(0,c.Wv)(r,{key:0,icon:"check",class:"dashboard-checkbox-mark"})):a.indeterminate?((0,c.uX)(),(0,c.Wv)(r,{key:1,icon:"minus",class:"dashboard-checkbox-mark"})):(0,c.Q3)("",!0)],42,_t)}var Ct={name:"DashboardCheckbox",props:{checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},variant:{type:String,default:"list",validator:e=>["list","breadcrumb"].includes(e)}},emits:["click"],computed:{ariaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"}},methods:{handleClick(e){this.$emit("click",e)}}};const Tt=(0,I.A)(Ct,[["render",Ft],["__scopeId","data-v-f8222714"]]);var St=Tt;const $t={class:"list-col list-col-checkbox"},Lt=["src"],xt=["src"],Dt=["title"],Et={class:"filename-start"},At={class:"filename-end"},It={class:"list-col list-col-tags"},zt={key:1,class:"list-empty"},Ut={class:"list-col list-col-channel"},Pt={class:"list-col list-col-channel-name"},Bt={key:0,class:"channel-name-box"},Wt={key:1,class:"list-empty"},Rt={class:"list-col list-col-address"},Ot={key:0,class:"address-box"},Mt={key:1,class:"list-empty"},Nt={class:"list-col list-col-size"},Vt={class:"list-col list-col-date"},Xt={class:"list-col list-col-actions"};function jt(e,t,a,i,n,s){const r=St,o=(0,c.g2)("font-awesome-icon"),l=ht.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[8]||(t[8]=t=>e.$emit("touchstart",t)),onTouchend:t[9]||(t[9]=t=>e.$emit("touchend",t)),onTouchmove:t[10]||(t[10]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",$t,[(0,c.bF)(r,{checked:n.localSelected,onClick:(0,P.D$)(s.toggleSelect,["stop"])},null,8,["checked","onClick"])]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[0]||(t[0]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"folder-open",class:"list-folder-icon"})):s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,Lt)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,xt)):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[1]||(t[1]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",Et,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",At,(0,h.v_)(s.fileNameEnd),1)],8,Dt)]),(0,c.Lk)("div",It,[!s.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,c.uX)(),(0,c.CE)("span",{key:t,class:"color-tag",style:(0,h.Tr)({background:s.getTagColor(t)})},(0,h.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,c.uX)(),(0,c.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,h.Tr)({background:s.getTagColor(3)})},"+"+(0,h.v_)(a.item.metadata.Tags.length-3),5)):(0,c.Q3)("",!0)],64)):((0,c.uX)(),(0,c.CE)("span",zt,"-"))]),(0,c.Lk)("div",Ut,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",Pt,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",Bt,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",Wt,"-"))]),(0,c.Lk)("div",Rt,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",Ot,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",Mt,"-"))]),(0,c.Lk)("div",Nt,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",Vt,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",Xt,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,P.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[2]||(t[2]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,P.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(l,{content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[7]||(t[7]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var Kt={name:"FileListItem",components:{DashboardCheckbox:St},props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,default:""}},emits:["update:selected","enter","detail","copy","folderCopy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,tagColors:["#f472b6","#a78bfa","#60a5fa","#34d399"]}},computed:{isFolder(){return this.item.isFolder||this.item.name?.endsWith("/")},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isImage(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},displayName(){if(this.isFolder){const e=this.item.name.split("/").filter(Boolean);return e[e.length-1]||this.item.name}return this.item.metadata?.FileName||this.getFileName(this.item.name)},fileNameStart(){const e=this.displayName;return e.length<=20?e:e.slice(0,-8)},fileNameEnd(){const e=this.displayName;return e.length<=20?"":e.slice(-8)},uploadDate(){return this.item.uploaded?new Date(this.item.uploaded).toLocaleDateString():this.item.metadata?.TimeStamp?new Date(this.item.metadata.TimeStamp).toLocaleDateString():"-"},fileSizeDisplay(){const e=this.item.metadata?.FileSizeBytes,t=this.item.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:"-"}},watch:{selected(e){this.localSelected=e}},methods:{toggleSelect(){this.localSelected=!this.localSelected,this.$emit("update:selected",this.localSelected)},handlePreviewClick(){this.isFolder?this.$emit("enter"):this.$emit("detail")},getFileName(e){const t=(e||"").split("/");return t[t.length-1]},getTagColor(e){return this.tagColors[e%this.tagColors.length]}}};const Zt=(0,I.A)(Kt,[["render",jt],["__scopeId","data-v-4b029ac8"]]);var Gt=Zt,Ht=a(70683),qt=(a(95385),a(98469));a(38736);const Qt={class:"file-short-info"},Yt={key:0,class:"success-tag"},Jt={key:1,class:"fail-tag"},ea={key:2,class:"success-tag"},ta={key:3,class:"primary-tag"},aa={key:0,style:{"margin-left":"2px"}},ia={key:0,class:"skeleton-wrapper"},na={class:"error-text"},sa=["src"],ra={class:"error-text"},oa={key:3,class:"file-preview"},la={class:"card-bottom-overlay"},da={class:"file-name-row"},ca={class:"file-name"},ha={class:"action-bar"},ua={class:"action-bar-left"},fa={class:"action-bar-right"};function ma(e,t,a,i,n,s){const r=qt.dI,o=(0,c.g2)("font-awesome-icon"),l=Ze.Zq,d=ht.R7,u=Ht.Ik;return(0,c.uX)(),(0,c.Wv)(u,{class:"img-card",onTouchstart:t[17]||(t[17]=t=>e.$emit("touchstart",t)),onTouchend:t[18]||(t[18]=t=>e.$emit("touchend",t)),onTouchmove:t[19]||(t[19]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",Qt,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",Yt,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",Jt,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",ea,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",ta,[(0,c.bF)(o,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,c.eW)(" "+(0,h.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,c.uX)(),(0,c.CE)("span",aa," (+"+(0,h.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,c.Q3)("",!0)])):(0,c.Q3)("",!0)]),s.isVideo?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[n.videoLoading?((0,c.uX)(),(0,c.CE)("div",ia)):n.videoError?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"exclamation-triangle",class:"error-icon"}),(0,c.Lk)("span",na,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])):(0,c.Q3)("",!0),(0,c.bo)((0,c.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>s.handleVideoClick&&s.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>s.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>s.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>n.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>s.handleVideoError&&s.handleVideoError(...e))},null,40,sa),[[P.aG,!n.videoLoading&&!n.videoError]])],64)):s.isAudio?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"music",class:"file-icon audio-icon"})])):s.isImage?((0,c.uX)(),(0,c.Wv)(l,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",decoding:"async",class:"image-preview"},{placeholder:(0,c.k6)(()=>[...t[20]||(t[20]=[(0,c.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,c.k6)(()=>[(0,c.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,P.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",ra,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",oa,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",la,[(0,c.Lk)("div",da,[(0,c.Lk)("span",ca,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",ha,[(0,c.Lk)("div",ua,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,P.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",fa,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,P.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var pa={name:"FileCard",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,required:!0},previewSrcList:{type:Array,default:()=>[]},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","detail","copy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,videoLoading:!0,videoError:!1}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},displayName(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e},fileLink(){this.videoLoading=!0,this.videoError=!1}},methods:{handleVideoError(){this.videoLoading=!1,this.videoError=!0},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleFullscreenChange(e){const t=e.target,a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;a?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)}}};const ga=(0,I.A)(pa,[["render",ma],["__scopeId","data-v-12b39bad"]]);var ba=ga;const va={class:"card-bottom-overlay"},ka={class:"file-name-row"},ya={class:"file-name"},wa={key:0,class:"action-bar"},_a={class:"action-bar-right"};function Fa(e,t,a,i,n,s){const r=qt.dI,o=(0,c.g2)("font-awesome-icon"),l=ht.R7,d=Ht.Ik;return(0,c.uX)(),(0,c.Wv)(d,{class:"img-card folder-card",onTouchstart:t[6]||(t[6]=t=>e.$emit("touchstart",t)),onTouchend:t[7]||(t[7]=t=>e.$emit("touchend",t)),onTouchmove:t[8]||(t[8]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,c.bF)(o,{icon:"folder-open",class:"folder-icon-svg"})]),(0,c.Lk)("div",va,[(0,c.Lk)("div",ka,[(0,c.Lk)("span",ya,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",wa,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",_a,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var Ca={name:"FolderCard",props:{name:{type:String,required:!0},selected:{type:Boolean,default:!1},showActions:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","enter","copy","move","delete","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected}},computed:{folderName(){const e=this.name.split("/").filter(Boolean);return e[e.length-1]||this.name}},watch:{selected(e){this.localSelected=e}}};const Ta=(0,I.A)(Ca,[["render",Fa],["__scopeId","data-v-e3ec6a12"]]);var Sa=Ta;function $a(e,t,a,i,n,s){return"card"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,c.Lk)("div",{class:"skeleton-image"},null,-1),(0,c.Lk)("div",{class:"skeleton-info"},[(0,c.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:1},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,c.Fv)('
',10)])]))),128)):(0,c.Q3)("",!0)}var La={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const xa=(0,I.A)(La,[["render",$a],["__scopeId","data-v-070880ec"]]);var Da=xa,Ea=a(81095),Aa=(a(77128),a(62086)),Ia=(a(40670),a(88830),a(23597),a(49187),a(77788));a(72099);const za={class:"el-dropdown-link filter-trigger"},Ua={class:"filter-section"},Pa={class:"filter-title"},Ba={class:"filter-options"},Wa={class:"filter-section"},Ra={class:"filter-title"},Oa={class:"filter-options"},Ma={class:"filter-section"},Na={class:"filter-title"},Va={class:"filter-options"},Xa={class:"filter-section"},ja={class:"filter-title"},Ka={class:"filter-options"},Za={class:"filter-section"},Ga={class:"filter-title"},Ha={class:"filter-options"},qa={key:0,class:"filter-section"},Qa={class:"filter-title"},Ya={class:"filter-options"},Ja={key:0,class:"channel-divider"},ei={class:"channel-group-title"},ti={class:"filter-actions"};function ai(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=Ia.z_,d=qt.dI,u=qt.o5,f=l.S2,m=Aa.Iy,p=Aa.dW;return(0,c.uX)(),(0,c.Wv)(p,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,c.k6)(()=>[(0,c.bF)(m,{class:"filter-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ua,[(0,c.Lk)("div",Pa,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",Ba,[(0,c.bF)(u,{modelValue:n.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>s.handleFilterChange("accessStatus"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.accessStatusOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Wa,[(0,c.Lk)("div",Ra,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",Oa,[(0,c.bF)(u,{modelValue:n.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>n.localFilters.listType=e),onChange:t[3]||(t[3]=e=>s.handleFilterChange("listType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.listTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ma,[(0,c.Lk)("div",Na,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",Va,[(0,c.bF)(u,{modelValue:n.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>n.localFilters.label=e),onChange:t[5]||(t[5]=e=>s.handleFilterChange("label"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.labelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Xa,[(0,c.Lk)("div",ja,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",Ka,[(0,c.bF)(u,{modelValue:n.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>n.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>s.handleFilterChange("fileType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.fileTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Za,[(0,c.Lk)("div",Ga,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Ha,[(0,c.bF)(u,{modelValue:n.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>n.localFilters.channel=e),onChange:t[9]||(t[9]=e=>s.handleFilterChange("channel"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.channelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,c.uX)(),(0,c.CE)("div",qa,[(0,c.Lk)("div",Qa,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Ya,[(0,c.bF)(u,{modelValue:n.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>n.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>s.handleFilterChange("channelName"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.groupedChannelNames,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:"group-"+e.type},[t>0?((0,c.uX)(),(0,c.CE)("div",Ja)):(0,c.Q3)("",!0),(0,c.Lk)("div",ei,(0,h.v_)(e.typeLabel),1),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(e.channels,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,c.Q3)("",!0),(0,c.Lk)("div",ti,[(0,c.bF)(f,{size:"small",onClick:s.clearFilters,disabled:0===s.activeFilterCount},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("filter.clearFilters")),1)]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",za,[(0,c.bF)(o,{value:s.activeFilterCount,hidden:0===s.activeFilterCount,class:"filter-badge"},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588),a(18237);var ii={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{accessStatusOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.blocked"),value:"blocked"}]},listTypeOptions(){return[{label:this.$t("filter.whiteList"),value:"White"},{label:this.$t("filter.blackList"),value:"Block"},{label:this.$t("filter.notSet"),value:"None"}]},labelOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.teenContent"),value:"teen"},{label:this.$t("filter.adultContent"),value:"adult"}]},fileTypeOptions(){return[{label:this.$t("filter.image"),value:"image"},{label:this.$t("filter.video"),value:"video"},{label:this.$t("filter.audio"),value:"audio"},{label:this.$t("filter.other"),value:"other"}]},channelOptions(){return[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"WebDAV",value:"WebDAV"},{label:this.$t("filter.externalLink"),value:"External"}]},activeFilterCount(){return Object.values(this.localFilters).reduce((e,t)=>e+t.length,0)},groupedChannelNames(){const e={};return this.channelNameOptions.forEach(t=>{e[t.type]||(e[t.type]={type:t.type,typeLabel:t.typeLabel,channels:[]}),e[t.type].channels.push(t)}),Object.values(e)}},watch:{filters:{handler(e){this.localFilters={accessStatus:Array.isArray(e.accessStatus)?[...e.accessStatus]:[],listType:Array.isArray(e.listType)?[...e.listType]:[],label:Array.isArray(e.label)?[...e.label]:[],fileType:Array.isArray(e.fileType)?[...e.fileType]:[],channel:Array.isArray(e.channel)?[...e.channel]:[],channelName:Array.isArray(e.channelName)?[...e.channelName]:[]}},immediate:!0,deep:!0}},methods:{handleFilterChange(e){this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:e,filters:{...this.localFilters}})},clearFilters(){this.localFilters={accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:"clear",filters:{...this.localFilters}})}}};const ni=(0,I.A)(ii,[["render",ai],["__scopeId","data-v-e6a38b20"]]);var si=ni,ri=a(91570);const oi={class:"container"},li={class:"header-content"},di={class:"search-area"},ci={class:"search-card"},hi={class:"actions"},ui={class:"el-dropdown-link"},fi={class:"el-dropdown-link"},mi={class:"breadcrumb-container"},pi={class:"breadcrumb-view-toggle",role:"group"},gi=["title","aria-pressed"],bi=["title","aria-pressed"],vi={class:"mobile-directory-path"},ki={class:"breadcrumb desktop-only"},yi=["title"],wi={key:1,class:"empty-state"},_i={class:"empty-text"},Fi={class:"empty-hint"},Ci={class:"list-header"},Ti={class:"list-col list-col-checkbox"},Si={class:"list-col list-col-preview"},$i={class:"list-col list-col-name"},Li={class:"list-col list-col-tags"},xi={class:"list-col list-col-channel"},Di={class:"list-col list-col-channel-name"},Ei={class:"list-col list-col-address"},Ai={class:"list-col list-col-size"},Ii={class:"list-col list-col-date"},zi={class:"list-col list-col-actions"},Ui={key:1,class:"empty-state list-empty"},Pi={class:"empty-text"},Bi={class:"empty-hint"},Wi={class:"pagination-container"},Ri={class:"pagination-center"},Oi={class:"pagination-right"},Mi={class:"page-total"},Ni={class:"page-jump"},Vi={class:"dialog-section"},Xi={class:"section-header"},ji={class:"section-title"},Ki={class:"section-content"},Zi={class:"dialog-section"},Gi={class:"section-header"},Hi={class:"section-title"},qi={class:"section-content"},Qi={class:"setting-item"},Yi={class:"setting-label"},Ji={key:0,class:"setting-item"},en={class:"setting-label"},tn={class:"dialog-action"};function an(e,t,a,i,n,s){const o=ri.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=si,p=Aa.c6,g=Aa.Iy,b=Aa.dW,v=ht.R7,k=yt.bZ,y=St,w=Ea.WZ,_=Ea.vp,F=Da,C=Sa,T=ba,S=Gt,$=wt.aQ,L=l.S2,x=yt.ZO,D=yt.lX,E=kt,A=ct,I=Xe.ll,z=Xe.MQ,B=Ve.qi,W=r.kZ,R=Ne,O=Ce,M=Q,N=X,V=U;return(0,c.uX)(),(0,c.CE)("div",oi,[(0,c.bF)(D,null,{default:(0,c.k6)(()=>[(0,c.bF)(k,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",li,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",di,[(0,c.Lk)("div",ci,[(0,c.bF)(f,{modelValue:n.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>n.tempSearch=e),size:"small",placeholder:e.$t("dashboard.searchPlaceholder"),onKeyup:(0,P.jR)(s.handleSearch,["enter"])},{suffix:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"search",class:"search-icon",onClick:s.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup"])]),(0,c.bF)(m,{filters:n.filters,"onUpdate:filters":t[1]||(t[1]=e=>n.filters=e),channelNameOptions:n.channelNameOptions,onChange:s.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,c.Lk)("div",hi,[(0,c.bF)(b,{onCommand:s.sort,"hide-on-click":!1},{dropdown:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.bF)(p,{command:"dateDesc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByDateDesc")),1)]),_:1}),(0,c.bF)(p,{command:"nameAsc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByNameAsc")),1)]),_:1})]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",ui,[(0,c.bF)(u,{icon:s.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.Lk)("span",fi,[(0,c.bF)(u,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>n.showUrlDialog=!0)})])]),_:1},8,["disabled","content"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sign-out-alt",class:"header-icon",onClick:s.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,c.bF)(x,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",mi,[(0,c.bF)(y,{checked:s.selectPage,indeterminate:s.selectedPageFiles&&!s.selectPage,variant:"breadcrumb",onClick:s.handleSelectPage},null,8,["checked","indeterminate","onClick"]),(0,c.Lk)("div",pi,[(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"card"===n.viewMode}]),type:"button",title:e.$t("dashboard.cardView"),"aria-pressed":"card"===n.viewMode,onClick:t[3]||(t[3]=e=>s.setViewMode("card"))},[(0,c.bF)(u,{icon:"th-large",class:"breadcrumb-view-icon"})],10,gi),(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"list"===n.viewMode}]),type:"button",title:e.$t("dashboard.listView"),"aria-pressed":"list"===n.viewMode,onClick:t[4]||(t[4]=e=>s.setViewMode("list"))},[(0,c.bF)(u,{icon:"list",class:"breadcrumb-view-icon"})],10,bi)]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[5]||(t[5]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",vi,(0,h.v_)(n.currentPath&&n.currentPath.split("/").filter(Boolean).length>0?n.currentPath.split("/").filter(Boolean).pop():e.$t("dashboard.rootDirectory")),1),(0,c.bF)(u,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,c.Lk)("div",ki,[(0,c.bF)(_,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(w,{onClick:t[6]||(t[6]=e=>s.navigateToFolder(""))},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentPath.split("/").filter(Boolean),(e,t)=>((0,c.uX)(),(0,c.Wv)(w,{key:t,onClick:e=>s.navigateToFolder(n.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,c.Lk)("span",{class:"stats-badge",title:e.$t("dashboard.totalFiles",{count:e.$data.Number})},[(0,c.bF)(u,{icon:"database",class:"stats-badge-icon"}),(0,c.eW)(" "+(0,h.v_)(n.Number),1)],8,yi)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef",onTouchstartPassive:t[7]||(t[7]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[8]||(t[8]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[9]||(t[9]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[n.loading?((0,c.uX)(),(0,c.Wv)(F,{key:0,type:"card",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",wi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",_i,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Fi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:t},[s.isFolder(e)?((0,c.uX)(),(0,c.Wv)(C,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!n.isSearchMode,disableTooltip:s.disableTooltip,onEnter:t=>s.enterFolder(e.name),onCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onTouchstart:a=>s.handleFolderTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,c.uX)(),(0,c.Wv)(T,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:s.disableTooltip,onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))],34)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef",onTouchstartPassive:t[11]||(t[11]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[12]||(t[12]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[13]||(t[13]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[(0,c.Lk)("div",Ci,[(0,c.Lk)("div",Ti,[(0,c.bF)(y,{checked:s.isSelectAll,indeterminate:s.isIndeterminate,onClick:t[10]||(t[10]=e=>s.handleSelectAllPage(!s.isSelectAll))},null,8,["checked","indeterminate"])]),(0,c.Lk)("div",Si,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",$i,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",Li,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",xi,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",Di,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",Ei,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",Ai,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",Ii,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",zi,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(F,{key:0,type:"list",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",Ui,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Pi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Bi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.Wv)(S,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),onEnter:t=>s.enterFolder(e.name),onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onFolderCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.isFolder(e)?s.handleFolderTouchStart(e,t):s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))],34)),i.isDragging?((0,c.uX)(),(0,c.CE)("div",{key:2,class:"drag-select-overlay",style:(0,h.Tr)({position:"fixed",left:i.selectionRect.left+"px",top:i.selectionRect.top+"px",width:i.selectionRect.width+"px",height:i.selectionRect.height+"px"})},null,4)):(0,c.Q3)("",!0),(0,c.Lk)("div",Wi,[(0,c.Lk)("div",Ri,[(0,c.bF)($,{background:"",layout:"prev, pager, next",total:s.filteredTableData.length,"page-size":n.pageSize,"current-page":n.currentPage,"pager-count":s.pagerCount,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,c.bF)(L,{type:"primary",onClick:s.refreshFileList,class:"refresh-btn"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sync",class:(0,h.C4)({"fa-spin":n.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),n.currentPage===Math.ceil(s.filteredTableData.length/n.pageSize)?((0,c.uX)(),(0,c.Wv)(L,{key:0,type:"primary",onClick:s.loadMoreData,loading:n.loading,class:"load-more"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.loadMore")),1)]),_:1},8,["onClick","loading"])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Oi,[(0,c.Lk)("span",Mi,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",Ni,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[14]||(t[14]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,P.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(L,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[31]||(t[31]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(E,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(A,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[15]||(t[15]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[16]||(t[16]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[17]||(t[17]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[18]||(t[18]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[19]||(t[19]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[20]||(t[20]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(W,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[25]||(t[25]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Vi,[(0,c.Lk)("div",Xi,[(0,c.Lk)("span",ji,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",Ki,[(0,c.bF)(z,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[21]||(t[21]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(I,{label:"originUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"link",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,c.bF)(I,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[32]||(t[32]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(I,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[33]||(t[33]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(I,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[34]||(t[34]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(I,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[35]||(t[35]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(I,{label:"s3Location",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"cloud",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.s3Link")),1)]),_:1})]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Zi,[(0,c.Lk)("div",Gi,[(0,c.Lk)("span",Hi,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(v,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,c.Lk)("div",qi,[(0,c.Lk)("div",Qi,[(0,c.Lk)("span",Yi,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(B,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[22]||(t[22]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",Ji,[(0,c.Lk)("span",en,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[23]||(t[23]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",tn,[(0,c.bF)(L,{type:"primary",onClick:t[24]||(t[24]=e=>n.showUrlDialog=!1),class:"confirm-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,c.bF)(R,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[26]||(t[26]=e=>n.showTagDialog=e),fileId:n.currentTagFile,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,c.bF)(O,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[27]||(t[27]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(M,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[28]||(t[28]=e=>n.showMobileActionModal=e),title:n.mobileActionIsFolder?s.getFolderName(n.mobileActionFile?.name||""):n.mobileActionFile?.metadata?.FileName||s.getFileName(n.mobileActionFile?.name||""),isFolder:n.mobileActionIsFolder,onAction:s.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,c.bF)(N,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[29]||(t[29]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(V,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[30]||(t[30]=e=>n.showMoveDialog=e),"current-directory":n.currentPath,"is-batch-move":n.isBatchMove,"initial-path":n.moveTargetPath,onConfirm:s.confirmMove},null,8,["modelValue","current-directory","is-batch-move","initial-path","onConfirm"])])}a(81148),a(20116),a(13579),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var nn=a(60782),sn=a(44813),rn=a.n(sn),on=a(54047),ln=a(46638);class dn{constructor(){this.FILE_LIST_PATH="data/fileList.json",this.fileListCache=null,this.storageWarningShown=!1}getLocalFileList(){const e=this.getMutableFileList();return{...e,files:[...e.files||[]],directories:[...e.directories||[]]}}getMutableFileList(){if(this.fileListCache)return this.fileListCache;try{const e=localStorage.getItem(this.FILE_LIST_PATH);return this.fileListCache=e?JSON.parse(e):this.createEmptyFileList(),this.fileListCache}catch(e){return console.error("Error reading local file list:",e),this.fileListCache=this.createEmptyFileList(),this.fileListCache}}updateFileListCache(e){this.fileListCache=e||this.createEmptyFileList();const t=this.persistFileListCache();return{cacheUpdated:!0,persisted:t}}persistFileListCache(){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(this.fileListCache)),!0}catch(e){return this.handleStoragePersistError(e),!1}}createEmptyFileList(){return{files:[],directories:[]}}handleStoragePersistError(e){console.warn("File list is kept in memory because localStorage persistence failed:",e);try{localStorage.removeItem(this.FILE_LIST_PATH)}catch(t){console.warn("Failed to remove stale file list cache:",t)}this.storageWarningShown||(this.storageWarningShown=!0,ye.nk.warning(ln.Ay.global.t("dashboard.fileListMemoryCacheWarning")))}addFile(e){try{const t=this.getMutableFileList();return t.files.push(e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getMutableFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.updateFileListCache(t).cacheUpdated)}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getMutableFileList();if(a){const t=n.directories.indexOf(e);-1!==t&&n.directories.splice(t,1)}else{const t=n.files.findIndex(t=>t.name===e);-1!==t&&n.files.splice(t,1)}if(t.startsWith(i)){const e=t.substring(i.length).split("/");if(e.length>1){const t=i+e[0];n.directories.includes(t)||n.directories.push(t)}}return this.updateFileListCache(n).cacheUpdated}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>t.name!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getMutableFileList(),a=t.files.filter(t=>t.name.startsWith(e+"/")),i=t.directories.filter(t=>t.startsWith(e+"/"));return{files:a,directories:i}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}buildFilterParams(e){let t="";return e.accessStatus&&e.accessStatus.length>0&&(t+=`&accessStatus=${encodeURIComponent(e.accessStatus.join(","))}`),e.listType&&e.listType.length>0&&(t+=`&listType=${encodeURIComponent(e.listType.join(","))}`),e.label&&e.label.length>0&&(t+=`&label=${encodeURIComponent(e.label.join(","))}`),e.fileType&&e.fileType.length>0&&(t+=`&fileType=${encodeURIComponent(e.fileType.join(","))}`),e.channel&&e.channel.length>0&&(t+=`&channel=${encodeURIComponent(e.channel.join(","))}`),e.channelName&&e.channelName.length>0&&(t+=`&channelName=${encodeURIComponent(e.channelName.join(","))}`),t}async refreshFileList(e,t="",a="",i="",n={}){t=t.trim();try{let s=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;a&&(s+=`&includeTags=${encodeURIComponent(a)}`),i&&(s+=`&excludeTags=${encodeURIComponent(i)}`),s+=this.buildFilterParams(n);const r=await(0,E.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||ye.nk.warning(ln.Ay.global.t("dashboard.indexingWarning")),this.updateFileListCache(o).cacheUpdated}catch(s){return console.error("Error refreshing file list:",s),!1}}async loadMoreFiles(e,t="",a="",i="",n=60,s={}){t=t.trim();try{const r=this.getMutableFileList(),o=r.files.length;let l=`/api/manage/list?dir=${e}&start=${o}&count=${n}&search=${encodeURIComponent(t)}`;a&&(l+=`&includeTags=${encodeURIComponent(a)}`),i&&(l+=`&excludeTags=${encodeURIComponent(i)}`),l+=this.buildFilterParams(s);const d=await(0,E.A)(l,{method:"GET"}),c=await d.json();return r.files.push(...c.files),this.updateFileListCache(r).cacheUpdated}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const cn=new dn;var hn=a(62388),un=a(48903),fn=a(90144);function mn(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function pn(e,t){const a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),n=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);return{left:a,top:i,width:n,height:s,right:a+n,bottom:i+s}}function gn(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,fn.KR)(!1),r=(0,fn.KR)({left:0,top:0,width:0,height:0,right:0,bottom:0});let o=null,l=[],d=!1;const h=768;let u=!1;const f=50,m=10;let p=null,g="";function b(){const e=(0,fn.BA)(i);return t[e]||void 0}function v(){const e=(0,fn.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||A():u&&(z(),I())}function y(e){const t=e.target,i=t.closest(a);if(!i)return!1;const n=b();if(n){const e=t.closest(n.itemSelector);if(e){const t=(0,fn.BA)(n.containerRef);if(t&&t.contains(e))return!1}}const s=t.closest("button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container");return!s}function w(e){return e.shiftKey||e.ctrlKey||e.metaKey}function _(){const e=(0,fn.BA)(n);l=e.map(e=>!!e.selected)}let F=0;function C(){function e(){const t=window.innerHeight;let a=0;F>=t-f?a=m:F<=f&&(a=-m),0!==a&&(window.scrollBy(0,a),o&&(o.y-=a,r.value=pn(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),L())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function S(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function $(){document.body.style.userSelect=g}function L(){const e=b();if(!e)return;const t=(0,fn.BA)(e.containerRef);if(!t)return;const a=(0,fn.BA)(n),i=r.value,s={left:i.left,top:i.top,right:i.right,bottom:i.bottom},o=t.querySelectorAll(e.itemSelector);a.forEach((e,t)=>{const a=o[t];if(!a)return;const i=a.getBoundingClientRect(),n={left:i.left,top:i.top,right:i.right,bottom:i.bottom},r=mn(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function x(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=w(e),_(),!d){const e=(0,fn.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=pn(o,o),S(),document.addEventListener("mousemove",D),document.addEventListener("mouseup",E)}}function D(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=pn(o,t),L();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function E(e){s.value&&(T(),$(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function A(){u||(document.addEventListener("mousedown",x),u=!0)}function I(){u&&(document.removeEventListener("mousedown",x),u=!1)}function z(){s.value&&(T(),$(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function U(){k()}return(0,c.wB)(()=>(0,fn.BA)(i),()=>{z(),k()}),(0,c.sV)(()=>{v()&&A(),window.addEventListener("resize",U)}),(0,c.xo)(()=>{z(),$(),T(),I(),window.removeEventListener("resize",U)}),{isDragging:s,selectionRect:r}}var bn={name:"AdminDashBoard",mixins:[un.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortOption:"dateDesc",isUploading:!1,showdetailDialog:!1,detailFile:null,activeUrlTab:"originUrl",defaultUrlFormat:"originUrl",showUrlDialog:!1,useCustomUrl:"false",customUrlPrefix:"",loading:!1,currentPath:"",refreshLoading:!1,showTagDialog:!1,showBatchTagDialog:!1,currentTagFile:"",viewMode:"card",showMobileActionModal:!1,mobileActionFile:null,mobileActionIndex:-1,mobileActionIsFolder:!1,longPressTimer:null,showMobileDirectoryDrawer:!1,jumpPage:"",filters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},channelNameOptions:[],showMoveDialog:!1,moveTargetPath:"/",moveFileKey:"",moveFileIndex:-1,isBatchMove:!1,pageSwipeStartX:null,pageSwipeStartY:null,pageSwipeStartTime:0}},components:{DashboardTabs:ri.A,TagManagementDialog:Ne,BatchTagDialog:Ce,SkeletonLoader:Da,FileCard:ba,FolderCard:Sa,FileListItem:Gt,FileDetailDialog:ct,BatchActionBar:kt,MobileActionSheet:Q,MobileDirectoryDrawer:X,DashboardCheckbox:St,FilterDropdown:si,MoveFileDialog:U,LanguageSwitcher:on.A},setup(){const e=(0,fn.KR)(null),t=(0,fn.KR)(null),a=(0,fn.KR)("card"),i=(0,fn.KR)([]),{isDragging:n,selectionRect:s}=gn({modes:{card:{containerRef:e,itemSelector:".img-card"},list:{containerRef:t,itemSelector:".list-item"}},viewMode:a,items:i});return{cardContainerRef:e,listContainerRef:t,viewModeRef:a,itemsRef:i,isDragging:n,selectionRect:s}},computed:{...(0,nn.L8)(["adminUrlSettings","userConfig"]),filteredTableData(){return this.tableData},totalPages(){return Math.ceil(this.filteredTableData.length/this.pageSize)||1},realTotalPages(){const e=this.directFolderCount+this.directFileCount;return Math.ceil(e/this.pageSize)||1},activeFilterCount(){return Object.values(this.filters).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0)},hasSearchOrFilter(){return this.isSearchMode||this.activeFilterCount>0},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,a=t+this.pageSize;let i=e.slice(t,a);const n=i.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return i.forEach(e=>{this.isImage(e)&&(e.previewSrcList=n.slice(n.indexOf(this.getFileLink(e.name))).concat(n.slice(0,n.indexOf(this.getFileLink(e.name)))))}),i.forEach(e=>{"TelegramNew"===e.metadata?.Channel||"Telegram"===e.metadata?.Channel?e.channelTag="TG":"CloudflareR2"===e.metadata?.Channel?e.channelTag="R2":"S3"===e.metadata?.Channel?e.channelTag="S3":"Discord"===e.metadata?.Channel?e.channelTag="DC":"HuggingFace"===e.metadata?.Channel?e.channelTag="HF":"WebDAV"===e.metadata?.Channel?e.channelTag="WD":"External"===e.metadata?.Channel?e.channelTag=this.$t("dashboard.externalTag"):e.channelTag=this.$t("dashboard.unknownTag")}),i},sortIcon(){return"dateDesc"===this.sortOption?"sort-amount-down":"sort-alpha-up"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},detailDialogWidth(){return window.innerWidth>768?"70%":"90%"},accessType(){return"White"===this.detailFile?.metadata?.ListType?this.$t("filter.normal"):"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?this.$t("filter.blocked"):this.$t("filter.normal")},allUrl(){return"External"===this.detailFile?.metadata?.Channel?{originUrl:`${this.detailFile?.metadata?.ExternalLink}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}:{originUrl:`${this.rootUrl}${this.detailFile?.name}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.rootUrl}${this.detailFile?.name}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}},tableColumnNum(){return window.innerWidth>768?3:1},tablePreviewSpan(){return window.innerWidth>768?2:1},disableTooltip(){return window.innerWidth<768},selectPage(){return this.paginatedTableData.every(e=>e.selected)},selectedPageFiles(){return this.paginatedTableData.some(e=>e.selected)},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.userConfig?.urlPrefix||`${document.location.origin}/file/`},isSelectAll:{get(){return this.paginatedTableData.length>0&&this.paginatedTableData.every(e=>e.selected)},set(e){this.paginatedTableData.forEach(t=>t.selected=e)}},isIndeterminate(){const e=this.paginatedTableData.filter(e=>e.selected).length;return e>0&&ee.selected&&!this.selectedFiles.includes(e))),this.selectedFiles=this.selectedFiles.filter(e=>e.selected),this.selectedFiles=this.selectedFiles.filter(t=>e.includes(t))},deep:!0},sortOption(e){localStorage.setItem("sortOption",e)},defaultUrlFormat(e){localStorage.setItem("defaultUrlFormat",e)},showdetailDialog(e){e&&(this.activeUrlTab=this.defaultUrlFormat||"originUrl")},customUrlPrefix(e){this.$store.commit("setAdminUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setAdminUrlSettings",{key:"useCustomUrl",value:e})},currentPath(e){this.tableData.forEach(e=>e.selected=!1)}},methods:{setViewMode(e){this.viewMode!==e&&(this.viewMode=e,localStorage.setItem("viewMode",this.viewMode))},handleSelectAllPage(e){this.paginatedTableData.forEach(t=>t.selected=e)},handleTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!1,this.showMobileActionModal=!0},500)},handleTouchEnd(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressTimer=null)},handleFolderTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!0,this.showMobileActionModal=!0},500)},handleMobileAction(e){const t=this.mobileActionFile,a=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(a,t.name);break;case"copy":this.handleCopy(a,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(a,t.name);break;case"delete":this.handleDelete(a,t.name);break;case"tag":this.handleTagManagement(t.name);break}},handleGoBack(){const e=this.currentPath.split("/").filter(Boolean);if(e.length>0){e.pop();const t=e.join("/");this.navigateToFolder(t)}this.showMobileDirectoryDrawer=!1},getTagColor(e){const t=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)"];return t[e%t.length]},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let a=0;while(e>=1024&&a0?1:0)+" "+t[a]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let a=this.search;const i=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(i,(e,a)=>(t.push(a.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(n,(t,a)=>(e.push(a.toLowerCase())," ")),this.searchKeywords=a.replace(/\s+/g," ").trim(),this.searchIncludeTags=e.join(","),this.searchExcludeTags=t.join(","),console.log("Search keywords:",this.searchKeywords),console.log("Include tags:",this.searchIncludeTags),console.log("Exclude tags:",this.searchExcludeTags)}else this.searchKeywords="",this.searchIncludeTags="",this.searchExcludeTags="";this.refreshFileList()},handleFilterChange({type:e,filters:t}){this.filters=t,this.currentPage=1,this.refreshFileList()},clearFilters(){this.filters={listType:[],label:[],fileType:[],channel:[],channelName:[]},this.currentPage=1,this.refreshFileList()},async extractChannelNames(){try{const e=await(0,E.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={telegram:"Telegram",cfr2:"Cloudflare R2",s3:"S3",discord:"Discord",huggingface:"HuggingFace",webdav:"WebDAV"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{t.name&&a.push({name:t.name,type:t.type,typeLabel:i[e]||e,value:`${t.type}:${t.name}`})})}),a.sort((e,t)=>e.type!==t.type?e.type.localeCompare(t.type):e.name.localeCompare(t.name)),this.channelNameOptions=a}}catch(e){console.error("Failed to fetch channel names:",e)}},handleDownload(e){const t=document.createElement("a");t.href=this.getFileLink(e),t.download=e,t.click()},openDetailDialog(e,t){this.detailFile=this.paginatedTableData[e],this.showdetailDialog=!0},handleTabClick(e){this.activeUrlTab=e.props.name},handleUrlClick(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("dashboard.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("dashboard.copyFailed")})})},handleDetailDelete(e){this.$confirm(this.$t("dashboard.deleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&this.tableData.splice(t,1)}}).then(()=>{this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.deleteSuccess")),this.showdetailDialog=!1}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBlock(e){this.$confirm(this.$t("dashboard.blockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success(this.$t("dashboard.blockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.blockFailed")))}).catch(()=>console.log("Block cancelled"))},handleWhite(e){this.$confirm(this.$t("dashboard.whiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success(this.$t("dashboard.whiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.whiteFailed")))}).catch(()=>console.log("White cancelled"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(a?this.$t("dashboard.deleteFolderConfirm"):this.$t("dashboard.deleteFileConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("Request failed");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),cn.removeFile(t),this.$message.success(this.$t("dashboard.deleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBatchDelete(){this.$confirm(this.$t("dashboard.batchDeleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,E.A)(`/api/manage/delete/${e.name}?folder=${t}`,{method:"GET"})});Promise.all(e).then(e=>{let t=0;e.forEach((e,a)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[a].name);-1!==e&&this.tableData.splice(e,1),cn.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success(this.$t("dashboard.batchDeleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchDeleteFailed")))}).catch(()=>console.log("Batch delete cancelled"))},async handleBatchCopy(){const e=this.selectedFiles.filter(e=>!e.isFolder),t=this.selectedFiles.filter(e=>e.isFolder);let a=null;t.length>0&&(a=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")}));try{let n=[...e];for(const e of t)try{const t=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e.name)}&recursive=true&count=-1`,{method:"GET"}),a=await t.json();a.files&&a.files.length>0&&(n=n.concat(a.files))}catch(i){console.error(`获取文件夹 ${e.name} 内容失败:`,i)}if(a&&a.close(),0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(this.$t("dashboard.batchCopySuccess",{count:s.length}))):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("Batch copy failed:",i),this.$message.error(this.$t("dashboard.batchCopyFailed"))}},copyToClipboardFallback(e){const t=document.createElement("textarea");document.body.appendChild(t),t.style.position="fixed",t.style.clip="rect(0 0 0 0)",t.style.top="10px",t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t),this.$message.success(this.$t("dashboard.batchCopyLinksSuccess"))},handleCopy(e,t){let a="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":a=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":a=`${this.rootUrl}${t}`;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(a).then(()=>this.$message.success(this.$t("dashboard.copyFileLinkSuccess"))):this.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await cn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error(this.$t("dashboard.loadMoreFailed"))}finally{this.loading=!1}},updateStats(e,t=!1){t?this.Number=e:this.Number+=e},sort(e){this.sortOption=e},sortData(e){const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder);return"dateDesc"===this.sortOption?(t.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp)),a.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp))):(t.sort((e,t)=>e.name.localeCompare(t.name)),a.sort((e,t)=>e.name.localeCompare(t.name))),t.concat(a)},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},clearSelection(){this.tableData.forEach(e=>e.selected=!1),this.selectedFiles=[]},handleBatchAction(e){"copy"===e?this.handleBatchCopy():"delete"===e?this.handleBatchDelete():"download"===e?this.handleBatchDownload():"move"===e?this.handleBatchMove():"tagManagement"===e?this.handleBatchTagManagement():"ban"===e?this.handleBatchBlock():"white"===e&&this.handleBatchWhite()},handleMove(e,t){this.moveFileKey=t,this.moveFileIndex=e,this.isBatchMove=!1,this.moveTargetPath="/",this.showMoveDialog=!0},handleBatchMove(){this.isBatchMove=!0,this.moveTargetPath="/",this.showMoveDialog=!0},confirmMove(e){const t=e,a=(0,hn.G)(t);if(!a.valid)return void this.$message.error(a.error);const i=t.replace(/^\/+/,"")+(t.endsWith("/")||""===t?"":"/");i!==this.currentPath?(this.showMoveDialog=!1,this.isBatchMove?this.executeBatchMove(i):this.executeSingleMove(i)):this.$message.warning(this.$t("dashboard.moveTargetSameAsCurrent"))},executeSingleMove(e){const t=this.moveFileKey,a=this.tableData.find(e=>e.name===t)?.isFolder;(0,E.A)(`/api/manage/move/${t}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"}).then(i=>{if(!i.ok)return Promise.reject("Request failed");{const i=this.tableData.findIndex(e=>e.name===t);if(-1!==i){const n=e+t.split("/").pop();cn.moveFile(t,n,a,this.currentPath),this.tableData.splice(i,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},executeBatchMove(e){const t=this.selectedFiles.map(t=>{const a=t.isFolder;return(0,E.A)(`/api/manage/move/${t.name}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"})});Promise.all(t).then(t=>{let a=0;t.forEach((t,i)=>{if(t.ok){a++;const t=this.selectedFiles[i];t.selected=!1;const n=this.tableData.findIndex(e=>e.name===t.name);if(-1!==n){const a=e+t.name.split("/").pop();cn.moveFile(t.name,a,t.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-a,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},handleBatchBlock(){this.$confirm(this.$t("dashboard.batchBlockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/block/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="Block")}}),this.$message.success(this.$t("dashboard.batchBlockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchBlockFailed")))}).catch(()=>console.log("Batch block cancelled"))},handleBatchWhite(){this.$confirm(this.$t("dashboard.batchWhiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/white/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="White")}}),this.$message.success(this.$t("dashboard.batchWhiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchWhiteFailed")))}).catch(()=>console.log("Batch white cancelled"))},handleBatchDownload(){const e=new(rn()),t=e.folder("files"),a={},i=this.selectedFiles.map(async e=>{if(e.isFolder)return;const i=await fetch(this.getFileLink(e.name)),n=await i.blob();let s=e.metadata?.FileName||e.name;if(a[s]){const t=s.substring(s.lastIndexOf(".")),i=s.substring(0,s.lastIndexOf("."));s=`${i}(${a[s]})${t}`,a[e.name]++}else a[s]=1;t.file(s,n)});Promise.all(i).then(()=>e.generateAsync({type:"blob"})).then(e=>{const t=document.createElement("a");t.href=URL.createObjectURL(e),t.download="files.zip",t.click()})},isVideo(e){if(this.isAudio(e))return!1;let t=e.metadata?.FileType?.includes("video");if(!t){const a=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","rmvb","3gp","mpg","mpeg","m4v","f4v","rm","asf","dat","ts","vob","swf","divx","xvid","m2ts","mts","m2v","3g2","3gp2","3gpp","3gpp2","mpe","m1v","mpv","mpv2","mp2v","m2t","m2ts","m2v","m4v"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const a=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const a=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","psd","ai","eps","raw","cr2","nef","orf","sr2","dng","arw","rw2","raf","pef","x3f","srf","erf","mrw","nrw","kdc","dcr","mef","mos","crw","raf","rwl","srw","3fr","fff","iiq","qtk","bay","k25","kdc","dcs","drf","dng","erf","kdc","mdc","mef","mos","mrw","nef","nrw","orf","pef","ptx","pxn","r3d","raf","raw","rwl","rw2","rwz","sr2","srf","x3f"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},getFileLink(e){const t=`/file/${e}?from=admin`;return t},handlePageChange(e){this.currentPage=e,this.currentPage===Math.ceil(this.tableData.length/this.pageSize)&&this.loadMoreData()},isMobileViewport(){return window.innerWidth<768},updateResponsivePageSize(){const e=this.isMobileViewport()?16:15;if(this.pageSize===e)return;const t=(this.currentPage-1)*this.pageSize;this.pageSize=e,this.currentPage=Math.min(Math.floor(t/e)+1,this.realTotalPages)},isSwipeIgnoredTarget(e){return Boolean(e?.closest?.("button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn"))},handlePageSwipeStart(e){if(!this.isMobileViewport()||this.isDragging||this.loading||this.showMobileActionModal||this.showMobileDirectoryDrawer||this.isSwipeIgnoredTarget(e.target))return void this.resetPageSwipe();const t=e.touches?.[0];t&&(this.pageSwipeStartX=t.clientX,this.pageSwipeStartY=t.clientY,this.pageSwipeStartTime=Date.now())},async handlePageSwipeEnd(e){if(null===this.pageSwipeStartX||null===this.pageSwipeStartY)return;const t=e.changedTouches?.[0];if(!t)return void this.resetPageSwipe();const a=t.clientX-this.pageSwipeStartX,i=t.clientY-this.pageSwipeStartY,n=Date.now()-this.pageSwipeStartTime;if(this.resetPageSwipe(),n>700||Math.abs(a)<64||Math.abs(a)<1.35*Math.abs(i))return;const s=a<0?this.currentPage+1:this.currentPage-1;await this.goToSwipePage(s)},resetPageSwipe(){this.pageSwipeStartX=null,this.pageSwipeStartY=null,this.pageSwipeStartTime=0},async goToSwipePage(e){e<1||e>this.realTotalPages||e===this.currentPage||(e>this.totalPages?await this.loadMoreDataUntilPage(e):this.handlePageChange(e))},handleJumpPage(){const e=parseInt(this.jumpPage);isNaN(e)||e<1?this.$message.warning(this.$t("dashboard.invalidPageNumber")):e>this.realTotalPages?this.$message.warning(this.$t("dashboard.pageExceedsMax",{max:this.realTotalPages})):(e>this.totalPages?(this.$message.info(this.$t("dashboard.loadingData")),this.loadMoreDataUntilPage(e)):this.currentPage=e,this.jumpPage="")},async loadMoreDataUntilPage(e){this.loading=!0;try{const t=e*this.pageSize,a=this.filteredTableData.filter(e=>e.isFolder).length,i=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-a-i);n>0&&(await cn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n,this.filters),await this.fetchFileList()),this.currentPage=Math.min(e,this.totalPages)}catch(t){this.$message.error(this.$t("dashboard.loadDataFailed"))}finally{this.loading=!1}},isFolder(e){if(e.isFolder)return!0;let t=e.name;if(t.startsWith("http")&&(t=t.split("/file/")[1]),t&&t.includes("/")){const e=this.currentPath?t.substring(this.currentPath.length):t;return""===this.currentPath?!t.split("/")[0].includes("."):e.includes("/")}return!1},getFolderName(e){let t="";if(e&&e.includes("/")){const a=e.split("/");if(""===this.currentPath)t=a[0];else{const a=e.substring(this.currentPath.length);t=a.split("/")[0]}}else t=e;const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileName(e){let t=e.split("/").pop();const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const a=e.substring(0,t),i=Math.min(a.length,Math.floor(.6*e.length));return a.substring(0,i)}return e.substring(0,Math.floor(.6*e.length))},getFileNameEnd(e){if(!e)return"";if(e.length<=30)return"";const t=e.lastIndexOf(".");if(t>0){const a=e.substring(t),i=e.substring(0,t),n=Math.min(8,Math.floor(.2*i.length));return"…"+i.substring(i.length-n)+a}const a=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-a)},enterFolder(e){this.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=cn.getLocalFileList(),t=new Set(e.directories||[]),a=e.files||[],i=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=a.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...i,...n],this.updateStats(e.totalCount,!0),this.directFileCount=e.directFileCount||0,this.directFolderCount=e.directFolderCount||0}catch(e){console.error("Error fetching file list:",e),this.$message.error(this.$t("dashboard.fetchFileListFailed"))}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await cn.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){!e.message?.includes("Unauthorized")&&this.$store.state.adminLoggedIn&&(console.error("Error refreshing file list:",e),this.$message.error(this.$t("dashboard.refreshFailed")))}finally{this.refreshLoading=!1,this.loading=!1}},async refreshLocalFileList(){this.refreshLoading=!0,this.loading=!0;try{await this.fetchFileList()}catch(e){console.error("Error refreshing local file list:",e),this.$message.error(this.$t("dashboard.refreshFailed"))}finally{this.refreshLoading=!1,this.loading=!1}},handleTagManagement(e){this.currentTagFile=e,this.showTagDialog=!0},handleBatchTagManagement(){0!==this.selectedFiles.length?this.showBatchTagDialog=!0:this.$message.warning(this.$t("dashboard.selectFilesFirst"))},async handleTagsUpdated(e){const t=this.tableData.findIndex(e=>e.name===this.currentTagFile);-1!==t&&(this.tableData[t].metadata||(this.tableData[t].metadata={}),this.tableData[t].metadata.Tags=e,this.showdetailDialog&&this.detailFile?.name===this.currentTagFile&&(this.detailFile.metadata||(this.detailFile.metadata={}),this.detailFile.metadata.Tags=e))},async handleBatchTagsUpdated(){await this.refreshLocalFileList()},handleMetadataUpdated(e,t){const a=this.tableData.findIndex(t=>t.name===e);-1!==a&&(this.tableData[a].metadata={...this.tableData[a].metadata,...t}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.metadata={...this.detailFile.metadata,...t})},handleFileRenamed(e,t,a){const i=this.tableData.findIndex(t=>t.name===e);-1!==i&&(this.tableData[i].name=t,this.tableData[i].metadata={...this.tableData[i].metadata,...a}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.name=t,this.detailFile.metadata={...this.detailFile.metadata,...a},this.showdetailDialog=!1,this.$nextTick(()=>{this.showdetailDialog=!0}))},generateFileLink(e,t){const a="External"===t?.Channel,i=a?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return i;case"mdUrl":return`![${n}](${i})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${i}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return i}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")});try{const a=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),i=await a.json();if(t.close(),!i.files||0===i.files.length)return void this.$message.warning(this.$t("dashboard.folderEmptyNoLinks"));const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length}))):(this.copyToClipboardFallback(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length})))}catch(a){t.close(),console.error("Copy folder links failed:",a),this.$message.error(this.$t("dashboard.copyFolderLinksFailed"))}}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),this.updateResponsivePageSize(),window.addEventListener("resize",this.updateResponsivePageSize),this.loading=!0,this.showLogoutButton=this.$store.state.adminLoggedIn,this.refreshFileList().then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error(this.$t("dashboard.syncDataError"))}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl;const e=localStorage.getItem("viewMode");"card"!==e&&"list"!==e||(this.viewMode=e)},beforeUnmount(){window.removeEventListener("resize",this.updateResponsivePageSize)}};const vn=(0,I.A)(bn,[["render",an],["__scopeId","data-v-57eabdee"]]);var kn=vn},49187:function(e,t,a){"use strict";a(85331),a(38736)},62388:function(e,t,a){"use strict";a.d(t,{G:function(){return n}});var i=a(46638);function n(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:i.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:i.Ay.global.t("validation.pathTraversalNotAllowed")};const a=t?/\/\.(\/|$)/:/\/\.\//;if(a.test(e))return{valid:!1,error:i.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:i.Ay.global.t("validation.consecutiveSlashNotAllowed")};const n=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return n.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},63003:function(e,t,a){"use strict";a(85331)},70415:function(e,t,a){"use strict";a(85331),a(73565)},72907:function(e,t,a){"use strict";a(85331),a(96808),a(29092)},73565:function(e,t,a){"use strict";a(85331)},79899:function(e,t,a){"use strict";a(85331)},88830:function(e,t,a){"use strict";a(85331)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); +//# sourceMappingURL=903.808d69b5.js.map \ No newline at end of file diff --git a/frontend-dist/js/903.808d69b5.js.gz b/frontend-dist/js/903.808d69b5.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..3408e9d38cdf73b741d53539a973ebb3204fd96e GIT binary patch literal 58913 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

c`f;^grHa-Ee;fzV-{=Tsn*>19BL50Ih>gnyh37 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 $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n width: \"500px\",\n \"show-close\": true,\n class: \"move-dialog\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, {\n prepend: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_DirectoryTreePicker, {\n \"current-directory\": $props.currentDirectory,\n source: \"admin\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-picker-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])]), _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t('moveFile.hint')), 1)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"])) : (_openBlock(), _createBlock(_component_el_drawer, {\n key: 1,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n direction: \"btt\",\n size: \"auto\",\n \"show-close\": true,\n class: \"move-drawer\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n onClick: $options.handleClose,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n class: \"directory-picker-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showTreePicker = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('moveFile.hintMobile')), 1)]), $data.showTreePicker ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('moveFile.selectDirectory')), 1), _createVNode(_component_el_button, {\n text: \"\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showTreePicker = false)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_14, [$data.treeError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($data.treeError), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleTreeNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_17, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.treeLoading]])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"]))]);\n}","import DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'MoveFileDialog',\n components: {\n DirectoryTreePicker\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentDirectory: {\n type: String,\n default: ''\n },\n isBatchMove: {\n type: Boolean,\n default: false\n },\n initialPath: {\n type: String,\n default: '/'\n }\n },\n emits: ['update:modelValue', 'confirm', 'close'],\n data() {\n return {\n targetPath: '/',\n loading: false,\n windowWidth: window.innerWidth,\n // 移动端内嵌树相关\n showTreePicker: false,\n treeData: [],\n treeLoading: false,\n treeError: '',\n treeProps: {\n children: 'children',\n label: 'name'\n }\n };\n },\n computed: {\n dialogVisible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n isDesktop() {\n return this.windowWidth > 768;\n }\n },\n watch: {\n modelValue(newVal) {\n if (newVal) {\n this.targetPath = this.initialPath || '/';\n this.showTreePicker = false;\n }\n },\n showTreePicker(newVal) {\n if (newVal && !this.isDesktop) {\n this.fetchDirectoryTree();\n }\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n handleDirectorySelect(path) {\n this.targetPath = path;\n },\n handleConfirm() {\n this.$emit('confirm', this.targetPath);\n },\n handleClose() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n },\n // 移动端内嵌树相关方法\n async fetchDirectoryTree() {\n this.treeLoading = true;\n this.treeError = '';\n try {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.treeError = this.$t('moveFile.authFailed');\n } else {\n this.treeError = this.$t('moveFile.serverError');\n }\n return;\n }\n const data = await response.json();\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n this.treeError = this.$t('moveFile.loadTreeFailed');\n } finally {\n this.treeLoading = false;\n }\n },\n handleTreeNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.targetPath = path;\n this.showTreePicker = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MoveFileDialog.vue?vue&type=template&id=7aaa437c&scoped=true\"\nimport script from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\n\nimport \"./MoveFileDialog.vue?vue&type=style&index=0&id=7aaa437c&scoped=true&lang=css\"\nimport \"./MoveFileDialog.vue?vue&type=style&index=1&id=7aaa437c&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aaa437c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"mobile-drawer-header\"\n};\nconst _hoisted_2 = {\n class: \"mobile-drawer-title\"\n};\nconst _hoisted_3 = {\n class: \"mobile-drawer-content\"\n};\nconst _hoisted_4 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"drawer-slide\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-overlay\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"mobile-drawer\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('mobileDirectory.title')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"mobile-drawer-close\",\n onClick: $options.close\n }, null, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: !$props.currentPath\n }]),\n onClick: _cache[0] || (_cache[0] = $event => $options.navigate(''))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.rootDirectory')), 1)], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (folder, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: index === $options.pathParts.length - 1\n }]),\n style: _normalizeStyle({\n paddingLeft: (index + 1) * 16 + 16 + 'px'\n }),\n onClick: $event => $options.navigate($options.pathParts.slice(0, index + 1).join('/'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(folder), 1)], 14, _hoisted_4);\n }), 128)), $props.currentPath ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-back\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goBack && $options.goBack(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.goBack')), 1)])) : _createCommentVNode(\"\", true)])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'MobileDirectoryDrawer',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentPath: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'navigate', 'goBack'],\n computed: {\n pathParts() {\n return this.currentPath.split('/').filter(Boolean);\n }\n },\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n navigate(path) {\n this.$emit('navigate', path);\n this.close();\n },\n goBack() {\n this.$emit('goBack');\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileDirectoryDrawer.vue?vue&type=template&id=3b79a1b6&scoped=true\"\nimport script from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\n\nimport \"./MobileDirectoryDrawer.vue?vue&type=style&index=0&id=3b79a1b6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3b79a1b6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"bottom-sheet-header\"\n};\nconst _hoisted_2 = {\n class: \"bottom-sheet-title\"\n};\nconst _hoisted_3 = {\n class: \"bottom-sheet-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"bottom-sheet\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bottom-sheet-overlay\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_cache[10] || (_cache[10] = _createElementVNode(\"div\", {\n class: \"bottom-sheet-handle\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.title), 1)]), _createElementVNode(\"div\", _hoisted_3, [!$props.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[0] || (_cache[0] = $event => $options.handleAction('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.viewDetail')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[1] || (_cache[1] = $event => $options.handleAction('copy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleAction('download'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.downloadFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleAction('tag'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.tagManagement')), 1)])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[5] || (_cache[5] = $event => $options.handleAction('folderCopy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[6] || (_cache[6] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFolder')), 1)])], 64)), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item bottom-sheet-danger\",\n onClick: _cache[7] || (_cache[7] = $event => $options.handleAction('delete'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString($props.isFolder ? _ctx.$t('mobileAction.deleteFolder') : _ctx.$t('mobileAction.deleteFile')), 1)])])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","export default {\n name: 'MobileActionSheet',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n title: {\n type: String,\n default: ''\n },\n isFolder: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:modelValue', 'action'],\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n handleAction(action) {\n this.$emit('action', action);\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileActionSheet.vue?vue&type=template&id=efef5a4c&scoped=true\"\nimport script from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\nexport * from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\n\nimport \"./MobileActionSheet.vue?vue&type=style&index=0&id=efef5a4c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-efef5a4c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"batch-tag-container\"\n};\nconst _hoisted_2 = {\n class: \"tab-content\"\n};\nconst _hoisted_3 = {\n class: \"tab-description\"\n};\nconst _hoisted_4 = {\n class: \"input-section\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = {\n class: \"tags-to-add-section\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_9 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_10 = {\n class: \"action-buttons\"\n};\nconst _hoisted_11 = {\n class: \"tab-content\"\n};\nconst _hoisted_12 = {\n class: \"tab-description\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_14 = {\n class: \"tags-container\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_16 = {\n class: \"tab-content\"\n};\nconst _hoisted_17 = {\n class: \"tab-description\"\n};\nconst _hoisted_18 = {\n class: \"action-buttons\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('batchTag.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.activeTab = $event),\n type: \"border-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.addTab'),\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, _toDisplayString(_ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n })), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('batchTag.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddInputTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddInputTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_6);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.pendingTags')), 1), $data.tagsToAdd.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.tagsToAdd, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('batchTag.noPendingTags')), 1))]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.executeAddTags,\n loading: $data.loading,\n disabled: $data.tagsToAdd.length === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.addToAllFiles')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.removeTab'),\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('batchTag.removeDescription')), 1), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.commonTags')), 1), _createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.commonTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveCommonTag(tag),\n class: \"tag-item\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('batchTag.noCommonTags')), 1))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.clearTab'),\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"p\", _hoisted_17, _toDisplayString(_ctx.$t('batchTag.clearDescription', {\n count: $options.fileCount\n })), 1), _createVNode(_component_el_alert, {\n title: _ctx.$t('batchTag.clearWarningTitle'),\n type: \"warning\",\n description: _ctx.$t('batchTag.clearWarningDesc'),\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }, null, 8, [\"title\", \"description\"]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.confirmClearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'BatchTagDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n selectedFiles: {\n type: Array,\n required: true,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n activeTab: 'add',\n inputTag: '',\n tagsToAdd: [],\n commonTags: [],\n suggestions: [],\n showSuggestions: false,\n loading: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '600px';\n },\n selectedFilesOnly() {\n // 排除文件夹,只保留文件\n return this.selectedFiles.filter(file => !file.isFolder);\n },\n fileCount() {\n return this.selectedFilesOnly.length;\n },\n fileIds() {\n return this.selectedFilesOnly.map(file => file.name);\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadCommonTags();\n } else {\n this.resetData();\n }\n },\n activeTab(newTab) {\n if (newTab === 'remove') {\n this.loadCommonTags();\n }\n }\n },\n methods: {\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n },\n async loadCommonTags() {\n if (this.selectedFilesOnly.length === 0) {\n this.commonTags = [];\n return;\n }\n try {\n // 获取所有文件的标签\n const tagPromises = this.selectedFilesOnly.map(file => fetchWithAuth(`/api/manage/tags/${encodeURIComponent(file.name)}`, {\n method: 'GET'\n }));\n const responses = await Promise.all(tagPromises);\n const allTags = [];\n for (const response of responses) {\n if (response.ok) {\n const data = await response.json();\n allTags.push(data.tags || []);\n }\n }\n\n // 找出共有标签\n if (allTags.length > 0) {\n this.commonTags = allTags[0].filter(tag => allTags.every(tags => tags.includes(tag)));\n } else {\n this.commonTags = [];\n }\n } catch (error) {\n console.error('Error loading common tags:', error);\n ElMessage.error(this.$t('batchTag.loadCommonTagsFailed'));\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.tagsToAdd.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddInputTag();\n },\n handleAddInputTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.tagsToAdd.includes(tag)) {\n ElMessage.warning(this.$t('batchTag.tagAlreadyInList'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.tagsToAdd.push(tag);\n this.inputTag = '';\n this.showSuggestions = false;\n },\n removeFromToAdd(tag) {\n const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\n if (this.tagsToAdd.length === 0) {\n ElMessage.warning(this.$t('batchTag.pleaseAddTags'));\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.addSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveCommonTag(tag) {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.removeSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('batchTag.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n ElMessageBox.confirm(this.$t('batchTag.clearConfirmMessage', {\n count: this.fileCount\n }), this.$t('batchTag.clearConfirmTitle'), {\n confirmButtonText: this.$t('batchTag.clearConfirmOk'),\n cancelButtonText: this.$t('batchTag.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info(this.$t('batchTag.clearCancelled'));\n });\n },\n async executeClearTags() {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.clearSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error(this.$t('batchTag.clearFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClose() {\n this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=0d04afa1&scoped=true\"\nimport script from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\nexport * from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\n\nimport \"./BatchTagDialog.vue?vue&type=style&index=0&id=0d04afa1&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0d04afa1\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-management-container\"\n};\nconst _hoisted_2 = {\n class: \"input-section\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_4 = [\"onClick\"];\nconst _hoisted_5 = {\n class: \"current-tags-section\"\n};\nconst _hoisted_6 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_7 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_8 = {\n class: \"popular-tags-section\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"empty-message\"\n};\nconst _hoisted_12 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_Loading = _resolveComponent(\"Loading\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('tagManagement.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('tagManagement.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_4);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.currentTags')), 1), $data.currentTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('tagManagement.noTags')), 1))]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.popularTags')), 1), $data.popularTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.popularTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n onClick: $event => $options.handleAddPopularTag(tag),\n class: \"tag-item clickable\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))])) : $data.loadingPopularTags ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_icon, {\n class: \"is-loading\"\n }, {\n default: _withCtx(() => [_createVNode(_component_Loading)]),\n _: 1\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('tagManagement.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString(_ctx.$t('tagManagement.noPopularTags')), 1))])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n currentTags: [],\n inputTag: '',\n suggestions: [],\n popularTags: [],\n showSuggestions: false,\n loading: false,\n loadingPopularTags: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '500px';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n methods: {\n async loadFileTags() {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n } else {\n throw new Error('Failed to load tags');\n }\n } catch (error) {\n console.error('Error loading file tags:', error);\n ElMessage.error(this.$t('tagManagement.loadFailed'));\n }\n },\n async loadPopularTags() {\n this.loadingPopularTags = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/autocomplete?limit=20', {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.popularTags = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n }\n } catch (error) {\n console.error('Error loading popular tags:', error);\n } finally {\n this.loadingPopularTags = false;\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddTag();\n },\n async handleAddTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.currentTags.includes(tag)) {\n ElMessage.warning(this.$t('tagManagement.tagExists'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.inputTag = '';\n this.showSuggestions = false;\n ElMessage.success(this.$t('tagManagement.addSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n const error = await response.json();\n throw new Error(error.message || this.$t('tagManagement.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || this.$t('tagManagement.addFailed'));\n }\n },\n async handleRemoveTag(tag) {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n ElMessage.success(this.$t('tagManagement.removeSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error(this.$t('tagManagement.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('tagManagement.removeFailed'));\n }\n },\n handleAddPopularTag(tag) {\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=24c809e4&scoped=true\"\nimport script from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\nexport * from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\n\nimport \"./TagManagementDialog.vue?vue&type=style&index=0&id=24c809e4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-24c809e4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"detail-actions\"\n};\nconst _hoisted_2 = {\n class: \"preview-section\"\n};\nconst _hoisted_3 = {\n class: \"preview-content\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1\n};\nconst _hoisted_7 = {\n key: 1\n};\nconst _hoisted_8 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"align-items\": \"center\",\n \"gap\": \"6px\"\n }\n};\nconst _hoisted_9 = {\n key: 1,\n style: {\n \"color\": \"#59636E\"\n }\n};\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_11 = {\n key: 1,\n style: {\n \"color\": \"#59636E\"\n }\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('fileDetail.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [!$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('download')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.download')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 1,\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('tagManagement')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.tags')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 2,\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('block')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.blacklist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 3,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.$emit('white')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.whitelist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 4,\n type: \"danger\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$emit('delete')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.deleteBtn')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 5,\n type: \"warning\",\n onClick: _cache[5] || (_cache[5] = $event => $options.startEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.edit')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 6,\n type: \"info\",\n onClick: _cache[6] || (_cache[6] = $event => $options.openRenameDialog()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"i-cursor\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.rename')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 7,\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => $options.saveMetadata()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\",\n loading: $data.editSaving\n }, {\n default: _withCtx(() => [!$data.editSaving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\",\n style: {\n \"margin-right\": \"3px\"\n }\n })) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.save')), 1)]),\n _: 1\n }, 8, [\"loading\"])) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 8,\n onClick: _cache[8] || (_cache[8] = $event => $options.cancelEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.cancel')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.activeTab = $event),\n onTabClick: $options.handleTabClick,\n style: {\n \"margin-bottom\": \"10px\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('fileDetail.originUrl'),\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: \"Markdown\",\n name: \"mdUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.mdUrl,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $props.urls.mdUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"HTML\",\n name: \"htmlUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.htmlUrl,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $props.urls.htmlUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"BBCode\",\n name: \"bbUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.bbUrl,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $props.urls.bbUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), $props.file?.metadata?.TgFileId ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 0,\n label: \"TG File ID\",\n name: \"tgId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.tgId,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $props.urls.tgId = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3Location ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 1,\n label: \"S3 Location\",\n name: \"s3Location\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3Location,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $props.urls.S3Location = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3CdnFileUrl ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 2,\n label: \"S3 CDN URL\",\n name: \"s3CdnFileUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3CdnFileUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $props.urls.S3CdnFileUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [$options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n src: $props.fileLink,\n autoplay: \"\",\n muted: \"\",\n loop: \"\",\n class: \"video-preview\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.openImageLink && $options.openImageLink(...args))\n }, null, 8, _hoisted_4)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_5)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n \"preview-src-list\": [$props.fileLink],\n \"preview-teleported\": true,\n fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))])]), _createVNode(_component_el_descriptions, {\n border: \"\",\n column: $options.descColumn\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileNameLabel')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileName,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.editForm.FileName = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileType')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileType,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.editForm.FileType = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileTypePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString($props.file?.metadata?.FileType || _ctx.$t('fileDetail.unknown')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileSizeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.fileSizeDisplay), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.imageDimensions')\n }, {\n default: _withCtx(() => [$options.imageDimensions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Width) + \" × \" + _toDisplayString($props.file?.metadata?.Height), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"display\": \"inline-flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.orientationIcon), 1)]),\n _: 1\n })])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('fileDetail.noDimensions')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadTimeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.channelTypeAndName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.accessStatusAndReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: $options.accessTagType,\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Label || _ctx.$t('fileDetail.noTags')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadIP')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadAddressLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileTags')\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.file?.metadata?.Tags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128))])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('fileDetail.noTags')), 1))]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"column\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showRenameDialog,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.showRenameDialog = $event),\n title: _ctx.$t('fileDetail.renameTitle'),\n width: $options.dialogWidth,\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[21] || (_cache[21] = $event => $options.closeRenameDialog())\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameCancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[22] || (_cache[22] = $event => $options.submitRename()),\n loading: $data.renameSaving,\n disabled: !$data.renameValidation.valid\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameConfirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n onSubmit: _withModifiers($options.submitRename, [\"prevent\"])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('fileDetail.renameLabel'),\n error: $data.renameValidation.error\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.renameForm.newFileId,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.renameForm.newFileId = $event),\n placeholder: _ctx.$t('fileDetail.renamePlaceholder'),\n onInput: $options.validateRenameInput,\n clearable: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"onInput\"])]),\n _: 1\n }, 8, [\"label\", \"error\"])]),\n _: 1\n }, 8, [\"onSubmit\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","/**\r\n * File_ID 验证器模块\r\n * 提供 File_ID 格式验证功能,用于重命名操作的前端校验\r\n * 非法字符规则复用 pathValidator 的字符集\r\n */\r\n\r\n/**\r\n * 非法字符正则表达式\r\n * 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n * 与 pathValidator.js 保持一致\r\n */\r\nconst INVALID_CHARS = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n\r\n/**\r\n * 验证 File_ID 格式\r\n * @param {string} newFileId - 新的 File_ID\r\n * @param {string} currentFileId - 当前 File_ID\r\n * @returns {{ valid: boolean, error?: string }}\r\n */\r\nexport function validateFileId(newFileId, currentFileId) {\r\n // 1. 空值/纯空白检测\r\n if (!newFileId || newFileId.trim() === '') {\r\n return {\r\n valid: false,\r\n error: '文件名不能为空'\r\n };\r\n }\r\n\r\n // 2. 与当前 File_ID 相同检测\r\n if (newFileId === currentFileId) {\r\n return {\r\n valid: false,\r\n error: '文件名未发生变化'\r\n };\r\n }\r\n\r\n // 3. 路径穿越检测\r\n if (newFileId.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 3.5 单独的 . 路径段检测(仅检查 /./ 或开头 ./,不检查末尾以允许继续输入如 .123)\r\n if (/\\/\\.\\//.test(newFileId) || /^\\.\\//.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 4. 非法字符检测(复用 pathValidator 的字符规则)\r\n if (INVALID_CHARS.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名包含非法字符,请使用合法的文件名格式'\r\n };\r\n }\r\n\r\n // 5. 连续斜杠检测\r\n if (newFileId.includes('//')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含连续的斜杠'\r\n };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n","import { ElMessage } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFileId } from '@/utils/fileIdValidator';\nexport default {\n name: 'FileDetailDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n file: {\n type: Object,\n default: null\n },\n fileLink: {\n type: String,\n default: ''\n },\n urls: {\n type: Object,\n default: () => ({\n originUrl: '',\n mdUrl: '',\n htmlUrl: '',\n bbUrl: '',\n tgId: '',\n S3Location: '',\n S3CdnFileUrl: ''\n })\n }\n },\n emits: ['update:modelValue', 'download', 'tagManagement', 'block', 'white', 'delete', 'metadataUpdated', 'fileRenamed'],\n watch: {\n visible(val) {\n if (!val) {\n // 关闭弹窗时退出编辑状态\n this.isEditing = false;\n this.editSaving = false;\n }\n }\n },\n data() {\n return {\n activeTab: 'originUrl',\n isEditing: false,\n editForm: {\n FileName: '',\n FileType: ''\n },\n editSaving: false,\n showRenameDialog: false,\n renameForm: {\n newFileId: ''\n },\n renameValidation: {\n valid: true,\n error: ''\n },\n renameSaving: false\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '95%' : '900px';\n },\n descColumn() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n uploadTime() {\n if (this.file?.metadata?.TimeStamp) {\n return new Date(this.file.metadata.TimeStamp).toLocaleString();\n }\n return this.$t('fileDetail.unknown');\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return this.$t('fileDetail.accessNormalWhitelist');\n if (listType === 'Block') return this.$t('fileDetail.accessBlockedBlacklist');\n if (label === 'adult') return this.$t('fileDetail.accessBlockedReview');\n return this.$t('fileDetail.accessNormal');\n },\n accessTagType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return 'success';\n if (listType === 'Block') return 'danger';\n if (label === 'adult') return 'danger';\n return 'success';\n },\n imageDimensions() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (width && height) return true;\n return null;\n },\n orientationIcon() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (!width || !height) return '';\n const ratio = width / height;\n if (ratio > 1.1) return this.$t('fileDetail.orientationLandscape');\n if (ratio < 0.9) return this.$t('fileDetail.orientationPortrait');\n return this.$t('fileDetail.orientationSquare');\n },\n fileSizeDisplay() {\n const sizeBytes = this.file?.metadata?.FileSizeBytes;\n const sizeMB = this.file?.metadata?.FileSize;\n if (sizeBytes) {\n // 根据大小选择合适的单位\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(2)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return this.$t('fileDetail.unknown');\n }\n },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) video.play();else video.pause();\n },\n handleTabClick() {},\n handleUrlClick(e) {\n const input = e.target;\n input.select();\n navigator.clipboard.writeText(input.value).then(() => {\n ElMessage.success(this.$t('fileDetail.linkCopied'));\n });\n },\n openImageLink() {\n if (this.fileLink) {\n window.open(this.fileLink, '_blank');\n }\n },\n startEdit() {\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.isEditing = true;\n },\n cancelEdit() {\n this.isEditing = false;\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.editSaving = false;\n },\n async saveMetadata() {\n this.editSaving = true;\n try {\n const fileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/metadata/${fileId}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n FileName: this.editForm.FileName,\n FileType: this.editForm.FileType\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.metadataSaved'));\n this.isEditing = false;\n this.$emit('metadataUpdated', fileId, data.metadata);\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n }\n } catch (error) {\n console.error('Error saving metadata:', error);\n ElMessage.error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n } finally {\n this.editSaving = false;\n }\n },\n openRenameDialog() {\n this.renameForm.newFileId = this.file?.name || '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n this.showRenameDialog = true;\n },\n closeRenameDialog() {\n this.showRenameDialog = false;\n this.renameForm.newFileId = '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n },\n validateRenameInput() {\n const result = validateFileId(this.renameForm.newFileId, this.file?.name || '');\n this.renameValidation = {\n valid: result.valid,\n error: result.error || ''\n };\n },\n async submitRename() {\n if (this.renameSaving) return;\n\n // Validate input first\n this.validateRenameInput();\n if (!this.renameValidation.valid) {\n return;\n }\n this.renameSaving = true;\n try {\n const oldFileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/rename/${oldFileId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n newFileId: this.renameForm.newFileId\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.renameSuccess'));\n this.showRenameDialog = false;\n this.$emit('fileRenamed', oldFileId, this.renameForm.newFileId, data.metadata);\n } else if (response.status === 409) {\n // Conflict — target File_ID already exists\n this.renameValidation = {\n valid: false,\n error: this.$t('fileDetail.renameConflict')\n };\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.renameFailed'));\n }\n } catch (error) {\n console.error('Error renaming file:', error);\n ElMessage.error(error.message || this.$t('fileDetail.renameFailed'));\n } finally {\n this.renameSaving = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=38a97614&scoped=true\"\nimport script from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\nexport * from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\n\nimport \"./FileDetailDialog.vue?vue&type=style&index=0&id=38a97614&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-38a97614\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"batch-floating-bar\"\n};\nconst _hoisted_2 = {\n class: \"batch-selection-summary\"\n};\nconst _hoisted_3 = {\n class: \"batch-selection-count\"\n};\nconst _hoisted_4 = {\n class: \"batch-floating-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"batch-toolbar\"\n }, {\n default: _withCtx(() => [$props.selectedCount > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"batch-floating-btn ghost\",\n \"aria-label\": _ctx.$t('dashboard.clearSelection'),\n onClick: $options.handleClear\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"batch-floating-icon\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _cache[0] || (_cache[0] = _createElementVNode(\"span\", {\n class: \"batch-toolbar-divider\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_4, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.actions, action => {\n return _openBlock(), _createBlock(_component_el_tooltip, {\n key: action.command,\n disabled: $options.disableTooltip,\n content: _ctx.$t(action.label),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"batch-floating-btn\", action.className]),\n \"aria-label\": _ctx.$t(action.label),\n onClick: $event => $options.handleAction(action.command)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: action.icon,\n class: \"batch-floating-icon\"\n }, null, 8, [\"icon\"])]),\n _: 2\n }, 1032, [\"class\", \"aria-label\", \"onClick\"])]),\n _: 2\n }, 1032, [\"disabled\", \"content\"]);\n }), 128))])])) : _createCommentVNode(\"\", true)]),\n _: 1\n });\n}","export default {\n name: 'BatchActionBar',\n props: {\n selectedCount: {\n type: Number,\n required: true\n }\n },\n emits: ['action', 'clear'],\n data() {\n return {\n actions: [{\n command: 'copy',\n label: 'dashboard.copy',\n icon: 'copy',\n className: 'copy'\n }, {\n command: 'download',\n label: 'dashboard.download',\n icon: 'download',\n className: 'download'\n }, {\n command: 'move',\n label: 'dashboard.move',\n icon: 'file-export',\n className: 'move'\n }, {\n command: 'tagManagement',\n label: 'dashboard.tagManagement',\n icon: 'tags',\n className: 'tag'\n }, {\n command: 'ban',\n label: 'dashboard.addToBlacklist',\n icon: 'ban',\n className: 'ban'\n }, {\n command: 'white',\n label: 'dashboard.addToWhitelist',\n icon: 'shield-alt',\n className: 'white'\n }, {\n command: 'delete',\n label: 'dashboard.delete',\n icon: 'trash-alt',\n className: 'danger'\n }]\n };\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n }\n },\n methods: {\n handleAction(command) {\n this.$emit('action', command);\n },\n handleClear() {\n this.$emit('clear');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchActionBar.vue?vue&type=template&id=6de9da06&scoped=true\"\nimport script from \"./BatchActionBar.vue?vue&type=script&lang=js\"\nexport * from \"./BatchActionBar.vue?vue&type=script&lang=js\"\n\nimport \"./BatchActionBar.vue?vue&type=style&index=0&id=6de9da06&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6de9da06\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, withKeys as _withKeys, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"aria-checked\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"dashboard-checkbox\", [`dashboard-checkbox--${$props.variant}`, {\n 'checked': $props.checked,\n 'indeterminate': $props.indeterminate && !$props.checked\n }]]),\n role: \"checkbox\",\n \"aria-checked\": $options.ariaChecked,\n tabindex: \"0\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args)),\n onKeydown: [_cache[1] || (_cache[1] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"enter\"])), _cache[2] || (_cache[2] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"space\"]))]\n }, [$props.checked ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"dashboard-checkbox-mark\"\n })) : $props.indeterminate ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"minus\",\n class: \"dashboard-checkbox-mark\"\n })) : _createCommentVNode(\"\", true)], 42, _hoisted_1);\n}","export default {\n name: 'DashboardCheckbox',\n props: {\n checked: {\n type: Boolean,\n default: false\n },\n indeterminate: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: 'list',\n validator: value => ['list', 'breadcrumb'].includes(value)\n }\n },\n emits: ['click'],\n computed: {\n ariaChecked() {\n if (this.checked) return 'true';\n if (this.indeterminate) return 'mixed';\n return 'false';\n }\n },\n methods: {\n handleClick(event) {\n this.$emit('click', event);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardCheckbox.vue?vue&type=template&id=f8222714&scoped=true\"\nimport script from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardCheckbox.vue?vue&type=style&index=0&id=f8222714&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f8222714\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n class: \"filename-start\"\n};\nconst _hoisted_6 = {\n class: \"filename-end\"\n};\nconst _hoisted_7 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_9 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_10 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"channel-name-box\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_13 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"address-box\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"list-item\",\n onTouchstart: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[9] || (_cache[9] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_DashboardCheckbox, {\n checked: $data.localSelected,\n onClick: _withModifiers($options.toggleSelect, [\"stop\"])\n }, null, 8, [\"checked\", \"onClick\"])]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [$options.isFolder ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"list-folder-icon\"\n })) : $options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: $props.fileLink,\n class: \"list-preview-img\",\n muted: \"\",\n preload: \"metadata\"\n }, null, 8, _hoisted_2)) : $options.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 2,\n src: $props.fileLink,\n class: \"list-preview-img\",\n loading: \"lazy\",\n decoding: \"async\"\n }, null, 8, _hoisted_3)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"list-file-icon\"\n }))]), _createElementVNode(\"div\", {\n class: \"list-col list-col-name\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [_createElementVNode(\"span\", {\n class: \"filename-ellipsis\",\n title: $options.displayName\n }, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.fileNameStart), 1), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.fileNameEnd), 1)], 8, _hoisted_4)]), _createElementVNode(\"div\", _hoisted_7, [!$options.isFolder && $props.item.metadata?.Tags && $props.item.metadata.Tags.length > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.item.metadata.Tags.slice(0, 3), (tag, tagIndex) => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: tagIndex,\n class: \"color-tag\",\n style: _normalizeStyle({\n background: $options.getTagColor(tagIndex)\n })\n }, _toDisplayString(tag), 5);\n }), 128)), $props.item.metadata.Tags.length > 3 ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"color-tag color-tag-more\",\n style: _normalizeStyle({\n background: $options.getTagColor(3)\n })\n }, \"+\" + _toDisplayString($props.item.metadata.Tags.length - 3), 5)) : _createCommentVNode(\"\", true)], 64)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"-\"))]), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.isFolder ? '-' : $props.item.metadata?.Channel || $props.item.channelTag || '-'), 1), _createElementVNode(\"div\", _hoisted_10, [!$options.isFolder && $props.item.metadata?.ChannelName ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString($props.item.metadata.ChannelName), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))]), _createElementVNode(\"div\", _hoisted_13, [!$options.isFolder && $props.item.metadata?.UploadIP ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString($props.item.metadata.UploadIP), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_15, \"-\"))]), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.isFolder ? '-' : $options.fileSizeDisplay), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.uploadDate), 1), _createElementVNode(\"div\", _hoisted_18, [!$options.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[2] || (_cache[2] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('folderCopy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[7] || (_cache[7] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"content\"])])], 32);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nexport default {\n name: 'FileListItem',\n components: {\n DashboardCheckbox\n },\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n default: ''\n }\n },\n emits: ['update:selected', 'enter', 'detail', 'copy', 'folderCopy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n tagColors: ['#f472b6', '#a78bfa', '#60a5fa', '#34d399']\n };\n },\n computed: {\n isFolder() {\n // 检查 isFolder 属性或名称以 / 结尾\n return this.item.isFolder || this.item.name?.endsWith('/');\n },\n isVideo() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isImage() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp');\n },\n displayName() {\n if (this.isFolder) {\n const parts = this.item.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.item.name;\n }\n return this.item.metadata?.FileName || this.getFileName(this.item.name);\n },\n fileNameStart() {\n const name = this.displayName;\n if (name.length <= 20) return name;\n return name.slice(0, -8);\n },\n fileNameEnd() {\n const name = this.displayName;\n if (name.length <= 20) return '';\n return name.slice(-8);\n },\n uploadDate() {\n if (this.item.uploaded) {\n return new Date(this.item.uploaded).toLocaleDateString();\n }\n if (this.item.metadata?.TimeStamp) {\n return new Date(this.item.metadata.TimeStamp).toLocaleDateString();\n }\n return '-';\n },\n fileSizeDisplay() {\n const sizeBytes = this.item.metadata?.FileSizeBytes;\n const sizeMB = this.item.metadata?.FileSize;\n if (sizeBytes) {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return '-';\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n },\n methods: {\n toggleSelect() {\n this.localSelected = !this.localSelected;\n this.$emit('update:selected', this.localSelected);\n },\n handlePreviewClick() {\n if (this.isFolder) {\n this.$emit('enter');\n } else {\n this.$emit('detail');\n }\n },\n getFileName(name) {\n const parts = (name || '').split('/');\n return parts[parts.length - 1];\n },\n getTagColor(index) {\n return this.tagColors[index % this.tagColors.length];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileListItem.vue?vue&type=template&id=4b029ac8&scoped=true\"\nimport script from \"./FileListItem.vue?vue&type=script&lang=js\"\nexport * from \"./FileListItem.vue?vue&type=script&lang=js\"\n\nimport \"./FileListItem.vue?vue&type=style&index=0&id=4b029ac8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b029ac8\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"file-short-info\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"success-tag\"\n};\nconst _hoisted_3 = {\n key: 1,\n class: \"fail-tag\"\n};\nconst _hoisted_4 = {\n key: 2,\n class: \"success-tag\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"primary-tag\"\n};\nconst _hoisted_6 = {\n key: 0,\n style: {\n \"margin-left\": \"2px\"\n }\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"skeleton-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"error-text\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_12 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_13 = {\n class: \"file-name-row\"\n};\nconst _hoisted_14 = {\n class: \"file-name\"\n};\nconst _hoisted_15 = {\n class: \"action-bar\"\n};\nconst _hoisted_16 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_17 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card\",\n onTouchstart: _cache[17] || (_cache[17] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[18] || (_cache[18] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[19] || (_cache[19] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", _hoisted_1, [$props.item.metadata?.ListType === 'White' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString($options.channelTag), 1)) : $props.item.metadata?.ListType === 'Block' || $props.item.metadata?.Label === 'adult' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($options.channelTag), 1)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString($options.channelTag), 1)), $props.item.metadata?.Tags && $props.item.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\",\n style: {\n \"margin-right\": \"3px\",\n \"font-size\": \"12px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString($props.item.metadata.Tags[0]) + \" \", 1), $props.item.metadata.Tags.length > 1 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" (+\" + _toDisplayString($props.item.metadata.Tags.length - 1) + \") \", 1)) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)]), $options.isVideo ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [$data.videoLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7)) : $data.videoError ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"error-wrapper\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])) : _createCommentVNode(\"\", true), _withDirectives(_createElementVNode(\"video\", {\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[5] || (_cache[5] = $event => $options.handleVideoHover($event, false)),\n onFullscreenchange: _cache[6] || (_cache[6] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onWebkitfullscreenchange: _cache[7] || (_cache[7] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onLoadeddata: _cache[8] || (_cache[8] = $event => $data.videoLoading = false),\n onError: _cache[9] || (_cache[9] = (...args) => $options.handleVideoError && $options.handleVideoError(...args))\n }, null, 40, _hoisted_9), [[_vShow, !$data.videoLoading && !$data.videoError]])], 64)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"music\",\n class: \"file-icon audio-icon\"\n })])) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n \"preview-teleported\": true,\n src: $props.fileLink,\n \"preview-src-list\": $props.previewSrcList,\n fit: \"cover\",\n lazy: \"\",\n decoding: \"async\",\n class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, null, -1)]))]),\n error: _withCtx(() => [_createElementVNode(\"div\", {\n class: \"error-wrapper\",\n onClick: _cache[11] || (_cache[11] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.detail'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[12] || (_cache[12] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[13] || (_cache[13] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[14] || (_cache[14] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[15] || (_cache[15] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[16] || (_cache[16] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])])]),\n _: 1\n });\n}","export default {\n name: 'FileCard',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n required: true\n },\n previewSrcList: {\n type: Array,\n default: () => []\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'detail', 'copy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n videoLoading: true,\n videoError: false\n };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n displayName() {\n const fileName = this.item.metadata?.FileName || this.item.name || '';\n const parts = fileName.split('/');\n return parts[parts.length - 1];\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n },\n fileLink() {\n // 链接变化时重置加载状态\n this.videoLoading = true;\n this.videoError = false;\n }\n },\n methods: {\n handleVideoError() {\n this.videoLoading = false;\n this.videoError = true;\n },\n handleVideoClick(e) {\n const video = e.target;\n if (video.requestFullscreen) {\n video.requestFullscreen();\n } else if (video.webkitRequestFullscreen) {\n video.webkitRequestFullscreen();\n } else if (video.mozRequestFullScreen) {\n video.mozRequestFullScreen();\n } else if (video.msRequestFullscreen) {\n video.msRequestFullscreen();\n }\n },\n handleFullscreenChange(e) {\n const video = e.target;\n const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n if (isFullscreen) {\n // 进入全屏:取消静音和循环\n video.muted = false;\n video.loop = false;\n } else {\n // 退出全屏:恢复静音和循环,暂停并重置\n video.muted = true;\n video.loop = true;\n video.pause();\n video.currentTime = 0;\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileCard.vue?vue&type=template&id=12b39bad&scoped=true\"\nimport script from \"./FileCard.vue?vue&type=script&lang=js\"\nexport * from \"./FileCard.vue?vue&type=script&lang=js\"\n\nimport \"./FileCard.vue?vue&type=style&index=0&id=12b39bad&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-12b39bad\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_2 = {\n class: \"file-name-row\"\n};\nconst _hoisted_3 = {\n class: \"file-name\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"action-bar\"\n};\nconst _hoisted_5 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card folder-card\",\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", {\n class: \"folder-icon\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('enter'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"folder-icon-svg\"\n })]), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($options.folderName), 1)]), $props.showActions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_cache[9] || (_cache[9] = _createElementVNode(\"div\", {\n class: \"action-bar-left\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n });\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FolderCard',\n props: {\n name: {\n type: String,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n showActions: {\n type: Boolean,\n default: true\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'enter', 'copy', 'move', 'delete', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected\n };\n },\n computed: {\n folderName() {\n const parts = this.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.name;\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FolderCard.vue?vue&type=template&id=e3ec6a12&scoped=true\"\nimport script from \"./FolderCard.vue?vue&type=script&lang=js\"\nexport * from \"./FolderCard.vue?vue&type=script&lang=js\"\n\nimport \"./FolderCard.vue?vue&type=style&index=0&id=e3ec6a12&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e3ec6a12\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createStaticVNode as _createStaticVNode } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return $props.type === 'card' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'skeleton-' + i,\n class: \"skeleton-card\"\n }, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"div\", {\n class: \"skeleton-image\"\n }, null, -1), _createElementVNode(\"div\", {\n class: \"skeleton-info\"\n }, [_createElementVNode(\"div\", {\n class: \"skeleton-text\"\n })], -1)]))]);\n }), 128)) : $props.type === 'list' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'list-skeleton-' + i,\n class: \"list-item skeleton-list-item\"\n }, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"

\", 10)]))]);\n }), 128)) : _createCommentVNode(\"\", true);\n}","export default {\n name: 'SkeletonLoader',\n props: {\n type: {\n type: String,\n default: 'card',\n validator: value => ['card', 'list'].includes(value)\n },\n count: {\n type: Number,\n default: 15\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SkeletonLoader.vue?vue&type=template&id=070880ec&scoped=true\"\nimport script from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\nexport * from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\n\nimport \"./SkeletonLoader.vue?vue&type=style&index=0&id=070880ec&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-070880ec\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"el-dropdown-link filter-trigger\"\n};\nconst _hoisted_2 = {\n class: \"filter-section\"\n};\nconst _hoisted_3 = {\n class: \"filter-title\"\n};\nconst _hoisted_4 = {\n class: \"filter-options\"\n};\nconst _hoisted_5 = {\n class: \"filter-section\"\n};\nconst _hoisted_6 = {\n class: \"filter-title\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-title\"\n};\nconst _hoisted_10 = {\n class: \"filter-options\"\n};\nconst _hoisted_11 = {\n class: \"filter-section\"\n};\nconst _hoisted_12 = {\n class: \"filter-title\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n class: \"filter-section\"\n};\nconst _hoisted_15 = {\n class: \"filter-title\"\n};\nconst _hoisted_16 = {\n class: \"filter-options\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_18 = {\n class: \"filter-title\"\n};\nconst _hoisted_19 = {\n class: \"filter-options\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_21 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_22 = {\n class: \"filter-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_badge = _resolveComponent(\"el-badge\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n return _openBlock(), _createBlock(_component_el_dropdown, {\n \"hide-on-click\": false,\n trigger: \"click\",\n class: \"filter-dropdown\",\n ref: \"dropdownRef\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"filter-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('filter.accessStatus')), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.accessStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localFilters.accessStatus = $event),\n onChange: _cache[1] || (_cache[1] = $event => $options.handleFilterChange('accessStatus'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.accessStatusOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'accessStatus-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('filter.blackWhiteList')), 1), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.listType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.localFilters.listType = $event),\n onChange: _cache[3] || (_cache[3] = $event => $options.handleFilterChange('listType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.listTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'listType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('filter.reviewResult')), 1), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.label,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.localFilters.label = $event),\n onChange: _cache[5] || (_cache[5] = $event => $options.handleFilterChange('label'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.labelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'label-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('filter.fileType')), 1), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.fileType,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.localFilters.fileType = $event),\n onChange: _cache[7] || (_cache[7] = $event => $options.handleFilterChange('fileType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.fileTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'fileType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('filter.channelType')), 1), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channel,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.localFilters.channel = $event),\n onChange: _cache[9] || (_cache[9] = $event => $options.handleFilterChange('channel'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.channelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channel-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), $props.channelNameOptions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('filter.channelName')), 1), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.localFilters.channelName = $event),\n onChange: _cache[11] || (_cache[11] = $event => $options.handleFilterChange('channelName'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedChannelNames, (group, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: 'group-' + group.type\n }, [index > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(group.typeLabel), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.channels, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channelName-' + option.type + '-' + option.name,\n label: option.type + ':' + option.name\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.name), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))], 64);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('filter.clearFilters')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_1, [_createVNode(_component_el_badge, {\n value: $options.activeFilterCount,\n hidden: $options.activeFilterCount === 0,\n class: \"filter-badge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"filter\",\n class: \"header-icon\"\n })]),\n _: 1\n }, 8, [\"value\", \"hidden\"])])]),\n _: 1\n }, 512);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nexport default {\n name: 'FilterDropdown',\n props: {\n filters: {\n type: Object,\n default: () => ({\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'none'\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n })\n },\n channelNameOptions: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:filters', 'change'],\n data() {\n return {\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\n // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.blocked'),\n value: 'blocked'\n }];\n },\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions() {\n return [{\n label: this.$t('filter.whiteList'),\n value: 'White'\n }, {\n label: this.$t('filter.blackList'),\n value: 'Block'\n }, {\n label: this.$t('filter.notSet'),\n value: 'None'\n }];\n },\n // 审查结果选项\n labelOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.teenContent'),\n value: 'teen'\n }, {\n label: this.$t('filter.adultContent'),\n value: 'adult'\n }];\n },\n fileTypeOptions() {\n return [{\n label: this.$t('filter.image'),\n value: 'image'\n }, {\n label: this.$t('filter.video'),\n value: 'video'\n }, {\n label: this.$t('filter.audio'),\n value: 'audio'\n }, {\n label: this.$t('filter.other'),\n value: 'other'\n }];\n },\n channelOptions() {\n return [{\n label: 'Telegram',\n value: 'TelegramNew'\n }, {\n label: 'Cloudflare R2',\n value: 'CloudflareR2'\n }, {\n label: 'S3',\n value: 'S3'\n }, {\n label: 'Discord',\n value: 'Discord'\n }, {\n label: 'HuggingFace',\n value: 'HuggingFace'\n }, {\n label: 'WebDAV',\n value: 'WebDAV'\n }, {\n label: this.$t('filter.externalLink'),\n value: 'External'\n }];\n },\n activeFilterCount() {\n return Object.values(this.localFilters).reduce((count, arr) => count + arr.length, 0);\n },\n // 按类型分组渠道名称\n groupedChannelNames() {\n const groups = {};\n this.channelNameOptions.forEach(option => {\n if (!groups[option.type]) {\n groups[option.type] = {\n type: option.type,\n typeLabel: option.typeLabel,\n channels: []\n };\n }\n groups[option.type].channels.push(option);\n });\n return Object.values(groups);\n }\n },\n watch: {\n filters: {\n handler(newFilters) {\n this.localFilters = {\n accessStatus: Array.isArray(newFilters.accessStatus) ? [...newFilters.accessStatus] : [],\n listType: Array.isArray(newFilters.listType) ? [...newFilters.listType] : [],\n label: Array.isArray(newFilters.label) ? [...newFilters.label] : [],\n fileType: Array.isArray(newFilters.fileType) ? [...newFilters.fileType] : [],\n channel: Array.isArray(newFilters.channel) ? [...newFilters.channel] : [],\n channelName: Array.isArray(newFilters.channelName) ? [...newFilters.channelName] : []\n };\n },\n immediate: true,\n deep: true\n }\n },\n methods: {\n handleFilterChange(type) {\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type,\n filters: {\n ...this.localFilters\n }\n });\n },\n clearFilters() {\n this.localFilters = {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type: 'clear',\n filters: {\n ...this.localFilters\n }\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FilterDropdown.vue?vue&type=template&id=e6a38b20&scoped=true\"\nimport script from \"./FilterDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FilterDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./FilterDropdown.vue?vue&type=style&index=0&id=e6a38b20&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e6a38b20\"]])\n\nexport default __exports__","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withKeys as _withKeys, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content\"\n};\nconst _hoisted_3 = {\n class: \"search-area\"\n};\nconst _hoisted_4 = {\n class: \"search-card\"\n};\nconst _hoisted_5 = {\n class: \"actions\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_8 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_9 = {\n class: \"breadcrumb-view-toggle\",\n role: \"group\"\n};\nconst _hoisted_10 = [\"title\", \"aria-pressed\"];\nconst _hoisted_11 = [\"title\", \"aria-pressed\"];\nconst _hoisted_12 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_13 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_14 = [\"title\"];\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_16 = {\n class: \"empty-text\"\n};\nconst _hoisted_17 = {\n class: \"empty-hint\"\n};\nconst _hoisted_18 = {\n class: \"list-header\"\n};\nconst _hoisted_19 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_20 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_21 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_22 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_23 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_24 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_25 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_26 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_27 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_28 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_30 = {\n class: \"empty-text\"\n};\nconst _hoisted_31 = {\n class: \"empty-hint\"\n};\nconst _hoisted_32 = {\n class: \"pagination-container\"\n};\nconst _hoisted_33 = {\n class: \"pagination-center\"\n};\nconst _hoisted_34 = {\n class: \"pagination-right\"\n};\nconst _hoisted_35 = {\n class: \"page-total\"\n};\nconst _hoisted_36 = {\n class: \"page-jump\"\n};\nconst _hoisted_37 = {\n class: \"dialog-section\"\n};\nconst _hoisted_38 = {\n class: \"section-header\"\n};\nconst _hoisted_39 = {\n class: \"section-title\"\n};\nconst _hoisted_40 = {\n class: \"section-content\"\n};\nconst _hoisted_41 = {\n class: \"dialog-section\"\n};\nconst _hoisted_42 = {\n class: \"section-header\"\n};\nconst _hoisted_43 = {\n class: \"section-title\"\n};\nconst _hoisted_44 = {\n class: \"section-content\"\n};\nconst _hoisted_45 = {\n class: \"setting-item\"\n};\nconst _hoisted_46 = {\n class: \"setting-label\"\n};\nconst _hoisted_47 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_48 = {\n class: \"setting-label\"\n};\nconst _hoisted_49 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_FilterDropdown = _resolveComponent(\"FilterDropdown\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\");\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\");\n const _component_SkeletonLoader = _resolveComponent(\"SkeletonLoader\");\n const _component_FolderCard = _resolveComponent(\"FolderCard\");\n const _component_FileCard = _resolveComponent(\"FileCard\");\n const _component_FileListItem = _resolveComponent(\"FileListItem\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_main = _resolveComponent(\"el-main\");\n const _component_el_container = _resolveComponent(\"el-container\");\n const _component_BatchActionBar = _resolveComponent(\"BatchActionBar\");\n const _component_FileDetailDialog = _resolveComponent(\"FileDetailDialog\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_TagManagementDialog = _resolveComponent(\"TagManagementDialog\");\n const _component_BatchTagDialog = _resolveComponent(\"BatchTagDialog\");\n const _component_MobileActionSheet = _resolveComponent(\"MobileActionSheet\");\n const _component_MobileDirectoryDrawer = _resolveComponent(\"MobileDirectoryDrawer\");\n const _component_MoveFileDialog = _resolveComponent(\"MoveFileDialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_container, null, {\n default: _withCtx(() => [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"dashboard\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.tempSearch,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.tempSearch = $event),\n size: \"small\",\n placeholder: _ctx.$t('dashboard.searchPlaceholder'),\n onKeyup: _withKeys($options.handleSearch, [\"enter\"])\n }, {\n suffix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"search\",\n class: \"search-icon\",\n onClick: $options.handleSearch\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\"])]), _createVNode(_component_FilterDropdown, {\n filters: $data.filters,\n \"onUpdate:filters\": _cache[1] || (_cache[1] = $event => $data.filters = $event),\n channelNameOptions: $data.channelNameOptions,\n onChange: $options.handleFilterChange\n }, null, 8, [\"filters\", \"channelNameOptions\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_dropdown, {\n onCommand: $options.sort,\n \"hide-on-click\": false\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"dateDesc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByDateDesc')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByNameAsc')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: $options.sortIcon,\n class: \"header-icon\"\n }, null, 8, [\"icon\"])])]),\n _: 1\n }, 8, [\"onCommand\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showUrlDialog = true)\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: _normalizeClass([\"main-container\", {\n 'has-batch-toolbar': $data.selectedFiles.length > 0\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.selectPage,\n indeterminate: $options.selectedPageFiles && !$options.selectPage,\n variant: \"breadcrumb\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"checked\", \"indeterminate\", \"onClick\"]), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'card'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.cardView'),\n \"aria-pressed\": $data.viewMode === 'card',\n onClick: _cache[3] || (_cache[3] = $event => $options.setViewMode('card'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"th-large\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_10), _createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'list'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.listView'),\n \"aria-pressed\": $data.viewMode === 'list',\n onClick: _cache[4] || (_cache[4] = $event => $options.setViewMode('list'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"list\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_11)]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[5] || (_cache[5] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : _ctx.$t('dashboard.rootDirectory')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[6] || (_cache[6] = $event => $options.navigateToFolder(''))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"breadcrumb-home-icon\"\n })]),\n _: 1\n }), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentPath.split('/').filter(Boolean), (folder, index) => {\n return _openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: index,\n onClick: $event => $options.navigateToFolder($data.currentPath.split('/').filter(Boolean).slice(0, index + 1).join('/'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(folder), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))]),\n _: 1\n })]), _createElementVNode(\"span\", {\n class: \"stats-badge\",\n title: _ctx.$t('dashboard.totalFiles', {\n count: _ctx.$data.Number\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_14)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\",\n onTouchstartPassive: _cache[7] || (_cache[7] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[8] || (_cache[8] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[9] || (_cache[9] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_16, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_17, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [$options.isFolder(item) ? (_openBlock(), _createBlock(_component_FolderCard, {\n key: 0,\n name: item.name,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n showActions: !$data.isSearchMode,\n disableTooltip: $options.disableTooltip,\n onEnter: $event => $options.enterFolder(item.name),\n onCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onTouchstart: $event => $options.handleFolderTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"name\", \"selected\", \"onUpdate:selected\", \"showActions\", \"disableTooltip\", \"onEnter\", \"onCopy\", \"onMove\", \"onDelete\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"])) : (_openBlock(), _createBlock(_component_FileCard, {\n key: 1,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n previewSrcList: item.previewSrcList,\n disableTooltip: $options.disableTooltip,\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"previewSrcList\", \"disableTooltip\", \"onDetail\", \"onCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]))], 64);\n }), 128))], 34)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\",\n onTouchstartPassive: _cache[11] || (_cache[11] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[12] || (_cache[12] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[13] || (_cache[13] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.isSelectAll,\n indeterminate: $options.isIndeterminate,\n onClick: _cache[10] || (_cache[10] = $event => $options.handleSelectAllPage(!$options.isSelectAll))\n }, null, 8, [\"checked\", \"indeterminate\"])]), _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_22, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_23, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_24, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_25, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_26, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_28, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_30, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_31, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createBlock(_component_FileListItem, {\n key: index,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n onEnter: $event => $options.enterFolder(item.name),\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onFolderCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.isFolder(item) ? $options.handleFolderTouchStart(item, index) : $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"onEnter\", \"onDetail\", \"onCopy\", \"onFolderCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]);\n }), 128))], 34)), $setup.isDragging ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"drag-select-overlay\",\n style: _normalizeStyle({\n position: 'fixed',\n left: $setup.selectionRect.left + 'px',\n top: $setup.selectionRect.top + 'px',\n width: $setup.selectionRect.width + 'px',\n height: $setup.selectionRect.height + 'px'\n })\n }, null, 4)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_32, [_createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $options.filteredTableData.length,\n \"page-size\": $data.pageSize,\n \"current-page\": $data.currentPage,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"page-size\", \"current-page\", \"pager-count\", \"onCurrentChange\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.refreshFileList,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync\",\n class: _normalizeClass({\n 'fa-spin': $data.refreshLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"]), $data.currentPage === Math.ceil($options.filteredTableData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.loadMore')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.jumpPage = $event),\n size: \"small\",\n class: \"jump-input\",\n onKeyup: _withKeys($options.handleJumpPage, [\"enter\"])\n }, null, 8, [\"modelValue\", \"onKeyup\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: $options.handleJumpPage,\n class: \"jump-btn\"\n }, {\n default: _withCtx(() => [...(_cache[31] || (_cache[31] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n }), _createVNode(_component_BatchActionBar, {\n \"selected-count\": $data.selectedFiles.length,\n onAction: $options.handleBatchAction,\n onClear: $options.clearSelection\n }, null, 8, [\"selected-count\", \"onAction\", \"onClear\"]), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[16] || (_cache[16] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[17] || (_cache[17] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[18] || (_cache[18] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[19] || (_cache[19] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[20] || (_cache[20] = $event => $options.handleDetailDelete($data.detailFile?.name)),\n onMetadataUpdated: $options.handleMetadataUpdated,\n onFileRenamed: $options.handleFileRenamed\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\", \"onMetadataUpdated\", \"onFileRenamed\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('dashboard.linkFormat'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.defaultUrlFormat = $event),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"originUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"mdUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[32] || (_cache[32] = _createElementVNode(\"span\", null, \"Markdown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"htmlUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[33] || (_cache[33] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"bbUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[34] || (_cache[34] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"tgId\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"radio-icon\"\n }), _cache[35] || (_cache[35] = _createElementVNode(\"span\", null, \"TG File ID\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3Location\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.s3Link')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_41, [_createElementVNode(\"div\", _hoisted_42, [_createElementVNode(\"span\", _hoisted_43, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"span\", _hoisted_46, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_49, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[24] || (_cache[24] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.showTagDialog = $event),\n fileId: $data.currentTagFile,\n onTagsUpdated: $options.handleTagsUpdated\n }, null, 8, [\"modelValue\", \"fileId\", \"onTagsUpdated\"]), _createVNode(_component_BatchTagDialog, {\n modelValue: $data.showBatchTagDialog,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.showBatchTagDialog = $event),\n selectedFiles: $data.selectedFiles,\n onTagsUpdated: $options.handleBatchTagsUpdated\n }, null, 8, [\"modelValue\", \"selectedFiles\", \"onTagsUpdated\"]), _createVNode(_component_MobileActionSheet, {\n modelValue: $data.showMobileActionModal,\n \"onUpdate:modelValue\": _cache[28] || (_cache[28] = $event => $data.showMobileActionModal = $event),\n title: $data.mobileActionIsFolder ? $options.getFolderName($data.mobileActionFile?.name || '') : $data.mobileActionFile?.metadata?.FileName || $options.getFileName($data.mobileActionFile?.name || ''),\n isFolder: $data.mobileActionIsFolder,\n onAction: $options.handleMobileAction\n }, null, 8, [\"modelValue\", \"title\", \"isFolder\", \"onAction\"]), _createVNode(_component_MobileDirectoryDrawer, {\n modelValue: $data.showMobileDirectoryDrawer,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"]), _createVNode(_component_MoveFileDialog, {\n modelValue: $data.showMoveDialog,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.showMoveDialog = $event),\n \"current-directory\": $data.currentPath,\n \"is-batch-move\": $data.isBatchMove,\n \"initial-path\": $data.moveTargetPath,\n onConfirm: $options.confirmMove\n }, null, 8, [\"modelValue\", \"current-directory\", \"is-batch-move\", \"initial-path\", \"onConfirm\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\nimport i18n from '@/locales';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n this.fileListCache = null;\r\n this.storageWarningShown = false;\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n const fileList = this.getMutableFileList();\r\n return {\r\n ...fileList,\r\n files: [...(fileList.files || [])],\r\n directories: [...(fileList.directories || [])],\r\n };\r\n }\r\n\r\n getMutableFileList() {\r\n if (this.fileListCache) {\r\n return this.fileListCache;\r\n }\r\n\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n this.fileListCache = fileList ? JSON.parse(fileList) : this.createEmptyFileList();\r\n return this.fileListCache;\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n this.fileListCache = this.createEmptyFileList();\r\n return this.fileListCache;\r\n }\r\n }\r\n\r\n // 更新内存缓存,并尽量持久化到 localStorage\r\n updateFileListCache(fileList) {\r\n this.fileListCache = fileList || this.createEmptyFileList();\r\n const persisted = this.persistFileListCache();\r\n\r\n return {\r\n cacheUpdated: true,\r\n persisted,\r\n };\r\n }\r\n\r\n persistFileListCache() {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(this.fileListCache));\r\n return true;\r\n } catch (error) {\r\n this.handleStoragePersistError(error);\r\n return false;\r\n }\r\n }\r\n\r\n createEmptyFileList() {\r\n return { files: [], directories: [] };\r\n }\r\n\r\n handleStoragePersistError(error) {\r\n console.warn('File list is kept in memory because localStorage persistence failed:', error);\r\n\r\n try {\r\n localStorage.removeItem(this.FILE_LIST_PATH);\r\n } catch (removeError) {\r\n console.warn('Failed to remove stale file list cache:', removeError);\r\n }\r\n\r\n if (!this.storageWarningShown) {\r\n this.storageWarningShown = true;\r\n ElMessage.warning(i18n.global.t('dashboard.fileListMemoryCacheWarning'));\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n fileList.files.push(newFile);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error adding file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件夹\r\n addFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n }\r\n return false; // 文件夹已存在\r\n } catch (error) {\r\n console.error('Error adding folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 移动文件或文件夹\r\n moveFile(oldPath, newPath, isFolder = false, currentPath = '') {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n \r\n if (isFolder) {\r\n // 更新目录列表\r\n const oldFolderIndex = fileList.directories.indexOf(oldPath);\r\n if (oldFolderIndex !== -1) {\r\n fileList.directories.splice(oldFolderIndex, 1);\r\n }\r\n\r\n } else {\r\n // 移动单个文件\r\n const fileIndex = fileList.files.findIndex(file => file.name === oldPath);\r\n if (fileIndex !== -1) {\r\n // 从旧位置移除\r\n fileList.files.splice(fileIndex, 1);\r\n }\r\n\r\n }\r\n\r\n // 如果新路径包含当前目录的直接子目录,则添加直接子目录\r\n if (newPath.startsWith(currentPath)) {\r\n const pathArray = newPath.substring(currentPath.length).split('/');\r\n if (pathArray.length > 1) {\r\n const newFolder = currentPath + pathArray[0];\r\n if (!fileList.directories.includes(newFolder)) {\r\n fileList.directories.push(newFolder);\r\n }\r\n }\r\n }\r\n\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error moving file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件\r\n removeFile(fileName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件夹(同时删除该文件夹下的所有文件)\r\n removeFolder(folderName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => !file.name.startsWith(folderName + '/'));\r\n fileList.directories = fileList.directories.filter(dir => dir !== folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 获取指定目录下的文件和子目录\r\n getFilesInFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const files = fileList.files.filter(file => file.name.startsWith(folderName + '/'));\r\n const subdirectories = fileList.directories.filter(dir => dir.startsWith(folderName + '/'));\r\n return { files, directories: subdirectories };\r\n } catch (error) {\r\n console.error('Error getting files in folder:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 构建筛选参数URL\r\n buildFilterParams(filters) {\r\n let params = '';\r\n // 访问状态筛选(综合判断)\r\n if (filters.accessStatus && filters.accessStatus.length > 0) {\r\n params += `&accessStatus=${encodeURIComponent(filters.accessStatus.join(','))}`;\r\n }\r\n // 黑白名单筛选(直接使用 ListType 字段)\r\n if (filters.listType && filters.listType.length > 0) {\r\n params += `&listType=${encodeURIComponent(filters.listType.join(','))}`;\r\n }\r\n if (filters.label && filters.label.length > 0) {\r\n params += `&label=${encodeURIComponent(filters.label.join(','))}`;\r\n }\r\n if (filters.fileType && filters.fileType.length > 0) {\r\n params += `&fileType=${encodeURIComponent(filters.fileType.join(','))}`;\r\n }\r\n if (filters.channel && filters.channel.length > 0) {\r\n params += `&channel=${encodeURIComponent(filters.channel.join(','))}`;\r\n }\r\n if (filters.channelName && filters.channelName.length > 0) {\r\n params += `&channelName=${encodeURIComponent(filters.channelName.join(','))}`;\r\n }\r\n return params;\r\n }\r\n\r\n // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '', filters = {}) {\r\n search = search.trim();\r\n try {\r\n let url = `/api/manage/list?count=60&dir=${dir}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n \r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n const newFileList = await response.json();\r\n if (!newFileList.isIndexedResponse) {\r\n ElMessage.warning(i18n.global.t('dashboard.indexingWarning'));\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.updateFileListCache(newFileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error refreshing file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 读取更多数据\r\n async loadMoreFiles(dir, search = '', includeTags = '', excludeTags = '', count = 60, filters = {}) {\r\n search = search.trim();\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const start = fileList.files.length;\r\n\r\n let url = `/api/manage/list?dir=${dir}&start=${start}&count=${count}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n\r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n \r\n const moreFiles = await response.json();\r\n fileList.files.push(...moreFiles.files);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error loading more files:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n}\r\n\r\nexport const fileManager = new FileManager();\r\n","/**\r\n * 矩形工具函数\r\n * 用于框选(rubber-band selection)功能中的矩形计算和相交检测\r\n */\r\n\r\n/**\r\n * 判断两个矩形是否相交\r\n * @param {Object} rectA - { left, top, right, bottom }\r\n * @param {Object} rectB - { left, top, right, bottom }\r\n * @returns {boolean} 是否存在重叠区域\r\n */\r\nexport function rectIntersects(rectA, rectB) {\r\n return !(\r\n rectA.right <= rectB.left ||\r\n rectA.left >= rectB.right ||\r\n rectA.bottom <= rectB.top ||\r\n rectA.top >= rectB.bottom\r\n );\r\n}\r\n\r\n/**\r\n * 根据起始点和当前点计算选区矩形\r\n * @param {Object} start - { x, y } 起始鼠标坐标\r\n * @param {Object} current - { x, y } 当前鼠标坐标\r\n * @returns {Object} { left, top, width, height, right, bottom }\r\n */\r\nexport function calcSelectionRect(start, current) {\r\n const left = Math.min(start.x, current.x);\r\n const top = Math.min(start.y, current.y);\r\n const width = Math.abs(current.x - start.x);\r\n const height = Math.abs(current.y - start.y);\r\n return { left, top, width, height, right: left + width, bottom: top + height };\r\n}\r\n","import { ref, watch, onMounted, onBeforeUnmount, toValue } from 'vue';\r\nimport { rectIntersects, calcSelectionRect } from './rectIntersects.js';\r\n\r\n/**\r\n * Vue 3 Composable:框选(rubber-band selection)核心逻辑,支持多视图模式\r\n *\r\n * @param {Object} options\r\n * @param {Object} options.modes - Per-view-mode configuration\r\n * @param {Object} options.modes.card - Card view config\r\n * @param {import('vue').Ref} options.modes.card.containerRef\r\n * @param {string} options.modes.card.itemSelector - e.g. '.img-card'\r\n * @param {Object} options.modes.list - List view config\r\n * @param {import('vue').Ref} options.modes.list.containerRef\r\n * @param {string} options.modes.list.itemSelector - e.g. '.list-item'\r\n * @param {string} [options.mainSelector='.main-container'] - 主内容区域的 CSS 选择器,框选只能从该区域内开始\r\n * @param {import('vue').Ref} options.viewMode - 当前视图模式\r\n * @param {import('vue').Ref} options.items - 当前页的数据项(paginatedTableData)\r\n * @returns {{ isDragging: import('vue').Ref, selectionRect: import('vue').Ref }}\r\n */\r\nexport function useDragSelect(options) {\r\n const {\r\n modes,\r\n mainSelector = '.main-container',\r\n viewMode,\r\n items,\r\n } = options;\r\n\r\n // --- Reactive state ---\r\n const isDragging = ref(false);\r\n const selectionRect = ref({ left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 });\r\n\r\n // --- Internal (non-reactive) state ---\r\n let startPoint = null; // { x, y } viewport coordinates at mousedown\r\n let preSelectSnapshot = []; // boolean[] snapshot of items[i].selected before drag\r\n let isAppendMode = false; // whether Shift/Ctrl/Cmd was held at mousedown\r\n\r\n // --- Enable/disable state ---\r\n const MOBILE_BREAKPOINT = 768; // px – at or below this width, drag-select is disabled\r\n let listenerAttached = false; // tracks whether the container mousedown listener is active\r\n\r\n // --- Auto-scroll state ---\r\n const EDGE_THRESHOLD = 50; // px from viewport edge to trigger auto-scroll\r\n const SCROLL_SPEED = 10; // px per frame to scroll\r\n let autoScrollTimer = null; // requestAnimationFrame ID for auto-scroll\r\n\r\n // --- Text selection prevention state ---\r\n let savedUserSelect = ''; // saved document.body.style.userSelect before drag\r\n\r\n // ------------------------------------------------------------------\r\n // Mode resolution helper\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Returns the configuration for the current viewMode.\r\n * @returns {{ containerRef: import('vue').Ref, itemSelector: string } | undefined}\r\n */\r\n function getActiveConfig() {\r\n const mode = toValue(viewMode);\r\n return modes[mode] || undefined;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Enable / disable helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Determine whether drag-select should be enabled.\r\n * Returns true when viewMode is 'card' or 'list' AND window width > 768px.\r\n */\r\n function shouldEnable() {\r\n const mode = toValue(viewMode);\r\n return (mode === 'card' || mode === 'list') && window.innerWidth > MOBILE_BREAKPOINT;\r\n }\r\n\r\n /**\r\n * Conditionally attach or detach the container listener based on shouldEnable().\r\n * Also cancels any active drag when detaching.\r\n */\r\n function syncListenerState() {\r\n if (shouldEnable()) {\r\n if (!listenerAttached) {\r\n attachContainerListener();\r\n }\r\n } else {\r\n if (listenerAttached) {\r\n cancelDrag();\r\n detachContainerListener();\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * 判断 mousedown 目标是否为可启动框选的空白区域。\r\n * 必须在主内容区域内,且不在卡片、交互元素上。\r\n */\r\n function isBlankArea(event) {\r\n const target = event.target;\r\n // 必须在主内容区域(el-main)内\r\n const mainArea = target.closest(mainSelector);\r\n if (!mainArea) return false;\r\n // 排除当前模式的可选元素\r\n const config = getActiveConfig();\r\n if (config) {\r\n const itemEl = target.closest(config.itemSelector);\r\n if (itemEl) {\r\n const container = toValue(config.containerRef);\r\n if (container && container.contains(itemEl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n // 排除交互元素(按钮、输入框、链接、下拉菜单、分页等)\r\n const interactive = target.closest('button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container');\r\n if (interactive) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Determine whether a modifier key for append-select is pressed.\r\n */\r\n function hasAppendModifier(event) {\r\n return event.shiftKey || event.ctrlKey || event.metaKey;\r\n }\r\n\r\n /**\r\n * Save a snapshot of the current selected state for all items.\r\n */\r\n function saveSnapshot() {\r\n const currentItems = toValue(items);\r\n preSelectSnapshot = currentItems.map((item) => !!item.selected);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Auto-scroll helpers\r\n // ------------------------------------------------------------------\r\n\r\n /** The last known clientY during a drag – updated by onMouseMove. */\r\n let lastClientY = 0;\r\n\r\n /**\r\n * Start the auto-scroll loop. On each animation frame we check whether the\r\n * mouse is within EDGE_THRESHOLD of the top or bottom of the viewport and\r\n * scroll accordingly. The selection rectangle and card hit-testing are also\r\n * updated after each scroll step so the visual feedback stays in sync.\r\n */\r\n function startAutoScroll() {\r\n if (autoScrollTimer !== null) return; // already running\r\n\r\n function scrollStep() {\r\n const viewportHeight = window.innerHeight;\r\n let scrollDelta = 0;\r\n\r\n if (lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n // Near bottom edge → scroll down\r\n scrollDelta = SCROLL_SPEED;\r\n } else if (lastClientY <= EDGE_THRESHOLD) {\r\n // Near top edge → scroll up\r\n scrollDelta = -SCROLL_SPEED;\r\n }\r\n\r\n if (scrollDelta !== 0) {\r\n window.scrollBy(0, scrollDelta);\r\n\r\n // After scrolling, the viewport-relative positions of cards change,\r\n // but the mouse hasn't moved. We need to adjust the start point so\r\n // the selection rectangle accounts for the scroll offset, then\r\n // re-run hit-testing.\r\n if (startPoint) {\r\n startPoint.y -= scrollDelta;\r\n selectionRect.value = calcSelectionRect(startPoint, { x: selectionRect.value.right >= startPoint.x ? selectionRect.value.right : selectionRect.value.left, y: lastClientY });\r\n updateSelection();\r\n }\r\n }\r\n\r\n // Continue the loop\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n /**\r\n * Stop the auto-scroll loop and clean up the timer.\r\n */\r\n function stopAutoScroll() {\r\n if (autoScrollTimer !== null) {\r\n cancelAnimationFrame(autoScrollTimer);\r\n autoScrollTimer = null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Text selection prevention helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Disable text selection on the document body during drag.\r\n */\r\n function disableTextSelection() {\r\n savedUserSelect = document.body.style.userSelect;\r\n document.body.style.userSelect = 'none';\r\n }\r\n\r\n /**\r\n * Restore the original text selection behavior on the document body.\r\n */\r\n function restoreTextSelection() {\r\n document.body.style.userSelect = savedUserSelect;\r\n }\r\n\r\n /**\r\n * Update the selected state of every item based on the current selection rectangle.\r\n */\r\n function updateSelection() {\r\n const config = getActiveConfig();\r\n if (!config) return;\r\n\r\n const container = toValue(config.containerRef);\r\n if (!container) return;\r\n\r\n const currentItems = toValue(items);\r\n const rect = selectionRect.value;\r\n\r\n // Build the selection rect in {left, top, right, bottom} format for intersection test\r\n const selRect = {\r\n left: rect.left,\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n };\r\n\r\n // Query all item DOM elements inside the container using the active mode's selector\r\n const itemElements = container.querySelectorAll(config.itemSelector);\r\n\r\n // Iterate over items and corresponding DOM elements\r\n currentItems.forEach((item, index) => {\r\n const itemEl = itemElements[index];\r\n if (!itemEl) return;\r\n\r\n const itemRect = itemEl.getBoundingClientRect();\r\n const itemBounds = {\r\n left: itemRect.left,\r\n top: itemRect.top,\r\n right: itemRect.right,\r\n bottom: itemRect.bottom,\r\n };\r\n\r\n const intersects = rectIntersects(selRect, itemBounds);\r\n\r\n if (isAppendMode) {\r\n // Append mode: keep original state, toggle on if intersects\r\n // If originally selected, stay selected regardless\r\n // If not originally selected, select if intersects\r\n if (preSelectSnapshot[index]) {\r\n item.selected = true;\r\n } else {\r\n item.selected = intersects;\r\n }\r\n } else {\r\n // Non-append mode: selected = intersects only\r\n item.selected = intersects;\r\n }\r\n });\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Mouse event handlers\r\n // ------------------------------------------------------------------\r\n\r\n function onMouseDown(event) {\r\n // 仅响应鼠标左键\r\n if (event.button !== 0) return;\r\n\r\n // 点击在卡片上时不启动框选\r\n if (!isBlankArea(event)) return;\r\n\r\n // Record start point (viewport coordinates)\r\n startPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Determine append mode from modifier keys at the moment of mousedown\r\n isAppendMode = hasAppendModifier(event);\r\n\r\n // 保存选中状态快照\r\n saveSnapshot();\r\n\r\n // 非追加模式下先清除所有选中\r\n if (!isAppendMode) {\r\n const currentItems = toValue(items);\r\n currentItems.forEach((item) => {\r\n item.selected = false;\r\n });\r\n }\r\n\r\n // Start dragging\r\n isDragging.value = true;\r\n selectionRect.value = calcSelectionRect(startPoint, startPoint);\r\n\r\n // 防止文本选中\r\n disableTextSelection();\r\n\r\n // Attach document-level listeners for move and up\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n function onMouseMove(event) {\r\n if (!isDragging.value || !startPoint) return;\r\n\r\n const currentPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Track last clientY for auto-scroll\r\n lastClientY = event.clientY;\r\n\r\n // Update selection rectangle\r\n selectionRect.value = calcSelectionRect(startPoint, currentPoint);\r\n\r\n // Update card selection based on intersection\r\n updateSelection();\r\n\r\n // Start or continue auto-scroll if near viewport edges\r\n const viewportHeight = window.innerHeight;\r\n if (lastClientY <= EDGE_THRESHOLD || lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n startAutoScroll();\r\n } else {\r\n stopAutoScroll();\r\n }\r\n }\r\n\r\n function onMouseUp(_event) {\r\n if (!isDragging.value) return;\r\n\r\n // 停止自动滚动\r\n stopAutoScroll();\r\n\r\n // 恢复文本选中\r\n restoreTextSelection();\r\n\r\n // End dragging\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n\r\n // Clean up document-level listeners\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Lifecycle: attach / detach container listener\r\n // ------------------------------------------------------------------\r\n\r\n function attachContainerListener() {\r\n if (!listenerAttached) {\r\n document.addEventListener('mousedown', onMouseDown);\r\n listenerAttached = true;\r\n }\r\n }\r\n\r\n function detachContainerListener() {\r\n if (listenerAttached) {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n listenerAttached = false;\r\n }\r\n }\r\n\r\n /**\r\n * Force-stop any in-progress drag (e.g. when viewMode changes).\r\n */\r\n function cancelDrag() {\r\n if (isDragging.value) {\r\n stopAutoScroll();\r\n restoreTextSelection();\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n }\r\n\r\n // 监听 viewMode 变化,启用/禁用框选\r\n // Always cancel any in-progress drag when viewMode changes (Requirement 2.3),\r\n // then re-evaluate whether listeners should be attached for the new mode.\r\n watch(\r\n () => toValue(viewMode),\r\n () => {\r\n cancelDrag();\r\n syncListenerState();\r\n }\r\n );\r\n\r\n // --- Window resize handler ---\r\n function onWindowResize() {\r\n syncListenerState();\r\n }\r\n\r\n onMounted(() => {\r\n // 仅在满足条件时启用\r\n if (shouldEnable()) {\r\n attachContainerListener();\r\n }\r\n // Always listen for resize to dynamically enable/disable\r\n window.addEventListener('resize', onWindowResize);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n cancelDrag();\r\n restoreTextSelection();\r\n stopAutoScroll();\r\n detachContainerListener();\r\n window.removeEventListener('resize', onWindowResize);\r\n });\r\n\r\n return {\r\n isDragging,\r\n selectionRect,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { mapGetters } from 'vuex';\nimport JSZip from 'jszip';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport TagManagementDialog from '@/components/dashboard/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/dashboard/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/dashboard/SkeletonLoader.vue';\nimport FileCard from '@/components/dashboard/FileCard.vue';\nimport FolderCard from '@/components/dashboard/FolderCard.vue';\nimport MoveFileDialog from '@/components/dashboard/MoveFileDialog.vue';\nimport FileListItem from '@/components/dashboard/FileListItem.vue';\nimport FileDetailDialog from '@/components/dashboard/FileDetailDialog.vue';\nimport BatchActionBar from '@/components/dashboard/BatchActionBar.vue';\nimport MobileActionSheet from '@/components/dashboard/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/dashboard/MobileDirectoryDrawer.vue';\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nimport FilterDropdown from '@/components/dashboard/FilterDropdown.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport { ref } from 'vue';\nimport { useDragSelect } from '@/utils/dashboard/useDragSelect.js';\nexport default {\n name: 'AdminDashBoard',\n mixins: [backgroundManager],\n data() {\n return {\n Number: 0,\n directFileCount: 0,\n // 当前目录直接子文件数量\n directFolderCount: 0,\n // 当前目录直接子文件夹数量\n showLogoutButton: false,\n tableData: [],\n tempSearch: '',\n search: '',\n searchKeywords: '',\n // Keywords only (without tag filters) for backend search\n searchIncludeTags: '',\n // 包含的标签,逗号分隔\n searchExcludeTags: '',\n // 排除的标签,逗号分隔\n isSearchMode: false,\n currentPage: 1,\n pageSize: 15,\n selectedFiles: [],\n sortOption: 'dateDesc',\n isUploading: false,\n showdetailDialog: false,\n detailFile: null,\n activeUrlTab: 'originUrl',\n defaultUrlFormat: 'originUrl',\n showUrlDialog: false,\n useCustomUrl: 'false',\n // 是否启用自定义链接\n customUrlPrefix: '',\n // 自定义链接前缀\n loading: false,\n // 加载状态\n currentPath: '',\n // 当前文件夹路径\n refreshLoading: false,\n showTagDialog: false,\n // 标签管理对话框\n showBatchTagDialog: false,\n // 批量标签管理对话框\n currentTagFile: '',\n // 当前标签管理的文件\n viewMode: 'card',\n // 视图模式:card 或 list\n showMobileActionModal: false,\n // 移动端操作模态框\n mobileActionFile: null,\n // 当前移动端操作的文件\n mobileActionIndex: -1,\n // 当前移动端操作的文件索引\n mobileActionIsFolder: false,\n // 是否为文件夹操作\n longPressTimer: null,\n // 长按计时器\n showMobileDirectoryDrawer: false,\n // 移动端目录抽屉\n jumpPage: '',\n // 跳转页码输入\n // 筛选相关状态(数组形式支持多选)\n filters: {\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'None'\n label: [],\n // 审查结果: 'normal', 'teen', 'adult'\n fileType: [],\n // 文件类型: 'image', 'video', 'audio', 'other'\n channel: [],\n // 渠道类型: 'TelegramNew', 'CloudflareR2', 'S3', 'Discord', 'HuggingFace', 'WebDAV', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [],\n // 动态从文件列表中提取\n // 移动文件对话框相关状态\n showMoveDialog: false,\n // 移动文件对话框\n moveTargetPath: '/',\n // 移动目标路径\n moveFileKey: '',\n // 当前移动的文件key\n moveFileIndex: -1,\n // 当前移动的文件索引\n isBatchMove: false,\n // 是否为批量移动\n pageSwipeStartX: null,\n pageSwipeStartY: null,\n pageSwipeStartTime: 0\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n BatchActionBar,\n MobileActionSheet,\n MobileDirectoryDrawer,\n DashboardCheckbox,\n FilterDropdown,\n MoveFileDialog,\n LanguageSwitcher\n },\n setup() {\n const cardContainerRef = ref(null);\n const listContainerRef = ref(null);\n const viewModeRef = ref('card');\n const itemsRef = ref([]);\n const {\n isDragging,\n selectionRect\n } = useDragSelect({\n modes: {\n card: {\n containerRef: cardContainerRef,\n itemSelector: '.img-card'\n },\n list: {\n containerRef: listContainerRef,\n itemSelector: '.list-item'\n }\n },\n viewMode: viewModeRef,\n items: itemsRef\n });\n return {\n cardContainerRef,\n listContainerRef,\n viewModeRef,\n itemsRef,\n isDragging,\n selectionRect\n };\n },\n computed: {\n ...mapGetters(['adminUrlSettings', 'userConfig']),\n filteredTableData() {\n return this.tableData;\n },\n totalPages() {\n return Math.ceil(this.filteredTableData.length / this.pageSize) || 1;\n },\n // 基于当前文件夹直接子文件和子文件夹数量计算的真实总页数\n realTotalPages() {\n const total = this.directFolderCount + this.directFileCount;\n return Math.ceil(total / this.pageSize) || 1;\n },\n // 计算当前激活的筛选条件数量(数组形式)\n activeFilterCount() {\n return Object.values(this.filters).reduce((count, arr) => count + (Array.isArray(arr) ? arr.length : 0), 0);\n },\n // 判断是否处于搜索或筛选模式\n hasSearchOrFilter() {\n return this.isSearchMode || this.activeFilterCount > 0;\n },\n paginatedTableData() {\n const sortedData = this.sortData(this.filteredTableData);\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n let data = sortedData.slice(start, end);\n // 增加previewSrcList属性,用于预览图片\n const fullList = data.filter(file => this.isImage(file)).map(file => this.getFileLink(file.name));\n data.forEach(file => {\n if (this.isImage(file)) {\n // 重新排序,索引大于等于当前索引的元素在前,否则在后\n file.previewSrcList = fullList.slice(fullList.indexOf(this.getFileLink(file.name))).concat(fullList.slice(0, fullList.indexOf(this.getFileLink(file.name))));\n }\n });\n // 增加channelTag属性,用于显示渠道信息\n data.forEach(file => {\n if (file.metadata?.Channel === 'TelegramNew' || file.metadata?.Channel === 'Telegram') {\n file.channelTag = 'TG';\n } else if (file.metadata?.Channel === 'CloudflareR2') {\n file.channelTag = 'R2';\n } else if (file.metadata?.Channel === 'S3') {\n file.channelTag = 'S3';\n } else if (file.metadata?.Channel === 'Discord') {\n file.channelTag = 'DC';\n } else if (file.metadata?.Channel === 'HuggingFace') {\n file.channelTag = 'HF';\n } else if (file.metadata?.Channel === 'WebDAV') {\n file.channelTag = 'WD';\n } else if (file.metadata?.Channel === 'External') {\n file.channelTag = this.$t('dashboard.externalTag');\n } else {\n file.channelTag = this.$t('dashboard.unknownTag');\n }\n });\n return data;\n },\n sortIcon() {\n return this.sortOption === 'dateDesc' ? 'sort-amount-down' : 'sort-alpha-up';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n detailDialogWidth() {\n return window.innerWidth > 768 ? '70%' : '90%';\n },\n accessType() {\n if (this.detailFile?.metadata?.ListType === 'White') {\n return this.$t('filter.normal');\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return this.$t('filter.blocked');\n } else {\n return this.$t('filter.normal');\n }\n },\n allUrl() {\n // 外链图片均采用外链\n if (this.detailFile?.metadata?.Channel === 'External') {\n return {\n 'originUrl': `${this.detailFile?.metadata?.ExternalLink}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n } else {\n return {\n 'originUrl': `${this.rootUrl}${this.detailFile?.name}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.rootUrl}${this.detailFile?.name}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n }\n },\n tableColumnNum() {\n return window.innerWidth > 768 ? 3 : 1;\n },\n tablePreviewSpan() {\n return window.innerWidth > 768 ? 2 : 1;\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n selectPage() {\n // 如果当前页所有文件都被选中,则返回 true,否则返回 false\n return this.paginatedTableData.every(file => file.selected);\n },\n selectedPageFiles() {\n // 如果当前页有文件被选中,则返回 true,否则返回 false\n return this.paginatedTableData.some(file => file.selected);\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.userConfig?.urlPrefix || `${document.location.origin}/file/`;\n },\n isSelectAll: {\n get() {\n return this.paginatedTableData.length > 0 && this.paginatedTableData.every(file => file.selected);\n },\n set(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n }\n },\n isIndeterminate() {\n const selectedCount = this.paginatedTableData.filter(file => file.selected).length;\n return selectedCount > 0 && selectedCount < this.paginatedTableData.length;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 5 : 7;\n }\n },\n watch: {\n // Sync viewMode data property to the ref used by useDragSelect\n viewMode: {\n handler(newVal) {\n this.viewModeRef = newVal;\n },\n immediate: true\n },\n // Sync paginatedTableData computed property to the ref used by useDragSelect\n paginatedTableData: {\n handler(newVal) {\n this.itemsRef = newVal;\n },\n immediate: true\n },\n tableData: {\n handler(newData) {\n // selectedFiles 增加 newData中新选中,不包含在 selectedFiles 中的文件\n this.selectedFiles = this.selectedFiles.concat(newData.filter(file => file.selected && !this.selectedFiles.includes(file)));\n // selectedFiles 删掉 newData 中已取消选中的文件\n this.selectedFiles = this.selectedFiles.filter(file => file.selected);\n // selectedFiles 删掉 tableData 中已删除的文件\n this.selectedFiles = this.selectedFiles.filter(file => newData.includes(file));\n },\n deep: true\n },\n sortOption(newOption) {\n localStorage.setItem('sortOption', newOption);\n },\n defaultUrlFormat(newFormat) {\n localStorage.setItem('defaultUrlFormat', newFormat);\n },\n showdetailDialog(newVal) {\n if (newVal) {\n this.activeUrlTab = this.defaultUrlFormat || 'originUrl';\n }\n },\n customUrlPrefix(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n currentPath(val) {\n // 页面切换时,取消选择的内容\n this.tableData.forEach(file => file.selected = false);\n }\n },\n methods: {\n // 切换视图模式\n setViewMode(mode) {\n if (this.viewMode === mode) {\n return;\n }\n this.viewMode = mode;\n localStorage.setItem('viewMode', this.viewMode);\n },\n // 列表视图全选当前页\n handleSelectAllPage(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n },\n // 移动端长按开始\n handleTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = false;\n this.showMobileActionModal = true;\n }, 500); // 500ms 长按触发\n },\n // 移动端长按结束/取消\n handleTouchEnd() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n },\n // 文件夹长按开始\n handleFolderTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = true;\n this.showMobileActionModal = true;\n }, 500);\n },\n // 处理移动端操作\n handleMobileAction(action) {\n const file = this.mobileActionFile;\n const index = this.mobileActionIndex;\n this.showMobileActionModal = false;\n if (!file) return;\n switch (action) {\n case 'detail':\n this.openDetailDialog(index, file.name);\n break;\n case 'copy':\n this.handleCopy(index, file.name);\n break;\n case 'folderCopy':\n this.handleFolderCopy(file.name);\n break;\n case 'download':\n this.handleDownload(file.name);\n break;\n case 'move':\n this.handleMove(index, file.name);\n break;\n case 'delete':\n this.handleDelete(index, file.name);\n break;\n case 'tag':\n this.handleTagManagement(file.name);\n break;\n }\n },\n // 返回上一级目录\n handleGoBack() {\n const pathParts = this.currentPath.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n pathParts.pop();\n const parentPath = pathParts.join('/');\n this.navigateToFolder(parentPath);\n }\n this.showMobileDirectoryDrawer = false;\n },\n // 获取标签颜色\n getTagColor(index) {\n const colors = ['linear-gradient(135deg, #667eea 0%, #764ba2 100%)', 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'];\n return colors[index % colors.length];\n },\n // 视频hover播放控制\n handleVideoHover(event, isEnter) {\n const video = event.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n },\n // 格式化文件大小\n formatFileSize(bytes) {\n if (!bytes || bytes === 0) return '-';\n bytes = Number(bytes);\n if (isNaN(bytes)) return '-';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let i = 0;\n while (bytes >= 1024 && i < units.length - 1) {\n bytes /= 1024;\n i++;\n }\n return bytes.toFixed(i > 0 ? 1 : 0) + ' ' + units[i];\n },\n handleSearch() {\n this.search = this.tempSearch;\n this.isSearchMode = this.search.trim() !== '';\n this.currentPage = 1; // 重置到第一页\n\n // 解析搜索字符串,提取标签和关键字\n // 支持 #tag 表示包含标签,-#tag 表示排除标签\n if (this.search && this.search.trim()) {\n const includeTags = [];\n const excludeTags = [];\n\n // 匹配 -#tag 和 #tag\n let searchText = this.search;\n\n // 先匹配排除标签 -#tag\n const excludeTagRegex = /-#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(excludeTagRegex, (match, tag) => {\n excludeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 再匹配包含标签 #tag\n const includeTagRegex = /#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(includeTagRegex, (match, tag) => {\n includeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 清理剩余的关键字(去除多余空格)\n this.searchKeywords = searchText.replace(/\\s+/g, ' ').trim();\n\n // 构建标签查询字符串\n this.searchIncludeTags = includeTags.join(',');\n this.searchExcludeTags = excludeTags.join(',');\n console.log('Search keywords:', this.searchKeywords);\n console.log('Include tags:', this.searchIncludeTags);\n console.log('Exclude tags:', this.searchExcludeTags);\n } else {\n this.searchKeywords = '';\n this.searchIncludeTags = '';\n this.searchExcludeTags = '';\n }\n this.refreshFileList();\n },\n // 处理筛选变化(来自 FilterDropdown 组件)\n handleFilterChange({\n type,\n filters\n }) {\n this.filters = filters;\n this.currentPage = 1; // 重置到第一页\n this.refreshFileList();\n },\n // 清除所有筛选条件\n clearFilters() {\n this.filters = {\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.currentPage = 1;\n this.refreshFileList();\n },\n // 从 API 获取所有渠道名称\n async extractChannelNames() {\n try {\n const response = await fetchWithAuth('/api/channels?includeDisabled=true', {\n method: 'GET'\n });\n if (response.ok) {\n const channels = await response.json();\n const channelOptions = [];\n\n // 类型映射(显示名称)\n const typeLabels = {\n telegram: 'Telegram',\n cfr2: 'Cloudflare R2',\n s3: 'S3',\n discord: 'Discord',\n huggingface: 'HuggingFace',\n webdav: 'WebDAV'\n };\n\n // 按类型提取渠道名称,channel.type是类型内部存储名称(可能根据版本有变化),type是类型对外名称\n Object.entries(channels).forEach(([type, channelList]) => {\n if (Array.isArray(channelList) && channelList.length > 0) {\n channelList.forEach(channel => {\n if (channel.name) {\n channelOptions.push({\n name: channel.name,\n type: channel.type,\n typeLabel: typeLabels[type] || type,\n // 使用 channel.type:channel.name 作为唯一标识\n value: `${channel.type}:${channel.name}`\n });\n }\n });\n }\n });\n\n // 按类型和名称排序\n channelOptions.sort((a, b) => {\n if (a.type !== b.type) {\n return a.type.localeCompare(b.type);\n }\n return a.name.localeCompare(b.name);\n });\n this.channelNameOptions = channelOptions;\n }\n } catch (error) {\n console.error('Failed to fetch channel names:', error);\n }\n },\n handleDownload(key) {\n const link = document.createElement('a');\n link.href = this.getFileLink(key);\n link.download = key;\n link.click();\n },\n openDetailDialog(index, key) {\n this.detailFile = this.paginatedTableData[index];\n this.showdetailDialog = true;\n },\n handleTabClick(tab) {\n this.activeUrlTab = tab.props.name;\n },\n handleUrlClick(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('dashboard.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('dashboard.copyFailed')\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm(this.$t('dashboard.deleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n this.showdetailDialog = false;\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBlock(key) {\n this.$confirm(this.$t('dashboard.blockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/block/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.blockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.blockFailed')));\n }).catch(() => console.log('Block cancelled'));\n },\n handleWhite(key) {\n this.$confirm(this.$t('dashboard.whiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/white/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.whiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.whiteFailed')));\n }).catch(() => console.log('White cancelled'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(isFolder ? this.$t('dashboard.deleteFolderConfirm') : this.$t('dashboard.deleteFileConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}?folder=${isFolder}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBatchDelete() {\n this.$confirm(this.$t('dashboard.batchDeleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/delete/${file.name}?folder=${isFolder}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n fileManager.removeFile(this.selectedFiles[index].name);\n }\n });\n this.selectedFiles = [];\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.batchDeleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchDeleteFailed')));\n }).catch(() => console.log('Batch delete cancelled'));\n },\n async handleBatchCopy() {\n // 分离文件和文件夹\n const files = this.selectedFiles.filter(item => !item.isFolder);\n const folders = this.selectedFiles.filter(item => item.isFolder);\n\n // 如果有文件夹,显示加载状态\n let loading = null;\n if (folders.length > 0) {\n loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n }\n try {\n // 收集所有文件(包括文件夹内的文件)\n let allFiles = [...files];\n\n // 递归获取所有文件夹内的文件\n for (const folder of folders) {\n try {\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folder.name)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n if (data.files && data.files.length > 0) {\n allFiles = allFiles.concat(data.files);\n }\n } catch (error) {\n console.error(`获取文件夹 ${folder.name} 内容失败:`, error);\n }\n }\n if (loading) loading.close();\n if (allFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.batchCopySuccess', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('Batch copy failed:', error);\n this.$message.error(this.$t('dashboard.batchCopyFailed'));\n }\n },\n copyToClipboardFallback(text) {\n const textarea = document.createElement('textarea');\n document.body.appendChild(textarea);\n textarea.style.position = 'fixed';\n textarea.style.clip = 'rect(0 0 0 0)';\n textarea.style.top = '10px';\n textarea.value = text;\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n this.$message.success(this.$t('dashboard.batchCopyLinksSuccess'));\n },\n handleCopy(index, key) {\n let text = '';\n if (this.paginatedTableData[index].metadata?.Channel === 'External') {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = this.paginatedTableData[index].metadata?.ExternalLink;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.paginatedTableData[index].metadata?.ExternalLink})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.paginatedTableData[index].metadata?.ExternalLink}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n } else {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = `${this.rootUrl}${key}`;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.rootUrl}${key})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.rootUrl}${key}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n }\n navigator.clipboard ? navigator.clipboard.writeText(text).then(() => this.$message.success(this.$t('dashboard.copyFileLinkSuccess'))) : this.copyToClipboardFallback(text);\n },\n async loadMoreData() {\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, 60, this.filters);\n // 获取新的文件列表后\n await this.fetchFileList();\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadMoreFailed'));\n } finally {\n this.loading = false;\n }\n },\n updateStats(num, init = false) {\n if (init) {\n this.Number = num;\n } else {\n this.Number += num;\n }\n },\n sort(command) {\n this.sortOption = command;\n },\n sortData(data) {\n // 文件夹始终在前\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n if (this.sortOption === 'dateDesc') {\n // 按时间降序\n folders.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n files.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n } else {\n // 按文件名升序\n folders.sort((a, b) => a.name.localeCompare(b.name));\n files.sort((a, b) => a.name.localeCompare(b.name));\n }\n return folders.concat(files);\n },\n handleVideoClick(event) {\n const videoElement = event.target;\n if (videoElement.requestFullscreen) {\n videoElement.requestFullscreen();\n } else if (videoElement.webkitRequestFullscreen) {\n // Safari/Old Chrome\n videoElement.webkitRequestFullscreen();\n } else if (videoElement.mozRequestFullScreen) {\n // Firefox\n videoElement.mozRequestFullScreen();\n } else if (videoElement.msRequestFullscreen) {\n // IE/Edge\n videoElement.msRequestFullscreen();\n }\n },\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n handleSelectPage() {\n if (this.selectPage) {\n this.paginatedTableData.forEach(file => file.selected = false);\n } else {\n this.paginatedTableData.forEach(file => file.selected = true);\n }\n },\n clearSelection() {\n this.tableData.forEach(file => file.selected = false);\n this.selectedFiles = [];\n },\n handleBatchAction(command) {\n if (command === 'copy') {\n this.handleBatchCopy();\n } else if (command === 'delete') {\n this.handleBatchDelete();\n } else if (command === 'download') {\n this.handleBatchDownload();\n } else if (command === 'move') {\n this.handleBatchMove();\n } else if (command === 'tagManagement') {\n this.handleBatchTagManagement();\n } else if (command === 'ban') {\n this.handleBatchBlock();\n } else if (command === 'white') {\n this.handleBatchWhite();\n }\n },\n handleMove(index, key) {\n // 打开自定义移动对话框\n this.moveFileKey = key;\n this.moveFileIndex = index;\n this.isBatchMove = false;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n handleBatchMove() {\n // 打开自定义移动对话框(批量模式)\n this.isBatchMove = true;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n // 确认移动操作\n confirmMove(targetPath) {\n const value = targetPath;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return;\n }\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning(this.$t('dashboard.moveTargetSameAsCurrent'));\n return;\n }\n\n // 关闭对话框\n this.showMoveDialog = false;\n if (this.isBatchMove) {\n // 批量移动\n this.executeBatchMove(newPath);\n } else {\n // 单个文件移动\n this.executeSingleMove(newPath);\n }\n },\n // 执行单个文件移动\n executeSingleMove(newPath) {\n const key = this.moveFileKey;\n const isFolder = this.tableData.find(file => file.name === key)?.isFolder;\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + key.split('/').pop();\n fileManager.moveFile(key, newKey, isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n // 执行批量移动\n executeBatchMove(newPath) {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const file = this.selectedFiles[index];\n file.selected = false;\n const fileIndex = this.tableData.findIndex(f => f.name === file.name);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + file.name.split('/').pop();\n fileManager.moveFile(file.name, newKey, file.isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n }\n }\n });\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n handleBatchBlock() {\n this.$confirm(this.$t('dashboard.batchBlockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/block/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchBlockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchBlockFailed')));\n }).catch(() => console.log('Batch block cancelled'));\n },\n handleBatchWhite() {\n this.$confirm(this.$t('dashboard.batchWhiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/white/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchWhiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchWhiteFailed')));\n }).catch(() => console.log('Batch white cancelled'));\n },\n handleBatchDownload() {\n // 将选中文件打包成 zip 文件下载\n const zip = new JSZip();\n const folder = zip.folder('files');\n // 构造Promise数组,等待所有文件下载完成后再打包\n const fileNameCount = {}; // 用于跟踪文件名出现的次数\n\n const downloadPromises = this.selectedFiles.map(async file => {\n // 跳过文件夹\n if (file.isFolder) {\n return;\n }\n const response = await fetch(this.getFileLink(file.name));\n const blob = await response.blob();\n // 检查文件名是否已经存在\n let fileName = file.metadata?.FileName || file.name;\n if (fileNameCount[fileName]) {\n // 如果已经存在,则在文件名后加上编号\n const extension = fileName.substring(fileName.lastIndexOf('.'));\n const baseName = fileName.substring(0, fileName.lastIndexOf('.'));\n fileName = `${baseName}(${fileNameCount[fileName]})${extension}`;\n fileNameCount[file.name]++;\n } else {\n // 如果不存在,则初始化为1\n fileNameCount[fileName] = 1;\n }\n // 将文件添加到 zip 文件夹中\n folder.file(fileName, blob);\n });\n Promise.all(downloadPromises).then(() => zip.generateAsync({\n type: 'blob'\n })).then(blob => {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = 'files.zip';\n link.click();\n });\n },\n isVideo(file) {\n // 排除音频文件\n if (this.isAudio(file)) return false;\n let flag = file.metadata?.FileType?.includes('video');\n // 用文件名后缀判断是否为视频文件\n if (!flag) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'rmvb', '3gp', 'mpg', 'mpeg', 'm4v', 'f4v', 'rm', 'asf', 'dat', 'ts', 'vob', 'swf', 'divx', 'xvid', 'm2ts', 'mts', 'm2v', '3g2', '3gp2', '3gpp', '3gpp2', 'mpe', 'm1v', 'mpv', 'mpv2', 'mp2v', 'm2t', 'm2ts', 'm2v', 'm4v'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = videoExtensions.includes(extension);\n }\n return flag;\n },\n isAudio(file) {\n let flag = file.metadata?.FileType?.includes('audio');\n // 用文件名后缀判断是否为音频文件\n if (!flag) {\n const audioExtensions = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'm4a', 'ape', 'aiff', 'alac', 'opus', 'mid', 'midi', 'm4b', 'm4p', 'm4r', 'amr', 'au', 'ra', 'ram'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = audioExtensions.includes(extension);\n }\n return flag;\n },\n isImage(file) {\n let flag = file.metadata?.FileType?.includes('image');\n // 用文件名后缀判断是否为图片文件\n if (!flag) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'psd', 'ai', 'eps', 'raw', 'cr2', 'nef', 'orf', 'sr2', 'dng', 'arw', 'rw2', 'raf', 'pef', 'x3f', 'srf', 'erf', 'mrw', 'nrw', 'kdc', 'dcr', 'mef', 'mos', 'crw', 'raf', 'rwl', 'srw', '3fr', 'fff', 'iiq', 'qtk', 'bay', 'k25', 'kdc', 'dcs', 'drf', 'dng', 'erf', 'kdc', 'mdc', 'mef', 'mos', 'mrw', 'nef', 'nrw', 'orf', 'pef', 'ptx', 'pxn', 'r3d', 'raf', 'raw', 'rwl', 'rw2', 'rwz', 'sr2', 'srf', 'x3f'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = imageExtensions.includes(extension);\n }\n return flag;\n },\n getFileLink(filename) {\n const fileLink = process.env.NODE_ENV === 'production' ? `/file/${filename}?from=admin` : `/api/file/${filename}?from=admin`;\n return fileLink;\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (this.currentPage === Math.ceil(this.tableData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n isMobileViewport() {\n return window.innerWidth < 768;\n },\n updateResponsivePageSize() {\n const nextPageSize = this.isMobileViewport() ? 16 : 15;\n if (this.pageSize === nextPageSize) return;\n const firstVisibleIndex = (this.currentPage - 1) * this.pageSize;\n this.pageSize = nextPageSize;\n this.currentPage = Math.min(Math.floor(firstVisibleIndex / nextPageSize) + 1, this.realTotalPages);\n },\n isSwipeIgnoredTarget(target) {\n return Boolean(target?.closest?.('button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn'));\n },\n handlePageSwipeStart(event) {\n if (!this.isMobileViewport() || this.isDragging || this.loading || this.showMobileActionModal || this.showMobileDirectoryDrawer || this.isSwipeIgnoredTarget(event.target)) {\n this.resetPageSwipe();\n return;\n }\n const touch = event.touches?.[0];\n if (!touch) return;\n this.pageSwipeStartX = touch.clientX;\n this.pageSwipeStartY = touch.clientY;\n this.pageSwipeStartTime = Date.now();\n },\n async handlePageSwipeEnd(event) {\n if (this.pageSwipeStartX === null || this.pageSwipeStartY === null) return;\n const touch = event.changedTouches?.[0];\n if (!touch) {\n this.resetPageSwipe();\n return;\n }\n const deltaX = touch.clientX - this.pageSwipeStartX;\n const deltaY = touch.clientY - this.pageSwipeStartY;\n const elapsed = Date.now() - this.pageSwipeStartTime;\n this.resetPageSwipe();\n if (elapsed > 700 || Math.abs(deltaX) < 64 || Math.abs(deltaX) < Math.abs(deltaY) * 1.35) {\n return;\n }\n const targetPage = deltaX < 0 ? this.currentPage + 1 : this.currentPage - 1;\n await this.goToSwipePage(targetPage);\n },\n resetPageSwipe() {\n this.pageSwipeStartX = null;\n this.pageSwipeStartY = null;\n this.pageSwipeStartTime = 0;\n },\n async goToSwipePage(page) {\n if (page < 1 || page > this.realTotalPages || page === this.currentPage) return;\n if (page > this.totalPages) {\n await this.loadMoreDataUntilPage(page);\n return;\n }\n this.handlePageChange(page);\n },\n // 跳转到指定页码\n handleJumpPage() {\n const page = parseInt(this.jumpPage);\n if (isNaN(page) || page < 1) {\n this.$message.warning(this.$t('dashboard.invalidPageNumber'));\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(this.$t('dashboard.pageExceedsMax', {\n max: this.realTotalPages\n }));\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info(this.$t('dashboard.loadingData'));\n this.loadMoreDataUntilPage(page);\n } else {\n this.currentPage = page;\n }\n this.jumpPage = '';\n },\n // 加载数据直到指定页\n async loadMoreDataUntilPage(targetPage) {\n this.loading = true;\n try {\n // 计算目标页需要的文件数量(不包含文件夹)\n // 目标页最后一个项目的索引 = targetPage * pageSize\n // 需要的文件数 = 目标索引 - 已有文件夹数量\n const targetIndex = targetPage * this.pageSize;\n const currentFolderCount = this.filteredTableData.filter(item => item.isFolder).length;\n const currentFileCount = this.filteredTableData.filter(item => !item.isFolder).length;\n\n // 需要加载的文件数量 = 目标位置需要的文件数 - 当前已加载的文件数\n const neededFileCount = Math.max(0, targetIndex - currentFolderCount - currentFileCount);\n if (neededFileCount > 0) {\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, neededFileCount, this.filters);\n await this.fetchFileList();\n }\n this.currentPage = Math.min(targetPage, this.totalPages);\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadDataFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 判断是否为文件夹\n isFolder(item) {\n // 如果是已经标记为文件夹的项目,直接返回true\n if (item.isFolder) {\n return true;\n }\n\n // 获取真实的文件路径(去除URL前缀)\n let path = item.name;\n if (path.startsWith('http')) {\n path = path.split('/file/')[1];\n }\n\n // 如果文件名包含'/',需要判断是否是当前路径下的文件\n if (path && path.includes('/')) {\n // 获取相对于当前路径的部分\n const relativePath = this.currentPath ? path.substring(this.currentPath.length) : path;\n\n // 如果在根目录,第一个斜杠前的部分就是文件夹\n if (this.currentPath === '') {\n return !path.split('/')[0].includes('.');\n }\n\n // 如果在子文件夹中,检查相对路径是否还包含其他文件夹\n return relativePath.includes('/');\n }\n return false;\n },\n // 获取文件夹名称\n getFolderName(path) {\n let folderName = '';\n // 如果是文件夹路径,只返回最后一级文件夹名\n if (path && path.includes('/')) {\n const parts = path.split('/');\n // 如果是根目录下的文件夹\n if (this.currentPath === '') {\n folderName = parts[0];\n } else {\n // 如果是子文件夹\n const relativePath = path.substring(this.currentPath.length);\n folderName = relativePath.split('/')[0];\n }\n } else {\n folderName = path;\n }\n const maxLength = 20; // Adjust max length as needed\n if (folderName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${folderName.substring(0, startLength)}...${folderName.substring(folderName.length - endLength)}`;\n }\n return folderName;\n },\n // 获取文件名称(去除路径和URL前缀)\n getFileName(path) {\n let fileName = path.split('/').pop();\n const maxLength = 20; // Adjust max length as needed, ensure it fits in one line\n if (fileName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${fileName.substring(0, startLength)}...${fileName.substring(fileName.length - endLength)}`;\n }\n return fileName;\n },\n // 获取文件名前半部分(用于中间省略效果)\n getFileNameStart(name) {\n if (!name) return '';\n // 如果文件名较短,返回全部\n if (name.length <= 30) return name;\n // 保留开头部分(约60%的长度用于显示前半部分)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回文件名主体部分\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(baseName.length, Math.floor(name.length * 0.6));\n return baseName.substring(0, keepLength);\n }\n // 无扩展名的情况\n return name.substring(0, Math.floor(name.length * 0.6));\n },\n // 获取文件名后半部分(用于中间省略效果)\n getFileNameEnd(name) {\n if (!name) return '';\n // 如果文件名较短,返回空\n if (name.length <= 30) return '';\n // 保留末尾部分(包含扩展名)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回最后几个字符 + 扩展名\n const ext = name.substring(dotIndex);\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(8, Math.floor(baseName.length * 0.2));\n return '…' + baseName.substring(baseName.length - keepLength) + ext;\n }\n // 无扩展名的情况\n const keepLength = Math.min(10, Math.floor(name.length * 0.3));\n return '…' + name.substring(name.length - keepLength);\n },\n // 进入文件夹\n enterFolder(folderPath) {\n // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\n // 确保空路径时不添加 '/'\n this.currentPath = path ? path + (path.endsWith('/') ? '' : '/') : '';\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 获取文件列表\n async fetchFileList() {\n this.loading = true;\n try {\n // 从本地存储获取数据\n const data = fileManager.getLocalFileList();\n\n // 解析返回的数据\n const folders = new Set(data.directories || []);\n const files = data.files || [];\n\n // 处理文件夹数据\n const folderItems = Array.from(folders).map(folder => ({\n name: folder,\n isFolder: true,\n selected: false,\n metadata: {\n FileName: folder.split('/').pop()\n }\n }));\n\n // 处理文件数据\n const fileItems = files.map(file => ({\n name: file.name,\n isFolder: false,\n selected: false,\n metadata: file.metadata\n }));\n\n // 更新表格数据\n this.tableData = [...folderItems, ...fileItems];\n\n // 更新统计信息\n this.updateStats(data.totalCount, true);\n\n // 更新直接文件和文件夹数量\n this.directFileCount = data.directFileCount || 0;\n this.directFolderCount = data.directFolderCount || 0;\n } catch (error) {\n console.error('Error fetching file list:', error);\n this.$message.error(this.$t('dashboard.fetchFileListFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 刷新文件列表\n async refreshFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n const success = await fileManager.refreshFileList(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, this.filters);\n if (success) {\n await this.fetchFileList();\n } else {\n throw new Error('Refresh failed');\n }\n } catch (error) {\n // 认证失败由 fetchWithAuth 统一处理跳转,不重复提示\n if (!error.message?.includes('Unauthorized') && this.$store.state.adminLoggedIn) {\n console.error('Error refreshing file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n }\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // 刷新本地文件列表\n async refreshLocalFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n await this.fetchFileList();\n } catch (error) {\n console.error('Error refreshing local file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // Tag management methods\n handleTagManagement(fileId) {\n this.currentTagFile = fileId;\n this.showTagDialog = true;\n },\n handleBatchTagManagement() {\n if (this.selectedFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.selectFilesFirst'));\n return;\n }\n this.showBatchTagDialog = true;\n },\n async handleTagsUpdated(tags) {\n // 更新本地文件数据中的标签\n const fileIndex = this.tableData.findIndex(file => file.name === this.currentTagFile);\n if (fileIndex !== -1) {\n // 更新 tableData 中的标签\n if (!this.tableData[fileIndex].metadata) {\n this.tableData[fileIndex].metadata = {};\n }\n this.tableData[fileIndex].metadata.Tags = tags;\n\n // 如果详情对话框正在显示这个文件,也更新详情数据\n if (this.showdetailDialog && this.detailFile?.name === this.currentTagFile) {\n if (!this.detailFile.metadata) {\n this.detailFile.metadata = {};\n }\n this.detailFile.metadata.Tags = tags;\n }\n }\n },\n async handleBatchTagsUpdated() {\n // 刷新文件列表以显示更新后的标签\n await this.refreshLocalFileList();\n },\n handleMetadataUpdated(fileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === fileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 如果 detailFile 正在显示该文件,同步更新 detailFile\n if (this.detailFile && this.detailFile.name === fileId) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n }\n },\n handleFileRenamed(oldFileId, newFileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 name(File_ID)和 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === oldFileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].name = newFileId;\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 更新 detailFile 引用并关闭/重新打开详情弹窗以刷新链接\n if (this.detailFile && this.detailFile.name === oldFileId) {\n this.detailFile.name = newFileId;\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n // 关闭详情弹窗,然后在下一个 tick 重新打开以刷新所有链接\n this.showdetailDialog = false;\n this.$nextTick(() => {\n this.showdetailDialog = true;\n });\n }\n },\n // 生成单个文件链接\n generateFileLink(key, metadata) {\n const isExternal = metadata?.Channel === 'External';\n const baseUrl = isExternal ? metadata?.ExternalLink : `${this.rootUrl}${key}`;\n const fileName = metadata?.FileName || key;\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n return baseUrl;\n case 'mdUrl':\n return `![${fileName}](${baseUrl})`;\n case 'htmlUrl':\n return `\"${fileName}\"`;\n case 'bbUrl':\n return `[img]${baseUrl}[/img]`;\n case 'tgId':\n return metadata?.TgFileId || '';\n case 's3Location':\n return metadata?.S3Location || '';\n default:\n return baseUrl;\n }\n },\n // 复制文件夹中所有文件的链接\n async handleFolderCopy(folderName) {\n // 显示加载状态\n const loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n try {\n // 调用 list API 递归获取文件夹内所有文件\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folderName)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n loading.close();\n if (!data.files || data.files.length === 0) {\n this.$message.warning(this.$t('dashboard.folderEmptyNoLinks'));\n return;\n }\n\n // 根据当前链接格式生成所有文件链接\n const links = data.files.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n }\n } catch (error) {\n loading.close();\n console.error('Copy folder links failed:', error);\n this.$message.error(this.$t('dashboard.copyFolderLinksFailed'));\n }\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n this.updateResponsivePageSize();\n window.addEventListener('resize', this.updateResponsivePageSize);\n this.loading = true;\n // 路由守卫已通过 /api/auth/sessionCheck 验证认证状态\n this.showLogoutButton = this.$store.state.adminLoggedIn;\n // 首次加载时刷新文件列表\n this.refreshFileList().then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error(this.$t('dashboard.syncDataError'));\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n\n // 恢复视图模式偏好\n const savedViewMode = localStorage.getItem('viewMode');\n if (savedViewMode === 'card' || savedViewMode === 'list') {\n this.viewMode = savedViewMode;\n }\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateResponsivePageSize);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=57eabdee&scoped=true\"\nimport script from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\nexport * from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\n\nimport \"./AdminDashBoard.vue?vue&type=style&index=0&id=57eabdee&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-57eabdee\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","width","trigger","transition","reference","onClick","$slots","undefined","default","error","icon","type","size","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","value","includes","children","label","windowWidth","window","innerWidth","computed","this","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","get","withAuthCode","tree","err","console","startsWith","$emit","__exports__","e","module","exports","s","a","o","h","u","r","t","l","n","Error","code","i","call","length","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","pako","A","fromCharCode","file","O","utf8encode","I","m","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","test","folder","remove","generate","generateInternalStream","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","concat","apply","set","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","port1","onmessage","port2","postMessage","global","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","finally","constructor","catch","race","immediate","assign","chunkSize","windowBits","memLevel","strategy","to","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","attachEvent","Function","callback","clearImmediate","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_component_el_input","_component_DirectoryTreePicker","_component_el_dialog","dialogVisible","isBatchMove","onClose","handleClose","footer","handleConfirm","targetPath","placeholder","prepend","onSelect","handleDirectorySelect","showTreePicker","treeError","handleTreeNodeClick","treeLoading","components","DirectoryTreePicker","Boolean","initialPath","emits","val","close","active","currentPath","navigate","pathParts","style","paddingLeft","goBack","isFolder","handleAction","action","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","dialogWidth","activeTab","count","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","required","debounceTimer","selectedFilesOnly","fileIds","map","loadCommonTags","resetData","newTab","tagPromises","encodeURIComponent","responses","allTags","tags","every","clearTimeout","trim","fetchSuggestions","prefix","warning","splice","headers","body","JSON","stringify","success","updated","confirm","confirmButtonText","cancelButtonText","executeClearTags","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","round","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","lazy","border","column","descColumn","editForm","FileName","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","Tags","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","valid","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","fileType","endsWith","TimeStamp","toLocaleString","listType","ListType","height","ratio","sizeBytes","FileSizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","video","paused","play","select","navigator","clipboard","writeText","open","oldFileId","_component_el_tooltip","selectedCount","disableTooltip","content","handleClear","actions","command","className","Number","variant","checked","indeterminate","role","ariaChecked","tabindex","handleClick","onKeydown","event","_component_DashboardCheckbox","onTouchstart","onTouchend","onTouchmove","localSelected","toggleSelect","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","DashboardCheckbox","selected","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_checkbox","_component_el_card","onChange","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_el_badge","_component_el_checkbox_group","_component_el_dropdown_menu","_component_el_dropdown","dropdown","localFilters","accessStatus","handleFilterChange","accessStatusOptions","option","listTypeOptions","labelOptions","fileTypeOptions","channel","channelOptions","channelNameOptions","channelName","groupedChannelNames","group","typeLabel","channels","clearFilters","activeFilterCount","hidden","filters","values","reduce","arr","groups","handler","newFilters","isArray","deep","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_component_DashboardTabs","_component_FilterDropdown","_component_el_dropdown_item","_component_el_header","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_BatchActionBar","_component_FileDetailDialog","_component_el_radio","_component_el_radio_group","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","onCommand","sort","sortIcon","showUrlDialog","handleLogout","selectPage","selectedPageFiles","handleSelectPage","viewMode","setViewMode","showMobileDirectoryDrawer","separator","navigateToFolder","isDragging","onTouchstartPassive","handlePageSwipeStart","onTouchendPassive","handlePageSwipeEnd","onTouchcancelPassive","resetPageSwipe","pageSize","paginatedTableData","hasSearchOrFilter","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","position","left","selectionRect","top","layout","filteredTableData","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","onAction","handleBatchAction","onClear","clearSelection","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","onMetadataUpdated","handleMetadataUpdated","onFileRenamed","handleFileRenamed","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","FILE_LIST_PATH","fileListCache","storageWarningShown","getLocalFileList","fileList","getMutableFileList","directories","localStorage","getItem","parse","createEmptyFileList","updateFileListCache","persisted","persistFileListCache","cacheUpdated","setItem","handleStoragePersistError","warn","removeItem","removeError","ElMessage","i18n","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","findIndex","pathArray","newFolder","removeFile","removeFolder","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","loadMoreFiles","start","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","useDragSelect","modes","mainSelector","items","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","toValue","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","mainArea","closest","config","itemEl","itemSelector","container","containerRef","contains","interactive","hasAppendModifier","shiftKey","ctrlKey","metaKey","saveSnapshot","currentItems","lastClientY","startAutoScroll","scrollStep","viewportHeight","innerHeight","scrollDelta","scrollBy","updateSelection","requestAnimationFrame","stopAutoScroll","cancelAnimationFrame","disableTextSelection","userSelect","restoreTextSelection","rect","selRect","itemElements","querySelectorAll","itemRect","getBoundingClientRect","itemBounds","intersects","onMouseDown","button","clientX","clientY","onMouseMove","onMouseUp","currentPoint","_event","onWindowResize","onMounted","onBeforeUnmount","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","sortOption","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","pageSwipeStartX","pageSwipeStartY","pageSwipeStartTime","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","fullList","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","some","userConfig","urlPrefix","location","origin","newData","newOption","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","localeCompare","link","href","download","click","tab","$message","$confirm","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","clip","execCommand","fetchFileList","num","init","videoElement","fetch","credentials","authType","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","tempData","refreshLocalFileList","zip","fileNameCount","downloadPromises","extension","baseName","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","isMobileViewport","updateResponsivePageSize","nextPageSize","firstVisibleIndex","isSwipeIgnoredTarget","touch","touches","now","changedTouches","deltaX","deltaY","elapsed","targetPage","goToSwipePage","loadMoreDataUntilPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","fileItems","totalCount","adminLoggedIn","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode","validateFolderPath","strict","dotPattern","invalidChars"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/903.808d69b5.js.map.gz b/frontend-dist/js/903.808d69b5.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..e671ef5b501fe92dcbab4f8b81334e2544bb91aa GIT binary patch literal 147096 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/957.e8a16dfc.js b/frontend-dist/js/957.e8a16dfc.js deleted file mode 100644 index 78e400c1..00000000 --- a/frontend-dist/js/957.e8a16dfc.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[957],{4885:function(e,t,a){"use strict";a(85331)},13378:function(e,t,a){"use strict";a(85331),a(38736),a(79899)},15616:function(e,t,a){"use strict";a(85331),a(97197)},23597:function(e,t,a){"use strict";a(85331)},33892:function(e,t,a){"use strict";a.d(t,{A:function(){return S}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(30650)),r=(a(19104),a(31802)),o=(a(13378),a(80047)),l=(a(99648),a(56768)),d=a(45130),c=a(24232);const h={class:"directory-tree-picker"},u={class:"tree-container"},f={key:0,class:"error-state"},m={class:"error-text"},p={class:"node-label"},g={class:"tree-container"},b={key:0,class:"error-state"},v={class:"error-text"},k={class:"node-label"};function y(e,t,a,y,w,_){const F=(0,l.g2)("font-awesome-icon"),C=o.S2,T=r.qk,S=s.Vc,$=n.pw,L=i.A;return(0,l.uX)(),(0,l.CE)("div",h,[_.isDesktop?((0,l.uX)(),(0,l.Wv)(S,{key:0,visible:w.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>w.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",u,[w.error?((0,l.uX)(),(0,l.CE)("div",f,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",m,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",p,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,w.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>_.openDrawer&&_.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)($,{modelValue:w.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>w.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",g,[w.error?((0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",v,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,w.loading]])]),_:1},8,["modelValue","title"])],64))])}var w=a(457),_=a(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,_.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await w.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},C=a(71241);const T=(0,C.A)(F,[["render",y],["__scopeId","data-v-62eab69a"]]);var S=T},34396:function(e,t,a){"use strict";a(85331),a(4885)},34896:function(e,t,a){"use strict";a(85331)},35177:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return kn}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(31802)),r=(a(13378),a(9267)),o=(a(15616),a(33892)),l=a(80047),d=(a(99648),a(39623)),c=(a(29092),a(56768)),h=a(24232);const u={class:"move-file-dialog-wrapper"},f={class:"move-dialog-content"},m={class:"move-path-input-container"},p={class:"move-dialog-hint"},g={class:"dialog-footer"},b={class:"move-drawer-content"},v={class:"move-path-section"},k={class:"move-path-label"},y={class:"move-path-input-row"},w={class:"move-dialog-hint"},_={key:0,class:"embedded-tree-section"},F={class:"tree-section-header"},C={class:"tree-section-title"},T={class:"tree-container"},S={key:0,class:"error-state"},$={class:"error-text"},L={class:"node-label"},x={class:"drawer-footer"};function D(e,t,a,D,E,A){const I=d.WK,z=(0,c.g2)("font-awesome-icon"),U=l.S2,P=o.A,B=r.kZ,W=s.qk,R=n.pw,O=i.A;return(0,c.uX)(),(0,c.CE)("div",u,[A.isDesktop?((0,c.uX)(),(0,c.Wv)(B,{key:0,modelValue:A.dialogVisible,"onUpdate:modelValue":t[1]||(t[1]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(U,{onClick:A.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",f,[(0,c.Lk)("div",m,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},{prepend:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.targetDirectory")),1)]),_:1},8,["modelValue","placeholder"]),(0,c.bF)(P,{"current-directory":a.currentDirectory,source:"admin",onSelect:A.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(U,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])]),(0,c.Lk)("p",p,(0,h.v_)(e.$t("moveFile.hint")),1)])]),_:1},8,["modelValue","title","onClose"])):((0,c.uX)(),(0,c.Wv)(R,{key:1,modelValue:A.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",x,[(0,c.bF)(U,{onClick:A.handleClose,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",b,[(0,c.Lk)("div",v,[(0,c.Lk)("div",k,(0,h.v_)(e.$t("moveFile.targetDirectory")),1),(0,c.Lk)("div",y,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(U,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>E.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",w,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),E.showTreePicker?((0,c.uX)(),(0,c.CE)("div",_,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(U,{text:"",onClick:t[4]||(t[4]=e=>E.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[E.treeError?((0,c.uX)(),(0,c.CE)("div",S,[(0,c.bF)(z,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",$,(0,h.v_)(E.treeError),1),(0,c.bF)(U,{type:"primary",size:"small",onClick:A.fetchDirectoryTree},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.retry")),1)]),_:1},8,["onClick"])])):((0,c.uX)(),(0,c.Wv)(W,{key:1,ref:"treeRef",data:E.treeData,props:E.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:A.handleTreeNodeClick},{default:(0,c.k6)(({node:e,data:t})=>[(0,c.Lk)("span",{class:(0,h.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,c.bF)(z,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",L,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,E.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var E=a(70797),A={name:"MoveFileDialog",components:{DirectoryTreePicker:o.A},props:{modelValue:{type:Boolean,default:!1},currentDirectory:{type:String,default:""},isBatchMove:{type:Boolean,default:!1},initialPath:{type:String,default:"/"}},emits:["update:modelValue","confirm","close"],data(){return{targetPath:"/",loading:!1,windowWidth:window.innerWidth,showTreePicker:!1,treeData:[],treeLoading:!1,treeError:"",treeProps:{children:"children",label:"name"}}},computed:{dialogVisible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},isDesktop(){return this.windowWidth>768}},watch:{modelValue(e){e&&(this.targetPath=this.initialPath||"/",this.showTreePicker=!1)},showTreePicker(e){e&&!this.isDesktop&&this.fetchDirectoryTree()}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},handleDirectorySelect(e){this.targetPath=e},handleConfirm(){this.$emit("confirm",this.targetPath)},handleClose(){this.$emit("update:modelValue",!1),this.$emit("close")},async fetchDirectoryTree(){this.treeLoading=!0,this.treeError="";try{const e=await(0,E.A)("/api/directoryTree",{method:"GET"});if(!e.ok)return void(401===e.status?this.treeError=this.$t("moveFile.authFailed"):this.treeError=this.$t("moveFile.serverError"));const t=await e.json();t.tree?this.treeData=[t.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),this.treeError=this.$t("moveFile.loadTreeFailed")}finally{this.treeLoading=!1}},handleTreeNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.targetPath=t,this.showTreePicker=!1}}},I=a(71241);const z=(0,I.A)(A,[["render",D],["__scopeId","data-v-7aaa437c"]]);var U=z,P=a(45130);const B={class:"mobile-drawer-header"},W={class:"mobile-drawer-title"},R={class:"mobile-drawer-content"},O=["onClick"];function M(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(P.eB,{name:"drawer-slide"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,P.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",B,[(0,c.Lk)("span",W,(0,h.v_)(e.$t("mobileDirectory.title")),1),(0,c.bF)(r,{icon:"times",class:"mobile-drawer-close",onClick:s.close},null,8,["onClick"])]),(0,c.Lk)("div",R,[(0,c.Lk)("div",{class:(0,h.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>s.navigate(""))},[(0,c.bF)(r,{icon:"home",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.rootDirectory")),1)],2),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.pathParts,(e,t)=>((0,c.uX)(),(0,c.CE)("div",{key:t,class:(0,h.C4)(["mobile-drawer-item",{active:t===s.pathParts.length-1}]),style:(0,h.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>s.navigate(s.pathParts.slice(0,t+1).join("/"))},[(0,c.bF)(r,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],14,O))),128)),a.currentPath?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>s.goBack&&s.goBack(...e))},[(0,c.bF)(r,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.goBack")),1)])):(0,c.Q3)("",!0)])])])):(0,c.Q3)("",!0)]),_:1})])}a(18111),a(22489);var N={name:"MobileDirectoryDrawer",props:{modelValue:{type:Boolean,default:!1},currentPath:{type:String,default:""}},emits:["update:modelValue","navigate","goBack"],computed:{pathParts(){return this.currentPath.split("/").filter(Boolean)}},methods:{close(){this.$emit("update:modelValue",!1)},navigate(e){this.$emit("navigate",e),this.close()},goBack(){this.$emit("goBack"),this.close()}}};const V=(0,I.A)(N,[["render",M],["__scopeId","data-v-3b79a1b6"]]);var X=V;const j={class:"bottom-sheet-header"},K={class:"bottom-sheet-title"},Z={class:"bottom-sheet-content"};function G(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(P.eB,{name:"bottom-sheet"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,P.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",j,[t[10]||(t[10]=(0,c.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,c.Lk)("span",K,(0,h.v_)(a.title),1)]),(0,c.Lk)("div",Z,[a.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>s.handleAction("folderCopy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFolder")),1)])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>s.handleAction("detail"))},[(0,c.bF)(r,{icon:"info-circle",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.viewDetail")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>s.handleAction("copy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>s.handleAction("download"))},[(0,c.bF)(r,{icon:"download",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.downloadFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>s.handleAction("tag"))},[(0,c.bF)(r,{icon:"tags",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.tagManagement")),1)])],64)),(0,c.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>s.handleAction("delete"))},[(0,c.bF)(r,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(a.isFolder?e.$t("mobileAction.deleteFolder"):e.$t("mobileAction.deleteFile")),1)])])])])):(0,c.Q3)("",!0)]),_:1})])}var H={name:"MobileActionSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},isFolder:{type:Boolean,default:!1}},emits:["update:modelValue","action"],methods:{close(){this.$emit("update:modelValue",!1)},handleAction(e){this.$emit("action",e),this.close()}}};const q=(0,I.A)(H,[["render",G],["__scopeId","data-v-efef5a4c"]]);var Q=q,Y=a(4275),J=a(89559),ee=a(12687);a(18785);const te={class:"batch-tag-container"},ae={class:"tab-content"},ie={class:"tab-description"},ne={class:"input-section"},se={key:0,class:"suggestions-panel"},re=["onClick"],oe={class:"tags-to-add-section"},le={key:0,class:"tags-container"},de={key:1,class:"empty-message"},ce={class:"action-buttons"},he={class:"tab-content"},ue={class:"tab-description"},fe={key:0,class:"common-tags-section"},me={class:"tags-container"},pe={key:1,class:"empty-message"},ge={class:"tab-content"},be={class:"tab-description"},ve={class:"action-buttons"};function ke(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=Y.v$,g=J.KR,b=Y.q,v=r.kZ;return(0,c.uX)(),(0,c.Wv)(v,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",te,[(0,c.bF)(b,{modelValue:n.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>n.activeTab=e),type:"border-card"},{default:(0,c.k6)(()=>[(0,c.bF)(p,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("p",ie,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",ne,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,P.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",se,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,re))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",oe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",de,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",ce,[(0,c.bF)(u,{type:"primary",onClick:s.executeAddTags,loading:n.loading,disabled:0===n.tagsToAdd.length},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.addToAllFiles")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",he,[(0,c.Lk)("p",ue,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",fe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.commonTags")),1),(0,c.Lk)("div",me,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.commonTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",pe,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ge,[(0,c.Lk)("p",be,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(g,{title:e.$t("batchTag.clearWarningTitle"),type:"warning",description:e.$t("batchTag.clearWarningDesc"),closable:!1,style:{"margin-bottom":"20px"},center:""},null,8,["title","description"]),(0,c.Lk)("div",ve,[(0,c.bF)(u,{type:"danger",onClick:s.handleClearAllTags,loading:n.loading},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.confirmClearAll")),1)]),_:1},8,["onClick","loading"])])])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1},8,["title","modelValue","width","onClose"])}a(44114),a(61701);var ye=a(51219),we=a(12933),_e={name:"BatchTagDialog",props:{modelValue:{type:Boolean,default:!1},selectedFiles:{type:Array,required:!0,default:()=>[]}},emits:["update:modelValue","tagsUpdated"],data(){return{activeTab:"add",inputTag:"",tagsToAdd:[],commonTags:[],suggestions:[],showSuggestions:!1,loading:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"600px"},selectedFilesOnly(){return this.selectedFiles.filter(e=>!e.isFolder)},fileCount(){return this.selectedFilesOnly.length},fileIds(){return this.selectedFilesOnly.map(e=>e.name)}},watch:{visible(e){e?this.loadCommonTags():this.resetData()},activeTab(e){"remove"===e&&this.loadCommonTags()}},methods:{resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add"},async loadCommonTags(){if(0!==this.selectedFilesOnly.length)try{const e=this.selectedFilesOnly.map(e=>(0,E.A)(`/api/manage/tags/${encodeURIComponent(e.name)}`,{method:"GET"})),t=await Promise.all(e),a=[];for(const i of t)if(i.ok){const e=await i.json();a.push(e.tags||[])}a.length>0?this.commonTags=a[0].filter(e=>a.every(t=>t.includes(e))):this.commonTags=[]}catch(e){console.error("Error loading common tags:",e),ye.nk.error(this.$t("batchTag.loadCommonTagsFailed"))}else this.commonTags=[]},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.tagsToAdd.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddInputTag()},handleAddInputTag(){const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return ye.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.addFailed"));ye.nk.success(this.$t("batchTag.addSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),ye.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else ye.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();if(!(e.success||e.updated>0))throw new Error(this.$t("batchTag.removeFailed"));ye.nk.success(this.$t("batchTag.removeSuccess",{count:e.updated})),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}},handleClearAllTags(){we.s.confirm(this.$t("batchTag.clearConfirmMessage",{count:this.fileCount}),this.$t("batchTag.clearConfirmTitle"),{confirmButtonText:this.$t("batchTag.clearConfirmOk"),cancelButtonText:this.$t("batchTag.clearConfirmCancel"),type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{ye.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.clearFailed"));ye.nk.success(this.$t("batchTag.clearSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),ye.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const Fe=(0,I.A)(_e,[["render",ke],["__scopeId","data-v-0d04afa1"]]);var Ce=Fe,Te=a(813);a(34896);const Se={class:"tag-management-container"},$e={class:"input-section"},Le={key:0,class:"suggestions-panel"},xe=["onClick"],De={class:"current-tags-section"},Ee={key:0,class:"tags-container"},Ae={key:1,class:"empty-message"},Ie={class:"popular-tags-section"},ze={key:0,class:"tags-container"},Ue={key:1,class:"empty-message"},Pe={key:2,class:"empty-message"},Be={class:"dialog-footer"};function We(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=(0,c.g2)("Loading"),g=Te.tk,b=r.kZ;return(0,c.uX)(),(0,c.Wv)(b,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",Be,[(0,c.bF)(u,{onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",Se,[(0,c.Lk)("div",$e,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,P.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",Le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,xe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",De,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ee,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ae,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",Ie,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",ze,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.popularTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,onClick:t=>s.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):n.loadingPopularTags?((0,c.uX)(),(0,c.CE)("div",Ue,[(0,c.bF)(g,{class:"is-loading"},{default:(0,c.k6)(()=>[(0,c.bF)(p)]),_:1}),(0,c.eW)(" "+(0,h.v_)(e.$t("tagManagement.loading")),1)])):((0,c.uX)(),(0,c.CE)("div",Pe,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))])])]),_:1},8,["title","modelValue","width","onClose"])}var Re=a(57477),Oe={name:"TagManagementDialog",components:{Loading:Re.Loading},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"500px"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},methods:{async loadFileTags(){try{const e=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"GET"});if(!e.ok)throw new Error("Failed to load tags");{const t=await e.json();this.currentTags=t.tags||[]}}catch(e){console.error("Error loading file tags:",e),ye.nk.error(this.$t("tagManagement.loadFailed"))}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,E.A)("/api/manage/tags/autocomplete?limit=20",{method:"GET"});if(e.ok){const t=await e.json();this.popularTags=(t.tags||[]).filter(e=>!this.currentTags.includes(e))}}catch(e){console.error("Error loading popular tags:",e)}finally{this.loadingPopularTags=!1}},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.currentTags.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddTag()},async handleAddTag(){const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return ye.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[e]})});if(!t.ok){const e=await t.json();throw new Error(e.message||this.$t("tagManagement.addFailed"))}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,ye.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),ye.nk.error(t.message||this.$t("tagManagement.addFailed"))}}},async handleRemoveTag(e){try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],ye.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("tagManagement.removeFailed"))}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const Me=(0,I.A)(Oe,[["render",We],["__scopeId","data-v-24c809e4"]]);var Ne=Me,Ve=a(55558),Xe=(a(10456),a(66810)),je=(a(34396),a(4885),a(82006)),Ke=(a(98642),a(63003),a(59869)),Ze=(a(70415),a(73565),a(57009));a(78450);const Ge={class:"detail-actions"},He={class:"preview-section"},qe={class:"preview-content"},Qe=["src"],Ye=["src"],Je={key:1},et={key:1},tt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},at={key:1,style:{color:"#59636E"}},it={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},nt={key:1,style:{color:"#59636E"}};function st(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=Y.v$,p=Y.q,g=Ze.Zq,b=Ke.MF,v=ee.u,k=Ke.TS,y=je.xE,w=je.US,_=r.kZ;return(0,c.uX)(),(0,c.Wv)(_,{title:e.$t("fileDetail.title"),modelValue:s.visible,"onUpdate:modelValue":t[24]||(t[24]=e=>s.visible=e),width:s.dialogWidth},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ge,[n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"download",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.download")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:1,type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"tags",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.tags")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:2,type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"ban",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.blacklist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:3,type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"shield-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.whitelist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:4,type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"trash-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.deleteBtn")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:5,type:"warning",onClick:t[5]||(t[5]=e=>s.startEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"edit",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.edit")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:6,type:"info",onClick:t[6]||(t[6]=e=>s.openRenameDialog()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"i-cursor",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.rename")),1)]),_:1})),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:7,type:"success",onClick:t[7]||(t[7]=e=>s.saveMetadata()),round:"",size:"small",class:"detail-action",loading:n.editSaving},{default:(0,c.k6)(()=>[n.editSaving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save",style:{"margin-right":"3px"}})),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.save")),1)]),_:1},8,["loading"])):(0,c.Q3)("",!0),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:8,onClick:t[8]||(t[8]=e=>s.cancelEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.cancel")),1)]),_:1})):(0,c.Q3)("",!0)]),(0,c.bF)(p,{modelValue:n.activeTab,"onUpdate:modelValue":t[16]||(t[16]=e=>n.activeTab=e),onTabClick:s.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,c.k6)(()=>[(0,c.bF)(m,{label:e.$t("fileDetail.originUrl"),name:"originUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.originUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1},8,["label"]),(0,c.bF)(m,{label:"Markdown",name:"mdUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.mdUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"HTML",name:"htmlUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.htmlUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"BBCode",name:"bbUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[12]||(t[12]=e=>a.urls.bbUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,c.uX)(),(0,c.Wv)(m,{key:0,label:"TG File ID",name:"tgId"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[13]||(t[13]=e=>a.urls.tgId=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3Location?((0,c.uX)(),(0,c.Wv)(m,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[14]||(t[14]=e=>a.urls.S3Location=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,c.uX)(),(0,c.Wv)(m,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,c.Lk)("div",He,[(0,c.Lk)("div",qe,[s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[17]||(t[17]=(...e)=>s.openImageLink&&s.openImageLink(...e))},null,8,Qe)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Ye)):s.isImage?((0,c.uX)(),(0,c.Wv)(g,{key:2,src:a.fileLink,"preview-src-list":[a.fileLink],"preview-teleported":!0,fit:"contain",lazy:"",class:"image-preview"},null,8,["src","preview-src-list"])):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,c.bF)(k,{border:"",column:s.descColumn},{default:(0,c.k6)(()=>[(0,c.bF)(b,{label:e.$t("fileDetail.fileNameLabel")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileName,"onUpdate:modelValue":t[18]||(t[18]=e=>n.editForm.FileName=e),size:"small",placeholder:e.$t("fileDetail.fileNamePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Je,(0,h.v_)(a.file?.metadata?.FileName||a.file?.name),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileType")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileType,"onUpdate:modelValue":t[19]||(t[19]=e=>n.editForm.FileType=e),size:"small",placeholder:e.$t("fileDetail.fileTypePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",et,(0,h.v_)(a.file?.metadata?.FileType||e.$t("fileDetail.unknown")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileSizeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.fileSizeDisplay),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.imageDimensions")},{default:(0,c.k6)(()=>[s.imageDimensions?((0,c.uX)(),(0,c.CE)("div",tt,[(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Width)+" × "+(0,h.v_)(a.file?.metadata?.Height),1),(0,c.bF)(v,{size:"small",type:"info",style:{display:"inline-flex","align-items":"center","justify-content":"center"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.orientationIcon),1)]),_:1})])):((0,c.uX)(),(0,c.CE)("span",at,(0,h.v_)(e.$t("fileDetail.noDimensions")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadTimeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.uploadTime),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.channelTypeAndName")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:"info",style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.Channel||e.$t("fileDetail.unknown")),1)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.accessStatusAndReview")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:s.accessTagType,style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.accessType),1)]),_:1},8,["type"]),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Label||e.$t("fileDetail.noTags")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadIP")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadIP||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadAddressLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadAddress||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileTags")},{default:(0,c.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",it,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.file?.metadata?.Tags,e=>((0,c.uX)(),(0,c.Wv)(v,{key:e,size:"small"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128))])):((0,c.uX)(),(0,c.CE)("span",nt,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(_,{modelValue:n.showRenameDialog,"onUpdate:modelValue":t[23]||(t[23]=e=>n.showRenameDialog=e),title:e.$t("fileDetail.renameTitle"),width:s.dialogWidth,"append-to-body":""},{footer:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:t[21]||(t[21]=e=>s.closeRenameDialog())},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameCancel")),1)]),_:1}),(0,c.bF)(u,{type:"primary",onClick:t[22]||(t[22]=e=>s.submitRename()),loading:n.renameSaving,disabled:!n.renameValidation.valid},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameConfirm")),1)]),_:1},8,["loading","disabled"])]),default:(0,c.k6)(()=>[(0,c.bF)(w,{onSubmit:(0,P.D$)(s.submitRename,["prevent"])},{default:(0,c.k6)(()=>[(0,c.bF)(y,{label:e.$t("fileDetail.renameLabel"),error:n.renameValidation.error},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:n.renameForm.newFileId,"onUpdate:modelValue":t[20]||(t[20]=e=>n.renameForm.newFileId=e),placeholder:e.$t("fileDetail.renamePlaceholder"),onInput:s.validateRenameInput,clearable:""},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label","error"])]),_:1},8,["onSubmit"])]),_:1},8,["modelValue","title","width"])]),_:1},8,["title","modelValue","width"])}const rt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function ot(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:rt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var lt={name:"FileDetailDialog",props:{modelValue:{type:Boolean,default:!1},file:{type:Object,default:null},fileLink:{type:String,default:""},urls:{type:Object,default:()=>({originUrl:"",mdUrl:"",htmlUrl:"",bbUrl:"",tgId:"",S3Location:"",S3CdnFileUrl:""})}},emits:["update:modelValue","download","tagManagement","block","white","delete","metadataUpdated","fileRenamed"],watch:{visible(e){e||(this.isEditing=!1,this.editSaving=!1)}},data(){return{activeTab:"originUrl",isEditing:!1,editForm:{FileName:"",FileType:""},editSaving:!1,showRenameDialog:!1,renameForm:{newFileId:""},renameValidation:{valid:!0,error:""},renameSaving:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"95%":"900px"},descColumn(){return window.innerWidth<768?1:2},isVideo(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},uploadTime(){return this.file?.metadata?.TimeStamp?new Date(this.file.metadata.TimeStamp).toLocaleString():this.$t("fileDetail.unknown")},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?this.$t("fileDetail.accessNormalWhitelist"):"Block"===e?this.$t("fileDetail.accessBlockedBlacklist"):"adult"===t?this.$t("fileDetail.accessBlockedReview"):this.$t("fileDetail.accessNormal")},accessTagType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"success":"Block"===e||"adult"===t?"danger":"success"},imageDimensions(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;return!(!e||!t)||null},orientationIcon(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;if(!e||!t)return"";const a=e/t;return a>1.1?this.$t("fileDetail.orientationLandscape"):a<.9?this.$t("fileDetail.orientationPortrait"):this.$t("fileDetail.orientationSquare")},fileSizeDisplay(){const e=this.file?.metadata?.FileSizeBytes,t=this.file?.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:this.$t("fileDetail.unknown")}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleTabClick(){},handleUrlClick(e){const t=e.target;t.select(),navigator.clipboard.writeText(t.value).then(()=>{ye.nk.success(this.$t("fileDetail.linkCopied"))})},openImageLink(){this.fileLink&&window.open(this.fileLink,"_blank")},startEdit(){this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.isEditing=!0},cancelEdit(){this.isEditing=!1,this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.editSaving=!1},async saveMetadata(){this.editSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/metadata/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({FileName:this.editForm.FileName,FileType:this.editForm.FileType})});if(!t.ok){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.metadataSaveFailed"))}{const a=await t.json();ye.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),ye.nk.error(e.message||this.$t("fileDetail.metadataSaveFailed"))}finally{this.editSaving=!1}},openRenameDialog(){this.renameForm.newFileId=this.file?.name||"",this.renameValidation={valid:!0,error:""},this.showRenameDialog=!0},closeRenameDialog(){this.showRenameDialog=!1,this.renameForm.newFileId="",this.renameValidation={valid:!0,error:""}},validateRenameInput(){const e=ot(this.renameForm.newFileId,this.file?.name||"");this.renameValidation={valid:e.valid,error:e.error||""}},async submitRename(){if(!this.renameSaving&&(this.validateRenameInput(),this.renameValidation.valid)){this.renameSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/rename/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newFileId:this.renameForm.newFileId})});if(t.ok){const a=await t.json();ye.nk.success(this.$t("fileDetail.renameSuccess")),this.showRenameDialog=!1,this.$emit("fileRenamed",e,this.renameForm.newFileId,a.metadata)}else{if(409!==t.status){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.renameFailed"))}this.renameValidation={valid:!1,error:this.$t("fileDetail.renameConflict")}}}catch(e){console.error("Error renaming file:",e),ye.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const dt=(0,I.A)(lt,[["render",st],["__scopeId","data-v-38a97614"]]);var ct=dt,ht=a(78507);a(213);const ut={key:0,class:"batch-floating-bar"},ft={class:"batch-selection-summary"},mt={class:"batch-selection-count"},pt={class:"batch-floating-actions"};function gt(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ht.R7;return(0,c.uX)(),(0,c.Wv)(P.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",ut,[(0,c.bF)(d,{disabled:s.disableTooltip,content:e.$t("dashboard.clearSelection"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:"batch-floating-btn ghost","aria-label":e.$t("dashboard.clearSelection"),onClick:s.handleClear},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"times",class:"batch-floating-icon"})]),_:1},8,["aria-label","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:s.disableTooltip,content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ft,[(0,c.Lk)("span",mt,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["disabled","content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",pt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.actions,t=>((0,c.uX)(),(0,c.Wv)(d,{key:t.command,disabled:s.disableTooltip,content:e.$t(t.label),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:(0,h.C4)(["batch-floating-btn",t.className]),"aria-label":e.$t(t.label),onClick:e=>s.handleAction(t.command)},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:t.icon,class:"batch-floating-icon"},null,8,["icon"])]),_:2},1032,["class","aria-label","onClick"])]),_:2},1032,["disabled","content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var bt={name:"BatchActionBar",props:{selectedCount:{type:Number,required:!0}},emits:["action","clear"],data(){return{actions:[{command:"copy",label:"dashboard.copy",icon:"copy",className:"copy"},{command:"download",label:"dashboard.download",icon:"download",className:"download"},{command:"move",label:"dashboard.move",icon:"file-export",className:"move"},{command:"tagManagement",label:"dashboard.tagManagement",icon:"tags",className:"tag"},{command:"ban",label:"dashboard.addToBlacklist",icon:"ban",className:"ban"},{command:"white",label:"dashboard.addToWhitelist",icon:"shield-alt",className:"white"},{command:"delete",label:"dashboard.delete",icon:"trash-alt",className:"danger"}]}},computed:{disableTooltip(){return window.innerWidth<768}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const vt=(0,I.A)(bt,[["render",gt],["__scopeId","data-v-6de9da06"]]);var kt=vt,yt=a(54880),wt=(a(4318),a(77815));a(72907);const _t=["aria-checked"];function Ft(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.CE)("span",{class:(0,h.C4)(["dashboard-checkbox",[`dashboard-checkbox--${a.variant}`,{checked:a.checked,indeterminate:a.indeterminate&&!a.checked}]]),role:"checkbox","aria-checked":s.ariaChecked,tabindex:"0",onClick:t[0]||(t[0]=(...e)=>s.handleClick&&s.handleClick(...e)),onKeydown:[t[1]||(t[1]=(0,P.jR)((0,P.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["enter"])),t[2]||(t[2]=(0,P.jR)((0,P.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["space"]))]},[a.checked?((0,c.uX)(),(0,c.Wv)(r,{key:0,icon:"check",class:"dashboard-checkbox-mark"})):a.indeterminate?((0,c.uX)(),(0,c.Wv)(r,{key:1,icon:"minus",class:"dashboard-checkbox-mark"})):(0,c.Q3)("",!0)],42,_t)}var Ct={name:"DashboardCheckbox",props:{checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},variant:{type:String,default:"list",validator:e=>["list","breadcrumb"].includes(e)}},emits:["click"],computed:{ariaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"}},methods:{handleClick(e){this.$emit("click",e)}}};const Tt=(0,I.A)(Ct,[["render",Ft],["__scopeId","data-v-f8222714"]]);var St=Tt;const $t={class:"list-col list-col-checkbox"},Lt=["src"],xt=["src"],Dt=["title"],Et={class:"filename-start"},At={class:"filename-end"},It={class:"list-col list-col-tags"},zt={key:1,class:"list-empty"},Ut={class:"list-col list-col-channel"},Pt={class:"list-col list-col-channel-name"},Bt={key:0,class:"channel-name-box"},Wt={key:1,class:"list-empty"},Rt={class:"list-col list-col-address"},Ot={key:0,class:"address-box"},Mt={key:1,class:"list-empty"},Nt={class:"list-col list-col-size"},Vt={class:"list-col list-col-date"},Xt={class:"list-col list-col-actions"};function jt(e,t,a,i,n,s){const r=St,o=(0,c.g2)("font-awesome-icon"),l=ht.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[8]||(t[8]=t=>e.$emit("touchstart",t)),onTouchend:t[9]||(t[9]=t=>e.$emit("touchend",t)),onTouchmove:t[10]||(t[10]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",$t,[(0,c.bF)(r,{checked:n.localSelected,onClick:(0,P.D$)(s.toggleSelect,["stop"])},null,8,["checked","onClick"])]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[0]||(t[0]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"folder-open",class:"list-folder-icon"})):s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,Lt)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,xt)):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[1]||(t[1]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",Et,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",At,(0,h.v_)(s.fileNameEnd),1)],8,Dt)]),(0,c.Lk)("div",It,[!s.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,c.uX)(),(0,c.CE)("span",{key:t,class:"color-tag",style:(0,h.Tr)({background:s.getTagColor(t)})},(0,h.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,c.uX)(),(0,c.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,h.Tr)({background:s.getTagColor(3)})},"+"+(0,h.v_)(a.item.metadata.Tags.length-3),5)):(0,c.Q3)("",!0)],64)):((0,c.uX)(),(0,c.CE)("span",zt,"-"))]),(0,c.Lk)("div",Ut,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",Pt,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",Bt,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",Wt,"-"))]),(0,c.Lk)("div",Rt,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",Ot,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",Mt,"-"))]),(0,c.Lk)("div",Nt,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",Vt,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",Xt,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,P.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[2]||(t[2]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,P.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(l,{content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[7]||(t[7]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var Kt={name:"FileListItem",components:{DashboardCheckbox:St},props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,default:""}},emits:["update:selected","enter","detail","copy","folderCopy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,tagColors:["#f472b6","#a78bfa","#60a5fa","#34d399"]}},computed:{isFolder(){return this.item.isFolder||this.item.name?.endsWith("/")},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isImage(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},displayName(){if(this.isFolder){const e=this.item.name.split("/").filter(Boolean);return e[e.length-1]||this.item.name}return this.item.metadata?.FileName||this.getFileName(this.item.name)},fileNameStart(){const e=this.displayName;return e.length<=20?e:e.slice(0,-8)},fileNameEnd(){const e=this.displayName;return e.length<=20?"":e.slice(-8)},uploadDate(){return this.item.uploaded?new Date(this.item.uploaded).toLocaleDateString():this.item.metadata?.TimeStamp?new Date(this.item.metadata.TimeStamp).toLocaleDateString():"-"},fileSizeDisplay(){const e=this.item.metadata?.FileSizeBytes,t=this.item.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:"-"}},watch:{selected(e){this.localSelected=e}},methods:{toggleSelect(){this.localSelected=!this.localSelected,this.$emit("update:selected",this.localSelected)},handlePreviewClick(){this.isFolder?this.$emit("enter"):this.$emit("detail")},getFileName(e){const t=(e||"").split("/");return t[t.length-1]},getTagColor(e){return this.tagColors[e%this.tagColors.length]}}};const Zt=(0,I.A)(Kt,[["render",jt],["__scopeId","data-v-4b029ac8"]]);var Gt=Zt,Ht=a(70683),qt=(a(95385),a(98469));a(38736);const Qt={class:"file-short-info"},Yt={key:0,class:"success-tag"},Jt={key:1,class:"fail-tag"},ea={key:2,class:"success-tag"},ta={key:3,class:"primary-tag"},aa={key:0,style:{"margin-left":"2px"}},ia={key:0,class:"skeleton-wrapper"},na={class:"error-text"},sa=["src"],ra={class:"error-text"},oa={key:3,class:"file-preview"},la={class:"card-bottom-overlay"},da={class:"file-name-row"},ca={class:"file-name"},ha={class:"action-bar"},ua={class:"action-bar-left"},fa={class:"action-bar-right"};function ma(e,t,a,i,n,s){const r=qt.dI,o=(0,c.g2)("font-awesome-icon"),l=Ze.Zq,d=ht.R7,u=Ht.Ik;return(0,c.uX)(),(0,c.Wv)(u,{class:"img-card",onTouchstart:t[17]||(t[17]=t=>e.$emit("touchstart",t)),onTouchend:t[18]||(t[18]=t=>e.$emit("touchend",t)),onTouchmove:t[19]||(t[19]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",Qt,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",Yt,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",Jt,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",ea,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",ta,[(0,c.bF)(o,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,c.eW)(" "+(0,h.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,c.uX)(),(0,c.CE)("span",aa," (+"+(0,h.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,c.Q3)("",!0)])):(0,c.Q3)("",!0)]),s.isVideo?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[n.videoLoading?((0,c.uX)(),(0,c.CE)("div",ia)):n.videoError?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"exclamation-triangle",class:"error-icon"}),(0,c.Lk)("span",na,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])):(0,c.Q3)("",!0),(0,c.bo)((0,c.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>s.handleVideoClick&&s.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>s.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>s.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>n.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>s.handleVideoError&&s.handleVideoError(...e))},null,40,sa),[[P.aG,!n.videoLoading&&!n.videoError]])],64)):s.isAudio?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"music",class:"file-icon audio-icon"})])):s.isImage?((0,c.uX)(),(0,c.Wv)(l,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",decoding:"async",class:"image-preview"},{placeholder:(0,c.k6)(()=>[...t[20]||(t[20]=[(0,c.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,c.k6)(()=>[(0,c.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,P.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",ra,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",oa,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",la,[(0,c.Lk)("div",da,[(0,c.Lk)("span",ca,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",ha,[(0,c.Lk)("div",ua,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,P.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",fa,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,P.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var pa={name:"FileCard",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,required:!0},previewSrcList:{type:Array,default:()=>[]},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","detail","copy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,videoLoading:!0,videoError:!1}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},displayName(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e},fileLink(){this.videoLoading=!0,this.videoError=!1}},methods:{handleVideoError(){this.videoLoading=!1,this.videoError=!0},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleFullscreenChange(e){const t=e.target,a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;a?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)}}};const ga=(0,I.A)(pa,[["render",ma],["__scopeId","data-v-12b39bad"]]);var ba=ga;const va={class:"card-bottom-overlay"},ka={class:"file-name-row"},ya={class:"file-name"},wa={key:0,class:"action-bar"},_a={class:"action-bar-right"};function Fa(e,t,a,i,n,s){const r=qt.dI,o=(0,c.g2)("font-awesome-icon"),l=ht.R7,d=Ht.Ik;return(0,c.uX)(),(0,c.Wv)(d,{class:"img-card folder-card",onTouchstart:t[6]||(t[6]=t=>e.$emit("touchstart",t)),onTouchend:t[7]||(t[7]=t=>e.$emit("touchend",t)),onTouchmove:t[8]||(t[8]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,c.bF)(o,{icon:"folder-open",class:"folder-icon-svg"})]),(0,c.Lk)("div",va,[(0,c.Lk)("div",ka,[(0,c.Lk)("span",ya,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",wa,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",_a,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var Ca={name:"FolderCard",props:{name:{type:String,required:!0},selected:{type:Boolean,default:!1},showActions:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","enter","copy","move","delete","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected}},computed:{folderName(){const e=this.name.split("/").filter(Boolean);return e[e.length-1]||this.name}},watch:{selected(e){this.localSelected=e}}};const Ta=(0,I.A)(Ca,[["render",Fa],["__scopeId","data-v-e3ec6a12"]]);var Sa=Ta;function $a(e,t,a,i,n,s){return"card"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,c.Lk)("div",{class:"skeleton-image"},null,-1),(0,c.Lk)("div",{class:"skeleton-info"},[(0,c.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:1},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,c.Fv)('
',10)])]))),128)):(0,c.Q3)("",!0)}var La={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const xa=(0,I.A)(La,[["render",$a],["__scopeId","data-v-ef863880"]]);var Da=xa,Ea=a(81095),Aa=(a(77128),a(62086)),Ia=(a(40670),a(88830),a(23597),a(49187),a(77788));a(72099);const za={class:"el-dropdown-link filter-trigger"},Ua={class:"filter-section"},Pa={class:"filter-title"},Ba={class:"filter-options"},Wa={class:"filter-section"},Ra={class:"filter-title"},Oa={class:"filter-options"},Ma={class:"filter-section"},Na={class:"filter-title"},Va={class:"filter-options"},Xa={class:"filter-section"},ja={class:"filter-title"},Ka={class:"filter-options"},Za={class:"filter-section"},Ga={class:"filter-title"},Ha={class:"filter-options"},qa={key:0,class:"filter-section"},Qa={class:"filter-title"},Ya={class:"filter-options"},Ja={key:0,class:"channel-divider"},ei={class:"channel-group-title"},ti={class:"filter-actions"};function ai(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=Ia.z_,d=qt.dI,u=qt.o5,f=l.S2,m=Aa.Iy,p=Aa.dW;return(0,c.uX)(),(0,c.Wv)(p,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,c.k6)(()=>[(0,c.bF)(m,{class:"filter-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ua,[(0,c.Lk)("div",Pa,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",Ba,[(0,c.bF)(u,{modelValue:n.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>s.handleFilterChange("accessStatus"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.accessStatusOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Wa,[(0,c.Lk)("div",Ra,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",Oa,[(0,c.bF)(u,{modelValue:n.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>n.localFilters.listType=e),onChange:t[3]||(t[3]=e=>s.handleFilterChange("listType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.listTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ma,[(0,c.Lk)("div",Na,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",Va,[(0,c.bF)(u,{modelValue:n.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>n.localFilters.label=e),onChange:t[5]||(t[5]=e=>s.handleFilterChange("label"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.labelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Xa,[(0,c.Lk)("div",ja,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",Ka,[(0,c.bF)(u,{modelValue:n.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>n.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>s.handleFilterChange("fileType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.fileTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Za,[(0,c.Lk)("div",Ga,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Ha,[(0,c.bF)(u,{modelValue:n.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>n.localFilters.channel=e),onChange:t[9]||(t[9]=e=>s.handleFilterChange("channel"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.channelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,c.uX)(),(0,c.CE)("div",qa,[(0,c.Lk)("div",Qa,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Ya,[(0,c.bF)(u,{modelValue:n.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>n.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>s.handleFilterChange("channelName"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.groupedChannelNames,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:"group-"+e.type},[t>0?((0,c.uX)(),(0,c.CE)("div",Ja)):(0,c.Q3)("",!0),(0,c.Lk)("div",ei,(0,h.v_)(e.typeLabel),1),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(e.channels,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,c.Q3)("",!0),(0,c.Lk)("div",ti,[(0,c.bF)(f,{size:"small",onClick:s.clearFilters,disabled:0===s.activeFilterCount},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("filter.clearFilters")),1)]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",za,[(0,c.bF)(o,{value:s.activeFilterCount,hidden:0===s.activeFilterCount,class:"filter-badge"},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588),a(18237);var ii={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{accessStatusOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.blocked"),value:"blocked"}]},listTypeOptions(){return[{label:this.$t("filter.whiteList"),value:"White"},{label:this.$t("filter.blackList"),value:"Block"},{label:this.$t("filter.notSet"),value:"None"}]},labelOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.teenContent"),value:"teen"},{label:this.$t("filter.adultContent"),value:"adult"}]},fileTypeOptions(){return[{label:this.$t("filter.image"),value:"image"},{label:this.$t("filter.video"),value:"video"},{label:this.$t("filter.audio"),value:"audio"},{label:this.$t("filter.other"),value:"other"}]},channelOptions(){return[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"WebDAV",value:"WebDAV"},{label:this.$t("filter.externalLink"),value:"External"}]},activeFilterCount(){return Object.values(this.localFilters).reduce((e,t)=>e+t.length,0)},groupedChannelNames(){const e={};return this.channelNameOptions.forEach(t=>{e[t.type]||(e[t.type]={type:t.type,typeLabel:t.typeLabel,channels:[]}),e[t.type].channels.push(t)}),Object.values(e)}},watch:{filters:{handler(e){this.localFilters={accessStatus:Array.isArray(e.accessStatus)?[...e.accessStatus]:[],listType:Array.isArray(e.listType)?[...e.listType]:[],label:Array.isArray(e.label)?[...e.label]:[],fileType:Array.isArray(e.fileType)?[...e.fileType]:[],channel:Array.isArray(e.channel)?[...e.channel]:[],channelName:Array.isArray(e.channelName)?[...e.channelName]:[]}},immediate:!0,deep:!0}},methods:{handleFilterChange(e){this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:e,filters:{...this.localFilters}})},clearFilters(){this.localFilters={accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:"clear",filters:{...this.localFilters}})}}};const ni=(0,I.A)(ii,[["render",ai],["__scopeId","data-v-e6a38b20"]]);var si=ni,ri=a(91570);const oi={class:"container"},li={class:"header-content"},di={class:"search-area"},ci={class:"search-card"},hi={class:"actions"},ui={class:"el-dropdown-link"},fi={class:"el-dropdown-link"},mi={class:"breadcrumb-container"},pi={class:"breadcrumb-view-toggle",role:"group"},gi=["title","aria-pressed"],bi=["title","aria-pressed"],vi={class:"mobile-directory-path"},ki={class:"breadcrumb desktop-only"},yi=["title"],wi={key:1,class:"empty-state"},_i={class:"empty-text"},Fi={class:"empty-hint"},Ci={class:"list-header"},Ti={class:"list-col list-col-checkbox"},Si={class:"list-col list-col-preview"},$i={class:"list-col list-col-name"},Li={class:"list-col list-col-tags"},xi={class:"list-col list-col-channel"},Di={class:"list-col list-col-channel-name"},Ei={class:"list-col list-col-address"},Ai={class:"list-col list-col-size"},Ii={class:"list-col list-col-date"},zi={class:"list-col list-col-actions"},Ui={key:1,class:"empty-state list-empty"},Pi={class:"empty-text"},Bi={class:"empty-hint"},Wi={class:"pagination-container"},Ri={class:"pagination-center"},Oi={class:"pagination-right"},Mi={class:"page-total"},Ni={class:"page-jump"},Vi={class:"dialog-section"},Xi={class:"section-header"},ji={class:"section-title"},Ki={class:"section-content"},Zi={class:"dialog-section"},Gi={class:"section-header"},Hi={class:"section-title"},qi={class:"section-content"},Qi={class:"setting-item"},Yi={class:"setting-label"},Ji={key:0,class:"setting-item"},en={class:"setting-label"},tn={class:"dialog-action"};function an(e,t,a,i,n,s){const o=ri.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=si,p=Aa.c6,g=Aa.Iy,b=Aa.dW,v=ht.R7,k=yt.bZ,y=St,w=Ea.WZ,_=Ea.vp,F=Da,C=Sa,T=ba,S=Gt,$=wt.aQ,L=l.S2,x=yt.ZO,D=yt.lX,E=kt,A=ct,I=Xe.ll,z=Xe.MQ,B=Ve.qi,W=r.kZ,R=Ne,O=Ce,M=Q,N=X,V=U;return(0,c.uX)(),(0,c.CE)("div",oi,[(0,c.bF)(D,null,{default:(0,c.k6)(()=>[(0,c.bF)(k,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",li,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",di,[(0,c.Lk)("div",ci,[(0,c.bF)(f,{modelValue:n.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>n.tempSearch=e),size:"small",placeholder:e.$t("dashboard.searchPlaceholder"),onKeyup:(0,P.jR)(s.handleSearch,["enter"])},{suffix:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"search",class:"search-icon",onClick:s.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup"])]),(0,c.bF)(m,{filters:n.filters,"onUpdate:filters":t[1]||(t[1]=e=>n.filters=e),channelNameOptions:n.channelNameOptions,onChange:s.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,c.Lk)("div",hi,[(0,c.bF)(b,{onCommand:s.sort,"hide-on-click":!1},{dropdown:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.bF)(p,{command:"dateDesc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByDateDesc")),1)]),_:1}),(0,c.bF)(p,{command:"nameAsc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByNameAsc")),1)]),_:1})]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",ui,[(0,c.bF)(u,{icon:s.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.Lk)("span",fi,[(0,c.bF)(u,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>n.showUrlDialog=!0)})])]),_:1},8,["disabled","content"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sign-out-alt",class:"header-icon",onClick:s.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,c.bF)(x,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",mi,[(0,c.bF)(y,{checked:s.selectPage,indeterminate:s.selectedPageFiles&&!s.selectPage,variant:"breadcrumb",onClick:s.handleSelectPage},null,8,["checked","indeterminate","onClick"]),(0,c.Lk)("div",pi,[(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"card"===n.viewMode}]),type:"button",title:e.$t("dashboard.cardView"),"aria-pressed":"card"===n.viewMode,onClick:t[3]||(t[3]=e=>s.setViewMode("card"))},[(0,c.bF)(u,{icon:"th-large",class:"breadcrumb-view-icon"})],10,gi),(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"list"===n.viewMode}]),type:"button",title:e.$t("dashboard.listView"),"aria-pressed":"list"===n.viewMode,onClick:t[4]||(t[4]=e=>s.setViewMode("list"))},[(0,c.bF)(u,{icon:"list",class:"breadcrumb-view-icon"})],10,bi)]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[5]||(t[5]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",vi,(0,h.v_)(n.currentPath&&n.currentPath.split("/").filter(Boolean).length>0?n.currentPath.split("/").filter(Boolean).pop():e.$t("dashboard.rootDirectory")),1),(0,c.bF)(u,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,c.Lk)("div",ki,[(0,c.bF)(_,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(w,{onClick:t[6]||(t[6]=e=>s.navigateToFolder(""))},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentPath.split("/").filter(Boolean),(e,t)=>((0,c.uX)(),(0,c.Wv)(w,{key:t,onClick:e=>s.navigateToFolder(n.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,c.Lk)("span",{class:"stats-badge",title:e.$t("dashboard.totalFiles",{count:e.$data.Number})},[(0,c.bF)(u,{icon:"database",class:"stats-badge-icon"}),(0,c.eW)(" "+(0,h.v_)(n.Number),1)],8,yi)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef",onTouchstartPassive:t[7]||(t[7]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[8]||(t[8]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[9]||(t[9]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[n.loading?((0,c.uX)(),(0,c.Wv)(F,{key:0,type:"card",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",wi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",_i,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Fi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:t},[s.isFolder(e)?((0,c.uX)(),(0,c.Wv)(C,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!n.isSearchMode,disableTooltip:s.disableTooltip,onEnter:t=>s.enterFolder(e.name),onCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onTouchstart:a=>s.handleFolderTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,c.uX)(),(0,c.Wv)(T,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:s.disableTooltip,onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))],34)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef",onTouchstartPassive:t[11]||(t[11]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[12]||(t[12]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[13]||(t[13]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[(0,c.Lk)("div",Ci,[(0,c.Lk)("div",Ti,[(0,c.bF)(y,{checked:s.isSelectAll,indeterminate:s.isIndeterminate,onClick:t[10]||(t[10]=e=>s.handleSelectAllPage(!s.isSelectAll))},null,8,["checked","indeterminate"])]),(0,c.Lk)("div",Si,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",$i,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",Li,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",xi,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",Di,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",Ei,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",Ai,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",Ii,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",zi,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(F,{key:0,type:"list",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",Ui,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Pi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Bi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.Wv)(S,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),onEnter:t=>s.enterFolder(e.name),onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onFolderCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.isFolder(e)?s.handleFolderTouchStart(e,t):s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))],34)),i.isDragging?((0,c.uX)(),(0,c.CE)("div",{key:2,class:"drag-select-overlay",style:(0,h.Tr)({position:"fixed",left:i.selectionRect.left+"px",top:i.selectionRect.top+"px",width:i.selectionRect.width+"px",height:i.selectionRect.height+"px"})},null,4)):(0,c.Q3)("",!0),(0,c.Lk)("div",Wi,[(0,c.Lk)("div",Ri,[(0,c.bF)($,{background:"",layout:"prev, pager, next",total:s.filteredTableData.length,"page-size":n.pageSize,"current-page":n.currentPage,"pager-count":s.pagerCount,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,c.bF)(L,{type:"primary",onClick:s.refreshFileList,class:"refresh-btn"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sync",class:(0,h.C4)({"fa-spin":n.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),n.currentPage===Math.ceil(s.filteredTableData.length/n.pageSize)?((0,c.uX)(),(0,c.Wv)(L,{key:0,type:"primary",onClick:s.loadMoreData,loading:n.loading,class:"load-more"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.loadMore")),1)]),_:1},8,["onClick","loading"])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Oi,[(0,c.Lk)("span",Mi,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",Ni,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[14]||(t[14]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,P.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(L,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[31]||(t[31]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(E,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(A,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[15]||(t[15]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[16]||(t[16]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[17]||(t[17]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[18]||(t[18]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[19]||(t[19]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[20]||(t[20]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(W,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[25]||(t[25]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Vi,[(0,c.Lk)("div",Xi,[(0,c.Lk)("span",ji,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",Ki,[(0,c.bF)(z,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[21]||(t[21]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(I,{label:"originUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"link",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,c.bF)(I,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[32]||(t[32]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(I,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[33]||(t[33]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(I,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[34]||(t[34]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(I,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[35]||(t[35]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(I,{label:"s3Location",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"cloud",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.s3Link")),1)]),_:1})]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Zi,[(0,c.Lk)("div",Gi,[(0,c.Lk)("span",Hi,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(v,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,c.Lk)("div",qi,[(0,c.Lk)("div",Qi,[(0,c.Lk)("span",Yi,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(B,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[22]||(t[22]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",Ji,[(0,c.Lk)("span",en,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[23]||(t[23]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",tn,[(0,c.bF)(L,{type:"primary",onClick:t[24]||(t[24]=e=>n.showUrlDialog=!1),class:"confirm-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,c.bF)(R,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[26]||(t[26]=e=>n.showTagDialog=e),fileId:n.currentTagFile,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,c.bF)(O,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[27]||(t[27]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(M,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[28]||(t[28]=e=>n.showMobileActionModal=e),title:n.mobileActionIsFolder?s.getFolderName(n.mobileActionFile?.name||""):n.mobileActionFile?.metadata?.FileName||s.getFileName(n.mobileActionFile?.name||""),isFolder:n.mobileActionIsFolder,onAction:s.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,c.bF)(N,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[29]||(t[29]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(V,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[30]||(t[30]=e=>n.showMoveDialog=e),"current-directory":n.currentPath,"is-batch-move":n.isBatchMove,"initial-path":n.moveTargetPath,onConfirm:s.confirmMove},null,8,["modelValue","current-directory","is-batch-move","initial-path","onConfirm"])])}a(81148),a(20116),a(13579),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var nn=a(60782),sn=a(44813),rn=a.n(sn),on=a(54047),ln=a(46638);class dn{constructor(){this.FILE_LIST_PATH="data/fileList.json",this.fileListCache=null,this.storageWarningShown=!1}getLocalFileList(){const e=this.getMutableFileList();return{...e,files:[...e.files||[]],directories:[...e.directories||[]]}}getMutableFileList(){if(this.fileListCache)return this.fileListCache;try{const e=localStorage.getItem(this.FILE_LIST_PATH);return this.fileListCache=e?JSON.parse(e):this.createEmptyFileList(),this.fileListCache}catch(e){return console.error("Error reading local file list:",e),this.fileListCache=this.createEmptyFileList(),this.fileListCache}}updateFileListCache(e){this.fileListCache=e||this.createEmptyFileList();const t=this.persistFileListCache();return{cacheUpdated:!0,persisted:t}}persistFileListCache(){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(this.fileListCache)),!0}catch(e){return this.handleStoragePersistError(e),!1}}createEmptyFileList(){return{files:[],directories:[]}}handleStoragePersistError(e){console.warn("File list is kept in memory because localStorage persistence failed:",e);try{localStorage.removeItem(this.FILE_LIST_PATH)}catch(t){console.warn("Failed to remove stale file list cache:",t)}this.storageWarningShown||(this.storageWarningShown=!0,ye.nk.warning(ln.Ay.global.t("dashboard.fileListMemoryCacheWarning")))}addFile(e){try{const t=this.getMutableFileList();return t.files.push(e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getMutableFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.updateFileListCache(t).cacheUpdated)}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getMutableFileList();if(a){const t=n.directories.indexOf(e);-1!==t&&n.directories.splice(t,1)}else{const t=n.files.findIndex(t=>t.name===e);-1!==t&&n.files.splice(t,1)}if(t.startsWith(i)){const e=t.substring(i.length).split("/");if(e.length>1){const t=i+e[0];n.directories.includes(t)||n.directories.push(t)}}return this.updateFileListCache(n).cacheUpdated}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>t.name!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getMutableFileList(),a=t.files.filter(t=>t.name.startsWith(e+"/")),i=t.directories.filter(t=>t.startsWith(e+"/"));return{files:a,directories:i}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}buildFilterParams(e){let t="";return e.accessStatus&&e.accessStatus.length>0&&(t+=`&accessStatus=${encodeURIComponent(e.accessStatus.join(","))}`),e.listType&&e.listType.length>0&&(t+=`&listType=${encodeURIComponent(e.listType.join(","))}`),e.label&&e.label.length>0&&(t+=`&label=${encodeURIComponent(e.label.join(","))}`),e.fileType&&e.fileType.length>0&&(t+=`&fileType=${encodeURIComponent(e.fileType.join(","))}`),e.channel&&e.channel.length>0&&(t+=`&channel=${encodeURIComponent(e.channel.join(","))}`),e.channelName&&e.channelName.length>0&&(t+=`&channelName=${encodeURIComponent(e.channelName.join(","))}`),t}async refreshFileList(e,t="",a="",i="",n={}){t=t.trim();try{let s=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;a&&(s+=`&includeTags=${encodeURIComponent(a)}`),i&&(s+=`&excludeTags=${encodeURIComponent(i)}`),s+=this.buildFilterParams(n);const r=await(0,E.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||ye.nk.warning(ln.Ay.global.t("dashboard.indexingWarning")),this.updateFileListCache(o).cacheUpdated}catch(s){return console.error("Error refreshing file list:",s),!1}}async loadMoreFiles(e,t="",a="",i="",n=60,s={}){t=t.trim();try{const r=this.getMutableFileList(),o=r.files.length;let l=`/api/manage/list?dir=${e}&start=${o}&count=${n}&search=${encodeURIComponent(t)}`;a&&(l+=`&includeTags=${encodeURIComponent(a)}`),i&&(l+=`&excludeTags=${encodeURIComponent(i)}`),l+=this.buildFilterParams(s);const d=await(0,E.A)(l,{method:"GET"}),c=await d.json();return r.files.push(...c.files),this.updateFileListCache(r).cacheUpdated}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const cn=new dn;var hn=a(62388),un=a(48903),fn=a(90144);function mn(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function pn(e,t){const a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),n=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);return{left:a,top:i,width:n,height:s,right:a+n,bottom:i+s}}function gn(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,fn.KR)(!1),r=(0,fn.KR)({left:0,top:0,width:0,height:0,right:0,bottom:0});let o=null,l=[],d=!1;const h=768;let u=!1;const f=50,m=10;let p=null,g="";function b(){const e=(0,fn.BA)(i);return t[e]||void 0}function v(){const e=(0,fn.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||A():u&&(z(),I())}function y(e){const t=e.target,i=t.closest(a);if(!i)return!1;const n=b();if(n){const e=t.closest(n.itemSelector);if(e){const t=(0,fn.BA)(n.containerRef);if(t&&t.contains(e))return!1}}const s=t.closest("button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container");return!s}function w(e){return e.shiftKey||e.ctrlKey||e.metaKey}function _(){const e=(0,fn.BA)(n);l=e.map(e=>!!e.selected)}let F=0;function C(){function e(){const t=window.innerHeight;let a=0;F>=t-f?a=m:F<=f&&(a=-m),0!==a&&(window.scrollBy(0,a),o&&(o.y-=a,r.value=pn(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),L())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function S(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function $(){document.body.style.userSelect=g}function L(){const e=b();if(!e)return;const t=(0,fn.BA)(e.containerRef);if(!t)return;const a=(0,fn.BA)(n),i=r.value,s={left:i.left,top:i.top,right:i.right,bottom:i.bottom},o=t.querySelectorAll(e.itemSelector);a.forEach((e,t)=>{const a=o[t];if(!a)return;const i=a.getBoundingClientRect(),n={left:i.left,top:i.top,right:i.right,bottom:i.bottom},r=mn(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function x(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=w(e),_(),!d){const e=(0,fn.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=pn(o,o),S(),document.addEventListener("mousemove",D),document.addEventListener("mouseup",E)}}function D(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=pn(o,t),L();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function E(e){s.value&&(T(),$(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function A(){u||(document.addEventListener("mousedown",x),u=!0)}function I(){u&&(document.removeEventListener("mousedown",x),u=!1)}function z(){s.value&&(T(),$(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function U(){k()}return(0,c.wB)(()=>(0,fn.BA)(i),()=>{z(),k()}),(0,c.sV)(()=>{v()&&A(),window.addEventListener("resize",U)}),(0,c.xo)(()=>{z(),$(),T(),I(),window.removeEventListener("resize",U)}),{isDragging:s,selectionRect:r}}var bn={name:"AdminDashBoard",mixins:[un.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortOption:"dateDesc",isUploading:!1,showdetailDialog:!1,detailFile:null,activeUrlTab:"originUrl",defaultUrlFormat:"originUrl",showUrlDialog:!1,useCustomUrl:"false",customUrlPrefix:"",loading:!1,currentPath:"",refreshLoading:!1,showTagDialog:!1,showBatchTagDialog:!1,currentTagFile:"",viewMode:"card",showMobileActionModal:!1,mobileActionFile:null,mobileActionIndex:-1,mobileActionIsFolder:!1,longPressTimer:null,showMobileDirectoryDrawer:!1,jumpPage:"",filters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},channelNameOptions:[],showMoveDialog:!1,moveTargetPath:"/",moveFileKey:"",moveFileIndex:-1,isBatchMove:!1,pageSwipeStartX:null,pageSwipeStartY:null,pageSwipeStartTime:0}},components:{DashboardTabs:ri.A,TagManagementDialog:Ne,BatchTagDialog:Ce,SkeletonLoader:Da,FileCard:ba,FolderCard:Sa,FileListItem:Gt,FileDetailDialog:ct,BatchActionBar:kt,MobileActionSheet:Q,MobileDirectoryDrawer:X,DashboardCheckbox:St,FilterDropdown:si,MoveFileDialog:U,LanguageSwitcher:on.A},setup(){const e=(0,fn.KR)(null),t=(0,fn.KR)(null),a=(0,fn.KR)("card"),i=(0,fn.KR)([]),{isDragging:n,selectionRect:s}=gn({modes:{card:{containerRef:e,itemSelector:".img-card"},list:{containerRef:t,itemSelector:".list-item"}},viewMode:a,items:i});return{cardContainerRef:e,listContainerRef:t,viewModeRef:a,itemsRef:i,isDragging:n,selectionRect:s}},computed:{...(0,nn.L8)(["adminUrlSettings","userConfig"]),filteredTableData(){return this.tableData},totalPages(){return Math.ceil(this.filteredTableData.length/this.pageSize)||1},realTotalPages(){const e=this.directFolderCount+this.directFileCount;return Math.ceil(e/this.pageSize)||1},activeFilterCount(){return Object.values(this.filters).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0)},hasSearchOrFilter(){return this.isSearchMode||this.activeFilterCount>0},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,a=t+this.pageSize;let i=e.slice(t,a);const n=i.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return i.forEach(e=>{this.isImage(e)&&(e.previewSrcList=n.slice(n.indexOf(this.getFileLink(e.name))).concat(n.slice(0,n.indexOf(this.getFileLink(e.name)))))}),i.forEach(e=>{"TelegramNew"===e.metadata?.Channel||"Telegram"===e.metadata?.Channel?e.channelTag="TG":"CloudflareR2"===e.metadata?.Channel?e.channelTag="R2":"S3"===e.metadata?.Channel?e.channelTag="S3":"Discord"===e.metadata?.Channel?e.channelTag="DC":"HuggingFace"===e.metadata?.Channel?e.channelTag="HF":"WebDAV"===e.metadata?.Channel?e.channelTag="WD":"External"===e.metadata?.Channel?e.channelTag=this.$t("dashboard.externalTag"):e.channelTag=this.$t("dashboard.unknownTag")}),i},sortIcon(){return"dateDesc"===this.sortOption?"sort-amount-down":"sort-alpha-up"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},detailDialogWidth(){return window.innerWidth>768?"70%":"90%"},accessType(){return"White"===this.detailFile?.metadata?.ListType?this.$t("filter.normal"):"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?this.$t("filter.blocked"):this.$t("filter.normal")},allUrl(){return"External"===this.detailFile?.metadata?.Channel?{originUrl:`${this.detailFile?.metadata?.ExternalLink}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}:{originUrl:`${this.rootUrl}${this.detailFile?.name}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.rootUrl}${this.detailFile?.name}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}},tableColumnNum(){return window.innerWidth>768?3:1},tablePreviewSpan(){return window.innerWidth>768?2:1},disableTooltip(){return window.innerWidth<768},selectPage(){return this.paginatedTableData.every(e=>e.selected)},selectedPageFiles(){return this.paginatedTableData.some(e=>e.selected)},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.userConfig?.urlPrefix||`${document.location.origin}/file/`},isSelectAll:{get(){return this.paginatedTableData.length>0&&this.paginatedTableData.every(e=>e.selected)},set(e){this.paginatedTableData.forEach(t=>t.selected=e)}},isIndeterminate(){const e=this.paginatedTableData.filter(e=>e.selected).length;return e>0&&ee.selected&&!this.selectedFiles.includes(e))),this.selectedFiles=this.selectedFiles.filter(e=>e.selected),this.selectedFiles=this.selectedFiles.filter(t=>e.includes(t))},deep:!0},sortOption(e){localStorage.setItem("sortOption",e)},defaultUrlFormat(e){localStorage.setItem("defaultUrlFormat",e)},showdetailDialog(e){e&&(this.activeUrlTab=this.defaultUrlFormat||"originUrl")},customUrlPrefix(e){this.$store.commit("setAdminUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setAdminUrlSettings",{key:"useCustomUrl",value:e})},currentPath(e){this.tableData.forEach(e=>e.selected=!1)}},methods:{setViewMode(e){this.viewMode!==e&&(this.viewMode=e,localStorage.setItem("viewMode",this.viewMode))},handleSelectAllPage(e){this.paginatedTableData.forEach(t=>t.selected=e)},handleTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!1,this.showMobileActionModal=!0},500)},handleTouchEnd(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressTimer=null)},handleFolderTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!0,this.showMobileActionModal=!0},500)},handleMobileAction(e){const t=this.mobileActionFile,a=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(a,t.name);break;case"copy":this.handleCopy(a,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(a,t.name);break;case"delete":this.handleDelete(a,t.name);break;case"tag":this.handleTagManagement(t.name);break}},handleGoBack(){const e=this.currentPath.split("/").filter(Boolean);if(e.length>0){e.pop();const t=e.join("/");this.navigateToFolder(t)}this.showMobileDirectoryDrawer=!1},getTagColor(e){const t=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)"];return t[e%t.length]},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let a=0;while(e>=1024&&a0?1:0)+" "+t[a]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let a=this.search;const i=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(i,(e,a)=>(t.push(a.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(n,(t,a)=>(e.push(a.toLowerCase())," ")),this.searchKeywords=a.replace(/\s+/g," ").trim(),this.searchIncludeTags=e.join(","),this.searchExcludeTags=t.join(","),console.log("Search keywords:",this.searchKeywords),console.log("Include tags:",this.searchIncludeTags),console.log("Exclude tags:",this.searchExcludeTags)}else this.searchKeywords="",this.searchIncludeTags="",this.searchExcludeTags="";this.refreshFileList()},handleFilterChange({type:e,filters:t}){this.filters=t,this.currentPage=1,this.refreshFileList()},clearFilters(){this.filters={listType:[],label:[],fileType:[],channel:[],channelName:[]},this.currentPage=1,this.refreshFileList()},async extractChannelNames(){try{const e=await(0,E.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={telegram:"Telegram",cfr2:"Cloudflare R2",s3:"S3",discord:"Discord",huggingface:"HuggingFace",webdav:"WebDAV"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{t.name&&a.push({name:t.name,type:t.type,typeLabel:i[e]||e,value:`${t.type}:${t.name}`})})}),a.sort((e,t)=>e.type!==t.type?e.type.localeCompare(t.type):e.name.localeCompare(t.name)),this.channelNameOptions=a}}catch(e){console.error("Failed to fetch channel names:",e)}},handleDownload(e){const t=document.createElement("a");t.href=this.getFileLink(e),t.download=e,t.click()},openDetailDialog(e,t){this.detailFile=this.paginatedTableData[e],this.showdetailDialog=!0},handleTabClick(e){this.activeUrlTab=e.props.name},handleUrlClick(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("dashboard.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("dashboard.copyFailed")})})},handleDetailDelete(e){this.$confirm(this.$t("dashboard.deleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&this.tableData.splice(t,1)}}).then(()=>{this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.deleteSuccess")),this.showdetailDialog=!1}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBlock(e){this.$confirm(this.$t("dashboard.blockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success(this.$t("dashboard.blockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.blockFailed")))}).catch(()=>console.log("Block cancelled"))},handleWhite(e){this.$confirm(this.$t("dashboard.whiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success(this.$t("dashboard.whiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.whiteFailed")))}).catch(()=>console.log("White cancelled"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(a?this.$t("dashboard.deleteFolderConfirm"):this.$t("dashboard.deleteFileConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("Request failed");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),cn.removeFile(t),this.$message.success(this.$t("dashboard.deleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBatchDelete(){this.$confirm(this.$t("dashboard.batchDeleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,E.A)(`/api/manage/delete/${e.name}?folder=${t}`,{method:"GET"})});Promise.all(e).then(e=>{let t=0;e.forEach((e,a)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[a].name);-1!==e&&this.tableData.splice(e,1),cn.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success(this.$t("dashboard.batchDeleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchDeleteFailed")))}).catch(()=>console.log("Batch delete cancelled"))},async handleBatchCopy(){const e=this.selectedFiles.filter(e=>!e.isFolder),t=this.selectedFiles.filter(e=>e.isFolder);let a=null;t.length>0&&(a=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")}));try{let n=[...e];for(const e of t)try{const t=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e.name)}&recursive=true&count=-1`,{method:"GET"}),a=await t.json();a.files&&a.files.length>0&&(n=n.concat(a.files))}catch(i){console.error(`获取文件夹 ${e.name} 内容失败:`,i)}if(a&&a.close(),0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(this.$t("dashboard.batchCopySuccess",{count:s.length}))):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("Batch copy failed:",i),this.$message.error(this.$t("dashboard.batchCopyFailed"))}},copyToClipboardFallback(e){const t=document.createElement("textarea");document.body.appendChild(t),t.style.position="fixed",t.style.clip="rect(0 0 0 0)",t.style.top="10px",t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t),this.$message.success(this.$t("dashboard.batchCopyLinksSuccess"))},handleCopy(e,t){let a="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":a=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":a=`${this.rootUrl}${t}`;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(a).then(()=>this.$message.success(this.$t("dashboard.copyFileLinkSuccess"))):this.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await cn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error(this.$t("dashboard.loadMoreFailed"))}finally{this.loading=!1}},updateStats(e,t=!1){t?this.Number=e:this.Number+=e},sort(e){this.sortOption=e},sortData(e){const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder);return"dateDesc"===this.sortOption?(t.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp)),a.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp))):(t.sort((e,t)=>e.name.localeCompare(t.name)),a.sort((e,t)=>e.name.localeCompare(t.name))),t.concat(a)},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},clearSelection(){this.tableData.forEach(e=>e.selected=!1),this.selectedFiles=[]},handleBatchAction(e){"copy"===e?this.handleBatchCopy():"delete"===e?this.handleBatchDelete():"download"===e?this.handleBatchDownload():"move"===e?this.handleBatchMove():"tagManagement"===e?this.handleBatchTagManagement():"ban"===e?this.handleBatchBlock():"white"===e&&this.handleBatchWhite()},handleMove(e,t){this.moveFileKey=t,this.moveFileIndex=e,this.isBatchMove=!1,this.moveTargetPath="/",this.showMoveDialog=!0},handleBatchMove(){this.isBatchMove=!0,this.moveTargetPath="/",this.showMoveDialog=!0},confirmMove(e){const t=e,a=(0,hn.G)(t);if(!a.valid)return void this.$message.error(a.error);const i=t.replace(/^\/+/,"")+(t.endsWith("/")||""===t?"":"/");i!==this.currentPath?(this.showMoveDialog=!1,this.isBatchMove?this.executeBatchMove(i):this.executeSingleMove(i)):this.$message.warning(this.$t("dashboard.moveTargetSameAsCurrent"))},executeSingleMove(e){const t=this.moveFileKey,a=this.tableData.find(e=>e.name===t)?.isFolder;(0,E.A)(`/api/manage/move/${t}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"}).then(i=>{if(!i.ok)return Promise.reject("Request failed");{const i=this.tableData.findIndex(e=>e.name===t);if(-1!==i){const n=e+t.split("/").pop();cn.moveFile(t,n,a,this.currentPath),this.tableData.splice(i,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},executeBatchMove(e){const t=this.selectedFiles.map(t=>{const a=t.isFolder;return(0,E.A)(`/api/manage/move/${t.name}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"})});Promise.all(t).then(t=>{let a=0;t.forEach((t,i)=>{if(t.ok){a++;const t=this.selectedFiles[i];t.selected=!1;const n=this.tableData.findIndex(e=>e.name===t.name);if(-1!==n){const a=e+t.name.split("/").pop();cn.moveFile(t.name,a,t.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-a,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},handleBatchBlock(){this.$confirm(this.$t("dashboard.batchBlockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/block/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="Block")}}),this.$message.success(this.$t("dashboard.batchBlockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchBlockFailed")))}).catch(()=>console.log("Batch block cancelled"))},handleBatchWhite(){this.$confirm(this.$t("dashboard.batchWhiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/white/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="White")}}),this.$message.success(this.$t("dashboard.batchWhiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchWhiteFailed")))}).catch(()=>console.log("Batch white cancelled"))},handleBatchDownload(){const e=new(rn()),t=e.folder("files"),a={},i=this.selectedFiles.map(async e=>{if(e.isFolder)return;const i=await fetch(this.getFileLink(e.name)),n=await i.blob();let s=e.metadata?.FileName||e.name;if(a[s]){const t=s.substring(s.lastIndexOf(".")),i=s.substring(0,s.lastIndexOf("."));s=`${i}(${a[s]})${t}`,a[e.name]++}else a[s]=1;t.file(s,n)});Promise.all(i).then(()=>e.generateAsync({type:"blob"})).then(e=>{const t=document.createElement("a");t.href=URL.createObjectURL(e),t.download="files.zip",t.click()})},isVideo(e){if(this.isAudio(e))return!1;let t=e.metadata?.FileType?.includes("video");if(!t){const a=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","rmvb","3gp","mpg","mpeg","m4v","f4v","rm","asf","dat","ts","vob","swf","divx","xvid","m2ts","mts","m2v","3g2","3gp2","3gpp","3gpp2","mpe","m1v","mpv","mpv2","mp2v","m2t","m2ts","m2v","m4v"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const a=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const a=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","psd","ai","eps","raw","cr2","nef","orf","sr2","dng","arw","rw2","raf","pef","x3f","srf","erf","mrw","nrw","kdc","dcr","mef","mos","crw","raf","rwl","srw","3fr","fff","iiq","qtk","bay","k25","kdc","dcs","drf","dng","erf","kdc","mdc","mef","mos","mrw","nef","nrw","orf","pef","ptx","pxn","r3d","raf","raw","rwl","rw2","rwz","sr2","srf","x3f"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},getFileLink(e){const t=`/file/${e}?from=admin`;return t},handlePageChange(e){this.currentPage=e,this.currentPage===Math.ceil(this.tableData.length/this.pageSize)&&this.loadMoreData()},isMobileViewport(){return window.innerWidth<768},updateResponsivePageSize(){const e=this.isMobileViewport()?16:15;if(this.pageSize===e)return;const t=(this.currentPage-1)*this.pageSize;this.pageSize=e,this.currentPage=Math.min(Math.floor(t/e)+1,this.realTotalPages)},isSwipeIgnoredTarget(e){return Boolean(e?.closest?.("button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn"))},handlePageSwipeStart(e){if(!this.isMobileViewport()||this.isDragging||this.loading||this.showMobileActionModal||this.showMobileDirectoryDrawer||this.isSwipeIgnoredTarget(e.target))return void this.resetPageSwipe();const t=e.touches?.[0];t&&(this.pageSwipeStartX=t.clientX,this.pageSwipeStartY=t.clientY,this.pageSwipeStartTime=Date.now())},async handlePageSwipeEnd(e){if(null===this.pageSwipeStartX||null===this.pageSwipeStartY)return;const t=e.changedTouches?.[0];if(!t)return void this.resetPageSwipe();const a=t.clientX-this.pageSwipeStartX,i=t.clientY-this.pageSwipeStartY,n=Date.now()-this.pageSwipeStartTime;if(this.resetPageSwipe(),n>700||Math.abs(a)<64||Math.abs(a)<1.35*Math.abs(i))return;const s=a<0?this.currentPage+1:this.currentPage-1;await this.goToSwipePage(s)},resetPageSwipe(){this.pageSwipeStartX=null,this.pageSwipeStartY=null,this.pageSwipeStartTime=0},async goToSwipePage(e){e<1||e>this.realTotalPages||e===this.currentPage||(e>this.totalPages?await this.loadMoreDataUntilPage(e):this.handlePageChange(e))},handleJumpPage(){const e=parseInt(this.jumpPage);isNaN(e)||e<1?this.$message.warning(this.$t("dashboard.invalidPageNumber")):e>this.realTotalPages?this.$message.warning(this.$t("dashboard.pageExceedsMax",{max:this.realTotalPages})):(e>this.totalPages?(this.$message.info(this.$t("dashboard.loadingData")),this.loadMoreDataUntilPage(e)):this.currentPage=e,this.jumpPage="")},async loadMoreDataUntilPage(e){this.loading=!0;try{const t=e*this.pageSize,a=this.filteredTableData.filter(e=>e.isFolder).length,i=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-a-i);n>0&&(await cn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n,this.filters),await this.fetchFileList()),this.currentPage=Math.min(e,this.totalPages)}catch(t){this.$message.error(this.$t("dashboard.loadDataFailed"))}finally{this.loading=!1}},isFolder(e){if(e.isFolder)return!0;let t=e.name;if(t.startsWith("http")&&(t=t.split("/file/")[1]),t&&t.includes("/")){const e=this.currentPath?t.substring(this.currentPath.length):t;return""===this.currentPath?!t.split("/")[0].includes("."):e.includes("/")}return!1},getFolderName(e){let t="";if(e&&e.includes("/")){const a=e.split("/");if(""===this.currentPath)t=a[0];else{const a=e.substring(this.currentPath.length);t=a.split("/")[0]}}else t=e;const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileName(e){let t=e.split("/").pop();const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const a=e.substring(0,t),i=Math.min(a.length,Math.floor(.6*e.length));return a.substring(0,i)}return e.substring(0,Math.floor(.6*e.length))},getFileNameEnd(e){if(!e)return"";if(e.length<=30)return"";const t=e.lastIndexOf(".");if(t>0){const a=e.substring(t),i=e.substring(0,t),n=Math.min(8,Math.floor(.2*i.length));return"…"+i.substring(i.length-n)+a}const a=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-a)},enterFolder(e){this.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=cn.getLocalFileList(),t=new Set(e.directories||[]),a=e.files||[],i=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=a.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...i,...n],this.updateStats(e.totalCount,!0),this.directFileCount=e.directFileCount||0,this.directFolderCount=e.directFolderCount||0}catch(e){console.error("Error fetching file list:",e),this.$message.error(this.$t("dashboard.fetchFileListFailed"))}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await cn.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){!e.message?.includes("Unauthorized")&&this.$store.state.adminLoggedIn&&(console.error("Error refreshing file list:",e),this.$message.error(this.$t("dashboard.refreshFailed")))}finally{this.refreshLoading=!1,this.loading=!1}},async refreshLocalFileList(){this.refreshLoading=!0,this.loading=!0;try{await this.fetchFileList()}catch(e){console.error("Error refreshing local file list:",e),this.$message.error(this.$t("dashboard.refreshFailed"))}finally{this.refreshLoading=!1,this.loading=!1}},handleTagManagement(e){this.currentTagFile=e,this.showTagDialog=!0},handleBatchTagManagement(){0!==this.selectedFiles.length?this.showBatchTagDialog=!0:this.$message.warning(this.$t("dashboard.selectFilesFirst"))},async handleTagsUpdated(e){const t=this.tableData.findIndex(e=>e.name===this.currentTagFile);-1!==t&&(this.tableData[t].metadata||(this.tableData[t].metadata={}),this.tableData[t].metadata.Tags=e,this.showdetailDialog&&this.detailFile?.name===this.currentTagFile&&(this.detailFile.metadata||(this.detailFile.metadata={}),this.detailFile.metadata.Tags=e))},async handleBatchTagsUpdated(){await this.refreshLocalFileList()},handleMetadataUpdated(e,t){const a=this.tableData.findIndex(t=>t.name===e);-1!==a&&(this.tableData[a].metadata={...this.tableData[a].metadata,...t}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.metadata={...this.detailFile.metadata,...t})},handleFileRenamed(e,t,a){const i=this.tableData.findIndex(t=>t.name===e);-1!==i&&(this.tableData[i].name=t,this.tableData[i].metadata={...this.tableData[i].metadata,...a}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.name=t,this.detailFile.metadata={...this.detailFile.metadata,...a},this.showdetailDialog=!1,this.$nextTick(()=>{this.showdetailDialog=!0}))},generateFileLink(e,t){const a="External"===t?.Channel,i=a?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return i;case"mdUrl":return`![${n}](${i})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${i}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return i}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")});try{const a=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),i=await a.json();if(t.close(),!i.files||0===i.files.length)return void this.$message.warning(this.$t("dashboard.folderEmptyNoLinks"));const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length}))):(this.copyToClipboardFallback(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length})))}catch(a){t.close(),console.error("Copy folder links failed:",a),this.$message.error(this.$t("dashboard.copyFolderLinksFailed"))}}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),this.updateResponsivePageSize(),window.addEventListener("resize",this.updateResponsivePageSize),this.loading=!0,this.showLogoutButton=this.$store.state.adminLoggedIn,this.refreshFileList().then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error(this.$t("dashboard.syncDataError"))}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl;const e=localStorage.getItem("viewMode");"card"!==e&&"list"!==e||(this.viewMode=e)},beforeUnmount(){window.removeEventListener("resize",this.updateResponsivePageSize)}};const vn=(0,I.A)(bn,[["render",an],["__scopeId","data-v-57eabdee"]]);var kn=vn},37952:function(e,t,a){"use strict";a(85331),a(97197)},40670:function(e,t,a){"use strict";a(85331),a(99648),a(19104),a(85970)},44813:function(e,t,a){a(44114),a(18111),a(22489),a(7588),a(79577),a(41549),a(49797),a(49631),a(35623),a(59848),function(t){e.exports=t()}(function(){return function e(t,a,i){function n(r,o){if(!a[r]){if(!t[r]){var l=void 0;if(!o&&l)return require(r,!0);if(s)return s(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var c=a[r]={exports:{}};t[r][0].call(c.exports,function(e){var a=t[r][1][e];return n(a||e)},c,c.exports,e,t,a,i)}return a[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|a>>4,l=1>6:64,d=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(d++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(d++))),u[c++]=t,64!==o&&(u[c++]=a),64!==l&&(u[c++]=i);return u}},{"./support":30,"./utils":32}],2:[function(e,t,a){"use strict";var i=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,a,i,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=a,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new r("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,a){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(a)).pipe(new r("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,a){"use strict";var i=e("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},a.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,a){"use strict";var i=e("./utils"),n=function(){for(var e,t=[],a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==i.getTypeOf(e)?function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,a){"use strict";a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(e,t,a){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:i}},{lie:37}],7:[function(e,t,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=i?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}a.magic="\b\0",s.inherits(l,r),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},l.prototype.flush=function(){r.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},a.compressWorker=function(e){return new l("Deflate",e)},a.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,a){"use strict";function i(e,t){var a,i="";for(a=0;a>>=8;return i}function n(e,t,a,n,r,c){var h,u,f=e.file,m=e.compression,p=c!==o.utf8encode,g=s.transformTo("string",c(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",c(v)),y=s.transformTo("string",o.utf8encode(v)),w=b.length!==f.name.length,_=y.length!==v.length,F="",C="",T="",S=f.dir,$=f.date,L={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(L.crc32=e.crc32,L.compressedSize=e.compressedSize,L.uncompressedSize=e.uncompressedSize);var x=0;t&&(x|=8),p||!w&&!_||(x|=2048);var D=0,E=0;S&&(D|=16),"UNIX"===r?(E=798,D|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,S)):(E=20,D|=function(e){return 63&(e||0)}(f.dosPermissions)),h=$.getUTCHours(),h<<=6,h|=$.getUTCMinutes(),h<<=5,h|=$.getUTCSeconds()/2,u=$.getUTCFullYear()-1980,u<<=4,u|=$.getUTCMonth()+1,u<<=5,u|=$.getUTCDate(),w&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),_&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var A="";return A+="\n\0",A+=i(x,2),A+=m.magic,A+=i(h,2),A+=i(u,2),A+=i(L.crc32,4),A+=i(L.compressedSize,4),A+=i(L.uncompressedSize,4),A+=i(g.length,2),A+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+A+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(E,2)+A+i(k.length,2)+"\0\0\0\0"+i(D,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),d=e("../signature");function c(e,t,a,i){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=a,this.encodeFileName=i,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,r),c.prototype.push=function(e){var t=e.meta.percent||0,a=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:a?(t+100*(a-i-1))/a:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var a=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:a.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,a=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(a.dirRecord),t)this.push({data:function(e){return d.DATA_DESCRIPTOR+i(e.crc32,4)+i(e.compressedSize,4)+i(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:a.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)a=(a<<8)+this.byteAt(t);return this.index+=e,a},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,a){"use strict";var i=e("./Uint8ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,a){"use strict";var i=e("./DataReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,a){"use strict";var i=e("./ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,a){"use strict";var i=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=i.getTypeOf(e);return i.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(i.transformTo("uint8array",e)):new s(i.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,a){"use strict";a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../utils");function s(e){i.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,i),s.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,i),s.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}i.inherits(s,n),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}n.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=i.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,a){"use strict";function i(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var a=0;a "+e:e}},t.exports=i},{}],29:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./ConvertWorker"),s=e("./GenericWorker"),r=e("../base64"),o=e("../support"),l=e("../external"),d=null;if(o.nodestream)try{d=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,d=e._mimeType;e.on("data",function(e,a){s.push(e),t&&t(a)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,a){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),a);case"base64":return r.encode(t);default:return i.transformTo(e,t)}}(l,function(e,t){var a,i=0,n=null,s=0;for(a=0;a>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t}(e)},a.utf8decode=function(e){return n.nodebuffer?i.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,a,n,s,r=e.length,l=new Array(2*r);for(t=a=0;t>10&1023,l[a++]=56320|1023&n)}return l.length!==a&&(l.subarray?l=l.subarray(0,a):l.length=a),i.applyFromCharCode(l)}(e=i.transformTo(n.uint8array?"uint8array":"array",e))},i.inherits(d,r),d.prototype.processChunk=function(e){var t=i.transformTo(n.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var r=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+o[e[a]]>t?a:t}(t),l=t;r!==t.length&&(n.uint8array?(l=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(l=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:a.utf8decode(l),meta:e.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=d,i.inherits(c,r),c.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var i=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var a=0;a>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,a,i,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t},a.buf2binstring=function(e){return l(e,e.length)},a.binstring2buf=function(e){for(var t=new i.Buf8(e.length),a=0,n=t.length;a>10&1023,d[i++]=56320|1023&n)}return l(d,i)},a.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+r[e[a]]>t?a:t}},{"./common":41}],43:[function(e,t,a){"use strict";t.exports=function(e,t,a,i){for(var n=65535&e,s=e>>>16&65535,r=0;0!==a;){for(a-=r=2e3>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t,a,n){var s=i,r=n+a;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,a){"use strict";var i,n=e("../utils/common"),s=e("./trees"),r=e("./adler32"),o=e("./crc32"),l=e("./messages"),d=0,c=4,h=0,u=-2,f=-1,m=4,p=2,g=8,b=9,v=286,k=30,y=19,w=2*v+1,_=15,F=3,C=258,T=C+F+1,S=42,$=113,L=1,x=2,D=3,E=4;function A(e,t){return e.msg=l[t],t}function I(e){return(e<<1)-(4e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function P(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,U(e.strm)}function B(e,t){e.pending_buf[e.pending++]=t}function W(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function R(e,t){var a,i,n=e.max_chain_length,s=e.strstart,r=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,d=e.window,c=e.w_mask,h=e.prev,u=e.strstart+C,f=d[s+r-1],m=d[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(d[(a=t)+r]===m&&d[a+r-1]===f&&d[a]===d[s]&&d[++a]===d[s+1]){s+=2,a++;do{}while(d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function O(e){var t,a,i,s,l,d,c,h,u,f,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-T)){for(n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=a=e.hash_size;i=e.head[--t],e.head[t]=m<=i?i-m:0,--a;);for(t=a=m;i=e.prev[--t],e.prev[t]=m<=i?i-m:0,--a;);s+=m}if(0===e.strm.avail_in)break;if(d=e.strm,c=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=d.avail_in,u=F)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F)if(i=s._tr_tally(e,e.strstart-e.match_start,e.match_length-F),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=F){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F&&e.match_length<=e.prev_length){for(n=e.strstart+e.lookahead-F,i=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=n&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(O(e),0===e.lookahead&&t===d)return L;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,P(e,!1),0===e.strm.avail_out))return L;if(e.strstart-e.block_start>=e.w_size-T&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):(e.strstart>e.block_start&&(P(e,!1),e.strm.avail_out),L)}),new V(4,4,8,4,M),new V(4,5,16,8,M),new V(4,6,32,32,M),new V(4,4,16,16,N),new V(8,16,32,32,N),new V(8,16,128,128,N),new V(8,32,128,256,N),new V(32,128,258,1024,N),new V(32,258,258,4096,N)],a.deflateInit=function(e,t){return Z(e,t,g,15,8,0)},a.deflateInit2=Z,a.deflateReset=K,a.deflateResetKeep=j,a.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},a.deflate=function(e,t){var a,n,r,l;if(!e||!e.state||5>8&255),B(n,n.gzhead.time>>16&255),B(n,n.gzhead.time>>24&255),B(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),B(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(B(n,255&n.gzhead.extra.length),B(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=o(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(B(n,0),B(n,0),B(n,0),B(n,0),B(n,0),B(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),B(n,3),n.status=$);else{var f=g+(n.w_bits-8<<4)<<8;f|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(f|=32),f+=31-f%31,n.status=$,W(n,f),0!==n.strstart&&(W(n,e.adler>>>16),W(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending!==n.pending_buf_size));)B(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),U(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&U(e),n.pending+2<=n.pending_buf_size&&(B(n,255&e.adler),B(n,e.adler>>8&255),e.adler=0,n.status=$)):n.status=$),0!==n.pending){if(U(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&I(t)<=I(a)&&t!==c)return A(e,-5);if(666===n.status&&0!==e.avail_in)return A(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(O(e),0===e.lookahead)){if(t===d)return L;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:x}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(O(e),e.lookahead<=C&&t===d)return L;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=F&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=F?(a=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:x}(n,t):i[n.level].func(n,t);if(m!==D&&m!==E||(n.status=666),m===L||m===D)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===x&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),U(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(B(n,255&e.adler),B(n,e.adler>>8&255),B(n,e.adler>>16&255),B(n,e.adler>>24&255),B(n,255&e.total_in),B(n,e.total_in>>8&255),B(n,e.total_in>>16&255),B(n,e.total_in>>24&255)):(W(n,e.adler>>>16),W(n,65535&e.adler)),U(e),0=a.w_size&&(0===o&&(z(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,t,m-a.w_size,a.w_size,0),t=f,m=a.w_size),l=e.avail_in,d=e.next_in,c=e.input,e.avail_in=m,e.next_in=0,e.input=t,O(a);a.lookahead>=F;){for(i=a.strstart,s=a.lookahead-(F-1);a.ins_h=(a.ins_h<>>=y=k>>>24,m-=y,0===(y=k>>>16&255))S[s++]=65535&k;else{if(!(16&y)){if(0==(64&y)){k=p[(65535&k)+(f&(1<>>=y,m-=y),m<15&&(f+=T[i++]<>>=y=k>>>24,m-=y,!(16&(y=k>>>16&255))){if(0==(64&y)){k=g[(65535&k)+(f&(1<>>=y,m-=y,(y=s-r)<_){if(c<(y=_-y)&&a.sane){e.msg="invalid distance too far back",a.mode=30;break e}if(C=u,(F=0)===h){if(F+=d-y,y>3,f&=(1<<(m-=w<<3))-1,e.next_in=i,e.next_out=s,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function b(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=u,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(f),t.distcode=t.distdyn=new i.Buf32(m),t.sane=1,t.back=-1,c):h}function v(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,b(e)):h}function k(e,t){var a,i;return e&&e.state?(i=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(i.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),i.arraySet(r.window,t,a-n,s,r.wnext),(n-=s)?(i.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=s(a.check,O,2,0),w=y=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",a.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",a.mode=30;break}if(w-=4,U=8+(15&(y>>>=4)),0===a.wbits)a.wbits=U;else if(U>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=3;case 3:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),w=y=0,a.mode=4;case 4:for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=5;case 5:if(1024&a.flags){for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>>8&255,a.check=s(a.check,O,2,0)),w=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(S=a.length)&&(S=v),S&&(a.head&&(U=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,S,U)),512&a.flags&&(a.check=s(a.check,f,S,g)),v-=S,g+=S,a.length-=S),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(S=0;U=f[g+S++],a.head&&U&&a.length<65536&&(a.head.name+=String.fromCharCode(U)),U&&S>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>=7&w,w-=7&w,a.mode=27;break}for(;w<3;){if(0===v)break e;v--,y+=f[g++]<>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,w-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,w-=2;break;case 14:for(y>>>=7&w,w-=7&w;w<32;){if(0===v)break e;v--,y+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,w=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if(S=a.length){if(v>>=5,w-=5,a.ndist=1+(31&y),y>>>=5,w-=5,a.ncode=4+(15&y),y>>>=4,w-=4,286>>=3,w-=3}for(;a.have<19;)a.lens[M[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,B={bits:a.lenbits},P=o(0,a.lens,0,19,a.lencode,0,a.work,B),a.lenbits=B.bits,P){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=x,w-=x,a.lens[a.have++]=E;else{if(16===E){for(W=x+2;w>>=x,w-=x,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}U=a.lens[a.have-1],S=3+(3&y),y>>>=2,w-=2}else if(17===E){for(W=x+3;w>>=x)),y>>>=3,w-=3}else{for(W=x+7;w>>=x)),y>>>=7,w-=7}if(a.have+S>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;S--;)a.lens[a.have++]=U}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,B={bits:a.lenbits},P=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,B),a.lenbits=B.bits,P){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,B={bits:a.distbits},P=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,B),a.distbits=B.bits,P){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(6<=v&&258<=k){e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=w,r(e,F),b=e.next_out,m=e.output,k=e.avail_out,g=e.next_in,f=e.input,v=e.avail_in,y=a.hold,w=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;D=(R=a.lencode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,a.length=E,0===D){a.mode=26;break}if(32&D){a.back=-1,a.mode=12;break}if(64&D){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&D,a.mode=22;case 22:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;D=(R=a.distcode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,64&D){e.msg="invalid distance code",a.mode=30;break}a.offset=E,a.extra=15&D,a.mode=24;case 24:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===k)break e;if(S=F-k,a.offset>S){if((S=a.offset-S)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}$=S>a.wnext?(S-=a.wnext,a.wsize-S):a.wnext-S,S>a.length&&(S=a.length),L=a.window}else L=m,$=b-a.offset,S=a.length;for(kv?(y=B[W+h[C]],I[z+h[C]]):(y=96,0),f=1<>x)+(m-=f)]=k<<24|y<<16|w,0!==m;);for(f=1<>=1;if(0!==f?(A&=f-1,A+=f):A=0,C++,0==--U[F]){if(F===S)break;F=t[a+h[C]]}if($>>7)]}function B(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function W(e,t,a){e.bi_valid>p-a?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=a-p):(e.bi_buf|=t<>>=1,a<<=1,0<--t;);return a>>>1}function M(e,t,a){var i,n,s=new Array(m+1),r=0;for(i=1;i<=m;i++)s[i]=r=r+a[i-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=O(s[o]++,o))}}function N(e){var t;for(t=0;t>1;1<=a;a--)j(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j(e,s,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,s[2*n]=s[2*a]+s[2*i],e.depth[n]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,s[2*a+1]=s[2*i+1]=n,e.heap[1]=n++,j(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var a,i,n,s,r,o,l=t.dyn_tree,d=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,g=t.stat_desc.max_length,b=0;for(s=0;s<=m;s++)e.bl_count[s]=0;for(l[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a>=7;i>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=a+5,a+4<=r&&-1!==t?Q(e,t,a,i):4===e.strategy||o===r?(W(e,2+(i?1:0),3),K(e,T,S)):(W(e,4+(i?1:0),3),function(e,t,a,i){var n;for(W(e,t-257,5),W(e,a-1,5),W(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*(L[a]+d+1)]++,e.dyn_dtree[2*P(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){W(e,2,3),R(e,b,T),function(e){16===e.bi_valid?(B(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,a){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,i){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var a,i,n,s,r=1,o={},l=!1,d=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,a="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?(s="setImmediate$"+Math.random()+"$",e.addEventListener?e.addEventListener("message",f,!1):e.attachEvent("onmessage",f),function(t){e.postMessage(s+t,"*")}):e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){u(e.data)},function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,function(e){var t=d.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;i\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return n.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},63003:function(e,t,a){"use strict";a(85331)},70415:function(e,t,a){"use strict";a(85331),a(73565)},72907:function(e,t,a){"use strict";a(85331),a(96808),a(29092)},73565:function(e,t,a){"use strict";a(85331)},79899:function(e,t,a){"use strict";a(85331)},88830:function(e,t,a){"use strict";a(85331)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); -//# sourceMappingURL=957.e8a16dfc.js.map \ No newline at end of file diff --git a/frontend-dist/js/957.e8a16dfc.js.gz b/frontend-dist/js/957.e8a16dfc.js.gz deleted file mode 100644 index e9c47c8d0f226b8932501c188adddd8b62054920..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57836 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 diff --git a/frontend-dist/js/957.e8a16dfc.js.map b/frontend-dist/js/957.e8a16dfc.js.map deleted file mode 100644 index d6fa263f..00000000 --- a/frontend-dist/js/957.e8a16dfc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/957.e8a16dfc.js","mappings":"ogBACA,MAAMA,EAAa,CACjBC,MAAO,yBAEHC,EAAa,CACjBD,MAAO,kBAEHE,EAAa,CACjBC,IAAK,EACLH,MAAO,eAEHI,EAAa,CACjBJ,MAAO,cAEHK,EAAa,CACjBL,MAAO,cAEHM,EAAa,CACjBN,MAAO,kBAEHO,EAAa,CACjBJ,IAAK,EACLH,MAAO,eAEHQ,EAAa,CACjBR,MAAO,cAEHS,EAAa,CACjBT,MAAO,cAEF,SAASU,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDC,EAAuB,KACvBC,EAAqB,KACrBC,EAAwB,KACxBC,EAAuB,KACvBC,EAAqB,IAC3B,OAAO,WAAc,QAAoB,MAAOvB,EAAY,CAACiB,EAASO,YAAa,WAAc,QAAaH,EAAuB,CACnIjB,IAAK,EACLqB,QAAST,EAAMU,eACf,mBAAoBb,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMU,eAAiBC,GAC/EC,UAAW,eACXC,MAAO,IACPC,QAAS,QACT,eAAgB,yBAChB,cAAc,EACd,aAAc,EACd,aAAc,GACdC,WAAY,kBACX,CACDC,WAAW,QAAS,IAAM,EAAC,QAAoB,OAAQ,CACrD/B,MAAO,0BACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAe,OAAU,CAAC,WAC5D,EAAC,QAAYD,EAAKsB,OAAQ,UAAW,CAAC,OAAGC,GAAW,OACvDC,SAAS,QAAS,IAAM,EAAC,UAAiB,WAAc,QAAoB,MAAOlC,EAAY,CAACc,EAAMqB,QAAS,WAAc,QAAoB,MAAOlC,EAAY,EAAC,QAAae,EAA8B,CAC9MoB,KAAM,qBACNrC,MAAO,gBACL,QAAoB,OAAQI,GAAY,QAAiBW,EAAMqB,OAAQ,IAAI,QAAalB,EAAsB,CAChHoB,KAAM,UACNC,KAAM,QACNP,QAAShB,EAASwB,oBACjB,CACDL,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,wBAAyB,KAC5FC,EAAG,GACF,EAAG,CAAC,iBAAkB,WAAc,QAAavB,EAAoB,CACtEhB,IAAK,EACLwC,IAAK,UACLC,KAAM7B,EAAM8B,SACZC,MAAO/B,EAAMgC,UACb,WAAY,OACZ,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAoBlC,EAAOmC,iBAC3BhD,MAAO,iBACPiD,YAAajC,EAASkC,iBACrB,CACDf,SAAS,QAAS,EAChBgB,OACAP,UACI,EAAC,QAAoB,OAAQ,CACjC5C,OAAO,QAAgB,CAAC,YAAa,CACnC,aAAc4C,EAAKQ,OAASvC,EAAOmC,qBAEpC,EAAC,QAAa/B,EAA8B,CAC7CoB,KAAMc,EAAKE,SAAW,cAAgB,SACtCrD,MAAO,eACN,KAAM,EAAG,CAAC,UAAU,QAAoB,OAAQK,GAAY,QAAiBuC,EAAKU,MAAO,IAAK,KACjGZ,EAAG,GACF,EAAG,CAAC,OAAQ,QAAS,mBAAoB,oBAAqB,CAAC,CAACpB,EAAoBP,EAAMwC,aAC7Fb,EAAG,GACF,EAAG,CAAC,eAAgB,WAAc,QAAoB,KAAW,CAClEvC,IAAK,GACJ,EAAC,QAAoB,OAAQ,CAC9BH,MAAO,yBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAASyC,YAAczC,EAASyC,cAAcD,KAC7F,EAAC,QAAY7C,EAAKsB,OAAQ,UAAW,CAAC,OAAGC,GAAW,MAAS,QAAab,EAAsB,CACjGqC,WAAY3C,EAAM4C,cAClB,sBAAuB/C,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM4C,cAAgBjC,GACjFkC,UAAW,MACXrB,KAAM,MACN,cAAc,EACd,eAAe,EACf,UAAW,IACXsB,MAAOlD,EAAK8B,GAAG,iCACfzC,MAAO,yBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,UAAiB,WAAc,QAAoB,MAAO7B,EAAY,CAACS,EAAMqB,QAAS,WAAc,QAAoB,MAAO7B,EAAY,EAAC,QAAaU,EAA8B,CAC9MoB,KAAM,qBACNrC,MAAO,gBACL,QAAoB,OAAQQ,GAAY,QAAiBO,EAAMqB,OAAQ,IAAI,QAAalB,EAAsB,CAChHoB,KAAM,UACNC,KAAM,QACNP,QAAShB,EAASwB,oBACjB,CACDL,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,wBAAyB,KAC5FC,EAAG,GACF,EAAG,CAAC,iBAAkB,WAAc,QAAavB,EAAoB,CACtEhB,IAAK,EACLwC,IAAK,gBACLC,KAAM7B,EAAM8B,SACZC,MAAO/B,EAAMgC,UACb,WAAY,OACZ,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAoBlC,EAAOmC,iBAC3BhD,MAAO,6BACPiD,YAAajC,EAASkC,iBACrB,CACDf,SAAS,QAAS,EAChBgB,OACAP,UACI,EAAC,QAAoB,OAAQ,CACjC5C,OAAO,QAAgB,CAAC,YAAa,CACnC,aAAc4C,EAAKQ,OAASvC,EAAOmC,qBAEpC,EAAC,QAAa/B,EAA8B,CAC7CoB,KAAMc,EAAKE,SAAW,cAAgB,SACtCrD,MAAO,eACN,KAAM,EAAG,CAAC,UAAU,QAAoB,OAAQS,GAAY,QAAiBmC,EAAKU,MAAO,IAAK,KACjGZ,EAAG,GACF,EAAG,CAAC,OAAQ,QAAS,mBAAoB,oBAAqB,CAAC,CAACpB,EAAoBP,EAAMwC,aAC7Fb,EAAG,GACF,EAAG,CAAC,aAAc,WAAY,MACnC,C,wBC/IA,GACEY,KAAM,sBACNR,MAAO,CACLE,iBAAkB,CAChBV,KAAMwB,OACN3B,QAAS,IAEX4B,OAAQ,CACNzB,KAAMwB,OACN3B,QAAS,SACT6B,UAAWC,GAAS,CAAC,SAAU,SAASC,SAASD,KAGrD,IAAArB,GACE,MAAO,CACLnB,gBAAgB,EAChBkC,eAAe,EACfd,SAAU,GACVU,SAAS,EACTnB,MAAO,GACPW,UAAW,CACToB,SAAU,WACVC,MAAO,QAETC,YAAaC,OAAOC,WAExB,EACAC,SAAU,CACR,SAAAjD,GACE,OAAOkD,KAAKJ,aAAe,GAC7B,GAEFK,MAAO,CACL,cAAAjD,CAAekD,GACTA,EACFF,KAAKjC,qBAGLoC,WAAW,KACT,IAAKH,KAAKhD,gBAAkBgD,KAAKI,MAAMC,QAAS,CAC9C,MAAMC,EAAQN,KAAKI,MAAMC,QAAQC,MACjC,IAAK,MAAM5E,KAAO4E,EAAMC,SACtBD,EAAMC,SAAS7E,GAAKkD,UAAW,CAEnC,GACC,IAEP,EACA,aAAAM,CAAcgB,GACRA,EACFF,KAAKjC,qBAGLoC,WAAW,KACT,IAAKH,KAAKd,eAAiBc,KAAKI,MAAMI,cAAe,CACnD,MAAMF,EAAQN,KAAKI,MAAMI,cAAcF,MACvC,IAAK,MAAM5E,KAAO4E,EAAMC,SACtBD,EAAMC,SAAS7E,GAAKkD,UAAW,CAEnC,GACC,IAEP,EACA,gBAAAL,CAAiB2B,GACfF,KAAKS,UAAU,KACTT,KAAKI,MAAMC,SAAWH,GACxBF,KAAKI,MAAMC,QAAQK,cAAcR,GAE/BF,KAAKI,MAAMI,eAAiBN,GAC9BF,KAAKI,MAAMI,cAAcE,cAAcR,IAG7C,GAEF,OAAAS,GACEd,OAAOe,iBAAiB,SAAUZ,KAAKa,aACzC,EACA,aAAAC,GACEjB,OAAOkB,oBAAoB,SAAUf,KAAKa,aAC5C,EACAG,QAAS,CACP,YAAAH,GACEb,KAAKJ,YAAcC,OAAOC,UAC5B,EACA,UAAAd,GACEgB,KAAKd,eAAgB,CACvB,EACA,wBAAMnB,GACJiC,KAAKlB,SAAU,EACfkB,KAAKrC,MAAQ,GACb,IACE,IAAIQ,EACJ,GAAoB,UAAhB6B,KAAKV,OAAoB,CAC3B,MAAM2B,QAAiB,EAAAC,EAAA,GAAc,qBAAsB,CACzDC,OAAQ,QAEV,IAAKF,EAASG,GAMZ,YALwB,MAApBH,EAASI,OACXrB,KAAKrC,MAAQqC,KAAKhC,GAAG,4BAErBgC,KAAKrC,MAAQqC,KAAKhC,GAAG,8BAIzBG,QAAa8C,EAASK,MACxB,KAAO,CACL,MAAML,QAAiBM,EAAA,EAAMC,IAAI,qBAAsB,CACrDC,cAAc,IAEhBtD,EAAO8C,EAAS9C,IAClB,CACIA,EAAKuD,KACP1B,KAAK5B,SAAW,CAACD,EAAKuD,MAEtB1B,KAAK5B,SAAW,EAEpB,CAAE,MAAOuD,GACPC,QAAQjE,MAAM,kCAAmCgE,GACpB,MAAzBA,EAAIV,UAAUI,OAChBrB,KAAKrC,MAAQqC,KAAKhC,GAAG,4BAErBgC,KAAKrC,MAAQqC,KAAKhC,GAAG,2BAEzB,CAAE,QACAgC,KAAKlB,SAAU,CACjB,CACF,EACA,eAAAL,CAAgBN,GACd,IAAIQ,EAAOR,EAAKQ,KACZA,IAASA,EAAKkD,WAAW,KAC3BlD,EAAO,IAAMA,EACHA,IACVA,EAAO,KAETqB,KAAK8B,MAAM,SAAUnD,GACrBqB,KAAKhD,gBAAiB,EACtBgD,KAAKd,eAAgB,CACvB,I,WCnIJ,MAAM6C,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS9F,GAAQ,CAAC,YAAY,qBAEzF,O,sWCTA,MAAMX,EAAa,CACjBC,MAAO,4BAEHC,EAAa,CACjBD,MAAO,uBAEHE,EAAa,CACjBF,MAAO,6BAEHI,EAAa,CACjBJ,MAAO,oBAEHK,EAAa,CACjBL,MAAO,iBAEHM,EAAa,CACjBN,MAAO,uBAEHO,EAAa,CACjBP,MAAO,qBAEHQ,EAAa,CACjBR,MAAO,mBAEHS,EAAa,CACjBT,MAAO,uBAEHyG,EAAc,CAClBzG,MAAO,oBAEH0G,EAAc,CAClBvG,IAAK,EACLH,MAAO,yBAEH2G,EAAc,CAClB3G,MAAO,uBAEH4G,EAAc,CAClB5G,MAAO,sBAEH6G,EAAc,CAClB7G,MAAO,kBAEH8G,EAAc,CAClB3G,IAAK,EACLH,MAAO,eAEH+G,EAAc,CAClB/G,MAAO,cAEHgH,EAAc,CAClBhH,MAAO,cAEHiH,EAAc,CAClBjH,MAAO,iBAEF,SAASU,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMkG,EAAsB,KACtBjG,GAA+B,QAAkB,qBACjDC,EAAuB,KACvBiG,EAAiC,IACjCC,EAAuB,KACvBjG,EAAqB,KACrBE,EAAuB,KACvBC,EAAqB,IAC3B,OAAO,WAAc,QAAoB,MAAOvB,EAAY,CAACiB,EAASO,YAAa,WAAc,QAAa6F,EAAsB,CAClIjH,IAAK,EACLuD,WAAY1C,EAASqG,cACrB,sBAAuBzG,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAASqG,cAAgB3F,GACpFmC,MAAOhD,EAAOyG,YAAc3G,EAAK8B,GAAG,uBAAyB9B,EAAK8B,GAAG,kBACrEb,MAAO,QACP,cAAc,EACd5B,MAAO,cACPuH,QAASvG,EAASwG,aACjB,CACDC,QAAQ,QAAS,IAAM,EAAC,QAAoB,OAAQpH,EAAY,EAAC,QAAaa,EAAsB,CAClGc,QAAShB,EAASwG,aACjB,CACDrF,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,oBAAqB,KACxFC,EAAG,GACF,EAAG,CAAC,aAAa,QAAaxB,EAAsB,CACrDoB,KAAM,UACNiB,QAASxC,EAAMwC,QACfvB,QAAShB,EAAS0G,eACjB,CACDvF,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,qBAAsB,KACzFC,EAAG,GACF,EAAG,CAAC,UAAW,gBAClBP,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAOlC,EAAY,EAAC,QAAoB,MAAOC,EAAY,EAAC,QAAagH,EAAqB,CACzIxD,WAAY3C,EAAM4G,WAClB,sBAAuB/G,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM4G,WAAajG,GAC9EkG,YAAajH,EAAK8B,GAAG,8BACrBzC,MAAO,mBACN,CACD6H,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBlH,EAAK8B,GAAG,6BAA8B,KACjGC,EAAG,GACF,EAAG,CAAC,aAAc,iBAAiB,QAAayE,EAAgC,CACjF,oBAAqBtG,EAAOmC,iBAC5Be,OAAQ,QACR+D,SAAU9G,EAAS+G,uBAClB,CACDlG,SAAS,QAAS,IAAM,EAAC,QAAaX,EAAsB,CAC1DlB,MAAO,4BACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,kBAERK,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,oBAAqB,gBAAgB,QAAoB,IAAKtC,GAAY,QAAiBO,EAAK8B,GAAG,kBAAmB,OAC7HC,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,eAAgB,WAAc,QAAarB,EAAsB,CAC7FlB,IAAK,EACLuD,WAAY1C,EAASqG,cACrB,sBAAuBzG,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAASqG,cAAgB3F,GACpFmC,MAAOhD,EAAOyG,YAAc3G,EAAK8B,GAAG,uBAAyB9B,EAAK8B,GAAG,kBACrEmB,UAAW,MACXrB,KAAM,OACN,cAAc,EACdvC,MAAO,cACPuH,QAASvG,EAASwG,aACjB,CACDC,QAAQ,QAAS,IAAM,EAAC,QAAoB,MAAOR,EAAa,EAAC,QAAa/F,EAAsB,CAClGc,QAAShB,EAASwG,YAClBxH,MAAO,cACN,CACDmC,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,oBAAqB,KACxFC,EAAG,GACF,EAAG,CAAC,aAAa,QAAaxB,EAAsB,CACrDoB,KAAM,UACNiB,QAASxC,EAAMwC,QACfvB,QAAShB,EAAS0G,cAClB1H,MAAO,cACN,CACDmC,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,qBAAsB,KACzFC,EAAG,GACF,EAAG,CAAC,UAAW,gBAClBP,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO7B,EAAY,EAAC,QAAoB,MAAOC,EAAY,EAAC,QAAoB,MAAOC,GAAY,QAAiBG,EAAK8B,GAAG,6BAA8B,IAAI,QAAoB,MAAOhC,EAAY,EAAC,QAAayG,EAAqB,CACnRxD,WAAY3C,EAAM4G,WAClB,sBAAuB/G,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM4G,WAAajG,GAC9EkG,YAAajH,EAAK8B,GAAG,8BACrBzC,MAAO,mBACN,KAAM,EAAG,CAAC,aAAc,iBAAiB,QAAakB,EAAsB,CAC7ElB,MAAO,2BACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMiH,gBAAiB,IACnE,CACD7F,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,kBAERK,EAAG,OACC,QAAoB,IAAK+D,GAAa,QAAiB9F,EAAK8B,GAAG,wBAAyB,KAAM1B,EAAMiH,iBAAkB,WAAc,QAAoB,MAAOtB,EAAa,EAAC,QAAoB,MAAOC,EAAa,EAAC,QAAoB,OAAQC,GAAa,QAAiBjG,EAAK8B,GAAG,6BAA8B,IAAI,QAAavB,EAAsB,CACjW+G,KAAM,GACNjG,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMiH,gBAAiB,IACnE,CACD7F,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,YAERK,EAAG,OACC,UAAiB,WAAc,QAAoB,MAAOmE,EAAa,CAAC9F,EAAMmH,YAAa,WAAc,QAAoB,MAAOpB,EAAa,EAAC,QAAa7F,EAA8B,CACjMoB,KAAM,qBACNrC,MAAO,gBACL,QAAoB,OAAQ+G,GAAa,QAAiBhG,EAAMmH,WAAY,IAAI,QAAahH,EAAsB,CACrHoB,KAAM,UACNC,KAAM,QACNP,QAAShB,EAASwB,oBACjB,CACDL,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,mBAAoB,KACvFC,EAAG,GACF,EAAG,CAAC,iBAAkB,WAAc,QAAavB,EAAoB,CACtEhB,IAAK,EACLwC,IAAK,UACLC,KAAM7B,EAAM8B,SACZC,MAAO/B,EAAMgC,UACb,WAAY,OACZ,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAoBlC,EAAOmC,iBAC3BhD,MAAO,iBACPiD,YAAajC,EAASmH,qBACrB,CACDhG,SAAS,QAAS,EAChBgB,OACAP,UACI,EAAC,QAAoB,OAAQ,CACjC5C,OAAO,QAAgB,CAAC,YAAa,CACnC,aAAc4C,EAAKQ,OAASvC,EAAOmC,qBAEpC,EAAC,QAAa/B,EAA8B,CAC7CoB,KAAMc,EAAKE,SAAW,cAAgB,SACtCrD,MAAO,eACN,KAAM,EAAG,CAAC,UAAU,QAAoB,OAAQgH,GAAa,QAAiBpE,EAAKU,MAAO,IAAK,KAClGZ,EAAG,GACF,EAAG,CAAC,OAAQ,QAAS,mBAAoB,oBAAqB,CAAC,CAACpB,EAAoBP,EAAMqH,mBAAoB,QAAoB,IAAI,OACzI1F,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,cAChC,C,eCpMA,GACEY,KAAM,iBACN+E,WAAY,CACVC,oBAAmB,KAErBxF,MAAO,CACLY,WAAY,CACVpB,KAAMiG,QACNpG,SAAS,GAEXa,iBAAkB,CAChBV,KAAMwB,OACN3B,QAAS,IAEXmF,YAAa,CACXhF,KAAMiG,QACNpG,SAAS,GAEXqG,YAAa,CACXlG,KAAMwB,OACN3B,QAAS,MAGbsG,MAAO,CAAC,oBAAqB,UAAW,SACxC,IAAA7F,GACE,MAAO,CACL+E,WAAY,IACZpE,SAAS,EACTc,YAAaC,OAAOC,WAEpByD,gBAAgB,EAChBnF,SAAU,GACVuF,aAAa,EACbF,UAAW,GACXnF,UAAW,CACToB,SAAU,WACVC,MAAO,QAGb,EACAI,SAAU,CACR6C,cAAe,CACb,GAAApB,GACE,OAAOxB,KAAKf,UACd,EACA,GAAAgF,CAAIC,GACFlE,KAAK8B,MAAM,oBAAqBoC,EAClC,GAEF,SAAApH,GACE,OAAOkD,KAAKJ,YAAc,GAC5B,GAEFK,MAAO,CACL,UAAAhB,CAAWiB,GACLA,IACFF,KAAKkD,WAAalD,KAAK+D,aAAe,IACtC/D,KAAKuD,gBAAiB,EAE1B,EACA,cAAAA,CAAerD,GACTA,IAAWF,KAAKlD,WAClBkD,KAAKjC,oBAET,GAEF,OAAA4C,GACEd,OAAOe,iBAAiB,SAAUZ,KAAKa,aACzC,EACA,aAAAC,GACEjB,OAAOkB,oBAAoB,SAAUf,KAAKa,aAC5C,EACAG,QAAS,CACP,YAAAH,GACEb,KAAKJ,YAAcC,OAAOC,UAC5B,EACA,qBAAAwD,CAAsB3E,GACpBqB,KAAKkD,WAAavE,CACpB,EACA,aAAAsE,GACEjD,KAAK8B,MAAM,UAAW9B,KAAKkD,WAC7B,EACA,WAAAH,GACE/C,KAAK8B,MAAM,qBAAqB,GAChC9B,KAAK8B,MAAM,QACb,EAEA,wBAAM/D,GACJiC,KAAK2D,aAAc,EACnB3D,KAAKyD,UAAY,GACjB,IACE,MAAMxC,QAAiB,EAAAC,EAAA,GAAc,qBAAsB,CACzDC,OAAQ,QAEV,IAAKF,EAASG,GAMZ,YALwB,MAApBH,EAASI,OACXrB,KAAKyD,UAAYzD,KAAKhC,GAAG,uBAEzBgC,KAAKyD,UAAYzD,KAAKhC,GAAG,yBAI7B,MAAMG,QAAa8C,EAASK,OACxBnD,EAAKuD,KACP1B,KAAK5B,SAAW,CAACD,EAAKuD,MAEtB1B,KAAK5B,SAAW,EAEpB,CAAE,MAAOuD,GACPC,QAAQjE,MAAM,kCAAmCgE,GACjD3B,KAAKyD,UAAYzD,KAAKhC,GAAG,0BAC3B,CAAE,QACAgC,KAAK2D,aAAc,CACrB,CACF,EACA,mBAAAD,CAAoBvF,GAClB,IAAIQ,EAAOR,EAAKQ,KACZA,IAASA,EAAKkD,WAAW,KAC3BlD,EAAO,IAAMA,EACHA,IACVA,EAAO,KAETqB,KAAKkD,WAAavE,EAClBqB,KAAKuD,gBAAiB,CACxB,I,WCtHJ,MAAMxB,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS9F,GAAQ,CAAC,YAAY,qBAEzF,Q,WCTA,MAAM,EAAa,CACjBV,MAAO,wBAEH,EAAa,CACjBA,MAAO,uBAEH,EAAa,CACjBA,MAAO,yBAEH,EAAa,CAAC,WACb,SAAS,EAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACvD,OAAO,WAAc,QAAa,KAAW,CAC3C2H,GAAI,QACH,EAAC,QAAa,KAAa,CAC5BtF,KAAM,gBACL,CACDnB,SAAS,QAAS,IAAM,CAACtB,EAAO6C,aAAc,WAAc,QAAoB,MAAO,CACrFvD,IAAK,EACLH,MAAO,wBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAAS6H,OAAS7H,EAAS6H,SAASrF,KACnF,EAAC,QAAoB,MAAO,CAC7BxD,MAAO,gBACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAe,OAAU,CAAC,WAC5D,EAAC,QAAoB,MAAO,EAAY,EAAC,QAAoB,OAAQ,GAAY,QAAiBD,EAAK8B,GAAG,0BAA2B,IAAI,QAAaxB,EAA8B,CACrLoB,KAAM,QACNrC,MAAO,sBACPgC,QAAShB,EAAS6H,OACjB,KAAM,EAAG,CAAC,eAAe,QAAoB,MAAO,EAAY,EAAC,QAAoB,MAAO,CAC7F7I,OAAO,QAAgB,CAAC,qBAAsB,CAC5C8I,QAASjI,EAAOkI,eAElB/G,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAASgI,SAAS,MAC9D,EAAC,QAAa/H,EAA8B,CAC7CoB,KAAM,OACNrC,MAAO,6BACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,kCAAmC,IAAK,KAAK,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYzB,EAASiI,UAAW,CAACC,EAAQC,MACnM,WAAc,QAAoB,MAAO,CAC9ChJ,IAAKgJ,EACLnJ,OAAO,QAAgB,CAAC,qBAAsB,CAC5C8I,OAAQK,IAAUnI,EAASiI,UAAUG,OAAS,KAEhDC,OAAO,QAAgB,CACrBC,YAA2B,IAAbH,EAAQ,GAAU,GAAK,OAEvCnH,QAASN,GAAUV,EAASgI,SAAShI,EAASiI,UAAUM,MAAM,EAAGJ,EAAQ,GAAGK,KAAK,OAChF,EAAC,QAAavI,EAA8B,CAC7CoB,KAAM,SACNrC,MAAO,6BACL,QAAoB,OAAQ,MAAM,QAAiBkJ,GAAS,IAAK,GAAI,KACvE,MAAOrI,EAAOkI,cAAe,WAAc,QAAoB,MAAO,CACxE5I,IAAK,EACLH,MAAO,qBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAASyI,QAAUzI,EAASyI,UAAUjG,KACrF,EAAC,QAAavC,EAA8B,CAC7CoB,KAAM,aACNrC,MAAO,6BACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,2BAA4B,OAAQ,QAAoB,IAAI,WAAe,QAAoB,IAAI,KAClKC,EAAG,KAEP,C,sBC3DA,GACEY,KAAM,wBACNR,MAAO,CACLY,WAAY,CACVpB,KAAMiG,QACNpG,SAAS,GAEX4G,YAAa,CACXzG,KAAMwB,OACN3B,QAAS,KAGbsG,MAAO,CAAC,oBAAqB,WAAY,UACzCjE,SAAU,CACR,SAAAyE,GACE,OAAOxE,KAAKsE,YAAYW,MAAM,KAAKC,OAAOpB,QAC5C,GAEF9C,QAAS,CACP,KAAAoD,GACEpE,KAAK8B,MAAM,qBAAqB,EAClC,EACA,QAAAyC,CAAS5F,GACPqB,KAAK8B,MAAM,WAAYnD,GACvBqB,KAAKoE,OACP,EACA,MAAAY,GACEhF,KAAK8B,MAAM,UACX9B,KAAKoE,OACP,ICxBJ,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS,GAAQ,CAAC,YAAY,qBAEzF,QCRA,MAAM,EAAa,CACjB7I,MAAO,uBAEH,EAAa,CACjBA,MAAO,sBAEH,EAAa,CACjBA,MAAO,wBAEF,SAAS,EAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACvD,OAAO,WAAc,QAAa,KAAW,CAC3C2H,GAAI,QACH,EAAC,QAAa,KAAa,CAC5BtF,KAAM,gBACL,CACDnB,SAAS,QAAS,IAAM,CAACtB,EAAO6C,aAAc,WAAc,QAAoB,MAAO,CACrFvD,IAAK,EACLH,MAAO,uBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAAS6H,OAAS7H,EAAS6H,SAASrF,KACnF,EAAC,QAAoB,MAAO,CAC7BxD,MAAO,eACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAe,OAAU,CAAC,WAC5D,EAAC,QAAoB,MAAO,EAAY,CAACA,EAAO,MAAQA,EAAO,KAAM,QAAoB,MAAO,CACjGZ,MAAO,uBACN,MAAO,KAAK,QAAoB,OAAQ,GAAY,QAAiBa,EAAOgD,OAAQ,MAAM,QAAoB,MAAO,EAAY,CAAEhD,EAAO+I,WAgC/B,WAAc,QAAoB,KAAW,CACzJzJ,IAAK,GACJ,EAAC,QAAoB,MAAO,CAC7BH,MAAO,oBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS6I,aAAa,gBAClE,EAAC,QAAa5I,EAA8B,CAC7CoB,KAAM,OACNrC,MAAO,uBACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,0BAA2B,MAAM,QAAoB,MAAO,CACzHzC,MAAO,oBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS6I,aAAa,UAClE,EAAC,QAAa5I,EAA8B,CAC7CoB,KAAM,cACNrC,MAAO,uBACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,4BAA6B,MAAO,OA9CsD,WAAc,QAAoB,KAAW,CACpMtC,IAAK,GACJ,EAAC,QAAoB,MAAO,CAC7BH,MAAO,oBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS6I,aAAa,YAClE,EAAC,QAAa5I,EAA8B,CAC7CoB,KAAM,cACNrC,MAAO,uBACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,4BAA6B,MAAM,QAAoB,MAAO,CAC3HzC,MAAO,oBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS6I,aAAa,UAClE,EAAC,QAAa5I,EAA8B,CAC7CoB,KAAM,OACNrC,MAAO,uBACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,0BAA2B,MAAM,QAAoB,MAAO,CACzHzC,MAAO,oBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS6I,aAAa,cAClE,EAAC,QAAa5I,EAA8B,CAC7CoB,KAAM,WACNrC,MAAO,uBACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,8BAA+B,MAAM,QAAoB,MAAO,CAC7HzC,MAAO,oBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS6I,aAAa,UAClE,EAAC,QAAa5I,EAA8B,CAC7CoB,KAAM,cACNrC,MAAO,uBACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,0BAA2B,MAAM,QAAoB,MAAO,CACzHzC,MAAO,oBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS6I,aAAa,SAClE,EAAC,QAAa5I,EAA8B,CAC7CoB,KAAM,OACNrC,MAAO,uBACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,+BAAgC,MAAO,MAcG,QAAoB,MAAO,CAClIzC,MAAO,wCACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS6I,aAAa,YAClE,EAAC,QAAa5I,EAA8B,CAC7CoB,KAAM,YACNrC,MAAO,uBACL,QAAoB,OAAQ,MAAM,QAAiBa,EAAO+I,SAAWjJ,EAAK8B,GAAG,6BAA+B9B,EAAK8B,GAAG,4BAA6B,aAAc,QAAoB,IAAI,KAC3LC,EAAG,KAEP,CCjFA,OACEY,KAAM,oBACNR,MAAO,CACLY,WAAY,CACVpB,KAAMiG,QACNpG,SAAS,GAEX0B,MAAO,CACLvB,KAAMwB,OACN3B,QAAS,IAEXyH,SAAU,CACRtH,KAAMiG,QACNpG,SAAS,IAGbsG,MAAO,CAAC,oBAAqB,UAC7BhD,QAAS,CACP,KAAAoD,GACEpE,KAAK8B,MAAM,qBAAqB,EAClC,EACA,YAAAsD,CAAaC,GACXrF,KAAK8B,MAAM,SAAUuD,GACrBrF,KAAKoE,OACP,ICjBJ,MAAM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAAS,GAAQ,CAAC,YAAY,qBAEzF,Q,0CCRA,MAAM,GAAa,CACjB7I,MAAO,uBAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,mBAEH,GAAa,CACjBA,MAAO,iBAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,qBAEH,GAAa,CAAC,WACd,GAAa,CACjBA,MAAO,uBAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,kBAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,iBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,mBAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,uBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,iBAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,mBAEH,GAAc,CAClBA,MAAO,kBAEF,SAAS,GAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDC,EAAuB,KACvBgG,EAAsB,KACtB6C,EAAoB,KACpBC,EAAyB,KACzBC,EAAsB,KACtBC,EAAqB,IACrB9C,EAAuB,KAC7B,OAAO,WAAc,QAAaA,EAAsB,CACtDvD,MAAOlD,EAAK8B,GAAG,kBACfiB,WAAY1C,EAASQ,QACrB,sBAAuBZ,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAASQ,QAAUE,GAC9EE,MAAOZ,EAASmJ,YAChB5C,QAASvG,EAASwG,aACjB,CACDrF,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAa+H,EAAoB,CAChGxG,WAAY3C,EAAMqJ,UAClB,sBAAuBxJ,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMqJ,UAAY1I,GAC7EY,KAAM,eACL,CACDH,SAAS,QAAS,IAAM,EAAC,QAAa6H,EAAwB,CAC5D5F,MAAOzD,EAAK8B,GAAG,mBACfa,KAAM,OACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,IAAK,IAAY,QAAiBxB,EAAK8B,GAAG,0BAA2B,CACxJ4H,MAAOrJ,EAASsJ,aACb,IAAI,QAAoB,MAAO,GAAY,EAAC,QAAapD,EAAqB,CACjFxD,WAAY3C,EAAMwJ,SAClB,sBAAuB3J,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMwJ,SAAW7I,GAC5EkG,YAAajH,EAAK8B,GAAG,6BACrB+H,SAAS,QAAUxJ,EAASyJ,kBAAmB,CAAC,UAChDC,QAAS1J,EAAS2J,kBAClBC,UAAW,IACV,CACDC,QAAQ,QAAS,IAAM,EAAC,QAAa3J,EAAsB,CACzDc,QAAShB,EAASyJ,kBAClBnI,KAAM,WACL,CACDH,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,WAERK,EAAG,GACF,EAAG,CAAC,cACPA,EAAG,GACF,EAAG,CAAC,aAAc,cAAe,UAAW,YAAa3B,EAAM+J,iBAAmB/J,EAAMgK,YAAY3B,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYrI,EAAMgK,YAAaC,KACzP,WAAc,QAAoB,MAAO,CAC9C7K,IAAK6K,EACLhL,MAAO,kBACPgC,QAASN,GAAUV,EAASiK,iBAAiBD,KAC5C,QAAiBA,GAAM,EAAG,MAC3B,UAAW,QAAoB,IAAI,MAAS,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,MAAM,QAAiBrK,EAAK8B,GAAG,yBAA0B,GAAI1B,EAAMmK,UAAU9B,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYrI,EAAMmK,UAAWF,KAC/U,WAAc,QAAajB,EAAmB,CACnD5J,IAAK6K,EACLG,SAAU,GACV5D,QAAS7F,GAAUV,EAASoK,gBAAgBJ,GAC5ChL,MAAO,YACN,CACDmC,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6I,GAAM,KACjEtI,EAAG,GACF,KAAM,CAAC,cACR,WAAY,WAAc,QAAoB,MAAO,IAAY,QAAiB/B,EAAK8B,GAAG,2BAA4B,OAAO,QAAoB,MAAO,GAAa,EAAC,QAAavB,EAAsB,CAC3MoB,KAAM,UACNN,QAAShB,EAASqK,eAClB9H,QAASxC,EAAMwC,QACf+H,SAAqC,IAA3BvK,EAAMmK,UAAU9B,QACzB,CACDjH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,2BAA4B,KAC/FC,EAAG,GACF,EAAG,CAAC,UAAW,UAAW,mBAC7BA,EAAG,GACF,EAAG,CAAC,WAAW,QAAasH,EAAwB,CACrD5F,MAAOzD,EAAK8B,GAAG,sBACfa,KAAM,UACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,IAAK,IAAa,QAAiBxB,EAAK8B,GAAG,+BAAgC,GAAI1B,EAAMwK,WAAWnC,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAoB,KAAM,MAAM,QAAiBzI,EAAK8B,GAAG,wBAAyB,IAAI,QAAoB,MAAO,GAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAY1B,EAAMwK,WAAYP,KACvc,WAAc,QAAajB,EAAmB,CACnD5J,IAAK6K,EACLG,SAAU,GACV5D,QAAS7F,GAAUV,EAASwK,sBAAsBR,GAClDhL,MAAO,WACPsC,KAAM,WACL,CACDH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6I,GAAM,KACjEtI,EAAG,GACF,KAAM,CAAC,cACR,aAAc,WAAc,QAAoB,MAAO,IAAa,QAAiB/B,EAAK8B,GAAG,0BAA2B,QAC5HC,EAAG,GACF,EAAG,CAAC,WAAW,QAAasH,EAAwB,CACrD5F,MAAOzD,EAAK8B,GAAG,qBACfa,KAAM,SACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,IAAK,IAAa,QAAiBxB,EAAK8B,GAAG,4BAA6B,CAC5J4H,MAAOrJ,EAASsJ,aACb,IAAI,QAAaL,EAAqB,CACzCpG,MAAOlD,EAAK8B,GAAG,8BACfH,KAAM,UACNmJ,YAAa9K,EAAK8B,GAAG,6BACrB0I,UAAU,EACV9B,MAAO,CACL,gBAAiB,QAEnBqC,OAAQ,IACP,KAAM,EAAG,CAAC,QAAS,iBAAiB,QAAoB,MAAO,GAAa,EAAC,QAAaxK,EAAsB,CACjHoB,KAAM,SACNN,QAAShB,EAAS2K,mBAClBpI,QAASxC,EAAMwC,SACd,CACDpB,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,6BAA8B,KACjGC,EAAG,GACF,EAAG,CAAC,UAAW,kBAClBA,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,GACF,EAAG,CAAC,mBACPA,EAAG,GACF,EAAG,CAAC,QAAS,aAAc,QAAS,WACzC,C,8CCzKA,IACEY,KAAM,iBACNR,MAAO,CACLY,WAAY,CACVpB,KAAMiG,QACNpG,SAAS,GAEXyJ,cAAe,CACbtJ,KAAMuJ,MACNC,UAAU,EACV3J,QAAS,IAAM,KAGnBsG,MAAO,CAAC,oBAAqB,eAC7B,IAAA7F,GACE,MAAO,CACLwH,UAAW,MACXG,SAAU,GACVW,UAAW,GACXK,WAAY,GACZR,YAAa,GACbD,iBAAiB,EACjBvH,SAAS,EACTwI,cAAe,KAEnB,EACAvH,SAAU,CACRhD,QAAS,CACP,GAAAyE,GACE,OAAOxB,KAAKf,UACd,EACA,GAAAgF,CAAIC,GACFlE,KAAK8B,MAAM,oBAAqBoC,EAClC,GAEF,WAAAwB,GACE,OAAO7F,OAAOC,WAAa,IAAM,MAAQ,OAC3C,EACA,iBAAAyH,GAEE,OAAOvH,KAAKmH,cAAcjC,OAAOsC,IAASA,EAAKrC,SACjD,EACA,SAAAU,GACE,OAAO7F,KAAKuH,kBAAkB5C,MAChC,EACA,OAAA8C,GACE,OAAOzH,KAAKuH,kBAAkBG,IAAIF,GAAQA,EAAK3I,KACjD,GAEFoB,MAAO,CACL,OAAAlD,CAAQmD,GACFA,EACFF,KAAK2H,iBAEL3H,KAAK4H,WAET,EACA,SAAAjC,CAAUkC,GACO,WAAXA,GACF7H,KAAK2H,gBAET,GAEF3G,QAAS,CACP,SAAA4G,GACE5H,KAAKyG,UAAY,GACjBzG,KAAK8F,SAAW,GAChB9F,KAAKqG,iBAAkB,EACvBrG,KAAK2F,UAAY,KACnB,EACA,oBAAMgC,GACJ,GAAsC,IAAlC3H,KAAKuH,kBAAkB5C,OAI3B,IAEE,MAAMmD,EAAc9H,KAAKuH,kBAAkBG,IAAIF,IAAQ,EAAAtG,EAAA,GAAc,oBAAoB6G,mBAAmBP,EAAK3I,QAAS,CACxHsC,OAAQ,SAEJ6G,QAAkBC,QAAQC,IAAIJ,GAC9BK,EAAU,GAChB,IAAK,MAAMlH,KAAY+G,EACrB,GAAI/G,EAASG,GAAI,CACf,MAAMjD,QAAa8C,EAASK,OAC5B6G,EAAQC,KAAKjK,EAAKkK,MAAQ,GAC5B,CAIEF,EAAQxD,OAAS,EACnB3E,KAAK8G,WAAaqB,EAAQ,GAAGjD,OAAOqB,GAAO4B,EAAQG,MAAMD,GAAQA,EAAK5I,SAAS8G,KAE/EvG,KAAK8G,WAAa,EAEtB,CAAE,MAAOnJ,GACPiE,QAAQjE,MAAM,6BAA8BA,GAC5C,MAAUA,MAAMqC,KAAKhC,GAAG,iCAC1B,MA1BEgC,KAAK8G,WAAa,EA2BtB,EACA,iBAAAZ,GACEqC,aAAavI,KAAKsH,eACbtH,KAAK8F,UAA4C,IAAhC9F,KAAK8F,SAAS0C,OAAO7D,OAI3C3E,KAAKsH,cAAgBnH,WAAW,KAC9BH,KAAKyI,oBACJ,KALDzI,KAAKqG,iBAAkB,CAM3B,EACA,sBAAMoC,GACJ,IACE,MAAMC,EAAS1I,KAAK8F,SAAS0C,OAAOG,cAC9B1H,QAAiB,EAAAC,EAAA,GAAc,wCAAwC6G,mBAAmBW,cAAoB,CAClHvH,OAAQ,QAEV,GAAIF,EAASG,GAAI,CACf,MAAMjD,QAAa8C,EAASK,OAC5BtB,KAAKsG,aAAenI,EAAKkK,MAAQ,IAAInD,OAAOqB,IAAQvG,KAAKyG,UAAUhH,SAAS8G,IAC5EvG,KAAKqG,gBAAkBrG,KAAKsG,YAAY3B,OAAS,CACnD,CACF,CAAE,MAAOhH,GACPiE,QAAQjE,MAAM,8BAA+BA,EAC/C,CACF,EACA,gBAAA6I,CAAiBD,GACfvG,KAAK8F,SAAWS,EAChBvG,KAAKqG,iBAAkB,EACvBrG,KAAKgG,mBACP,EACA,iBAAAA,GACE,MAAMO,EAAMvG,KAAK8F,SAAS0C,OAC1B,GAAKjC,EAAL,CAGA,GAAIvG,KAAKyG,UAAUhH,SAAS8G,GAI1B,OAHA,MAAUqC,QAAQ5I,KAAKhC,GAAG,8BAC1BgC,KAAK8F,SAAW,QAChB9F,KAAKqG,iBAAkB,GAGzBrG,KAAKyG,UAAU2B,KAAK7B,GACpBvG,KAAK8F,SAAW,GAChB9F,KAAKqG,iBAAkB,CATvB,CAUF,EACA,eAAAM,CAAgBJ,GACd,MAAM7B,EAAQ1E,KAAKyG,UAAUoC,QAAQtC,GACjC7B,GAAS,GACX1E,KAAKyG,UAAUqC,OAAOpE,EAAO,EAEjC,EACA,oBAAMkC,GACJ,GAA8B,IAA1B5G,KAAKyG,UAAU9B,OAAnB,CAIA3E,KAAKlB,SAAU,EACf,IACE,MAAMmC,QAAiB,EAAAC,EAAA,GAAc,yBAA0B,CAC7DC,OAAQ,OACR4H,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAU,CACnBzB,QAASzH,KAAKyH,QACdpC,OAAQ,MACRgD,KAAMrI,KAAKyG,cAGf,IAAIxF,EAASG,GAYX,MAAM,IAAI+H,MAAMnJ,KAAKhC,GAAG,uBAZT,CACf,MAAMG,QAAa8C,EAASK,OAC5B,KAAInD,EAAKiL,SAAWjL,EAAKkL,QAAU,GAOjC,MAAM,IAAIF,MAAMnJ,KAAKhC,GAAG,uBANxB,MAAUoL,QAAQpJ,KAAKhC,GAAG,sBAAuB,CAC/C4H,MAAOzH,EAAKkL,WAEdrJ,KAAK8B,MAAM,eACX9B,KAAKyG,UAAY,EAIrB,CAGF,CAAE,MAAO9I,GACPiE,QAAQjE,MAAM,qBAAsBA,GACpC,MAAUA,MAAMqC,KAAKhC,GAAG,sBAC1B,CAAE,QACAgC,KAAKlB,SAAU,CACjB,CAjCA,MAFE,MAAU8J,QAAQ5I,KAAKhC,GAAG,0BAoC9B,EACA,2BAAM+I,CAAsBR,GAC1BvG,KAAKlB,SAAU,EACf,IACE,MAAMmC,QAAiB,EAAAC,EAAA,GAAc,yBAA0B,CAC7DC,OAAQ,OACR4H,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAU,CACnBzB,QAASzH,KAAKyH,QACdpC,OAAQ,SACRgD,KAAM,CAAC9B,OAGX,IAAItF,EAASG,GAYX,MAAM,IAAI+H,MAAMnJ,KAAKhC,GAAG,0BAZT,CACf,MAAMG,QAAa8C,EAASK,OAC5B,KAAInD,EAAKiL,SAAWjL,EAAKkL,QAAU,GAOjC,MAAM,IAAIF,MAAMnJ,KAAKhC,GAAG,0BANxB,MAAUoL,QAAQpJ,KAAKhC,GAAG,yBAA0B,CAClD4H,MAAOzH,EAAKkL,WAEdrJ,KAAK8B,MAAM,qBACL9B,KAAK2H,gBAIf,CAGF,CAAE,MAAOhK,GACPiE,QAAQjE,MAAM,sBAAuBA,GACrC,MAAUA,MAAMqC,KAAKhC,GAAG,yBAC1B,CAAE,QACAgC,KAAKlB,SAAU,CACjB,CACF,EACA,kBAAAoI,GACE,KAAaoC,QAAQtJ,KAAKhC,GAAG,+BAAgC,CAC3D4H,MAAO5F,KAAK6F,YACV7F,KAAKhC,GAAG,8BAA+B,CACzCuL,kBAAmBvJ,KAAKhC,GAAG,2BAC3BwL,iBAAkBxJ,KAAKhC,GAAG,+BAC1BH,KAAM,YACL4L,KAAK,KACNzJ,KAAK0J,qBACJC,MAAM,KACP,MAAUC,KAAK5J,KAAKhC,GAAG,6BAE3B,EACA,sBAAM0L,GACJ1J,KAAKlB,SAAU,EACf,IACE,MAAMmC,QAAiB,EAAAC,EAAA,GAAc,yBAA0B,CAC7DC,OAAQ,OACR4H,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAU,CACnBzB,QAASzH,KAAKyH,QACdpC,OAAQ,MACRgD,KAAM,OAGV,IAAIpH,EAASG,GAYX,MAAM,IAAI+H,MAAMnJ,KAAKhC,GAAG,yBAZT,CACf,MAAMG,QAAa8C,EAASK,OAC5B,KAAInD,EAAKiL,SAAWjL,EAAKkL,QAAU,GAOjC,MAAM,IAAIF,MAAMnJ,KAAKhC,GAAG,yBANxB,MAAUoL,QAAQpJ,KAAKhC,GAAG,wBAAyB,CACjD4H,MAAOzH,EAAKkL,WAEdrJ,KAAK8B,MAAM,eACX9B,KAAK8G,WAAa,EAItB,CAGF,CAAE,MAAOnJ,GACPiE,QAAQjE,MAAM,uBAAwBA,GACtC,MAAUA,MAAMqC,KAAKhC,GAAG,wBAC1B,CAAE,QACAgC,KAAKlB,SAAU,CACjB,CACF,EACA,WAAAiE,GACE/C,KAAKjD,SAAU,CACjB,IClRJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,mBCRA,MAAM,GAAa,CACjBxB,MAAO,4BAEH,GAAa,CACjBA,MAAO,iBAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,qBAEH,GAAa,CAAC,WACd,GAAa,CACjBA,MAAO,wBAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,kBAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,iBAEH,GAAa,CACjBA,MAAO,wBAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,kBAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,iBAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,iBAEH,GAAc,CAClBA,MAAO,iBAEF,SAAS,GAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDC,EAAuB,KACvBgG,EAAsB,KACtB6C,EAAoB,KACpBuE,GAAqB,QAAkB,WACvCC,EAAqB,MACrBnH,EAAuB,KAC7B,OAAO,WAAc,QAAaA,EAAsB,CACtDvD,MAAOlD,EAAK8B,GAAG,uBACfiB,WAAY1C,EAASQ,QACrB,sBAAuBZ,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAASQ,QAAUE,GAC9EE,MAAOZ,EAASmJ,YAChB5C,QAASvG,EAASwG,aACjB,CACDC,QAAQ,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAa,EAAC,QAAavG,EAAsB,CACnGc,QAAShB,EAASwG,aACjB,CACDrF,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,wBAAyB,KAC5FC,EAAG,GACF,EAAG,CAAC,gBACPP,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAa+E,EAAqB,CACzIxD,WAAY3C,EAAMwJ,SAClB,sBAAuB3J,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMwJ,SAAW7I,GAC5EkG,YAAajH,EAAK8B,GAAG,kCACrB+H,SAAS,QAAUxJ,EAASwN,aAAc,CAAC,UAC3C9D,QAAS1J,EAAS2J,kBAClBC,UAAW,IACV,CACDC,QAAQ,QAAS,IAAM,EAAC,QAAa3J,EAAsB,CACzDc,QAAShB,EAASwN,aAClBlM,KAAM,WACL,CACDH,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,WAERK,EAAG,GACF,EAAG,CAAC,cACPA,EAAG,GACF,EAAG,CAAC,aAAc,cAAe,UAAW,YAAa3B,EAAM+J,iBAAmB/J,EAAMgK,YAAY3B,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYrI,EAAMgK,YAAaC,KACzP,WAAc,QAAoB,MAAO,CAC9C7K,IAAK6K,EACLhL,MAAO,kBACPgC,QAASN,GAAUV,EAASiK,iBAAiBD,KAC5C,QAAiBA,GAAM,EAAG,MAC3B,UAAW,QAAoB,IAAI,MAAS,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,MAAM,QAAiBrK,EAAK8B,GAAG,8BAA+B,GAAI1B,EAAM0N,YAAYrF,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYrI,EAAM0N,YAAazD,KACxV,WAAc,QAAajB,EAAmB,CACnD5J,IAAK6K,EACLG,SAAU,GACV5D,QAAS7F,GAAUV,EAAS0N,gBAAgB1D,GAC5ChL,MAAO,YACN,CACDmC,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6I,GAAM,KACjEtI,EAAG,GACF,KAAM,CAAC,cACR,WAAY,WAAc,QAAoB,MAAO,IAAY,QAAiB/B,EAAK8B,GAAG,yBAA0B,OAAO,QAAoB,MAAO,GAAY,EAAC,QAAoB,KAAM,MAAM,QAAiB9B,EAAK8B,GAAG,8BAA+B,GAAI1B,EAAM4N,YAAYvF,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYrI,EAAM4N,YAAa3D,KACva,WAAc,QAAajB,EAAmB,CACnD5J,IAAK6K,EACLhJ,QAASN,GAAUV,EAAS4N,oBAAoB5D,GAChDhL,MAAO,qBACPsC,KAAM,QACL,CACDH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6I,GAAM,KACjEtI,EAAG,GACF,KAAM,CAAC,cACR,SAAW3B,EAAM8N,qBAAsB,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAaN,EAAoB,CACjIvO,MAAO,cACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAamM,KACtC5L,EAAG,KACD,QAAiB,KAAM,QAAiB/B,EAAK8B,GAAG,0BAA2B,QAAS,WAAc,QAAoB,MAAO,IAAa,QAAiB9B,EAAK8B,GAAG,gCAAiC,UACxMC,EAAG,GACF,EAAG,CAAC,QAAS,aAAc,QAAS,WACzC,C,gBC7GA,IACEY,KAAM,sBACN+E,WAAY,CACVyG,QAAO,YAEThM,MAAO,CACLY,WAAY,CACVpB,KAAMiG,QACNpG,SAAS,GAEX4M,OAAQ,CACNzM,KAAMwB,OACNgI,UAAU,IAGdrD,MAAO,CAAC,oBAAqB,eAC7B,IAAA7F,GACE,MAAO,CACL6L,YAAa,GACblE,SAAU,GACVQ,YAAa,GACb4D,YAAa,GACb7D,iBAAiB,EACjBvH,SAAS,EACTsL,oBAAoB,EACpB9C,cAAe,KAEnB,EACAvH,SAAU,CACRhD,QAAS,CACP,GAAAyE,GACE,OAAOxB,KAAKf,UACd,EACA,GAAAgF,CAAIC,GACFlE,KAAK8B,MAAM,oBAAqBoC,EAClC,GAEF,WAAAwB,GACE,OAAO7F,OAAOC,WAAa,IAAM,MAAQ,OAC3C,GAEFG,MAAO,CACL,OAAAlD,CAAQmD,GACFA,IACFF,KAAKuK,eACLvK,KAAKwK,kBAET,GAEFxJ,QAAS,CACP,kBAAMuJ,GACJ,IACE,MAAMtJ,QAAiB,EAAAC,EAAA,GAAc,oBAAoB6G,mBAAmB/H,KAAKsK,UAAW,CAC1FnJ,OAAQ,QAEV,IAAIF,EAASG,GAIX,MAAM,IAAI+H,MAAM,uBAJD,CACf,MAAMhL,QAAa8C,EAASK,OAC5BtB,KAAKgK,YAAc7L,EAAKkK,MAAQ,EAClC,CAGF,CAAE,MAAO1K,GACPiE,QAAQjE,MAAM,2BAA4BA,GAC1C,MAAUA,MAAMqC,KAAKhC,GAAG,4BAC1B,CACF,EACA,qBAAMwM,GACJxK,KAAKoK,oBAAqB,EAC1B,IACE,MAAMnJ,QAAiB,EAAAC,EAAA,GAAc,yCAA0C,CAC7EC,OAAQ,QAEV,GAAIF,EAASG,GAAI,CACf,MAAMjD,QAAa8C,EAASK,OAC5BtB,KAAKkK,aAAe/L,EAAKkK,MAAQ,IAAInD,OAAOqB,IAAQvG,KAAKgK,YAAYvK,SAAS8G,GAChF,CACF,CAAE,MAAO5I,GACPiE,QAAQjE,MAAM,8BAA+BA,EAC/C,CAAE,QACAqC,KAAKoK,oBAAqB,CAC5B,CACF,EACA,iBAAAlE,GACEqC,aAAavI,KAAKsH,eACbtH,KAAK8F,UAA4C,IAAhC9F,KAAK8F,SAAS0C,OAAO7D,OAI3C3E,KAAKsH,cAAgBnH,WAAW,KAC9BH,KAAKyI,oBACJ,KALDzI,KAAKqG,iBAAkB,CAM3B,EACA,sBAAMoC,GACJ,IACE,MAAMC,EAAS1I,KAAK8F,SAAS0C,OAAOG,cAC9B1H,QAAiB,EAAAC,EAAA,GAAc,wCAAwC6G,mBAAmBW,cAAoB,CAClHvH,OAAQ,QAEV,GAAIF,EAASG,GAAI,CACf,MAAMjD,QAAa8C,EAASK,OAC5BtB,KAAKsG,aAAenI,EAAKkK,MAAQ,IAAInD,OAAOqB,IAAQvG,KAAKgK,YAAYvK,SAAS8G,IAC9EvG,KAAKqG,gBAAkBrG,KAAKsG,YAAY3B,OAAS,CACnD,CACF,CAAE,MAAOhH,GACPiE,QAAQjE,MAAM,8BAA+BA,EAC/C,CACF,EACA,gBAAA6I,CAAiBD,GACfvG,KAAK8F,SAAWS,EAChBvG,KAAKqG,iBAAkB,EACvBrG,KAAK+J,cACP,EACA,kBAAMA,GACJ,MAAMxD,EAAMvG,KAAK8F,SAAS0C,OAC1B,GAAKjC,EAAL,CAGA,GAAIvG,KAAKgK,YAAYvK,SAAS8G,GAI5B,OAHA,MAAUqC,QAAQ5I,KAAKhC,GAAG,4BAC1BgC,KAAK8F,SAAW,QAChB9F,KAAKqG,iBAAkB,GAGzB,IACE,MAAMpF,QAAiB,EAAAC,EAAA,GAAc,oBAAoB6G,mBAAmB/H,KAAKsK,UAAW,CAC1FnJ,OAAQ,OACR4H,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAU,CACnB7D,OAAQ,MACRgD,KAAM,CAAC9B,OAGX,IAAItF,EAASG,GAUN,CACL,MAAMzD,QAAcsD,EAASK,OAC7B,MAAM,IAAI6H,MAAMxL,EAAM8M,SAAWzK,KAAKhC,GAAG,2BAC3C,CAbiB,CACf,MAAMG,QAAa8C,EAASK,OAC5BtB,KAAKgK,YAAc7L,EAAKkK,MAAQ,GAChCrI,KAAK8F,SAAW,GAChB9F,KAAKqG,iBAAkB,EACvB,MAAU+C,QAAQpJ,KAAKhC,GAAG,6BAC1BgC,KAAK8B,MAAM,cAAe9B,KAAKgK,aAG/BhK,KAAKwK,iBACP,CAIF,CAAE,MAAO7M,GACPiE,QAAQjE,MAAM,oBAAqBA,GACnC,MAAUA,MAAMA,EAAM8M,SAAWzK,KAAKhC,GAAG,2BAC3C,CAnCA,CAoCF,EACA,qBAAMiM,CAAgB1D,GACpB,IACE,MAAMtF,QAAiB,EAAAC,EAAA,GAAc,oBAAoB6G,mBAAmB/H,KAAKsK,UAAW,CAC1FnJ,OAAQ,OACR4H,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAU,CACnB7D,OAAQ,SACRgD,KAAM,CAAC9B,OAGX,IAAItF,EAASG,GASX,MAAM,IAAI+H,MAAMnJ,KAAKhC,GAAG,+BATT,CACf,MAAMG,QAAa8C,EAASK,OAC5BtB,KAAKgK,YAAc7L,EAAKkK,MAAQ,GAChC,MAAUe,QAAQpJ,KAAKhC,GAAG,gCAC1BgC,KAAK8B,MAAM,cAAe9B,KAAKgK,aAG/BhK,KAAKwK,iBACP,CAGF,CAAE,MAAO7M,GACPiE,QAAQjE,MAAM,sBAAuBA,GACrC,MAAUA,MAAMqC,KAAKhC,GAAG,8BAC1B,CACF,EACA,mBAAAmM,CAAoB5D,GAClBvG,KAAK8F,SAAWS,EAChBvG,KAAK+J,cACP,EACA,WAAAhH,GACE/C,KAAKjD,SAAU,EACfiD,KAAK8F,SAAW,GAChB9F,KAAKqG,iBAAkB,EACvBrG,KAAKgK,YAAc,GACnBhK,KAAKkK,YAAc,EACrB,IC7LJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,2ICRA,MAAM,GAAa,CACjB3O,MAAO,kBAEH,GAAa,CACjBA,MAAO,mBAEH,GAAa,CACjBA,MAAO,mBAEH,GAAa,CAAC,OACd,GAAa,CAAC,OACd,GAAa,CACjBG,IAAK,GAED,GAAa,CACjBA,IAAK,GAED,GAAa,CACjBA,IAAK,EACLkJ,MAAO,CACL,QAAW,OACX,cAAe,SACf,IAAO,QAGL,GAAa,CACjBlJ,IAAK,EACLkJ,MAAO,CACL,MAAS,YAGP,GAAc,CAClBlJ,IAAK,EACLkJ,MAAO,CACL,QAAW,OACX,YAAa,OACb,IAAO,QAGL,GAAc,CAClBlJ,IAAK,EACLkJ,MAAO,CACL,MAAS,YAGN,SAAS,GAAO1I,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDC,EAAuB,KACvBgG,EAAsB,KACtB8C,EAAyB,KACzBE,EAAqB,IACrBiF,EAAsB,MACtBC,EAAkC,MAClCrF,EAAoB,KACpBsF,EAA6B,MAC7BC,EAA0B,MAC1BC,EAAqB,MACrBnI,EAAuB,KAC7B,OAAO,WAAc,QAAaA,EAAsB,CACtDvD,MAAOlD,EAAK8B,GAAG,oBACfiB,WAAY1C,EAASQ,QACrB,sBAAuBZ,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAASQ,QAAUE,GAChFE,MAAOZ,EAASmJ,aACf,CACDhI,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,CAAEpB,EAAMyO,WAelE,QAAoB,IAAI,KAfuD,WAAc,QAAatO,EAAsB,CACpIf,IAAK,EACLmC,KAAM,UACNN,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,aACxDkJ,MAAO,GACPlN,KAAM,QACNvC,MAAO,iBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,WACNgH,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiB1I,EAAK8B,GAAG,wBAAyB,KAC7EC,EAAG,KACiC3B,EAAMyO,WAetC,QAAoB,IAAI,KAf2B,WAAc,QAAatO,EAAsB,CACxGf,IAAK,EACLmC,KAAM,UACNN,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,kBACxDkJ,MAAO,GACPlN,KAAM,QACNvC,MAAO,iBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,OACNgH,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiB1I,EAAK8B,GAAG,oBAAqB,KACzEC,EAAG,KACiC3B,EAAMyO,WAetC,QAAoB,IAAI,KAf2B,WAAc,QAAatO,EAAsB,CACxGf,IAAK,EACLmC,KAAM,UACNN,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,UACxDkJ,MAAO,GACPlN,KAAM,QACNvC,MAAO,iBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,MACNgH,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiB1I,EAAK8B,GAAG,yBAA0B,KAC9EC,EAAG,KACiC3B,EAAMyO,WAetC,QAAoB,IAAI,KAf2B,WAAc,QAAatO,EAAsB,CACxGf,IAAK,EACLmC,KAAM,UACNN,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,UACxDkJ,MAAO,GACPlN,KAAM,QACNvC,MAAO,iBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,aACNgH,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiB1I,EAAK8B,GAAG,yBAA0B,KAC9EC,EAAG,KACiC3B,EAAMyO,WAetC,QAAoB,IAAI,KAf2B,WAAc,QAAatO,EAAsB,CACxGf,IAAK,EACLmC,KAAM,SACNN,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,WACxDkJ,MAAO,GACPlN,KAAM,QACNvC,MAAO,iBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,YACNgH,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiB1I,EAAK8B,GAAG,yBAA0B,KAC9EC,EAAG,KACiC3B,EAAMyO,WAetC,QAAoB,IAAI,KAf2B,WAAc,QAAatO,EAAsB,CACxGf,IAAK,EACLmC,KAAM,UACNN,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS0O,aACtDD,MAAO,GACPlN,KAAM,QACNvC,MAAO,iBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,OACNgH,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiB1I,EAAK8B,GAAG,oBAAqB,KACzEC,EAAG,KACiC3B,EAAMyO,WAetC,QAAoB,IAAI,KAf2B,WAAc,QAAatO,EAAsB,CACxGf,IAAK,EACLmC,KAAM,OACNN,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS2O,oBACtDF,MAAO,GACPlN,KAAM,QACNvC,MAAO,iBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,WACNgH,MAAO,CACL,eAAgB,UAEhB,QAAiB,KAAM,QAAiB1I,EAAK8B,GAAG,sBAAuB,KAC3EC,EAAG,KACgC3B,EAAMyO,YAAa,WAAc,QAAatO,EAAsB,CACvGf,IAAK,EACLmC,KAAM,UACNN,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS4O,gBACtDH,MAAO,GACPlN,KAAM,QACNvC,MAAO,gBACPuD,QAASxC,EAAM8O,YACd,CACD1N,SAAS,QAAS,IAAM,CAAEpB,EAAM8O,YAM1B,QAAoB,IAAI,KANgB,WAAc,QAAa5O,EAA8B,CACrGd,IAAK,EACLkC,KAAM,OACNgH,MAAO,CACL,eAAgB,WAEiB,QAAiB,KAAM,QAAiB1I,EAAK8B,GAAG,oBAAqB,KAC1GC,EAAG,GACF,EAAG,CAAC,cAAe,QAAoB,IAAI,GAAO3B,EAAMyO,YAAa,WAAc,QAAatO,EAAsB,CACvHf,IAAK,EACL6B,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS8O,cACtDL,MAAO,GACPlN,KAAM,QACNvC,MAAO,iBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,sBAAuB,KAC1FC,EAAG,MACC,QAAoB,IAAI,MAAS,QAAawH,EAAoB,CACtExG,WAAY3C,EAAMqJ,UAClB,sBAAuBxJ,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMqJ,UAAY1I,GAC/EqO,WAAY/O,EAASgP,eACrB3G,MAAO,CACL,gBAAiB,SAElB,CACDlH,SAAS,QAAS,IAAM,EAAC,QAAa6H,EAAwB,CAC5D5F,MAAOzD,EAAK8B,GAAG,wBACfa,KAAM,aACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAa+E,EAAqB,CACzDxD,WAAY7C,EAAOoP,KAAKC,UACxB,sBAAuBtP,EAAO,KAAOA,EAAO,GAAKc,GAAUb,EAAOoP,KAAKC,UAAYxO,GACnFyO,SAAU,GACVnO,QAAShB,EAASoP,gBACjB,KAAM,EAAG,CAAC,aAAc,cAC3B1N,EAAG,GACF,EAAG,CAAC,WAAW,QAAasH,EAAwB,CACrD5F,MAAO,WACPd,KAAM,SACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAa+E,EAAqB,CACzDxD,WAAY7C,EAAOoP,KAAKI,MACxB,sBAAuBzP,EAAO,MAAQA,EAAO,IAAMc,GAAUb,EAAOoP,KAAKI,MAAQ3O,GACjFyO,SAAU,GACVnO,QAAShB,EAASoP,gBACjB,KAAM,EAAG,CAAC,aAAc,cAC3B1N,EAAG,KACD,QAAasH,EAAwB,CACvC5F,MAAO,OACPd,KAAM,WACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAa+E,EAAqB,CACzDxD,WAAY7C,EAAOoP,KAAKK,QACxB,sBAAuB1P,EAAO,MAAQA,EAAO,IAAMc,GAAUb,EAAOoP,KAAKK,QAAU5O,GACnFyO,SAAU,GACVnO,QAAShB,EAASoP,gBACjB,KAAM,EAAG,CAAC,aAAc,cAC3B1N,EAAG,KACD,QAAasH,EAAwB,CACvC5F,MAAO,SACPd,KAAM,SACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAa+E,EAAqB,CACzDxD,WAAY7C,EAAOoP,KAAKM,MACxB,sBAAuB3P,EAAO,MAAQA,EAAO,IAAMc,GAAUb,EAAOoP,KAAKM,MAAQ7O,GACjFyO,SAAU,GACVnO,QAAShB,EAASoP,gBACjB,KAAM,EAAG,CAAC,aAAc,cAC3B1N,EAAG,IACD7B,EAAOoL,MAAMuE,UAAUC,WAAY,WAAc,QAAazG,EAAwB,CACxF7J,IAAK,EACLiE,MAAO,aACPd,KAAM,QACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAa+E,EAAqB,CACzDxD,WAAY7C,EAAOoP,KAAKS,KACxB,sBAAuB9P,EAAO,MAAQA,EAAO,IAAMc,GAAUb,EAAOoP,KAAKS,KAAOhP,GAChFyO,SAAU,GACVnO,QAAShB,EAASoP,gBACjB,KAAM,EAAG,CAAC,aAAc,cAC3B1N,EAAG,MACC,QAAoB,IAAI,GAAO7B,EAAOoL,MAAMuE,UAAUG,aAAc,WAAc,QAAa3G,EAAwB,CAC3H7J,IAAK,EACLiE,MAAO,cACPd,KAAM,cACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAa+E,EAAqB,CACzDxD,WAAY7C,EAAOoP,KAAKU,WACxB,sBAAuB/P,EAAO,MAAQA,EAAO,IAAMc,GAAUb,EAAOoP,KAAKU,WAAajP,GACtFyO,SAAU,GACVnO,QAAShB,EAASoP,gBACjB,KAAM,EAAG,CAAC,aAAc,cAC3B1N,EAAG,MACC,QAAoB,IAAI,GAAO7B,EAAOoL,MAAMuE,UAAUI,eAAgB,WAAc,QAAa5G,EAAwB,CAC7H7J,IAAK,EACLiE,MAAO,aACPd,KAAM,gBACL,CACDnB,SAAS,QAAS,IAAM,EAAC,QAAa+E,EAAqB,CACzDxD,WAAY7C,EAAOoP,KAAKW,aACxB,sBAAuBhQ,EAAO,MAAQA,EAAO,IAAMc,GAAUb,EAAOoP,KAAKW,aAAelP,GACxFyO,SAAU,GACVnO,QAAShB,EAASoP,gBACjB,KAAM,EAAG,CAAC,aAAc,cAC3B1N,EAAG,MACC,QAAoB,IAAI,KAC9BA,EAAG,GACF,EAAG,CAAC,aAAc,gBAAgB,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,CAAC1B,EAAS6P,UAAW,WAAc,QAAoB,QAAS,CAClL1Q,IAAK,EACL2Q,IAAKjQ,EAAOkQ,SACZC,SAAU,GACVC,MAAO,GACPC,KAAM,GACNlR,MAAO,gBACPgC,QAASpB,EAAO,MAAQA,EAAO,IAAM,IAAI4C,IAASxC,EAASmQ,eAAiBnQ,EAASmQ,iBAAiB3N,KACrG,KAAM,EAAG,KAAexC,EAASoQ,UAAW,WAAc,QAAoB,QAAS,CACxFjR,IAAK,EACL2Q,IAAKjQ,EAAOkQ,SACZM,SAAU,GACVL,SAAU,GACVhR,MAAO,iBACN,KAAM,EAAG,KAAegB,EAASsQ,UAAW,WAAc,QAAanC,EAAqB,CAC7FhP,IAAK,EACL2Q,IAAKjQ,EAAOkQ,SACZ,mBAAoB,CAAClQ,EAAOkQ,UAC5B,sBAAsB,EACtBQ,IAAK,UACLC,KAAM,GACNxR,MAAO,iBACN,KAAM,EAAG,CAAC,MAAO,wBAAyB,WAAc,QAAaiB,EAA8B,CACpGd,IAAK,EACLkC,KAAM,OACNrC,MAAO,2BACA,QAAaqP,EAA4B,CAChDoC,OAAQ,GACRC,OAAQ1Q,EAAS2Q,YAChB,CACDxP,SAAS,QAAS,IAAM,EAAC,QAAaiN,EAAiC,CACrEhL,MAAOzD,EAAK8B,GAAG,6BACd,CACDN,SAAS,QAAS,IAAM,CAACpB,EAAMyO,YAAa,WAAc,QAAatI,EAAqB,CAC1F/G,IAAK,EACLuD,WAAY3C,EAAM6Q,SAASC,SAC3B,sBAAuBjR,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAM6Q,SAASC,SAAWnQ,GACvFa,KAAM,QACNqF,YAAajH,EAAK8B,GAAG,mCACpB,KAAM,EAAG,CAAC,aAAc,mBAAoB,WAAc,QAAoB,OAAQ,IAAY,QAAiB5B,EAAOoL,MAAMuE,UAAUqB,UAAYhR,EAAOoL,MAAM3I,MAAO,MAC7KZ,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0M,EAAiC,CAC9DhL,MAAOzD,EAAK8B,GAAG,wBACd,CACDN,SAAS,QAAS,IAAM,CAACpB,EAAMyO,YAAa,WAAc,QAAatI,EAAqB,CAC1F/G,IAAK,EACLuD,WAAY3C,EAAM6Q,SAASE,SAC3B,sBAAuBlR,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAM6Q,SAASE,SAAWpQ,GACvFa,KAAM,QACNqF,YAAajH,EAAK8B,GAAG,mCACpB,KAAM,EAAG,CAAC,aAAc,mBAAoB,WAAc,QAAoB,OAAQ,IAAY,QAAiB5B,EAAOoL,MAAMuE,UAAUsB,UAAYnR,EAAK8B,GAAG,uBAAwB,MACzLC,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0M,EAAiC,CAC9DhL,MAAOzD,EAAK8B,GAAG,6BACd,CACDN,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBnB,EAAS+Q,iBAAkB,KACtFrP,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0M,EAAiC,CAC9DhL,MAAOzD,EAAK8B,GAAG,+BACd,CACDN,SAAS,QAAS,IAAM,CAACnB,EAASgR,kBAAmB,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,MAAM,QAAiBnR,EAAOoL,MAAMuE,UAAUyB,OAAS,OAAQ,QAAiBpR,EAAOoL,MAAMuE,UAAU0B,QAAS,IAAI,QAAanI,EAAmB,CACzRxH,KAAM,QACND,KAAM,OACN+G,MAAO,CACL,QAAW,cACX,cAAe,SACf,kBAAmB,WAEpB,CACDlH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBnB,EAASmR,iBAAkB,KACtFzP,EAAG,SACI,WAAc,QAAoB,OAAQ,IAAY,QAAiB/B,EAAK8B,GAAG,4BAA6B,MACrHC,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0M,EAAiC,CAC9DhL,MAAOzD,EAAK8B,GAAG,+BACd,CACDN,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBnB,EAASoR,YAAa,KACjF1P,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0M,EAAiC,CAC9DhL,MAAOzD,EAAK8B,GAAG,kCACd,CACDN,SAAS,QAAS,IAAM,EAAC,QAAa4H,EAAmB,CACvDxH,KAAM,QACND,KAAM,OACN+G,MAAO,CACL,eAAgB,QAEjB,CACDlH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBtB,EAAOoL,MAAMuE,UAAU6B,SAAW1R,EAAK8B,GAAG,uBAAwB,KAC7HC,EAAG,KACD,QAAoB,OAAQ,MAAM,QAAiB7B,EAAOoL,MAAMuE,UAAU8B,aAAe,KAAM,KACnG5P,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0M,EAAiC,CAC9DhL,MAAOzD,EAAK8B,GAAG,qCACd,CACDN,SAAS,QAAS,IAAM,EAAC,QAAa4H,EAAmB,CACvDxH,KAAM,QACND,KAAMtB,EAASuR,cACflJ,MAAO,CACL,eAAgB,QAEjB,CACDlH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBnB,EAASwR,YAAa,KACjF9P,EAAG,GACF,EAAG,CAAC,UAAU,QAAoB,OAAQ,MAAM,QAAiB7B,EAAOoL,MAAMuE,UAAUiC,OAAS9R,EAAK8B,GAAG,sBAAuB,KACnIC,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0M,EAAiC,CAC9DhL,MAAOzD,EAAK8B,GAAG,wBACd,CACDN,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBtB,EAAOoL,MAAMuE,UAAUkC,UAAY/R,EAAK8B,GAAG,uBAAwB,KAC9HC,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0M,EAAiC,CAC9DhL,MAAOzD,EAAK8B,GAAG,kCACd,CACDN,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBtB,EAAOoL,MAAMuE,UAAUmC,eAAiBhS,EAAK8B,GAAG,uBAAwB,KACnIC,EAAG,GACF,EAAG,CAAC,WAAW,QAAa0M,EAAiC,CAC9DhL,MAAOzD,EAAK8B,GAAG,wBACd,CACDN,SAAS,QAAS,IAAM,CAACtB,EAAOoL,MAAMuE,UAAUoC,MAAQ/R,EAAOoL,MAAMuE,UAAUoC,KAAKxJ,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAa,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYvI,EAAOoL,MAAMuE,UAAUoC,KAAM5H,KACjP,WAAc,QAAajB,EAAmB,CACnD5J,IAAK6K,EACLzI,KAAM,SACL,CACDJ,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6I,GAAM,KACjEtI,EAAG,GACF,QACD,WAAY,WAAc,QAAoB,OAAQ,IAAa,QAAiB/B,EAAK8B,GAAG,sBAAuB,MACvHC,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,GACF,EAAG,CAAC,YAAY,QAAa0E,EAAsB,CACpD1D,WAAY3C,EAAM8R,iBAClB,sBAAuBjS,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAM8R,iBAAmBnR,GACtFmC,MAAOlD,EAAK8B,GAAG,0BACfb,MAAOZ,EAASmJ,YAChB,iBAAkB,IACjB,CACD1C,QAAQ,QAAS,IAAM,EAAC,QAAavG,EAAsB,CACzDc,QAASpB,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAAS8R,sBACvD,CACD3Q,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,4BAA6B,KAChGC,EAAG,KACD,QAAaxB,EAAsB,CACrCoB,KAAM,UACNN,QAASpB,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAAS+R,gBACxDxP,QAASxC,EAAMiS,aACf1H,UAAWvK,EAAMkS,iBAAiBC,OACjC,CACD/Q,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,6BAA8B,KACjGC,EAAG,GACF,EAAG,CAAC,UAAW,eAClBP,SAAS,QAAS,IAAM,EAAC,QAAaoN,EAAoB,CACxD4D,UAAU,QAAenS,EAAS+R,aAAc,CAAC,aAChD,CACD5Q,SAAS,QAAS,IAAM,EAAC,QAAamN,EAAyB,CAC7DlL,MAAOzD,EAAK8B,GAAG,0BACfL,MAAOrB,EAAMkS,iBAAiB7Q,OAC7B,CACDD,SAAS,QAAS,IAAM,EAAC,QAAa+E,EAAqB,CACzDxD,WAAY3C,EAAMqS,WAAWC,UAC7B,sBAAuBzS,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMqS,WAAWC,UAAY3R,GAC1FkG,YAAajH,EAAK8B,GAAG,gCACrBiI,QAAS1J,EAASsS,oBAClB1I,UAAW,IACV,KAAM,EAAG,CAAC,aAAc,cAAe,cAC1ClI,EAAG,GACF,EAAG,CAAC,QAAS,YAChBA,EAAG,GACF,EAAG,CAAC,eACPA,EAAG,GACF,EAAG,CAAC,aAAc,QAAS,YAC9BA,EAAG,GACF,EAAG,CAAC,QAAS,aAAc,SAChC,CCjcA,MAAM6Q,GAAgB,8CAQf,SAASC,GAAeH,EAAWI,GAExC,OAAKJ,GAAkC,KAArBA,EAAUpG,OAQxBoG,IAAcI,EACT,CACLP,OAAO,EACP9Q,MAAO,YAKPiR,EAAUnP,SAAS,MACd,CACLgP,OAAO,EACP9Q,MAAO,sBAKP,SAASsR,KAAKL,IAAc,QAAQK,KAAKL,GACpC,CACLH,OAAO,EACP9Q,MAAO,sBAKPmR,GAAcG,KAAKL,GACd,CACLH,OAAO,EACP9Q,MAAO,yBAKPiR,EAAUnP,SAAS,MACd,CACLgP,OAAO,EACP9Q,MAAO,gBAIJ,CAAE8Q,OAAO,GA9CP,CACLA,OAAO,EACP9Q,MAAO,UA6Cb,CClEA,QACEkB,KAAM,mBACNR,MAAO,CACLY,WAAY,CACVpB,KAAMiG,QACNpG,SAAS,GAEX8J,KAAM,CACJ3J,KAAMqR,OACNxR,QAAS,MAEX4O,SAAU,CACRzO,KAAMwB,OACN3B,QAAS,IAEX8N,KAAM,CACJ3N,KAAMqR,OACNxR,QAAS,KAAM,CACb+N,UAAW,GACXG,MAAO,GACPC,QAAS,GACTC,MAAO,GACPG,KAAM,GACNC,WAAY,GACZC,aAAc,OAIpBnI,MAAO,CAAC,oBAAqB,WAAY,gBAAiB,QAAS,QAAS,SAAU,kBAAmB,eACzG/D,MAAO,CACL,OAAAlD,CAAQmH,GACDA,IAEHlE,KAAK+K,WAAY,EACjB/K,KAAKoL,YAAa,EAEtB,GAEF,IAAAjN,GACE,MAAO,CACLwH,UAAW,YACXoF,WAAW,EACXoC,SAAU,CACRC,SAAU,GACVC,SAAU,IAEZjC,YAAY,EACZgD,kBAAkB,EAClBO,WAAY,CACVC,UAAW,IAEbJ,iBAAkB,CAChBC,OAAO,EACP9Q,MAAO,IAET4Q,cAAc,EAElB,EACAxO,SAAU,CACRhD,QAAS,CACP,GAAAyE,GACE,OAAOxB,KAAKf,UACd,EACA,GAAAgF,CAAIC,GACFlE,KAAK8B,MAAM,oBAAqBoC,EAClC,GAEF,WAAAwB,GACE,OAAO7F,OAAOC,WAAa,IAAM,MAAQ,OAC3C,EACA,UAAAoN,GACE,OAAOrN,OAAOC,WAAa,IAAM,EAAI,CACvC,EACA,OAAAsM,GAEE,MAAM+C,EAAWnP,KAAKwH,MAAMuE,UAAUsB,UAAU1E,eAAiB,GACjE,GAAIwG,EAAS1P,SAAS,SAAU,OAAO,EAEvC,MAAMZ,EAAOmB,KAAKwH,MAAM3I,MAAM8J,eAAiB,GAC/C,OAAO9J,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,OACnG,EACA,OAAAzC,GAEE,MAAMwC,EAAWnP,KAAKwH,MAAMuE,UAAUsB,UAAU1E,eAAiB,GACjE,GAAIwG,EAAS1P,SAAS,SAAU,OAAO,EAEvC,MAAMZ,EAAOmB,KAAKwH,MAAM3I,MAAM8J,eAAiB,GAC/C,OAAO9J,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,QAClG,EACA,OAAAvC,GAEE,MAAMsC,EAAWnP,KAAKwH,MAAMuE,UAAUsB,UAAU1E,eAAiB,GACjE,GAAIwG,EAAS1P,SAAS,SAAU,OAAO,EAEvC,MAAMZ,EAAOmB,KAAKwH,MAAM3I,MAAM8J,eAAiB,GAC/C,OAAO9J,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,QAC5P,EACA,UAAAzB,GACE,OAAI3N,KAAKwH,MAAMuE,UAAUsD,UAChB,IAAIC,KAAKtP,KAAKwH,KAAKuE,SAASsD,WAAWE,iBAEzCvP,KAAKhC,GAAG,qBACjB,EACA,UAAA+P,GACE,MAAMyB,EAAWxP,KAAKwH,MAAMuE,UAAU0D,SAChC9P,EAAQK,KAAKwH,MAAMuE,UAAUiC,MACnC,MAAiB,UAAbwB,EAA6BxP,KAAKhC,GAAG,oCACxB,UAAbwR,EAA6BxP,KAAKhC,GAAG,qCAC3B,UAAV2B,EAA0BK,KAAKhC,GAAG,kCAC/BgC,KAAKhC,GAAG,0BACjB,EACA,aAAA8P,GACE,MAAM0B,EAAWxP,KAAKwH,MAAMuE,UAAU0D,SAChC9P,EAAQK,KAAKwH,MAAMuE,UAAUiC,MACnC,MAAiB,UAAbwB,EAA6B,UAChB,UAAbA,GACU,UAAV7P,EAD6B,SAE1B,SACT,EACA,eAAA4N,GACE,MAAMpQ,EAAQ6C,KAAKwH,MAAMuE,UAAUyB,MAC7BkC,EAAS1P,KAAKwH,MAAMuE,UAAU0B,OACpC,SAAItQ,IAASuS,IACN,IACT,EACA,eAAAhC,GACE,MAAMvQ,EAAQ6C,KAAKwH,MAAMuE,UAAUyB,MAC7BkC,EAAS1P,KAAKwH,MAAMuE,UAAU0B,OACpC,IAAKtQ,IAAUuS,EAAQ,MAAO,GAC9B,MAAMC,EAAQxS,EAAQuS,EACtB,OAAIC,EAAQ,IAAY3P,KAAKhC,GAAG,mCAC5B2R,EAAQ,GAAY3P,KAAKhC,GAAG,kCACzBgC,KAAKhC,GAAG,+BACjB,EACA,eAAAsP,GACE,MAAMsC,EAAY5P,KAAKwH,MAAMuE,UAAU8D,cACjCC,EAAS9P,KAAKwH,MAAMuE,UAAUgE,SACpC,OAAIH,EAEEA,EAAY,KACP,GAAGA,MACDA,EAAY,QACd,IAAIA,EAAY,MAAMI,QAAQ,QAE9B,IAAIJ,EAAY,KAAO,MAAMI,QAAQ,QAErCF,EACF,GAAGA,OAEL9P,KAAKhC,GAAG,qBACjB,GAEFgD,QAAS,CACP,gBAAAiP,CAAiBC,GACf,MAAMC,EAAQD,EAAEE,OACZD,EAAME,OAAQF,EAAMG,OAAYH,EAAMI,OAC5C,EACA,cAAAhF,GAAkB,EAClB,cAAAI,CAAeuE,GACb,MAAMM,EAAQN,EAAEE,OAChBI,EAAMC,SACNC,UAAUC,UAAUC,UAAUJ,EAAMhR,OAAOiK,KAAK,KAC9C,MAAUL,QAAQpJ,KAAKhC,GAAG,2BAE9B,EACA,aAAA0O,GACM1M,KAAKsM,UACPzM,OAAOgR,KAAK7Q,KAAKsM,SAAU,SAE/B,EACA,SAAArB,GACEjL,KAAKmN,SAASC,SAAWpN,KAAKwH,MAAMuE,UAAUqB,UAAY,GAC1DpN,KAAKmN,SAASE,SAAWrN,KAAKwH,MAAMuE,UAAUsB,UAAY,GAC1DrN,KAAK+K,WAAY,CACnB,EACA,UAAAM,GACErL,KAAK+K,WAAY,EACjB/K,KAAKmN,SAASC,SAAWpN,KAAKwH,MAAMuE,UAAUqB,UAAY,GAC1DpN,KAAKmN,SAASE,SAAWrN,KAAKwH,MAAMuE,UAAUsB,UAAY,GAC1DrN,KAAKoL,YAAa,CACpB,EACA,kBAAMD,GACJnL,KAAKoL,YAAa,EAClB,IACE,MAAMd,EAAStK,KAAKwH,KAAK3I,KACnBoC,QAAiB,EAAAC,EAAA,GAAc,wBAAwBoJ,IAAU,CACrEnJ,OAAQ,QACR4H,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAU,CACnBkE,SAAUpN,KAAKmN,SAASC,SACxBC,SAAUrN,KAAKmN,SAASE,aAG5B,IAAIpM,EAASG,GAKN,CACL,MAAMzD,QAAcsD,EAASK,OAAOqI,MAAM,KAAM,CAAG,IACnD,MAAM,IAAIR,MAAMxL,EAAM8M,SAAWzK,KAAKhC,GAAG,iCAC3C,CARiB,CACf,MAAMG,QAAa8C,EAASK,OAC5B,MAAU8H,QAAQpJ,KAAKhC,GAAG,6BAC1BgC,KAAK+K,WAAY,EACjB/K,KAAK8B,MAAM,kBAAmBwI,EAAQnM,EAAK4N,SAC7C,CAIF,CAAE,MAAOpO,GACPiE,QAAQjE,MAAM,yBAA0BA,GACxC,MAAUA,MAAMA,EAAM8M,SAAWzK,KAAKhC,GAAG,iCAC3C,CAAE,QACAgC,KAAKoL,YAAa,CACpB,CACF,EACA,gBAAAF,GACElL,KAAK2O,WAAWC,UAAY5O,KAAKwH,MAAM3I,MAAQ,GAC/CmB,KAAKwO,iBAAmB,CACtBC,OAAO,EACP9Q,MAAO,IAETqC,KAAKoO,kBAAmB,CAC1B,EACA,iBAAAC,GACErO,KAAKoO,kBAAmB,EACxBpO,KAAK2O,WAAWC,UAAY,GAC5B5O,KAAKwO,iBAAmB,CACtBC,OAAO,EACP9Q,MAAO,GAEX,EACA,mBAAAkR,GACE,MAAMiC,EAAS/B,GAAe/O,KAAK2O,WAAWC,UAAW5O,KAAKwH,MAAM3I,MAAQ,IAC5EmB,KAAKwO,iBAAmB,CACtBC,MAAOqC,EAAOrC,MACd9Q,MAAOmT,EAAOnT,OAAS,GAE3B,EACA,kBAAM2Q,GACJ,IAAItO,KAAKuO,eAGTvO,KAAK6O,sBACA7O,KAAKwO,iBAAiBC,OAA3B,CAGAzO,KAAKuO,cAAe,EACpB,IACE,MAAMwC,EAAY/Q,KAAKwH,KAAK3I,KACtBoC,QAAiB,EAAAC,EAAA,GAAc,sBAAsB6P,IAAa,CACtE5P,OAAQ,OACR4H,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAU,CACnB0F,UAAW5O,KAAK2O,WAAWC,cAG/B,GAAI3N,EAASG,GAAI,CACf,MAAMjD,QAAa8C,EAASK,OAC5B,MAAU8H,QAAQpJ,KAAKhC,GAAG,6BAC1BgC,KAAKoO,kBAAmB,EACxBpO,KAAK8B,MAAM,cAAeiP,EAAW/Q,KAAK2O,WAAWC,UAAWzQ,EAAK4N,SACvE,KAAO,IAAwB,MAApB9K,EAASI,OAMb,CACL,MAAM1D,QAAcsD,EAASK,OAAOqI,MAAM,KAAM,CAAG,IACnD,MAAM,IAAIR,MAAMxL,EAAM8M,SAAWzK,KAAKhC,GAAG,2BAC3C,CAPEgC,KAAKwO,iBAAmB,CACtBC,OAAO,EACP9Q,MAAOqC,KAAKhC,GAAG,6BAKnB,CACF,CAAE,MAAOL,GACPiE,QAAQjE,MAAM,uBAAwBA,GACtC,MAAUA,MAAMA,EAAM8M,SAAWzK,KAAKhC,GAAG,2BAC3C,CAAE,QACAgC,KAAKuO,cAAe,CACtB,CAjCA,CAkCF,IC/QJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,mBCRA,MAAM,GAAa,CACjB7S,IAAK,EACLH,MAAO,sBAEH,GAAa,CACjBA,MAAO,2BAEH,GAAa,CACjBA,MAAO,yBAEH,GAAa,CACjBA,MAAO,0BAEF,SAAS,GAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDC,EAAuB,KACvBuU,EAAwB,MAC9B,OAAO,WAAc,QAAa,KAAa,CAC7CnS,KAAM,iBACL,CACDnB,SAAS,QAAS,IAAM,CAACtB,EAAO6U,cAAgB,IAAK,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAaD,EAAuB,CAC7InK,SAAUtK,EAAS2U,eACnBC,QAASjV,EAAK8B,GAAG,4BACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAajB,EAAsB,CAC1DlB,MAAO,2BACP,aAAcW,EAAK8B,GAAG,4BACtBT,QAAShB,EAAS6U,aACjB,CACD1T,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,QACNrC,MAAO,0BAET0C,EAAG,GACF,EAAG,CAAC,aAAc,cACrBA,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAa+S,EAAuB,CAClEnK,SAAUtK,EAAS2U,eACnBC,QAAS,GAAG/U,EAAO6U,iBAAiB/U,EAAK8B,GAAG,6BAC5Cd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,IAAY,QAAiBtB,EAAO6U,eAAgB,OACjJhT,EAAG,GACF,EAAG,CAAC,WAAY,YAAa9B,EAAO,KAAOA,EAAO,IAAK,QAAoB,OAAQ,CACpFZ,MAAO,yBACN,MAAO,KAAK,QAAoB,MAAO,GAAY,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYe,EAAM+U,QAAShM,KACjI,WAAc,QAAa2L,EAAuB,CACvDtV,IAAK2J,EAAOiM,QACZzK,SAAUtK,EAAS2U,eACnBC,QAASjV,EAAK8B,GAAGqH,EAAO1F,OACxBzC,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAajB,EAAsB,CAC1DlB,OAAO,QAAgB,CAAC,qBAAsB8J,EAAOkM,YACrD,aAAcrV,EAAK8B,GAAGqH,EAAO1F,OAC7BpC,QAASN,GAAUV,EAAS6I,aAAaC,EAAOiM,UAC/C,CACD5T,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAMyH,EAAOzH,KACbrC,MAAO,uBACN,KAAM,EAAG,CAAC,WACb0C,EAAG,GACF,KAAM,CAAC,QAAS,aAAc,cACjCA,EAAG,GACF,KAAM,CAAC,WAAY,cACpB,YAAa,QAAoB,IAAI,KACzCA,EAAG,GAEP,CCtEA,QACEY,KAAM,iBACNR,MAAO,CACL4S,cAAe,CACbpT,KAAM2T,OACNnK,UAAU,IAGdrD,MAAO,CAAC,SAAU,SAClB,IAAA7F,GACE,MAAO,CACLkT,QAAS,CAAC,CACRC,QAAS,OACT3R,MAAO,iBACP/B,KAAM,OACN2T,UAAW,QACV,CACDD,QAAS,WACT3R,MAAO,qBACP/B,KAAM,WACN2T,UAAW,YACV,CACDD,QAAS,OACT3R,MAAO,iBACP/B,KAAM,cACN2T,UAAW,QACV,CACDD,QAAS,gBACT3R,MAAO,0BACP/B,KAAM,OACN2T,UAAW,OACV,CACDD,QAAS,MACT3R,MAAO,2BACP/B,KAAM,MACN2T,UAAW,OACV,CACDD,QAAS,QACT3R,MAAO,2BACP/B,KAAM,aACN2T,UAAW,SACV,CACDD,QAAS,SACT3R,MAAO,mBACP/B,KAAM,YACN2T,UAAW,WAGjB,EACAxR,SAAU,CACR,cAAAmR,GACE,OAAOrR,OAAOC,WAAa,GAC7B,GAEFkB,QAAS,CACP,YAAAoE,CAAakM,GACXtR,KAAK8B,MAAM,SAAUwP,EACvB,EACA,WAAAF,GACEpR,KAAK8B,MAAM,QACb,ICrDJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,2CCRA,MAAM,GAAa,CAAC,gBACb,SAAS,GAAO5F,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACvD,OAAO,WAAc,QAAoB,OAAQ,CAC/CjB,OAAO,QAAgB,CAAC,qBAAsB,CAAC,uBAAuBa,EAAOqV,UAAW,CACtF,QAAWrV,EAAOsV,QAClB,cAAiBtV,EAAOuV,gBAAkBvV,EAAOsV,YAEnDE,KAAM,WACN,eAAgBrV,EAASsV,YACzBC,SAAU,IACVvU,QAASpB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAASwV,aAAexV,EAASwV,eAAehT,IAChGiT,UAAW,CAAC7V,EAAO,KAAOA,EAAO,IAAK,SAAU,QAAe,IAAI4C,IAASxC,EAASwV,aAAexV,EAASwV,eAAehT,GAAO,CAAC,YAAa,CAAC,WAAY5C,EAAO,KAAOA,EAAO,IAAK,SAAU,QAAe,IAAI4C,IAASxC,EAASwV,aAAexV,EAASwV,eAAehT,GAAO,CAAC,YAAa,CAAC,aACnS,CAAC3C,EAAOsV,UAAW,WAAc,QAAalV,EAA8B,CAC7Ed,IAAK,EACLkC,KAAM,QACNrC,MAAO,6BACHa,EAAOuV,gBAAiB,WAAc,QAAanV,EAA8B,CACrFd,IAAK,EACLkC,KAAM,QACNrC,MAAO,8BACH,QAAoB,IAAI,IAAQ,GAAI,GAC5C,CCvBA,QACEsD,KAAM,oBACNR,MAAO,CACLqT,QAAS,CACP7T,KAAMiG,QACNpG,SAAS,GAEXiU,cAAe,CACb9T,KAAMiG,QACNpG,SAAS,GAEX+T,QAAS,CACP5T,KAAMwB,OACN3B,QAAS,OACT6B,UAAWC,GAAS,CAAC,OAAQ,cAAcC,SAASD,KAGxDwE,MAAO,CAAC,SACRjE,SAAU,CACR,WAAA8R,GACE,OAAI7R,KAAK0R,QAAgB,OACrB1R,KAAK2R,cAAsB,QACxB,OACT,GAEF3Q,QAAS,CACP,WAAA+Q,CAAYE,GACVjS,KAAK8B,MAAM,QAASmQ,EACtB,ICrBJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,UCRA,MAAM,GAAa,CACjB1W,MAAO,8BAEH,GAAa,CAAC,OACd,GAAa,CAAC,OACd,GAAa,CAAC,SACd,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,gBAEH,GAAa,CACjBA,MAAO,0BAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,cAEH,GAAa,CACjBA,MAAO,6BAEH,GAAc,CAClBA,MAAO,kCAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,oBAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,cAEH,GAAc,CAClBA,MAAO,6BAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,eAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,cAEH,GAAc,CAClBA,MAAO,0BAEH,GAAc,CAClBA,MAAO,0BAEH,GAAc,CAClBA,MAAO,6BAEF,SAAS,GAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAM2V,EAA+B,GAC/B1V,GAA+B,QAAkB,qBACjDwU,EAAwB,MAC9B,OAAO,WAAc,QAAoB,MAAO,CAC9CzV,MAAO,YACP4W,aAAchW,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,aAAc7E,IAC3EmV,WAAYjW,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,WAAY7E,IACvEoV,YAAalW,EAAO,MAAQA,EAAO,IAAMc,GAAUf,EAAK4F,MAAM,YAAa7E,KAC1E,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAaiV,EAA8B,CACrFR,QAASpV,EAAMgW,cACf/U,SAAS,QAAehB,EAASgW,aAAc,CAAC,UAC/C,KAAM,EAAG,CAAC,UAAW,eAAe,QAAoB,MAAO,CAChEhX,MAAO,4BACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAASiW,oBAAsBjW,EAASiW,sBAAsBzT,KAC7G,CAACxC,EAAS4I,WAAY,WAAc,QAAa3I,EAA8B,CAChFd,IAAK,EACLkC,KAAM,cACNrC,MAAO,sBACHgB,EAAS6P,UAAW,WAAc,QAAoB,QAAS,CACnE1Q,IAAK,EACL2Q,IAAKjQ,EAAOkQ,SACZ/Q,MAAO,mBACPiR,MAAO,GACPiG,QAAS,YACR,KAAM,EAAG,KAAelW,EAASsQ,UAAW,WAAc,QAAoB,MAAO,CACtFnR,IAAK,EACL2Q,IAAKjQ,EAAOkQ,SACZ/Q,MAAO,mBACPuD,QAAS,OACT4T,SAAU,SACT,KAAM,EAAG,OAAgB,WAAc,QAAalW,EAA8B,CACnFd,IAAK,EACLkC,KAAM,OACNrC,MAAO,uBACF,QAAoB,MAAO,CAChCA,MAAO,yBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAASiW,oBAAsBjW,EAASiW,sBAAsBzT,KAC7G,EAAC,QAAoB,OAAQ,CAC9BxD,MAAO,oBACP6D,MAAO7C,EAASoW,aACf,EAAC,QAAoB,OAAQ,IAAY,QAAiBpW,EAASqW,eAAgB,IAAI,QAAoB,OAAQ,IAAY,QAAiBrW,EAASsW,aAAc,IAAK,EAAG,OAAe,QAAoB,MAAO,GAAY,EAAEtW,EAAS4I,UAAY/I,EAAO0W,KAAK/G,UAAUoC,MAAQ/R,EAAO0W,KAAK/G,SAASoC,KAAKxJ,OAAS,IAAK,WAAc,QAAoB,KAAW,CAChXjJ,IAAK,GACJ,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYU,EAAO0W,KAAK/G,SAASoC,KAAKrJ,MAAM,EAAG,GAAI,CAACyB,EAAKwM,MAC5G,WAAc,QAAoB,OAAQ,CAC/CrX,IAAKqX,EACLxX,MAAO,YACPqJ,OAAO,QAAgB,CACrBoO,WAAYzW,EAAS0W,YAAYF,OAElC,QAAiBxM,GAAM,KACxB,MAAOnK,EAAO0W,KAAK/G,SAASoC,KAAKxJ,OAAS,IAAK,WAAc,QAAoB,OAAQ,CAC3FjJ,IAAK,EACLH,MAAO,2BACPqJ,OAAO,QAAgB,CACrBoO,WAAYzW,EAAS0W,YAAY,MAElC,KAAM,QAAiB7W,EAAO0W,KAAK/G,SAASoC,KAAKxJ,OAAS,GAAI,KAAM,QAAoB,IAAI,IAAQ,OAAQ,WAAc,QAAoB,OAAQ,GAAY,SAAS,QAAoB,MAAO,IAAY,QAAiBpI,EAAS4I,SAAW,IAAM/I,EAAO0W,KAAK/G,UAAU6B,SAAWxR,EAAO0W,KAAKI,YAAc,KAAM,IAAI,QAAoB,MAAO,GAAa,EAAE3W,EAAS4I,UAAY/I,EAAO0W,KAAK/G,UAAU8B,cAAe,WAAc,QAAoB,MAAO,IAAa,QAAiBzR,EAAO0W,KAAK/G,SAAS8B,aAAc,MAAO,WAAc,QAAoB,OAAQ,GAAa,SAAS,QAAoB,MAAO,GAAa,EAAEtR,EAAS4I,UAAY/I,EAAO0W,KAAK/G,UAAUkC,WAAY,WAAc,QAAoB,MAAO,IAAa,QAAiB7R,EAAO0W,KAAK/G,SAASkC,UAAW,MAAO,WAAc,QAAoB,OAAQ,GAAa,SAAS,QAAoB,MAAO,IAAa,QAAiB1R,EAAS4I,SAAW,IAAM5I,EAAS+Q,iBAAkB,IAAI,QAAoB,MAAO,IAAa,QAAiB/Q,EAAS4W,YAAa,IAAI,QAAoB,MAAO,GAAa,CAAE5W,EAAS4I,WAmCpkC,WAAc,QAAoB,KAAW,CACxEzJ,IAAK,GACJ,EAAC,QAAasV,EAAuB,CACtCG,QAASjV,EAAK8B,GAAG,sBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,kBACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAec,GAAUf,EAAK4F,MAAM,cAAe,CAAC,WACtF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,aAERK,EAAG,GACF,EAAG,CAAC,aAAa,QAAa+S,EAAuB,CACtDG,QAASjV,EAAK8B,GAAG,sBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,kBACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAec,GAAUf,EAAK4F,MAAM,QAAS,CAAC,WAChF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,oBAERK,EAAG,GACF,EAAG,CAAC,aAAc,OA3DwlC,WAAc,QAAoB,KAAW,CACxpCvC,IAAK,GACJ,EAAC,QAAasV,EAAuB,CACtCG,QAASjV,EAAK8B,GAAG,sBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,kBACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAec,GAAUf,EAAK4F,MAAM,QAAS,CAAC,WAChF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,aAERK,EAAG,GACF,EAAG,CAAC,aAAa,QAAa+S,EAAuB,CACtDG,QAASjV,EAAK8B,GAAG,0BACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,kBACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAec,GAAUf,EAAK4F,MAAM,YAAa,CAAC,WACpF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,iBAERK,EAAG,GACF,EAAG,CAAC,aAAa,QAAa+S,EAAuB,CACtDG,QAASjV,EAAK8B,GAAG,sBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,kBACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAec,GAAUf,EAAK4F,MAAM,QAAS,CAAC,WAChF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,oBAERK,EAAG,GACF,EAAG,CAAC,aAAc,MAwBM,QAAa+S,EAAuB,CAC7DG,QAASjV,EAAK8B,GAAG,oBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,qCACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAec,GAAUf,EAAK4F,MAAM,UAAW,CAAC,WAClF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,kBAERK,EAAG,GACF,EAAG,CAAC,eAAgB,GACzB,CCnLA,QACEY,KAAM,eACN+E,WAAY,CACVwP,kBAAiB,IAEnB/U,MAAO,CACLyU,KAAM,CACJjV,KAAMqR,OACN7H,UAAU,GAEZgM,SAAU,CACRxV,KAAMiG,QACNpG,SAAS,GAEX4O,SAAU,CACRzO,KAAMwB,OACN3B,QAAS,KAGbsG,MAAO,CAAC,kBAAmB,QAAS,SAAU,OAAQ,aAAc,OAAQ,SAAU,WAAY,aAAc,WAAY,aAC5H,IAAA7F,GACE,MAAO,CACLmU,cAAetS,KAAKqT,SACpBC,UAAW,CAAC,UAAW,UAAW,UAAW,WAEjD,EACAvT,SAAU,CACR,QAAAoF,GAEE,OAAOnF,KAAK8S,KAAK3N,UAAYnF,KAAK8S,KAAKjU,MAAMuQ,SAAS,IACxD,EACA,OAAAhD,GACE,MAAMvN,EAAOmB,KAAK8S,KAAKjU,MAAM8J,eAAiB,GAC9C,OAAO9J,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,OACnG,EACA,OAAAvC,GACE,MAAMhO,EAAOmB,KAAK8S,KAAKjU,MAAM8J,eAAiB,GAC9C,OAAO9J,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,OAC/K,EACA,WAAAuD,GACE,GAAI3S,KAAKmF,SAAU,CACjB,MAAMoO,EAAQvT,KAAK8S,KAAKjU,KAAKoG,MAAM,KAAKC,OAAOpB,SAC/C,OAAOyP,EAAMA,EAAM5O,OAAS,IAAM3E,KAAK8S,KAAKjU,IAC9C,CACA,OAAOmB,KAAK8S,KAAK/G,UAAUqB,UAAYpN,KAAKwT,YAAYxT,KAAK8S,KAAKjU,KACpE,EACA,aAAA+T,GACE,MAAM/T,EAAOmB,KAAK2S,YAClB,OAAI9T,EAAK8F,QAAU,GAAW9F,EACvBA,EAAKiG,MAAM,GAAI,EACxB,EACA,WAAA+N,GACE,MAAMhU,EAAOmB,KAAK2S,YAClB,OAAI9T,EAAK8F,QAAU,GAAW,GACvB9F,EAAKiG,OAAO,EACrB,EACA,UAAAqO,GACE,OAAInT,KAAK8S,KAAKW,SACL,IAAInE,KAAKtP,KAAK8S,KAAKW,UAAUC,qBAElC1T,KAAK8S,KAAK/G,UAAUsD,UACf,IAAIC,KAAKtP,KAAK8S,KAAK/G,SAASsD,WAAWqE,qBAEzC,GACT,EACA,eAAApG,GACE,MAAMsC,EAAY5P,KAAK8S,KAAK/G,UAAU8D,cAChCC,EAAS9P,KAAK8S,KAAK/G,UAAUgE,SACnC,OAAIH,EACEA,EAAY,KACP,GAAGA,MACDA,EAAY,QACd,IAAIA,EAAY,MAAMI,QAAQ,QAE9B,IAAIJ,EAAY,KAAO,MAAMI,QAAQ,QAErCF,EACF,GAAGA,OAEL,GACT,GAEF7P,MAAO,CACL,QAAAoT,CAASnP,GACPlE,KAAKsS,cAAgBpO,CACvB,GAEFlD,QAAS,CACP,YAAAuR,GACEvS,KAAKsS,eAAiBtS,KAAKsS,cAC3BtS,KAAK8B,MAAM,kBAAmB9B,KAAKsS,cACrC,EACA,kBAAAE,GACMxS,KAAKmF,SACPnF,KAAK8B,MAAM,SAEX9B,KAAK8B,MAAM,SAEf,EACA,WAAA0R,CAAY3U,GACV,MAAM0U,GAAS1U,GAAQ,IAAIoG,MAAM,KACjC,OAAOsO,EAAMA,EAAM5O,OAAS,EAC9B,EACA,WAAAsO,CAAYvO,GACV,OAAO1E,KAAKsT,UAAU5O,EAAQ1E,KAAKsT,UAAU3O,OAC/C,ICrGJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,4CCRA,MAAM,GAAa,CACjBpJ,MAAO,mBAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,eAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,YAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,eAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,eAEH,GAAa,CACjBG,IAAK,EACLkJ,MAAO,CACL,cAAe,QAGb,GAAa,CACjBlJ,IAAK,EACLH,MAAO,oBAEH,GAAa,CACjBA,MAAO,cAEH,GAAa,CAAC,OACd,GAAc,CAClBA,MAAO,cAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,gBAEH,GAAc,CAClBA,MAAO,uBAEH,GAAc,CAClBA,MAAO,iBAEH,GAAc,CAClBA,MAAO,aAEH,GAAc,CAClBA,MAAO,cAEH,GAAc,CAClBA,MAAO,mBAEH,GAAc,CAClBA,MAAO,oBAEF,SAAS,GAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMoX,EAAyB,MACzBnX,GAA+B,QAAkB,qBACjDkO,EAAsB,MACtBsG,EAAwB,MACxB4C,EAAqB,MAC3B,OAAO,WAAc,QAAaA,EAAoB,CACpDrY,MAAO,WACP4W,aAAchW,EAAO,MAAQA,EAAO,IAAMc,GAAUf,EAAK4F,MAAM,aAAc7E,IAC7EmV,WAAYjW,EAAO,MAAQA,EAAO,IAAMc,GAAUf,EAAK4F,MAAM,WAAY7E,IACzEoV,YAAalW,EAAO,MAAQA,EAAO,IAAMc,GAAUf,EAAK4F,MAAM,YAAa7E,KAC1E,CACDS,SAAS,QAAS,IAAM,EAAC,QAAaiW,EAAwB,CAC5D1U,WAAY3C,EAAMgW,cAClB,sBAAuBnW,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMgW,cAAgBrV,GACjF4W,SAAU1X,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,kBAAmBxF,EAAMgW,iBACjF,KAAM,EAAG,CAAC,gBAAgB,QAAoB,MAAO,GAAY,CAAoC,UAAnClW,EAAO0W,KAAK/G,UAAU0D,WAAwB,WAAc,QAAoB,MAAO,IAAY,QAAiBlT,EAAS2W,YAAa,IAAyC,UAAnC9W,EAAO0W,KAAK/G,UAAU0D,UAAwD,UAAhCrT,EAAO0W,KAAK/G,UAAUiC,QAAqB,WAAc,QAAoB,MAAO,IAAY,QAAiBzR,EAAS2W,YAAa,MAAO,WAAc,QAAoB,MAAO,IAAY,QAAiB3W,EAAS2W,YAAa,IAAK9W,EAAO0W,KAAK/G,UAAUoC,MAAQ/R,EAAO0W,KAAK/G,UAAUoC,KAAKxJ,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAanI,EAA8B,CACxpBoB,KAAM,MACNgH,MAAO,CACL,eAAgB,MAChB,YAAa,WAEb,QAAiB,KAAM,QAAiBxI,EAAO0W,KAAK/G,SAASoC,KAAK,IAAM,IAAK,GAAI/R,EAAO0W,KAAK/G,SAASoC,KAAKxJ,OAAS,IAAK,WAAc,QAAoB,OAAQ,GAAY,OAAQ,QAAiBvI,EAAO0W,KAAK/G,SAASoC,KAAKxJ,OAAS,GAAK,KAAM,KAAM,QAAoB,IAAI,OAAW,QAAoB,IAAI,KAASpI,EAAS6P,UAAW,WAAc,QAAoB,KAAW,CACnY1Q,IAAK,GACJ,CAACY,EAAMwX,eAAgB,WAAc,QAAoB,MAAO,KAAexX,EAAMyX,aAAc,WAAc,QAAoB,MAAO,CAC7IrY,IAAK,EACLH,MAAO,gBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,YACvD,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,uBACNrC,MAAO,gBACL,QAAoB,OAAQ,IAAY,QAAiBW,EAAK8B,GAAG,yBAA0B,OAAQ,QAAoB,IAAI,IAAO,SAAgB,QAAoB,QAAS,CACjLqO,IAAKjQ,EAAOkQ,SACZE,MAAO,GACPC,KAAM,GACNgG,QAAS,WACTlX,MAAO,gBACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAAS0T,kBAAoB1T,EAAS0T,oBAAoBlR,IAC1GiV,aAAc7X,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS0X,iBAAiBhX,GAAQ,IACpFiX,aAAc/X,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS0X,iBAAiBhX,GAAQ,IACpFkX,mBAAoBhY,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAAS6X,wBAA0B7X,EAAS6X,0BAA0BrV,IACjIsV,yBAA0BlY,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAAS6X,wBAA0B7X,EAAS6X,0BAA0BrV,IACvIuV,aAAcnY,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMwX,cAAe,GACvES,QAASpY,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAASiY,kBAAoBjY,EAASiY,oBAAoBzV,KACzG,KAAM,GAAI,IAAa,CAAC,CAAC,MAASzC,EAAMwX,eAAiBxX,EAAMyX,eAAgB,KAAOxX,EAASoQ,UAAW,WAAc,QAAoB,MAAO,CACpJjR,IAAK,EACLH,MAAO,kCACPgC,QAASpB,EAAO,MAAQA,EAAO,IAAMc,GAAUf,EAAK4F,MAAM,YACzD,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,QACNrC,MAAO,4BACDgB,EAASsQ,UAAW,WAAc,QAAanC,EAAqB,CAC1EhP,IAAK,EACL,sBAAsB,EACtB2Q,IAAKjQ,EAAOkQ,SACZ,mBAAoBlQ,EAAOqY,eAC3B3H,IAAK,QACLC,KAAM,GACN2F,SAAU,QACVnX,MAAO,iBACN,CACD4H,aAAa,QAAS,IAAM,IAAKhH,EAAO,MAAQA,EAAO,IAAM,EAAC,QAAoB,MAAO,CACvFZ,MAAO,oBACN,MAAO,OACVoC,OAAO,QAAS,IAAM,EAAC,QAAoB,MAAO,CAChDpC,MAAO,gBACPgC,QAASpB,EAAO,MAAQA,EAAO,KAAM,QAAec,GAAUf,EAAK4F,MAAM,UAAW,CAAC,WACpF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,QACNrC,MAAO,gBACL,QAAoB,OAAQ,IAAa,QAAiBW,EAAK8B,GAAG,yBAA0B,OAChGC,EAAG,GACF,EAAG,CAAC,MAAO,wBAAyB,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAazB,EAA8B,CACvIoB,KAAM,OACNrC,MAAO,kBACF,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,OAAQ,IAAa,QAAiBgB,EAASoW,aAAc,MAAM,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAa3B,EAAuB,CACpSnK,SAAUzK,EAAO8U,eACjBC,QAASjV,EAAK8B,GAAG,oBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,aACPgC,QAASpB,EAAO,MAAQA,EAAO,KAAM,QAAec,GAAUf,EAAK4F,MAAM,UAAW,CAAC,WACpF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,oBAERK,EAAG,GACF,EAAG,CAAC,WAAY,eAAe,QAAoB,MAAO,GAAa,EAAC,QAAa+S,EAAuB,CAC7GnK,SAAUzK,EAAO8U,eACjBC,QAASjV,EAAK8B,GAAG,sBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,aACPgC,QAASpB,EAAO,MAAQA,EAAO,KAAM,QAAec,GAAUf,EAAK4F,MAAM,QAAS,CAAC,WAClF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,oBAERK,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAa+S,EAAuB,CAClEnK,SAAUzK,EAAO8U,eACjBC,QAASjV,EAAK8B,GAAG,oBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,+BACPgC,QAASpB,EAAO,MAAQA,EAAO,KAAM,QAAec,GAAUf,EAAK4F,MAAM,UAAW,CAAC,WACpF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,kBAERK,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAa+S,EAAuB,CAClEnK,SAAUzK,EAAO8U,eACjBC,QAASjV,EAAK8B,GAAG,0BACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,aACPgC,QAASpB,EAAO,MAAQA,EAAO,KAAM,QAAec,GAAUf,EAAK4F,MAAM,YAAa,CAAC,WACtF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,iBAERK,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAa+S,EAAuB,CAClEnK,SAAUzK,EAAO8U,eACjBC,QAASjV,EAAK8B,GAAG,sBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,aACPgC,QAASpB,EAAO,MAAQA,EAAO,KAAM,QAAec,GAAUf,EAAK4F,MAAM,QAAS,CAAC,WAClF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,aAERK,EAAG,GACF,EAAG,CAAC,WAAY,oBACnBA,EAAG,GAEP,CCrMA,QACEY,KAAM,WACNR,MAAO,CACLyU,KAAM,CACJjV,KAAMqR,OACN7H,UAAU,GAEZgM,SAAU,CACRxV,KAAMiG,QACNpG,SAAS,GAEX4O,SAAU,CACRzO,KAAMwB,OACNgI,UAAU,GAEZoN,eAAgB,CACd5W,KAAMuJ,MACN1J,QAAS,IAAM,IAEjBwT,eAAgB,CACdrT,KAAMiG,QACNpG,SAAS,IAGbsG,MAAO,CAAC,kBAAmB,SAAU,OAAQ,OAAQ,SAAU,WAAY,aAAc,WAAY,aACrG,IAAA7F,GACE,MAAO,CACLmU,cAAetS,KAAKqT,SACpBS,cAAc,EACdC,YAAY,EAEhB,EACAhU,SAAU,CACR,UAAAmT,GACE,OAAOlT,KAAK8S,KAAKI,YAAc,EACjC,EACA,OAAA9G,GAEE,MAAM+C,EAAWnP,KAAK8S,KAAK/G,UAAUsB,UAAU1E,eAAiB,GAChE,GAAIwG,EAAS1P,SAAS,SAAU,OAAO,EAEvC,MAAMZ,EAAOmB,KAAK8S,KAAKjU,MAAM8J,eAAiB,GAC9C,OAAO9J,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,OACnG,EACA,OAAAzC,GAEE,MAAMwC,EAAWnP,KAAK8S,KAAK/G,UAAUsB,UAAU1E,eAAiB,GAChE,GAAIwG,EAAS1P,SAAS,SAAU,OAAO,EAEvC,MAAMZ,EAAOmB,KAAK8S,KAAKjU,MAAM8J,eAAiB,GAC9C,OAAO9J,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,QAClG,EACA,OAAAvC,GAEE,MAAMsC,EAAWnP,KAAK8S,KAAK/G,UAAUsB,UAAU1E,eAAiB,GAChE,GAAIwG,EAAS1P,SAAS,SAAU,OAAO,EAEvC,MAAMZ,EAAOmB,KAAK8S,KAAKjU,MAAM8J,eAAiB,GAC9C,OAAO9J,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,SAAWvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,UAAYvQ,EAAKuQ,SAAS,QAC5P,EACA,WAAAuD,GACE,MAAM+B,EAAW1U,KAAK8S,KAAK/G,UAAUqB,UAAYpN,KAAK8S,KAAKjU,MAAQ,GAC7D0U,EAAQmB,EAASzP,MAAM,KAC7B,OAAOsO,EAAMA,EAAM5O,OAAS,EAC9B,GAEF1E,MAAO,CACL,QAAAoT,CAASnP,GACPlE,KAAKsS,cAAgBpO,CACvB,EACA,QAAAoI,GAEEtM,KAAK8T,cAAe,EACpB9T,KAAK+T,YAAa,CACpB,GAEF/S,QAAS,CACP,gBAAAwT,GACExU,KAAK8T,cAAe,EACpB9T,KAAK+T,YAAa,CACpB,EACA,gBAAA9D,CAAiBC,GACf,MAAMC,EAAQD,EAAEE,OACZD,EAAMwE,kBACRxE,EAAMwE,oBACGxE,EAAMyE,wBACfzE,EAAMyE,0BACGzE,EAAM0E,qBACf1E,EAAM0E,uBACG1E,EAAM2E,qBACf3E,EAAM2E,qBAEV,EACA,sBAAAV,CAAuBlE,GACrB,MAAMC,EAAQD,EAAEE,OACV2E,EAAeC,SAASC,mBAAqBD,SAASE,yBAA2BF,SAASG,sBAAwBH,SAASI,oBAC7HL,GAEF5E,EAAM3D,OAAQ,EACd2D,EAAM1D,MAAO,IAGb0D,EAAM3D,OAAQ,EACd2D,EAAM1D,MAAO,EACb0D,EAAMI,QACNJ,EAAMkF,YAAc,EAExB,EACA,gBAAApB,CAAiB/D,EAAGoF,GAClB,MAAMnF,EAAQD,EAAEE,OACZkF,EACFnF,EAAMG,OAAO3G,MAAM,SAEnBwG,EAAMI,QACNJ,EAAMkF,YAAc,EAExB,IC7GJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,UCRA,MAAM,GAAa,CACjB9Z,MAAO,uBAEH,GAAa,CACjBA,MAAO,iBAEH,GAAa,CACjBA,MAAO,aAEH,GAAa,CACjBG,IAAK,EACLH,MAAO,cAEH,GAAa,CACjBA,MAAO,oBAEF,SAAS,GAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMoX,EAAyB,MACzBnX,GAA+B,QAAkB,qBACjDwU,EAAwB,MACxB4C,EAAqB,MAC3B,OAAO,WAAc,QAAaA,EAAoB,CACpDrY,MAAO,uBACP4W,aAAchW,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,aAAc7E,IAC3EmV,WAAYjW,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,WAAY7E,IACvEoV,YAAalW,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,YAAa7E,KACxE,CACDS,SAAS,QAAS,IAAM,EAAC,QAAaiW,EAAwB,CAC5D1U,WAAY3C,EAAMgW,cAClB,sBAAuBnW,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMgW,cAAgBrV,GACjF4W,SAAU1X,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,kBAAmBxF,EAAMgW,iBACjF,KAAM,EAAG,CAAC,gBAAgB,QAAoB,MAAO,CACtD/W,MAAO,cACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUf,EAAK4F,MAAM,WACvD,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,cACNrC,MAAO,uBACH,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,OAAQ,IAAY,QAAiBgB,EAASgZ,YAAa,KAAMnZ,EAAOoZ,cAAe,WAAc,QAAoB,MAAO,GAAY,CAACrZ,EAAO,KAAOA,EAAO,IAAK,QAAoB,MAAO,CAC1SZ,MAAO,mBACN,MAAO,KAAK,QAAoB,MAAO,GAAY,EAAC,QAAayV,EAAuB,CACzFnK,SAAUzK,EAAO8U,eACjBC,QAASjV,EAAK8B,GAAG,sBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,aACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAec,GAAUf,EAAK4F,MAAM,QAAS,CAAC,WAChF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,aAERK,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAa+S,EAAuB,CAClEnK,SAAUzK,EAAO8U,eACjBC,QAASjV,EAAK8B,GAAG,sBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,aACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAec,GAAUf,EAAK4F,MAAM,QAAS,CAAC,WAChF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,oBAERK,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAa+S,EAAuB,CAClEnK,SAAUzK,EAAO8U,eACjBC,QAASjV,EAAK8B,GAAG,oBACjBd,UAAW,OACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,SAAU,CACrDnC,MAAO,+BACPgC,QAASpB,EAAO,KAAOA,EAAO,IAAK,QAAec,GAAUf,EAAK4F,MAAM,UAAW,CAAC,WAClF,EAAC,QAAatF,EAA8B,CAC7CoB,KAAM,kBAERK,EAAG,GACF,EAAG,CAAC,WAAY,kBAAmB,QAAoB,IAAI,OAC9DA,EAAG,GAEP,CC7EA,QACEY,KAAM,aACNR,MAAO,CACLQ,KAAM,CACJhB,KAAMwB,OACNgI,UAAU,GAEZgM,SAAU,CACRxV,KAAMiG,QACNpG,SAAS,GAEX8X,YAAa,CACX3X,KAAMiG,QACNpG,SAAS,GAEXwT,eAAgB,CACdrT,KAAMiG,QACNpG,SAAS,IAGbsG,MAAO,CAAC,kBAAmB,QAAS,OAAQ,OAAQ,SAAU,aAAc,WAAY,aACxF,IAAA7F,GACE,MAAO,CACLmU,cAAetS,KAAKqT,SAExB,EACAtT,SAAU,CACR,UAAAwV,GACE,MAAMhC,EAAQvT,KAAKnB,KAAKoG,MAAM,KAAKC,OAAOpB,SAC1C,OAAOyP,EAAMA,EAAM5O,OAAS,IAAM3E,KAAKnB,IACzC,GAEFoB,MAAO,CACL,QAAAoT,CAASnP,GACPlE,KAAKsS,cAAgBpO,CACvB,IC9BJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,UCRO,SAAS,GAAOhI,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAuB,SAAhBH,EAAOyB,OAAmB,SAAW,IAAO,QAAoB,KAAW,CAChFnC,IAAK,IACJ,QAAYU,EAAOwJ,MAAO6P,KACpB,WAAc,QAAoB,MAAO,CAC9C/Z,IAAK,YAAc+Z,EACnBla,MAAO,iBACN,IAAKY,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAoB,MAAO,CAC5DZ,MAAO,kBACN,MAAO,IAAI,QAAoB,MAAO,CACvCA,MAAO,iBACN,EAAC,QAAoB,MAAO,CAC7BA,MAAO,oBACH,SACJ,MAAwB,SAAhBa,EAAOyB,OAAmB,SAAW,IAAO,QAAoB,KAAW,CACrFnC,IAAK,IACJ,QAAYU,EAAOwJ,MAAO6P,KACpB,WAAc,QAAoB,MAAO,CAC9C/Z,IAAK,iBAAmB+Z,EACxBla,MAAO,gCACN,IAAKY,EAAO,KAAOA,EAAO,GAAK,EAAC,QAAmB,onCAA6pC,UACjtC,OAAQ,QAAoB,IAAI,EACtC,CCvBA,QACE0C,KAAM,iBACNR,MAAO,CACLR,KAAM,CACJA,KAAMwB,OACN3B,QAAS,OACT6B,UAAWC,GAAS,CAAC,OAAQ,QAAQC,SAASD,IAEhDoG,MAAO,CACL/H,KAAM2T,OACN9T,QAAS,MCHf,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,8FCRA,MAAM,GAAa,CACjBnC,MAAO,mCAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,gBAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,gBAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBA,MAAO,gBAEH,GAAc,CAClBA,MAAO,kBAEH,GAAc,CAClBG,IAAK,EACLH,MAAO,kBAEH,GAAc,CAClBA,MAAO,gBAEHma,GAAc,CAClBna,MAAO,kBAEHoa,GAAc,CAClBja,IAAK,EACLH,MAAO,mBAEHqa,GAAc,CAClBra,MAAO,uBAEHsa,GAAc,CAClBta,MAAO,kBAEF,SAAS,GAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDsZ,EAAsB,MACtBnC,EAAyB,MACzBoC,EAA+B,MAC/BtZ,EAAuB,KACvBuZ,EAA8B,MAC9BC,EAAyB,MAC/B,OAAO,WAAc,QAAaA,EAAwB,CACxD,iBAAiB,EACjB7Y,QAAS,QACT7B,MAAO,kBACP2C,IAAK,eACJ,CACDgY,UAAU,QAAS,IAAM,EAAC,QAAaF,EAA6B,CAClEza,MAAO,wBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,IAAY,QAAiBxB,EAAK8B,GAAG,wBAAyB,IAAI,QAAoB,MAAO,GAAY,EAAC,QAAa+X,EAA8B,CAC/O9W,WAAY3C,EAAM6Z,aAAaC,aAC/B,sBAAuBja,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM6Z,aAAaC,aAAenZ,GAC7F4W,SAAU1X,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS8Z,mBAAmB,kBACzE,CACD3Y,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYnB,EAAS+Z,oBAAqBC,KAClH,WAAc,QAAa5C,EAAwB,CACxDjY,IAAK,gBAAkB6a,EAAO/W,MAC9BG,MAAO4W,EAAO/W,OACb,CACD9B,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6Y,EAAO5W,OAAQ,KAC1E1B,EAAG,GACF,KAAM,CAAC,YACR,QACJA,EAAG,GACF,EAAG,CAAC,oBAAoB,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,IAAY,QAAiB/B,EAAK8B,GAAG,0BAA2B,IAAI,QAAoB,MAAO,GAAY,EAAC,QAAa+X,EAA8B,CACnP9W,WAAY3C,EAAM6Z,aAAa3G,SAC/B,sBAAuBrT,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM6Z,aAAa3G,SAAWvS,GACzF4W,SAAU1X,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS8Z,mBAAmB,cACzE,CACD3Y,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYnB,EAASia,gBAAiBD,KAC9G,WAAc,QAAa5C,EAAwB,CACxDjY,IAAK,YAAc6a,EAAO/W,MAC1BG,MAAO4W,EAAO/W,OACb,CACD9B,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6Y,EAAO5W,OAAQ,KAC1E1B,EAAG,GACF,KAAM,CAAC,YACR,QACJA,EAAG,GACF,EAAG,CAAC,oBAAoB,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,IAAY,QAAiB/B,EAAK8B,GAAG,wBAAyB,IAAI,QAAoB,MAAO,GAAa,EAAC,QAAa+X,EAA8B,CAClP9W,WAAY3C,EAAM6Z,aAAaxW,MAC/B,sBAAuBxD,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM6Z,aAAaxW,MAAQ1C,GACtF4W,SAAU1X,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS8Z,mBAAmB,WACzE,CACD3Y,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYnB,EAASka,aAAcF,KAC3G,WAAc,QAAa5C,EAAwB,CACxDjY,IAAK,SAAW6a,EAAO/W,MACvBG,MAAO4W,EAAO/W,OACb,CACD9B,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6Y,EAAO5W,OAAQ,KAC1E1B,EAAG,GACF,KAAM,CAAC,YACR,QACJA,EAAG,GACF,EAAG,CAAC,oBAAoB,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,IAAa,QAAiB/B,EAAK8B,GAAG,oBAAqB,IAAI,QAAoB,MAAO,GAAa,EAAC,QAAa+X,EAA8B,CAChP9W,WAAY3C,EAAM6Z,aAAahH,SAC/B,sBAAuBhT,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM6Z,aAAahH,SAAWlS,GACzF4W,SAAU1X,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS8Z,mBAAmB,cACzE,CACD3Y,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYnB,EAASma,gBAAiBH,KAC9G,WAAc,QAAa5C,EAAwB,CACxDjY,IAAK,YAAc6a,EAAO/W,MAC1BG,MAAO4W,EAAO/W,OACb,CACD9B,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6Y,EAAO5W,OAAQ,KAC1E1B,EAAG,GACF,KAAM,CAAC,YACR,QACJA,EAAG,GACF,EAAG,CAAC,oBAAoB,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,IAAa,QAAiB/B,EAAK8B,GAAG,uBAAwB,IAAI,QAAoB,MAAO,GAAa,EAAC,QAAa+X,EAA8B,CACnP9W,WAAY3C,EAAM6Z,aAAaQ,QAC/B,sBAAuBxa,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM6Z,aAAaQ,QAAU1Z,GACxF4W,SAAU1X,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS8Z,mBAAmB,aACzE,CACD3Y,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYnB,EAASqa,eAAgBL,KAC7G,WAAc,QAAa5C,EAAwB,CACxDjY,IAAK,WAAa6a,EAAO/W,MACzBG,MAAO4W,EAAO/W,OACb,CACD9B,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6Y,EAAO5W,OAAQ,KAC1E1B,EAAG,GACF,KAAM,CAAC,YACR,QACJA,EAAG,GACF,EAAG,CAAC,mBAAoB7B,EAAOya,mBAAmBlS,OAAS,IAAK,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,IAAa,QAAiBzI,EAAK8B,GAAG,uBAAwB,IAAI,QAAoB,MAAO0X,GAAa,EAAC,QAAaK,EAA8B,CACzS9W,WAAY3C,EAAM6Z,aAAaW,YAC/B,sBAAuB3a,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAM6Z,aAAaW,YAAc7Z,GAC9F4W,SAAU1X,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAAS8Z,mBAAmB,iBAC3E,CACD3Y,SAAS,QAAS,IAAM,GAAE,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYnB,EAASwa,oBAAqB,CAACC,EAAOtS,MAC1H,WAAc,QAAoB,KAAW,CAClDhJ,IAAK,SAAWsb,EAAMnZ,MACrB,CAAC6G,EAAQ,IAAK,WAAc,QAAoB,MAAOiR,MAAgB,QAAoB,IAAI,IAAO,QAAoB,MAAOC,IAAa,QAAiBoB,EAAMC,WAAY,KAAK,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYD,EAAME,SAAUX,KACnQ,WAAc,QAAa5C,EAAwB,CACxDjY,IAAK,eAAiB6a,EAAO1Y,KAAO,IAAM0Y,EAAO1X,KACjDc,MAAO4W,EAAO1Y,KAAO,IAAM0Y,EAAO1X,MACjC,CACDnB,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB6Y,EAAO1X,MAAO,KACzEZ,EAAG,GACF,KAAM,CAAC,YACR,OAAQ,MACV,QACJA,EAAG,GACF,EAAG,CAAC,qBAAsB,QAAoB,IAAI,IAAO,QAAoB,MAAO4X,GAAa,EAAC,QAAapZ,EAAsB,CACtIqB,KAAM,QACNP,QAAShB,EAAS4a,aAClBtQ,SAAyC,IAA/BtK,EAAS6a,mBAClB,CACD1Z,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,wBAAyB,KAC5FC,EAAG,GACF,EAAG,CAAC,UAAW,iBAClBA,EAAG,MAELP,SAAS,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAY,EAAC,QAAaoY,EAAqB,CAClGtW,MAAOjD,EAAS6a,kBAChBC,OAAuC,IAA/B9a,EAAS6a,kBACjB7b,MAAO,gBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,SACNrC,MAAO,kBAET0C,EAAG,GACF,EAAG,CAAC,QAAS,eAChBA,EAAG,GACF,IACL,C,qBCvMA,IACEY,KAAM,iBACNR,MAAO,CACLiZ,QAAS,CACPzZ,KAAMqR,OACNxR,QAAS,KAAM,CACb0Y,aAAc,GAEd5G,SAAU,GAEV7P,MAAO,GACPwP,SAAU,GACVwH,QAAS,GACTG,YAAa,MAGjBD,mBAAoB,CAClBhZ,KAAMuJ,MACN1J,QAAS,IAAM,KAGnBsG,MAAO,CAAC,iBAAkB,UAC1B,IAAA7F,GACE,MAAO,CACLgY,aAAc,CACZC,aAAc,GACd5G,SAAU,GACV7P,MAAO,GACPwP,SAAU,GACVwH,QAAS,GACTG,YAAa,IAGnB,EACA/W,SAAU,CAIR,mBAAAuW,GACE,MAAO,CAAC,CACN3W,MAAOK,KAAKhC,GAAG,iBACfwB,MAAO,UACN,CACDG,MAAOK,KAAKhC,GAAG,kBACfwB,MAAO,WAEX,EAEA,eAAAgX,GACE,MAAO,CAAC,CACN7W,MAAOK,KAAKhC,GAAG,oBACfwB,MAAO,SACN,CACDG,MAAOK,KAAKhC,GAAG,oBACfwB,MAAO,SACN,CACDG,MAAOK,KAAKhC,GAAG,iBACfwB,MAAO,QAEX,EAEA,YAAAiX,GACE,MAAO,CAAC,CACN9W,MAAOK,KAAKhC,GAAG,iBACfwB,MAAO,UACN,CACDG,MAAOK,KAAKhC,GAAG,sBACfwB,MAAO,QACN,CACDG,MAAOK,KAAKhC,GAAG,uBACfwB,MAAO,SAEX,EACA,eAAAkX,GACE,MAAO,CAAC,CACN/W,MAAOK,KAAKhC,GAAG,gBACfwB,MAAO,SACN,CACDG,MAAOK,KAAKhC,GAAG,gBACfwB,MAAO,SACN,CACDG,MAAOK,KAAKhC,GAAG,gBACfwB,MAAO,SACN,CACDG,MAAOK,KAAKhC,GAAG,gBACfwB,MAAO,SAEX,EACA,cAAAoX,GACE,MAAO,CAAC,CACNjX,MAAO,WACPH,MAAO,eACN,CACDG,MAAO,gBACPH,MAAO,gBACN,CACDG,MAAO,KACPH,MAAO,MACN,CACDG,MAAO,UACPH,MAAO,WACN,CACDG,MAAO,cACPH,MAAO,eACN,CACDG,MAAO,SACPH,MAAO,UACN,CACDG,MAAOK,KAAKhC,GAAG,uBACfwB,MAAO,YAEX,EACA,iBAAA4X,GACE,OAAOlI,OAAOqI,OAAOvX,KAAKmW,cAAcqB,OAAO,CAAC5R,EAAO6R,IAAQ7R,EAAQ6R,EAAI9S,OAAQ,EACrF,EAEA,mBAAAoS,GACE,MAAMW,EAAS,CAAC,EAWhB,OAVA1X,KAAK6W,mBAAmBc,QAAQpB,IACzBmB,EAAOnB,EAAO1Y,QACjB6Z,EAAOnB,EAAO1Y,MAAQ,CACpBA,KAAM0Y,EAAO1Y,KACboZ,UAAWV,EAAOU,UAClBC,SAAU,KAGdQ,EAAOnB,EAAO1Y,MAAMqZ,SAAS9O,KAAKmO,KAE7BrH,OAAOqI,OAAOG,EACvB,GAEFzX,MAAO,CACLqX,QAAS,CACP,OAAAM,CAAQC,GACN7X,KAAKmW,aAAe,CAClBC,aAAchP,MAAM0Q,QAAQD,EAAWzB,cAAgB,IAAIyB,EAAWzB,cAAgB,GACtF5G,SAAUpI,MAAM0Q,QAAQD,EAAWrI,UAAY,IAAIqI,EAAWrI,UAAY,GAC1E7P,MAAOyH,MAAM0Q,QAAQD,EAAWlY,OAAS,IAAIkY,EAAWlY,OAAS,GACjEwP,SAAU/H,MAAM0Q,QAAQD,EAAW1I,UAAY,IAAI0I,EAAW1I,UAAY,GAC1EwH,QAASvP,MAAM0Q,QAAQD,EAAWlB,SAAW,IAAIkB,EAAWlB,SAAW,GACvEG,YAAa1P,MAAM0Q,QAAQD,EAAWf,aAAe,IAAIe,EAAWf,aAAe,GAEvF,EACAiB,WAAW,EACXC,MAAM,IAGVhX,QAAS,CACP,kBAAAqV,CAAmBxY,GACjBmC,KAAK8B,MAAM,iBAAkB,IACxB9B,KAAKmW,eAEVnW,KAAK8B,MAAM,SAAU,CACnBjE,OACAyZ,QAAS,IACJtX,KAAKmW,eAGd,EACA,YAAAgB,GACEnX,KAAKmW,aAAe,CAClBC,aAAc,GACd5G,SAAU,GACV7P,MAAO,GACPwP,SAAU,GACVwH,QAAS,GACTG,YAAa,IAEf9W,KAAK8B,MAAM,iBAAkB,IACxB9B,KAAKmW,eAEVnW,KAAK8B,MAAM,SAAU,CACnBjE,KAAM,QACNyZ,QAAS,IACJtX,KAAKmW,eAGd,IC9KJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,YCNA,MAAM,GAAa,CACjB5a,MAAO,aAEH,GAAa,CACjBA,MAAO,kBAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,eAEH,GAAa,CACjBA,MAAO,WAEH,GAAa,CACjBA,MAAO,oBAEH,GAAa,CACjBA,MAAO,oBAEH,GAAa,CACjBA,MAAO,wBAEH,GAAa,CACjBA,MAAO,yBACPqW,KAAM,SAEF,GAAc,CAAC,QAAS,gBACxB,GAAc,CAAC,QAAS,gBACxB,GAAc,CAClBrW,MAAO,yBAEH,GAAc,CAClBA,MAAO,2BAEH,GAAc,CAAC,SACf,GAAc,CAClBG,IAAK,EACLH,MAAO,eAEH,GAAc,CAClBA,MAAO,cAEH,GAAc,CAClBA,MAAO,cAEH,GAAc,CAClBA,MAAO,eAEH,GAAc,CAClBA,MAAO,8BAEH,GAAc,CAClBA,MAAO,6BAEH,GAAc,CAClBA,MAAO,0BAEH,GAAc,CAClBA,MAAO,0BAEH0c,GAAc,CAClB1c,MAAO,6BAEH2c,GAAc,CAClB3c,MAAO,kCAEH4c,GAAc,CAClB5c,MAAO,6BAEH6c,GAAc,CAClB7c,MAAO,0BAEH8c,GAAc,CAClB9c,MAAO,0BAEH+c,GAAc,CAClB/c,MAAO,6BAEHgd,GAAc,CAClB7c,IAAK,EACLH,MAAO,0BAEHid,GAAc,CAClBjd,MAAO,cAEHkd,GAAc,CAClBld,MAAO,cAEHmd,GAAc,CAClBnd,MAAO,wBAEHod,GAAc,CAClBpd,MAAO,qBAEHqd,GAAc,CAClBrd,MAAO,oBAEHsd,GAAc,CAClBtd,MAAO,cAEHud,GAAc,CAClBvd,MAAO,aAEHwd,GAAc,CAClBxd,MAAO,kBAEHyd,GAAc,CAClBzd,MAAO,kBAEH0d,GAAc,CAClB1d,MAAO,iBAEH2d,GAAc,CAClB3d,MAAO,mBAEH4d,GAAc,CAClB5d,MAAO,kBAEH6d,GAAc,CAClB7d,MAAO,kBAEH8d,GAAc,CAClB9d,MAAO,iBAEH+d,GAAc,CAClB/d,MAAO,mBAEHge,GAAc,CAClBhe,MAAO,gBAEHie,GAAc,CAClBje,MAAO,iBAEHke,GAAc,CAClB/d,IAAK,EACLH,MAAO,gBAEHme,GAAc,CAClBne,MAAO,iBAEHoe,GAAc,CAClBpe,MAAO,iBAEF,SAAS,GAAOW,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMqd,EAA2B,KAC3Bpd,GAA+B,QAAkB,qBACjDiG,EAAsB,KACtBoX,EAA4B,GAC5BC,EAA8B,MAC9B9D,EAA8B,MAC9BC,EAAyB,MACzBjF,EAAwB,MACxB+I,EAAuB,MACvB7H,EAA+B,GAC/B8H,EAAgC,MAChCC,EAA2B,MAC3BC,EAA4B,GAC5BC,EAAwB,GACxBC,EAAsB,GACtBC,EAA0B,GAC1BC,EAA2B,MAC3B7d,EAAuB,KACvB8d,EAAqB,MACrBC,EAA0B,MAC1BC,EAA4B,GAC5BC,EAA8B,GAC9BC,EAAsB,MACtBC,EAA4B,MAC5BC,EAAuB,MACvBlY,EAAuB,KACvBmY,EAAiC,GACjCC,EAA4B,GAC5BC,EAA+B,EAC/BC,EAAmC,EACnCC,EAA4B,EAClC,OAAO,WAAc,QAAoB,MAAO,GAAY,EAAC,QAAaV,EAAyB,KAAM,CACvG9c,SAAS,QAAS,IAAM,EAAC,QAAaqc,EAAsB,KAAM,CAChErc,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAakc,EAA0B,CACtGjU,UAAW,eACT,QAAoB,MAAO,GAAY,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAalD,EAAqB,CACpHxD,WAAY3C,EAAM6e,WAClB,sBAAuBhf,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM6e,WAAale,GAC9Ea,KAAM,QACNqF,YAAajH,EAAK8B,GAAG,+BACrB+H,SAAS,QAAUxJ,EAAS6e,aAAc,CAAC,WAC1C,CACDC,QAAQ,QAAS,IAAM,EAAC,QAAa7e,EAA8B,CACjEoB,KAAM,SACNrC,MAAO,cACPgC,QAAShB,EAAS6e,cACjB,KAAM,EAAG,CAAC,cACbnd,EAAG,GACF,EAAG,CAAC,aAAc,cAAe,eAAe,QAAa4b,EAA2B,CACzFvC,QAAShb,EAAMgb,QACf,mBAAoBnb,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMgb,QAAUra,GACxE4Z,mBAAoBva,EAAMua,mBAC1BhD,SAAUtX,EAAS8Z,oBAClB,KAAM,EAAG,CAAC,UAAW,qBAAsB,gBAAgB,QAAoB,MAAO,GAAY,EAAC,QAAaJ,EAAwB,CACzIqF,UAAW/e,EAASgf,KACpB,iBAAiB,GAChB,CACDrF,UAAU,QAAS,IAAM,EAAC,QAAaF,EAA6B,KAAM,CACxEtY,SAAS,QAAS,IAAM,EAAC,QAAaoc,EAA6B,CACjExI,QAAS,YACR,CACD5T,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,6BAA8B,KACjGC,EAAG,KACD,QAAa6b,EAA6B,CAC5CxI,QAAS,WACR,CACD5T,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,4BAA6B,KAChGC,EAAG,MAELA,EAAG,MAELP,SAAS,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAY,EAAC,QAAalB,EAA8B,CAC3GoB,KAAMrB,EAASif,SACfjgB,MAAO,eACN,KAAM,EAAG,CAAC,aACb0C,EAAG,GACF,EAAG,CAAC,eAAe,QAAa+S,EAAuB,CACxDnK,SAAUtK,EAAS2U,eACnBC,QAASjV,EAAK8B,GAAG,wBACjBd,UAAW,UACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAoB,OAAQ,GAAY,EAAC,QAAalB,EAA8B,CAC3GoB,KAAM,OACNrC,MAAO,cACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAMmf,eAAgB,SAErExd,EAAG,GACF,EAAG,CAAC,WAAY,aAAa,QAAa+S,EAAuB,CAClEnK,SAAUtK,EAAS2U,eACnBC,QAASjV,EAAK8B,GAAG,oBACjBd,UAAW,UACV,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,eACNrC,MAAO,cACPgC,QAAShB,EAASmf,cACjB,KAAM,EAAG,CAAC,cACbzd,EAAG,GACF,EAAG,CAAC,WAAY,kBACnBA,EAAG,KACD,QAAasc,EAAoB,CACnChf,OAAO,QAAgB,CAAC,iBAAkB,CACxC,oBAAqBe,EAAM6K,cAAcxC,OAAS,MAEnD,CACDjH,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAO,GAAY,EAAC,QAAawU,EAA8B,CAC1GR,QAASnV,EAASof,WAClBhK,cAAepV,EAASqf,oBAAsBrf,EAASof,WACvDlK,QAAS,aACTlU,QAAShB,EAASsf,kBACjB,KAAM,EAAG,CAAC,UAAW,gBAAiB,aAAa,QAAoB,MAAO,GAAY,EAAC,QAAoB,SAAU,CAC1HtgB,OAAO,QAAgB,CAAC,yBAA0B,CAChD,YAAgC,SAAnBe,EAAMwf,YAErBje,KAAM,SACNuB,MAAOlD,EAAK8B,GAAG,sBACf,eAAmC,SAAnB1B,EAAMwf,SACtBve,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAASwf,YAAY,UACjE,EAAC,QAAavf,EAA8B,CAC7CoB,KAAM,WACNrC,MAAO,0BACJ,GAAI,KAAc,QAAoB,SAAU,CACnDA,OAAO,QAAgB,CAAC,yBAA0B,CAChD,YAAgC,SAAnBe,EAAMwf,YAErBje,KAAM,SACNuB,MAAOlD,EAAK8B,GAAG,sBACf,eAAmC,SAAnB1B,EAAMwf,SACtBve,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAASwf,YAAY,UACjE,EAAC,QAAavf,EAA8B,CAC7CoB,KAAM,OACNrC,MAAO,0BACJ,GAAI,OAAgB,QAAoB,MAAO,CAClDA,MAAO,2BACPgC,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUX,EAAM0f,2BAA4B,IAC9E,EAAC,QAAaxf,EAA8B,CAC7CoB,KAAM,cACNrC,MAAO,2BACL,QAAoB,OAAQ,IAAa,QAAiBe,EAAMgI,aAAehI,EAAMgI,YAAYW,MAAM,KAAKC,OAAOpB,SAASa,OAAS,EAAIrI,EAAMgI,YAAYW,MAAM,KAAKC,OAAOpB,SAASmY,MAAQ/f,EAAK8B,GAAG,4BAA6B,IAAI,QAAaxB,EAA8B,CACpRoB,KAAM,eACNrC,MAAO,8BACH,QAAoB,MAAO,GAAa,EAAC,QAAa0e,EAA0B,CACpFiC,UAAW,KACV,CACDxe,SAAS,QAAS,IAAM,EAAC,QAAasc,EAA+B,CACnEzc,QAASpB,EAAO,KAAOA,EAAO,GAAKc,GAAUV,EAAS4f,iBAAiB,MACtE,CACDze,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,OACNrC,MAAO,2BAET0C,EAAG,MACA,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAY3B,EAAMgI,YAAYW,MAAM,KAAKC,OAAOpB,SAAU,CAACW,EAAQC,MACtH,WAAc,QAAasV,EAA+B,CAC/Dte,IAAKgJ,EACLnH,QAASN,GAAUV,EAAS4f,iBAAiB7f,EAAMgI,YAAYW,MAAM,KAAKC,OAAOpB,SAASgB,MAAM,EAAGJ,EAAQ,GAAGK,KAAK,OAClH,CACDrH,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiB+G,GAAS,KACpExG,EAAG,GACF,KAAM,CAAC,cACR,QACJA,EAAG,OACC,QAAoB,OAAQ,CAChC1C,MAAO,cACP6D,MAAOlD,EAAK8B,GAAG,uBAAwB,CACrC4H,MAAO1J,EAAKI,MAAMkV,UAEnB,EAAC,QAAahV,EAA8B,CAC7CoB,KAAM,WACNrC,MAAO,sBACL,QAAiB,KAAM,QAAiBe,EAAMkV,QAAS,IAAK,EAAG,MAAmC,SAAnBlV,EAAMwf,WAAuB,WAAc,QAAoB,MAAO,CACvJpgB,IAAK,EACLH,OAAO,QAAgB,CAAC,UAAW,CACjC,oBAAqBc,EAAO+f,cAE9Ble,IAAK,mBACLme,oBAAqBlgB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAAS+f,sBAAwB/f,EAAS+f,wBAAwBvd,IAC9Hwd,kBAAmBpgB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAASigB,oBAAsBjgB,EAASigB,sBAAsBzd,IACxH0d,qBAAsBtgB,EAAO,KAAOA,EAAO,GAAK,IAAI4C,IAASxC,EAASmgB,gBAAkBngB,EAASmgB,kBAAkB3d,KAClH,CAACzC,EAAMwC,UAAW,WAAc,QAAaob,EAA2B,CACzExe,IAAK,EACLmC,KAAM,OACN+H,MAAOtJ,EAAMqgB,UACZ,KAAM,EAAG,CAAC,WAAoD,IAAvCpgB,EAASqgB,mBAAmBjY,SAAgB,WAAc,QAAoB,MAAO,GAAa,EAAC,QAAanI,EAA8B,CACtKoB,KAAM,cACNrC,MAAO,gBACL,QAAoB,IAAK,IAAa,QAAiBgB,EAASsgB,kBAAoB3gB,EAAK8B,GAAG,6BAA+B9B,EAAK8B,GAAG,8BAA+B,IAAI,QAAoB,IAAK,IAAa,QAAiBzB,EAASsgB,kBAAoB3gB,EAAK8B,GAAG,8BAAgC9B,EAAK8B,GAAG,yBAA0B,QAAS,SAAW,IAAO,QAAoB,KAAW,CAChYtC,IAAK,IACJ,QAAYa,EAASqgB,mBAAoB,CAAC9J,EAAMpO,MAC1C,WAAc,QAAoB,KAAW,CAClDhJ,IAAKgJ,GACJ,CAACnI,EAAS4I,SAAS2N,KAAS,WAAc,QAAaqH,EAAuB,CAC/Eze,IAAK,EACLmD,KAAMiU,EAAKjU,KACXwU,SAAUP,EAAKO,SACf,oBAAqBpW,GAAU6V,EAAKO,SAAWpW,EAC/CuY,aAAclZ,EAAMwgB,aACpB5L,eAAgB3U,EAAS2U,eACzB6L,QAAS9f,GAAUV,EAASygB,YAAYlK,EAAKjU,MAC7Coe,OAAQhgB,GAAUV,EAAS2gB,iBAAiBpK,EAAKjU,MACjDse,OAAQlgB,GAAUV,EAAS6gB,WAAW1Y,EAAOoO,EAAKjU,MAClDwe,SAAUpgB,GAAUV,EAAS+gB,aAAa5Y,EAAOoO,EAAKjU,MACtDsT,aAAclV,GAAUV,EAASghB,uBAAuBzK,EAAMpO,GAC9D0N,WAAY7V,EAASihB,eACrBnL,YAAa9V,EAASihB,gBACrB,KAAM,EAAG,CAAC,OAAQ,WAAY,oBAAqB,cAAe,iBAAkB,UAAW,SAAU,SAAU,WAAY,eAAgB,aAAc,mBAAoB,WAAc,QAAapD,EAAqB,CAClO1e,IAAK,EACLoX,KAAMA,EACNO,SAAUP,EAAKO,SACf,oBAAqBpW,GAAU6V,EAAKO,SAAWpW,EAC/CqP,SAAU/P,EAASkhB,YAAY3K,EAAKjU,MACpC4V,eAAgB3B,EAAK2B,eACrBvD,eAAgB3U,EAAS2U,eACzBwM,SAAUzgB,GAAUV,EAASohB,iBAAiBjZ,EAAOoO,EAAKjU,MAC1Doe,OAAQhgB,GAAUV,EAASqhB,WAAWlZ,EAAOoO,EAAKjU,MAClDse,OAAQlgB,GAAUV,EAAS6gB,WAAW1Y,EAAOoO,EAAKjU,MAClDwe,SAAUpgB,GAAUV,EAAS+gB,aAAa5Y,EAAOoO,EAAKjU,MACtDgf,WAAY5gB,GAAUV,EAASuhB,eAAehL,EAAKjU,MACnDsT,aAAclV,GAAUV,EAASwhB,iBAAiBjL,EAAMpO,GACxD0N,WAAY7V,EAASihB,eACrBnL,YAAa9V,EAASihB,gBACrB,KAAM,EAAG,CAAC,OAAQ,WAAY,oBAAqB,WAAY,iBAAkB,iBAAkB,WAAY,SAAU,SAAU,WAAY,aAAc,eAAgB,aAAc,kBAAmB,MAC/M,OAAQ,OAAQ,WAAc,QAAoB,MAAO,CAC3D9hB,IAAK,EACLH,OAAO,QAAgB,CAAC,YAAa,CACnC,oBAAqBc,EAAO+f,cAE9Ble,IAAK,mBACLme,oBAAqBlgB,EAAO,MAAQA,EAAO,IAAM,IAAI4C,IAASxC,EAAS+f,sBAAwB/f,EAAS+f,wBAAwBvd,IAChIwd,kBAAmBpgB,EAAO,MAAQA,EAAO,IAAM,IAAI4C,IAASxC,EAASigB,oBAAsBjgB,EAASigB,sBAAsBzd,IAC1H0d,qBAAsBtgB,EAAO,MAAQA,EAAO,IAAM,IAAI4C,IAASxC,EAASmgB,gBAAkBngB,EAASmgB,kBAAkB3d,KACpH,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAoB,MAAO,GAAa,EAAC,QAAamT,EAA8B,CAC/HR,QAASnV,EAASyhB,YAClBrM,cAAepV,EAAS0hB,gBACxB1gB,QAASpB,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAAS2hB,qBAAqB3hB,EAASyhB,eACrF,KAAM,EAAG,CAAC,UAAW,qBAAqB,QAAoB,MAAO,IAAa,QAAiB9hB,EAAK8B,GAAG,sBAAuB,IAAI,QAAoB,MAAO,IAAa,QAAiB9B,EAAK8B,GAAG,uBAAwB,IAAI,QAAoB,MAAO,IAAa,QAAiB9B,EAAK8B,GAAG,mBAAoB,IAAI,QAAoB,MAAOia,IAAa,QAAiB/b,EAAK8B,GAAG,0BAA2B,IAAI,QAAoB,MAAOka,IAAa,QAAiBhc,EAAK8B,GAAG,6BAA8B,IAAI,QAAoB,MAAOma,IAAa,QAAiBjc,EAAK8B,GAAG,4BAA6B,IAAI,QAAoB,MAAOoa,IAAa,QAAiBlc,EAAK8B,GAAG,uBAAwB,IAAI,QAAoB,MAAOqa,IAAa,QAAiBnc,EAAK8B,GAAG,yBAA0B,IAAI,QAAoB,MAAOsa,IAAa,QAAiBpc,EAAK8B,GAAG,sBAAuB,KAAM1B,EAAMwC,UAAW,WAAc,QAAaob,EAA2B,CACn8Bxe,IAAK,EACLmC,KAAM,OACN+H,MAAOtJ,EAAMqgB,UACZ,KAAM,EAAG,CAAC,WAAoD,IAAvCpgB,EAASqgB,mBAAmBjY,SAAgB,WAAc,QAAoB,MAAO4T,GAAa,EAAC,QAAa/b,EAA8B,CACtKoB,KAAM,cACNrC,MAAO,gBACL,QAAoB,IAAKid,IAAa,QAAiBjc,EAASsgB,kBAAoB3gB,EAAK8B,GAAG,6BAA+B9B,EAAK8B,GAAG,8BAA+B,IAAI,QAAoB,IAAKya,IAAa,QAAiBlc,EAASsgB,kBAAoB3gB,EAAK8B,GAAG,8BAAgC9B,EAAK8B,GAAG,yBAA0B,QAAS,SAAW,IAAO,QAAoB,KAAW,CAChYtC,IAAK,IACJ,QAAYa,EAASqgB,mBAAoB,CAAC9J,EAAMpO,MAC1C,WAAc,QAAa2V,EAAyB,CACzD3e,IAAKgJ,EACLoO,KAAMA,EACNO,SAAUP,EAAKO,SACf,oBAAqBpW,GAAU6V,EAAKO,SAAWpW,EAC/CqP,SAAU/P,EAASkhB,YAAY3K,EAAKjU,MACpCke,QAAS9f,GAAUV,EAASygB,YAAYlK,EAAKjU,MAC7C6e,SAAUzgB,GAAUV,EAASohB,iBAAiBjZ,EAAOoO,EAAKjU,MAC1Doe,OAAQhgB,GAAUV,EAASqhB,WAAWlZ,EAAOoO,EAAKjU,MAClDsf,aAAclhB,GAAUV,EAAS2gB,iBAAiBpK,EAAKjU,MACvDse,OAAQlgB,GAAUV,EAAS6gB,WAAW1Y,EAAOoO,EAAKjU,MAClDwe,SAAUpgB,GAAUV,EAAS+gB,aAAa5Y,EAAOoO,EAAKjU,MACtDgf,WAAY5gB,GAAUV,EAASuhB,eAAehL,EAAKjU,MACnDsT,aAAclV,GAAUV,EAAS4I,SAAS2N,GAAQvW,EAASghB,uBAAuBzK,EAAMpO,GAASnI,EAASwhB,iBAAiBjL,EAAMpO,GACjI0N,WAAY7V,EAASihB,eACrBnL,YAAa9V,EAASihB,gBACrB,KAAM,EAAG,CAAC,OAAQ,WAAY,oBAAqB,WAAY,UAAW,WAAY,SAAU,eAAgB,SAAU,WAAY,aAAc,eAAgB,aAAc,kBACnL,OAAQ,KAAMnhB,EAAO+f,aAAc,WAAc,QAAoB,MAAO,CAC9E1gB,IAAK,EACLH,MAAO,sBACPqJ,OAAO,QAAgB,CACrBwZ,SAAU,QACVC,KAAMhiB,EAAOiiB,cAAcD,KAAO,KAClCE,IAAKliB,EAAOiiB,cAAcC,IAAM,KAChCphB,MAAOd,EAAOiiB,cAAcnhB,MAAQ,KACpCuS,OAAQrT,EAAOiiB,cAAc5O,OAAS,QAEvC,KAAM,KAAM,QAAoB,IAAI,IAAO,QAAoB,MAAOgJ,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAa2B,EAA0B,CACrKtH,WAAY,GACZwL,OAAQ,oBACRC,MAAOliB,EAASmiB,kBAAkB/Z,OAClC,YAAarI,EAAMqgB,SACnB,eAAgBrgB,EAAMqiB,YACtB,cAAepiB,EAASqiB,WACxBC,gBAAiBtiB,EAASuiB,kBACzB,KAAM,EAAG,CAAC,QAAS,YAAa,eAAgB,cAAe,qBAAqB,QAAariB,EAAsB,CACxHoB,KAAM,UACNN,QAAShB,EAASwiB,gBAClBxjB,MAAO,eACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,OACNrC,OAAO,QAAgB,CACrB,UAAWe,EAAM0iB,kBAElB,KAAM,EAAG,CAAC,YACb/gB,EAAG,GACF,EAAG,CAAC,YAAa3B,EAAMqiB,cAAgBM,KAAKC,KAAK3iB,EAASmiB,kBAAkB/Z,OAASrI,EAAMqgB,YAAa,WAAc,QAAalgB,EAAsB,CAC1Jf,IAAK,EACLmC,KAAM,UACNN,QAAShB,EAAS4iB,aAClBrgB,QAASxC,EAAMwC,QACfvD,MAAO,aACN,CACDmC,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,uBAAwB,KAC3FC,EAAG,GACF,EAAG,CAAC,UAAW,cAAe,QAAoB,IAAI,MAAS,QAAoB,MAAO2a,GAAa,EAAC,QAAoB,OAAQC,IAAa,QAAiB3c,EAAK8B,GAAG,uBAAwB,CACnM4H,MAAOrJ,EAAS6iB,kBACb,IAAI,QAAoB,MAAOtG,GAAa,EAAC,QAAoB,OAAQ,MAAM,QAAiB5c,EAAK8B,GAAG,qBAAsB,IAAI,QAAayE,EAAqB,CACvKxD,WAAY3C,EAAM+iB,SAClB,sBAAuBljB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAM+iB,SAAWpiB,GAC9Ea,KAAM,QACNvC,MAAO,aACPwK,SAAS,QAAUxJ,EAAS+iB,eAAgB,CAAC,WAC5C,KAAM,EAAG,CAAC,aAAc,aAAa,QAAa7iB,EAAsB,CACzEqB,KAAM,QACND,KAAM,UACNN,QAAShB,EAAS+iB,eAClB/jB,MAAO,YACN,CACDmC,SAAS,QAAS,IAAM,IAAKvB,EAAO,MAAQA,EAAO,IAAM,EAAC,QAAiB,MAAO,OAClF8B,EAAG,GACF,EAAG,CAAC,oBACPA,EAAG,GACF,EAAG,CAAC,YACPA,EAAG,KACD,QAAawc,EAA2B,CAC1C,iBAAkBne,EAAM6K,cAAcxC,OACtC4a,SAAUhjB,EAASijB,kBACnBC,QAASljB,EAASmjB,gBACjB,KAAM,EAAG,CAAC,iBAAkB,WAAY,aAAa,QAAahF,EAA6B,CAChGzb,WAAY3C,EAAMqjB,iBAClB,sBAAuBxjB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMqjB,iBAAmB1iB,GACtFuK,KAAMlL,EAAMsjB,WACZtT,SAAU/P,EAASkhB,YAAYnhB,EAAMsjB,YAAY/gB,MACjD2M,KAAMjP,EAASsjB,OACfhC,WAAY1hB,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAASuhB,eAAexhB,EAAMsjB,YAAY/gB,OAC5FihB,gBAAiB3jB,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAASwjB,oBAAoBzjB,EAAMsjB,YAAY/gB,OACtGmhB,QAAS7jB,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAAS0jB,YAAY3jB,EAAMsjB,YAAY/gB,OACtFqhB,QAAS/jB,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAAS4jB,YAAY7jB,EAAMsjB,YAAY/gB,OACtFwe,SAAUlhB,EAAO,MAAQA,EAAO,IAAMc,GAAUV,EAAS6jB,mBAAmB9jB,EAAMsjB,YAAY/gB,OAC9FwhB,kBAAmB9jB,EAAS+jB,sBAC5BC,cAAehkB,EAASikB,mBACvB,KAAM,EAAG,CAAC,aAAc,OAAQ,WAAY,OAAQ,oBAAqB,mBAAmB,QAAa7d,EAAsB,CAChIvD,MAAOlD,EAAK8B,GAAG,wBACfiB,WAAY3C,EAAMmf,cAClB,sBAAuBtf,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMmf,cAAgBxe,GACnFE,MAAOZ,EAASmJ,YAChB,cAAc,EACdnK,MAAO,mBACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAoB,MAAOqb,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAoB,OAAQC,IAAa,QAAiB/c,EAAK8B,GAAG,6BAA8B,MAAM,QAAoB,MAAOkb,GAAa,EAAC,QAAa0B,EAA2B,CAChS3b,WAAY3C,EAAMmkB,iBAClB,sBAAuBtkB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMmkB,iBAAmBxjB,GACtF1B,MAAO,6BACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAaid,EAAqB,CACzDhb,MAAO,YACPpE,MAAO,cACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,OACNrC,MAAO,gBACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,qBAAsB,KACrFC,EAAG,KACD,QAAa0c,EAAqB,CACpChb,MAAO,QACPpE,MAAO,cACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,OACNrC,MAAO,eACLY,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,YAAa,MAC/E8B,EAAG,KACD,QAAa0c,EAAqB,CACpChb,MAAO,UACPpE,MAAO,cACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,cACNrC,MAAO,eACLY,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,QAAS,MAC3E8B,EAAG,KACD,QAAa0c,EAAqB,CACpChb,MAAO,QACPpE,MAAO,cACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,cACNrC,MAAO,eACLY,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,UAAW,MAC7E8B,EAAG,KACD,QAAa0c,EAAqB,CACpChb,MAAO,OACPpE,MAAO,cACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,cACNrC,MAAO,eACLY,EAAO,MAAQA,EAAO,KAAM,QAAoB,OAAQ,KAAM,cAAe,MACjF8B,EAAG,KACD,QAAa0c,EAAqB,CACpChb,MAAO,aACPpE,MAAO,cACN,CACDmC,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,QACNrC,MAAO,gBACL,QAAoB,OAAQ,MAAM,QAAiBW,EAAK8B,GAAG,oBAAqB,KACpFC,EAAG,MAELA,EAAG,GACF,EAAG,CAAC,oBAAoB,QAAoB,MAAOkb,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAoB,OAAQC,IAAa,QAAiBnd,EAAK8B,GAAG,wBAAyB,IAAI,QAAagT,EAAuB,CAC9OG,QAASjV,EAAK8B,GAAG,8BACjBd,UAAW,MACX,cAAe,IACd,CACDQ,SAAS,QAAS,IAAM,EAAC,QAAalB,EAA8B,CAClEoB,KAAM,kBACNrC,MAAO,wBAET0C,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAOqb,GAAa,EAAC,QAAoB,MAAOC,GAAa,EAAC,QAAoB,OAAQC,IAAa,QAAiBtd,EAAK8B,GAAG,0BAA2B,IAAI,QAAa6c,EAAsB,CAC1O5b,WAAY3C,EAAMokB,aAClB,sBAAuBvkB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMokB,aAAezjB,GAClF,eAAgB,OAChB,iBAAkB,SACjB,KAAM,EAAG,CAAC,iBAAyC,SAAvBX,EAAMokB,eAA2B,WAAc,QAAoB,MAAOjH,GAAa,EAAC,QAAoB,OAAQC,IAAa,QAAiBxd,EAAK8B,GAAG,0BAA2B,IAAI,QAAayE,EAAqB,CACxPxD,WAAY3C,EAAMqkB,gBAClB,sBAAuBxkB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMqkB,gBAAkB1jB,GACrFkG,YAAajH,EAAK8B,GAAG,oCACrBzC,MAAO,iBACN,KAAM,EAAG,CAAC,aAAc,oBAAqB,QAAoB,IAAI,QAAW,QAAoB,MAAOoe,GAAa,EAAC,QAAald,EAAsB,CAC7JoB,KAAM,UACNN,QAASpB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMmf,eAAgB,GACrElgB,MAAO,eACN,CACDmC,SAAS,QAAS,IAAM,EAAC,SAAiB,QAAiBxB,EAAK8B,GAAG,qBAAsB,KACzFC,EAAG,QAELA,EAAG,GACF,EAAG,CAAC,QAAS,aAAc,WAAW,QAAa6c,EAAgC,CACpF7b,WAAY3C,EAAMskB,cAClB,sBAAuBzkB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMskB,cAAgB3jB,GACnFqN,OAAQhO,EAAMukB,eACdC,cAAevkB,EAASwkB,mBACvB,KAAM,EAAG,CAAC,aAAc,SAAU,mBAAmB,QAAahG,EAA2B,CAC9F9b,WAAY3C,EAAM0kB,mBAClB,sBAAuB7kB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAM0kB,mBAAqB/jB,GACxFkK,cAAe7K,EAAM6K,cACrB2Z,cAAevkB,EAAS0kB,wBACvB,KAAM,EAAG,CAAC,aAAc,gBAAiB,mBAAmB,QAAajG,EAA8B,CACxG/b,WAAY3C,EAAM4kB,sBAClB,sBAAuB/kB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAM4kB,sBAAwBjkB,GAC3FmC,MAAO9C,EAAM6kB,qBAAuB5kB,EAAS6kB,cAAc9kB,EAAM+kB,kBAAkBxiB,MAAQ,IAAMvC,EAAM+kB,kBAAkBtV,UAAUqB,UAAY7Q,EAASiX,YAAYlX,EAAM+kB,kBAAkBxiB,MAAQ,IACpMsG,SAAU7I,EAAM6kB,qBAChB5B,SAAUhjB,EAAS+kB,oBAClB,KAAM,EAAG,CAAC,aAAc,QAAS,WAAY,cAAc,QAAarG,EAAkC,CAC3Ghc,WAAY3C,EAAM0f,0BAClB,sBAAuB7f,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAM0f,0BAA4B/e,GAC/FqH,YAAahI,EAAMgI,YACnBid,WAAYhlB,EAAS4f,iBACrBqF,SAAUjlB,EAASklB,cAClB,KAAM,EAAG,CAAC,aAAc,cAAe,aAAc,cAAc,QAAavG,EAA2B,CAC5Gjc,WAAY3C,EAAMolB,eAClB,sBAAuBvlB,EAAO,MAAQA,EAAO,IAAMc,GAAUX,EAAMolB,eAAiBzkB,GACpF,oBAAqBX,EAAMgI,YAC3B,gBAAiBhI,EAAMuG,YACvB,eAAgBvG,EAAMqlB,eACtBC,UAAWrlB,EAASslB,aACnB,KAAM,EAAG,CAAC,aAAc,oBAAqB,gBAAiB,eAAgB,eACnF,C,yJClmBA,MAAMC,GACFC,WAAAA,GACI/hB,KAAKgiB,eAAiB,qBACtBhiB,KAAKiiB,cAAgB,KACrBjiB,KAAKkiB,qBAAsB,CAC/B,CAGAC,gBAAAA,GACI,MAAMC,EAAWpiB,KAAKqiB,qBACtB,MAAO,IACAD,EACHE,MAAO,IAAKF,EAASE,OAAS,IAC9BC,YAAa,IAAKH,EAASG,aAAe,IAElD,CAEAF,kBAAAA,GACI,GAAIriB,KAAKiiB,cACL,OAAOjiB,KAAKiiB,cAGhB,IACI,MAAMG,EAAWI,aAAaC,QAAQziB,KAAKgiB,gBAE3C,OADAhiB,KAAKiiB,cAAgBG,EAAWnZ,KAAKyZ,MAAMN,GAAYpiB,KAAK2iB,sBACrD3iB,KAAKiiB,aAChB,CAAE,MAAOtkB,GAGL,OAFAiE,QAAQjE,MAAM,iCAAkCA,GAChDqC,KAAKiiB,cAAgBjiB,KAAK2iB,sBACnB3iB,KAAKiiB,aAChB,CACJ,CAGAW,mBAAAA,CAAoBR,GAChBpiB,KAAKiiB,cAAgBG,GAAYpiB,KAAK2iB,sBACtC,MAAME,EAAY7iB,KAAK8iB,uBAEvB,MAAO,CACHC,cAAc,EACdF,YAER,CAEAC,oBAAAA,GACI,IAEI,OADAN,aAAaQ,QAAQhjB,KAAKgiB,eAAgB/Y,KAAKC,UAAUlJ,KAAKiiB,iBACvD,CACX,CAAE,MAAOtkB,GAEL,OADAqC,KAAKijB,0BAA0BtlB,IACxB,CACX,CACJ,CAEAglB,mBAAAA,GACI,MAAO,CAAEL,MAAO,GAAIC,YAAa,GACrC,CAEAU,yBAAAA,CAA0BtlB,GACtBiE,QAAQshB,KAAK,uEAAwEvlB,GAErF,IACI6kB,aAAaW,WAAWnjB,KAAKgiB,eACjC,CAAE,MAAOoB,GACLxhB,QAAQshB,KAAK,0CAA2CE,EAC5D,CAEKpjB,KAAKkiB,sBACNliB,KAAKkiB,qBAAsB,EAC3BmB,GAAAA,GAAUza,QAAQ0a,GAAAA,GAAKC,OAAOC,EAAE,yCAExC,CAGAC,OAAAA,CAAQC,GACJ,IACI,MAAMtB,EAAWpiB,KAAKqiB,qBAEtB,OADAD,EAASE,MAAMla,KAAKsb,GACb1jB,KAAK4iB,oBAAoBR,GAAUW,YAC9C,CAAE,MAAOplB,GAEL,OADAiE,QAAQjE,MAAM,qBAAsBA,IAC7B,CACX,CACJ,CAGAgmB,SAAAA,CAAUpO,GACN,IACI,MAAM6M,EAAWpiB,KAAKqiB,qBACtB,OAAKD,EAASG,YAAY9iB,SAAS8V,KAC/B6M,EAASG,YAAYna,KAAKmN,GACnBvV,KAAK4iB,oBAAoBR,GAAUW,aAGlD,CAAE,MAAOplB,GAEL,OADAiE,QAAQjE,MAAM,uBAAwBA,IAC/B,CACX,CACJ,CAGAimB,QAAAA,CAASC,EAASC,EAAS3e,GAAW,EAAOb,EAAc,IACvD,IACI,IAAI8d,EAAWpiB,KAAKqiB,qBAEpB,GAAIld,EAAU,CAEV,MAAM4e,EAAiB3B,EAASG,YAAY1Z,QAAQgb,IAC5B,IAApBE,GACA3B,EAASG,YAAYzZ,OAAOib,EAAgB,EAGpD,KAAO,CAEH,MAAMC,EAAY5B,EAASE,MAAM2B,UAAUzc,GAAQA,EAAK3I,OAASglB,IAC9C,IAAfG,GAEA5B,EAASE,MAAMxZ,OAAOkb,EAAW,EAGzC,CAGA,GAAIF,EAAQjiB,WAAWyC,GAAc,CACjC,MAAM4f,EAAYJ,EAAQK,UAAU7f,EAAYK,QAAQM,MAAM,KAC9D,GAAIif,EAAUvf,OAAS,EAAG,CACtB,MAAMyf,EAAY9f,EAAc4f,EAAU,GACrC9B,EAASG,YAAY9iB,SAAS2kB,IAC/BhC,EAASG,YAAYna,KAAKgc,EAElC,CACJ,CAEA,OAAOpkB,KAAK4iB,oBAAoBR,GAAUW,YAC9C,CAAE,MAAOplB,GAEL,OADAiE,QAAQjE,MAAM,qBAAsBA,IAC7B,CACX,CACJ,CAGA0mB,UAAAA,CAAW3P,GACP,IACI,IAAI0N,EAAWpiB,KAAKqiB,qBAEpB,OADAD,EAASE,MAAQF,EAASE,MAAMpd,OAAOsC,GAAQA,EAAK3I,OAAS6V,GACtD1U,KAAK4iB,oBAAoBR,GAAUW,YAC9C,CAAE,MAAOplB,GAEL,OADAiE,QAAQjE,MAAM,uBAAwBA,IAC/B,CACX,CACJ,CAGA2mB,YAAAA,CAAa/O,GACT,IACI,IAAI6M,EAAWpiB,KAAKqiB,qBAGpB,OAFAD,EAASE,MAAQF,EAASE,MAAMpd,OAAOsC,IAASA,EAAK3I,KAAKgD,WAAW0T,EAAa,MAClF6M,EAASG,YAAcH,EAASG,YAAYrd,OAAOqf,GAAOA,IAAQhP,GAC3DvV,KAAK4iB,oBAAoBR,GAAUW,YAC9C,CAAE,MAAOplB,GAEL,OADAiE,QAAQjE,MAAM,yBAA0BA,IACjC,CACX,CACJ,CAGA6mB,gBAAAA,CAAiBjP,GACb,IACI,MAAM6M,EAAWpiB,KAAKqiB,qBAChBC,EAAQF,EAASE,MAAMpd,OAAOsC,GAAQA,EAAK3I,KAAKgD,WAAW0T,EAAa,MACxEkP,EAAiBrC,EAASG,YAAYrd,OAAOqf,GAAOA,EAAI1iB,WAAW0T,EAAa,MACtF,MAAO,CAAE+M,QAAOC,YAAakC,EACjC,CAAE,MAAO9mB,GAEL,OADAiE,QAAQjE,MAAM,iCAAkCA,GACzC,CAAE2kB,MAAO,GAAIC,YAAa,GACrC,CACJ,CAGAmC,iBAAAA,CAAkBpN,GACd,IAAIqN,EAAS,GAqBb,OAnBIrN,EAAQlB,cAAgBkB,EAAQlB,aAAazR,OAAS,IACtDggB,GAAU,iBAAiB5c,mBAAmBuP,EAAQlB,aAAarR,KAAK,SAGxEuS,EAAQ9H,UAAY8H,EAAQ9H,SAAS7K,OAAS,IAC9CggB,GAAU,aAAa5c,mBAAmBuP,EAAQ9H,SAASzK,KAAK,SAEhEuS,EAAQ3X,OAAS2X,EAAQ3X,MAAMgF,OAAS,IACxCggB,GAAU,UAAU5c,mBAAmBuP,EAAQ3X,MAAMoF,KAAK,SAE1DuS,EAAQnI,UAAYmI,EAAQnI,SAASxK,OAAS,IAC9CggB,GAAU,aAAa5c,mBAAmBuP,EAAQnI,SAASpK,KAAK,SAEhEuS,EAAQX,SAAWW,EAAQX,QAAQhS,OAAS,IAC5CggB,GAAU,YAAY5c,mBAAmBuP,EAAQX,QAAQ5R,KAAK,SAE9DuS,EAAQR,aAAeQ,EAAQR,YAAYnS,OAAS,IACpDggB,GAAU,gBAAgB5c,mBAAmBuP,EAAQR,YAAY/R,KAAK,SAEnE4f,CACX,CAGA,qBAAM5F,CAAgBwF,EAAKK,EAAS,GAAIC,EAAc,GAAIC,EAAc,GAAIxN,EAAU,CAAC,GACnFsN,EAASA,EAAOpc,OAChB,IACI,IAAIuc,EAAM,iCAAiCR,YAAcxc,mBAAmB6c,KACxEC,IACAE,GAAO,gBAAgBhd,mBAAmB8c,MAE1CC,IACAC,GAAO,gBAAgBhd,mBAAmB+c,MAG9CC,GAAO/kB,KAAK0kB,kBAAkBpN,GAE9B,MAAMrW,QAAiBC,EAAAA,EAAAA,GAAc6jB,EAAK,CACtC5jB,OAAQ,QAEN6jB,QAAoB/jB,EAASK,OAKnC,OAJK0jB,EAAYC,mBACb5B,GAAAA,GAAUza,QAAQ0a,GAAAA,GAAKC,OAAOC,EAAE,8BAG7BxjB,KAAK4iB,oBAAoBoC,GAAajC,YACjD,CAAE,MAAOplB,GAEL,OADAiE,QAAQjE,MAAM,8BAA+BA,IACtC,CACX,CACJ,CAGA,mBAAMunB,CAAcX,EAAKK,EAAS,GAAIC,EAAc,GAAIC,EAAc,GAAIlf,EAAQ,GAAI0R,EAAU,CAAC,GAC7FsN,EAASA,EAAOpc,OAChB,IACI,MAAM4Z,EAAWpiB,KAAKqiB,qBAChB8C,EAAQ/C,EAASE,MAAM3d,OAE7B,IAAIogB,EAAM,wBAAwBR,WAAaY,WAAevf,YAAgBmC,mBAAmB6c,KAC7FC,IACAE,GAAO,gBAAgBhd,mBAAmB8c,MAE1CC,IACAC,GAAO,gBAAgBhd,mBAAmB+c,MAG9CC,GAAO/kB,KAAK0kB,kBAAkBpN,GAE9B,MAAMrW,QAAiBC,EAAAA,EAAAA,GAAc6jB,EAAK,CACtC5jB,OAAQ,QAGNikB,QAAkBnkB,EAASK,OAEjC,OADA8gB,EAASE,MAAMla,QAAQgd,EAAU9C,OAC1BtiB,KAAK4iB,oBAAoBR,GAAUW,YAC9C,CAAE,MAAOplB,GAEL,OADAiE,QAAQjE,MAAM,4BAA6BA,GACpC,CAAE2kB,MAAO,GAAIC,YAAa,GACrC,CACJ,EAGG,MAAM8C,GAAc,IAAIvD,G,wCClQxB,SAASwD,GAAeC,EAAOC,GACpC,QACED,EAAME,OAASD,EAAMnH,MACrBkH,EAAMlH,MAAQmH,EAAMC,OACpBF,EAAMG,QAAUF,EAAMjH,KACtBgH,EAAMhH,KAAOiH,EAAME,OAEvB,CAQO,SAASC,GAAkBR,EAAOS,GACvC,MAAMvH,EAAOY,KAAK4G,IAAIV,EAAMW,EAAGF,EAAQE,GACjCvH,EAAMU,KAAK4G,IAAIV,EAAMY,EAAGH,EAAQG,GAChC5oB,EAAQ8hB,KAAK+G,IAAIJ,EAAQE,EAAIX,EAAMW,GACnCpW,EAASuP,KAAK+G,IAAIJ,EAAQG,EAAIZ,EAAMY,GAC1C,MAAO,CAAE1H,OAAME,MAAKphB,QAAOuS,SAAQ+V,MAAOpH,EAAOlhB,EAAOuoB,OAAQnH,EAAM7O,EACxE,CCbO,SAASuW,GAAcC,GAC5B,MAAM,MACJC,EAAK,aACLC,EAAe,kBAAiB,SAChCtK,EAAQ,MACRuK,GACEH,EAGE9J,GAAale,EAAAA,GAAAA,KAAI,GACjBogB,GAAgBpgB,EAAAA,GAAAA,IAAI,CAAEmgB,KAAM,EAAGE,IAAK,EAAGphB,MAAO,EAAGuS,OAAQ,EAAG+V,MAAO,EAAGC,OAAQ,IAGpF,IAAIY,EAAa,KACbC,EAAoB,GACpBC,GAAe,EAGnB,MAAMC,EAAoB,IAC1B,IAAIC,GAAmB,EAGvB,MAAMC,EAAiB,GACjBC,EAAe,GACrB,IAAIC,EAAkB,KAGlBC,EAAkB,GAUtB,SAASC,IACP,MAAMC,GAAOC,EAAAA,GAAAA,IAAQnL,GACrB,OAAOqK,EAAMa,SAASvpB,CACxB,CAUA,SAASypB,IACP,MAAMF,GAAOC,EAAAA,GAAAA,IAAQnL,GACrB,OAAiB,SAATkL,GAA4B,SAATA,IAAoBnnB,OAAOC,WAAa2mB,CACrE,CAMA,SAASU,IACHD,IACGR,GACHU,IAGEV,IACFW,IACAC,IAGN,CAUA,SAASC,EAAYtV,GACnB,MAAM7B,EAAS6B,EAAM7B,OAEfoX,EAAWpX,EAAOqX,QAAQrB,GAChC,IAAKoB,EAAU,OAAO,EAEtB,MAAME,EAASX,IACf,GAAIW,EAAQ,CACV,MAAMC,EAASvX,EAAOqX,QAAQC,EAAOE,cACrC,GAAID,EAAQ,CACV,MAAME,GAAYZ,EAAAA,GAAAA,IAAQS,EAAOI,cACjC,GAAID,GAAaA,EAAUE,SAASJ,GAClC,OAAO,CAEX,CACF,CAEA,MAAMK,EAAc5X,EAAOqX,QAAQ,8IACnC,OAAIO,CAIN,CAKA,SAASC,EAAkBhW,GACzB,OAAOA,EAAMiW,UAAYjW,EAAMkW,SAAWlW,EAAMmW,OAClD,CAKA,SAASC,IACP,MAAMC,GAAerB,EAAAA,GAAAA,IAAQZ,GAC7BE,EAAoB+B,EAAa5gB,IAAKoL,KAAWA,EAAKO,SACxD,CAOA,IAAIkV,EAAc,EAQlB,SAASC,IAGP,SAASC,IACP,MAAMC,EAAiB7oB,OAAO8oB,YAC9B,IAAIC,EAAc,EAEdL,GAAeG,EAAiB/B,EAElCiC,EAAchC,EACL2B,GAAe5B,IAExBiC,GAAehC,GAGG,IAAhBgC,IACF/oB,OAAOgpB,SAAS,EAAGD,GAMftC,IACFA,EAAWP,GAAK6C,EAChBtK,EAAc9e,MAAQmmB,GAAkBW,EAAY,CAAER,EAAGxH,EAAc9e,MAAMimB,OAASa,EAAWR,EAAIxH,EAAc9e,MAAMimB,MAAQnH,EAAc9e,MAAM6e,KAAM0H,EAAGwC,IAC9JO,MAKJjC,EAAkBkC,sBAAsBN,EAC1C,CA9BwB,OAApB5B,IAgCJA,EAAkBkC,sBAAsBN,GAC1C,CAKA,SAASO,IACiB,OAApBnC,IACFoC,qBAAqBpC,GACrBA,EAAkB,KAEtB,CASA,SAASqC,IACPpC,EAAkB9R,SAAShM,KAAKpE,MAAMukB,WACtCnU,SAAShM,KAAKpE,MAAMukB,WAAa,MACnC,CAKA,SAASC,IACPpU,SAAShM,KAAKpE,MAAMukB,WAAarC,CACnC,CAKA,SAASgC,IACP,MAAMpB,EAASX,IACf,IAAKW,EAAQ,OAEb,MAAMG,GAAYZ,EAAAA,GAAAA,IAAQS,EAAOI,cACjC,IAAKD,EAAW,OAEhB,MAAMS,GAAerB,EAAAA,GAAAA,IAAQZ,GACvBgD,EAAO/K,EAAc9e,MAGrB8pB,EAAU,CACdjL,KAAMgL,EAAKhL,KACXE,IAAK8K,EAAK9K,IACVkH,MAAO4D,EAAK5D,MACZC,OAAQ2D,EAAK3D,QAIT6D,EAAe1B,EAAU2B,iBAAiB9B,EAAOE,cAGvDU,EAAa3Q,QAAQ,CAAC7E,EAAMpO,KAC1B,MAAMijB,EAAS4B,EAAa7kB,GAC5B,IAAKijB,EAAQ,OAEb,MAAM8B,EAAW9B,EAAO+B,wBAClBC,EAAa,CACjBtL,KAAMoL,EAASpL,KACfE,IAAKkL,EAASlL,IACdkH,MAAOgE,EAAShE,MAChBC,OAAQ+D,EAAS/D,QAGbkE,EAAatE,GAAegE,EAASK,GAEvCnD,GAIED,EAAkB7hB,GACpBoO,EAAKO,UAAW,EAMlBP,EAAKO,SAAWuW,GAGtB,CAMA,SAASC,EAAY5X,GAEnB,GAAqB,IAAjBA,EAAM6X,QAGLvC,EAAYtV,GAAjB,CAYA,GATAqU,EAAa,CAAER,EAAG7T,EAAM8X,QAAShE,EAAG9T,EAAM+X,SAG1CxD,EAAeyB,EAAkBhW,GAGjCoW,KAGK7B,EAAc,CACjB,MAAM8B,GAAerB,EAAAA,GAAAA,IAAQZ,GAC7BiC,EAAa3Q,QAAS7E,IACpBA,EAAKO,UAAW,GAEpB,CAGA+I,EAAW5c,OAAQ,EACnB8e,EAAc9e,MAAQmmB,GAAkBW,EAAYA,GAGpD4C,IAGAlU,SAASpU,iBAAiB,YAAaqpB,GACvCjV,SAASpU,iBAAiB,UAAWspB,EA5BN,CA6BjC,CAEA,SAASD,EAAYhY,GACnB,IAAKmK,EAAW5c,QAAU8mB,EAAY,OAEtC,MAAM6D,EAAe,CAAErE,EAAG7T,EAAM8X,QAAShE,EAAG9T,EAAM+X,SAGlDzB,EAActW,EAAM+X,QAGpB1L,EAAc9e,MAAQmmB,GAAkBW,EAAY6D,GAGpDrB,IAGA,MAAMJ,EAAiB7oB,OAAO8oB,YAC1BJ,GAAe5B,GAAkB4B,GAAeG,EAAiB/B,EACnE6B,IAEAQ,GAEJ,CAEA,SAASkB,EAAUE,GACZhO,EAAW5c,QAGhBwpB,IAGAI,IAGAhN,EAAW5c,OAAQ,EACnB8e,EAAc9e,MAAQ,CAAE6e,KAAM,EAAGE,IAAK,EAAGphB,MAAO,EAAGuS,OAAQ,EAAG+V,MAAO,EAAGC,OAAQ,GAChFY,EAAa,KAGbtR,SAASjU,oBAAoB,YAAakpB,GAC1CjV,SAASjU,oBAAoB,UAAWmpB,GAC1C,CAMA,SAAS9C,IACFV,IACH1R,SAASpU,iBAAiB,YAAaipB,GACvCnD,GAAmB,EAEvB,CAEA,SAASY,IACHZ,IACF1R,SAASjU,oBAAoB,YAAa8oB,GAC1CnD,GAAmB,EAEvB,CAKA,SAASW,IACHjL,EAAW5c,QACbwpB,IACAI,IACAhN,EAAW5c,OAAQ,EACnB8e,EAAc9e,MAAQ,CAAE6e,KAAM,EAAGE,IAAK,EAAGphB,MAAO,EAAGuS,OAAQ,EAAG+V,MAAO,EAAGC,OAAQ,GAChFY,EAAa,KACbtR,SAASjU,oBAAoB,YAAakpB,GAC1CjV,SAASjU,oBAAoB,UAAWmpB,GAE5C,CAcA,SAASG,IACPlD,GACF,CAmBA,OA9BAlnB,EAAAA,EAAAA,IACE,KAAMgnB,EAAAA,GAAAA,IAAQnL,GACd,KACEuL,IACAF,OASJmD,EAAAA,EAAAA,IAAU,KAEJpD,KACFE,IAGFvnB,OAAOe,iBAAiB,SAAUypB,MAGpCE,EAAAA,EAAAA,IAAgB,KACdlD,IACA+B,IACAJ,IACA1B,IACAznB,OAAOkB,oBAAoB,SAAUspB,KAGhC,CACLjO,aACAkC,gBAEJ,CChYA,QACEzf,KAAM,iBACN2rB,OAAQ,CAACC,GAAA,GACT,IAAAtsB,GACE,MAAO,CACLqT,OAAQ,EACRkZ,gBAAiB,EAEjBC,kBAAmB,EAEnBC,kBAAkB,EAClBC,UAAW,GACX1P,WAAY,GACZyJ,OAAQ,GACRkG,eAAgB,GAEhBC,kBAAmB,GAEnBC,kBAAmB,GAEnBlO,cAAc,EACd6B,YAAa,EACbhC,SAAU,GACVxV,cAAe,GACf8jB,WAAY,WACZC,aAAa,EACbvL,kBAAkB,EAClBC,WAAY,KACZuL,aAAc,YACd1K,iBAAkB,YAClBhF,eAAe,EACfiF,aAAc,QAEdC,gBAAiB,GAEjB7hB,SAAS,EAETwF,YAAa,GAEb0a,gBAAgB,EAChB4B,eAAe,EAEfI,oBAAoB,EAEpBH,eAAgB,GAEhB/E,SAAU,OAEVoF,uBAAuB,EAEvBG,iBAAkB,KAElB+J,mBAAoB,EAEpBjK,sBAAsB,EAEtBkK,eAAgB,KAEhBrP,2BAA2B,EAE3BqD,SAAU,GAGV/H,QAAS,CACPlB,aAAc,GAEd5G,SAAU,GAEV7P,MAAO,GAEPwP,SAAU,GAEVwH,QAAS,GAETG,YAAa,IAEfD,mBAAoB,GAGpB6K,gBAAgB,EAEhBC,eAAgB,IAEhB2J,YAAa,GAEbC,eAAgB,EAEhB1oB,aAAa,EAEb2oB,gBAAiB,KACjBC,gBAAiB,KACjBC,mBAAoB,EAExB,EACA9nB,WAAY,CACV+nB,cAAa,KACbC,oBAAmB,GACnBC,eAAc,GACdC,eAAc,GACdC,SAAQ,GACRC,WAAU,GACVC,aAAY,GACZC,iBAAgB,GAChBC,eAAc,GACdC,kBAAiB,EACjBC,sBAAqB,EACrBjZ,kBAAiB,GACjBkZ,eAAc,GACdC,eAAc,EACdC,iBAAgB,MAElB,KAAAC,GACE,MAAMC,GAAmB,SAAI,MACvBC,GAAmB,SAAI,MACvBC,GAAc,SAAI,QAClBC,GAAW,SAAI,KACf,WACJzQ,EAAU,cACVkC,GACE2H,GAAc,CAChBE,MAAO,CACL2G,KAAM,CACJhF,aAAc4E,EACd9E,aAAc,aAEhBmF,KAAM,CACJjF,aAAc6E,EACd/E,aAAc,eAGlB9L,SAAU8Q,EACVvG,MAAOwG,IAET,MAAO,CACLH,mBACAC,mBACAC,cACAC,WACAzQ,aACAkC,gBAEJ,EACAve,SAAU,KACL,SAAW,CAAC,mBAAoB,eACnC,iBAAA2e,GACE,OAAO1e,KAAK6qB,SACd,EACA,UAAAmC,GACE,OAAO/N,KAAKC,KAAKlf,KAAK0e,kBAAkB/Z,OAAS3E,KAAK2c,WAAa,CACrE,EAEA,cAAAyC,GACE,MAAMX,EAAQze,KAAK2qB,kBAAoB3qB,KAAK0qB,gBAC5C,OAAOzL,KAAKC,KAAKT,EAAQze,KAAK2c,WAAa,CAC7C,EAEA,iBAAAvF,GACE,OAAOlI,OAAOqI,OAAOvX,KAAKsX,SAASE,OAAO,CAAC5R,EAAO6R,IAAQ7R,GAASwB,MAAM0Q,QAAQL,GAAOA,EAAI9S,OAAS,GAAI,EAC3G,EAEA,iBAAAkY,GACE,OAAO7c,KAAK8c,cAAgB9c,KAAKoX,kBAAoB,CACvD,EACA,kBAAAwF,GACE,MAAMqQ,EAAajtB,KAAKktB,SAASltB,KAAK0e,mBAChCyG,GAASnlB,KAAK2e,YAAc,GAAK3e,KAAK2c,SACtCwQ,EAAMhI,EAAQnlB,KAAK2c,SACzB,IAAIxe,EAAO8uB,EAAWnoB,MAAMqgB,EAAOgI,GAEnC,MAAMC,EAAWjvB,EAAK+G,OAAOsC,GAAQxH,KAAK6M,QAAQrF,IAAOE,IAAIF,GAAQxH,KAAKyd,YAAYjW,EAAK3I,OA2B3F,OA1BAV,EAAKwZ,QAAQnQ,IACPxH,KAAK6M,QAAQrF,KAEfA,EAAKiN,eAAiB2Y,EAAStoB,MAAMsoB,EAASvkB,QAAQ7I,KAAKyd,YAAYjW,EAAK3I,QAAQwuB,OAAOD,EAAStoB,MAAM,EAAGsoB,EAASvkB,QAAQ7I,KAAKyd,YAAYjW,EAAK3I,YAIxJV,EAAKwZ,QAAQnQ,IACoB,gBAA3BA,EAAKuE,UAAU6B,SAAwD,aAA3BpG,EAAKuE,UAAU6B,QAC7DpG,EAAK0L,WAAa,KACkB,iBAA3B1L,EAAKuE,UAAU6B,QACxBpG,EAAK0L,WAAa,KACkB,OAA3B1L,EAAKuE,UAAU6B,QACxBpG,EAAK0L,WAAa,KACkB,YAA3B1L,EAAKuE,UAAU6B,QACxBpG,EAAK0L,WAAa,KACkB,gBAA3B1L,EAAKuE,UAAU6B,QACxBpG,EAAK0L,WAAa,KACkB,WAA3B1L,EAAKuE,UAAU6B,QACxBpG,EAAK0L,WAAa,KACkB,aAA3B1L,EAAKuE,UAAU6B,QACxBpG,EAAK0L,WAAalT,KAAKhC,GAAG,yBAE1BwJ,EAAK0L,WAAalT,KAAKhC,GAAG,0BAGvBG,CACT,EACA,QAAAqd,GACE,MAA2B,aAApBxb,KAAKirB,WAA4B,mBAAqB,eAC/D,EACA,WAAAvlB,GACE,OAAO7F,OAAOC,WAAa,IAAM,MAAQ,KAC3C,EACA,iBAAAwtB,GACE,OAAOztB,OAAOC,WAAa,IAAM,MAAQ,KAC3C,EACA,UAAAiO,GACE,MAA4C,UAAxC/N,KAAK4f,YAAY7T,UAAU0D,SACtBzP,KAAKhC,GAAG,iBACkC,UAAxCgC,KAAK4f,YAAY7T,UAAU0D,UAA6D,UAArCzP,KAAK4f,YAAY7T,UAAUiC,MAChFhO,KAAKhC,GAAG,kBAERgC,KAAKhC,GAAG,gBAEnB,EACA,MAAA6hB,GAEE,MAA2C,aAAvC7f,KAAK4f,YAAY7T,UAAU6B,QACtB,CACL,UAAa,GAAG5N,KAAK4f,YAAY7T,UAAUwhB,eAC3C,MAAS,KAAKvtB,KAAK4f,YAAY7T,UAAUqB,UAAYpN,KAAK4f,YAAY/gB,SAASmB,KAAK4f,YAAY7T,UAAUwhB,gBAC1G,QAAW,aAAavtB,KAAK4f,YAAY7T,UAAUwhB,sBAAsBvtB,KAAK4f,YAAY7T,UAAUqB,UAAYpN,KAAK4f,YAAY/gB,oBACjI,MAAS,QAAQmB,KAAK4f,YAAY7T,UAAUwhB,qBAC5C,KAAQvtB,KAAK4f,YAAY7T,UAAUC,UAAYhM,KAAKhC,GAAG,sBACvD,WAAcgC,KAAK4f,YAAY7T,UAAUG,YAAclM,KAAKhC,GAAG,sBAC/D,aAAgBgC,KAAK4f,YAAY7T,UAAUI,cAAgBnM,KAAKhC,GAAG,uBAG9D,CACL,UAAa,GAAGgC,KAAKwtB,UAAUxtB,KAAK4f,YAAY/gB,OAChD,MAAS,KAAKmB,KAAK4f,YAAY7T,UAAUqB,UAAYpN,KAAK4f,YAAY/gB,SAASmB,KAAKwtB,UAAUxtB,KAAK4f,YAAY/gB,QAC/G,QAAW,aAAamB,KAAKwtB,UAAUxtB,KAAK4f,YAAY/gB,cAAcmB,KAAK4f,YAAY7T,UAAUqB,UAAYpN,KAAK4f,YAAY/gB,oBAC9H,MAAS,QAAQmB,KAAKwtB,UAAUxtB,KAAK4f,YAAY/gB,aACjD,KAAQmB,KAAK4f,YAAY7T,UAAUC,UAAYhM,KAAKhC,GAAG,sBACvD,WAAcgC,KAAK4f,YAAY7T,UAAUG,YAAclM,KAAKhC,GAAG,sBAC/D,aAAgBgC,KAAK4f,YAAY7T,UAAUI,cAAgBnM,KAAKhC,GAAG,sBAGzE,EACA,cAAAyvB,GACE,OAAO5tB,OAAOC,WAAa,IAAM,EAAI,CACvC,EACA,gBAAA4tB,GACE,OAAO7tB,OAAOC,WAAa,IAAM,EAAI,CACvC,EACA,cAAAoR,GACE,OAAOrR,OAAOC,WAAa,GAC7B,EACA,UAAA6b,GAEE,OAAO3b,KAAK4c,mBAAmBtU,MAAMd,GAAQA,EAAK6L,SACpD,EACA,iBAAAuI,GAEE,OAAO5b,KAAK4c,mBAAmB+Q,KAAKnmB,GAAQA,EAAK6L,SACnD,EACA,OAAAma,GAEE,MAA6B,SAAtBxtB,KAAK0gB,aAA0B1gB,KAAK2gB,gBAAkB3gB,KAAK4tB,YAAYC,WAAa,GAAG7Y,SAAS8Y,SAASC,cAClH,EACA/P,YAAa,CACX,GAAAxc,GACE,OAAOxB,KAAK4c,mBAAmBjY,OAAS,GAAK3E,KAAK4c,mBAAmBtU,MAAMd,GAAQA,EAAK6L,SAC1F,EACA,GAAApP,CAAIC,GACFlE,KAAK4c,mBAAmBjF,QAAQnQ,GAAQA,EAAK6L,SAAWnP,EAC1D,GAEF,eAAA+Z,GACE,MAAMhN,EAAgBjR,KAAK4c,mBAAmB1X,OAAOsC,GAAQA,EAAK6L,UAAU1O,OAC5E,OAAOsM,EAAgB,GAAKA,EAAgBjR,KAAK4c,mBAAmBjY,MACtE,EACA,UAAAia,GACE,OAAO/e,OAAOC,WAAa,IAAM,EAAI,CACvC,GAEFG,MAAO,CAEL6b,SAAU,CACR,OAAAlE,CAAQ1X,GACNF,KAAK4sB,YAAc1sB,CACrB,EACA6X,WAAW,GAGb6E,mBAAoB,CAClB,OAAAhF,CAAQ1X,GACNF,KAAK6sB,SAAW3sB,CAClB,EACA6X,WAAW,GAEb8S,UAAW,CACT,OAAAjT,CAAQoW,GAENhuB,KAAKmH,cAAgBnH,KAAKmH,cAAckmB,OAAOW,EAAQ9oB,OAAOsC,GAAQA,EAAK6L,WAAarT,KAAKmH,cAAc1H,SAAS+H,KAEpHxH,KAAKmH,cAAgBnH,KAAKmH,cAAcjC,OAAOsC,GAAQA,EAAK6L,UAE5DrT,KAAKmH,cAAgBnH,KAAKmH,cAAcjC,OAAOsC,GAAQwmB,EAAQvuB,SAAS+H,GAC1E,EACAwQ,MAAM,GAER,UAAAiT,CAAWgD,GACTzL,aAAaQ,QAAQ,aAAciL,EACrC,EACA,gBAAAxN,CAAiByN,GACf1L,aAAaQ,QAAQ,mBAAoBkL,EAC3C,EACA,gBAAAvO,CAAiBzf,GACXA,IACFF,KAAKmrB,aAAenrB,KAAKygB,kBAAoB,YAEjD,EACA,eAAAE,CAAgBzc,GACdlE,KAAKmuB,OAAOC,OAAO,sBAAuB,CACxC1yB,IAAK,kBACL8D,MAAO0E,GAEX,EACA,YAAAwc,CAAaxc,GACXlE,KAAKmuB,OAAOC,OAAO,sBAAuB,CACxC1yB,IAAK,eACL8D,MAAO0E,GAEX,EACA,WAAAI,CAAYJ,GAEVlE,KAAK6qB,UAAUlT,QAAQnQ,GAAQA,EAAK6L,UAAW,EACjD,GAEFrS,QAAS,CAEP,WAAA+a,CAAYiL,GACNhnB,KAAK8b,WAAakL,IAGtBhnB,KAAK8b,SAAWkL,EAChBxE,aAAaQ,QAAQ,WAAYhjB,KAAK8b,UACxC,EAEA,mBAAAoC,CAAoBha,GAClBlE,KAAK4c,mBAAmBjF,QAAQnQ,GAAQA,EAAK6L,SAAWnP,EAC1D,EAEA,gBAAA6Z,CAAiBjL,EAAMpO,GACrB1E,KAAKqrB,eAAiBlrB,WAAW,KAC/BH,KAAKqhB,iBAAmBvO,EACxB9S,KAAKorB,kBAAoB1mB,EACzB1E,KAAKmhB,sBAAuB,EAC5BnhB,KAAKkhB,uBAAwB,GAC5B,IACL,EAEA,cAAA1D,GACMxd,KAAKqrB,iBACP9iB,aAAavI,KAAKqrB,gBAClBrrB,KAAKqrB,eAAiB,KAE1B,EAEA,sBAAA9N,CAAuBzK,EAAMpO,GAC3B1E,KAAKqrB,eAAiBlrB,WAAW,KAC/BH,KAAKqhB,iBAAmBvO,EACxB9S,KAAKorB,kBAAoB1mB,EACzB1E,KAAKmhB,sBAAuB,EAC5BnhB,KAAKkhB,uBAAwB,GAC5B,IACL,EAEA,kBAAAI,CAAmBjc,GACjB,MAAMmC,EAAOxH,KAAKqhB,iBACZ3c,EAAQ1E,KAAKorB,kBAEnB,GADAprB,KAAKkhB,uBAAwB,EACxB1Z,EACL,OAAQnC,GACN,IAAK,SACHrF,KAAK2d,iBAAiBjZ,EAAO8C,EAAK3I,MAClC,MACF,IAAK,OACHmB,KAAK4d,WAAWlZ,EAAO8C,EAAK3I,MAC5B,MACF,IAAK,aACHmB,KAAKkd,iBAAiB1V,EAAK3I,MAC3B,MACF,IAAK,WACHmB,KAAK8d,eAAetW,EAAK3I,MACzB,MACF,IAAK,OACHmB,KAAKod,WAAW1Y,EAAO8C,EAAK3I,MAC5B,MACF,IAAK,SACHmB,KAAKsd,aAAa5Y,EAAO8C,EAAK3I,MAC9B,MACF,IAAK,MACHmB,KAAK+f,oBAAoBvY,EAAK3I,MAC9B,MAEN,EAEA,YAAA4iB,GACE,MAAMjd,EAAYxE,KAAKsE,YAAYW,MAAM,KAAKC,OAAOpB,SACrD,GAAIU,EAAUG,OAAS,EAAG,CACxBH,EAAUyX,MACV,MAAMoS,EAAa7pB,EAAUO,KAAK,KAClC/E,KAAKmc,iBAAiBkS,EACxB,CACAruB,KAAKgc,2BAA4B,CACnC,EAEA,WAAA/I,CAAYvO,GACV,MAAM4pB,EAAS,CAAC,oDAAqD,oDAAqD,oDAAqD,oDAAqD,oDAAqD,qDACzR,OAAOA,EAAO5pB,EAAQ4pB,EAAO3pB,OAC/B,EAEA,gBAAAsP,CAAiBhC,EAAOqD,GACtB,MAAMnF,EAAQ8B,EAAM7B,OAChBkF,EACFnF,EAAMG,OAAO3G,MAAM,SAEnBwG,EAAMI,QACNJ,EAAMkF,YAAc,EAExB,EAEA,cAAAkZ,CAAeC,GACb,IAAKA,GAAmB,IAAVA,EAAa,MAAO,IAElC,GADAA,EAAQhd,OAAOgd,GACXC,MAAMD,GAAQ,MAAO,IACzB,MAAME,EAAQ,CAAC,IAAK,KAAM,KAAM,KAAM,MACtC,IAAIjZ,EAAI,EACR,MAAO+Y,GAAS,MAAQ/Y,EAAIiZ,EAAM/pB,OAAS,EACzC6pB,GAAS,KACT/Y,IAEF,OAAO+Y,EAAMxe,QAAQyF,EAAI,EAAI,EAAI,GAAK,IAAMiZ,EAAMjZ,EACpD,EACA,YAAA2F,GAOE,GANApb,KAAK4kB,OAAS5kB,KAAKmb,WACnBnb,KAAK8c,aAAsC,KAAvB9c,KAAK4kB,OAAOpc,OAChCxI,KAAK2e,YAAc,EAIf3e,KAAK4kB,QAAU5kB,KAAK4kB,OAAOpc,OAAQ,CACrC,MAAMqc,EAAc,GACdC,EAAc,GAGpB,IAAI6J,EAAa3uB,KAAK4kB,OAGtB,MAAMgK,EAAkB,uEACxBD,EAAaA,EAAWE,QAAQD,EAAiB,CAACE,EAAOvoB,KACvDue,EAAY1c,KAAK7B,EAAIoC,eACd,MAIT,MAAMomB,EAAkB,sEACxBJ,EAAaA,EAAWE,QAAQE,EAAiB,CAACD,EAAOvoB,KACvDse,EAAYzc,KAAK7B,EAAIoC,eACd,MAIT3I,KAAK8qB,eAAiB6D,EAAWE,QAAQ,OAAQ,KAAKrmB,OAGtDxI,KAAK+qB,kBAAoBlG,EAAY9f,KAAK,KAC1C/E,KAAKgrB,kBAAoBlG,EAAY/f,KAAK,KAC1CnD,QAAQotB,IAAI,mBAAoBhvB,KAAK8qB,gBACrClpB,QAAQotB,IAAI,gBAAiBhvB,KAAK+qB,mBAClCnpB,QAAQotB,IAAI,gBAAiBhvB,KAAKgrB,kBACpC,MACEhrB,KAAK8qB,eAAiB,GACtB9qB,KAAK+qB,kBAAoB,GACzB/qB,KAAKgrB,kBAAoB,GAE3BhrB,KAAK+e,iBACP,EAEA,kBAAA1I,EAAmB,KACjBxY,EAAI,QACJyZ,IAEAtX,KAAKsX,QAAUA,EACftX,KAAK2e,YAAc,EACnB3e,KAAK+e,iBACP,EAEA,YAAA5H,GACEnX,KAAKsX,QAAU,CACb9H,SAAU,GACV7P,MAAO,GACPwP,SAAU,GACVwH,QAAS,GACTG,YAAa,IAEf9W,KAAK2e,YAAc,EACnB3e,KAAK+e,iBACP,EAEA,yBAAMkQ,GACJ,IACE,MAAMhuB,QAAiB,EAAAC,EAAA,GAAc,qCAAsC,CACzEC,OAAQ,QAEV,GAAIF,EAASG,GAAI,CACf,MAAM8V,QAAiBjW,EAASK,OAC1BsV,EAAiB,GAGjBsY,EAAa,CACjBC,SAAU,WACVC,KAAM,gBACNC,GAAI,KACJC,QAAS,UACTC,YAAa,cACbC,OAAQ,UAIVtgB,OAAOugB,QAAQvY,GAAUS,QAAQ,EAAE9Z,EAAM6xB,MACnCtoB,MAAM0Q,QAAQ4X,IAAgBA,EAAY/qB,OAAS,GACrD+qB,EAAY/X,QAAQhB,IACdA,EAAQ9X,MACV+X,EAAexO,KAAK,CAClBvJ,KAAM8X,EAAQ9X,KACdhB,KAAM8Y,EAAQ9Y,KACdoZ,UAAWiY,EAAWrxB,IAASA,EAE/B2B,MAAO,GAAGmX,EAAQ9Y,QAAQ8Y,EAAQ9X,aAQ5C+X,EAAe2E,KAAK,CAACoU,EAAGC,IAClBD,EAAE9xB,OAAS+xB,EAAE/xB,KACR8xB,EAAE9xB,KAAKgyB,cAAcD,EAAE/xB,MAEzB8xB,EAAE9wB,KAAKgxB,cAAcD,EAAE/wB,OAEhCmB,KAAK6W,mBAAqBD,CAC5B,CACF,CAAE,MAAOjZ,GACPiE,QAAQjE,MAAM,iCAAkCA,EAClD,CACF,EACA,cAAAmgB,CAAepiB,GACb,MAAMo0B,EAAO9a,SAAS+a,cAAc,KACpCD,EAAKE,KAAOhwB,KAAKyd,YAAY/hB,GAC7Bo0B,EAAKG,SAAWv0B,EAChBo0B,EAAKI,OACP,EACA,gBAAAvS,CAAiBjZ,EAAOhJ,GACtBsE,KAAK4f,WAAa5f,KAAK4c,mBAAmBlY,GAC1C1E,KAAK2f,kBAAmB,CAC1B,EACA,cAAApU,CAAe4kB,GACbnwB,KAAKmrB,aAAegF,EAAI9xB,MAAMQ,IAChC,EACA,cAAA8M,CAAesG,GAEbvB,UAAUC,UAAUC,UAAUqB,EAAM7B,OAAO5Q,OAAOiK,KAAK,KACrDzJ,KAAKowB,SAAS,CACZvyB,KAAM,UACN4M,QAASzK,KAAKhC,GAAG,6BAElB2L,MAAM,KACP3J,KAAKowB,SAAS,CACZvyB,KAAM,QACN4M,QAASzK,KAAKhC,GAAG,2BAGvB,EACA,kBAAAoiB,CAAmB1kB,GACjBsE,KAAKqwB,SAASrwB,KAAKhC,GAAG,2BAA4BgC,KAAKhC,GAAG,gCAAiC,CACzFuL,kBAAmBvJ,KAAKhC,GAAG,6BAC3BwL,iBAAkBxJ,KAAKhC,GAAG,iCAC1BH,KAAM,YACL4L,KAAK,MACN,EAAAvI,EAAA,GAAc,sBAAsBxF,IAAO,CACzCyF,OAAQ,QACPsI,KAAKxI,IACN,IAAIA,EAASG,GAMX,OAAO6G,QAAQqoB,OAAO,kBANP,CACf,MAAMtM,EAAYhkB,KAAK6qB,UAAU5G,UAAUzc,GAAQA,EAAK3I,OAASnD,IAC9C,IAAfsoB,GACFhkB,KAAK6qB,UAAU/hB,OAAOkb,EAAW,EAErC,IAGCva,KAAK,KACNzJ,KAAKuwB,aAAa,GAAG,GACrBvwB,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,4BAC9BgC,KAAK2f,kBAAmB,IACvBhW,MAAM,IAAM3J,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,8BAC1C2L,MAAM,IAAM/H,QAAQotB,IAAI,oBAC7B,EACA,WAAA/O,CAAYvkB,GACVsE,KAAKqwB,SAASrwB,KAAKhC,GAAG,0BAA2BgC,KAAKhC,GAAG,gCAAiC,CACxFuL,kBAAmBvJ,KAAKhC,GAAG,6BAC3BwL,iBAAkBxJ,KAAKhC,GAAG,iCAC1BH,KAAM,YACL4L,KAAK,MACN,EAAAvI,EAAA,GAAc,qBAAqBxF,IAAO,CACxCyF,OAAQ,QACPsI,KAAKxI,IACN,IAAIA,EAASG,GAMX,OAAO6G,QAAQqoB,OAAO,kBANP,CACf,MAAMtM,EAAYhkB,KAAK6qB,UAAU5G,UAAUzc,GAAQA,EAAK3I,OAASnD,IAC9C,IAAfsoB,IACFhkB,KAAK6qB,UAAU7G,GAAWjY,SAAS0D,SAAW,QAElD,IAGChG,KAAK,KACNzJ,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,6BAC7B2L,MAAM,IAAM3J,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,6BAC1C2L,MAAM,IAAM/H,QAAQotB,IAAI,mBAC7B,EACA,WAAA7O,CAAYzkB,GACVsE,KAAKqwB,SAASrwB,KAAKhC,GAAG,0BAA2BgC,KAAKhC,GAAG,gCAAiC,CACxFuL,kBAAmBvJ,KAAKhC,GAAG,6BAC3BwL,iBAAkBxJ,KAAKhC,GAAG,iCAC1BH,KAAM,YACL4L,KAAK,MACN,EAAAvI,EAAA,GAAc,qBAAqBxF,IAAO,CACxCyF,OAAQ,QACPsI,KAAKxI,IACN,IAAIA,EAASG,GAMX,OAAO6G,QAAQqoB,OAAO,kBANP,CACf,MAAMtM,EAAYhkB,KAAK6qB,UAAU5G,UAAUzc,GAAQA,EAAK3I,OAASnD,IAC9C,IAAfsoB,IACFhkB,KAAK6qB,UAAU7G,GAAWjY,SAAS0D,SAAW,QAElD,IAGChG,KAAK,KACNzJ,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,6BAC7B2L,MAAM,IAAM3J,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,6BAC1C2L,MAAM,IAAM/H,QAAQotB,IAAI,mBAC7B,EACA,YAAA1R,CAAa5Y,EAAOhJ,GAElB,MAAMyJ,EAAWnF,KAAK6qB,UAAU2F,KAAKhpB,GAAQA,EAAK3I,OAASnD,GAAKyJ,SAChEnF,KAAKqwB,SAASlrB,EAAWnF,KAAKhC,GAAG,iCAAmCgC,KAAKhC,GAAG,+BAAgCgC,KAAKhC,GAAG,gCAAiC,CACnJuL,kBAAmBvJ,KAAKhC,GAAG,6BAC3BwL,iBAAkBxJ,KAAKhC,GAAG,iCAC1BH,KAAM,YACL4L,KAAK,MACN,EAAAvI,EAAA,GAAc,sBAAsBxF,YAAcyJ,IAAY,CAC5DhE,OAAQ,QACPsI,KAAKxI,IACN,IAAIA,EAASG,GAMX,OAAO6G,QAAQqoB,OAAO,kBANP,CACf,MAAMtM,EAAYhkB,KAAK6qB,UAAU5G,UAAUzc,GAAQA,EAAK3I,OAASnD,IAC9C,IAAfsoB,GACFhkB,KAAK6qB,UAAU/hB,OAAOkb,EAAW,EAErC,IAGCva,KAAK,KACNzJ,KAAKuwB,aAAa,GAAG,GACrBlL,GAAYhB,WAAW3oB,GACvBsE,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,8BAC7B2L,MAAM,IAAM3J,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,8BAC1C2L,MAAM,IAAM/H,QAAQotB,IAAI,oBAC7B,EACA,iBAAAyB,GACEzwB,KAAKqwB,SAASrwB,KAAKhC,GAAG,gCAAiCgC,KAAKhC,GAAG,gCAAiC,CAC9FuL,kBAAmBvJ,KAAKhC,GAAG,6BAC3BwL,iBAAkBxJ,KAAKhC,GAAG,iCAC1BH,KAAM,YACL4L,KAAK,KACN,MAAMinB,EAAW1wB,KAAKmH,cAAcO,IAAIF,IACtC,MAAMrC,EAAWqC,EAAKrC,SACtB,OAAO,EAAAjE,EAAA,GAAc,sBAAsBsG,EAAK3I,eAAesG,IAAY,CACzEhE,OAAQ,UAGZ8G,QAAQC,IAAIwoB,GAAUjnB,KAAKknB,IACzB,IAAIC,EAAa,EACjBD,EAAQhZ,QAAQ,CAAC1W,EAAUyD,KACzB,GAAIzD,EAASG,GAAI,CACfwvB,IACA,MAAM5M,EAAYhkB,KAAK6qB,UAAU5G,UAAUzc,GAAQA,EAAK3I,OAASmB,KAAKmH,cAAczC,GAAO7F,OACxE,IAAfmlB,GACFhkB,KAAK6qB,UAAU/hB,OAAOkb,EAAW,GAEnCqB,GAAYhB,WAAWrkB,KAAKmH,cAAczC,GAAO7F,KACnD,IAEFmB,KAAKmH,cAAgB,GACrBnH,KAAKuwB,aAAaK,GAAY,GAC9B5wB,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,mCAC7B2L,MAAM,IAAM3J,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,mCAC1C2L,MAAM,IAAM/H,QAAQotB,IAAI,0BAC7B,EACA,qBAAM6B,GAEJ,MAAMvO,EAAQtiB,KAAKmH,cAAcjC,OAAO4N,IAASA,EAAK3N,UAChD2rB,EAAU9wB,KAAKmH,cAAcjC,OAAO4N,GAAQA,EAAK3N,UAGvD,IAAIrG,EAAU,KACVgyB,EAAQnsB,OAAS,IACnB7F,EAAUkB,KAAK+wB,SAAS,CACtBC,MAAM,EACNxtB,KAAMxD,KAAKhC,GAAG,iCAGlB,IAEE,IAAIizB,EAAW,IAAI3O,GAGnB,IAAK,MAAM7d,KAAUqsB,EACnB,IACE,MAAM7vB,QAAiB,EAAAC,EAAA,GAAc,wBAAwB6G,mBAAmBtD,EAAO5F,gCAAiC,CACtHsC,OAAQ,QAEJhD,QAAa8C,EAASK,OACxBnD,EAAKmkB,OAASnkB,EAAKmkB,MAAM3d,OAAS,IACpCssB,EAAWA,EAAS5D,OAAOlvB,EAAKmkB,OAEpC,CAAE,MAAO3kB,GACPiE,QAAQjE,MAAM,SAAS8G,EAAO5F,aAAclB,EAC9C,CAGF,GADImB,GAASA,EAAQsF,QACG,IAApB6sB,EAAStsB,OAEX,YADA3E,KAAKowB,SAASxnB,QAAQ5I,KAAKhC,GAAG,+BAKhC,MAAMkzB,EAAQD,EAASvpB,IAAIF,GAClBxH,KAAKmxB,iBAAiB3pB,EAAK3I,KAAM2I,EAAKuE,WAC5C7G,OAAO4qB,GAAQA,GAClB,GAAqB,IAAjBoB,EAAMvsB,OAER,YADA3E,KAAKowB,SAASxnB,QAAQ5I,KAAKhC,GAAG,+BAKhC,MAAMwF,EAAO0tB,EAAMnsB,KAAK,MACpB2L,UAAUC,iBACND,UAAUC,UAAUC,UAAUpN,GACpCxD,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,6BAA8B,CAC1D4H,MAAOsrB,EAAMvsB,WAGf3E,KAAKoxB,wBAAwB5tB,EAEjC,CAAE,MAAO7F,GACHmB,GAASA,EAAQsF,QACrBxC,QAAQjE,MAAM,qBAAsBA,GACpCqC,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,6BAC9B,CACF,EACA,uBAAAozB,CAAwB5tB,GACtB,MAAM6tB,EAAWrc,SAAS+a,cAAc,YACxC/a,SAAShM,KAAKsoB,YAAYD,GAC1BA,EAASzsB,MAAMwZ,SAAW,QAC1BiT,EAASzsB,MAAM2sB,KAAO,gBACtBF,EAASzsB,MAAM2Z,IAAM,OACrB8S,EAAS7xB,MAAQgE,EACjB6tB,EAAS5gB,SACTuE,SAASwc,YAAY,QACrBxc,SAAShM,KAAKyoB,YAAYJ,GAC1BrxB,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,mCAChC,EACA,UAAA4f,CAAWlZ,EAAOhJ,GAChB,IAAI8H,EAAO,GACX,GAAyD,aAArDxD,KAAK4c,mBAAmBlY,GAAOqH,UAAU6B,QAC3C,OAAQ5N,KAAKygB,kBACX,IAAK,YACHjd,EAAOxD,KAAK4c,mBAAmBlY,GAAOqH,UAAUwhB,aAChD,MACF,IAAK,QACH/pB,EAAO,KAAKxD,KAAK4c,mBAAmBlY,GAAOqH,UAAUqB,UAAY1R,MAAQsE,KAAK4c,mBAAmBlY,GAAOqH,UAAUwhB,gBAClH,MACF,IAAK,UACH/pB,EAAO,aAAaxD,KAAK4c,mBAAmBlY,GAAOqH,UAAUwhB,sBAAsBvtB,KAAK4c,mBAAmBlY,GAAOqH,UAAUqB,UAAY1R,iBACxI,MACF,IAAK,QACH8H,EAAO,QAAQxD,KAAK4c,mBAAmBlY,GAAOqH,UAAUwhB,qBACxD,MACF,IAAK,OACH/pB,EAAOxD,KAAK4c,mBAAmBlY,GAAOqH,UAAUC,UAAY,OAC5D,MACF,IAAK,aACHxI,EAAOxD,KAAK4c,mBAAmBlY,GAAOqH,UAAUG,YAAc,OAC9D,WAGJ,OAAQlM,KAAKygB,kBACX,IAAK,YACHjd,EAAO,GAAGxD,KAAKwtB,UAAU9xB,IACzB,MACF,IAAK,QACH8H,EAAO,KAAKxD,KAAK4c,mBAAmBlY,GAAOqH,UAAUqB,UAAY1R,MAAQsE,KAAKwtB,UAAU9xB,KACxF,MACF,IAAK,UACH8H,EAAO,aAAaxD,KAAKwtB,UAAU9xB,WAAasE,KAAK4c,mBAAmBlY,GAAOqH,UAAUqB,UAAY1R,iBACrG,MACF,IAAK,QACH8H,EAAO,QAAQxD,KAAKwtB,UAAU9xB,UAC9B,MACF,IAAK,OACH8H,EAAOxD,KAAK4c,mBAAmBlY,GAAOqH,UAAUC,UAAY,OAC5D,MACF,IAAK,aACHxI,EAAOxD,KAAK4c,mBAAmBlY,GAAOqH,UAAUG,YAAc,OAC9D,MAGNwE,UAAUC,UAAYD,UAAUC,UAAUC,UAAUpN,GAAMiG,KAAK,IAAMzJ,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,mCAAqCgC,KAAKoxB,wBAAwB5tB,EACvK,EACA,kBAAM2b,GACJnf,KAAKlB,SAAU,EACf,UAEQumB,GAAYH,cAAcllB,KAAKsE,YAAatE,KAAK8qB,eAAgB9qB,KAAK+qB,kBAAmB/qB,KAAKgrB,kBAAmB,GAAIhrB,KAAKsX,eAE1HtX,KAAK0xB,eACb,CAAE,MAAO/zB,GACPqC,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,4BAC9B,CAAE,QACAgC,KAAKlB,SAAU,CACjB,CACF,EACA,WAAAyxB,CAAYoB,EAAKC,GAAO,GAClBA,EACF5xB,KAAKwR,OAASmgB,EAEd3xB,KAAKwR,QAAUmgB,CAEnB,EACA,IAAApW,CAAKjK,GACHtR,KAAKirB,WAAa3Z,CACpB,EACA,QAAA4b,CAAS/uB,GAEP,MAAM2yB,EAAU3yB,EAAK+G,OAAOsC,GAAQA,EAAKrC,UACnCmd,EAAQnkB,EAAK+G,OAAOsC,IAASA,EAAKrC,UAUxC,MATwB,aAApBnF,KAAKirB,YAEP6F,EAAQvV,KAAK,CAACoU,EAAGC,IAAM,IAAItgB,KAAKsgB,EAAE7jB,UAAUsD,WAAa,IAAIC,KAAKqgB,EAAE5jB,UAAUsD,YAC9EiT,EAAM/G,KAAK,CAACoU,EAAGC,IAAM,IAAItgB,KAAKsgB,EAAE7jB,UAAUsD,WAAa,IAAIC,KAAKqgB,EAAE5jB,UAAUsD,cAG5EyhB,EAAQvV,KAAK,CAACoU,EAAGC,IAAMD,EAAE9wB,KAAKgxB,cAAcD,EAAE/wB,OAC9CyjB,EAAM/G,KAAK,CAACoU,EAAGC,IAAMD,EAAE9wB,KAAKgxB,cAAcD,EAAE/wB,QAEvCiyB,EAAQzD,OAAO/K,EACxB,EACA,gBAAArS,CAAiBgC,GACf,MAAM4f,EAAe5f,EAAM7B,OACvByhB,EAAald,kBACfkd,EAAald,oBACJkd,EAAajd,wBAEtBid,EAAajd,0BACJid,EAAahd,qBAEtBgd,EAAahd,uBACJgd,EAAa/c,qBAEtB+c,EAAa/c,qBAEjB,EACA,YAAA4G,GACE,MAAMqJ,EAA8C,mBACpD+M,MAAM/M,EAAK,CACT5jB,OAAQ,OACR4wB,YAAa,UACbhpB,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAU,CACnB8oB,SAAU,YAEXC,QAAQ,KACTjyB,KAAKmuB,OAAOC,OAAO,oBAAoB,GACvCpuB,KAAKkyB,QAAQ9pB,KAAK,gBAEtB,EACA,gBAAAyT,GACM7b,KAAK2b,WACP3b,KAAK4c,mBAAmBjF,QAAQnQ,GAAQA,EAAK6L,UAAW,GAExDrT,KAAK4c,mBAAmBjF,QAAQnQ,GAAQA,EAAK6L,UAAW,EAE5D,EACA,cAAAqM,GACE1f,KAAK6qB,UAAUlT,QAAQnQ,GAAQA,EAAK6L,UAAW,GAC/CrT,KAAKmH,cAAgB,EACvB,EACA,iBAAAqY,CAAkBlO,GACA,SAAZA,EACFtR,KAAK6wB,kBACgB,WAAZvf,EACTtR,KAAKywB,oBACgB,aAAZnf,EACTtR,KAAKmyB,sBACgB,SAAZ7gB,EACTtR,KAAKoyB,kBACgB,kBAAZ9gB,EACTtR,KAAKqyB,2BACgB,QAAZ/gB,EACTtR,KAAKsyB,mBACgB,UAAZhhB,GACTtR,KAAKuyB,kBAET,EACA,UAAAnV,CAAW1Y,EAAOhJ,GAEhBsE,KAAKsrB,YAAc5vB,EACnBsE,KAAKurB,cAAgB7mB,EACrB1E,KAAK6C,aAAc,EACnB7C,KAAK2hB,eAAiB,IACtB3hB,KAAK0hB,gBAAiB,CACxB,EACA,eAAA0Q,GAEEpyB,KAAK6C,aAAc,EACnB7C,KAAK2hB,eAAiB,IACtB3hB,KAAK0hB,gBAAiB,CACxB,EAEA,WAAAG,CAAY3e,GACV,MAAM1D,EAAQ0D,EAERsvB,GAAa,QAAmBhzB,GACtC,IAAKgzB,EAAW/jB,MAEd,YADAzO,KAAKowB,SAASzyB,MAAM60B,EAAW70B,OAIjC,MAAMmmB,EAAUtkB,EAAMqvB,QAAQ,OAAQ,KAAOrvB,EAAM4P,SAAS,MAAsB,KAAV5P,EAAL,GAAyB,KAExFskB,IAAY9jB,KAAKsE,aAMrBtE,KAAK0hB,gBAAiB,EAClB1hB,KAAK6C,YAEP7C,KAAKyyB,iBAAiB3O,GAGtB9jB,KAAK0yB,kBAAkB5O,IAXvB9jB,KAAKowB,SAASxnB,QAAQ5I,KAAKhC,GAAG,qCAalC,EAEA,iBAAA00B,CAAkB5O,GAChB,MAAMpoB,EAAMsE,KAAKsrB,YACXnmB,EAAWnF,KAAK6qB,UAAU2F,KAAKhpB,GAAQA,EAAK3I,OAASnD,IAAMyJ,UACjE,EAAAjE,EAAA,GAAc,oBAAoBxF,YAAcyJ,UAAiB4C,mBAAmB+b,KAAY,CAC9F3iB,OAAQ,QACPsI,KAAKxI,IACN,IAAIA,EAASG,GAoBX,OAAO6G,QAAQqoB,OAAO,kBApBP,CACf,MAAMtM,EAAYhkB,KAAK6qB,UAAU5G,UAAUzc,GAAQA,EAAK3I,OAASnD,GACjE,IAAmB,IAAfsoB,EAAkB,CAEpB,MAAM2O,EAAS7O,EAAUpoB,EAAIuJ,MAAM,KAAKgX,MACxCoJ,GAAYzB,SAASloB,EAAKi3B,EAAQxtB,EAAUnF,KAAKsE,aAEjDtE,KAAK6qB,UAAU/hB,OAAOkb,EAAW,GAEjChkB,KAAKS,UAAU,KACb,MAAMmyB,EAAW,IAAI5yB,KAAK6qB,WAC1B7qB,KAAK6qB,UAAY,GACjB7qB,KAAKS,UAAU,KACbT,KAAK6qB,UAAY+H,KAGvB,CACA5yB,KAAKuwB,aAAa,GAAG,GACrBvwB,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,yBAChC,IAGCyL,KAAK,KACNzJ,KAAK6yB,yBACJlpB,MAAM,IAAM3J,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,yBAC7C,EAEA,gBAAAy0B,CAAiB3O,GACf,MAAM4M,EAAW1wB,KAAKmH,cAAcO,IAAIF,IACtC,MAAMrC,EAAWqC,EAAKrC,SACtB,OAAO,EAAAjE,EAAA,GAAc,oBAAoBsG,EAAK3I,eAAesG,UAAiB4C,mBAAmB+b,KAAY,CAC3G3iB,OAAQ,UAGZ8G,QAAQC,IAAIwoB,GAAUjnB,KAAKknB,IACzB,IAAIC,EAAa,EACjBD,EAAQhZ,QAAQ,CAAC1W,EAAUyD,KACzB,GAAIzD,EAASG,GAAI,CACfwvB,IACA,MAAMppB,EAAOxH,KAAKmH,cAAczC,GAChC8C,EAAK6L,UAAW,EAChB,MAAM2Q,EAAYhkB,KAAK6qB,UAAU5G,UAAU6O,GAAKA,EAAEj0B,OAAS2I,EAAK3I,MAChE,IAAmB,IAAfmlB,EAAkB,CAEpB,MAAM2O,EAAS7O,EAAUtc,EAAK3I,KAAKoG,MAAM,KAAKgX,MAC9CoJ,GAAYzB,SAASpc,EAAK3I,KAAM8zB,EAAQnrB,EAAKrC,SAAUnF,KAAKsE,aAE5DtE,KAAK6qB,UAAU/hB,OAAOkb,EAAW,EACnC,CACF,IAGFhkB,KAAKS,UAAU,KACb,MAAMmyB,EAAW,IAAI5yB,KAAK6qB,WAC1B7qB,KAAK6qB,UAAY,GACjB7qB,KAAKS,UAAU,KACbT,KAAK6qB,UAAY+H,MAGrB5yB,KAAKuwB,aAAaK,GAAY,GAC9B5wB,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,4BAC7ByL,KAAK,KACNzJ,KAAK6yB,yBACJlpB,MAAM,IAAM3J,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,yBAC7C,EACA,gBAAAs0B,GACEtyB,KAAKqwB,SAASrwB,KAAKhC,GAAG,+BAAgCgC,KAAKhC,GAAG,gCAAiC,CAC7FuL,kBAAmBvJ,KAAKhC,GAAG,6BAC3BwL,iBAAkBxJ,KAAKhC,GAAG,iCAC1BH,KAAM,YACL4L,KAAK,KAEN,MAAMinB,EAAW1wB,KAAKmH,cAAcO,IAAIF,GAClCA,EAAKrC,SACA8C,QAAQ8qB,QAAQ,CACrB3xB,IAAI,KAGD,EAAAF,EAAA,GAAc,qBAAqBsG,EAAK3I,OAAQ,CACrDsC,OAAQ,SAGZ8G,QAAQC,IAAIwoB,GAAUjnB,KAAKknB,IACzBA,EAAQhZ,QAAQ,CAAC1W,EAAUyD,KACzB,GAAIzD,EAASG,GAAI,CACf,MAAM4iB,EAAYhkB,KAAK6qB,UAAU5G,UAAUzc,GAAQA,EAAK3I,OAASmB,KAAKmH,cAAczC,GAAO7F,OACxE,IAAfmlB,IACFhkB,KAAK6qB,UAAU7G,GAAWjY,SAAS0D,SAAW,QAElD,IAEFzP,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,kCAC7B2L,MAAM,IAAM3J,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,kCAC1C2L,MAAM,IAAM/H,QAAQotB,IAAI,yBAC7B,EACA,gBAAAuD,GACEvyB,KAAKqwB,SAASrwB,KAAKhC,GAAG,+BAAgCgC,KAAKhC,GAAG,gCAAiC,CAC7FuL,kBAAmBvJ,KAAKhC,GAAG,6BAC3BwL,iBAAkBxJ,KAAKhC,GAAG,iCAC1BH,KAAM,YACL4L,KAAK,KAEN,MAAMinB,EAAW1wB,KAAKmH,cAAcO,IAAIF,GAClCA,EAAKrC,SACA8C,QAAQ8qB,QAAQ,CACrB3xB,IAAI,KAGD,EAAAF,EAAA,GAAc,qBAAqBsG,EAAK3I,OAAQ,CACrDsC,OAAQ,SAGZ8G,QAAQC,IAAIwoB,GAAUjnB,KAAKknB,IACzBA,EAAQhZ,QAAQ,CAAC1W,EAAUyD,KACzB,GAAIzD,EAASG,GAAI,CACf,MAAM4iB,EAAYhkB,KAAK6qB,UAAU5G,UAAUzc,GAAQA,EAAK3I,OAASmB,KAAKmH,cAAczC,GAAO7F,OACxE,IAAfmlB,IACFhkB,KAAK6qB,UAAU7G,GAAWjY,SAAS0D,SAAW,QAElD,IAEFzP,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,kCAC7B2L,MAAM,IAAM3J,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,kCAC1C2L,MAAM,IAAM/H,QAAQotB,IAAI,yBAC7B,EACA,mBAAAmD,GAEE,MAAMa,EAAM,IAAI,MACVvuB,EAASuuB,EAAIvuB,OAAO,SAEpBwuB,EAAgB,CAAC,EAEjBC,EAAmBlzB,KAAKmH,cAAcO,IAAIyrB,UAE9C,GAAI3rB,EAAKrC,SACP,OAEF,MAAMlE,QAAiB6wB,MAAM9xB,KAAKyd,YAAYjW,EAAK3I,OAC7Cu0B,QAAanyB,EAASmyB,OAE5B,IAAI1e,EAAWlN,EAAKuE,UAAUqB,UAAY5F,EAAK3I,KAC/C,GAAIo0B,EAAcve,GAAW,CAE3B,MAAM2e,EAAY3e,EAASyP,UAAUzP,EAAS4e,YAAY,MACpDC,EAAW7e,EAASyP,UAAU,EAAGzP,EAAS4e,YAAY,MAC5D5e,EAAW,GAAG6e,KAAYN,EAAcve,MAAa2e,IACrDJ,EAAczrB,EAAK3I,OACrB,MAEEo0B,EAAcve,GAAY,EAG5BjQ,EAAO+C,KAAKkN,EAAU0e,KAExBnrB,QAAQC,IAAIgrB,GAAkBzpB,KAAK,IAAMupB,EAAIQ,cAAc,CACzD31B,KAAM,UACJ4L,KAAK2pB,IACP,MAAMtD,EAAO9a,SAAS+a,cAAc,KACpCD,EAAKE,KAAOyD,IAAIC,gBAAgBN,GAChCtD,EAAKG,SAAW,YAChBH,EAAKI,SAET,EACA,OAAA9jB,CAAQ5E,GAEN,GAAIxH,KAAK2M,QAAQnF,GAAO,OAAO,EAC/B,IAAImsB,EAAOnsB,EAAKuE,UAAUsB,UAAU5N,SAAS,SAE7C,IAAKk0B,EAAM,CACT,MAAMC,EAAkB,CAAC,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,OAAQ,MAAO,MAAO,KAAM,MAAO,MAAO,KAAM,MAAO,MAAO,OAAQ,OAAQ,OAAQ,MAAO,MAAO,MAAO,OAAQ,OAAQ,QAAS,MAAO,MAAO,MAAO,OAAQ,OAAQ,MAAO,OAAQ,MAAO,OACjSP,EAAY7rB,EAAK3I,KAAKslB,UAAU3c,EAAK3I,KAAKy0B,YAAY,KAAO,GAAG3qB,cACtEgrB,EAAOC,EAAgBn0B,SAAS4zB,EAClC,CACA,OAAOM,CACT,EACA,OAAAhnB,CAAQnF,GACN,IAAImsB,EAAOnsB,EAAKuE,UAAUsB,UAAU5N,SAAS,SAE7C,IAAKk0B,EAAM,CACT,MAAME,EAAkB,CAAC,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,OAC3JR,EAAY7rB,EAAK3I,KAAKslB,UAAU3c,EAAK3I,KAAKy0B,YAAY,KAAO,GAAG3qB,cACtEgrB,EAAOE,EAAgBp0B,SAAS4zB,EAClC,CACA,OAAOM,CACT,EACA,OAAA9mB,CAAQrF,GACN,IAAImsB,EAAOnsB,EAAKuE,UAAUsB,UAAU5N,SAAS,SAE7C,IAAKk0B,EAAM,CACT,MAAMG,EAAkB,CAAC,MAAO,OAAQ,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,OAAQ,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACneT,EAAY7rB,EAAK3I,KAAKslB,UAAU3c,EAAK3I,KAAKy0B,YAAY,KAAO,GAAG3qB,cACtEgrB,EAAOG,EAAgBr0B,SAAS4zB,EAClC,CACA,OAAOM,CACT,EACA,WAAAlW,CAAYsW,GACV,MAAMznB,EAAmD,SAASynB,eAClE,OAAOznB,CACT,EACA,gBAAAwS,CAAiBkV,GACfh0B,KAAK2e,YAAcqV,EAEfh0B,KAAK2e,cAAgBM,KAAKC,KAAKlf,KAAK6qB,UAAUlmB,OAAS3E,KAAK2c,WAC9D3c,KAAKmf,cAET,EACA,gBAAA8U,GACE,OAAOp0B,OAAOC,WAAa,GAC7B,EACA,wBAAAo0B,GACE,MAAMC,EAAen0B,KAAKi0B,mBAAqB,GAAK,GACpD,GAAIj0B,KAAK2c,WAAawX,EAAc,OACpC,MAAMC,GAAqBp0B,KAAK2e,YAAc,GAAK3e,KAAK2c,SACxD3c,KAAK2c,SAAWwX,EAChBn0B,KAAK2e,YAAcM,KAAK4G,IAAI5G,KAAKoV,MAAMD,EAAoBD,GAAgB,EAAGn0B,KAAKof,eACrF,EACA,oBAAAkV,CAAqBlkB,GACnB,OAAOtM,QAAQsM,GAAQqX,UAAU,mFACnC,EACA,oBAAAnL,CAAqBrK,GACnB,IAAKjS,KAAKi0B,oBAAsBj0B,KAAKoc,YAAcpc,KAAKlB,SAAWkB,KAAKkhB,uBAAyBlhB,KAAKgc,2BAA6Bhc,KAAKs0B,qBAAqBriB,EAAM7B,QAEjK,YADApQ,KAAK0c,iBAGP,MAAM6X,EAAQtiB,EAAMuiB,UAAU,GACzBD,IACLv0B,KAAKwrB,gBAAkB+I,EAAMxK,QAC7B/pB,KAAKyrB,gBAAkB8I,EAAMvK,QAC7BhqB,KAAK0rB,mBAAqBpc,KAAKmlB,MACjC,EACA,wBAAMjY,CAAmBvK,GACvB,GAA6B,OAAzBjS,KAAKwrB,iBAAqD,OAAzBxrB,KAAKyrB,gBAA0B,OACpE,MAAM8I,EAAQtiB,EAAMyiB,iBAAiB,GACrC,IAAKH,EAEH,YADAv0B,KAAK0c,iBAGP,MAAMiY,EAASJ,EAAMxK,QAAU/pB,KAAKwrB,gBAC9BoJ,EAASL,EAAMvK,QAAUhqB,KAAKyrB,gBAC9BoJ,EAAUvlB,KAAKmlB,MAAQz0B,KAAK0rB,mBAElC,GADA1rB,KAAK0c,iBACDmY,EAAU,KAAO5V,KAAK+G,IAAI2O,GAAU,IAAM1V,KAAK+G,IAAI2O,GAA6B,KAAnB1V,KAAK+G,IAAI4O,GACxE,OAEF,MAAME,EAAaH,EAAS,EAAI30B,KAAK2e,YAAc,EAAI3e,KAAK2e,YAAc,QACpE3e,KAAK+0B,cAAcD,EAC3B,EACA,cAAApY,GACE1c,KAAKwrB,gBAAkB,KACvBxrB,KAAKyrB,gBAAkB,KACvBzrB,KAAK0rB,mBAAqB,CAC5B,EACA,mBAAMqJ,CAAcf,GACdA,EAAO,GAAKA,EAAOh0B,KAAKof,gBAAkB4U,IAASh0B,KAAK2e,cACxDqV,EAAOh0B,KAAKgtB,iBACRhtB,KAAKg1B,sBAAsBhB,GAGnCh0B,KAAK8e,iBAAiBkV,GACxB,EAEA,cAAA1U,GACE,MAAM0U,EAAOiB,SAASj1B,KAAKqf,UACvBoP,MAAMuF,IAASA,EAAO,EACxBh0B,KAAKowB,SAASxnB,QAAQ5I,KAAKhC,GAAG,gCAG5Bg2B,EAAOh0B,KAAKof,eACdpf,KAAKowB,SAASxnB,QAAQ5I,KAAKhC,GAAG,2BAA4B,CACxDk3B,IAAKl1B,KAAKof,mBAKV4U,EAAOh0B,KAAKgtB,YACdhtB,KAAKowB,SAASxmB,KAAK5J,KAAKhC,GAAG,0BAC3BgC,KAAKg1B,sBAAsBhB,IAE3Bh0B,KAAK2e,YAAcqV,EAErBh0B,KAAKqf,SAAW,GAClB,EAEA,2BAAM2V,CAAsBF,GAC1B90B,KAAKlB,SAAU,EACf,IAIE,MAAMq2B,EAAcL,EAAa90B,KAAK2c,SAChCyY,EAAqBp1B,KAAK0e,kBAAkBxZ,OAAO4N,GAAQA,EAAK3N,UAAUR,OAC1E0wB,EAAmBr1B,KAAK0e,kBAAkBxZ,OAAO4N,IAASA,EAAK3N,UAAUR,OAGzE2wB,EAAkBrW,KAAKiW,IAAI,EAAGC,EAAcC,EAAqBC,GACnEC,EAAkB,UACdjQ,GAAYH,cAAcllB,KAAKsE,YAAatE,KAAK8qB,eAAgB9qB,KAAK+qB,kBAAmB/qB,KAAKgrB,kBAAmBsK,EAAiBt1B,KAAKsX,eACvItX,KAAK0xB,iBAEb1xB,KAAK2e,YAAcM,KAAK4G,IAAIiP,EAAY90B,KAAKgtB,WAC/C,CAAE,MAAOrvB,GACPqC,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,4BAC9B,CAAE,QACAgC,KAAKlB,SAAU,CACjB,CACF,EAEA,QAAAqG,CAAS2N,GAEP,GAAIA,EAAK3N,SACP,OAAO,EAIT,IAAIxG,EAAOmU,EAAKjU,KAMhB,GALIF,EAAKkD,WAAW,UAClBlD,EAAOA,EAAKsG,MAAM,UAAU,IAI1BtG,GAAQA,EAAKc,SAAS,KAAM,CAE9B,MAAM81B,EAAev1B,KAAKsE,YAAc3F,EAAKwlB,UAAUnkB,KAAKsE,YAAYK,QAAUhG,EAGlF,MAAyB,KAArBqB,KAAKsE,aACC3F,EAAKsG,MAAM,KAAK,GAAGxF,SAAS,KAI/B81B,EAAa91B,SAAS,IAC/B,CACA,OAAO,CACT,EAEA,aAAA2hB,CAAcziB,GACZ,IAAI4W,EAAa,GAEjB,GAAI5W,GAAQA,EAAKc,SAAS,KAAM,CAC9B,MAAM8T,EAAQ5U,EAAKsG,MAAM,KAEzB,GAAyB,KAArBjF,KAAKsE,YACPiR,EAAahC,EAAM,OACd,CAEL,MAAMgiB,EAAe52B,EAAKwlB,UAAUnkB,KAAKsE,YAAYK,QACrD4Q,EAAaggB,EAAatwB,MAAM,KAAK,EACvC,CACF,MACEsQ,EAAa5W,EAEf,MAAM62B,EAAY,GAClB,GAAIjgB,EAAW5Q,OAAS6wB,EAAW,CACjC,MAAMC,EAAcxW,KAAKoV,OAAOmB,EAAY,GAAK,GAC3CE,EAAYzW,KAAKC,MAAMsW,EAAY,GAAK,GAC9C,MAAO,GAAGjgB,EAAW4O,UAAU,EAAGsR,QAAkBlgB,EAAW4O,UAAU5O,EAAW5Q,OAAS+wB,IAC/F,CACA,OAAOngB,CACT,EAEA,WAAA/B,CAAY7U,GACV,IAAI+V,EAAW/V,EAAKsG,MAAM,KAAKgX,MAC/B,MAAMuZ,EAAY,GAClB,GAAI9gB,EAAS/P,OAAS6wB,EAAW,CAC/B,MAAMC,EAAcxW,KAAKoV,OAAOmB,EAAY,GAAK,GAC3CE,EAAYzW,KAAKC,MAAMsW,EAAY,GAAK,GAC9C,MAAO,GAAG9gB,EAASyP,UAAU,EAAGsR,QAAkB/gB,EAASyP,UAAUzP,EAAS/P,OAAS+wB,IACzF,CACA,OAAOhhB,CACT,EAEA,gBAAAihB,CAAiB92B,GACf,IAAKA,EAAM,MAAO,GAElB,GAAIA,EAAK8F,QAAU,GAAI,OAAO9F,EAE9B,MAAM+2B,EAAW/2B,EAAKy0B,YAAY,KAClC,GAAIsC,EAAW,EAAG,CAEhB,MAAMrC,EAAW10B,EAAKslB,UAAU,EAAGyR,GAC7BC,EAAa5W,KAAK4G,IAAI0N,EAAS5uB,OAAQsa,KAAKoV,MAAoB,GAAdx1B,EAAK8F,SAC7D,OAAO4uB,EAASpP,UAAU,EAAG0R,EAC/B,CAEA,OAAOh3B,EAAKslB,UAAU,EAAGlF,KAAKoV,MAAoB,GAAdx1B,EAAK8F,QAC3C,EAEA,cAAAmxB,CAAej3B,GACb,IAAKA,EAAM,MAAO,GAElB,GAAIA,EAAK8F,QAAU,GAAI,MAAO,GAE9B,MAAMixB,EAAW/2B,EAAKy0B,YAAY,KAClC,GAAIsC,EAAW,EAAG,CAEhB,MAAMG,EAAMl3B,EAAKslB,UAAUyR,GACrBrC,EAAW10B,EAAKslB,UAAU,EAAGyR,GAC7BC,EAAa5W,KAAK4G,IAAI,EAAG5G,KAAKoV,MAAwB,GAAlBd,EAAS5uB,SACnD,MAAO,IAAM4uB,EAASpP,UAAUoP,EAAS5uB,OAASkxB,GAAcE,CAClE,CAEA,MAAMF,EAAa5W,KAAK4G,IAAI,GAAI5G,KAAKoV,MAAoB,GAAdx1B,EAAK8F,SAChD,MAAO,IAAM9F,EAAKslB,UAAUtlB,EAAK8F,OAASkxB,EAC5C,EAEA,WAAA7Y,CAAYgZ,GAEVh2B,KAAKsE,YAAc0xB,GAAcA,EAAW5mB,SAAS,KAAO,GAAK,KAEjEpP,KAAK+e,iBACP,EAEA,gBAAA5C,CAAiBxd,GAEfqB,KAAKsE,YAAc3F,EAAOA,GAAQA,EAAKyQ,SAAS,KAAO,GAAK,KAAO,GAEnEpP,KAAK+e,iBACP,EAEA,mBAAM2S,GACJ1xB,KAAKlB,SAAU,EACf,IAEE,MAAMX,EAAOknB,GAAYlD,mBAGnB2O,EAAU,IAAImF,IAAI93B,EAAKokB,aAAe,IACtCD,EAAQnkB,EAAKmkB,OAAS,GAGtB4T,EAAc9uB,MAAM+uB,KAAKrF,GAASppB,IAAIjD,IAAU,CACpD5F,KAAM4F,EACNU,UAAU,EACVkO,UAAU,EACVtH,SAAU,CACRqB,SAAU3I,EAAOQ,MAAM,KAAKgX,UAK1Bma,EAAY9T,EAAM5a,IAAIF,IAAQ,CAClC3I,KAAM2I,EAAK3I,KACXsG,UAAU,EACVkO,UAAU,EACVtH,SAAUvE,EAAKuE,YAIjB/L,KAAK6qB,UAAY,IAAIqL,KAAgBE,GAGrCp2B,KAAKuwB,YAAYpyB,EAAKk4B,YAAY,GAGlCr2B,KAAK0qB,gBAAkBvsB,EAAKusB,iBAAmB,EAC/C1qB,KAAK2qB,kBAAoBxsB,EAAKwsB,mBAAqB,CACrD,CAAE,MAAOhtB,GACPiE,QAAQjE,MAAM,4BAA6BA,GAC3CqC,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,iCAC9B,CAAE,QACAgC,KAAKlB,SAAU,CACjB,CACF,EAEA,qBAAMigB,GACJ/e,KAAKgf,gBAAiB,EACtBhf,KAAKlB,SAAU,EACf,IAEE,MAAMsK,QAAgBic,GAAYtG,gBAAgB/e,KAAKsE,YAAatE,KAAK8qB,eAAgB9qB,KAAK+qB,kBAAmB/qB,KAAKgrB,kBAAmBhrB,KAAKsX,SAC9I,IAAIlO,EAGF,MAAM,IAAID,MAAM,wBAFVnJ,KAAK0xB,eAIf,CAAE,MAAO/zB,IAEFA,EAAM8M,SAAShL,SAAS,iBAAmBO,KAAKmuB,OAAOmI,MAAMC,gBAChE30B,QAAQjE,MAAM,8BAA+BA,GAC7CqC,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,4BAEhC,CAAE,QACAgC,KAAKgf,gBAAiB,EACtBhf,KAAKlB,SAAU,CACjB,CACF,EAEA,0BAAM+zB,GACJ7yB,KAAKgf,gBAAiB,EACtBhf,KAAKlB,SAAU,EACf,UACQkB,KAAK0xB,eACb,CAAE,MAAO/zB,GACPiE,QAAQjE,MAAM,oCAAqCA,GACnDqC,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,2BAC9B,CAAE,QACAgC,KAAKgf,gBAAiB,EACtBhf,KAAKlB,SAAU,CACjB,CACF,EAEA,mBAAAihB,CAAoBzV,GAClBtK,KAAK6gB,eAAiBvW,EACtBtK,KAAK4gB,eAAgB,CACvB,EACA,wBAAAyR,GACoC,IAA9BryB,KAAKmH,cAAcxC,OAIvB3E,KAAKghB,oBAAqB,EAHxBhhB,KAAKowB,SAASxnB,QAAQ5I,KAAKhC,GAAG,8BAIlC,EACA,uBAAM+iB,CAAkB1Y,GAEtB,MAAM2b,EAAYhkB,KAAK6qB,UAAU5G,UAAUzc,GAAQA,EAAK3I,OAASmB,KAAK6gB,iBACnD,IAAfmD,IAEGhkB,KAAK6qB,UAAU7G,GAAWjY,WAC7B/L,KAAK6qB,UAAU7G,GAAWjY,SAAW,CAAC,GAExC/L,KAAK6qB,UAAU7G,GAAWjY,SAASoC,KAAO9F,EAGtCrI,KAAK2f,kBAAoB3f,KAAK4f,YAAY/gB,OAASmB,KAAK6gB,iBACrD7gB,KAAK4f,WAAW7T,WACnB/L,KAAK4f,WAAW7T,SAAW,CAAC,GAE9B/L,KAAK4f,WAAW7T,SAASoC,KAAO9F,GAGtC,EACA,4BAAM4Y,SAEEjhB,KAAK6yB,sBACb,EACA,qBAAAvS,CAAsBhW,EAAQksB,GAE5B,MAAMxS,EAAYhkB,KAAK6qB,UAAU5G,UAAU6O,GAAKA,EAAEj0B,OAASyL,IACxC,IAAf0Z,IACFhkB,KAAK6qB,UAAU7G,GAAWjY,SAAW,IAChC/L,KAAK6qB,UAAU7G,GAAWjY,YAC1ByqB,IAIHx2B,KAAK4f,YAAc5f,KAAK4f,WAAW/gB,OAASyL,IAC9CtK,KAAK4f,WAAW7T,SAAW,IACtB/L,KAAK4f,WAAW7T,YAChByqB,GAGT,EACA,iBAAAhW,CAAkBzP,EAAWnC,EAAW4nB,GAEtC,MAAMxS,EAAYhkB,KAAK6qB,UAAU5G,UAAU6O,GAAKA,EAAEj0B,OAASkS,IACxC,IAAfiT,IACFhkB,KAAK6qB,UAAU7G,GAAWnlB,KAAO+P,EACjC5O,KAAK6qB,UAAU7G,GAAWjY,SAAW,IAChC/L,KAAK6qB,UAAU7G,GAAWjY,YAC1ByqB,IAIHx2B,KAAK4f,YAAc5f,KAAK4f,WAAW/gB,OAASkS,IAC9C/Q,KAAK4f,WAAW/gB,KAAO+P,EACvB5O,KAAK4f,WAAW7T,SAAW,IACtB/L,KAAK4f,WAAW7T,YAChByqB,GAGLx2B,KAAK2f,kBAAmB,EACxB3f,KAAKS,UAAU,KACbT,KAAK2f,kBAAmB,IAG9B,EAEA,gBAAAwR,CAAiBz1B,EAAKqQ,GACpB,MAAM0qB,EAAmC,aAAtB1qB,GAAU6B,QACvB8oB,EAAUD,EAAa1qB,GAAUwhB,aAAe,GAAGvtB,KAAKwtB,UAAU9xB,IAClEgZ,EAAW3I,GAAUqB,UAAY1R,EACvC,OAAQsE,KAAKygB,kBACX,IAAK,YACH,OAAOiW,EACT,IAAK,QACH,MAAO,KAAKhiB,MAAagiB,KAC3B,IAAK,UACH,MAAO,aAAaA,WAAiBhiB,iBACvC,IAAK,QACH,MAAO,QAAQgiB,UACjB,IAAK,OACH,OAAO3qB,GAAUC,UAAY,GAC/B,IAAK,aACH,OAAOD,GAAUG,YAAc,GACjC,QACE,OAAOwqB,EAEb,EAEA,sBAAMxZ,CAAiB3H,GAErB,MAAMzW,EAAUkB,KAAK+wB,SAAS,CAC5BC,MAAM,EACNxtB,KAAMxD,KAAKhC,GAAG,gCAEhB,IAEE,MAAMiD,QAAiB,EAAAC,EAAA,GAAc,wBAAwB6G,mBAAmBwN,6BAAuC,CACrHpU,OAAQ,QAEJhD,QAAa8C,EAASK,OAE5B,GADAxC,EAAQsF,SACHjG,EAAKmkB,OAA+B,IAAtBnkB,EAAKmkB,MAAM3d,OAE5B,YADA3E,KAAKowB,SAASxnB,QAAQ5I,KAAKhC,GAAG,iCAKhC,MAAMkzB,EAAQ/yB,EAAKmkB,MAAM5a,IAAIF,GACpBxH,KAAKmxB,iBAAiB3pB,EAAK3I,KAAM2I,EAAKuE,WAC5C7G,OAAO4qB,GAAQA,GAClB,GAAqB,IAAjBoB,EAAMvsB,OAER,YADA3E,KAAKowB,SAASxnB,QAAQ5I,KAAKhC,GAAG,+BAKhC,MAAMwF,EAAO0tB,EAAMnsB,KAAK,MACpB2L,UAAUC,iBACND,UAAUC,UAAUC,UAAUpN,GACpCxD,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,4BAA6B,CACzD4H,MAAOsrB,EAAMvsB,YAGf3E,KAAKoxB,wBAAwB5tB,GAC7BxD,KAAKowB,SAAShnB,QAAQpJ,KAAKhC,GAAG,4BAA6B,CACzD4H,MAAOsrB,EAAMvsB,UAGnB,CAAE,MAAOhH,GACPmB,EAAQsF,QACRxC,QAAQjE,MAAM,4BAA6BA,GAC3CqC,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,mCAC9B,CACF,GAEF,OAAA2C,GAEEX,KAAK22B,qBAAqB,aAAc,cAAc,GAAO,GAC7D32B,KAAKk0B,2BACLr0B,OAAOe,iBAAiB,SAAUZ,KAAKk0B,0BACvCl0B,KAAKlB,SAAU,EAEfkB,KAAK4qB,iBAAmB5qB,KAAKmuB,OAAOmI,MAAMC,cAE1Cv2B,KAAK+e,kBAAkBtV,KAAK,IAEnBzJ,KAAKivB,uBACXtlB,MAAMhI,IACa,iBAAhBA,EAAI8I,SACNzK,KAAKowB,SAASzyB,MAAMqC,KAAKhC,GAAG,8BAE7Bi0B,QAAQ,KACTjyB,KAAKlB,SAAU,IAIjBkB,KAAK2gB,gBAAkB3gB,KAAK42B,iBAAiBjW,gBAC7C3gB,KAAK0gB,aAAe1gB,KAAK42B,iBAAiBlW,aAG1C,MAAMmW,EAAgBrU,aAAaC,QAAQ,YACrB,SAAlBoU,GAA8C,SAAlBA,IAC9B72B,KAAK8b,SAAW+a,EAEpB,EACA,aAAA/1B,GACEjB,OAAOkB,oBAAoB,SAAUf,KAAKk0B,yBAC5C,GC/oDF,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,S,+OCGC,SAAShkB,GAA2D4mB,EAAOC,QAAQ7mB,GAAuL,CAA1Q,CAA4Q,WAAW,OAAO,SAAS8mB,EAAErH,EAAEsH,EAAEC,GAAG,SAASC,EAAEC,EAAElnB,GAAG,IAAI+mB,EAAEG,GAAG,CAAC,IAAIzH,EAAEyH,GAAG,CAAC,IAAI5T,OAAE,EAAoC,IAAItT,GAAGsT,EAAE,OAAOA,QAAE4T,GAAE,GAAI,GAAGC,EAAE,OAAOA,EAAED,GAAE,GAAI,IAAIE,EAAE,IAAInuB,MAAM,uBAAuBiuB,EAAE,KAAK,MAAME,EAAEC,KAAK,mBAAmBD,CAAC,CAAC,IAAI7hB,EAAEwhB,EAAEG,GAAG,CAACL,QAAQ,CAAC,GAAGpH,EAAEyH,GAAG,GAAGI,KAAK/hB,EAAEshB,QAAQ,SAAS7mB,GAAG,IAAIsT,EAAEmM,EAAEyH,GAAG,GAAGlnB,GAAG,OAAOinB,EAAE3T,GAAGtT,EAAE,EAAEuF,EAAEA,EAAEshB,QAAQC,EAAErH,EAAEsH,EAAEC,EAAE,CAAC,OAAOD,EAAEG,GAAGL,OAAO,CAAC,IAAI,IAAIM,OAAE,EAAoCnnB,EAAE,EAAEA,EAAEgnB,EAAEvyB,OAAOuL,IAAIinB,EAAED,EAAEhnB,IAAI,OAAOinB,CAAC,CAAlb,CAAob,CAAC,EAAE,CAAC,SAASjnB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIK,EAAEvnB,EAAE,WAAWwnB,EAAExnB,EAAE,aAAaynB,EAAE,oEAAoEP,EAAEQ,OAAO,SAAS1nB,GAAG,IAAI,IAAIsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,EAAEC,EAAE,GAAGC,EAAE,EAAEE,EAAEnnB,EAAEvL,OAAOmuB,EAAEuE,EAAEK,EAAE,WAAWD,EAAEI,UAAU3nB,GAAGinB,EAAEjnB,EAAEvL,QAAQmuB,EAAEuE,EAAEF,EAAEG,EAAEI,GAAGlU,EAAEtT,EAAEinB,KAAKC,EAAED,EAAEE,EAAEnnB,EAAEinB,KAAK,EAAEA,EAAEE,EAAEnnB,EAAEinB,KAAK,IAAI3T,EAAEtT,EAAE4nB,WAAWX,KAAKC,EAAED,EAAEE,EAAEnnB,EAAE4nB,WAAWX,KAAK,EAAEA,EAAEE,EAAEnnB,EAAE4nB,WAAWX,KAAK,GAAG1hB,EAAE+N,GAAG,EAAEwT,GAAG,EAAExT,IAAI,EAAE4T,GAAG,EAAEzH,EAAE,EAAEmD,GAAG,GAAGsE,IAAI,EAAEE,GAAG,EAAE,GAAGL,EAAE,EAAEnE,EAAE,GAAGwE,EAAE,GAAGJ,EAAE9uB,KAAKuvB,EAAEI,OAAOtiB,GAAGkiB,EAAEI,OAAOf,GAAGW,EAAEI,OAAOpI,GAAGgI,EAAEI,OAAOd,IAAI,OAAOC,EAAEnyB,KAAK,GAAG,EAAEqyB,EAAEY,OAAO,SAAS9nB,GAAG,IAAIsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,EAAE,EAAEC,EAAE,EAAEC,EAAE,QAAQ,GAAGjnB,EAAE+nB,OAAO,EAAEd,EAAExyB,UAAUwyB,EAAE,MAAM,IAAIhuB,MAAM,mDAAmD,IAAIkuB,EAAEvE,EAAE,GAAG5iB,EAAEA,EAAE2e,QAAQ,mBAAmB,KAAKlqB,OAAO,EAAE,GAAGuL,EAAE6nB,OAAO7nB,EAAEvL,OAAO,KAAKgzB,EAAEI,OAAO,KAAKjF,IAAI5iB,EAAE6nB,OAAO7nB,EAAEvL,OAAO,KAAKgzB,EAAEI,OAAO,KAAKjF,IAAIA,EAAE,GAAG,EAAE,MAAM,IAAI3pB,MAAM,6CAA6C,IAAIkuB,EAAEK,EAAEQ,WAAW,IAAIC,WAAW,EAAErF,GAAG,IAAI1rB,MAAM,EAAE0rB,GAAGmE,EAAE/mB,EAAEvL,QAAQ6e,EAAEmU,EAAE9uB,QAAQqH,EAAE6nB,OAAOd,OAAO,GAAGxhB,EAAEkiB,EAAE9uB,QAAQqH,EAAE6nB,OAAOd,QAAQ,EAAEG,GAAG,GAAG3hB,IAAI,GAAGuhB,EAAEW,EAAE9uB,QAAQqH,EAAE6nB,OAAOd,QAAQ,EAAEK,GAAG,EAAEN,IAAI,GAAGrH,EAAEgI,EAAE9uB,QAAQqH,EAAE6nB,OAAOd,OAAOI,EAAEH,KAAK1T,EAAE,KAAKwT,IAAIK,EAAEH,KAAKE,GAAG,KAAKzH,IAAI0H,EAAEH,KAAKI,GAAG,OAAOD,CAAC,CAAC,EAAE,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,CAAC,SAASnnB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,cAAcuF,EAAEvF,EAAE,uBAAuB8mB,EAAE9mB,EAAE,uBAAuByf,EAAEzf,EAAE,4BAA4B,SAAS+mB,EAAE/mB,EAAEsT,EAAE4T,EAAEE,EAAE7hB,GAAGzV,KAAKo4B,eAAeloB,EAAElQ,KAAKq4B,iBAAiB7U,EAAExjB,KAAKs4B,MAAMlB,EAAEp3B,KAAKu4B,YAAYjB,EAAEt3B,KAAKw4B,kBAAkB/iB,CAAC,CAACwhB,EAAEwB,UAAU,CAACC,iBAAiB,WAAW,IAAIxoB,EAAE,IAAIuF,EAAE6hB,EAAErvB,QAAQ8qB,QAAQ/yB,KAAKw4B,oBAAoBG,KAAK34B,KAAKu4B,YAAYK,oBAAoBD,KAAK,IAAIhJ,EAAE,gBAAgBnM,EAAExjB,KAAK,OAAOkQ,EAAE2oB,GAAG,MAAM,WAAW,GAAG74B,KAAK84B,WAAWC,cAAcvV,EAAE6U,iBAAiB,MAAM,IAAIlvB,MAAM,wCAAwC,GAAG+G,CAAC,EAAE8oB,oBAAoB,WAAW,OAAO,IAAIvjB,EAAE6hB,EAAErvB,QAAQ8qB,QAAQ/yB,KAAKw4B,oBAAoBS,eAAe,iBAAiBj5B,KAAKo4B,gBAAgBa,eAAe,mBAAmBj5B,KAAKq4B,kBAAkBY,eAAe,QAAQj5B,KAAKs4B,OAAOW,eAAe,cAAcj5B,KAAKu4B,YAAY,GAAGtB,EAAEiC,iBAAiB,SAAShpB,EAAEsT,EAAE4T,GAAG,OAAOlnB,EAAEyoB,KAAK,IAAI3B,GAAG2B,KAAK,IAAIhJ,EAAE,qBAAqBgJ,KAAKnV,EAAE2V,eAAe/B,IAAIuB,KAAK,IAAIhJ,EAAE,mBAAmBsJ,eAAe,cAAczV,EAAE,EAAEA,EAAEuT,QAAQE,CAAC,EAAE,CAAC,aAAa,EAAE,sBAAsB,GAAG,2BAA2B,GAAG,sBAAsB,KAAK,EAAE,CAAC,SAAS/mB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,0BAA0BknB,EAAEgC,MAAM,CAACC,MAAM,OAAOF,eAAe,WAAW,OAAO,IAAI7B,EAAE,oBAAoB,EAAEsB,iBAAiB,WAAW,OAAO,IAAItB,EAAE,sBAAsB,GAAGF,EAAEkC,QAAQppB,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,yBAAyB,KAAK,EAAE,CAAC,SAASA,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,WAAe+mB,EAAE,WAAW,IAAI,IAAI/mB,EAAEsT,EAAE,GAAG4T,EAAE,EAAEA,EAAE,IAAIA,IAAI,CAAClnB,EAAEknB,EAAE,IAAI,IAAIE,EAAE,EAAEA,EAAE,EAAEA,IAAIpnB,EAAE,EAAEA,EAAE,WAAWA,IAAI,EAAEA,IAAI,EAAEsT,EAAE4T,GAAGlnB,CAAC,CAAC,OAAOsT,CAAC,CAA7G,GAAiHA,EAAEuT,QAAQ,SAAS7mB,EAAEsT,GAAG,YAAO,IAAStT,GAAGA,EAAEvL,OAAO,WAAW2yB,EAAEO,UAAU3nB,GAAG,SAASA,EAAEsT,EAAE4T,EAAEE,GAAG,IAAI7hB,EAAEwhB,EAAED,EAAEM,EAAEF,EAAElnB,IAAI,EAAE,IAAI,IAAIyf,EAAE2H,EAAE3H,EAAEqH,EAAErH,IAAIzf,EAAEA,IAAI,EAAEuF,EAAE,KAAKvF,EAAEsT,EAAEmM,KAAK,OAAO,EAAEzf,CAAC,CAA5F,CAA8F,EAAEsT,EAAEtT,EAAEA,EAAEvL,OAAO,GAAG,SAASuL,EAAEsT,EAAE4T,EAAEE,GAAG,IAAI7hB,EAAEwhB,EAAED,EAAEM,EAAEF,EAAElnB,IAAI,EAAE,IAAI,IAAIyf,EAAE2H,EAAE3H,EAAEqH,EAAErH,IAAIzf,EAAEA,IAAI,EAAEuF,EAAE,KAAKvF,EAAEsT,EAAEsU,WAAWnI,KAAK,OAAO,EAAEzf,CAAC,CAAvG,CAAyG,EAAEsT,EAAEtT,EAAEA,EAAEvL,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,SAASuL,EAAEsT,EAAE4T,GAAG,aAAaA,EAAEmC,QAAO,EAAGnC,EAAEoC,QAAO,EAAGpC,EAAE7S,KAAI,EAAG6S,EAAEqC,eAAc,EAAGrC,EAAEsC,KAAK,KAAKtC,EAAEmB,YAAY,KAAKnB,EAAEuC,mBAAmB,KAAKvC,EAAEwC,QAAQ,KAAKxC,EAAEyC,gBAAgB,KAAKzC,EAAE0C,eAAe,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS5pB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAE,KAAKA,EAAE,oBAAoBrvB,QAAQA,QAAQiI,EAAE,OAAOsT,EAAEuT,QAAQ,CAAC9uB,QAAQqvB,EAAE,EAAE,CAACyC,IAAI,KAAK,EAAE,CAAC,SAAS7pB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAE,oBAAoBa,YAAY,oBAAoB6B,aAAa,oBAAoBC,YAAYxkB,EAAEvF,EAAE,QAAQ8mB,EAAE9mB,EAAE,WAAWyf,EAAEzf,EAAE,0BAA0B+mB,EAAEK,EAAE,aAAa,QAAQ,SAASJ,EAAEhnB,EAAEsT,GAAGmM,EAAE6H,KAAKx3B,KAAK,eAAekQ,GAAGlQ,KAAKk6B,MAAM,KAAKl6B,KAAKm6B,YAAYjqB,EAAElQ,KAAKo6B,aAAa5W,EAAExjB,KAAKq6B,KAAK,CAAC,CAAC,CAACjD,EAAEiC,MAAM,OAAOrC,EAAEsD,SAASpD,EAAEvH,GAAGuH,EAAEuB,UAAU8B,aAAa,SAASrqB,GAAGlQ,KAAKq6B,KAAKnqB,EAAEmqB,KAAK,OAAOr6B,KAAKk6B,OAAOl6B,KAAKw6B,cAAcx6B,KAAKk6B,MAAM9xB,KAAK4uB,EAAEyD,YAAYxD,EAAE/mB,EAAE/R,OAAM,EAAG,EAAE+4B,EAAEuB,UAAUiC,MAAM,WAAW/K,EAAE8I,UAAUiC,MAAMlD,KAAKx3B,MAAM,OAAOA,KAAKk6B,OAAOl6B,KAAKw6B,cAAcx6B,KAAKk6B,MAAM9xB,KAAK,IAAG,EAAG,EAAE8uB,EAAEuB,UAAUkC,QAAQ,WAAWhL,EAAE8I,UAAUkC,QAAQnD,KAAKx3B,MAAMA,KAAKk6B,MAAM,IAAI,EAAEhD,EAAEuB,UAAU+B,YAAY,WAAWx6B,KAAKk6B,MAAM,IAAIzkB,EAAEzV,KAAKm6B,aAAa,CAACS,KAAI,EAAGC,MAAM76B,KAAKo6B,aAAaS,QAAQ,IAAI,IAAIrX,EAAExjB,KAAKA,KAAKk6B,MAAMY,OAAO,SAAS5qB,GAAGsT,EAAEpb,KAAK,CAACjK,KAAK+R,EAAEmqB,KAAK7W,EAAE6W,MAAM,CAAC,EAAEjD,EAAE+B,eAAe,SAASjpB,GAAG,OAAO,IAAIgnB,EAAE,UAAUhnB,EAAE,EAAEknB,EAAEwB,iBAAiB,WAAW,OAAO,IAAI1B,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,GAAG,UAAU,GAAG6D,KAAK,KAAK,EAAE,CAAC,SAAS7qB,EAAEsT,EAAE4T,GAAG,aAAa,SAAS4D,EAAE9qB,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE,GAAG,IAAIF,EAAE,EAAEA,EAAE5T,EAAE4T,IAAIE,GAAGj4B,OAAO47B,aAAa,IAAI/qB,GAAGA,KAAK,EAAE,OAAOonB,CAAC,CAAC,SAASA,EAAEpnB,EAAEsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,GAAG,IAAIrH,EAAEsH,EAAEC,EAAEhnB,EAAE1I,KAAK2vB,EAAEjnB,EAAEqoB,YAAYlB,EAAEL,IAAIkE,EAAEC,WAAWrI,EAAEsI,EAAEX,YAAY,SAASzD,EAAEE,EAAEr4B,OAAO64B,EAAE0D,EAAEX,YAAY,SAASS,EAAEC,WAAWjE,EAAEr4B,OAAO44B,EAAEP,EAAE0C,QAAQjC,EAAEyD,EAAEX,YAAY,SAASzD,EAAES,IAAI4D,EAAED,EAAEX,YAAY,SAASS,EAAEC,WAAW1D,IAAIx5B,EAAEy5B,EAAE/yB,SAASuyB,EAAEr4B,KAAK8F,OAAO22B,EAAED,EAAE12B,SAAS8yB,EAAE9yB,OAAOirB,EAAE,GAAG2L,EAAE,GAAGxV,EAAE,GAAGyV,EAAEtE,EAAE3S,IAAIkX,EAAEvE,EAAEwC,KAAK5T,EAAE,CAACwS,MAAM,EAAEF,eAAe,EAAEC,iBAAiB,GAAG7U,IAAI4T,IAAItR,EAAEwS,MAAMpoB,EAAEooB,MAAMxS,EAAEsS,eAAeloB,EAAEkoB,eAAetS,EAAEuS,iBAAiBnoB,EAAEmoB,kBAAkB,IAAIqD,EAAE,EAAElY,IAAIkY,GAAG,GAAGrE,IAAIp5B,IAAIq9B,IAAII,GAAG,MAAM,IAAIC,EAAE,EAAEC,EAAE,EAAEJ,IAAIG,GAAG,IAAI,SAASlmB,GAAGmmB,EAAE,IAAID,GAAG,SAASzrB,EAAEsT,GAAG,IAAI4T,EAAElnB,EAAE,OAAOA,IAAIknB,EAAE5T,EAAE,MAAM,QAAQ,MAAM4T,IAAI,EAAE,CAA/D,CAAiEF,EAAE2C,gBAAgB2B,KAAKI,EAAE,GAAGD,GAAG,SAASzrB,GAAG,OAAO,IAAIA,GAAG,EAAE,CAA5B,CAA8BgnB,EAAE4C,iBAAiBnK,EAAE8L,EAAEI,cAAclM,IAAI,EAAEA,GAAG8L,EAAEK,gBAAgBnM,IAAI,EAAEA,GAAG8L,EAAEM,gBAAgB,EAAE9E,EAAEwE,EAAEO,iBAAiB,KAAK/E,IAAI,EAAEA,GAAGwE,EAAEQ,cAAc,EAAEhF,IAAI,EAAEA,GAAGwE,EAAES,aAAaj+B,IAAIs9B,EAAEP,EAAE,EAAE,GAAGA,EAAEmB,EAAErJ,GAAG,GAAG4E,EAAE9H,GAAG,KAAKoL,EAAEO,EAAE52B,OAAO,GAAG42B,GAAGD,IAAIvV,EAAEiV,EAAE,EAAE,GAAGA,EAAEmB,EAAExE,GAAG,GAAG0D,EAAEzL,GAAG,KAAKoL,EAAEjV,EAAEphB,OAAO,GAAGohB,GAAG,IAAIqW,EAAE,GAAG,OAAOA,GAAG,OAAOA,GAAGpB,EAAEU,EAAE,GAAGU,GAAGjF,EAAEkC,MAAM+C,GAAGpB,EAAErL,EAAE,GAAGyM,GAAGpB,EAAE/D,EAAE,GAAGmF,GAAGpB,EAAElV,EAAEwS,MAAM,GAAG8D,GAAGpB,EAAElV,EAAEsS,eAAe,GAAGgE,GAAGpB,EAAElV,EAAEuS,iBAAiB,GAAG+D,GAAGpB,EAAElI,EAAEnuB,OAAO,GAAGy3B,GAAGpB,EAAEpL,EAAEjrB,OAAO,GAAG,CAAC03B,WAAWC,EAAEC,kBAAkBH,EAAEtJ,EAAElD,EAAE4M,UAAUF,EAAEG,oBAAoBzB,EAAEY,EAAE,GAAGQ,EAAEpB,EAAErD,EAAEhzB,OAAO,GAAG,WAAWq2B,EAAEW,EAAE,GAAGX,EAAE1D,EAAE,GAAGxE,EAAElD,EAAE+H,EAAE,CAAC,IAAIyD,EAAElrB,EAAE,YAAYuF,EAAEvF,EAAE,2BAA2BgrB,EAAEhrB,EAAE,WAAWisB,EAAEjsB,EAAE,YAAYosB,EAAEpsB,EAAE,gBAAgB,SAAS8mB,EAAE9mB,EAAEsT,EAAE4T,EAAEE,GAAG7hB,EAAE+hB,KAAKx3B,KAAK,iBAAiBA,KAAK08B,aAAa,EAAE18B,KAAK28B,WAAWnZ,EAAExjB,KAAK48B,YAAYxF,EAAEp3B,KAAK68B,eAAevF,EAAEt3B,KAAK88B,YAAY5sB,EAAElQ,KAAK+8B,YAAW,EAAG/8B,KAAKg9B,cAAc,GAAGh9B,KAAKi9B,WAAW,GAAGj9B,KAAKk9B,oBAAoB,EAAEl9B,KAAKm9B,aAAa,EAAEn9B,KAAKo9B,YAAY,KAAKp9B,KAAKq9B,SAAS,EAAE,CAACjC,EAAEd,SAAStD,EAAEvhB,GAAGuhB,EAAEyB,UAAUrwB,KAAK,SAAS8H,GAAG,IAAIsT,EAAEtT,EAAEmqB,KAAKiD,SAAS,EAAElG,EAAEp3B,KAAKm9B,aAAa7F,EAAEt3B,KAAKq9B,SAAS14B,OAAO3E,KAAK+8B,WAAW/8B,KAAKg9B,cAAc50B,KAAK8H,IAAIlQ,KAAK08B,cAAcxsB,EAAE/R,KAAKwG,OAAO8Q,EAAEgjB,UAAUrwB,KAAKovB,KAAKx3B,KAAK,CAAC7B,KAAK+R,EAAE/R,KAAKk8B,KAAK,CAAC+C,YAAYp9B,KAAKo9B,YAAYE,QAAQlG,GAAG5T,EAAE,KAAK4T,EAAEE,EAAE,IAAIF,EAAE,OAAO,EAAEJ,EAAEyB,UAAU8E,aAAa,SAASrtB,GAAGlQ,KAAKk9B,oBAAoBl9B,KAAK08B,aAAa18B,KAAKo9B,YAAYltB,EAAE1I,KAAK3I,KAAK,IAAI2kB,EAAExjB,KAAK88B,cAAc5sB,EAAE1I,KAAK+c,IAAI,GAAGf,EAAE,CAAC,IAAI4T,EAAEE,EAAEpnB,EAAEsT,GAAE,EAAGxjB,KAAKk9B,oBAAoBl9B,KAAK48B,YAAY58B,KAAK68B,gBAAgB78B,KAAKoI,KAAK,CAACjK,KAAKi5B,EAAEiF,WAAWhC,KAAK,CAACiD,QAAQ,IAAI,MAAMt9B,KAAK+8B,YAAW,CAAE,EAAE/F,EAAEyB,UAAU+E,aAAa,SAASttB,GAAGlQ,KAAK+8B,YAAW,EAAG,IAAIvZ,EAAExjB,KAAK88B,cAAc5sB,EAAE1I,KAAK+c,IAAI6S,EAAEE,EAAEpnB,EAAEsT,GAAE,EAAGxjB,KAAKk9B,oBAAoBl9B,KAAK48B,YAAY58B,KAAK68B,gBAAgB,GAAG78B,KAAKi9B,WAAW70B,KAAKgvB,EAAEoF,WAAWhZ,EAAExjB,KAAKoI,KAAK,CAACjK,KAAK,SAAS+R,GAAG,OAAOosB,EAAEmB,gBAAgBzC,EAAE9qB,EAAEooB,MAAM,GAAG0C,EAAE9qB,EAAEkoB,eAAe,GAAG4C,EAAE9qB,EAAEmoB,iBAAiB,EAAE,CAA/F,CAAiGnoB,GAAGmqB,KAAK,CAACiD,QAAQ,YAAY,IAAIt9B,KAAKoI,KAAK,CAACjK,KAAKi5B,EAAEiF,WAAWhC,KAAK,CAACiD,QAAQ,KAAKt9B,KAAKg9B,cAAcr4B,QAAQ3E,KAAKoI,KAAKpI,KAAKg9B,cAAcU,SAAS19B,KAAKo9B,YAAY,IAAI,EAAEpG,EAAEyB,UAAUiC,MAAM,WAAW,IAAI,IAAIxqB,EAAElQ,KAAK08B,aAAalZ,EAAE,EAAEA,EAAExjB,KAAKi9B,WAAWt4B,OAAO6e,IAAIxjB,KAAKoI,KAAK,CAACjK,KAAK6B,KAAKi9B,WAAWzZ,GAAG6W,KAAK,CAACiD,QAAQ,OAAO,IAAIlG,EAAEp3B,KAAK08B,aAAaxsB,EAAEonB,EAAE,SAASpnB,EAAEsT,EAAE4T,EAAEE,EAAE7hB,GAAG,IAAIuhB,EAAEoE,EAAEX,YAAY,SAAShlB,EAAE6hB,IAAI,OAAOgF,EAAEqB,sBAAsB,WAAW3C,EAAE9qB,EAAE,GAAG8qB,EAAE9qB,EAAE,GAAG8qB,EAAExX,EAAE,GAAGwX,EAAE5D,EAAE,GAAG4D,EAAEhE,EAAEryB,OAAO,GAAGqyB,CAAC,CAA5I,CAA8Ih3B,KAAKi9B,WAAWt4B,OAAOyyB,EAAElnB,EAAElQ,KAAK28B,WAAW38B,KAAK68B,gBAAgB78B,KAAKoI,KAAK,CAACjK,KAAKm5B,EAAE+C,KAAK,CAACiD,QAAQ,MAAM,EAAEtG,EAAEyB,UAAUmF,kBAAkB,WAAW59B,KAAK69B,SAAS79B,KAAKq9B,SAASK,QAAQ19B,KAAKu9B,aAAav9B,KAAK69B,SAAS/E,YAAY94B,KAAK89B,SAAS99B,KAAK69B,SAASttB,QAAQvQ,KAAK69B,SAASE,QAAQ,EAAE/G,EAAEyB,UAAUuF,iBAAiB,SAAS9tB,GAAGlQ,KAAKq9B,SAASj1B,KAAK8H,GAAG,IAAIsT,EAAExjB,KAAK,OAAOkQ,EAAE2oB,GAAG,OAAO,SAAS3oB,GAAGsT,EAAE+W,aAAarqB,EAAE,GAAGA,EAAE2oB,GAAG,MAAM,WAAWrV,EAAEga,aAAaha,EAAEqa,SAAS/E,YAAYtV,EAAE6Z,SAAS14B,OAAO6e,EAAEoa,oBAAoBpa,EAAE2J,KAAK,GAAGjd,EAAE2oB,GAAG,QAAQ,SAAS3oB,GAAGsT,EAAE7lB,MAAMuS,EAAE,GAAGlQ,IAAI,EAAEg3B,EAAEyB,UAAUsF,OAAO,WAAW,QAAQtoB,EAAEgjB,UAAUsF,OAAOvG,KAAKx3B,SAASA,KAAK69B,UAAU79B,KAAKq9B,SAAS14B,QAAQ3E,KAAK49B,qBAAoB,GAAI59B,KAAK69B,UAAU79B,KAAKq9B,SAAS14B,QAAQ3E,KAAKi+B,oBAAe,GAAQj+B,KAAKmtB,OAAM,GAAI,EAAE6J,EAAEyB,UAAU96B,MAAM,SAASuS,GAAG,IAAIsT,EAAExjB,KAAKq9B,SAAS,IAAI5nB,EAAEgjB,UAAU96B,MAAM65B,KAAKx3B,KAAKkQ,GAAG,OAAM,EAAG,IAAI,IAAIknB,EAAE,EAAEA,EAAE5T,EAAE7e,OAAOyyB,IAAI,IAAI5T,EAAE4T,GAAGz5B,MAAMuS,EAAE,CAAC,MAAMA,GAAG,CAAC,OAAM,CAAE,EAAE8mB,EAAEyB,UAAUzH,KAAK,WAAWvb,EAAEgjB,UAAUzH,KAAKwG,KAAKx3B,MAAM,IAAI,IAAIkQ,EAAElQ,KAAKq9B,SAAS7Z,EAAE,EAAEA,EAAEtT,EAAEvL,OAAO6e,IAAItT,EAAEsT,GAAGwN,MAAM,EAAExN,EAAEuT,QAAQC,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,GAAG,0BAA0B,GAAG,UAAU,GAAG,WAAW,KAAK,EAAE,CAAC,SAAS9mB,EAAEsT,EAAE4T,GAAG,aAAa,IAAID,EAAEjnB,EAAE,mBAAmBonB,EAAEpnB,EAAE,mBAAmBknB,EAAE8G,eAAe,SAAShuB,EAAEyf,EAAEnM,GAAG,IAAIyT,EAAE,IAAIK,EAAE3H,EAAEmN,YAAYtZ,EAAEmM,EAAEwO,SAASxO,EAAEkN,gBAAgB3F,EAAE,EAAE,IAAIhnB,EAAEyH,QAAQ,SAASzH,EAAEsT,GAAG0T,IAAI,IAAIE,EAAE,SAASlnB,EAAEsT,GAAG,IAAI4T,EAAElnB,GAAGsT,EAAE8T,EAAEH,EAAEC,GAAG,IAAIE,EAAE,MAAM,IAAInuB,MAAMiuB,EAAE,wCAAwC,OAAOE,CAAC,CAAxG,CAA0G9T,EAAE0C,QAAQqS,YAAY5I,EAAE4I,aAAajB,EAAE9T,EAAE0C,QAAQyT,oBAAoBhK,EAAEgK,oBAAoB,CAAC,EAAElkB,EAAE+N,EAAEe,IAAIyS,EAAExT,EAAEkW,KAAKlW,EAAE4a,gBAAgBhH,EAAEE,GAAG2B,eAAe,OAAO,CAACp6B,KAAKqR,EAAEqU,IAAI9O,EAAEikB,KAAK1C,EAAE4C,QAAQpW,EAAEoW,SAAS,GAAGC,gBAAgBrW,EAAEqW,gBAAgBC,eAAetW,EAAEsW,iBAAiBnB,KAAK1B,EAAE,GAAGA,EAAEkG,aAAajG,CAAC,CAAC,MAAMhnB,GAAG+mB,EAAEt5B,MAAMuS,EAAE,CAAC,OAAO+mB,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,IAAI,GAAG,CAAC,SAAS/mB,EAAEsT,EAAE4T,GAAG,aAAa,SAASE,IAAI,KAAKt3B,gBAAgBs3B,GAAG,OAAO,IAAIA,EAAE,GAAG+G,UAAU15B,OAAO,MAAM,IAAIwE,MAAM,kGAAkGnJ,KAAKsiB,MAAMpT,OAAOovB,OAAO,MAAMt+B,KAAK45B,QAAQ,KAAK55B,KAAKu+B,KAAK,GAAGv+B,KAAKw+B,MAAM,WAAW,IAAItuB,EAAE,IAAIonB,EAAE,IAAI,IAAI9T,KAAKxjB,KAAK,mBAAmBA,KAAKwjB,KAAKtT,EAAEsT,GAAGxjB,KAAKwjB,IAAI,OAAOtT,CAAC,CAAC,EAAEonB,EAAEmB,UAAUvoB,EAAE,aAAauuB,UAAUvuB,EAAE,UAAUonB,EAAEoH,QAAQxuB,EAAE,aAAaonB,EAAEqH,SAASzuB,EAAE,cAAconB,EAAEsH,QAAQ,SAAStH,EAAEmH,UAAU,SAASvuB,EAAEsT,GAAG,OAAO,IAAI8T,GAAGmH,UAAUvuB,EAAEsT,EAAE,EAAE8T,EAAEuH,SAAS3uB,EAAE,cAAcsT,EAAEuT,QAAQO,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,KAAK,GAAG,CAAC,SAASpnB,EAAEsT,EAAE4T,GAAG,aAAa,IAAID,EAAEjnB,EAAE,WAAWuF,EAAEvF,EAAE,cAAconB,EAAEpnB,EAAE,UAAU8mB,EAAE9mB,EAAE,gBAAgByf,EAAEzf,EAAE,uBAAuBmnB,EAAEnnB,EAAE,iBAAiB,SAAS4iB,EAAEwE,GAAG,OAAO,IAAI7hB,EAAExN,QAAQ,SAASiI,EAAEsT,GAAG,IAAI4T,EAAEE,EAAEwH,aAAapG,mBAAmBC,KAAK,IAAIhJ,GAAGyH,EAAEyB,GAAG,QAAQ,SAAS3oB,GAAGsT,EAAEtT,EAAE,GAAG2oB,GAAG,MAAM,WAAWzB,EAAE0B,WAAWR,QAAQhB,EAAEwH,aAAaxG,MAAM9U,EAAE,IAAIra,MAAM,mCAAmC+G,GAAG,GAAG6tB,QAAQ,EAAE,CAACva,EAAEuT,QAAQ,SAAS7mB,EAAE+mB,GAAG,IAAIC,EAAEl3B,KAAK,OAAOi3B,EAAEE,EAAE4H,OAAO9H,GAAG,CAAC,EAAE,CAACsC,QAAO,EAAGyF,YAAW,EAAGC,uBAAsB,EAAGxF,eAAc,EAAGyF,eAAe5H,EAAE6H,aAAa9H,EAAE+H,QAAQ/H,EAAEgI,SAASnvB,GAAGuF,EAAExN,QAAQqoB,OAAO,IAAInnB,MAAM,yDAAyDguB,EAAEmI,eAAe,sBAAsBpvB,GAAE,EAAG+mB,EAAEgI,sBAAsBhI,EAAEsC,QAAQ9vB,KAAK,SAASyG,GAAG,IAAIsT,EAAE,IAAIwT,EAAEC,GAAG,OAAOzT,EAAE+b,KAAKrvB,GAAGsT,CAAC,GAAG/Z,KAAK,SAASyG,GAAG,IAAIsT,EAAE,CAAC/N,EAAExN,QAAQ8qB,QAAQ7iB,IAAIknB,EAAElnB,EAAEoS,MAAM,GAAG2U,EAAE+H,WAAW,IAAI,IAAI1H,EAAE,EAAEA,EAAEF,EAAEzyB,OAAO2yB,IAAI9T,EAAEpb,KAAK0qB,EAAEsE,EAAEE,KAAK,OAAO7hB,EAAExN,QAAQC,IAAIsb,EAAE,GAAG/Z,KAAK,SAASyG,GAAG,IAAI,IAAIsT,EAAEtT,EAAEwtB,QAAQtG,EAAE5T,EAAElB,MAAMgV,EAAE,EAAEA,EAAEF,EAAEzyB,OAAO2yB,IAAI,CAAC,IAAI7hB,EAAE2hB,EAAEE,GAAGN,EAAEvhB,EAAE+pB,YAAY7P,EAAEwH,EAAEpE,QAAQtd,EAAE+pB,aAAatI,EAAE1vB,KAAKmoB,EAAEla,EAAEqpB,aAAa,CAACtF,QAAO,EAAGyF,uBAAsB,EAAGvF,KAAKjkB,EAAEikB,KAAKnV,IAAI9O,EAAE8O,IAAIqV,QAAQnkB,EAAEgqB,eAAe96B,OAAO8Q,EAAEgqB,eAAe,KAAK5F,gBAAgBpkB,EAAEokB,gBAAgBC,eAAerkB,EAAEqkB,eAAeL,cAAcxC,EAAEwC,gBAAgBhkB,EAAE8O,MAAM2S,EAAE1vB,KAAKmoB,GAAG+P,mBAAmB1I,EAAE,CAAC,OAAOxT,EAAEmZ,WAAWh4B,SAASuyB,EAAE0C,QAAQpW,EAAEmZ,YAAYzF,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,KAAK,GAAG,CAAC,SAAShnB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,YAAYuF,EAAEvF,EAAE,2BAA2B,SAAS8mB,EAAE9mB,EAAEsT,GAAG/N,EAAE+hB,KAAKx3B,KAAK,mCAAmCkQ,GAAGlQ,KAAK2/B,gBAAe,EAAG3/B,KAAK4/B,YAAYpc,EAAE,CAAC8T,EAAEgD,SAAStD,EAAEvhB,GAAGuhB,EAAEyB,UAAUmH,YAAY,SAAS1vB,GAAG,IAAIsT,EAAExjB,MAAMA,KAAK6/B,QAAQ3vB,GAAGK,QAAQL,EAAE2oB,GAAG,OAAO,SAAS3oB,GAAGsT,EAAEpb,KAAK,CAACjK,KAAK+R,EAAEmqB,KAAK,CAACiD,QAAQ,IAAI,GAAGzE,GAAG,QAAQ,SAAS3oB,GAAGsT,EAAEsa,SAAS99B,KAAKi+B,eAAe/tB,EAAEsT,EAAE7lB,MAAMuS,EAAE,GAAG2oB,GAAG,MAAM,WAAWrV,EAAEsa,SAASta,EAAEmc,gBAAe,EAAGnc,EAAE2J,KAAK,EAAE,EAAE6J,EAAEyB,UAAUloB,MAAM,WAAW,QAAQkF,EAAEgjB,UAAUloB,MAAMinB,KAAKx3B,QAAQA,KAAK6/B,QAAQtvB,SAAQ,EAAG,EAAEymB,EAAEyB,UAAUsF,OAAO,WAAW,QAAQtoB,EAAEgjB,UAAUsF,OAAOvG,KAAKx3B,QAAQA,KAAK2/B,eAAe3/B,KAAKmtB,MAAMntB,KAAK6/B,QAAQ9B,UAAS,EAAG,EAAEva,EAAEuT,QAAQC,CAAC,EAAE,CAAC,0BAA0B,GAAG,WAAW,KAAK,GAAG,CAAC,SAAS9mB,EAAEsT,EAAE4T,GAAG,aAAa,IAAI3hB,EAAEvF,EAAE,mBAAmB4vB,SAAS,SAASxI,EAAEpnB,EAAEsT,EAAE4T,GAAG3hB,EAAE+hB,KAAKx3B,KAAKwjB,GAAGxjB,KAAK+/B,QAAQ7vB,EAAE,IAAIonB,EAAEt3B,KAAKkQ,EAAE2oB,GAAG,OAAO,SAAS3oB,EAAEsT,GAAG8T,EAAElvB,KAAK8H,IAAIonB,EAAEyI,QAAQxvB,QAAQ6mB,GAAGA,EAAE5T,EAAE,GAAGqV,GAAG,QAAQ,SAAS3oB,GAAGonB,EAAE0I,KAAK,QAAQ9vB,EAAE,GAAG2oB,GAAG,MAAM,WAAWvB,EAAElvB,KAAK,KAAK,EAAE,CAAC8H,EAAE,YAAYoqB,SAAShD,EAAE7hB,GAAG6hB,EAAEmB,UAAUwH,MAAM,WAAWjgC,KAAK+/B,QAAQhC,QAAQ,EAAEva,EAAEuT,QAAQO,CAAC,EAAE,CAAC,WAAW,GAAG,kBAAkB,KAAK,GAAG,CAAC,SAASpnB,EAAEsT,EAAE4T,GAAG,aAAa5T,EAAEuT,QAAQ,CAACqI,OAAO,oBAAoBc,OAAOC,cAAc,SAASjwB,EAAEsT,GAAG,GAAG0c,OAAO/J,MAAM+J,OAAO/J,OAAOgC,WAAWhC,KAAK,OAAO+J,OAAO/J,KAAKjmB,EAAEsT,GAAG,GAAG,iBAAiBtT,EAAE,MAAM,IAAI/G,MAAM,4CAA4C,OAAO,IAAI+2B,OAAOhwB,EAAEsT,EAAE,EAAE4c,YAAY,SAASlwB,GAAG,GAAGgwB,OAAOG,MAAM,OAAOH,OAAOG,MAAMnwB,GAAG,IAAIsT,EAAE,IAAI0c,OAAOhwB,GAAG,OAAOsT,EAAE8c,KAAK,GAAG9c,CAAC,EAAE+c,SAAS,SAASrwB,GAAG,OAAOgwB,OAAOK,SAASrwB,EAAE,EAAEmvB,SAAS,SAASnvB,GAAG,OAAOA,GAAG,mBAAmBA,EAAE2oB,IAAI,mBAAmB3oB,EAAEK,OAAO,mBAAmBL,EAAE6tB,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS7tB,EAAEsT,EAAE4T,GAAG,aAAa,SAASJ,EAAE9mB,EAAEsT,EAAE4T,GAAG,IAAIE,EAAE7hB,EAAE0hB,EAAEU,UAAUrU,GAAGwT,EAAEG,EAAE4H,OAAO3H,GAAG,CAAC,EAAEtE,GAAGkE,EAAE0C,KAAK1C,EAAE0C,MAAM,IAAIpqB,KAAK,OAAO0nB,EAAEuB,cAAcvB,EAAEuB,YAAYvB,EAAEuB,YAAYiI,eAAe,iBAAiBxJ,EAAE6C,kBAAkB7C,EAAE6C,gBAAgB5E,SAAS+B,EAAE6C,gBAAgB,IAAI7C,EAAE6C,iBAAiB,MAAM7C,EAAE6C,kBAAkB7C,EAAEzS,KAAI,GAAIyS,EAAE8C,gBAAgB,GAAG9C,EAAE8C,iBAAiB9C,EAAEzS,KAAI,GAAIyS,EAAEzS,MAAMrU,EAAEorB,EAAEprB,IAAI8mB,EAAEyC,gBAAgBnC,EAAEr5B,EAAEiS,KAAK0f,EAAE4H,KAAKx3B,KAAKs3B,GAAE,GAAI,IAAI3H,EAAE,WAAWla,IAAG,IAAKuhB,EAAEwC,SAAQ,IAAKxC,EAAEuC,OAAOnC,QAAG,IAASA,EAAEoC,SAASxC,EAAEwC,QAAQ7J,IAAInM,aAAakU,GAAG,IAAIlU,EAAE6U,kBAAkBrB,EAAEzS,MAAMf,GAAG,IAAIA,EAAE7e,UAAUqyB,EAAEuC,QAAO,EAAGvC,EAAEwC,QAAO,EAAGhW,EAAE,GAAGwT,EAAEuB,YAAY,QAAQ9iB,EAAE,UAAU,IAAIwhB,EAAE,KAAKA,EAAEzT,aAAakU,GAAGlU,aAAa6T,EAAE7T,EAAEmU,EAAEyH,QAAQzH,EAAE0H,SAAS7b,GAAG,IAAI6X,EAAEnrB,EAAEsT,GAAG2T,EAAEmI,eAAepvB,EAAEsT,EAAEwT,EAAEwC,OAAOxC,EAAEiI,sBAAsBjI,EAAEuC,QAAQ,IAAIrC,EAAE,IAAIO,EAAEvnB,EAAE+mB,EAAED,GAAGh3B,KAAKsiB,MAAMpS,GAAGgnB,CAAC,CAAC,IAAIzhB,EAAEvF,EAAE,UAAUinB,EAAEjnB,EAAE,WAAWmnB,EAAEnnB,EAAE,0BAA0Byf,EAAEzf,EAAE,yBAAyB4iB,EAAE5iB,EAAE,cAAcwnB,EAAExnB,EAAE,sBAAsBunB,EAAEvnB,EAAE,eAAe+mB,EAAE/mB,EAAE,cAAcynB,EAAEznB,EAAE,iBAAiBmrB,EAAEnrB,EAAE,qCAAqCjS,EAAE,SAASiS,GAAG,MAAMA,EAAEpL,OAAO,KAAKoL,EAAEA,EAAEiU,UAAU,EAAEjU,EAAEvL,OAAO,IAAI,IAAI6e,EAAEtT,EAAEojB,YAAY,KAAK,OAAO,EAAE9P,EAAEtT,EAAEiU,UAAU,EAAEX,GAAG,EAAE,EAAE8X,EAAE,SAASprB,GAAG,MAAM,MAAMA,EAAEpL,OAAO,KAAKoL,GAAG,KAAKA,CAAC,EAAE0f,EAAE,SAAS1f,EAAEsT,GAAG,OAAOA,OAAE,IAASA,EAAEA,EAAEsP,EAAE2G,cAAcvpB,EAAEorB,EAAEprB,GAAGlQ,KAAKsiB,MAAMpS,IAAI8mB,EAAEQ,KAAKx3B,KAAKkQ,EAAE,KAAK,CAACqU,KAAI,EAAGkV,cAAcjW,IAAIxjB,KAAKsiB,MAAMpS,EAAE,EAAE,SAASgnB,EAAEhnB,GAAG,MAAM,oBAAoBhB,OAAOupB,UAAUgI,SAASjJ,KAAKtnB,EAAE,CAAC,IAAIonB,EAAE,CAACiI,KAAK,WAAW,MAAM,IAAIp2B,MAAM,6EAA6E,EAAEwO,QAAQ,SAASzH,GAAG,IAAIsT,EAAE4T,EAAEE,EAAE,IAAI9T,KAAKxjB,KAAKsiB,MAAMgV,EAAEt3B,KAAKsiB,MAAMkB,IAAI4T,EAAE5T,EAAE1e,MAAM9E,KAAKu+B,KAAK55B,OAAO6e,EAAE7e,UAAU6e,EAAE1e,MAAM,EAAE9E,KAAKu+B,KAAK55B,UAAU3E,KAAKu+B,MAAMruB,EAAEknB,EAAEE,EAAE,EAAEpyB,OAAO,SAASkyB,GAAG,IAAIE,EAAE,GAAG,OAAOt3B,KAAK2X,QAAQ,SAASzH,EAAEsT,GAAG4T,EAAElnB,EAAEsT,IAAI8T,EAAElvB,KAAKob,EAAE,GAAG8T,CAAC,EAAE9vB,KAAK,SAAS0I,EAAEsT,EAAE4T,GAAG,GAAG,IAAIiH,UAAU15B,OAAO,OAAOuL,EAAElQ,KAAKu+B,KAAKruB,EAAE8mB,EAAEQ,KAAKx3B,KAAKkQ,EAAEsT,EAAE4T,GAAGp3B,KAAK,GAAGk3B,EAAEhnB,GAAG,CAAC,IAAIonB,EAAEpnB,EAAE,OAAOlQ,KAAKkF,OAAO,SAASgL,EAAEsT,GAAG,OAAOA,EAAEe,KAAK+S,EAAEroB,KAAKiB,EAAE,EAAE,CAAC,IAAIuF,EAAEzV,KAAKsiB,MAAMtiB,KAAKu+B,KAAKruB,GAAG,OAAOuF,IAAIA,EAAE8O,IAAI9O,EAAE,IAAI,EAAEhR,OAAO,SAAS2yB,GAAG,IAAIA,EAAE,OAAOp3B,KAAK,GAAGk3B,EAAEE,GAAG,OAAOp3B,KAAKkF,OAAO,SAASgL,EAAEsT,GAAG,OAAOA,EAAEe,KAAK6S,EAAEnoB,KAAKiB,EAAE,GAAG,IAAIA,EAAElQ,KAAKu+B,KAAKnH,EAAE5T,EAAEoM,EAAE4H,KAAKx3B,KAAKkQ,GAAGonB,EAAEt3B,KAAKw+B,QAAQ,OAAOlH,EAAEiH,KAAK/a,EAAE3kB,KAAKy4B,CAAC,EAAEoJ,OAAO,SAAStJ,GAAGA,EAAEp3B,KAAKu+B,KAAKnH,EAAE,IAAIlnB,EAAElQ,KAAKsiB,MAAM8U,GAAG,GAAGlnB,IAAI,MAAMknB,EAAEtyB,OAAO,KAAKsyB,GAAG,KAAKlnB,EAAElQ,KAAKsiB,MAAM8U,IAAIlnB,IAAIA,EAAEqU,WAAWvkB,KAAKsiB,MAAM8U,QAAQ,IAAI,IAAI5T,EAAExjB,KAAKkF,OAAO,SAASgL,EAAEsT,GAAG,OAAOA,EAAE3kB,KAAKiG,MAAM,EAAEsyB,EAAEzyB,UAAUyyB,CAAC,GAAGE,EAAE,EAAEA,EAAE9T,EAAE7e,OAAO2yB,WAAWt3B,KAAKsiB,MAAMkB,EAAE8T,GAAGz4B,MAAM,OAAOmB,IAAI,EAAE2gC,SAAS,WAAW,MAAM,IAAIx3B,MAAM,6EAA6E,EAAEy3B,uBAAuB,SAAS1wB,GAAG,IAAIsT,EAAE4T,EAAE,CAAC,EAAE,IAAI,IAAIA,EAAED,EAAE4H,OAAO7uB,GAAG,CAAC,EAAE,CAAC4sB,aAAY,EAAGvE,YAAY,QAAQoB,mBAAmB,KAAK97B,KAAK,GAAGsgC,SAAS,MAAMvE,QAAQ,KAAKiH,SAAS,kBAAkBhE,eAAepnB,EAAE0lB,cAAct9B,KAAKu5B,EAAEv5B,KAAK8K,cAAcyuB,EAAEmB,YAAYnB,EAAEmB,YAAYiI,cAAc,iBAAiBpJ,EAAEv5B,OAAOu5B,EAAEv5B,KAAK,WAAWu5B,EAAEv5B,KAAK,MAAM,IAAIsL,MAAM,6BAA6BguB,EAAE2J,aAAa1J,EAAEv5B,MAAM,WAAWu5B,EAAE+G,UAAU,YAAY/G,EAAE+G,UAAU,UAAU/G,EAAE+G,UAAU,UAAU/G,EAAE+G,WAAW/G,EAAE+G,SAAS,QAAQ,UAAU/G,EAAE+G,WAAW/G,EAAE+G,SAAS,OAAO,IAAI7G,EAAEF,EAAEwC,SAAS55B,KAAK45B,SAAS,GAAGpW,EAAEyT,EAAEiH,eAAel+B,KAAKo3B,EAAEE,EAAE,CAAC,MAAMpnB,IAAIsT,EAAE,IAAI6T,EAAE,UAAU15B,MAAMuS,EAAE,CAAC,OAAO,IAAIyf,EAAEnM,EAAE4T,EAAEv5B,MAAM,SAASu5B,EAAEyJ,SAAS,EAAErN,cAAc,SAAStjB,EAAEsT,GAAG,OAAOxjB,KAAK4gC,uBAAuB1wB,GAAG6sB,WAAWvZ,EAAE,EAAEud,mBAAmB,SAAS7wB,EAAEsT,GAAG,OAAOtT,EAAEA,GAAG,CAAC,GAAGrS,OAAOqS,EAAErS,KAAK,cAAcmC,KAAK4gC,uBAAuB1wB,GAAG8wB,eAAexd,EAAE,GAAGA,EAAEuT,QAAQO,CAAC,EAAE,CAAC,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,oCAAoC,GAAG,gBAAgB,GAAG,yBAAyB,GAAG,wBAAwB,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,KAAK,GAAG,CAAC,SAASpnB,EAAEsT,EAAE4T,GAAG,aAAa5T,EAAEuT,QAAQ7mB,EAAE,SAAS,EAAE,CAAC+wB,YAAO,IAAS,GAAG,CAAC,SAAS/wB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,gBAAgB,SAASuF,EAAEvF,GAAGonB,EAAEE,KAAKx3B,KAAKkQ,GAAG,IAAI,IAAIsT,EAAE,EAAEA,EAAExjB,KAAK7B,KAAKwG,OAAO6e,IAAItT,EAAEsT,GAAG,IAAItT,EAAEsT,EAAE,CAACtT,EAAE,YAAYoqB,SAAS7kB,EAAE6hB,GAAG7hB,EAAEgjB,UAAUyI,OAAO,SAAShxB,GAAG,OAAOlQ,KAAK7B,KAAK6B,KAAKmhC,KAAKjxB,EAAE,EAAEuF,EAAEgjB,UAAU2I,qBAAqB,SAASlxB,GAAG,IAAI,IAAIsT,EAAEtT,EAAE4nB,WAAW,GAAGV,EAAElnB,EAAE4nB,WAAW,GAAGR,EAAEpnB,EAAE4nB,WAAW,GAAGriB,EAAEvF,EAAE4nB,WAAW,GAAGd,EAAEh3B,KAAK2E,OAAO,EAAE,GAAGqyB,IAAIA,EAAE,GAAGh3B,KAAK7B,KAAK64B,KAAKxT,GAAGxjB,KAAK7B,KAAK64B,EAAE,KAAKI,GAAGp3B,KAAK7B,KAAK64B,EAAE,KAAKM,GAAGt3B,KAAK7B,KAAK64B,EAAE,KAAKvhB,EAAE,OAAOuhB,EAAEh3B,KAAKmhC,KAAK,OAAO,CAAC,EAAE1rB,EAAEgjB,UAAU4I,sBAAsB,SAASnxB,GAAG,IAAIsT,EAAEtT,EAAE4nB,WAAW,GAAGV,EAAElnB,EAAE4nB,WAAW,GAAGR,EAAEpnB,EAAE4nB,WAAW,GAAGriB,EAAEvF,EAAE4nB,WAAW,GAAGd,EAAEh3B,KAAKshC,SAAS,GAAG,OAAO9d,IAAIwT,EAAE,IAAII,IAAIJ,EAAE,IAAIM,IAAIN,EAAE,IAAIvhB,IAAIuhB,EAAE,EAAE,EAAEvhB,EAAEgjB,UAAU6I,SAAS,SAASpxB,GAAG,GAAGlQ,KAAKuhC,YAAYrxB,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIsT,EAAExjB,KAAK7B,KAAK2G,MAAM9E,KAAKmhC,KAAKnhC,KAAK0E,MAAM1E,KAAKmhC,KAAKnhC,KAAK0E,MAAMwL,GAAG,OAAOlQ,KAAK0E,OAAOwL,EAAEsT,CAAC,EAAEA,EAAEuT,QAAQthB,CAAC,EAAE,CAAC,WAAW,GAAG,eAAe,KAAK,GAAG,CAAC,SAASvF,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,YAAY,SAASuF,EAAEvF,GAAGlQ,KAAK7B,KAAK+R,EAAElQ,KAAK2E,OAAOuL,EAAEvL,OAAO3E,KAAK0E,MAAM,EAAE1E,KAAKmhC,KAAK,CAAC,CAAC1rB,EAAEgjB,UAAU,CAAC8I,YAAY,SAASrxB,GAAGlQ,KAAKwhC,WAAWxhC,KAAK0E,MAAMwL,EAAE,EAAEsxB,WAAW,SAAStxB,GAAG,GAAGlQ,KAAK2E,OAAO3E,KAAKmhC,KAAKjxB,GAAGA,EAAE,EAAE,MAAM,IAAI/G,MAAM,sCAAsCnJ,KAAK2E,OAAO,mBAAmBuL,EAAE,qBAAqB,EAAEuxB,SAAS,SAASvxB,GAAGlQ,KAAKwhC,WAAWtxB,GAAGlQ,KAAK0E,MAAMwL,CAAC,EAAEwxB,KAAK,SAASxxB,GAAGlQ,KAAKyhC,SAASzhC,KAAK0E,MAAMwL,EAAE,EAAEgxB,OAAO,WAAW,EAAES,QAAQ,SAASzxB,GAAG,IAAIsT,EAAE4T,EAAE,EAAE,IAAIp3B,KAAKuhC,YAAYrxB,GAAGsT,EAAExjB,KAAK0E,MAAMwL,EAAE,EAAEsT,GAAGxjB,KAAK0E,MAAM8e,IAAI4T,GAAGA,GAAG,GAAGp3B,KAAKkhC,OAAO1d,GAAG,OAAOxjB,KAAK0E,OAAOwL,EAAEknB,CAAC,EAAEwK,WAAW,SAAS1xB,GAAG,OAAOonB,EAAEmD,YAAY,SAASz6B,KAAKshC,SAASpxB,GAAG,EAAEoxB,SAAS,WAAW,EAAEF,qBAAqB,WAAW,EAAEC,sBAAsB,WAAW,EAAEQ,SAAS,WAAW,IAAI3xB,EAAElQ,KAAK2hC,QAAQ,GAAG,OAAO,IAAIryB,KAAKA,KAAKwyB,IAAI,MAAM5xB,GAAG,GAAG,MAAMA,GAAG,GAAG,IAAI,EAAEA,GAAG,GAAG,GAAGA,GAAG,GAAG,GAAGA,GAAG,EAAE,IAAI,GAAGA,IAAI,GAAG,GAAGsT,EAAEuT,QAAQthB,CAAC,EAAE,CAAC,WAAW,KAAK,GAAG,CAAC,SAASvF,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,sBAAsB,SAASuF,EAAEvF,GAAGonB,EAAEE,KAAKx3B,KAAKkQ,EAAE,CAACA,EAAE,YAAYoqB,SAAS7kB,EAAE6hB,GAAG7hB,EAAEgjB,UAAU6I,SAAS,SAASpxB,GAAGlQ,KAAKuhC,YAAYrxB,GAAG,IAAIsT,EAAExjB,KAAK7B,KAAK2G,MAAM9E,KAAKmhC,KAAKnhC,KAAK0E,MAAM1E,KAAKmhC,KAAKnhC,KAAK0E,MAAMwL,GAAG,OAAOlQ,KAAK0E,OAAOwL,EAAEsT,CAAC,EAAEA,EAAEuT,QAAQthB,CAAC,EAAE,CAAC,WAAW,GAAG,qBAAqB,KAAK,GAAG,CAAC,SAASvF,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,gBAAgB,SAASuF,EAAEvF,GAAGonB,EAAEE,KAAKx3B,KAAKkQ,EAAE,CAACA,EAAE,YAAYoqB,SAAS7kB,EAAE6hB,GAAG7hB,EAAEgjB,UAAUyI,OAAO,SAAShxB,GAAG,OAAOlQ,KAAK7B,KAAK25B,WAAW93B,KAAKmhC,KAAKjxB,EAAE,EAAEuF,EAAEgjB,UAAU2I,qBAAqB,SAASlxB,GAAG,OAAOlQ,KAAK7B,KAAKm1B,YAAYpjB,GAAGlQ,KAAKmhC,IAAI,EAAE1rB,EAAEgjB,UAAU4I,sBAAsB,SAASnxB,GAAG,OAAOA,IAAIlQ,KAAKshC,SAAS,EAAE,EAAE7rB,EAAEgjB,UAAU6I,SAAS,SAASpxB,GAAGlQ,KAAKuhC,YAAYrxB,GAAG,IAAIsT,EAAExjB,KAAK7B,KAAK2G,MAAM9E,KAAKmhC,KAAKnhC,KAAK0E,MAAM1E,KAAKmhC,KAAKnhC,KAAK0E,MAAMwL,GAAG,OAAOlQ,KAAK0E,OAAOwL,EAAEsT,CAAC,EAAEA,EAAEuT,QAAQthB,CAAC,EAAE,CAAC,WAAW,GAAG,eAAe,KAAK,GAAG,CAAC,SAASvF,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,iBAAiB,SAASuF,EAAEvF,GAAGonB,EAAEE,KAAKx3B,KAAKkQ,EAAE,CAACA,EAAE,YAAYoqB,SAAS7kB,EAAE6hB,GAAG7hB,EAAEgjB,UAAU6I,SAAS,SAASpxB,GAAG,GAAGlQ,KAAKuhC,YAAYrxB,GAAG,IAAIA,EAAE,OAAO,IAAIioB,WAAW,GAAG,IAAI3U,EAAExjB,KAAK7B,KAAK4jC,SAAS/hC,KAAKmhC,KAAKnhC,KAAK0E,MAAM1E,KAAKmhC,KAAKnhC,KAAK0E,MAAMwL,GAAG,OAAOlQ,KAAK0E,OAAOwL,EAAEsT,CAAC,EAAEA,EAAEuT,QAAQthB,CAAC,EAAE,CAAC,WAAW,GAAG,gBAAgB,KAAK,GAAG,CAAC,SAASvF,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,YAAYuF,EAAEvF,EAAE,cAAc8mB,EAAE9mB,EAAE,iBAAiByf,EAAEzf,EAAE,kBAAkB+mB,EAAE/mB,EAAE,sBAAsBgnB,EAAEhnB,EAAE,sBAAsBsT,EAAEuT,QAAQ,SAAS7mB,GAAG,IAAIsT,EAAE8T,EAAEO,UAAU3nB,GAAG,OAAOonB,EAAEwJ,aAAatd,GAAG,WAAWA,GAAG/N,EAAEyiB,WAAW,eAAe1U,EAAE,IAAIyT,EAAE/mB,GAAGuF,EAAEyiB,WAAW,IAAIhB,EAAEI,EAAEmD,YAAY,aAAavqB,IAAI,IAAI8mB,EAAEM,EAAEmD,YAAY,QAAQvqB,IAAI,IAAIyf,EAAEzf,EAAE,CAAC,EAAE,CAAC,aAAa,GAAG,WAAW,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,qBAAqB,KAAK,GAAG,CAAC,SAASA,EAAEsT,EAAE4T,GAAG,aAAaA,EAAEmF,kBAAkB,OAAOnF,EAAEqF,oBAAoB,OAAOrF,EAAEuG,sBAAsB,OAAOvG,EAAE4K,gCAAgC,OAAO5K,EAAE6K,4BAA4B,OAAO7K,EAAEqG,gBAAgB,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,SAASvtB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,mBAAmBuF,EAAEvF,EAAE,YAAY,SAAS8mB,EAAE9mB,GAAGonB,EAAEE,KAAKx3B,KAAK,oBAAoBkQ,GAAGlQ,KAAKkiC,SAAShyB,CAAC,CAACuF,EAAE6kB,SAAStD,EAAEM,GAAGN,EAAEyB,UAAU8B,aAAa,SAASrqB,GAAGlQ,KAAKoI,KAAK,CAACjK,KAAKsX,EAAEglB,YAAYz6B,KAAKkiC,SAAShyB,EAAE/R,MAAMk8B,KAAKnqB,EAAEmqB,MAAM,EAAE7W,EAAEuT,QAAQC,CAAC,EAAE,CAAC,WAAW,GAAG,kBAAkB,KAAK,GAAG,CAAC,SAAS9mB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,mBAAmBuF,EAAEvF,EAAE,YAAY,SAAS8mB,IAAIM,EAAEE,KAAKx3B,KAAK,cAAcA,KAAKi5B,eAAe,QAAQ,EAAE,CAAC/oB,EAAE,YAAYoqB,SAAStD,EAAEM,GAAGN,EAAEyB,UAAU8B,aAAa,SAASrqB,GAAGlQ,KAAK84B,WAAWR,MAAM7iB,EAAEvF,EAAE/R,KAAK6B,KAAK84B,WAAWR,OAAO,GAAGt4B,KAAKoI,KAAK8H,EAAE,EAAEsT,EAAEuT,QAAQC,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,KAAK,GAAG,CAAC,SAAS9mB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,YAAYuF,EAAEvF,EAAE,mBAAmB,SAAS8mB,EAAE9mB,GAAGuF,EAAE+hB,KAAKx3B,KAAK,uBAAuBkQ,GAAGlQ,KAAKmiC,SAASjyB,EAAElQ,KAAKi5B,eAAe/oB,EAAE,EAAE,CAAConB,EAAEgD,SAAStD,EAAEvhB,GAAGuhB,EAAEyB,UAAU8B,aAAa,SAASrqB,GAAG,GAAGA,EAAE,CAAC,IAAIsT,EAAExjB,KAAK84B,WAAW94B,KAAKmiC,WAAW,EAAEniC,KAAK84B,WAAW94B,KAAKmiC,UAAU3e,EAAEtT,EAAE/R,KAAKwG,MAAM,CAAC8Q,EAAEgjB,UAAU8B,aAAa/C,KAAKx3B,KAAKkQ,EAAE,EAAEsT,EAAEuT,QAAQC,CAAC,EAAE,CAAC,WAAW,GAAG,kBAAkB,KAAK,GAAG,CAAC,SAAS9mB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,YAAYuF,EAAEvF,EAAE,mBAAmB,SAAS8mB,EAAE9mB,GAAGuF,EAAE+hB,KAAKx3B,KAAK,cAAc,IAAIwjB,EAAExjB,KAAKA,KAAKoiC,aAAY,EAAGpiC,KAAK0E,MAAM,EAAE1E,KAAKk1B,IAAI,EAAEl1B,KAAK7B,KAAK,KAAK6B,KAAKnC,KAAK,GAAGmC,KAAKqiC,gBAAe,EAAGnyB,EAAEzG,KAAK,SAASyG,GAAGsT,EAAE4e,aAAY,EAAG5e,EAAErlB,KAAK+R,EAAEsT,EAAE0R,IAAIhlB,GAAGA,EAAEvL,QAAQ,EAAE6e,EAAE3lB,KAAKy5B,EAAEO,UAAU3nB,GAAGsT,EAAEsa,UAAUta,EAAE8e,gBAAgB,EAAE,SAASpyB,GAAGsT,EAAE7lB,MAAMuS,EAAE,EAAE,CAAConB,EAAEgD,SAAStD,EAAEvhB,GAAGuhB,EAAEyB,UAAUkC,QAAQ,WAAWllB,EAAEgjB,UAAUkC,QAAQnD,KAAKx3B,MAAMA,KAAK7B,KAAK,IAAI,EAAE64B,EAAEyB,UAAUsF,OAAO,WAAW,QAAQtoB,EAAEgjB,UAAUsF,OAAOvG,KAAKx3B,SAASA,KAAKqiC,gBAAgBriC,KAAKoiC,cAAcpiC,KAAKqiC,gBAAe,EAAG/K,EAAEiL,MAAMviC,KAAKsiC,eAAe,GAAGtiC,QAAO,EAAG,EAAEg3B,EAAEyB,UAAU6J,eAAe,WAAWtiC,KAAKqiC,gBAAe,EAAGriC,KAAK89B,UAAU99B,KAAKwiC,aAAaxiC,KAAKyiC,QAAQziC,KAAKwiC,aAAalL,EAAEiL,MAAMviC,KAAKsiC,eAAe,GAAGtiC,MAAMA,KAAKqiC,gBAAe,GAAI,EAAErL,EAAEyB,UAAUgK,MAAM,WAAW,GAAGziC,KAAK89B,UAAU99B,KAAKwiC,WAAW,OAAM,EAAG,IAAItyB,EAAE,KAAKsT,EAAEvE,KAAK4G,IAAI7lB,KAAKk1B,IAAIl1B,KAAK0E,MAAM,OAAO,GAAG1E,KAAK0E,OAAO1E,KAAKk1B,IAAI,OAAOl1B,KAAKmtB,MAAM,OAAOntB,KAAKnC,MAAM,IAAI,SAASqS,EAAElQ,KAAK7B,KAAKgmB,UAAUnkB,KAAK0E,MAAM8e,GAAG,MAAM,IAAI,aAAatT,EAAElQ,KAAK7B,KAAK4jC,SAAS/hC,KAAK0E,MAAM8e,GAAG,MAAM,IAAI,QAAQ,IAAI,aAAatT,EAAElQ,KAAK7B,KAAK2G,MAAM9E,KAAK0E,MAAM8e,GAAG,OAAOxjB,KAAK0E,MAAM8e,EAAExjB,KAAKoI,KAAK,CAACjK,KAAK+R,EAAEmqB,KAAK,CAACiD,QAAQt9B,KAAKk1B,IAAIl1B,KAAK0E,MAAM1E,KAAKk1B,IAAI,IAAI,IAAI,EAAE1R,EAAEuT,QAAQC,CAAC,EAAE,CAAC,WAAW,GAAG,kBAAkB,KAAK,GAAG,CAAC,SAAS9mB,EAAEsT,EAAE4T,GAAG,aAAa,SAASE,EAAEpnB,GAAGlQ,KAAKnB,KAAKqR,GAAG,UAAUlQ,KAAK84B,WAAW,CAAC,EAAE94B,KAAKi+B,eAAe,KAAKj+B,KAAK0iC,gBAAgB,CAAC,EAAE1iC,KAAK89B,UAAS,EAAG99B,KAAKwiC,YAAW,EAAGxiC,KAAK2iC,UAAS,EAAG3iC,KAAK4iC,WAAW,CAACzkC,KAAK,GAAGgvB,IAAI,GAAGxvB,MAAM,IAAIqC,KAAK69B,SAAS,IAAI,CAACvG,EAAEmB,UAAU,CAACrwB,KAAK,SAAS8H,GAAGlQ,KAAKggC,KAAK,OAAO9vB,EAAE,EAAEid,IAAI,WAAW,GAAGntB,KAAKwiC,WAAW,OAAM,EAAGxiC,KAAK06B,QAAQ,IAAI16B,KAAKggC,KAAK,OAAOhgC,KAAK26B,UAAU36B,KAAKwiC,YAAW,CAAE,CAAC,MAAMtyB,GAAGlQ,KAAKggC,KAAK,QAAQ9vB,EAAE,CAAC,OAAM,CAAE,EAAEvS,MAAM,SAASuS,GAAG,OAAOlQ,KAAKwiC,aAAaxiC,KAAK89B,SAAS99B,KAAKi+B,eAAe/tB,GAAGlQ,KAAKwiC,YAAW,EAAGxiC,KAAKggC,KAAK,QAAQ9vB,GAAGlQ,KAAK69B,UAAU79B,KAAK69B,SAASlgC,MAAMuS,GAAGlQ,KAAK26B,YAAW,EAAG,EAAE9B,GAAG,SAAS3oB,EAAEsT,GAAG,OAAOxjB,KAAK4iC,WAAW1yB,GAAG9H,KAAKob,GAAGxjB,IAAI,EAAE26B,QAAQ,WAAW36B,KAAK84B,WAAW94B,KAAKi+B,eAAej+B,KAAK0iC,gBAAgB,KAAK1iC,KAAK4iC,WAAW,EAAE,EAAE5C,KAAK,SAAS9vB,EAAEsT,GAAG,GAAGxjB,KAAK4iC,WAAW1yB,GAAG,IAAI,IAAIknB,EAAE,EAAEA,EAAEp3B,KAAK4iC,WAAW1yB,GAAGvL,OAAOyyB,IAAIp3B,KAAK4iC,WAAW1yB,GAAGknB,GAAGI,KAAKx3B,KAAKwjB,EAAE,EAAEmV,KAAK,SAASzoB,GAAG,OAAOA,EAAE8tB,iBAAiBh+B,KAAK,EAAEg+B,iBAAiB,SAAS9tB,GAAG,GAAGlQ,KAAK2iC,SAAS,MAAM,IAAIx5B,MAAM,eAAenJ,KAAK,4BAA4BA,KAAK84B,WAAW5oB,EAAE4oB,WAAW94B,KAAK6iC,kBAAkB7iC,KAAK69B,SAAS3tB,EAAE,IAAIsT,EAAExjB,KAAK,OAAOkQ,EAAE2oB,GAAG,OAAO,SAAS3oB,GAAGsT,EAAE+W,aAAarqB,EAAE,GAAGA,EAAE2oB,GAAG,MAAM,WAAWrV,EAAE2J,KAAK,GAAGjd,EAAE2oB,GAAG,QAAQ,SAAS3oB,GAAGsT,EAAE7lB,MAAMuS,EAAE,GAAGlQ,IAAI,EAAEuQ,MAAM,WAAW,OAAOvQ,KAAK89B,WAAW99B,KAAKwiC,aAAaxiC,KAAK89B,UAAS,EAAG99B,KAAK69B,UAAU79B,KAAK69B,SAASttB,SAAQ,EAAG,EAAEwtB,OAAO,WAAW,IAAI/9B,KAAK89B,UAAU99B,KAAKwiC,WAAW,OAAM,EAAG,IAAItyB,EAAElQ,KAAK89B,UAAS,EAAG,OAAO99B,KAAKi+B,iBAAiBj+B,KAAKrC,MAAMqC,KAAKi+B,gBAAgB/tB,GAAE,GAAIlQ,KAAK69B,UAAU79B,KAAK69B,SAASE,UAAU7tB,CAAC,EAAEwqB,MAAM,WAAW,EAAEH,aAAa,SAASrqB,GAAGlQ,KAAKoI,KAAK8H,EAAE,EAAE+oB,eAAe,SAAS/oB,EAAEsT,GAAG,OAAOxjB,KAAK0iC,gBAAgBxyB,GAAGsT,EAAExjB,KAAK6iC,kBAAkB7iC,IAAI,EAAE6iC,gBAAgB,WAAW,IAAI,IAAI3yB,KAAKlQ,KAAK0iC,gBAAgBxzB,OAAOupB,UAAUqK,eAAetL,KAAKx3B,KAAK0iC,gBAAgBxyB,KAAKlQ,KAAK84B,WAAW5oB,GAAGlQ,KAAK0iC,gBAAgBxyB,GAAG,EAAE8gB,KAAK,WAAW,GAAGhxB,KAAK2iC,SAAS,MAAM,IAAIx5B,MAAM,eAAenJ,KAAK,4BAA4BA,KAAK2iC,UAAS,EAAG3iC,KAAK69B,UAAU79B,KAAK69B,SAAS7M,MAAM,EAAEyP,SAAS,WAAW,IAAIvwB,EAAE,UAAUlQ,KAAKnB,KAAK,OAAOmB,KAAK69B,SAAS79B,KAAK69B,SAAS,OAAO3tB,EAAEA,CAAC,GAAGsT,EAAEuT,QAAQO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,SAASpnB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIF,EAAEhnB,EAAE,YAAYuF,EAAEvF,EAAE,mBAAmB8mB,EAAE9mB,EAAE,mBAAmBinB,EAAEjnB,EAAE,aAAaonB,EAAEpnB,EAAE,cAAcyf,EAAEzf,EAAE,eAAe+mB,EAAE,KAAK,GAAGK,EAAEyL,WAAW,IAAI9L,EAAE/mB,EAAE,sCAAsC,CAAC,MAAMA,GAAG,CAAC,SAASmnB,EAAEnnB,EAAE+mB,GAAG,OAAO,IAAItH,EAAE1nB,QAAQ,SAASub,EAAE4T,GAAG,IAAIE,EAAE,GAAG7hB,EAAEvF,EAAE8yB,cAAchM,EAAE9mB,EAAE+yB,YAAYtT,EAAEzf,EAAEgzB,UAAUhzB,EAAE2oB,GAAG,OAAO,SAAS3oB,EAAEsT,GAAG8T,EAAElvB,KAAK8H,GAAG+mB,GAAGA,EAAEzT,EAAE,GAAGqV,GAAG,QAAQ,SAAS3oB,GAAGonB,EAAE,GAAGF,EAAElnB,EAAE,GAAG2oB,GAAG,MAAM,WAAW,IAAI,IAAI3oB,EAAE,SAASA,EAAEsT,EAAE4T,GAAG,OAAOlnB,GAAG,IAAI,OAAO,OAAOgnB,EAAEiM,QAAQjM,EAAEuD,YAAY,cAAcjX,GAAG4T,GAAG,IAAI,SAAS,OAAOD,EAAES,OAAOpU,GAAG,QAAQ,OAAO0T,EAAEuD,YAAYvqB,EAAEsT,GAAG,CAA1J,CAA4JwT,EAAE,SAAS9mB,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE,EAAE7hB,EAAE,KAAKuhB,EAAE,EAAE,IAAII,EAAE,EAAEA,EAAE5T,EAAE7e,OAAOyyB,IAAIJ,GAAGxT,EAAE4T,GAAGzyB,OAAO,OAAOuL,GAAG,IAAI,SAAS,OAAOsT,EAAEze,KAAK,IAAI,IAAI,QAAQ,OAAOqC,MAAMqxB,UAAUpL,OAAO+V,MAAM,GAAG5f,GAAG,IAAI,aAAa,IAAI/N,EAAE,IAAI0iB,WAAWnB,GAAGI,EAAE,EAAEA,EAAE5T,EAAE7e,OAAOyyB,IAAI3hB,EAAExR,IAAIuf,EAAE4T,GAAGE,GAAGA,GAAG9T,EAAE4T,GAAGzyB,OAAO,OAAO8Q,EAAE,IAAI,aAAa,OAAOyqB,OAAO7S,OAAO7J,GAAG,QAAQ,MAAM,IAAIra,MAAM,8BAA8B+G,EAAE,KAAK,CAAhX,CAAkXuF,EAAE6hB,GAAG3H,GAAGnM,EAAEtT,EAAE,CAAC,MAAMA,GAAGknB,EAAElnB,EAAE,CAAConB,EAAE,EAAE,GAAGyG,QAAQ,EAAE,CAAC,SAASjL,EAAE5iB,EAAEsT,EAAE4T,GAAG,IAAIE,EAAE9T,EAAE,OAAOA,GAAG,IAAI,OAAO,IAAI,cAAc8T,EAAE,aAAa,MAAM,IAAI,SAASA,EAAE,SAAS,IAAIt3B,KAAKgjC,cAAc1L,EAAEt3B,KAAKijC,YAAYzf,EAAExjB,KAAKkjC,UAAU9L,EAAEF,EAAE4J,aAAaxJ,GAAGt3B,KAAKqjC,QAAQnzB,EAAEyoB,KAAK,IAAIljB,EAAE6hB,IAAIpnB,EAAE8gB,MAAM,CAAC,MAAM9gB,GAAGlQ,KAAKqjC,QAAQ,IAAIrM,EAAE,SAASh3B,KAAKqjC,QAAQ1lC,MAAMuS,EAAE,CAAC,CAAC4iB,EAAE2F,UAAU,CAACsE,WAAW,SAAS7sB,GAAG,OAAOmnB,EAAEr3B,KAAKkQ,EAAE,EAAE2oB,GAAG,SAAS3oB,EAAEsT,GAAG,IAAI4T,EAAEp3B,KAAK,MAAM,SAASkQ,EAAElQ,KAAKqjC,QAAQxK,GAAG3oB,EAAE,SAASA,GAAGsT,EAAEgU,KAAKJ,EAAElnB,EAAE/R,KAAK+R,EAAEmqB,KAAK,GAAGr6B,KAAKqjC,QAAQxK,GAAG3oB,EAAE,WAAWgnB,EAAEqL,MAAM/e,EAAE6a,UAAUjH,EAAE,GAAGp3B,IAAI,EAAE+9B,OAAO,WAAW,OAAO7G,EAAEqL,MAAMviC,KAAKqjC,QAAQtF,OAAO,GAAG/9B,KAAKqjC,SAASrjC,IAAI,EAAEuQ,MAAM,WAAW,OAAOvQ,KAAKqjC,QAAQ9yB,QAAQvQ,IAAI,EAAEghC,eAAe,SAAS9wB,GAAG,GAAGgnB,EAAE4J,aAAa,cAAc,eAAe9gC,KAAKijC,YAAY,MAAM,IAAI95B,MAAMnJ,KAAKijC,YAAY,oCAAoC,OAAO,IAAIhM,EAAEj3B,KAAK,CAACsjC,WAAW,eAAetjC,KAAKijC,aAAa/yB,EAAE,GAAGsT,EAAEuT,QAAQjE,CAAC,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,sCAAsC,GAAG,aAAa,GAAG,WAAW,GAAG,kBAAkB,GAAG,kBAAkB,KAAK,GAAG,CAAC,SAAS5iB,EAAEsT,EAAE4T,GAAG,aAAa,GAAGA,EAAEmC,QAAO,EAAGnC,EAAEmM,OAAM,EAAGnM,EAAEoM,QAAO,EAAGpM,EAAEqM,YAAY,oBAAoBC,aAAa,oBAAoBvL,WAAWf,EAAEuM,WAAW,oBAAoBzD,OAAO9I,EAAEc,WAAW,oBAAoBC,WAAW,oBAAoBuL,YAAYtM,EAAEhE,MAAK,MAAO,CAAC,IAAIkE,EAAE,IAAIoM,YAAY,GAAG,IAAItM,EAAEhE,KAAK,IAAI,IAAIwQ,KAAK,CAACtM,GAAG,CAACz5B,KAAK,oBAAoBC,IAAI,CAAC,MAAMoS,GAAG,IAAI,IAAIuF,EAAE,IAAIouB,KAAKC,aAAaD,KAAKE,mBAAmBF,KAAKG,gBAAgBH,KAAKI,eAAexuB,EAAErP,OAAOkxB,GAAGF,EAAEhE,KAAK,IAAI3d,EAAEyuB,QAAQ,mBAAmBpmC,IAAI,CAAC,MAAMoS,GAAGknB,EAAEhE,MAAK,CAAE,CAAC,CAAC,CAAC,IAAIgE,EAAE2L,aAAa7yB,EAAE,mBAAmB4vB,QAAQ,CAAC,MAAM5vB,GAAGknB,EAAE2L,YAAW,CAAE,CAAC,EAAE,CAAC,kBAAkB,KAAK,GAAG,CAAC,SAAS7yB,EAAEsT,EAAEwT,GAAG,aAAa,IAAI,IAAIC,EAAE/mB,EAAE,WAAWgnB,EAAEhnB,EAAE,aAAaknB,EAAElnB,EAAE,iBAAiBonB,EAAEpnB,EAAE,0BAA0BinB,EAAE,IAAI/vB,MAAM,KAAKqO,EAAE,EAAEA,EAAE,IAAIA,IAAI0hB,EAAE1hB,GAAG,KAAKA,EAAE,EAAE,KAAKA,EAAE,EAAE,KAAKA,EAAE,EAAE,KAAKA,EAAE,EAAE,KAAKA,EAAE,EAAE,EAAkB,SAASka,IAAI2H,EAAEE,KAAKx3B,KAAK,gBAAgBA,KAAKmkC,SAAS,IAAI,CAAC,SAAS9M,IAAIC,EAAEE,KAAKx3B,KAAK,eAAe,CAApHm3B,EAAE,KAAKA,EAAE,KAAK,EAAuGH,EAAEmE,WAAW,SAASjrB,GAAG,OAAOgnB,EAAEyM,WAAWvM,EAAE+I,cAAcjwB,EAAE,SAAS,SAASA,GAAG,IAAIsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEzf,EAAEvL,OAAOsyB,EAAE,EAAE,IAAIxhB,EAAE,EAAEA,EAAEka,EAAEla,IAAI,QAAQ,OAAO2hB,EAAElnB,EAAE4nB,WAAWriB,MAAMA,EAAE,EAAEka,GAAG,QAAQ,OAAO2H,EAAEpnB,EAAE4nB,WAAWriB,EAAE,OAAO2hB,EAAE,OAAOA,EAAE,OAAO,KAAKE,EAAE,OAAO7hB,KAAKwhB,GAAGG,EAAE,IAAI,EAAEA,EAAE,KAAK,EAAEA,EAAE,MAAM,EAAE,EAAE,IAAI5T,EAAE0T,EAAEgB,WAAW,IAAIC,WAAWlB,GAAG,IAAI7vB,MAAM6vB,GAAGxhB,EAAEuhB,EAAE,EAAEA,EAAEC,EAAExhB,IAAI,QAAQ,OAAO2hB,EAAElnB,EAAE4nB,WAAWriB,MAAMA,EAAE,EAAEka,GAAG,QAAQ,OAAO2H,EAAEpnB,EAAE4nB,WAAWriB,EAAE,OAAO2hB,EAAE,OAAOA,EAAE,OAAO,KAAKE,EAAE,OAAO7hB,KAAK2hB,EAAE,IAAI5T,EAAEwT,KAAKI,GAAGA,EAAE,KAAK5T,EAAEwT,KAAK,IAAII,IAAI,GAAGA,EAAE,MAAM5T,EAAEwT,KAAK,IAAII,IAAI,IAAI5T,EAAEwT,KAAK,IAAII,IAAI,GAAG5T,EAAEwT,KAAK,IAAII,IAAI,GAAG,IAAI5T,EAAEwT,KAAK,IAAII,IAAI,EAAE,IAAI5T,EAAEwT,KAAK,IAAI,GAAGI,GAAG,OAAO5T,CAAC,CAAjiB,CAAmiBtT,EAAE,EAAE8mB,EAAEmI,WAAW,SAASjvB,GAAG,OAAOgnB,EAAEyM,WAAW1M,EAAEwD,YAAY,aAAavqB,GAAGuwB,SAAS,SAAS,SAASvwB,GAAG,IAAIsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAE9mB,EAAEvL,OAAOgrB,EAAE,IAAIvoB,MAAM,EAAE4vB,GAAG,IAAIxT,EAAE4T,EAAE,EAAE5T,EAAEwT,GAAG,IAAIM,EAAEpnB,EAAEsT,MAAM,IAAImM,EAAEyH,KAAKE,OAAO,GAAG,GAAG7hB,EAAE0hB,EAAEG,IAAI3H,EAAEyH,KAAK,MAAM5T,GAAG/N,EAAE,MAAM,CAAC,IAAI6hB,GAAG,IAAI7hB,EAAE,GAAG,IAAIA,EAAE,GAAG,EAAE,EAAEA,GAAG+N,EAAEwT,GAAGM,EAAEA,GAAG,EAAE,GAAGpnB,EAAEsT,KAAK/N,IAAI,EAAEA,EAAEka,EAAEyH,KAAK,MAAME,EAAE,MAAM3H,EAAEyH,KAAKE,GAAGA,GAAG,MAAM3H,EAAEyH,KAAK,MAAME,GAAG,GAAG,KAAK3H,EAAEyH,KAAK,MAAM,KAAKE,EAAE,CAAC,OAAO3H,EAAEhrB,SAASyyB,IAAIzH,EAAEoS,SAASpS,EAAEA,EAAEoS,SAAS,EAAE3K,GAAGzH,EAAEhrB,OAAOyyB,GAAGH,EAAEmN,kBAAkBzU,EAAE,CAAlX,CAAoXzf,EAAE+mB,EAAEwD,YAAYvD,EAAEgB,WAAW,aAAa,QAAQhoB,GAAG,EAAE+mB,EAAEqD,SAAS3K,EAAE2H,GAAG3H,EAAE8I,UAAU8B,aAAa,SAASrqB,GAAG,IAAIsT,EAAEyT,EAAEwD,YAAYvD,EAAEgB,WAAW,aAAa,QAAQhoB,EAAE/R,MAAM,GAAG6B,KAAKmkC,UAAUnkC,KAAKmkC,SAASx/B,OAAO,CAAC,GAAGuyB,EAAEgB,WAAW,CAAC,IAAId,EAAE5T,GAAGA,EAAE,IAAI2U,WAAWf,EAAEzyB,OAAO3E,KAAKmkC,SAASx/B,SAASV,IAAIjE,KAAKmkC,SAAS,GAAG3gB,EAAEvf,IAAImzB,EAAEp3B,KAAKmkC,SAASx/B,OAAO,MAAM6e,EAAExjB,KAAKmkC,SAAS9W,OAAO7J,GAAGxjB,KAAKmkC,SAAS,IAAI,CAAC,IAAI7M,EAAE,SAASpnB,EAAEsT,GAAG,IAAI4T,EAAE,KAAK5T,EAAEA,GAAGtT,EAAEvL,QAAQuL,EAAEvL,SAAS6e,EAAEtT,EAAEvL,QAAQyyB,EAAE5T,EAAE,EAAE,GAAG4T,GAAG,MAAM,IAAIlnB,EAAEknB,KAAKA,IAAI,OAAOA,EAAE,GAAI,IAAIA,EAAN5T,EAAU4T,EAAED,EAAEjnB,EAAEknB,IAAI5T,EAAE4T,EAAE5T,CAAC,CAApI,CAAsIA,GAAG/N,EAAE+N,EAAE8T,IAAI9T,EAAE7e,SAASuyB,EAAEgB,YAAYziB,EAAE+N,EAAEue,SAAS,EAAEzK,GAAGt3B,KAAKmkC,SAAS3gB,EAAEue,SAASzK,EAAE9T,EAAE7e,UAAU8Q,EAAE+N,EAAE1e,MAAM,EAAEwyB,GAAGt3B,KAAKmkC,SAAS3gB,EAAE1e,MAAMwyB,EAAE9T,EAAE7e,UAAU3E,KAAKoI,KAAK,CAACjK,KAAK64B,EAAEmI,WAAW1pB,GAAG4kB,KAAKnqB,EAAEmqB,MAAM,EAAE1K,EAAE8I,UAAUiC,MAAM,WAAW16B,KAAKmkC,UAAUnkC,KAAKmkC,SAASx/B,SAAS3E,KAAKoI,KAAK,CAACjK,KAAK64B,EAAEmI,WAAWn/B,KAAKmkC,UAAU9J,KAAK,CAAC,IAAIr6B,KAAKmkC,SAAS,KAAK,EAAEnN,EAAEqN,iBAAiB1U,EAAEsH,EAAEqD,SAASjD,EAAEC,GAAGD,EAAEoB,UAAU8B,aAAa,SAASrqB,GAAGlQ,KAAKoI,KAAK,CAACjK,KAAK64B,EAAEmE,WAAWjrB,EAAE/R,MAAMk8B,KAAKnqB,EAAEmqB,MAAM,EAAErD,EAAEsN,iBAAiBjN,CAAC,EAAE,CAAC,gBAAgB,GAAG,yBAAyB,GAAG,YAAY,GAAG,UAAU,KAAK,GAAG,CAAC,SAASnnB,EAAEsT,EAAEmM,GAAG,aAAa,IAAIsH,EAAE/mB,EAAE,aAAagnB,EAAEhnB,EAAE,YAAYknB,EAAElnB,EAAE,iBAAiBinB,EAAEjnB,EAAE,cAAc,SAASonB,EAAEpnB,GAAG,OAAOA,CAAC,CAAC,SAASmnB,EAAEnnB,EAAEsT,GAAG,IAAI,IAAI4T,EAAE,EAAEA,EAAElnB,EAAEvL,SAASyyB,EAAE5T,EAAE4T,GAAG,IAAIlnB,EAAE4nB,WAAWV,GAAG,OAAO5T,CAAC,CAACtT,EAAE,gBAAgByf,EAAEwT,QAAQ,SAAS3f,EAAE4T,GAAGzH,EAAEmR,aAAa,QAAQ,IAAI,OAAO,IAAI8C,KAAK,CAACpgB,GAAG,CAAC3lB,KAAKu5B,GAAG,CAAC,MAAMlnB,GAAG,IAAI,IAAIonB,EAAE,IAAIuM,KAAKC,aAAaD,KAAKE,mBAAmBF,KAAKG,gBAAgBH,KAAKI,eAAe,OAAO3M,EAAElxB,OAAOod,GAAG8T,EAAE4M,QAAQ9M,EAAE,CAAC,MAAMlnB,GAAG,MAAM,IAAI/G,MAAM,kCAAkC,CAAC,CAAC,EAAE,IAAIsM,EAAE,CAAC8uB,iBAAiB,SAASr0B,EAAEsT,EAAE4T,GAAG,IAAIE,EAAE,GAAG7hB,EAAE,EAAEuhB,EAAE9mB,EAAEvL,OAAO,GAAGqyB,GAAGI,EAAE,OAAO/3B,OAAO47B,aAAamI,MAAM,KAAKlzB,GAAG,KAAKuF,EAAEuhB,GAAG,UAAUxT,GAAG,eAAeA,EAAE8T,EAAElvB,KAAK/I,OAAO47B,aAAamI,MAAM,KAAKlzB,EAAEpL,MAAM2Q,EAAEwJ,KAAK4G,IAAIpQ,EAAE2hB,EAAEJ,MAAMM,EAAElvB,KAAK/I,OAAO47B,aAAamI,MAAM,KAAKlzB,EAAE6xB,SAAStsB,EAAEwJ,KAAK4G,IAAIpQ,EAAE2hB,EAAEJ,MAAMvhB,GAAG2hB,EAAE,OAAOE,EAAEvyB,KAAK,GAAG,EAAEy/B,gBAAgB,SAASt0B,GAAG,IAAI,IAAIsT,EAAE,GAAG4T,EAAE,EAAEA,EAAElnB,EAAEvL,OAAOyyB,IAAI5T,GAAGnkB,OAAO47B,aAAa/qB,EAAEknB,IAAI,OAAO5T,CAAC,EAAEihB,eAAe,CAACvM,WAAW,WAAW,IAAI,OAAOjB,EAAEiB,YAAY,IAAI74B,OAAO47B,aAAamI,MAAM,KAAK,IAAIjL,WAAW,IAAIxzB,MAAM,CAAC,MAAMuL,GAAG,OAAM,CAAE,CAAC,CAAnH,GAAuHyzB,WAAW,WAAW,IAAI,OAAO1M,EAAE0M,YAAY,IAAItkC,OAAO47B,aAAamI,MAAM,KAAKhM,EAAEgJ,YAAY,IAAIz7B,MAAM,CAAC,MAAMuL,GAAG,OAAM,CAAE,CAAC,CAAlH,KAAwH,SAAS8mB,EAAE9mB,GAAG,IAAIsT,EAAE,MAAM4T,EAAEzH,EAAEkI,UAAU3nB,GAAGonB,GAAE,EAAG,GAAG,eAAeF,EAAEE,EAAE7hB,EAAEgvB,eAAevM,WAAW,eAAed,IAAIE,EAAE7hB,EAAEgvB,eAAed,YAAYrM,EAAE,KAAK,EAAE9T,GAAG,IAAI,OAAO/N,EAAE8uB,iBAAiBr0B,EAAEknB,EAAE5T,EAAE,CAAC,MAAMtT,GAAGsT,EAAEvE,KAAKoV,MAAM7Q,EAAE,EAAE,CAAC,OAAO/N,EAAE+uB,gBAAgBt0B,EAAE,CAAC,SAAS4iB,EAAE5iB,EAAEsT,GAAG,IAAI,IAAI4T,EAAE,EAAEA,EAAElnB,EAAEvL,OAAOyyB,IAAI5T,EAAE4T,GAAGlnB,EAAEknB,GAAG,OAAO5T,CAAC,CAACmM,EAAEyU,kBAAkBpN,EAAE,IAAIU,EAAE,CAAC,EAAEA,EAAE8L,OAAO,CAACA,OAAOlM,EAAEiM,MAAM,SAASrzB,GAAG,OAAOmnB,EAAEnnB,EAAE,IAAI9I,MAAM8I,EAAEvL,QAAQ,EAAE8+B,YAAY,SAASvzB,GAAG,OAAOwnB,EAAE8L,OAAOtL,WAAWhoB,GAAGw0B,MAAM,EAAExM,WAAW,SAAShoB,GAAG,OAAOmnB,EAAEnnB,EAAE,IAAIioB,WAAWjoB,EAAEvL,QAAQ,EAAEg/B,WAAW,SAASzzB,GAAG,OAAOmnB,EAAEnnB,EAAEknB,EAAEgJ,YAAYlwB,EAAEvL,QAAQ,GAAG+yB,EAAE6L,MAAM,CAACC,OAAOxM,EAAEuM,MAAMjM,EAAEmM,YAAY,SAASvzB,GAAG,OAAO,IAAIioB,WAAWjoB,GAAGw0B,MAAM,EAAExM,WAAW,SAAShoB,GAAG,OAAO,IAAIioB,WAAWjoB,EAAE,EAAEyzB,WAAW,SAASzzB,GAAG,OAAOknB,EAAE+I,cAAcjwB,EAAE,GAAGwnB,EAAE+L,YAAY,CAACD,OAAO,SAAStzB,GAAG,OAAO8mB,EAAE,IAAImB,WAAWjoB,GAAG,EAAEqzB,MAAM,SAASrzB,GAAG,OAAO4iB,EAAE,IAAIqF,WAAWjoB,GAAG,IAAI9I,MAAM8I,EAAEy0B,YAAY,EAAElB,YAAYnM,EAAEY,WAAW,SAAShoB,GAAG,OAAO,IAAIioB,WAAWjoB,EAAE,EAAEyzB,WAAW,SAASzzB,GAAG,OAAOknB,EAAE+I,cAAc,IAAIhI,WAAWjoB,GAAG,GAAGwnB,EAAEQ,WAAW,CAACsL,OAAOxM,EAAEuM,MAAM,SAASrzB,GAAG,OAAO4iB,EAAE5iB,EAAE,IAAI9I,MAAM8I,EAAEvL,QAAQ,EAAE8+B,YAAY,SAASvzB,GAAG,OAAOA,EAAEw0B,MAAM,EAAExM,WAAWZ,EAAEqM,WAAW,SAASzzB,GAAG,OAAOknB,EAAE+I,cAAcjwB,EAAE,GAAGwnB,EAAEiM,WAAW,CAACH,OAAOxM,EAAEuM,MAAM,SAASrzB,GAAG,OAAO4iB,EAAE5iB,EAAE,IAAI9I,MAAM8I,EAAEvL,QAAQ,EAAE8+B,YAAY,SAASvzB,GAAG,OAAOwnB,EAAEiM,WAAWzL,WAAWhoB,GAAGw0B,MAAM,EAAExM,WAAW,SAAShoB,GAAG,OAAO4iB,EAAE5iB,EAAE,IAAIioB,WAAWjoB,EAAEvL,QAAQ,EAAEg/B,WAAWrM,GAAG3H,EAAE8K,YAAY,SAASvqB,EAAEsT,GAAG,GAAGA,EAAEA,GAAG,IAAItT,EAAE,OAAOsT,EAAEmM,EAAEmR,aAAa5wB,GAAG,IAAIknB,EAAEzH,EAAEkI,UAAUrU,GAAG,OAAOkU,EAAEN,GAAGlnB,GAAGsT,EAAE,EAAEmM,EAAEoD,QAAQ,SAAS7iB,GAAG,IAAI,IAAIsT,EAAEtT,EAAEjL,MAAM,KAAKmyB,EAAE,GAAGE,EAAE,EAAEA,EAAE9T,EAAE7e,OAAO2yB,IAAI,CAAC,IAAI7hB,EAAE+N,EAAE8T,GAAG,MAAM7hB,GAAG,KAAKA,GAAG,IAAI6hB,GAAGA,IAAI9T,EAAE7e,OAAO,IAAI,OAAO8Q,EAAE2hB,EAAEnb,MAAMmb,EAAEhvB,KAAKqN,GAAG,CAAC,OAAO2hB,EAAEryB,KAAK,IAAI,EAAE4qB,EAAEkI,UAAU,SAAS3nB,GAAG,MAAM,iBAAiBA,EAAE,SAAS,mBAAmBhB,OAAOupB,UAAUgI,SAASjJ,KAAKtnB,GAAG,QAAQ+mB,EAAE0M,YAAYvM,EAAEmJ,SAASrwB,GAAG,aAAa+mB,EAAEiB,YAAYhoB,aAAaioB,WAAW,aAAalB,EAAEwM,aAAavzB,aAAawzB,YAAY,mBAAc,CAAM,EAAE/T,EAAEmR,aAAa,SAAS5wB,GAAG,IAAI+mB,EAAE/mB,EAAEvH,eAAe,MAAM,IAAIQ,MAAM+G,EAAE,qCAAqC,EAAEyf,EAAEiV,iBAAiB,MAAMjV,EAAEkV,kBAAkB,EAAElV,EAAEmV,OAAO,SAAS50B,GAAG,IAAIsT,EAAE4T,EAAEE,EAAE,GAAG,IAAIF,EAAE,EAAEA,GAAGlnB,GAAG,IAAIvL,OAAOyyB,IAAIE,GAAG,QAAQ9T,EAAEtT,EAAE4nB,WAAWV,IAAI,GAAG,IAAI,IAAI5T,EAAEid,SAAS,IAAID,cAAc,OAAOlJ,CAAC,EAAE3H,EAAE4S,MAAM,SAASryB,EAAEsT,EAAE4T,GAAG2N,aAAa,WAAW70B,EAAEkzB,MAAMhM,GAAG,KAAK5T,GAAG,GAAG,EAAE,EAAEmM,EAAE2K,SAAS,SAASpqB,EAAEsT,GAAG,SAAS4T,IAAI,CAACA,EAAEqB,UAAUjV,EAAEiV,UAAUvoB,EAAEuoB,UAAU,IAAIrB,CAAC,EAAEzH,EAAEoP,OAAO,WAAW,IAAI7uB,EAAEsT,EAAE4T,EAAE,CAAC,EAAE,IAAIlnB,EAAE,EAAEA,EAAEmuB,UAAU15B,OAAOuL,IAAI,IAAIsT,KAAK6a,UAAUnuB,GAAGhB,OAAOupB,UAAUqK,eAAetL,KAAK6G,UAAUnuB,GAAGsT,SAAI,IAAS4T,EAAE5T,KAAK4T,EAAE5T,GAAG6a,UAAUnuB,GAAGsT,IAAI,OAAO4T,CAAC,EAAEzH,EAAE2P,eAAe,SAASlI,EAAElnB,EAAEonB,EAAE7hB,EAAEuhB,GAAG,OAAOG,EAAElvB,QAAQ8qB,QAAQ7iB,GAAGzG,KAAK,SAAS6tB,GAAG,OAAOL,EAAE7D,OAAOkE,aAAasM,OAAO,IAAI,CAAC,gBAAgB,iBAAiB/6B,QAAQqG,OAAOupB,UAAUgI,SAASjJ,KAAKF,MAAM,oBAAoB0N,WAAW,IAAI7N,EAAElvB,QAAQ,SAASub,EAAE4T,GAAG,IAAIlnB,EAAE,IAAI80B,WAAW90B,EAAE+0B,OAAO,SAAS/0B,GAAGsT,EAAEtT,EAAEE,OAAOU,OAAO,EAAEZ,EAAEg1B,QAAQ,SAASh1B,GAAGknB,EAAElnB,EAAEE,OAAOzS,MAAM,EAAEuS,EAAEi1B,kBAAkB7N,EAAE,GAAGA,CAAC,GAAG7tB,KAAK,SAASyG,GAAG,IAAIsT,EAAEmM,EAAEkI,UAAU3nB,GAAG,OAAOsT,GAAG,gBAAgBA,EAAEtT,EAAEyf,EAAE8K,YAAY,aAAavqB,GAAG,WAAWsT,IAAIwT,EAAE9mB,EAAEgnB,EAAEc,OAAO9nB,GAAGonB,IAAG,IAAK7hB,IAAIvF,EAAE,SAASA,GAAG,OAAOmnB,EAAEnnB,EAAE+mB,EAAEiB,WAAW,IAAIC,WAAWjoB,EAAEvL,QAAQ,IAAIyC,MAAM8I,EAAEvL,QAAQ,CAAjF,CAAmFuL,KAAKA,GAAGinB,EAAElvB,QAAQqoB,OAAO,IAAInnB,MAAM,2BAA2BiuB,EAAE,8EAA8E,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,GAAG,YAAY,GAAGgO,aAAa,KAAK,GAAG,CAAC,SAASl1B,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,sBAAsBuF,EAAEvF,EAAE,WAAW8mB,EAAE9mB,EAAE,eAAeyf,EAAEzf,EAAE,cAAc+mB,EAAE/mB,EAAE,aAAa,SAASgnB,EAAEhnB,GAAGlQ,KAAKsiB,MAAM,GAAGtiB,KAAKqlC,YAAYn1B,CAAC,CAACgnB,EAAEuB,UAAU,CAAC6M,eAAe,SAASp1B,GAAG,IAAIlQ,KAAKulC,OAAOlE,sBAAsBnxB,GAAG,CAAClQ,KAAKulC,OAAO7gC,OAAO,EAAE,IAAI8e,EAAExjB,KAAKulC,OAAO3D,WAAW,GAAG,MAAM,IAAIz4B,MAAM,+CAA+CsM,EAAEqvB,OAAOthB,GAAG,cAAc/N,EAAEqvB,OAAO50B,GAAG,IAAI,CAAC,EAAEs1B,YAAY,SAASt1B,EAAEsT,GAAG,IAAI4T,EAAEp3B,KAAKulC,OAAO7gC,MAAM1E,KAAKulC,OAAO9D,SAASvxB,GAAG,IAAIonB,EAAEt3B,KAAKulC,OAAO3D,WAAW,KAAKpe,EAAE,OAAOxjB,KAAKulC,OAAO9D,SAASrK,GAAGE,CAAC,EAAEmO,sBAAsB,WAAWzlC,KAAK0lC,WAAW1lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK2lC,wBAAwB3lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK4lC,4BAA4B5lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK6lC,kBAAkB7lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK8lC,eAAe9lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK+lC,iBAAiB/lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAKgmC,iBAAiBhmC,KAAKulC,OAAO5D,QAAQ,GAAG,IAAIzxB,EAAElQ,KAAKulC,OAAOjE,SAASthC,KAAKgmC,kBAAkBxiB,EAAEyT,EAAEiB,WAAW,aAAa,QAAQd,EAAE3hB,EAAEglB,YAAYjX,EAAEtT,GAAGlQ,KAAK28B,WAAW38B,KAAKqlC,YAAYnG,eAAe9H,EAAE,EAAE6O,2BAA2B,WAAWjmC,KAAKkmC,sBAAsBlmC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAKulC,OAAO7D,KAAK,GAAG1hC,KAAK0lC,WAAW1lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK2lC,wBAAwB3lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK4lC,4BAA4B5lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK6lC,kBAAkB7lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK8lC,eAAe9lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAK+lC,iBAAiB/lC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAKmmC,oBAAoB,CAAC,EAAE,IAAI,IAAIj2B,EAAEsT,EAAE4T,EAAEE,EAAEt3B,KAAKkmC,sBAAsB,GAAG,EAAE5O,GAAGpnB,EAAElQ,KAAKulC,OAAO5D,QAAQ,GAAGne,EAAExjB,KAAKulC,OAAO5D,QAAQ,GAAGvK,EAAEp3B,KAAKulC,OAAOjE,SAAS9d,GAAGxjB,KAAKmmC,oBAAoBj2B,GAAG,CAACk2B,GAAGl2B,EAAEvL,OAAO6e,EAAEhkB,MAAM43B,EAAE,EAAEiP,kCAAkC,WAAW,GAAGrmC,KAAKsmC,6BAA6BtmC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAKumC,mCAAmCvmC,KAAKulC,OAAO5D,QAAQ,GAAG3hC,KAAKwmC,WAAWxmC,KAAKulC,OAAO5D,QAAQ,GAAG,EAAE3hC,KAAKwmC,WAAW,MAAM,IAAIr9B,MAAM,sCAAsC,EAAEs9B,eAAe,WAAW,IAAIv2B,EAAEsT,EAAE,IAAItT,EAAE,EAAEA,EAAElQ,KAAKsiB,MAAM3d,OAAOuL,IAAIsT,EAAExjB,KAAKsiB,MAAMpS,GAAGlQ,KAAKulC,OAAO9D,SAASje,EAAEkjB,mBAAmB1mC,KAAKslC,eAAetO,EAAEuF,mBAAmB/Y,EAAEmjB,cAAc3mC,KAAKulC,QAAQ/hB,EAAEojB,aAAapjB,EAAEqjB,mBAAmB,EAAEC,eAAe,WAAW,IAAI52B,EAAE,IAAIlQ,KAAKulC,OAAO9D,SAASzhC,KAAK+lC,kBAAkB/lC,KAAKulC,OAAOlE,sBAAsBrK,EAAEyF,uBAAuBvsB,EAAE,IAAIyf,EAAE,CAACoX,MAAM/mC,KAAK+mC,OAAO/mC,KAAKqlC,cAAc2B,gBAAgBhnC,KAAKulC,QAAQvlC,KAAKsiB,MAAMla,KAAK8H,GAAG,GAAGlQ,KAAK6lC,oBAAoB7lC,KAAKsiB,MAAM3d,QAAQ,IAAI3E,KAAK6lC,mBAAmB,IAAI7lC,KAAKsiB,MAAM3d,OAAO,MAAM,IAAIwE,MAAM,kCAAkCnJ,KAAK6lC,kBAAkB,gCAAgC7lC,KAAKsiB,MAAM3d,OAAO,EAAEsiC,iBAAiB,WAAW,IAAI/2B,EAAElQ,KAAKulC,OAAOnE,qBAAqBpK,EAAE2G,uBAAuB,GAAGztB,EAAE,EAAE,MAAMlQ,KAAKwlC,YAAY,EAAExO,EAAEuF,mBAAwK,IAAIpzB,MAAM,sDAA/J,IAAIA,MAAM,2IAA2MnJ,KAAKulC,OAAO9D,SAASvxB,GAAG,IAAIsT,EAAEtT,EAAE,GAAGlQ,KAAKslC,eAAetO,EAAE2G,uBAAuB39B,KAAKylC,wBAAwBzlC,KAAK0lC,aAAajwB,EAAEmvB,kBAAkB5kC,KAAK2lC,0BAA0BlwB,EAAEmvB,kBAAkB5kC,KAAK4lC,8BAA8BnwB,EAAEmvB,kBAAkB5kC,KAAK6lC,oBAAoBpwB,EAAEmvB,kBAAkB5kC,KAAK8lC,iBAAiBrwB,EAAEovB,kBAAkB7kC,KAAK+lC,mBAAmBtwB,EAAEovB,iBAAiB,CAAC,GAAG7kC,KAAK+mC,OAAM,GAAI72B,EAAElQ,KAAKulC,OAAOnE,qBAAqBpK,EAAEgL,kCAAkC,EAAE,MAAM,IAAI74B,MAAM,wEAAwE,GAAGnJ,KAAKulC,OAAO9D,SAASvxB,GAAGlQ,KAAKslC,eAAetO,EAAEgL,iCAAiChiC,KAAKqmC,qCAAqCrmC,KAAKwlC,YAAYxlC,KAAKumC,mCAAmCvP,EAAEiL,+BAA+BjiC,KAAKumC,mCAAmCvmC,KAAKulC,OAAOnE,qBAAqBpK,EAAEiL,6BAA6BjiC,KAAKumC,mCAAmC,GAAG,MAAM,IAAIp9B,MAAM,gEAAgEnJ,KAAKulC,OAAO9D,SAASzhC,KAAKumC,oCAAoCvmC,KAAKslC,eAAetO,EAAEiL,6BAA6BjiC,KAAKimC,4BAA4B,CAAC,IAAI7O,EAAEp3B,KAAK+lC,iBAAiB/lC,KAAK8lC,eAAe9lC,KAAK+mC,QAAQ3P,GAAG,GAAGA,GAAG,GAAGp3B,KAAKkmC,uBAAuB,IAAI5O,EAAE9T,EAAE4T,EAAE,GAAG,EAAEE,EAAEt3B,KAAKwlC,YAAYhiB,EAAEwT,EAAEyF,uBAAuBz8B,KAAKulC,OAAOpE,KAAK7J,QAAQ,GAAGA,EAAE,EAAE,MAAM,IAAInuB,MAAM,0BAA0B8V,KAAK+G,IAAIsR,GAAG,UAAU,EAAE4P,cAAc,SAASh3B,GAAGlQ,KAAKulC,OAAOjO,EAAEpnB,EAAE,EAAEqvB,KAAK,SAASrvB,GAAGlQ,KAAKknC,cAAch3B,GAAGlQ,KAAKinC,mBAAmBjnC,KAAK8mC,iBAAiB9mC,KAAKymC,gBAAgB,GAAGjjB,EAAEuT,QAAQG,CAAC,EAAE,CAAC,qBAAqB,GAAG,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,KAAK,GAAG,CAAC,SAAShnB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAEpnB,EAAE,sBAAsB8mB,EAAE9mB,EAAE,WAAWuF,EAAEvF,EAAE,sBAAsByf,EAAEzf,EAAE,WAAW+mB,EAAE/mB,EAAE,UAAUgnB,EAAEhnB,EAAE,kBAAkBinB,EAAEjnB,EAAE,aAAa,SAASmnB,EAAEnnB,EAAEsT,GAAGxjB,KAAKkmB,QAAQhW,EAAElQ,KAAKqlC,YAAY7hB,CAAC,CAAC6T,EAAEoB,UAAU,CAAC0O,YAAY,WAAW,OAAO,IAAI,EAAEnnC,KAAKonC,QAAQ,EAAEC,QAAQ,WAAW,OAAO,OAAO,KAAKrnC,KAAKonC,QAAQ,EAAET,cAAc,SAASz2B,GAAG,IAAIsT,EAAE4T,EAAE,GAAGlnB,EAAEwxB,KAAK,IAAI1hC,KAAKsnC,eAAep3B,EAAEyxB,QAAQ,GAAGvK,EAAElnB,EAAEyxB,QAAQ,GAAG3hC,KAAK0U,SAASxE,EAAEoxB,SAASthC,KAAKsnC,gBAAgBp3B,EAAEwxB,KAAKtK,IAAI,IAAIp3B,KAAKo4B,iBAAiB,IAAIp4B,KAAKq4B,iBAAiB,MAAM,IAAIlvB,MAAM,sIAAsI,GAAG,QAAQqa,EAAE,SAAStT,GAAG,IAAI,IAAIsT,KAAK0T,EAAE,GAAGhoB,OAAOupB,UAAUqK,eAAetL,KAAKN,EAAE1T,IAAI0T,EAAE1T,GAAG6V,QAAQnpB,EAAE,OAAOgnB,EAAE1T,GAAG,OAAO,IAAI,CAA/G,CAAiHxjB,KAAKunC,oBAAoB,MAAM,IAAIp+B,MAAM,+BAA+B6tB,EAAE8N,OAAO9kC,KAAKunC,mBAAmB,0BAA0BvQ,EAAEyD,YAAY,SAASz6B,KAAK0U,UAAU,KAAK1U,KAAK8+B,aAAa,IAAIrpB,EAAEzV,KAAKo4B,eAAep4B,KAAKq4B,iBAAiBr4B,KAAKs4B,MAAM9U,EAAEtT,EAAEoxB,SAASthC,KAAKo4B,gBAAgB,EAAE4O,gBAAgB,SAAS92B,GAAGlQ,KAAKwnC,cAAct3B,EAAEyxB,QAAQ,GAAGzxB,EAAEwxB,KAAK,GAAG1hC,KAAKonC,QAAQl3B,EAAEyxB,QAAQ,GAAG3hC,KAAKunC,kBAAkBr3B,EAAE0xB,WAAW,GAAG5hC,KAAK05B,KAAKxpB,EAAE2xB,WAAW7hC,KAAKs4B,MAAMpoB,EAAEyxB,QAAQ,GAAG3hC,KAAKo4B,eAAeloB,EAAEyxB,QAAQ,GAAG3hC,KAAKq4B,iBAAiBnoB,EAAEyxB,QAAQ,GAAG,IAAIne,EAAEtT,EAAEyxB,QAAQ,GAAG,GAAG3hC,KAAKynC,kBAAkBv3B,EAAEyxB,QAAQ,GAAG3hC,KAAK0nC,kBAAkBx3B,EAAEyxB,QAAQ,GAAG3hC,KAAK2nC,gBAAgBz3B,EAAEyxB,QAAQ,GAAG3hC,KAAK4nC,uBAAuB13B,EAAEyxB,QAAQ,GAAG3hC,KAAK6nC,uBAAuB33B,EAAEyxB,QAAQ,GAAG3hC,KAAK0mC,kBAAkBx2B,EAAEyxB,QAAQ,GAAG3hC,KAAKmnC,cAAc,MAAM,IAAIh+B,MAAM,mCAAmC+G,EAAEwxB,KAAKle,GAAGxjB,KAAK8nC,gBAAgB53B,GAAGlQ,KAAK+nC,qBAAqB73B,GAAGlQ,KAAKgoC,YAAY93B,EAAEoxB,SAASthC,KAAK0nC,kBAAkB,EAAEb,kBAAkB,WAAW7mC,KAAK65B,gBAAgB,KAAK75B,KAAK85B,eAAe,KAAK,IAAI5pB,EAAElQ,KAAKwnC,eAAe,EAAExnC,KAAKukB,OAAO,GAAGvkB,KAAK6nC,wBAAwB,GAAG33B,IAAIlQ,KAAK85B,eAAe,GAAG95B,KAAK6nC,wBAAwB,GAAG33B,IAAIlQ,KAAK65B,gBAAgB75B,KAAK6nC,wBAAwB,GAAG,OAAO7nC,KAAKukB,KAAK,MAAMvkB,KAAKw/B,YAAY16B,OAAO,KAAK9E,KAAKukB,KAAI,EAAG,EAAEwjB,qBAAqB,WAAW,GAAG/nC,KAAKioC,YAAY,GAAG,CAAC,IAAI/3B,EAAEonB,EAAEt3B,KAAKioC,YAAY,GAAGzoC,OAAOQ,KAAKq4B,mBAAmBrB,EAAE6N,mBAAmB7kC,KAAKq4B,iBAAiBnoB,EAAEyxB,QAAQ,IAAI3hC,KAAKo4B,iBAAiBpB,EAAE6N,mBAAmB7kC,KAAKo4B,eAAeloB,EAAEyxB,QAAQ,IAAI3hC,KAAK0mC,oBAAoB1P,EAAE6N,mBAAmB7kC,KAAK0mC,kBAAkBx2B,EAAEyxB,QAAQ,IAAI3hC,KAAK2nC,kBAAkB3Q,EAAE6N,mBAAmB7kC,KAAK2nC,gBAAgBz3B,EAAEyxB,QAAQ,GAAG,CAAC,EAAEmG,gBAAgB,SAAS53B,GAAG,IAAIsT,EAAE4T,EAAEE,EAAE7hB,EAAEvF,EAAExL,MAAM1E,KAAKynC,kBAAkB,IAAIznC,KAAKioC,cAAcjoC,KAAKioC,YAAY,CAAC,GAAG/3B,EAAExL,MAAM,EAAE+Q,GAAG+N,EAAEtT,EAAEyxB,QAAQ,GAAGvK,EAAElnB,EAAEyxB,QAAQ,GAAGrK,EAAEpnB,EAAEoxB,SAASlK,GAAGp3B,KAAKioC,YAAYzkB,GAAG,CAAC4iB,GAAG5iB,EAAE7e,OAAOyyB,EAAE53B,MAAM83B,GAAGpnB,EAAEuxB,SAAShsB,EAAE,EAAEmxB,WAAW,WAAW,IAAI12B,EAAEinB,EAAEe,WAAW,aAAa,QAAQ,GAAGl4B,KAAKqnC,UAAUrnC,KAAKw/B,YAAYvI,EAAEkI,WAAWn/B,KAAK0U,UAAU1U,KAAKy/B,eAAexI,EAAEkI,WAAWn/B,KAAKgoC,iBAAiB,CAAC,IAAIxkB,EAAExjB,KAAKkoC,4BAA4B,GAAG,OAAO1kB,EAAExjB,KAAKw/B,YAAYhc,MAAM,CAAC,IAAI4T,EAAEJ,EAAEyD,YAAYvqB,EAAElQ,KAAK0U,UAAU1U,KAAKw/B,YAAYx/B,KAAKqlC,YAAYnG,eAAe9H,EAAE,CAAC,IAAIE,EAAEt3B,KAAKmoC,+BAA+B,GAAG,OAAO7Q,EAAEt3B,KAAKy/B,eAAenI,MAAM,CAAC,IAAI7hB,EAAEuhB,EAAEyD,YAAYvqB,EAAElQ,KAAKgoC,aAAahoC,KAAKy/B,eAAez/B,KAAKqlC,YAAYnG,eAAezpB,EAAE,CAAC,CAAC,EAAEyyB,0BAA0B,WAAW,IAAIh4B,EAAElQ,KAAKioC,YAAY,OAAO,GAAG/3B,EAAE,CAAC,IAAIsT,EAAE8T,EAAEpnB,EAAE1Q,OAAO,OAAO,IAAIgkB,EAAEme,QAAQ,IAAQhS,EAAE3vB,KAAK0U,YAAY8O,EAAEme,QAAQ,GAAlC,KAA0C1K,EAAEkI,WAAW3b,EAAE8d,SAASpxB,EAAEvL,OAAO,GAAG,CAAC,OAAO,IAAI,EAAEwjC,6BAA6B,WAAW,IAAIj4B,EAAElQ,KAAKioC,YAAY,OAAO,GAAG/3B,EAAE,CAAC,IAAIsT,EAAE8T,EAAEpnB,EAAE1Q,OAAO,OAAO,IAAIgkB,EAAEme,QAAQ,IAAQhS,EAAE3vB,KAAKgoC,eAAexkB,EAAEme,QAAQ,GAArC,KAA6C1K,EAAEkI,WAAW3b,EAAE8d,SAASpxB,EAAEvL,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG6e,EAAEuT,QAAQM,CAAC,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,UAAU,EAAE,qBAAqB,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,KAAK,GAAG,CAAC,SAASnnB,EAAEsT,EAAE4T,GAAG,aAAa,SAASE,EAAEpnB,EAAEsT,EAAE4T,GAAGp3B,KAAKnB,KAAKqR,EAAElQ,KAAKukB,IAAI6S,EAAE7S,IAAIvkB,KAAK05B,KAAKtC,EAAEsC,KAAK15B,KAAK45B,QAAQxC,EAAEwC,QAAQ55B,KAAK65B,gBAAgBzC,EAAEyC,gBAAgB75B,KAAK85B,eAAe1C,EAAE0C,eAAe95B,KAAKooC,MAAM5kB,EAAExjB,KAAKqoC,YAAYjR,EAAEoC,OAAOx5B,KAAKkmB,QAAQ,CAACqS,YAAYnB,EAAEmB,YAAYoB,mBAAmBvC,EAAEuC,mBAAmB,CAAC,IAAI3C,EAAE9mB,EAAE,yBAAyBuF,EAAEvF,EAAE,uBAAuByf,EAAEzf,EAAE,UAAU+mB,EAAE/mB,EAAE,sBAAsBgnB,EAAEhnB,EAAE,0BAA0BonB,EAAEmB,UAAU,CAAC6P,eAAe,SAASp4B,GAAG,IAAIsT,EAAE,KAAK4T,EAAE,SAAS,IAAI,IAAIlnB,EAAE,MAAM,IAAI/G,MAAM,6BAA6B,IAAImuB,EAAE,YAAYF,EAAElnB,EAAEvH,gBAAgB,SAASyuB,EAAE,iBAAiBA,GAAG,SAASA,IAAIA,EAAE,UAAU5T,EAAExjB,KAAKuoC,oBAAoB,IAAI9yB,GAAGzV,KAAKqoC,YAAY5yB,IAAI6hB,IAAI9T,EAAEA,EAAEmV,KAAK,IAAIhJ,EAAE2U,oBAAoB7uB,GAAG6hB,IAAI9T,EAAEA,EAAEmV,KAAK,IAAIhJ,EAAE0U,kBAAkB,CAAC,MAAMn0B,IAAIsT,EAAE,IAAI0T,EAAE,UAAUv5B,MAAMuS,EAAE,CAAC,OAAO,IAAI8mB,EAAExT,EAAE4T,EAAE,GAAG,EAAEjE,MAAM,SAASjjB,EAAEsT,GAAG,OAAOxjB,KAAKsoC,eAAep4B,GAAG6sB,WAAWvZ,EAAE,EAAEglB,WAAW,SAASt4B,EAAEsT,GAAG,OAAOxjB,KAAKsoC,eAAep4B,GAAG,cAAc8wB,eAAexd,EAAE,EAAE4a,gBAAgB,SAASluB,EAAEsT,GAAG,GAAGxjB,KAAKooC,iBAAiBnR,GAAGj3B,KAAKooC,MAAM7P,YAAYc,QAAQnpB,EAAEmpB,MAAM,OAAOr5B,KAAKooC,MAAMpP,sBAAsB,IAAI5B,EAAEp3B,KAAKuoC,oBAAoB,OAAOvoC,KAAKqoC,cAAcjR,EAAEA,EAAEuB,KAAK,IAAIhJ,EAAE2U,mBAAmBrN,EAAEiC,iBAAiB9B,EAAElnB,EAAEsT,EAAE,EAAE+kB,kBAAkB,WAAW,OAAOvoC,KAAKooC,iBAAiBnR,EAAEj3B,KAAKooC,MAAM1P,mBAAmB14B,KAAKooC,iBAAiBlR,EAAEl3B,KAAKooC,MAAM,IAAI3yB,EAAEzV,KAAKooC,MAAM,GAAG,IAAI,IAAIjR,EAAE,CAAC,SAAS,WAAW,eAAe,eAAe,iBAAiBE,EAAE,WAAW,MAAM,IAAIluB,MAAM,6EAA6E,EAAE2pB,EAAE,EAAEA,EAAEqE,EAAExyB,OAAOmuB,IAAIwE,EAAEmB,UAAUtB,EAAErE,IAAIuE,EAAE7T,EAAEuT,QAAQO,CAAC,EAAE,CAAC,qBAAqB,EAAE,sBAAsB,GAAG,yBAAyB,GAAG,wBAAwB,GAAG,SAAS,KAAK,GAAG,CAAC,SAASpnB,EAAEmnB,EAAE7T,IAAG,SAAUA,GAAG,aAAa,IAAI4T,EAAEE,EAAEpnB,EAAEsT,EAAEilB,kBAAkBjlB,EAAEklB,uBAAuB,GAAGx4B,EAAE,CAAC,IAAIuF,EAAE,EAAEuhB,EAAE,IAAI9mB,EAAEinB,GAAGxH,EAAEnM,EAAExO,SAAS2zB,eAAe,IAAI3R,EAAE4R,QAAQjZ,EAAE,CAACkZ,eAAc,IAAKzR,EAAE,WAAWzH,EAAExxB,KAAKsX,IAAIA,EAAE,CAAC,CAAC,MAAM,GAAG+N,EAAEuhB,mBAAc,IAASvhB,EAAEslB,eAAe1R,EAAE,aAAa5T,GAAG,uBAAuBA,EAAExO,SAAS+a,cAAc,UAAU,WAAW,IAAI7f,EAAEsT,EAAExO,SAAS+a,cAAc,UAAU7f,EAAE64B,mBAAmB,WAAW5R,IAAIjnB,EAAE64B,mBAAmB,KAAK74B,EAAE84B,WAAWvX,YAAYvhB,GAAGA,EAAE,IAAI,EAAEsT,EAAExO,SAASi0B,gBAAgB3X,YAAYphB,EAAE,EAAE,WAAW/P,WAAWg3B,EAAE,EAAE,MAAM,CAAC,IAAIF,EAAE,IAAIzT,EAAEslB,eAAe7R,EAAEiS,MAAMC,UAAUhS,EAAEC,EAAE,WAAWH,EAAEmS,MAAMC,YAAY,EAAE,CAAC,CAAC,IAAInS,EAAE,GAAG,SAASC,IAAI,IAAIjnB,EAAEsT,EAAE8T,GAAE,EAAG,IAAI,IAAIF,EAAEF,EAAEvyB,OAAOyyB,GAAG,CAAC,IAAI5T,EAAE0T,EAAEA,EAAE,GAAGhnB,GAAG,IAAIA,EAAEknB,GAAG5T,EAAEtT,KAAKknB,EAAEF,EAAEvyB,MAAM,CAAC2yB,GAAE,CAAE,CAACD,EAAEN,QAAQ,SAAS7mB,GAAG,IAAIgnB,EAAE9uB,KAAK8H,IAAIonB,GAAGF,GAAG,CAAE,GAAEI,KAAKx3B,KAAK,oBAAoBujB,EAAAA,EAAOA,EAAAA,EAAO,oBAAoBsgB,KAAKA,KAAK,oBAAoBhkC,OAAOA,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAASqQ,EAAEsT,EAAE4T,GAAG,aAAa,IAAI3hB,EAAEvF,EAAE,aAAa,SAASinB,IAAI,CAAC,IAAIE,EAAE,CAAC,EAAEL,EAAE,CAAC,YAAYrH,EAAE,CAAC,aAAa2H,EAAE,CAAC,WAAW,SAASL,EAAE/mB,GAAG,GAAG,mBAAmBA,EAAE,MAAM,IAAIo5B,UAAU,+BAA+BtpC,KAAKs2B,MAAMgB,EAAEt3B,KAAKupC,MAAM,GAAGvpC,KAAKwpC,aAAQ,EAAOt5B,IAAIinB,GAAGM,EAAEz3B,KAAKkQ,EAAE,CAAC,SAASgnB,EAAEhnB,EAAEsT,EAAE4T,GAAGp3B,KAAKypC,QAAQv5B,EAAE,mBAAmBsT,IAAIxjB,KAAK0pC,YAAYlmB,EAAExjB,KAAK2pC,cAAc3pC,KAAK4pC,oBAAoB,mBAAmBxS,IAAIp3B,KAAK6pC,WAAWzS,EAAEp3B,KAAK8pC,aAAa9pC,KAAK+pC,kBAAkB,CAAC,SAASjX,EAAEtP,EAAE4T,EAAEE,GAAG7hB,EAAE,WAAW,IAAIvF,EAAE,IAAIA,EAAEknB,EAAEE,EAAE,CAAC,MAAMpnB,GAAG,OAAOmnB,EAAE/G,OAAO9M,EAAEtT,EAAE,CAACA,IAAIsT,EAAE6T,EAAE/G,OAAO9M,EAAE,IAAI8lB,UAAU,uCAAuCjS,EAAEtE,QAAQvP,EAAEtT,EAAE,EAAE,CAAC,SAASwnB,EAAExnB,GAAG,IAAIsT,EAAEtT,GAAGA,EAAEzG,KAAK,GAAGyG,IAAI,iBAAiBA,GAAG,mBAAmBA,IAAI,mBAAmBsT,EAAE,OAAO,WAAWA,EAAE4f,MAAMlzB,EAAEmuB,UAAU,CAAC,CAAC,SAAS5G,EAAEjU,EAAEtT,GAAG,IAAIknB,GAAE,EAAG,SAASE,EAAEpnB,GAAGknB,IAAIA,GAAE,EAAGC,EAAE/G,OAAO9M,EAAEtT,GAAG,CAAC,SAASuF,EAAEvF,GAAGknB,IAAIA,GAAE,EAAGC,EAAEtE,QAAQvP,EAAEtT,GAAG,CAAC,IAAI8mB,EAAEW,EAAE,WAAWznB,EAAEuF,EAAE6hB,EAAE,GAAG,UAAUN,EAAE31B,QAAQi2B,EAAEN,EAAEx3B,MAAM,CAAC,SAASm4B,EAAEznB,EAAEsT,GAAG,IAAI4T,EAAE,CAAC,EAAE,IAAIA,EAAE53B,MAAM0Q,EAAEsT,GAAG4T,EAAE/1B,OAAO,SAAS,CAAC,MAAM6O,GAAGknB,EAAE/1B,OAAO,QAAQ+1B,EAAE53B,MAAM0Q,CAAC,CAAC,OAAOknB,CAAC,EAAE5T,EAAEuT,QAAQE,GAAGwB,UAAUxG,QAAQ,SAASzO,GAAG,GAAG,mBAAmBA,EAAE,OAAOxjB,KAAK,IAAIo3B,EAAEp3B,KAAK+hB,YAAY,OAAO/hB,KAAKyJ,KAAK,SAASyG,GAAG,OAAOknB,EAAErE,QAAQvP,KAAK/Z,KAAK,WAAW,OAAOyG,CAAC,EAAE,EAAE,SAASA,GAAG,OAAOknB,EAAErE,QAAQvP,KAAK/Z,KAAK,WAAW,MAAMyG,CAAC,EAAE,EAAE,EAAE+mB,EAAEwB,UAAU9uB,MAAM,SAASuG,GAAG,OAAOlQ,KAAKyJ,KAAK,KAAKyG,EAAE,EAAE+mB,EAAEwB,UAAUhvB,KAAK,SAASyG,EAAEsT,GAAG,GAAG,mBAAmBtT,GAAGlQ,KAAKs2B,QAAQ3G,GAAG,mBAAmBnM,GAAGxjB,KAAKs2B,QAAQU,EAAE,OAAOh3B,KAAK,IAAIo3B,EAAE,IAAIp3B,KAAK+hB,YAAYoV,GAAqF,OAAlFn3B,KAAKs2B,QAAQgB,EAAExE,EAAEsE,EAAEp3B,KAAKs2B,QAAQ3G,EAAEzf,EAAEsT,EAAExjB,KAAKwpC,SAASxpC,KAAKupC,MAAMnhC,KAAK,IAAI8uB,EAAEE,EAAElnB,EAAEsT,IAAW4T,CAAC,EAAEF,EAAEuB,UAAUkR,cAAc,SAASz5B,GAAGmnB,EAAEtE,QAAQ/yB,KAAKypC,QAAQv5B,EAAE,EAAEgnB,EAAEuB,UAAUmR,mBAAmB,SAAS15B,GAAG4iB,EAAE9yB,KAAKypC,QAAQzpC,KAAK0pC,YAAYx5B,EAAE,EAAEgnB,EAAEuB,UAAUqR,aAAa,SAAS55B,GAAGmnB,EAAE/G,OAAOtwB,KAAKypC,QAAQv5B,EAAE,EAAEgnB,EAAEuB,UAAUsR,kBAAkB,SAAS75B,GAAG4iB,EAAE9yB,KAAKypC,QAAQzpC,KAAK6pC,WAAW35B,EAAE,EAAEmnB,EAAEtE,QAAQ,SAAS7iB,EAAEsT,GAAG,IAAI4T,EAAEO,EAAED,EAAElU,GAAG,GAAG,UAAU4T,EAAE/1B,OAAO,OAAOg2B,EAAE/G,OAAOpgB,EAAEknB,EAAE53B,OAAO,IAAI83B,EAAEF,EAAE53B,MAAM,GAAG83B,EAAEG,EAAEvnB,EAAEonB,OAAO,CAACpnB,EAAEomB,MAAM3G,EAAEzf,EAAEs5B,QAAQhmB,EAAE,IAAI,IAAI/N,GAAG,EAAEuhB,EAAE9mB,EAAEq5B,MAAM5kC,SAAS8Q,EAAEuhB,GAAG9mB,EAAEq5B,MAAM9zB,GAAGk0B,cAAcnmB,EAAE,CAAC,OAAOtT,CAAC,EAAEmnB,EAAE/G,OAAO,SAASpgB,EAAEsT,GAAGtT,EAAEomB,MAAMU,EAAE9mB,EAAEs5B,QAAQhmB,EAAE,IAAI,IAAI4T,GAAG,EAAEE,EAAEpnB,EAAEq5B,MAAM5kC,SAASyyB,EAAEE,GAAGpnB,EAAEq5B,MAAMnS,GAAG0S,aAAatmB,GAAG,OAAOtT,CAAC,EAAE+mB,EAAElE,QAAQ,SAAS7iB,GAAG,OAAGA,aAAalQ,KAAYkQ,EAASmnB,EAAEtE,QAAQ,IAAI/yB,KAAKm3B,GAAGjnB,EAAE,EAAE+mB,EAAE3G,OAAO,SAASpgB,GAAG,IAAIsT,EAAE,IAAIxjB,KAAKm3B,GAAG,OAAOE,EAAE/G,OAAO9M,EAAEtT,EAAE,EAAE+mB,EAAE/uB,IAAI,SAASgI,GAAG,IAAIknB,EAAEp3B,KAAK,GAAG,mBAAmBkP,OAAOupB,UAAUgI,SAASjJ,KAAKtnB,GAAG,OAAOlQ,KAAKswB,OAAO,IAAIgZ,UAAU,qBAAqB,IAAIhS,EAAEpnB,EAAEvL,OAAO8Q,GAAE,EAAG,IAAI6hB,EAAE,OAAOt3B,KAAK+yB,QAAQ,IAA8C,IAA1C,IAAIiE,EAAE,IAAI5vB,MAAMkwB,GAAG3H,EAAE,EAAEnM,GAAG,EAAEyT,EAAE,IAAIj3B,KAAKm3B,KAAU3T,EAAE8T,GAAGJ,EAAEhnB,EAAEsT,GAAGA,GAAG,OAAOyT,EAAE,SAASC,EAAEhnB,EAAEsT,GAAG4T,EAAErE,QAAQ7iB,GAAGzG,KAAK,SAASyG,GAAG8mB,EAAExT,GAAGtT,IAAIyf,IAAI2H,GAAG7hB,IAAIA,GAAE,EAAG4hB,EAAEtE,QAAQkE,EAAED,GAAG,EAAE,SAAS9mB,GAAGuF,IAAIA,GAAE,EAAG4hB,EAAE/G,OAAO2G,EAAE/mB,GAAG,EAAE,CAAC,EAAE+mB,EAAE+S,KAAK,SAAS95B,GAAG,IAAIsT,EAAExjB,KAAK,GAAG,mBAAmBkP,OAAOupB,UAAUgI,SAASjJ,KAAKtnB,GAAG,OAAOlQ,KAAKswB,OAAO,IAAIgZ,UAAU,qBAAqB,IAAIlS,EAAElnB,EAAEvL,OAAO2yB,GAAE,EAAG,IAAIF,EAAE,OAAOp3B,KAAK+yB,QAAQ,IAA2B,IAAvB,IAA4IpD,EAAxIla,GAAG,EAAEuhB,EAAE,IAAIh3B,KAAKm3B,KAAU1hB,EAAE2hB,GAAGzH,EAAEzf,EAAEuF,GAAG+N,EAAEuP,QAAQpD,GAAGlmB,KAAK,SAASyG,GAAGonB,IAAIA,GAAE,EAAGD,EAAEtE,QAAQiE,EAAE9mB,GAAG,EAAE,SAASA,GAAGonB,IAAIA,GAAE,EAAGD,EAAE/G,OAAO0G,EAAE9mB,GAAG,GAAS,OAAO8mB,CAAC,CAAC,EAAE,CAACjf,UAAU,KAAK,GAAG,CAAC,SAAS7H,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAE,CAAC,GAAE,EAAGpnB,EAAE,sBAAsB+5B,QAAQ3S,EAAEpnB,EAAE,iBAAiBA,EAAE,iBAAiBA,EAAE,yBAAyBsT,EAAEuT,QAAQO,CAAC,EAAE,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,uBAAuB,KAAK,GAAG,CAAC,SAASpnB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIzH,EAAEzf,EAAE,kBAAkB+mB,EAAE/mB,EAAE,kBAAkBgnB,EAAEhnB,EAAE,mBAAmBuF,EAAEvF,EAAE,mBAAmB8mB,EAAE9mB,EAAE,kBAAkBinB,EAAEjoB,OAAOupB,UAAUgI,SAASpJ,EAAE,EAAEvE,GAAG,EAAE4E,EAAE,EAAED,EAAE,EAAE,SAASE,EAAEznB,GAAG,KAAKlQ,gBAAgB23B,GAAG,OAAO,IAAIA,EAAEznB,GAAGlQ,KAAKkmB,QAAQ+Q,EAAEgT,OAAO,CAACpP,MAAM/H,EAAE3xB,OAAOs2B,EAAEyS,UAAU,MAAMC,WAAW,GAAGC,SAAS,EAAEC,SAAS3S,EAAEvzB,GAAG,IAAI+L,GAAG,CAAC,GAAG,IAAIsT,EAAExjB,KAAKkmB,QAAQ1C,EAAEoX,KAAK,EAAEpX,EAAE2mB,WAAW3mB,EAAE2mB,YAAY3mB,EAAE2mB,WAAW3mB,EAAE8mB,MAAM,EAAE9mB,EAAE2mB,YAAY3mB,EAAE2mB,WAAW,KAAK3mB,EAAE2mB,YAAY,IAAInqC,KAAK2B,IAAI,EAAE3B,KAAKuqC,IAAI,GAAGvqC,KAAKwqC,OAAM,EAAGxqC,KAAKyqC,OAAO,GAAGzqC,KAAK0qC,KAAK,IAAI1T,EAAEh3B,KAAK0qC,KAAKC,UAAU,EAAE,IAAIvT,EAAEzH,EAAEib,aAAa5qC,KAAK0qC,KAAKlnB,EAAEqX,MAAMrX,EAAEriB,OAAOqiB,EAAE2mB,WAAW3mB,EAAE4mB,SAAS5mB,EAAE6mB,UAAU,GAAGjT,IAAIC,EAAE,MAAM,IAAIluB,MAAMsM,EAAE2hB,IAAI,GAAG5T,EAAEqnB,QAAQlb,EAAEmb,iBAAiB9qC,KAAK0qC,KAAKlnB,EAAEqnB,QAAQrnB,EAAEunB,WAAW,CAAC,IAAIzT,EAAE,GAAGA,EAAE,iBAAiB9T,EAAEunB,WAAW7T,EAAE8T,WAAWxnB,EAAEunB,YAAY,yBAAyB5T,EAAEK,KAAKhU,EAAEunB,YAAY,IAAI5S,WAAW3U,EAAEunB,YAAYvnB,EAAEunB,YAAY3T,EAAEzH,EAAEsb,qBAAqBjrC,KAAK0qC,KAAKpT,MAAMD,EAAE,MAAM,IAAIluB,MAAMsM,EAAE2hB,IAAIp3B,KAAKkrC,WAAU,CAAE,CAAC,CAAC,SAAS5T,EAAEpnB,EAAEsT,GAAG,IAAI4T,EAAE,IAAIO,EAAEnU,GAAG,GAAG4T,EAAEhvB,KAAK8H,GAAE,GAAIknB,EAAEz1B,IAAI,MAAMy1B,EAAEmT,KAAK90B,EAAE2hB,EAAEz1B,KAAK,OAAOy1B,EAAEtmB,MAAM,CAAC6mB,EAAEc,UAAUrwB,KAAK,SAAS8H,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEzV,KAAK0qC,KAAK1T,EAAEh3B,KAAKkmB,QAAQgkB,UAAU,GAAGlqC,KAAKwqC,MAAM,OAAM,EAAGlT,EAAE9T,MAAMA,EAAEA,GAAE,IAAKA,EAAE,EAAE,EAAE,iBAAiBtT,EAAEuF,EAAEjF,MAAM0mB,EAAE8T,WAAW96B,GAAG,yBAAyBinB,EAAEK,KAAKtnB,GAAGuF,EAAEjF,MAAM,IAAI2nB,WAAWjoB,GAAGuF,EAAEjF,MAAMN,EAAEuF,EAAE01B,QAAQ,EAAE11B,EAAE21B,SAAS31B,EAAEjF,MAAM7L,OAAO,EAAE,CAAC,GAAG,IAAI8Q,EAAEk1B,YAAYl1B,EAAE41B,OAAO,IAAIpU,EAAEqU,KAAKtU,GAAGvhB,EAAE81B,SAAS,EAAE91B,EAAEk1B,UAAU3T,GAAG,KAAKI,EAAEzH,EAAE6b,QAAQ/1B,EAAE6hB,KAAKF,IAAIC,EAAE,OAAOr3B,KAAKyrC,MAAMrU,KAAKp3B,KAAKwqC,OAAM,GAAI,IAAI/0B,EAAEk1B,YAAY,IAAIl1B,EAAE21B,UAAU,IAAI9T,GAAG,IAAIA,KAAK,WAAWt3B,KAAKkmB,QAAQ/hB,GAAGnE,KAAK86B,OAAO5D,EAAEwU,cAAczU,EAAE0U,UAAUl2B,EAAE41B,OAAO51B,EAAE81B,YAAYvrC,KAAK86B,OAAO7D,EAAE0U,UAAUl2B,EAAE41B,OAAO51B,EAAE81B,WAAW,QAAQ,EAAE91B,EAAE21B,UAAU,IAAI31B,EAAEk1B,YAAY,IAAIvT,GAAG,OAAO,IAAIE,GAAGF,EAAEzH,EAAEic,WAAW5rC,KAAK0qC,MAAM1qC,KAAKyrC,MAAMrU,GAAGp3B,KAAKwqC,OAAM,EAAGpT,IAAIC,GAAG,IAAIC,IAAIt3B,KAAKyrC,MAAMpU,KAAK5hB,EAAEk1B,UAAU,GAAG,EAAEhT,EAAEc,UAAUqC,OAAO,SAAS5qB,GAAGlQ,KAAKyqC,OAAOriC,KAAK8H,EAAE,EAAEynB,EAAEc,UAAUgT,MAAM,SAASv7B,GAAGA,IAAImnB,IAAI,WAAWr3B,KAAKkmB,QAAQ/hB,GAAGnE,KAAK8Q,OAAO9Q,KAAKyqC,OAAO1lC,KAAK,IAAI/E,KAAK8Q,OAAOmmB,EAAE4U,cAAc7rC,KAAKyqC,SAASzqC,KAAKyqC,OAAO,GAAGzqC,KAAK2B,IAAIuO,EAAElQ,KAAKuqC,IAAIvqC,KAAK0qC,KAAKH,GAAG,EAAEnT,EAAE0U,QAAQnU,EAAEP,EAAEoU,QAAQlU,EAAEF,EAAE2U,WAAW,SAAS77B,EAAEsT,GAAG,OAAOA,EAAEA,GAAG,CAAC,GAAGoX,KAAI,EAAGtD,EAAEpnB,EAAEsT,EAAE,EAAE4T,EAAEkT,KAAK,SAASp6B,EAAEsT,GAAG,OAAOA,EAAEA,GAAG,CAAC,GAAG8mB,MAAK,EAAGhT,EAAEpnB,EAAEsT,EAAE,CAAC,EAAE,CAAC,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,KAAK,GAAG,CAAC,SAAStT,EAAEsT,EAAE4T,GAAG,aAAa,IAAIM,EAAExnB,EAAE,kBAAkBunB,EAAEvnB,EAAE,kBAAkBynB,EAAEznB,EAAE,mBAAmBmrB,EAAEnrB,EAAE,oBAAoBonB,EAAEpnB,EAAE,mBAAmBuF,EAAEvF,EAAE,kBAAkB8mB,EAAE9mB,EAAE,mBAAmBjS,EAAEiR,OAAOupB,UAAUgI,SAAS,SAAS9Q,EAAEzf,GAAG,KAAKlQ,gBAAgB2vB,GAAG,OAAO,IAAIA,EAAEzf,GAAGlQ,KAAKkmB,QAAQuR,EAAEwS,OAAO,CAACC,UAAU,MAAMC,WAAW,EAAEhmC,GAAG,IAAI+L,GAAG,CAAC,GAAG,IAAIsT,EAAExjB,KAAKkmB,QAAQ1C,EAAEoX,KAAK,GAAGpX,EAAE2mB,YAAY3mB,EAAE2mB,WAAW,KAAK3mB,EAAE2mB,YAAY3mB,EAAE2mB,WAAW,IAAI3mB,EAAE2mB,aAAa3mB,EAAE2mB,YAAY,OAAO,GAAG3mB,EAAE2mB,YAAY3mB,EAAE2mB,WAAW,KAAKj6B,GAAGA,EAAEi6B,aAAa3mB,EAAE2mB,YAAY,IAAI,GAAG3mB,EAAE2mB,YAAY3mB,EAAE2mB,WAAW,IAAI,IAAI,GAAG3mB,EAAE2mB,cAAc3mB,EAAE2mB,YAAY,IAAInqC,KAAK2B,IAAI,EAAE3B,KAAKuqC,IAAI,GAAGvqC,KAAKwqC,OAAM,EAAGxqC,KAAKyqC,OAAO,GAAGzqC,KAAK0qC,KAAK,IAAIj1B,EAAEzV,KAAK0qC,KAAKC,UAAU,EAAE,IAAIvT,EAAEM,EAAEsU,aAAahsC,KAAK0qC,KAAKlnB,EAAE2mB,YAAY,GAAG/S,IAAIiE,EAAE4Q,KAAK,MAAM,IAAI9iC,MAAMmuB,EAAEF,IAAIp3B,KAAK6qC,OAAO,IAAI7T,EAAEU,EAAEwU,iBAAiBlsC,KAAK0qC,KAAK1qC,KAAK6qC,OAAO,CAAC,SAAS5T,EAAE/mB,EAAEsT,GAAG,IAAI4T,EAAE,IAAIzH,EAAEnM,GAAG,GAAG4T,EAAEhvB,KAAK8H,GAAE,GAAIknB,EAAEz1B,IAAI,MAAMy1B,EAAEmT,KAAKjT,EAAEF,EAAEz1B,KAAK,OAAOy1B,EAAEtmB,MAAM,CAAC6e,EAAE8I,UAAUrwB,KAAK,SAAS8H,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,EAAEC,EAAEl3B,KAAK0qC,KAAKvT,EAAEn3B,KAAKkmB,QAAQgkB,UAAU7S,EAAEr3B,KAAKkmB,QAAQ6kB,WAAWjY,GAAE,EAAG,GAAG9yB,KAAKwqC,MAAM,OAAM,EAAGlT,EAAE9T,MAAMA,EAAEA,GAAE,IAAKA,EAAE6X,EAAE8Q,SAAS9Q,EAAE+Q,WAAW,iBAAiBl8B,EAAEgnB,EAAE1mB,MAAMmnB,EAAE0U,cAAcn8B,GAAG,yBAAyBjS,EAAEu5B,KAAKtnB,GAAGgnB,EAAE1mB,MAAM,IAAI2nB,WAAWjoB,GAAGgnB,EAAE1mB,MAAMN,EAAEgnB,EAAEiU,QAAQ,EAAEjU,EAAEkU,SAASlU,EAAE1mB,MAAM7L,OAAO,EAAE,CAAC,GAAG,IAAIuyB,EAAEyT,YAAYzT,EAAEmU,OAAO,IAAI5T,EAAE6T,KAAKnU,GAAGD,EAAEqU,SAAS,EAAErU,EAAEyT,UAAUxT,IAAIC,EAAEM,EAAE4U,QAAQpV,EAAEmE,EAAE+Q,eAAe/Q,EAAEkR,aAAalV,IAAIJ,EAAE,iBAAiBI,EAAEM,EAAEqT,WAAW3T,GAAG,yBAAyBp5B,EAAEu5B,KAAKH,GAAG,IAAIc,WAAWd,GAAGA,EAAED,EAAEM,EAAE8U,qBAAqBxsC,KAAK0qC,KAAKzT,IAAIG,IAAIiE,EAAEoR,cAAa,IAAK3Z,IAAIsE,EAAEiE,EAAE4Q,KAAKnZ,GAAE,GAAIsE,IAAIiE,EAAEqR,cAActV,IAAIiE,EAAE4Q,KAAK,OAAOjsC,KAAKyrC,MAAMrU,KAAKp3B,KAAKwqC,OAAM,GAAItT,EAAEqU,WAAW,IAAIrU,EAAEyT,WAAWvT,IAAIiE,EAAEqR,eAAe,IAAIxV,EAAEkU,UAAU9T,IAAI+D,EAAE8Q,UAAU7U,IAAI+D,EAAEsR,gBAAgB,WAAW3sC,KAAKkmB,QAAQ/hB,IAAIsR,EAAEkiB,EAAEiV,WAAW1V,EAAEmU,OAAOnU,EAAEqU,UAAUvU,EAAEE,EAAEqU,SAAS91B,EAAEka,EAAEgI,EAAEkV,WAAW3V,EAAEmU,OAAO51B,GAAGyhB,EAAEqU,SAASvU,EAAEE,EAAEyT,UAAUxT,EAAEH,EAAEA,GAAGS,EAAEqV,SAAS5V,EAAEmU,OAAOnU,EAAEmU,OAAO51B,EAAEuhB,EAAE,GAAGh3B,KAAK86B,OAAOnL,IAAI3vB,KAAK86B,OAAOrD,EAAEkU,UAAUzU,EAAEmU,OAAOnU,EAAEqU,aAAa,IAAIrU,EAAEkU,UAAU,IAAIlU,EAAEyT,YAAY7X,GAAE,EAAG,QAAQ,EAAEoE,EAAEkU,UAAU,IAAIlU,EAAEyT,YAAYvT,IAAIiE,EAAEqR,cAAc,OAAOtV,IAAIiE,EAAEqR,eAAepV,EAAE+D,EAAE8Q,UAAU7U,IAAI+D,EAAE8Q,UAAU/U,EAAEM,EAAEqV,WAAW/sC,KAAK0qC,MAAM1qC,KAAKyrC,MAAMrU,GAAGp3B,KAAKwqC,OAAM,EAAGpT,IAAIiE,EAAE4Q,MAAM3U,IAAI+D,EAAEsR,eAAe3sC,KAAKyrC,MAAMpQ,EAAE4Q,QAAQ/U,EAAEyT,UAAU,GAAG,EAAEhb,EAAE8I,UAAUqC,OAAO,SAAS5qB,GAAGlQ,KAAKyqC,OAAOriC,KAAK8H,EAAE,EAAEyf,EAAE8I,UAAUgT,MAAM,SAASv7B,GAAGA,IAAImrB,EAAE4Q,OAAO,WAAWjsC,KAAKkmB,QAAQ/hB,GAAGnE,KAAK8Q,OAAO9Q,KAAKyqC,OAAO1lC,KAAK,IAAI/E,KAAK8Q,OAAO2mB,EAAEoU,cAAc7rC,KAAKyqC,SAASzqC,KAAKyqC,OAAO,GAAGzqC,KAAK2B,IAAIuO,EAAElQ,KAAKuqC,IAAIvqC,KAAK0qC,KAAKH,GAAG,EAAEnT,EAAE4V,QAAQrd,EAAEyH,EAAEkV,QAAQrV,EAAEG,EAAE6V,WAAW,SAAS/8B,EAAEsT,GAAG,OAAOA,EAAEA,GAAG,CAAC,GAAGoX,KAAI,EAAG3D,EAAE/mB,EAAEsT,EAAE,EAAE4T,EAAE8V,OAAOjW,CAAC,EAAE,CAAC,iBAAiB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,KAAK,GAAG,CAAC,SAAS/mB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIE,EAAE,oBAAoBa,YAAY,oBAAoB6B,aAAa,oBAAoBmT,WAAW/V,EAAE6S,OAAO,SAAS/5B,GAAG,IAAI,IAAIsT,EAAEpc,MAAMqxB,UAAU3zB,MAAM0yB,KAAK6G,UAAU,GAAG7a,EAAE7e,QAAQ,CAAC,IAAIyyB,EAAE5T,EAAEka,QAAQ,GAAGtG,EAAE,CAAC,GAAG,iBAAiBA,EAAE,MAAM,IAAIkS,UAAUlS,EAAE,sBAAsB,IAAI,IAAIE,KAAKF,EAAEA,EAAE0L,eAAexL,KAAKpnB,EAAEonB,GAAGF,EAAEE,GAAG,CAAC,CAAC,OAAOpnB,CAAC,EAAEknB,EAAEuU,UAAU,SAASz7B,EAAEsT,GAAG,OAAOtT,EAAEvL,SAAS6e,EAAEtT,EAAEA,EAAE6xB,SAAS7xB,EAAE6xB,SAAS,EAAEve,IAAItT,EAAEvL,OAAO6e,EAAEtT,EAAE,EAAE,IAAIuF,EAAE,CAACq3B,SAAS,SAAS58B,EAAEsT,EAAE4T,EAAEE,EAAE7hB,GAAG,GAAG+N,EAAEue,UAAU7xB,EAAE6xB,SAAS7xB,EAAEjM,IAAIuf,EAAEue,SAAS3K,EAAEA,EAAEE,GAAG7hB,QAAQ,IAAI,IAAIuhB,EAAE,EAAEA,EAAEM,EAAEN,IAAI9mB,EAAEuF,EAAEuhB,GAAGxT,EAAE4T,EAAEJ,EAAE,EAAE6U,cAAc,SAAS37B,GAAG,IAAIsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAE,IAAInM,EAAE8T,EAAE,EAAEF,EAAElnB,EAAEvL,OAAO6e,EAAE4T,EAAE5T,IAAI8T,GAAGpnB,EAAEsT,GAAG7e,OAAO,IAAIgrB,EAAE,IAAIwI,WAAWb,GAAG9T,EAAE/N,EAAE,EAAE2hB,EAAElnB,EAAEvL,OAAO6e,EAAE4T,EAAE5T,IAAIwT,EAAE9mB,EAAEsT,GAAGmM,EAAE1rB,IAAI+yB,EAAEvhB,GAAGA,GAAGuhB,EAAEryB,OAAO,OAAOgrB,CAAC,GAAGqH,EAAE,CAAC8V,SAAS,SAAS58B,EAAEsT,EAAE4T,EAAEE,EAAE7hB,GAAG,IAAI,IAAIuhB,EAAE,EAAEA,EAAEM,EAAEN,IAAI9mB,EAAEuF,EAAEuhB,GAAGxT,EAAE4T,EAAEJ,EAAE,EAAE6U,cAAc,SAAS37B,GAAG,MAAM,GAAGmd,OAAO+V,MAAM,GAAGlzB,EAAE,GAAGknB,EAAEgW,SAAS,SAASl9B,GAAGA,GAAGknB,EAAEkU,KAAKnT,WAAWf,EAAEiW,MAAMrT,YAAY5C,EAAEkW,MAAMH,WAAW/V,EAAE6S,OAAO7S,EAAE3hB,KAAK2hB,EAAEkU,KAAKlkC,MAAMgwB,EAAEiW,MAAMjmC,MAAMgwB,EAAEkW,MAAMlmC,MAAMgwB,EAAE6S,OAAO7S,EAAEJ,GAAG,EAAEI,EAAEgW,SAAS9V,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAASpnB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIF,EAAEhnB,EAAE,YAAYuF,GAAE,EAAGuhB,GAAE,EAAG,IAAI33B,OAAO47B,aAAamI,MAAM,KAAK,CAAC,GAAG,CAAC,MAAMlzB,GAAGuF,GAAE,CAAE,CAAC,IAAIpW,OAAO47B,aAAamI,MAAM,KAAK,IAAIjL,WAAW,GAAG,CAAC,MAAMjoB,GAAG8mB,GAAE,CAAE,CAAC,IAAI,IAAIG,EAAE,IAAID,EAAEoU,KAAK,KAAKhU,EAAE,EAAEA,EAAE,IAAIA,IAAIH,EAAEG,GAAG,KAAKA,EAAE,EAAE,KAAKA,EAAE,EAAE,KAAKA,EAAE,EAAE,KAAKA,EAAE,EAAE,KAAKA,EAAE,EAAE,EAAE,SAASD,EAAEnnB,EAAEsT,GAAG,GAAGA,EAAE,QAAQtT,EAAE6xB,UAAU/K,IAAI9mB,EAAE6xB,UAAUtsB,GAAG,OAAOpW,OAAO47B,aAAamI,MAAM,KAAKlM,EAAEyU,UAAUz7B,EAAEsT,IAAI,IAAI,IAAI4T,EAAE,GAAGE,EAAE,EAAEA,EAAE9T,EAAE8T,IAAIF,GAAG/3B,OAAO47B,aAAa/qB,EAAEonB,IAAI,OAAOF,CAAC,CAACD,EAAE,KAAKA,EAAE,KAAK,EAAEC,EAAE4T,WAAW,SAAS96B,GAAG,IAAIsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEzf,EAAEvL,OAAOsyB,EAAE,EAAE,IAAIxhB,EAAE,EAAEA,EAAEka,EAAEla,IAAI,QAAQ,OAAO2hB,EAAElnB,EAAE4nB,WAAWriB,MAAMA,EAAE,EAAEka,GAAG,QAAQ,OAAO2H,EAAEpnB,EAAE4nB,WAAWriB,EAAE,OAAO2hB,EAAE,OAAOA,EAAE,OAAO,KAAKE,EAAE,OAAO7hB,KAAKwhB,GAAGG,EAAE,IAAI,EAAEA,EAAE,KAAK,EAAEA,EAAE,MAAM,EAAE,EAAE,IAAI5T,EAAE,IAAI0T,EAAEoU,KAAKrU,GAAGxhB,EAAEuhB,EAAE,EAAEA,EAAEC,EAAExhB,IAAI,QAAQ,OAAO2hB,EAAElnB,EAAE4nB,WAAWriB,MAAMA,EAAE,EAAEka,GAAG,QAAQ,OAAO2H,EAAEpnB,EAAE4nB,WAAWriB,EAAE,OAAO2hB,EAAE,OAAOA,EAAE,OAAO,KAAKE,EAAE,OAAO7hB,KAAK2hB,EAAE,IAAI5T,EAAEwT,KAAKI,GAAGA,EAAE,KAAK5T,EAAEwT,KAAK,IAAII,IAAI,GAAGA,EAAE,MAAM5T,EAAEwT,KAAK,IAAII,IAAI,IAAI5T,EAAEwT,KAAK,IAAII,IAAI,GAAG5T,EAAEwT,KAAK,IAAII,IAAI,GAAG,IAAI5T,EAAEwT,KAAK,IAAII,IAAI,EAAE,IAAI5T,EAAEwT,KAAK,IAAI,GAAGI,GAAG,OAAO5T,CAAC,EAAE4T,EAAEsU,cAAc,SAASx7B,GAAG,OAAOmnB,EAAEnnB,EAAEA,EAAEvL,OAAO,EAAEyyB,EAAEiV,cAAc,SAASn8B,GAAG,IAAI,IAAIsT,EAAE,IAAI0T,EAAEoU,KAAKp7B,EAAEvL,QAAQyyB,EAAE,EAAEE,EAAE9T,EAAE7e,OAAOyyB,EAAEE,EAAEF,IAAI5T,EAAE4T,GAAGlnB,EAAE4nB,WAAWV,GAAG,OAAO5T,CAAC,EAAE4T,EAAEyV,WAAW,SAAS38B,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEnM,GAAGtT,EAAEvL,OAAOsyB,EAAE,IAAI7vB,MAAM,EAAEuoB,GAAG,IAAIyH,EAAEE,EAAE,EAAEF,EAAEzH,GAAG,IAAIla,EAAEvF,EAAEknB,MAAM,IAAIH,EAAEK,KAAK7hB,OAAO,GAAG,GAAGuhB,EAAEG,EAAE1hB,IAAIwhB,EAAEK,KAAK,MAAMF,GAAGJ,EAAE,MAAM,CAAC,IAAIvhB,GAAG,IAAIuhB,EAAE,GAAG,IAAIA,EAAE,GAAG,EAAE,EAAEA,GAAGI,EAAEzH,GAAGla,EAAEA,GAAG,EAAE,GAAGvF,EAAEknB,KAAKJ,IAAI,EAAEA,EAAEC,EAAEK,KAAK,MAAM7hB,EAAE,MAAMwhB,EAAEK,KAAK7hB,GAAGA,GAAG,MAAMwhB,EAAEK,KAAK,MAAM7hB,GAAG,GAAG,KAAKwhB,EAAEK,KAAK,MAAM,KAAK7hB,EAAE,CAAC,OAAO4hB,EAAEJ,EAAEK,EAAE,EAAEF,EAAEwV,WAAW,SAAS18B,EAAEsT,GAAG,IAAI4T,EAAE,KAAK5T,EAAEA,GAAGtT,EAAEvL,QAAQuL,EAAEvL,SAAS6e,EAAEtT,EAAEvL,QAAQyyB,EAAE5T,EAAE,EAAE,GAAG4T,GAAG,MAAM,IAAIlnB,EAAEknB,KAAKA,IAAI,OAAOA,EAAE,GAAI,IAAIA,EAAN5T,EAAU4T,EAAED,EAAEjnB,EAAEknB,IAAI5T,EAAE4T,EAAE5T,CAAC,CAAC,EAAE,CAAC,WAAW,KAAK,GAAG,CAAC,SAAStT,EAAEsT,EAAE4T,GAAG,aAAa5T,EAAEuT,QAAQ,SAAS7mB,EAAEsT,EAAE4T,EAAEE,GAAG,IAAI,IAAI7hB,EAAE,MAAMvF,EAAI8mB,EAAE9mB,IAAI,GAAG,MAAQyf,EAAE,EAAE,IAAIyH,GAAG,CAAC,IAAIA,GAAGzH,EAAE,IAAIyH,EAAE,IAAIA,EAAEJ,EAAEA,GAAGvhB,EAAEA,EAAE+N,EAAE8T,KAAK,GAAG,IAAI3H,IAAIla,GAAG,MAAMuhB,GAAG,KAAK,CAAC,OAAOvhB,EAAEuhB,GAAG,EAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS9mB,EAAEsT,EAAE4T,GAAG,aAAa5T,EAAEuT,QAAQ,CAACqV,WAAW,EAAEmB,gBAAgB,EAAEZ,aAAa,EAAEa,aAAa,EAAErB,SAAS,EAAEsB,QAAQ,EAAEC,QAAQ,EAAEzB,KAAK,EAAES,aAAa,EAAEH,YAAY,EAAEoB,SAAS,EAAEC,gBAAgB,EAAEC,cAAc,EAAEpB,aAAa,EAAEqB,iBAAiB,EAAEC,aAAa,EAAEC,mBAAmB,EAAEC,uBAAuB,EAAEC,WAAW,EAAEC,eAAe,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,mBAAmB,EAAEC,SAAS,EAAEC,OAAO,EAAEC,UAAU,EAAEC,WAAW,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAASx+B,EAAEsT,EAAE4T,GAAG,aAAa,IAAIH,EAAE,WAAW,IAAI,IAAI/mB,EAAEsT,EAAE,GAAG4T,EAAE,EAAEA,EAAE,IAAIA,IAAI,CAAClnB,EAAEknB,EAAE,IAAI,IAAIE,EAAE,EAAEA,EAAE,EAAEA,IAAIpnB,EAAE,EAAEA,EAAE,WAAWA,IAAI,EAAEA,IAAI,EAAEsT,EAAE4T,GAAGlnB,CAAC,CAAC,OAAOsT,CAAC,CAA7G,GAAiHA,EAAEuT,QAAQ,SAAS7mB,EAAEsT,EAAE4T,EAAEE,GAAG,IAAI7hB,EAAEwhB,EAAED,EAAEM,EAAEF,EAAElnB,IAAI,EAAE,IAAI,IAAIyf,EAAE2H,EAAE3H,EAAEqH,EAAErH,IAAIzf,EAAEA,IAAI,EAAEuF,EAAE,KAAKvF,EAAEsT,EAAEmM,KAAK,OAAO,EAAEzf,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,SAASA,EAAEsT,EAAE4T,GAAG,aAAa,IAAIF,EAAEQ,EAAExnB,EAAE,mBAAmBinB,EAAEjnB,EAAE,WAAWunB,EAAEvnB,EAAE,aAAaynB,EAAEznB,EAAE,WAAWonB,EAAEpnB,EAAE,cAAcmnB,EAAE,EAAEvE,EAAE,EAAEuI,EAAE,EAAEp9B,GAAG,EAAEq9B,GAAG,EAAE1L,EAAE,EAAEna,EAAE,EAAE8lB,EAAE,EAAExV,EAAE,EAAEiR,EAAE,IAAIrH,EAAE,GAAGsH,EAAE,GAAGuE,EAAE,EAAExE,EAAE,EAAEyE,EAAE,GAAG3V,EAAE,EAAE4V,EAAE,IAAIC,EAAED,EAAE5V,EAAE,EAAE8V,EAAE,GAAGQ,EAAE,IAAIpB,EAAE,EAAEI,EAAE,EAAEF,EAAE,EAAEiB,EAAE,EAAE,SAASG,EAAEpsB,EAAEsT,GAAG,OAAOtT,EAAEq6B,IAAIjT,EAAE9T,GAAGA,CAAC,CAAC,SAASmrB,EAAEz+B,GAAG,OAAOA,GAAG,IAAI,EAAEA,EAAE,EAAE,EAAE,CAAC,SAAS0+B,EAAE1+B,GAAG,IAAI,IAAIsT,EAAEtT,EAAEvL,OAAO,KAAK6e,GAAGtT,EAAEsT,GAAG,CAAC,CAAC,SAASqrB,EAAE3+B,GAAG,IAAIsT,EAAEtT,EAAEomB,MAAMc,EAAE5T,EAAEsrB,QAAQ1X,EAAElnB,EAAEy6B,YAAYvT,EAAElnB,EAAEy6B,WAAW,IAAIvT,IAAIM,EAAEoV,SAAS58B,EAAEm7B,OAAO7nB,EAAEurB,YAAYvrB,EAAEwrB,YAAY5X,EAAElnB,EAAEq7B,UAAUr7B,EAAEq7B,UAAUnU,EAAE5T,EAAEwrB,aAAa5X,EAAElnB,EAAE++B,WAAW7X,EAAElnB,EAAEy6B,WAAWvT,EAAE5T,EAAEsrB,SAAS1X,EAAE,IAAI5T,EAAEsrB,UAAUtrB,EAAEwrB,YAAY,GAAG,CAAC,SAASE,EAAEh/B,EAAEsT,GAAG2T,EAAEgY,gBAAgBj/B,EAAE,GAAGA,EAAEk/B,YAAYl/B,EAAEk/B,aAAa,EAAEl/B,EAAEm/B,SAASn/B,EAAEk/B,YAAY5rB,GAAGtT,EAAEk/B,YAAYl/B,EAAEm/B,SAASR,EAAE3+B,EAAEw6B,KAAK,CAAC,SAAS4E,EAAEp/B,EAAEsT,GAAGtT,EAAE6+B,YAAY7+B,EAAE4+B,WAAWtrB,CAAC,CAAC,SAAS+rB,EAAEr/B,EAAEsT,GAAGtT,EAAE6+B,YAAY7+B,EAAE4+B,WAAWtrB,IAAI,EAAE,IAAItT,EAAE6+B,YAAY7+B,EAAE4+B,WAAW,IAAItrB,CAAC,CAAC,SAASgsB,EAAEt/B,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEvF,EAAEu/B,iBAAiBzY,EAAE9mB,EAAEm/B,SAAS1f,EAAEzf,EAAEw/B,YAAYzY,EAAE/mB,EAAEy/B,WAAWzY,EAAEhnB,EAAEm/B,SAASn/B,EAAE0/B,OAAOjU,EAAEzrB,EAAEm/B,UAAUn/B,EAAE0/B,OAAOjU,GAAG,EAAExE,EAAEjnB,EAAErQ,OAAOw3B,EAAEnnB,EAAE2/B,OAAO/c,EAAE5iB,EAAE4/B,KAAKpY,EAAExnB,EAAEm/B,SAAS3T,EAAEjE,EAAEN,EAAEH,EAAErH,EAAE,GAAGgI,EAAER,EAAEH,EAAErH,GAAGzf,EAAEw/B,aAAax/B,EAAE6/B,aAAat6B,IAAI,GAAGwhB,EAAE/mB,EAAE8/B,YAAY/Y,EAAE/mB,EAAE8/B,WAAW,GAAG,GAAG7Y,GAAGC,EAAE5T,GAAGmM,KAAKgI,GAAGR,EAAEC,EAAEzH,EAAE,KAAK8H,GAAGN,EAAEC,KAAKD,EAAEH,IAAIG,IAAIC,KAAKD,EAAEH,EAAE,GAAG,CAACA,GAAG,EAAEI,IAAI,UAAUD,IAAIH,KAAKG,IAAIC,IAAID,IAAIH,KAAKG,IAAIC,IAAID,IAAIH,KAAKG,IAAIC,IAAID,IAAIH,KAAKG,IAAIC,IAAID,IAAIH,KAAKG,IAAIC,IAAID,IAAIH,KAAKG,IAAIC,IAAID,IAAIH,KAAKG,IAAIC,IAAID,IAAIH,KAAKG,IAAIC,IAAIJ,EAAEU,GAAG,GAAGJ,EAAEoE,GAAGhE,EAAEV,GAAGA,EAAEU,EAAEgE,EAAE/L,EAAE2H,EAAE,CAAC,GAAGpnB,EAAE+/B,YAAYzsB,EAAEyT,IAAItH,EAAE2H,GAAG,MAAMG,EAAEN,EAAEH,EAAErH,EAAE,GAAGgI,EAAER,EAAEH,EAAErH,EAAE,CAAC,SAASnM,EAAEsP,EAAEtP,EAAE6T,IAAIH,GAAG,KAAKzhB,GAAG,OAAOka,GAAGzf,EAAE8/B,UAAUrgB,EAAEzf,EAAE8/B,SAAS,CAAC,SAASE,EAAEhgC,GAAG,IAAIsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,EAAEC,EAAEC,EAAEE,EAAEvE,EAAE5iB,EAAE0/B,OAAO,EAAE,CAAC,GAAGn6B,EAAEvF,EAAEigC,YAAYjgC,EAAE8/B,UAAU9/B,EAAEm/B,SAASn/B,EAAEm/B,UAAUvc,GAAGA,EAAE6I,GAAG,CAAC,IAAIjE,EAAEoV,SAAS58B,EAAErQ,OAAOqQ,EAAErQ,OAAOizB,EAAEA,EAAE,GAAG5iB,EAAE+/B,aAAand,EAAE5iB,EAAEm/B,UAAUvc,EAAE5iB,EAAEk/B,aAAatc,EAAEtP,EAAE4T,EAAElnB,EAAEkgC,UAAU9Y,EAAEpnB,EAAEmgC,OAAO7sB,GAAGtT,EAAEmgC,KAAK7sB,GAAGsP,GAAGwE,EAAEA,EAAExE,EAAE,IAAIsE,IAAI,IAAI5T,EAAE4T,EAAEtE,EAAEwE,EAAEpnB,EAAE4/B,OAAOtsB,GAAGtT,EAAE4/B,KAAKtsB,GAAGsP,GAAGwE,EAAEA,EAAExE,EAAE,IAAIsE,IAAI3hB,GAAGqd,CAAC,CAAC,GAAG,IAAI5iB,EAAEw6B,KAAKU,SAAS,MAAM,GAAGzb,EAAEzf,EAAEw6B,KAAKzT,EAAE/mB,EAAErQ,OAAOq3B,EAAEhnB,EAAEm/B,SAASn/B,EAAE8/B,UAAU7Y,EAAE1hB,EAAE4hB,OAAE,EAAOA,EAAE1H,EAAEyb,SAASjU,EAAEE,IAAIA,EAAEF,GAAGC,EAAE,IAAIC,EAAE,GAAG1H,EAAEyb,UAAU/T,EAAEK,EAAEoV,SAAS7V,EAAEtH,EAAEnf,MAAMmf,EAAEwb,QAAQ9T,EAAEH,GAAG,IAAIvH,EAAE2G,MAAMga,KAAK3gB,EAAE4gB,MAAM9Y,EAAE9H,EAAE4gB,MAAMtZ,EAAEI,EAAEH,GAAG,IAAIvH,EAAE2G,MAAMga,OAAO3gB,EAAE4gB,MAAM5Y,EAAEhI,EAAE4gB,MAAMtZ,EAAEI,EAAEH,IAAIvH,EAAEwb,SAAS9T,EAAE1H,EAAE6gB,UAAUnZ,EAAEA,GAAGnnB,EAAE8/B,WAAW5Y,EAAElnB,EAAE8/B,UAAU9/B,EAAEugC,QAAQ3qB,EAAE,IAAIkR,EAAE9mB,EAAEm/B,SAASn/B,EAAEugC,OAAOvgC,EAAEwgC,MAAMxgC,EAAErQ,OAAOm3B,GAAG9mB,EAAEwgC,OAAOxgC,EAAEwgC,OAAOxgC,EAAEygC,WAAWzgC,EAAErQ,OAAOm3B,EAAE,IAAI9mB,EAAE0gC,UAAU1gC,EAAEugC,SAASvgC,EAAEwgC,OAAOxgC,EAAEwgC,OAAOxgC,EAAEygC,WAAWzgC,EAAErQ,OAAOm3B,EAAElR,EAAE,IAAI5V,EAAE0gC,UAAU1gC,EAAE4/B,KAAK9Y,EAAE9mB,EAAE2/B,QAAQ3/B,EAAEmgC,KAAKngC,EAAEwgC,OAAOxgC,EAAEmgC,KAAKngC,EAAEwgC,OAAO1Z,EAAEA,IAAI9mB,EAAEugC,WAAWvgC,EAAE8/B,UAAU9/B,EAAEugC,OAAO3qB,MAAM,OAAO5V,EAAE8/B,UAAUrU,GAAG,IAAIzrB,EAAEw6B,KAAKU,SAAS,CAAC,SAASyF,EAAE3gC,EAAEsT,GAAG,IAAI,IAAI4T,EAAEE,IAAI,CAAC,GAAGpnB,EAAE8/B,UAAUrU,EAAE,CAAC,GAAGuU,EAAEhgC,GAAGA,EAAE8/B,UAAUrU,GAAGnY,IAAI6T,EAAE,OAAO2D,EAAE,GAAG,IAAI9qB,EAAE8/B,UAAU,KAAK,CAAC,GAAG5Y,EAAE,EAAElnB,EAAE8/B,WAAWlqB,IAAI5V,EAAEwgC,OAAOxgC,EAAEwgC,OAAOxgC,EAAEygC,WAAWzgC,EAAErQ,OAAOqQ,EAAEm/B,SAASvpB,EAAE,IAAI5V,EAAE0gC,UAAUxZ,EAAElnB,EAAE4/B,KAAK5/B,EAAEm/B,SAASn/B,EAAE2/B,QAAQ3/B,EAAEmgC,KAAKngC,EAAEwgC,OAAOxgC,EAAEmgC,KAAKngC,EAAEwgC,OAAOxgC,EAAEm/B,UAAU,IAAIjY,GAAGlnB,EAAEm/B,SAASjY,GAAGlnB,EAAE0/B,OAAOjU,IAAIzrB,EAAE4gC,aAAatB,EAAEt/B,EAAEknB,IAAIlnB,EAAE4gC,cAAchrB,EAAE,GAAGwR,EAAEH,EAAE4Z,UAAU7gC,EAAEA,EAAEm/B,SAASn/B,EAAE+/B,YAAY//B,EAAE4gC,aAAahrB,GAAG5V,EAAE8/B,WAAW9/B,EAAE4gC,aAAa5gC,EAAE4gC,cAAc5gC,EAAE8gC,gBAAgB9gC,EAAE8/B,WAAWlqB,EAAE,CAAC,IAAI5V,EAAE4gC,eAAe5gC,EAAEm/B,WAAWn/B,EAAEwgC,OAAOxgC,EAAEwgC,OAAOxgC,EAAEygC,WAAWzgC,EAAErQ,OAAOqQ,EAAEm/B,SAASvpB,EAAE,IAAI5V,EAAE0gC,UAAUxZ,EAAElnB,EAAE4/B,KAAK5/B,EAAEm/B,SAASn/B,EAAE2/B,QAAQ3/B,EAAEmgC,KAAKngC,EAAEwgC,OAAOxgC,EAAEmgC,KAAKngC,EAAEwgC,OAAOxgC,EAAEm/B,SAAS,KAAKn/B,EAAE4gC,eAAe5gC,EAAEm/B,UAAU,MAAMn/B,EAAEm/B,UAAUn/B,EAAE4gC,aAAa5gC,EAAE4gC,aAAa,EAAE5gC,EAAEwgC,MAAMxgC,EAAErQ,OAAOqQ,EAAEm/B,UAAUn/B,EAAEwgC,OAAOxgC,EAAEwgC,OAAOxgC,EAAEygC,WAAWzgC,EAAErQ,OAAOqQ,EAAEm/B,SAAS,IAAIn/B,EAAE0gC,eAAetZ,EAAEH,EAAE4Z,UAAU7gC,EAAE,EAAEA,EAAErQ,OAAOqQ,EAAEm/B,WAAWn/B,EAAE8/B,YAAY9/B,EAAEm/B,WAAW,GAAG/X,IAAI4X,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW,OAAO3P,CAAC,CAAC,OAAO9qB,EAAEugC,OAAOvgC,EAAEm/B,SAASvpB,EAAE,EAAE5V,EAAEm/B,SAASvpB,EAAE,EAAEtC,IAAIsP,GAAGoc,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,UAAUzP,EAAEiB,GAAGjsB,EAAE+gC,WAAW/B,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW3P,EAAEI,CAAC,CAAC,SAAS8V,EAAEhhC,EAAEsT,GAAG,IAAI,IAAI4T,EAAEE,EAAE7hB,IAAI,CAAC,GAAGvF,EAAE8/B,UAAUrU,EAAE,CAAC,GAAGuU,EAAEhgC,GAAGA,EAAE8/B,UAAUrU,GAAGnY,IAAI6T,EAAE,OAAO2D,EAAE,GAAG,IAAI9qB,EAAE8/B,UAAU,KAAK,CAAC,GAAG5Y,EAAE,EAAElnB,EAAE8/B,WAAWlqB,IAAI5V,EAAEwgC,OAAOxgC,EAAEwgC,OAAOxgC,EAAEygC,WAAWzgC,EAAErQ,OAAOqQ,EAAEm/B,SAASvpB,EAAE,IAAI5V,EAAE0gC,UAAUxZ,EAAElnB,EAAE4/B,KAAK5/B,EAAEm/B,SAASn/B,EAAE2/B,QAAQ3/B,EAAEmgC,KAAKngC,EAAEwgC,OAAOxgC,EAAEmgC,KAAKngC,EAAEwgC,OAAOxgC,EAAEm/B,UAAUn/B,EAAEw/B,YAAYx/B,EAAE4gC,aAAa5gC,EAAEihC,WAAWjhC,EAAE+/B,YAAY//B,EAAE4gC,aAAahrB,EAAE,EAAE,IAAIsR,GAAGlnB,EAAEw/B,YAAYx/B,EAAE8gC,gBAAgB9gC,EAAEm/B,SAASjY,GAAGlnB,EAAE0/B,OAAOjU,IAAIzrB,EAAE4gC,aAAatB,EAAEt/B,EAAEknB,GAAGlnB,EAAE4gC,cAAc,IAAI,IAAI5gC,EAAEm6B,UAAUn6B,EAAE4gC,eAAehrB,GAAG,KAAK5V,EAAEm/B,SAASn/B,EAAE+/B,eAAe//B,EAAE4gC,aAAahrB,EAAE,IAAI5V,EAAEw/B,aAAa5pB,GAAG5V,EAAE4gC,cAAc5gC,EAAEw/B,YAAY,CAAC,IAAIj6B,EAAEvF,EAAEm/B,SAASn/B,EAAE8/B,UAAUlqB,EAAEwR,EAAEH,EAAE4Z,UAAU7gC,EAAEA,EAAEm/B,SAAS,EAAEn/B,EAAEihC,WAAWjhC,EAAEw/B,YAAY5pB,GAAG5V,EAAE8/B,WAAW9/B,EAAEw/B,YAAY,EAAEx/B,EAAEw/B,aAAa,IAAIx/B,EAAEm/B,UAAU55B,IAAIvF,EAAEwgC,OAAOxgC,EAAEwgC,OAAOxgC,EAAEygC,WAAWzgC,EAAErQ,OAAOqQ,EAAEm/B,SAASvpB,EAAE,IAAI5V,EAAE0gC,UAAUxZ,EAAElnB,EAAE4/B,KAAK5/B,EAAEm/B,SAASn/B,EAAE2/B,QAAQ3/B,EAAEmgC,KAAKngC,EAAEwgC,OAAOxgC,EAAEmgC,KAAKngC,EAAEwgC,OAAOxgC,EAAEm/B,UAAU,KAAKn/B,EAAEw/B,cAAc,GAAGx/B,EAAEkhC,gBAAgB,EAAElhC,EAAE4gC,aAAahrB,EAAE,EAAE5V,EAAEm/B,WAAW/X,IAAI4X,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW,OAAO3P,CAAC,MAAM,GAAG9qB,EAAEkhC,iBAAiB,IAAI9Z,EAAEH,EAAE4Z,UAAU7gC,EAAE,EAAEA,EAAErQ,OAAOqQ,EAAEm/B,SAAS,MAAMH,EAAEh/B,GAAE,GAAIA,EAAEm/B,WAAWn/B,EAAE8/B,YAAY,IAAI9/B,EAAEw6B,KAAKC,UAAU,OAAO3P,OAAO9qB,EAAEkhC,gBAAgB,EAAElhC,EAAEm/B,WAAWn/B,EAAE8/B,WAAW,CAAC,OAAO9/B,EAAEkhC,kBAAkB9Z,EAAEH,EAAE4Z,UAAU7gC,EAAE,EAAEA,EAAErQ,OAAOqQ,EAAEm/B,SAAS,IAAIn/B,EAAEkhC,gBAAgB,GAAGlhC,EAAEugC,OAAOvgC,EAAEm/B,SAASvpB,EAAE,EAAE5V,EAAEm/B,SAASvpB,EAAE,EAAEtC,IAAIsP,GAAGoc,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,UAAUzP,EAAEiB,GAAGjsB,EAAE+gC,WAAW/B,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW3P,EAAEI,CAAC,CAAC,SAASiW,EAAEnhC,EAAEsT,EAAE4T,EAAEE,EAAE7hB,GAAGzV,KAAKsxC,YAAYphC,EAAElQ,KAAKuxC,SAAS/tB,EAAExjB,KAAKwxC,YAAYpa,EAAEp3B,KAAKyxC,UAAUna,EAAEt3B,KAAK0xC,KAAKj8B,CAAC,CAAC,SAASk8B,IAAI3xC,KAAK0qC,KAAK,KAAK1qC,KAAKqB,OAAO,EAAErB,KAAK+uC,YAAY,KAAK/uC,KAAK4xC,iBAAiB,EAAE5xC,KAAKgvC,YAAY,EAAEhvC,KAAK8uC,QAAQ,EAAE9uC,KAAKswC,KAAK,EAAEtwC,KAAK6xC,OAAO,KAAK7xC,KAAK8xC,QAAQ,EAAE9xC,KAAKmB,OAAOo6B,EAAEv7B,KAAK+xC,YAAY,EAAE/xC,KAAK4vC,OAAO,EAAE5vC,KAAKgyC,OAAO,EAAEhyC,KAAK6vC,OAAO,EAAE7vC,KAAKH,OAAO,KAAKG,KAAKmwC,YAAY,EAAEnwC,KAAK8vC,KAAK,KAAK9vC,KAAKqwC,KAAK,KAAKrwC,KAAK0wC,MAAM,EAAE1wC,KAAKowC,UAAU,EAAEpwC,KAAKiyC,UAAU,EAAEjyC,KAAK4wC,UAAU,EAAE5wC,KAAK2wC,WAAW,EAAE3wC,KAAKovC,YAAY,EAAEpvC,KAAK8wC,aAAa,EAAE9wC,KAAKmxC,WAAW,EAAEnxC,KAAKoxC,gBAAgB,EAAEpxC,KAAKqvC,SAAS,EAAErvC,KAAKiwC,YAAY,EAAEjwC,KAAKgwC,UAAU,EAAEhwC,KAAK0vC,YAAY,EAAE1vC,KAAKyvC,iBAAiB,EAAEzvC,KAAKgxC,eAAe,EAAEhxC,KAAK66B,MAAM,EAAE76B,KAAKqqC,SAAS,EAAErqC,KAAK+vC,WAAW,EAAE/vC,KAAK2vC,WAAW,EAAE3vC,KAAKkyC,UAAU,IAAIxa,EAAE2V,MAAM,EAAE7R,GAAGx7B,KAAKmyC,UAAU,IAAIza,EAAE2V,MAAM,GAAG,EAAE1d,EAAE,IAAI3vB,KAAKoyC,QAAQ,IAAI1a,EAAE2V,MAAM,GAAG,EAAEpW,EAAE,IAAI2X,EAAE5uC,KAAKkyC,WAAWtD,EAAE5uC,KAAKmyC,WAAWvD,EAAE5uC,KAAKoyC,SAASpyC,KAAKqyC,OAAO,KAAKryC,KAAKsyC,OAAO,KAAKtyC,KAAKuyC,QAAQ,KAAKvyC,KAAKwyC,SAAS,IAAI9a,EAAE2V,MAAM5R,EAAE,GAAGz7B,KAAKyyC,KAAK,IAAI/a,EAAE2V,MAAM,EAAErW,EAAE,GAAG4X,EAAE5uC,KAAKyyC,MAAMzyC,KAAK0yC,SAAS,EAAE1yC,KAAK2yC,SAAS,EAAE3yC,KAAK4yC,MAAM,IAAIlb,EAAE2V,MAAM,EAAErW,EAAE,GAAG4X,EAAE5uC,KAAK4yC,OAAO5yC,KAAK6yC,MAAM,EAAE7yC,KAAK8yC,YAAY,EAAE9yC,KAAKixC,SAAS,EAAEjxC,KAAK+yC,MAAM,EAAE/yC,KAAKgzC,QAAQ,EAAEhzC,KAAKizC,WAAW,EAAEjzC,KAAKkzC,QAAQ,EAAElzC,KAAKywC,OAAO,EAAEzwC,KAAKmzC,OAAO,EAAEnzC,KAAKozC,SAAS,CAAC,CAAC,SAASC,EAAEnjC,GAAG,IAAIsT,EAAE,OAAOtT,GAAGA,EAAEomB,OAAOpmB,EAAEsgC,SAAStgC,EAAE++B,UAAU,EAAE/+B,EAAEojC,UAAU79B,GAAG+N,EAAEtT,EAAEomB,OAAOwY,QAAQ,EAAEtrB,EAAEwrB,YAAY,EAAExrB,EAAE8sB,KAAK,IAAI9sB,EAAE8sB,MAAM9sB,EAAE8sB,MAAM9sB,EAAEniB,OAAOmiB,EAAE8sB,KAAK1U,EAAEQ,EAAElsB,EAAEqgC,MAAM,IAAI/sB,EAAE8sB,KAAK,EAAE,EAAE9sB,EAAEuuB,WAAW1a,EAAEF,EAAEoc,SAAS/vB,GAAG6X,GAAGiB,EAAEpsB,EAAEjS,EAAE,CAAC,SAASu1C,EAAEtjC,GAAG,IAAIsT,EAAE6vB,EAAEnjC,GAAG,OAAOsT,IAAI6X,GAAG,SAASnrB,GAAGA,EAAEigC,YAAY,EAAEjgC,EAAE0/B,OAAOhB,EAAE1+B,EAAEmgC,MAAMngC,EAAE8gC,eAAe9Z,EAAEhnB,EAAE2qB,OAAO0W,SAASrhC,EAAE6/B,WAAW7Y,EAAEhnB,EAAE2qB,OAAOyW,YAAYphC,EAAEy/B,WAAWzY,EAAEhnB,EAAE2qB,OAAO2W,YAAYthC,EAAEu/B,iBAAiBvY,EAAEhnB,EAAE2qB,OAAO4W,UAAUvhC,EAAEm/B,SAAS,EAAEn/B,EAAEk/B,YAAY,EAAEl/B,EAAE8/B,UAAU,EAAE9/B,EAAEugC,OAAO,EAAEvgC,EAAE4gC,aAAa5gC,EAAEw/B,YAAY5pB,EAAE,EAAE5V,EAAEkhC,gBAAgB,EAAElhC,EAAEwgC,MAAM,CAAC,CAAxT,CAA0TxgC,EAAEomB,OAAO9S,CAAC,CAAC,SAASiwB,EAAEvjC,EAAEsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,GAAG,IAAI9mB,EAAE,OAAOjS,EAAE,IAAI0xB,EAAE,EAAE,GAAGnM,IAAI8X,IAAI9X,EAAE,GAAG8T,EAAE,GAAG3H,EAAE,EAAE2H,GAAGA,GAAG,GAAGA,IAAI3H,EAAE,EAAE2H,GAAG,IAAI7hB,EAAE,GAAGsQ,EAAEtQ,GAAG2hB,IAAImE,GAAGjE,EAAE,GAAG,GAAGA,GAAG9T,EAAE,GAAG,EAAEA,GAAGwT,EAAE,GAAGpH,EAAEoH,EAAE,OAAOsF,EAAEpsB,EAAEjS,GAAG,IAAIq5B,IAAIA,EAAE,GAAG,IAAIL,EAAE,IAAI0a,EAAE,OAAOzhC,EAAEomB,MAAMW,GAAGyT,KAAKx6B,EAAE+mB,EAAEqZ,KAAK3gB,EAAEsH,EAAE4a,OAAO,KAAK5a,EAAE+a,OAAO1a,EAAEL,EAAE2Y,OAAO,GAAG3Y,EAAE+a,OAAO/a,EAAE4Y,OAAO5Y,EAAE2Y,OAAO,EAAE3Y,EAAEgb,UAAUx8B,EAAE,EAAEwhB,EAAEmZ,UAAU,GAAGnZ,EAAEgb,UAAUhb,EAAE2Z,UAAU3Z,EAAEmZ,UAAU,EAAEnZ,EAAE0Z,eAAe1Z,EAAEgb,UAAUnsB,EAAE,GAAGA,GAAGmR,EAAEp3B,OAAO,IAAI63B,EAAE4T,KAAK,EAAErU,EAAE2Y,QAAQ3Y,EAAEoZ,KAAK,IAAI3Y,EAAE2V,MAAMpW,EAAEmZ,WAAWnZ,EAAE6Y,KAAK,IAAIpY,EAAE2V,MAAMpW,EAAE2Y,QAAQ3Y,EAAE6b,YAAY,GAAGr9B,EAAE,EAAEwhB,EAAE2a,iBAAiB,EAAE3a,EAAE6b,YAAY7b,EAAE8X,YAAY,IAAIrX,EAAE4T,KAAKrU,EAAE2a,kBAAkB3a,EAAE8b,MAAM,EAAE9b,EAAE6b,YAAY7b,EAAE4b,MAAM,EAAE5b,EAAE6b,YAAY7b,EAAE4D,MAAMrX,EAAEyT,EAAEoT,SAASrT,EAAEC,EAAE91B,OAAOi2B,EAAEoc,EAAEtjC,EAAE,CAACgnB,EAAE,CAAC,IAAIma,EAAE,EAAE,EAAE,EAAE,EAAE,SAASnhC,EAAEsT,GAAG,IAAI4T,EAAE,MAAM,IAAIA,EAAElnB,EAAE0hC,iBAAiB,IAAIxa,EAAElnB,EAAE0hC,iBAAiB,KAAK,CAAC,GAAG1hC,EAAE8/B,WAAW,EAAE,CAAC,GAAGE,EAAEhgC,GAAG,IAAIA,EAAE8/B,WAAWxsB,IAAI6T,EAAE,OAAO2D,EAAE,GAAG,IAAI9qB,EAAE8/B,UAAU,KAAK,CAAC9/B,EAAEm/B,UAAUn/B,EAAE8/B,UAAU9/B,EAAE8/B,UAAU,EAAE,IAAI1Y,EAAEpnB,EAAEk/B,YAAYhY,EAAE,IAAI,IAAIlnB,EAAEm/B,UAAUn/B,EAAEm/B,UAAU/X,KAAKpnB,EAAE8/B,UAAU9/B,EAAEm/B,SAAS/X,EAAEpnB,EAAEm/B,SAAS/X,EAAE4X,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW,OAAO3P,EAAE,GAAG9qB,EAAEm/B,SAASn/B,EAAEk/B,aAAal/B,EAAE0/B,OAAOjU,IAAIuT,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW,OAAO3P,CAAC,CAAC,OAAO9qB,EAAEugC,OAAO,EAAEjtB,IAAIsP,GAAGoc,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,UAAUzP,EAAEiB,IAAIjsB,EAAEm/B,SAASn/B,EAAEk/B,cAAcF,EAAEh/B,GAAE,GAAIA,EAAEw6B,KAAKC,WAAW3P,EAAE,GAAG,IAAIqW,EAAE,EAAE,EAAE,EAAE,EAAER,GAAG,IAAIQ,EAAE,EAAE,EAAE,GAAG,EAAER,GAAG,IAAIQ,EAAE,EAAE,EAAE,GAAG,GAAGR,GAAG,IAAIQ,EAAE,EAAE,EAAE,GAAG,GAAGH,GAAG,IAAIG,EAAE,EAAE,GAAG,GAAG,GAAGH,GAAG,IAAIG,EAAE,EAAE,GAAG,IAAI,IAAIH,GAAG,IAAIG,EAAE,EAAE,GAAG,IAAI,IAAIH,GAAG,IAAIG,EAAE,GAAG,IAAI,IAAI,KAAKH,GAAG,IAAIG,EAAE,GAAG,IAAI,IAAI,KAAKH,IAAI9Z,EAAEsc,YAAY,SAASxjC,EAAEsT,GAAG,OAAOiwB,EAAEvjC,EAAEsT,EAAE+X,EAAE,GAAG,EAAE,EAAE,EAAEnE,EAAEwT,aAAa6I,EAAErc,EAAEuc,aAAaH,EAAEpc,EAAEwc,iBAAiBP,EAAEjc,EAAE0T,iBAAiB,SAAS56B,EAAEsT,GAAG,OAAOtT,GAAGA,EAAEomB,MAAM,IAAIpmB,EAAEomB,MAAMga,KAAKryC,GAAGiS,EAAEomB,MAAMub,OAAOruB,EAAE6X,GAAGp9B,CAAC,EAAEm5B,EAAEoU,QAAQ,SAASt7B,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEuhB,EAAE,IAAI9mB,IAAIA,EAAEomB,OAAO,EAAE9S,GAAGA,EAAE,EAAE,OAAOtT,EAAEosB,EAAEpsB,EAAEjS,GAAGA,EAAE,GAAGq5B,EAAEpnB,EAAEomB,OAAOpmB,EAAEm7B,SAASn7B,EAAEM,OAAO,IAAIN,EAAEk7B,UAAU,MAAM9T,EAAEj2B,QAAQmiB,IAAIsP,EAAE,OAAOwJ,EAAEpsB,EAAE,IAAIA,EAAEy6B,WAAW,EAAE1sC,GAAG,GAAGq5B,EAAEoT,KAAKx6B,EAAEknB,EAAEE,EAAEya,WAAWza,EAAEya,WAAWvuB,EAAE8T,EAAEj2B,SAASu6B,EAAE,GAAG,IAAItE,EAAEgZ,KAAKpgC,EAAEqgC,MAAM,EAAEjB,EAAEhY,EAAE,IAAIgY,EAAEhY,EAAE,KAAKgY,EAAEhY,EAAE,GAAGA,EAAEua,QAAQvC,EAAEhY,GAAGA,EAAEua,OAAOruC,KAAK,EAAE,IAAI8zB,EAAEua,OAAOgC,KAAK,EAAE,IAAIvc,EAAEua,OAAOiC,MAAM,EAAE,IAAIxc,EAAEua,OAAOhzC,KAAK,EAAE,IAAIy4B,EAAEua,OAAOjY,QAAQ,GAAG,IAAI0V,EAAEhY,EAAE,IAAIA,EAAEua,OAAOkC,MAAMzE,EAAEhY,EAAEA,EAAEua,OAAOkC,MAAM,EAAE,KAAKzE,EAAEhY,EAAEA,EAAEua,OAAOkC,MAAM,GAAG,KAAKzE,EAAEhY,EAAEA,EAAEua,OAAOkC,MAAM,GAAG,KAAKzE,EAAEhY,EAAE,IAAIA,EAAEuD,MAAM,EAAE,GAAGvD,EAAE+S,UAAU/S,EAAEuD,MAAM,EAAE,EAAE,GAAGyU,EAAEhY,EAAE,IAAIA,EAAEua,OAAOmC,IAAI1c,EAAEua,OAAOiC,OAAOxc,EAAEua,OAAOiC,MAAMnvC,SAAS2qC,EAAEhY,EAAE,IAAIA,EAAEua,OAAOiC,MAAMnvC,QAAQ2qC,EAAEhY,EAAEA,EAAEua,OAAOiC,MAAMnvC,QAAQ,EAAE,MAAM2yB,EAAEua,OAAOgC,OAAO3jC,EAAEqgC,MAAM5Y,EAAEznB,EAAEqgC,MAAMjZ,EAAEyX,YAAYzX,EAAEwX,QAAQ,IAAIxX,EAAEwa,QAAQ,EAAExa,EAAEj2B,OAAO,KAAKiuC,EAAEhY,EAAE,GAAGgY,EAAEhY,EAAE,GAAGgY,EAAEhY,EAAE,GAAGgY,EAAEhY,EAAE,GAAGgY,EAAEhY,EAAE,GAAGgY,EAAEhY,EAAE,IAAIA,EAAEuD,MAAM,EAAE,GAAGvD,EAAE+S,UAAU/S,EAAEuD,MAAM,EAAE,EAAE,GAAGyU,EAAEhY,EAAE,GAAGA,EAAEj2B,OAAO+6B,OAAO,CAAC,IAAIzM,EAAE4L,GAAGjE,EAAE0a,OAAO,GAAG,IAAI,EAAEriB,IAAI,GAAG2H,EAAE+S,UAAU/S,EAAEuD,MAAM,EAAE,EAAEvD,EAAEuD,MAAM,EAAE,EAAE,IAAIvD,EAAEuD,MAAM,EAAE,IAAI,EAAE,IAAIvD,EAAE+X,WAAW1f,GAAG,IAAIA,GAAG,GAAGA,EAAE,GAAG2H,EAAEj2B,OAAO+6B,EAAEmT,EAAEjY,EAAE3H,GAAG,IAAI2H,EAAE+X,WAAWE,EAAEjY,EAAEpnB,EAAEqgC,QAAQ,IAAIhB,EAAEjY,EAAE,MAAMpnB,EAAEqgC,QAAQrgC,EAAEqgC,MAAM,CAAC,CAAC,GAAG,KAAKjZ,EAAEj2B,OAAO,GAAGi2B,EAAEua,OAAOiC,MAAM,CAAC,IAAIr+B,EAAE6hB,EAAEwX,QAAQxX,EAAEwa,SAAS,MAAMxa,EAAEua,OAAOiC,MAAMnvC,UAAU2yB,EAAEwX,UAAUxX,EAAEsa,mBAAmBta,EAAEua,OAAOgC,MAAMvc,EAAEwX,QAAQr5B,IAAIvF,EAAEqgC,MAAM5Y,EAAEznB,EAAEqgC,MAAMjZ,EAAEyX,YAAYzX,EAAEwX,QAAQr5B,EAAEA,IAAIo5B,EAAE3+B,GAAGuF,EAAE6hB,EAAEwX,QAAQxX,EAAEwX,UAAUxX,EAAEsa,oBAAoBtC,EAAEhY,EAAE,IAAIA,EAAEua,OAAOiC,MAAMxc,EAAEwa,UAAUxa,EAAEwa,UAAUxa,EAAEua,OAAOgC,MAAMvc,EAAEwX,QAAQr5B,IAAIvF,EAAEqgC,MAAM5Y,EAAEznB,EAAEqgC,MAAMjZ,EAAEyX,YAAYzX,EAAEwX,QAAQr5B,EAAEA,IAAI6hB,EAAEwa,UAAUxa,EAAEua,OAAOiC,MAAMnvC,SAAS2yB,EAAEwa,QAAQ,EAAExa,EAAEj2B,OAAO,GAAG,MAAMi2B,EAAEj2B,OAAO,GAAG,GAAG,KAAKi2B,EAAEj2B,OAAO,GAAGi2B,EAAEua,OAAOhzC,KAAK,CAAC4W,EAAE6hB,EAAEwX,QAAQ,EAAE,CAAC,GAAGxX,EAAEwX,UAAUxX,EAAEsa,mBAAmBta,EAAEua,OAAOgC,MAAMvc,EAAEwX,QAAQr5B,IAAIvF,EAAEqgC,MAAM5Y,EAAEznB,EAAEqgC,MAAMjZ,EAAEyX,YAAYzX,EAAEwX,QAAQr5B,EAAEA,IAAIo5B,EAAE3+B,GAAGuF,EAAE6hB,EAAEwX,QAAQxX,EAAEwX,UAAUxX,EAAEsa,kBAAkB,CAAC5a,EAAE,EAAE,KAAK,CAACA,EAAEM,EAAEwa,QAAQxa,EAAEua,OAAOhzC,KAAK8F,OAAO,IAAI2yB,EAAEua,OAAOhzC,KAAKi5B,WAAWR,EAAEwa,WAAW,EAAExC,EAAEhY,EAAEN,EAAE,OAAO,IAAIA,GAAGM,EAAEua,OAAOgC,MAAMvc,EAAEwX,QAAQr5B,IAAIvF,EAAEqgC,MAAM5Y,EAAEznB,EAAEqgC,MAAMjZ,EAAEyX,YAAYzX,EAAEwX,QAAQr5B,EAAEA,IAAI,IAAIuhB,IAAIM,EAAEwa,QAAQ,EAAExa,EAAEj2B,OAAO,GAAG,MAAMi2B,EAAEj2B,OAAO,GAAG,GAAG,KAAKi2B,EAAEj2B,OAAO,GAAGi2B,EAAEua,OAAOjY,QAAQ,CAACnkB,EAAE6hB,EAAEwX,QAAQ,EAAE,CAAC,GAAGxX,EAAEwX,UAAUxX,EAAEsa,mBAAmBta,EAAEua,OAAOgC,MAAMvc,EAAEwX,QAAQr5B,IAAIvF,EAAEqgC,MAAM5Y,EAAEznB,EAAEqgC,MAAMjZ,EAAEyX,YAAYzX,EAAEwX,QAAQr5B,EAAEA,IAAIo5B,EAAE3+B,GAAGuF,EAAE6hB,EAAEwX,QAAQxX,EAAEwX,UAAUxX,EAAEsa,kBAAkB,CAAC5a,EAAE,EAAE,KAAK,CAACA,EAAEM,EAAEwa,QAAQxa,EAAEua,OAAOjY,QAAQj1B,OAAO,IAAI2yB,EAAEua,OAAOjY,QAAQ9B,WAAWR,EAAEwa,WAAW,EAAExC,EAAEhY,EAAEN,EAAE,OAAO,IAAIA,GAAGM,EAAEua,OAAOgC,MAAMvc,EAAEwX,QAAQr5B,IAAIvF,EAAEqgC,MAAM5Y,EAAEznB,EAAEqgC,MAAMjZ,EAAEyX,YAAYzX,EAAEwX,QAAQr5B,EAAEA,IAAI,IAAIuhB,IAAIM,EAAEj2B,OAAO,IAAI,MAAMi2B,EAAEj2B,OAAO,IAAI,GAAG,MAAMi2B,EAAEj2B,SAASi2B,EAAEua,OAAOgC,MAAMvc,EAAEwX,QAAQ,EAAExX,EAAEsa,kBAAkB/C,EAAE3+B,GAAGonB,EAAEwX,QAAQ,GAAGxX,EAAEsa,mBAAmBtC,EAAEhY,EAAE,IAAIpnB,EAAEqgC,OAAOjB,EAAEhY,EAAEpnB,EAAEqgC,OAAO,EAAE,KAAKrgC,EAAEqgC,MAAM,EAAEjZ,EAAEj2B,OAAO+6B,IAAI9E,EAAEj2B,OAAO+6B,GAAG,IAAI9E,EAAEwX,SAAS,GAAGD,EAAE3+B,GAAG,IAAIA,EAAEy6B,UAAU,OAAOrT,EAAEya,YAAY,EAAE1W,OAAO,GAAG,IAAInrB,EAAEk7B,UAAUuD,EAAEnrB,IAAImrB,EAAEvX,IAAI5T,IAAIsP,EAAE,OAAOwJ,EAAEpsB,GAAG,GAAG,GAAG,MAAMonB,EAAEj2B,QAAQ,IAAI6O,EAAEk7B,SAAS,OAAO9O,EAAEpsB,GAAG,GAAG,GAAG,IAAIA,EAAEk7B,UAAU,IAAI9T,EAAE0Y,WAAWxsB,IAAI6T,GAAG,MAAMC,EAAEj2B,OAAO,CAAC,IAAI41B,EAAE,IAAIK,EAAE+S,SAAS,SAASn6B,EAAEsT,GAAG,IAAI,IAAI4T,IAAI,CAAC,GAAG,IAAIlnB,EAAE8/B,YAAYE,EAAEhgC,GAAG,IAAIA,EAAE8/B,WAAW,CAAC,GAAGxsB,IAAI6T,EAAE,OAAO2D,EAAE,KAAK,CAAC,GAAG9qB,EAAE4gC,aAAa,EAAE1Z,EAAED,EAAE4Z,UAAU7gC,EAAE,EAAEA,EAAErQ,OAAOqQ,EAAEm/B,WAAWn/B,EAAE8/B,YAAY9/B,EAAEm/B,WAAWjY,IAAI8X,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW,OAAO3P,CAAC,CAAC,OAAO9qB,EAAEugC,OAAO,EAAEjtB,IAAIsP,GAAGoc,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,UAAUzP,EAAEiB,GAAGjsB,EAAE+gC,WAAW/B,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW3P,EAAEI,CAAC,CAA1U,CAA4U9D,EAAE9T,GAAG,IAAI8T,EAAE+S,SAAS,SAASn6B,EAAEsT,GAAG,IAAI,IAAI4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEzf,EAAErQ,SAAS,CAAC,GAAGqQ,EAAE8/B,WAAWtU,EAAE,CAAC,GAAGwU,EAAEhgC,GAAGA,EAAE8/B,WAAWtU,GAAGlY,IAAI6T,EAAE,OAAO2D,EAAE,GAAG,IAAI9qB,EAAE8/B,UAAU,KAAK,CAAC,GAAG9/B,EAAE4gC,aAAa,EAAE5gC,EAAE8/B,WAAWlqB,GAAG,EAAE5V,EAAEm/B,WAAW/X,EAAE3H,EAAEla,EAAEvF,EAAEm/B,SAAS,MAAM1f,IAAIla,IAAI6hB,IAAI3H,IAAIla,IAAI6hB,IAAI3H,IAAIla,GAAG,CAACuhB,EAAE9mB,EAAEm/B,SAAS3T,EAAE,UAAUpE,IAAI3H,IAAIla,IAAI6hB,IAAI3H,IAAIla,IAAI6hB,IAAI3H,IAAIla,IAAI6hB,IAAI3H,IAAIla,IAAI6hB,IAAI3H,IAAIla,IAAI6hB,IAAI3H,IAAIla,IAAI6hB,IAAI3H,IAAIla,IAAI6hB,IAAI3H,IAAIla,IAAIA,EAAEuhB,GAAG9mB,EAAE4gC,aAAapV,GAAG1E,EAAEvhB,GAAGvF,EAAE4gC,aAAa5gC,EAAE8/B,YAAY9/B,EAAE4gC,aAAa5gC,EAAE8/B,UAAU,CAAC,GAAG9/B,EAAE4gC,cAAchrB,GAAGsR,EAAED,EAAE4Z,UAAU7gC,EAAE,EAAEA,EAAE4gC,aAAahrB,GAAG5V,EAAE8/B,WAAW9/B,EAAE4gC,aAAa5gC,EAAEm/B,UAAUn/B,EAAE4gC,aAAa5gC,EAAE4gC,aAAa,IAAI1Z,EAAED,EAAE4Z,UAAU7gC,EAAE,EAAEA,EAAErQ,OAAOqQ,EAAEm/B,WAAWn/B,EAAE8/B,YAAY9/B,EAAEm/B,YAAYjY,IAAI8X,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW,OAAO3P,CAAC,CAAC,OAAO9qB,EAAEugC,OAAO,EAAEjtB,IAAIsP,GAAGoc,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,UAAUzP,EAAEiB,GAAGjsB,EAAE+gC,WAAW/B,EAAEh/B,GAAE,GAAI,IAAIA,EAAEw6B,KAAKC,WAAW3P,EAAEI,CAAC,CAAnxB,CAAqxB9D,EAAE9T,GAAG0T,EAAEI,EAAEuD,OAAO6W,KAAKpa,EAAE9T,GAAG,GAAGyT,IAAIiE,GAAGjE,IAAIkF,IAAI7E,EAAEj2B,OAAO,KAAK41B,IAAI+D,GAAG/D,IAAIiE,EAAE,OAAO,IAAIhrB,EAAEy6B,YAAYrT,EAAEya,YAAY,GAAG1W,EAAE,GAAGpE,IAAImE,IAAI,IAAI5X,EAAE2T,EAAE8c,UAAU3c,GAAG,IAAI9T,IAAI2T,EAAE+c,iBAAiB5c,EAAE,EAAE,GAAE,GAAI,IAAI9T,IAAIorB,EAAEtX,EAAE+Y,MAAM,IAAI/Y,EAAE0Y,YAAY1Y,EAAE+X,SAAS,EAAE/X,EAAE8X,YAAY,EAAE9X,EAAEmZ,OAAO,KAAK5B,EAAE3+B,GAAG,IAAIA,EAAEy6B,WAAW,OAAOrT,EAAEya,YAAY,EAAE1W,CAAC,CAAC,OAAO7X,IAAIsP,EAAEuI,EAAE/D,EAAEgZ,MAAM,EAAE,GAAG,IAAIhZ,EAAEgZ,MAAMhB,EAAEhY,EAAE,IAAIpnB,EAAEqgC,OAAOjB,EAAEhY,EAAEpnB,EAAEqgC,OAAO,EAAE,KAAKjB,EAAEhY,EAAEpnB,EAAEqgC,OAAO,GAAG,KAAKjB,EAAEhY,EAAEpnB,EAAEqgC,OAAO,GAAG,KAAKjB,EAAEhY,EAAE,IAAIpnB,EAAEsgC,UAAUlB,EAAEhY,EAAEpnB,EAAEsgC,UAAU,EAAE,KAAKlB,EAAEhY,EAAEpnB,EAAEsgC,UAAU,GAAG,KAAKlB,EAAEhY,EAAEpnB,EAAEsgC,UAAU,GAAG,OAAOjB,EAAEjY,EAAEpnB,EAAEqgC,QAAQ,IAAIhB,EAAEjY,EAAE,MAAMpnB,EAAEqgC,QAAQ1B,EAAE3+B,GAAG,EAAEonB,EAAEgZ,OAAOhZ,EAAEgZ,MAAMhZ,EAAEgZ,MAAM,IAAIhZ,EAAEwX,QAAQzT,EAAE,EAAE,EAAEjE,EAAEwU,WAAW,SAAS17B,GAAG,IAAIsT,EAAE,OAAOtT,GAAGA,EAAEomB,OAAO9S,EAAEtT,EAAEomB,MAAMj1B,UAAUu6B,GAAG,KAAKpY,GAAG,KAAKA,GAAG,KAAKA,GAAG,MAAMA,GAAGA,IAAI4Y,GAAG,MAAM5Y,EAAE8Y,EAAEpsB,EAAEjS,IAAIiS,EAAEomB,MAAM,KAAK9S,IAAI4Y,EAAEE,EAAEpsB,GAAG,GAAGmrB,GAAGp9B,CAAC,EAAEm5B,EAAE6T,qBAAqB,SAAS/6B,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,EAAEC,EAAEC,EAAEE,EAAE7T,EAAE7e,OAAO,IAAIuL,IAAIA,EAAEomB,MAAM,OAAOr4B,EAAE,GAAG,KAAK+4B,GAAGI,EAAElnB,EAAEomB,OAAOga,OAAO,IAAItZ,GAAGI,EAAE/1B,SAASu6B,GAAGxE,EAAE4Y,UAAU,OAAO/xC,EAAE,IAAI,IAAI+4B,IAAI9mB,EAAEqgC,MAAM9Y,EAAEvnB,EAAEqgC,MAAM/sB,EAAE6T,EAAE,IAAID,EAAEkZ,KAAK,EAAEjZ,GAAGD,EAAEwY,SAAS,IAAI5Y,IAAI4X,EAAExX,EAAEiZ,MAAMjZ,EAAEiY,SAAS,EAAEjY,EAAEgY,YAAY,EAAEhY,EAAEqZ,OAAO,GAAGtZ,EAAE,IAAIO,EAAE4T,KAAKlU,EAAEwY,QAAQlY,EAAEoV,SAAS3V,EAAE3T,EAAE6T,EAAED,EAAEwY,OAAOxY,EAAEwY,OAAO,GAAGpsB,EAAE2T,EAAEE,EAAED,EAAEwY,QAAQjgB,EAAEzf,EAAEk7B,SAASnU,EAAE/mB,EAAEi7B,QAAQjU,EAAEhnB,EAAEM,MAAMN,EAAEk7B,SAAS/T,EAAEnnB,EAAEi7B,QAAQ,EAAEj7B,EAAEM,MAAMgT,EAAE0sB,EAAE9Y,GAAGA,EAAE4Y,WAAWlqB,GAAG,CAAC,IAAIwR,EAAEF,EAAEiY,SAAS55B,EAAE2hB,EAAE4Y,WAAWlqB,EAAE,GAAGsR,EAAEsZ,OAAOtZ,EAAEsZ,OAAOtZ,EAAEuZ,WAAWvZ,EAAEv3B,OAAOy3B,EAAExR,EAAE,IAAIsR,EAAEwZ,UAAUxZ,EAAE0Y,KAAKxY,EAAEF,EAAEyY,QAAQzY,EAAEiZ,KAAKjZ,EAAEsZ,OAAOtZ,EAAEiZ,KAAKjZ,EAAEsZ,OAAOpZ,EAAEA,MAAM7hB,IAAI2hB,EAAEiY,SAAS/X,EAAEF,EAAE4Y,UAAUlqB,EAAE,EAAEoqB,EAAE9Y,EAAE,CAAC,OAAOA,EAAEiY,UAAUjY,EAAE4Y,UAAU5Y,EAAEgY,YAAYhY,EAAEiY,SAASjY,EAAEqZ,OAAOrZ,EAAE4Y,UAAU5Y,EAAE4Y,UAAU,EAAE5Y,EAAE0Z,aAAa1Z,EAAEsY,YAAY5pB,EAAE,EAAEsR,EAAEga,gBAAgB,EAAElhC,EAAEi7B,QAAQlU,EAAE/mB,EAAEM,MAAM0mB,EAAEhnB,EAAEk7B,SAASzb,EAAEyH,EAAEkZ,KAAKtZ,EAAEqE,CAAC,EAAEjE,EAAE+c,YAAY,oCAAoC,EAAE,CAAC,kBAAkB,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,UAAU,KAAK,GAAG,CAAC,SAASjkC,EAAEsT,EAAE4T,GAAG,aAAa5T,EAAEuT,QAAQ,WAAW/2B,KAAKwD,KAAK,EAAExD,KAAK+zC,KAAK,EAAE/zC,KAAKo0C,OAAO,EAAEp0C,KAAKg0C,GAAG,EAAEh0C,KAAK8zC,MAAM,KAAK9zC,KAAKq0C,UAAU,EAAEr0C,KAAKnB,KAAK,GAAGmB,KAAK45B,QAAQ,GAAG55B,KAAK6zC,KAAK,EAAE7zC,KAAKs0C,MAAK,CAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,SAASpkC,EAAEsT,EAAE4T,GAAG,aAAa5T,EAAEuT,QAAQ,SAAS7mB,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,EAAEC,EAAEC,EAAEE,EAAEvE,EAAE4E,EAAED,EAAEE,EAAE0D,EAAEp9B,EAAEq9B,EAAE1L,EAAE2L,EAAExV,EAAEyV,EAAEC,EAAE3V,EAAE4V,EAAEC,EAAEC,EAAExE,EAAElnB,EAAEomB,MAAMgB,EAAEpnB,EAAEi7B,QAAQxP,EAAEzrB,EAAEM,MAAMiF,EAAE6hB,GAAGpnB,EAAEk7B,SAAS,GAAGpU,EAAE9mB,EAAEq7B,SAAS3P,EAAE1rB,EAAEm7B,OAAO1b,EAAEqH,GAAGxT,EAAEtT,EAAEy6B,WAAW1T,EAAED,GAAG9mB,EAAEy6B,UAAU,KAAKzT,EAAEE,EAAEmd,KAAKpd,EAAEC,EAAEod,MAAMnd,EAAED,EAAEqd,MAAM3hB,EAAEsE,EAAEsd,MAAMhd,EAAEN,EAAEv3B,OAAO43B,EAAEL,EAAEud,KAAKhd,EAAEP,EAAEwd,KAAKvZ,EAAEjE,EAAEyd,QAAQ52C,EAAEm5B,EAAE0d,SAASxZ,GAAG,GAAGlE,EAAE2d,SAAS,EAAEnlB,GAAG,GAAGwH,EAAE4d,UAAU,EAAE9kC,EAAE,EAAE,CAACynB,EAAE,KAAKF,GAAGkE,EAAErE,MAAMK,EAAEA,GAAG,EAAEF,GAAGkE,EAAErE,MAAMK,EAAEA,GAAG,GAAG4D,EAAEF,EAAE5D,EAAE6D,GAAG9X,EAAE,OAAO,CAAC,GAAGiU,KAAK1R,EAAEwV,IAAI,GAAG5D,GAAG5R,EAAE,KAAKA,EAAEwV,IAAI,GAAG,KAAKK,EAAE5E,KAAK,MAAMuE,MAAM,CAAC,KAAK,GAAGxV,GAAG,CAAC,GAAG,IAAI,GAAGA,GAAG,CAACwV,EAAEF,GAAG,MAAME,IAAI9D,GAAG,GAAG1R,GAAG,IAAI,SAASvC,CAAC,CAAC,GAAG,GAAGuC,EAAE,CAACqR,EAAEpQ,KAAK,GAAG,MAAM9W,CAAC,CAACA,EAAEq6B,IAAI,8BAA8BnT,EAAEpQ,KAAK,GAAG,MAAM9W,CAAC,CAACsrB,EAAE,MAAMD,GAAGxV,GAAG,MAAM4R,EAAE5R,IAAI0R,GAAGkE,EAAErE,MAAMK,EAAEA,GAAG,GAAG6D,GAAG/D,GAAG,GAAG1R,GAAG,EAAE0R,KAAK1R,EAAE4R,GAAG5R,GAAG4R,EAAE,KAAKF,GAAGkE,EAAErE,MAAMK,EAAEA,GAAG,EAAEF,GAAGkE,EAAErE,MAAMK,EAAEA,GAAG,GAAG4D,EAAEt9B,EAAEw5B,EAAE7H,GAAGwH,EAAE,OAAO,CAAC,GAAGK,KAAK1R,EAAEwV,IAAI,GAAG5D,GAAG5R,IAAI,IAAIA,EAAEwV,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,GAAGxV,GAAG,CAACwV,EAAEt9B,GAAG,MAAMs9B,IAAI9D,GAAG,GAAG1R,GAAG,IAAI,SAASqR,CAAC,CAAClnB,EAAEq6B,IAAI,wBAAwBnT,EAAEpQ,KAAK,GAAG,MAAM9W,CAAC,CAAC,GAAGurB,EAAE,MAAMF,EAAE5D,GAAG5R,GAAG,MAAM0R,GAAGkE,EAAErE,MAAMK,GAAGA,GAAG,GAAG5R,IAAI0R,GAAGkE,EAAErE,MAAMK,EAAEA,GAAG,IAAIT,GAAGuE,GAAGhE,GAAG,GAAG1R,GAAG,GAAG,CAAC7V,EAAEq6B,IAAI,gCAAgCnT,EAAEpQ,KAAK,GAAG,MAAM9W,CAAC,CAAC,GAAGunB,KAAK1R,EAAE4R,GAAG5R,GAAGA,EAAEiR,EAAErH,GAAG8L,EAAE,CAAC,GAAGpE,GAAGtR,EAAE0V,EAAE1V,IAAIqR,EAAE6d,KAAK,CAAC/kC,EAAEq6B,IAAI,gCAAgCnT,EAAEpQ,KAAK,GAAG,MAAM9W,CAAC,CAAC,GAAGwrB,EAAEhE,GAAG5R,EAAE,KAAKgN,GAAG,GAAGhN,GAAGqR,EAAEpR,EAAEA,EAAEyV,EAAE,CAAC,IAAIA,GAAGzV,EAAE6V,EAAE5E,KAAKU,EAAE5R,OAAOC,IAAID,EAAEkR,EAAEyE,EAAEC,EAAEE,CAAC,OAAO,GAAG9I,EAAE/M,GAAG,GAAGD,GAAGqR,EAAErE,EAAE/M,GAAGA,GAAG+M,GAAG0I,EAAE,CAAC,IAAIA,GAAGzV,EAAE6V,EAAE5E,KAAKU,EAAE5R,OAAOC,IAAI,GAAGD,EAAE,EAAEgN,EAAE0I,EAAE,CAAC,IAAIA,GAAGzV,EAAE+M,EAAE8I,EAAE5E,KAAKU,EAAE5R,OAAOC,IAAID,EAAEkR,EAAEyE,EAAEC,EAAEE,CAAC,CAAC,OAAO,GAAG9V,GAAGgN,EAAE/M,EAAEA,EAAEyV,EAAE,CAAC,IAAIA,GAAGzV,EAAE6V,EAAE5E,KAAKU,EAAE5R,OAAOC,IAAID,EAAEkR,EAAEyE,EAAEC,EAAEE,CAAC,CAAC,KAAK,EAAEJ,GAAGI,EAAE5E,KAAK0E,EAAE5V,KAAK8V,EAAE5E,KAAK0E,EAAE5V,KAAK8V,EAAE5E,KAAK0E,EAAE5V,KAAK0V,GAAG,EAAEA,IAAII,EAAE5E,KAAK0E,EAAE5V,KAAK,EAAE0V,IAAII,EAAE5E,KAAK0E,EAAE5V,MAAM,KAAK,CAAC,IAAIA,EAAEkR,EAAEyE,EAAEG,EAAE5E,KAAK4E,EAAE9V,KAAK8V,EAAE5E,KAAK4E,EAAE9V,KAAK8V,EAAE5E,KAAK4E,EAAE9V,KAAK,GAAG0V,GAAG,KAAKA,IAAII,EAAE5E,KAAK4E,EAAE9V,KAAK,EAAE0V,IAAII,EAAE5E,KAAK4E,EAAE9V,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAOwR,EAAE7hB,GAAGuhB,EAAEC,GAAGK,GAAGkE,EAAE7D,GAAG,EAAEF,IAAI,IAAIE,GAAG6D,GAAG,IAAI,EAAEtrB,EAAEi7B,QAAQ7T,EAAEpnB,EAAEq7B,SAASvU,EAAE9mB,EAAEk7B,SAAS9T,EAAE7hB,EAAEA,EAAE6hB,EAAE,EAAE,GAAGA,EAAE7hB,GAAGvF,EAAEy6B,UAAU3T,EAAEC,EAAEA,EAAED,EAAE,IAAI,KAAKA,EAAEC,GAAGG,EAAEud,KAAKld,EAAEL,EAAEwd,KAAKjd,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,SAASznB,EAAEsT,EAAE4T,GAAG,aAAa,IAAIgE,EAAElrB,EAAE,mBAAmBgrB,EAAEhrB,EAAE,aAAaisB,EAAEjsB,EAAE,WAAWosB,EAAEpsB,EAAE,aAAay+B,EAAEz+B,EAAE,cAAc0+B,EAAE,EAAEC,EAAE,EAAEK,EAAE,EAAEI,GAAG,EAAEC,EAAE,EAAEjY,EAAE,IAAI7hB,EAAE,IAAI,SAAS+5B,EAAEt/B,GAAG,OAAOA,IAAI,GAAG,MAAMA,IAAI,EAAE,SAAS,MAAMA,IAAI,KAAK,IAAIA,IAAI,GAAG,CAAC,SAAS8mB,IAAIh3B,KAAKgnB,KAAK,EAAEhnB,KAAKk1C,MAAK,EAAGl1C,KAAKswC,KAAK,EAAEtwC,KAAKm1C,UAAS,EAAGn1C,KAAKo1C,MAAM,EAAEp1C,KAAKu0C,KAAK,EAAEv0C,KAAKq1C,MAAM,EAAEr1C,KAAKye,MAAM,EAAEze,KAAKqwC,KAAK,KAAKrwC,KAAKs1C,MAAM,EAAEt1C,KAAKw0C,MAAM,EAAEx0C,KAAKy0C,MAAM,EAAEz0C,KAAK00C,MAAM,EAAE10C,KAAKH,OAAO,KAAKG,KAAK20C,KAAK,EAAE30C,KAAK40C,KAAK,EAAE50C,KAAK2E,OAAO,EAAE3E,KAAKu1C,OAAO,EAAEv1C,KAAK8zC,MAAM,EAAE9zC,KAAK60C,QAAQ,KAAK70C,KAAK80C,SAAS,KAAK90C,KAAK+0C,QAAQ,EAAE/0C,KAAKg1C,SAAS,EAAEh1C,KAAKw1C,MAAM,EAAEx1C,KAAKy1C,KAAK,EAAEz1C,KAAK01C,MAAM,EAAE11C,KAAK21C,KAAK,EAAE31C,KAAK41C,KAAK,KAAK51C,KAAK61C,KAAK,IAAIza,EAAEiS,MAAM,KAAKrtC,KAAK81C,KAAK,IAAI1a,EAAEiS,MAAM,KAAKrtC,KAAK+1C,OAAO,KAAK/1C,KAAKg2C,QAAQ,KAAKh2C,KAAKi1C,KAAK,EAAEj1C,KAAKi2C,KAAK,EAAEj2C,KAAKk2C,IAAI,CAAC,CAAC,SAASvmB,EAAEzf,GAAG,IAAIsT,EAAE,OAAOtT,GAAGA,EAAEomB,OAAO9S,EAAEtT,EAAEomB,MAAMpmB,EAAEsgC,SAAStgC,EAAE++B,UAAUzrB,EAAE/E,MAAM,EAAEvO,EAAEq6B,IAAI,GAAG/mB,EAAE8sB,OAAOpgC,EAAEqgC,MAAM,EAAE/sB,EAAE8sB,MAAM9sB,EAAEwD,KAAKuoB,EAAE/rB,EAAE0xB,KAAK,EAAE1xB,EAAE2xB,SAAS,EAAE3xB,EAAE+wB,KAAK,MAAM/wB,EAAE6sB,KAAK,KAAK7sB,EAAEmxB,KAAK,EAAEnxB,EAAEoxB,KAAK,EAAEpxB,EAAEqxB,QAAQrxB,EAAEuyB,OAAO,IAAI3a,EAAEkS,MAAMhW,GAAG9T,EAAEsxB,SAAStxB,EAAEwyB,QAAQ,IAAI5a,EAAEkS,MAAM73B,GAAG+N,EAAEyxB,KAAK,EAAEzxB,EAAEyyB,MAAM,EAAE/G,GAAGI,CAAC,CAAC,SAASrY,EAAE/mB,GAAG,IAAIsT,EAAE,OAAOtT,GAAGA,EAAEomB,QAAQ9S,EAAEtT,EAAEomB,OAAOke,MAAM,EAAEhxB,EAAEixB,MAAM,EAAEjxB,EAAEkxB,MAAM,EAAE/kB,EAAEzf,IAAIo/B,CAAC,CAAC,SAASpY,EAAEhnB,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE,OAAOpnB,GAAGA,EAAEomB,OAAOgB,EAAEpnB,EAAEomB,MAAM9S,EAAE,GAAG4T,EAAE,EAAE5T,GAAGA,IAAI4T,EAAE,GAAG5T,GAAG,GAAGA,EAAE,KAAKA,GAAG,KAAKA,IAAIA,EAAE,GAAG,GAAGA,GAAG8rB,GAAG,OAAOhY,EAAEz3B,QAAQy3B,EAAEge,QAAQ9xB,IAAI8T,EAAEz3B,OAAO,MAAMy3B,EAAEgZ,KAAKlZ,EAAEE,EAAEge,MAAM9xB,EAAEyT,EAAE/mB,KAAKo/B,CAAC,CAAC,SAASnY,EAAEjnB,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE,OAAOpnB,GAAGonB,EAAE,IAAIN,GAAG9mB,EAAEomB,MAAMgB,GAAGz3B,OAAO,MAAMu3B,EAAEF,EAAEhnB,EAAEsT,MAAM0rB,IAAIh/B,EAAEomB,MAAM,MAAMc,GAAGkY,CAAC,CAAC,IAAIjY,EAAEvE,EAAE4E,GAAE,EAAG,SAASwY,EAAEhgC,GAAG,GAAGwnB,EAAE,CAAC,IAAIlU,EAAE,IAAI6T,EAAE,IAAI+D,EAAEkS,MAAM,KAAKxa,EAAE,IAAIsI,EAAEkS,MAAM,IAAI9pB,EAAE,EAAEA,EAAE,KAAKtT,EAAE2lC,KAAKryB,KAAK,EAAE,KAAKA,EAAE,KAAKtT,EAAE2lC,KAAKryB,KAAK,EAAE,KAAKA,EAAE,KAAKtT,EAAE2lC,KAAKryB,KAAK,EAAE,KAAKA,EAAE,KAAKtT,EAAE2lC,KAAKryB,KAAK,EAAE,IAAImrB,EAAEC,EAAE1+B,EAAE2lC,KAAK,EAAE,IAAIxe,EAAE,EAAEnnB,EAAE4lC,KAAK,CAAClB,KAAK,IAAIpxB,EAAE,EAAEA,EAAE,IAAItT,EAAE2lC,KAAKryB,KAAK,EAAEmrB,EAAEE,EAAE3+B,EAAE2lC,KAAK,EAAE,GAAG/iB,EAAE,EAAE5iB,EAAE4lC,KAAK,CAAClB,KAAK,IAAIld,GAAE,CAAE,CAACxnB,EAAE2kC,QAAQxd,EAAEnnB,EAAE6kC,QAAQ,EAAE7kC,EAAE4kC,SAAShiB,EAAE5iB,EAAE8kC,SAAS,CAAC,CAAC,SAASnE,EAAE3gC,EAAEsT,EAAE4T,EAAEE,GAAG,IAAI7hB,EAAEuhB,EAAE9mB,EAAEomB,MAAM,OAAO,OAAOU,EAAEn3B,SAASm3B,EAAEwd,MAAM,GAAGxd,EAAEse,MAAMte,EAAE0d,MAAM,EAAE1d,EAAEyd,MAAM,EAAEzd,EAAEn3B,OAAO,IAAIu7B,EAAEkQ,KAAKtU,EAAEwd,QAAQld,GAAGN,EAAEwd,OAAOpZ,EAAE0R,SAAS9V,EAAEn3B,OAAO2jB,EAAE4T,EAAEJ,EAAEwd,MAAMxd,EAAEwd,MAAM,GAAGxd,EAAE0d,MAAM,EAAE1d,EAAEyd,MAAMzd,EAAEwd,QAAQld,GAAG7hB,EAAEuhB,EAAEwd,MAAMxd,EAAE0d,SAASj/B,EAAE6hB,GAAG8D,EAAE0R,SAAS9V,EAAEn3B,OAAO2jB,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAE0d,QAAQpd,GAAG7hB,IAAI2lB,EAAE0R,SAAS9V,EAAEn3B,OAAO2jB,EAAE4T,EAAEE,EAAEA,EAAE,GAAGN,EAAE0d,MAAMpd,EAAEN,EAAEyd,MAAMzd,EAAEwd,QAAQxd,EAAE0d,OAAOj/B,EAAEuhB,EAAE0d,QAAQ1d,EAAEwd,QAAQxd,EAAE0d,MAAM,GAAG1d,EAAEyd,MAAMzd,EAAEwd,QAAQxd,EAAEyd,OAAOh/B,KAAK,CAAC,CAAC2hB,EAAE+e,aAAalf,EAAEG,EAAEgf,cAAclf,EAAEE,EAAEif,iBAAiB1mB,EAAEyH,EAAEkf,YAAY,SAASpmC,GAAG,OAAOinB,EAAEjnB,EAAE,GAAG,EAAEknB,EAAE4U,aAAa7U,EAAEC,EAAEkV,QAAQ,SAASp8B,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,EAAEC,EAAEC,EAAEE,EAAEvE,EAAE4E,EAAED,EAAEE,EAAE0D,EAAEp9B,EAAEq9B,EAAE1L,EAAE2L,EAAExV,EAAEyV,EAAEC,EAAE3V,EAAE4V,EAAEC,EAAEC,EAAE,EAAEQ,EAAE,IAAIhB,EAAEkQ,KAAK,GAAGtQ,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI9qB,IAAIA,EAAEomB,QAAQpmB,EAAEm7B,SAASn7B,EAAEM,OAAO,IAAIN,EAAEk7B,SAAS,OAAOkE,EAAE,MAAMlY,EAAElnB,EAAEomB,OAAOtP,OAAOoQ,EAAEpQ,KAAK,IAAI2I,EAAEzf,EAAEq7B,SAAS91B,EAAEvF,EAAEm7B,OAAOnU,EAAEhnB,EAAEy6B,UAAU3T,EAAE9mB,EAAEi7B,QAAQ7T,EAAEpnB,EAAEM,MAAMymB,EAAE/mB,EAAEk7B,SAASjU,EAAEC,EAAEud,KAAKtd,EAAED,EAAEwd,KAAK9hB,EAAEmE,EAAES,EAAER,EAAEpR,EAAEopB,EAAEh/B,EAAE,OAAO,OAAOknB,EAAEpQ,MAAM,KAAKuoB,EAAE,GAAG,IAAInY,EAAEkZ,KAAK,CAAClZ,EAAEpQ,KAAK,GAAG,KAAK,CAAC,KAAKqQ,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAG,EAAED,EAAEkZ,MAAM,QAAQnZ,EAAE,CAACiF,EAAEhF,EAAEie,MAAM,GAAG,IAAIle,EAAEiF,EAAE,GAAGjF,IAAI,EAAE,IAAIC,EAAEie,MAAMlZ,EAAE/E,EAAEie,MAAMjZ,EAAE,EAAE,GAAG/E,EAAEF,EAAE,EAAEC,EAAEpQ,KAAK,EAAE,KAAK,CAAC,GAAGoQ,EAAEge,MAAM,EAAEhe,EAAEiZ,OAAOjZ,EAAEiZ,KAAKiE,MAAK,KAAM,EAAEld,EAAEkZ,UAAU,IAAInZ,IAAI,IAAIA,GAAG,IAAI,GAAG,CAACjnB,EAAEq6B,IAAI,yBAAyBnT,EAAEpQ,KAAK,GAAG,KAAK,CAAC,GAAG,IAAI,GAAGmQ,GAAG,CAACjnB,EAAEq6B,IAAI,6BAA6BnT,EAAEpQ,KAAK,GAAG,KAAK,CAAC,GAAGqQ,GAAG,EAAEoE,EAAE,GAAG,IAAItE,KAAK,IAAI,IAAIC,EAAEke,MAAMle,EAAEke,MAAM7Z,OAAO,GAAGA,EAAErE,EAAEke,MAAM,CAACplC,EAAEq6B,IAAI,sBAAsBnT,EAAEpQ,KAAK,GAAG,KAAK,CAACoQ,EAAEmd,KAAK,GAAG9Y,EAAEvrB,EAAEqgC,MAAMnZ,EAAEie,MAAM,EAAEje,EAAEpQ,KAAK,IAAImQ,EAAE,GAAG,GAAGE,EAAEF,EAAE,EAAE,MAAM,KAAK,EAAE,KAAKE,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAGD,EAAEge,MAAMje,EAAE,IAAI,IAAIC,EAAEge,OAAO,CAACllC,EAAEq6B,IAAI,6BAA6BnT,EAAEpQ,KAAK,GAAG,KAAK,CAAC,GAAG,MAAMoQ,EAAEge,MAAM,CAACllC,EAAEq6B,IAAI,2BAA2BnT,EAAEpQ,KAAK,GAAG,KAAK,CAACoQ,EAAEiZ,OAAOjZ,EAAEiZ,KAAK7sC,KAAK2zB,GAAG,EAAE,GAAG,IAAIC,EAAEge,QAAQhZ,EAAE,GAAG,IAAIjF,EAAEiF,EAAE,GAAGjF,IAAI,EAAE,IAAIC,EAAEie,MAAMlZ,EAAE/E,EAAEie,MAAMjZ,EAAE,EAAE,IAAI/E,EAAEF,EAAE,EAAEC,EAAEpQ,KAAK,EAAE,KAAK,EAAE,KAAKqQ,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACD,EAAEiZ,OAAOjZ,EAAEiZ,KAAK0D,KAAK5c,GAAG,IAAIC,EAAEge,QAAQhZ,EAAE,GAAG,IAAIjF,EAAEiF,EAAE,GAAGjF,IAAI,EAAE,IAAIiF,EAAE,GAAGjF,IAAI,GAAG,IAAIiF,EAAE,GAAGjF,IAAI,GAAG,IAAIC,EAAEie,MAAMlZ,EAAE/E,EAAEie,MAAMjZ,EAAE,EAAE,IAAI/E,EAAEF,EAAE,EAAEC,EAAEpQ,KAAK,EAAE,KAAK,EAAE,KAAKqQ,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACD,EAAEiZ,OAAOjZ,EAAEiZ,KAAK+D,OAAO,IAAIjd,EAAEC,EAAEiZ,KAAK2D,GAAG7c,GAAG,GAAG,IAAIC,EAAEge,QAAQhZ,EAAE,GAAG,IAAIjF,EAAEiF,EAAE,GAAGjF,IAAI,EAAE,IAAIC,EAAEie,MAAMlZ,EAAE/E,EAAEie,MAAMjZ,EAAE,EAAE,IAAI/E,EAAEF,EAAE,EAAEC,EAAEpQ,KAAK,EAAE,KAAK,EAAE,GAAG,KAAKoQ,EAAEge,MAAM,CAAC,KAAK/d,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACD,EAAEzyB,OAAOwyB,EAAEC,EAAEiZ,OAAOjZ,EAAEiZ,KAAKgE,UAAUld,GAAG,IAAIC,EAAEge,QAAQhZ,EAAE,GAAG,IAAIjF,EAAEiF,EAAE,GAAGjF,IAAI,EAAE,IAAIC,EAAEie,MAAMlZ,EAAE/E,EAAEie,MAAMjZ,EAAE,EAAE,IAAI/E,EAAEF,EAAE,CAAC,MAAMC,EAAEiZ,OAAOjZ,EAAEiZ,KAAKyD,MAAM,MAAM1c,EAAEpQ,KAAK,EAAE,KAAK,EAAE,GAAG,KAAKoQ,EAAEge,QAAQne,GAAGQ,EAAEL,EAAEzyB,UAAU8yB,EAAER,GAAGQ,IAAIL,EAAEiZ,OAAO5U,EAAErE,EAAEiZ,KAAKgE,UAAUjd,EAAEzyB,OAAOyyB,EAAEiZ,KAAKyD,QAAQ1c,EAAEiZ,KAAKyD,MAAM,IAAI1sC,MAAMgwB,EAAEiZ,KAAKgE,YAAYjZ,EAAE0R,SAAS1V,EAAEiZ,KAAKyD,MAAMxc,EAAEN,EAAES,EAAEgE,IAAI,IAAIrE,EAAEge,QAAQhe,EAAEie,MAAMlZ,EAAE/E,EAAEie,MAAM/d,EAAEG,EAAET,IAAIC,GAAGQ,EAAET,GAAGS,EAAEL,EAAEzyB,QAAQ8yB,GAAGL,EAAEzyB,QAAQ,MAAMuL,EAAEknB,EAAEzyB,OAAO,EAAEyyB,EAAEpQ,KAAK,EAAE,KAAK,EAAE,GAAG,KAAKoQ,EAAEge,MAAM,CAAC,GAAG,IAAIne,EAAE,MAAM/mB,EAAE,IAAIunB,EAAE,EAAEgE,EAAEnE,EAAEN,EAAES,KAAKL,EAAEiZ,MAAM5U,GAAGrE,EAAEzyB,OAAO,QAAQyyB,EAAEiZ,KAAKxxC,MAAMQ,OAAO47B,aAAaQ,IAAIA,GAAGhE,EAAER,IAAI,GAAG,IAAIG,EAAEge,QAAQhe,EAAEie,MAAMlZ,EAAE/E,EAAEie,MAAM/d,EAAEG,EAAET,IAAIC,GAAGQ,EAAET,GAAGS,EAAEgE,EAAE,MAAMvrB,CAAC,MAAMknB,EAAEiZ,OAAOjZ,EAAEiZ,KAAKxxC,KAAK,MAAMu4B,EAAEzyB,OAAO,EAAEyyB,EAAEpQ,KAAK,EAAE,KAAK,EAAE,GAAG,KAAKoQ,EAAEge,MAAM,CAAC,GAAG,IAAIne,EAAE,MAAM/mB,EAAE,IAAIunB,EAAE,EAAEgE,EAAEnE,EAAEN,EAAES,KAAKL,EAAEiZ,MAAM5U,GAAGrE,EAAEzyB,OAAO,QAAQyyB,EAAEiZ,KAAKzW,SAASv6B,OAAO47B,aAAaQ,IAAIA,GAAGhE,EAAER,IAAI,GAAG,IAAIG,EAAEge,QAAQhe,EAAEie,MAAMlZ,EAAE/E,EAAEie,MAAM/d,EAAEG,EAAET,IAAIC,GAAGQ,EAAET,GAAGS,EAAEgE,EAAE,MAAMvrB,CAAC,MAAMknB,EAAEiZ,OAAOjZ,EAAEiZ,KAAKzW,QAAQ,MAAMxC,EAAEpQ,KAAK,EAAE,KAAK,EAAE,GAAG,IAAIoQ,EAAEge,MAAM,CAAC,KAAK/d,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAGF,KAAK,MAAMC,EAAEie,OAAO,CAACnlC,EAAEq6B,IAAI,sBAAsBnT,EAAEpQ,KAAK,GAAG,KAAK,CAACqQ,EAAEF,EAAE,CAAC,CAACC,EAAEiZ,OAAOjZ,EAAEiZ,KAAKwD,KAAKzc,EAAEge,OAAO,EAAE,EAAEhe,EAAEiZ,KAAKiE,MAAK,GAAIpkC,EAAEqgC,MAAMnZ,EAAEie,MAAM,EAAEje,EAAEpQ,KAAK,GAAG,MAAM,KAAK,GAAG,KAAKqQ,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACnnB,EAAEqgC,MAAMnZ,EAAEie,MAAM7F,EAAErY,GAAGE,EAAEF,EAAE,EAAEC,EAAEpQ,KAAK,GAAG,KAAK,GAAG,GAAG,IAAIoQ,EAAE+d,SAAS,OAAOjlC,EAAEq7B,SAAS5b,EAAEzf,EAAEy6B,UAAUzT,EAAEhnB,EAAEi7B,QAAQnU,EAAE9mB,EAAEk7B,SAASnU,EAAEG,EAAEud,KAAKxd,EAAEC,EAAEwd,KAAKvd,EAAE,EAAEnnB,EAAEqgC,MAAMnZ,EAAEie,MAAM,EAAEje,EAAEpQ,KAAK,GAAG,KAAK,GAAG,GAAG,IAAIxD,GAAG,IAAIA,EAAE,MAAMtT,EAAE,KAAK,GAAG,GAAGknB,EAAE8d,KAAK,CAAC/d,KAAK,EAAEE,EAAEA,GAAG,EAAEA,EAAED,EAAEpQ,KAAK,GAAG,KAAK,CAAC,KAAKqQ,EAAE,GAAG,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,OAAOD,EAAE8d,KAAK,EAAE/d,EAAEE,GAAG,EAAE,GAAGF,KAAK,IAAI,KAAK,EAAEC,EAAEpQ,KAAK,GAAG,MAAM,KAAK,EAAE,GAAGkpB,EAAE9Y,GAAGA,EAAEpQ,KAAK,GAAG,IAAIxD,EAAE,MAAM2T,KAAK,EAAEE,GAAG,EAAE,MAAMnnB,EAAE,KAAK,EAAEknB,EAAEpQ,KAAK,GAAG,MAAM,KAAK,EAAE9W,EAAEq6B,IAAI,qBAAqBnT,EAAEpQ,KAAK,GAAGmQ,KAAK,EAAEE,GAAG,EAAE,MAAM,KAAK,GAAG,IAAIF,KAAK,EAAEE,EAAEA,GAAG,EAAEA,EAAEA,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,IAAI,MAAMF,KAAKA,IAAI,GAAG,OAAO,CAACjnB,EAAEq6B,IAAI,+BAA+BnT,EAAEpQ,KAAK,GAAG,KAAK,CAAC,GAAGoQ,EAAEzyB,OAAO,MAAMwyB,EAAEE,EAAEF,EAAE,EAAEC,EAAEpQ,KAAK,GAAG,IAAIxD,EAAE,MAAMtT,EAAE,KAAK,GAAGknB,EAAEpQ,KAAK,GAAG,KAAK,GAAG,GAAGyQ,EAAEL,EAAEzyB,OAAO,CAAC,GAAGsyB,EAAEQ,IAAIA,EAAER,GAAGC,EAAEO,IAAIA,EAAEP,GAAG,IAAIO,EAAE,MAAMvnB,EAAEkrB,EAAE0R,SAASr3B,EAAE6hB,EAAEN,EAAES,EAAE9H,GAAGsH,GAAGQ,EAAET,GAAGS,EAAEP,GAAGO,EAAE9H,GAAG8H,EAAEL,EAAEzyB,QAAQ8yB,EAAE,KAAK,CAACL,EAAEpQ,KAAK,GAAG,MAAM,KAAK,GAAG,KAAKqQ,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAGD,EAAEqe,KAAK,KAAK,GAAGte,GAAGA,KAAK,EAAEE,GAAG,EAAED,EAAEse,MAAM,GAAG,GAAGve,GAAGA,KAAK,EAAEE,GAAG,EAAED,EAAEoe,MAAM,GAAG,GAAGre,GAAGA,KAAK,EAAEE,GAAG,EAAE,IAAID,EAAEqe,MAAM,GAAGre,EAAEse,MAAM,CAACxlC,EAAEq6B,IAAI,sCAAsCnT,EAAEpQ,KAAK,GAAG,KAAK,CAACoQ,EAAEue,KAAK,EAAEve,EAAEpQ,KAAK,GAAG,KAAK,GAAG,KAAKoQ,EAAEue,KAAKve,EAAEoe,OAAO,CAAC,KAAKne,EAAE,GAAG,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACD,EAAEye,KAAK7a,EAAE5D,EAAEue,SAAS,EAAExe,EAAEA,KAAK,EAAEE,GAAG,CAAC,CAAC,KAAKD,EAAEue,KAAK,IAAIve,EAAEye,KAAK7a,EAAE5D,EAAEue,SAAS,EAAE,GAAGve,EAAEyd,QAAQzd,EAAE2e,OAAO3e,EAAE2d,QAAQ,EAAErZ,EAAE,CAACkZ,KAAKxd,EAAE2d,SAASjvB,EAAE6oB,EAAE,EAAEvX,EAAEye,KAAK,EAAE,GAAGze,EAAEyd,QAAQ,EAAEzd,EAAE0e,KAAKpa,GAAGtE,EAAE2d,QAAQrZ,EAAEkZ,KAAK9uB,EAAE,CAAC5V,EAAEq6B,IAAI,2BAA2BnT,EAAEpQ,KAAK,GAAG,KAAK,CAACoQ,EAAEue,KAAK,EAAEve,EAAEpQ,KAAK,GAAG,KAAK,GAAG,KAAKoQ,EAAEue,KAAKve,EAAEqe,KAAKre,EAAEse,OAAO,CAAC,KAAKpa,GAAGM,EAAExE,EAAEyd,QAAQ1d,GAAG,GAAGC,EAAE2d,SAAS,MAAM,GAAG,IAAInlB,EAAE,MAAMgM,KAAK39B,EAAE29B,IAAI,KAAKvE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAGzH,EAAE,GAAGuH,KAAKl5B,EAAEo5B,GAAGp5B,EAAEm5B,EAAEye,KAAKze,EAAEue,QAAQ/lB,MAAM,CAAC,GAAG,KAAKA,EAAE,CAAC,IAAI+L,EAAE19B,EAAE,EAAEo5B,EAAEsE,GAAG,CAAC,GAAG,IAAI1E,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAGF,KAAKl5B,EAAEo5B,GAAGp5B,EAAE,IAAIm5B,EAAEue,KAAK,CAACzlC,EAAEq6B,IAAI,4BAA4BnT,EAAEpQ,KAAK,GAAG,KAAK,CAACyU,EAAErE,EAAEye,KAAKze,EAAEue,KAAK,GAAGle,EAAE,GAAG,EAAEN,GAAGA,KAAK,EAAEE,GAAG,CAAC,MAAM,GAAG,KAAKzH,EAAE,CAAC,IAAI+L,EAAE19B,EAAE,EAAEo5B,EAAEsE,GAAG,CAAC,GAAG,IAAI1E,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACA,GAAGp5B,EAAEw9B,EAAE,EAAEhE,EAAE,GAAG,GAAGN,KAAKl5B,IAAIk5B,KAAK,EAAEE,GAAG,CAAC,KAAK,CAAC,IAAIsE,EAAE19B,EAAE,EAAEo5B,EAAEsE,GAAG,CAAC,GAAG,IAAI1E,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACA,GAAGp5B,EAAEw9B,EAAE,EAAEhE,EAAE,IAAI,KAAKN,KAAKl5B,IAAIk5B,KAAK,EAAEE,GAAG,CAAC,CAAC,GAAGD,EAAEue,KAAKle,EAAEL,EAAEqe,KAAKre,EAAEse,MAAM,CAACxlC,EAAEq6B,IAAI,4BAA4BnT,EAAEpQ,KAAK,GAAG,KAAK,CAAC,KAAKyQ,KAAKL,EAAEye,KAAKze,EAAEue,QAAQla,CAAC,CAAC,CAAC,GAAG,KAAKrE,EAAEpQ,KAAK,MAAM,GAAG,IAAIoQ,EAAEye,KAAK,KAAK,CAAC3lC,EAAEq6B,IAAI,uCAAuCnT,EAAEpQ,KAAK,GAAG,KAAK,CAAC,GAAGoQ,EAAE2d,QAAQ,EAAErZ,EAAE,CAACkZ,KAAKxd,EAAE2d,SAASjvB,EAAE6oB,EAAEC,EAAExX,EAAEye,KAAK,EAAEze,EAAEqe,KAAKre,EAAEyd,QAAQ,EAAEzd,EAAE0e,KAAKpa,GAAGtE,EAAE2d,QAAQrZ,EAAEkZ,KAAK9uB,EAAE,CAAC5V,EAAEq6B,IAAI,8BAA8BnT,EAAEpQ,KAAK,GAAG,KAAK,CAAC,GAAGoQ,EAAE4d,SAAS,EAAE5d,EAAE0d,SAAS1d,EAAE4e,QAAQta,EAAE,CAACkZ,KAAKxd,EAAE4d,UAAUlvB,EAAE6oB,EAAEE,EAAEzX,EAAEye,KAAKze,EAAEqe,KAAKre,EAAEse,MAAMte,EAAE0d,SAAS,EAAE1d,EAAE0e,KAAKpa,GAAGtE,EAAE4d,SAAStZ,EAAEkZ,KAAK9uB,EAAE,CAAC5V,EAAEq6B,IAAI,wBAAwBnT,EAAEpQ,KAAK,GAAG,KAAK,CAAC,GAAGoQ,EAAEpQ,KAAK,GAAG,IAAIxD,EAAE,MAAMtT,EAAE,KAAK,GAAGknB,EAAEpQ,KAAK,GAAG,KAAK,GAAG,GAAG,GAAGiQ,GAAG,KAAKC,EAAE,CAAChnB,EAAEq7B,SAAS5b,EAAEzf,EAAEy6B,UAAUzT,EAAEhnB,EAAEi7B,QAAQnU,EAAE9mB,EAAEk7B,SAASnU,EAAEG,EAAEud,KAAKxd,EAAEC,EAAEwd,KAAKvd,EAAEiF,EAAEpsB,EAAEwnB,GAAG/H,EAAEzf,EAAEq7B,SAAS91B,EAAEvF,EAAEm7B,OAAOnU,EAAEhnB,EAAEy6B,UAAU3T,EAAE9mB,EAAEi7B,QAAQ7T,EAAEpnB,EAAEM,MAAMymB,EAAE/mB,EAAEk7B,SAASjU,EAAEC,EAAEud,KAAKtd,EAAED,EAAEwd,KAAK,KAAKxd,EAAEpQ,OAAOoQ,EAAE6e,MAAM,GAAG,KAAK,CAAC,IAAI7e,EAAE6e,KAAK,EAAE3a,GAAGM,EAAExE,EAAEyd,QAAQ1d,GAAG,GAAGC,EAAE2d,SAAS,MAAM,GAAG,IAAInlB,EAAE,MAAMgM,KAAK39B,EAAE29B,IAAI,KAAKvE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAGiE,GAAG,IAAI,IAAIA,GAAG,CAAC,IAAIC,EAAEt9B,EAAE8nB,EAAEuV,EAAEE,EAAE5L,EAAE0L,GAAGM,EAAExE,EAAEyd,QAAQrZ,IAAIrE,GAAG,GAAGoE,EAAExV,GAAG,IAAIwV,OAAO,GAAG,IAAI3L,EAAE,MAAMgM,IAAIL,GAAGt9B,EAAE29B,IAAI,KAAKvE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACF,KAAKoE,EAAElE,GAAGkE,EAAEnE,EAAE6e,MAAM1a,CAAC,CAAC,GAAGpE,KAAKl5B,EAAEo5B,GAAGp5B,EAAEm5B,EAAE6e,MAAMh4C,EAAEm5B,EAAEzyB,OAAOirB,EAAE,IAAI0L,EAAE,CAAClE,EAAEpQ,KAAK,GAAG,KAAK,CAAC,GAAG,GAAGsU,EAAE,CAAClE,EAAE6e,MAAM,EAAE7e,EAAEpQ,KAAK,GAAG,KAAK,CAAC,GAAG,GAAGsU,EAAE,CAACprB,EAAEq6B,IAAI,8BAA8BnT,EAAEpQ,KAAK,GAAG,KAAK,CAACoQ,EAAE0c,MAAM,GAAGxY,EAAElE,EAAEpQ,KAAK,GAAG,KAAK,GAAG,GAAGoQ,EAAE0c,MAAM,CAAC,IAAInY,EAAEvE,EAAE0c,MAAMzc,EAAEsE,GAAG,CAAC,GAAG,IAAI1E,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACD,EAAEzyB,QAAQwyB,GAAG,GAAGC,EAAE0c,OAAO,EAAE3c,KAAKC,EAAE0c,MAAMzc,GAAGD,EAAE0c,MAAM1c,EAAE6e,MAAM7e,EAAE0c,KAAK,CAAC1c,EAAE8e,IAAI9e,EAAEzyB,OAAOyyB,EAAEpQ,KAAK,GAAG,KAAK,GAAG,KAAKsU,GAAGM,EAAExE,EAAE0d,SAAS3d,GAAG,GAAGC,EAAE4d,UAAU,MAAM,GAAG,IAAIplB,EAAE,MAAMgM,KAAK39B,EAAE29B,IAAI,KAAKvE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAG,IAAI,IAAIiE,GAAG,CAAC,IAAIC,EAAEt9B,EAAE8nB,EAAEuV,EAAEE,EAAE5L,EAAE0L,GAAGM,EAAExE,EAAE0d,SAAStZ,IAAIrE,GAAG,GAAGoE,EAAExV,GAAG,IAAIwV,OAAO,GAAG,IAAI3L,EAAE,MAAMgM,IAAIL,GAAGt9B,EAAE29B,IAAI,KAAKvE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACF,KAAKoE,EAAElE,GAAGkE,EAAEnE,EAAE6e,MAAM1a,CAAC,CAAC,GAAGpE,KAAKl5B,EAAEo5B,GAAGp5B,EAAEm5B,EAAE6e,MAAMh4C,EAAE,GAAGq9B,EAAE,CAACprB,EAAEq6B,IAAI,wBAAwBnT,EAAEpQ,KAAK,GAAG,KAAK,CAACoQ,EAAEme,OAAO3lB,EAAEwH,EAAE0c,MAAM,GAAGxY,EAAElE,EAAEpQ,KAAK,GAAG,KAAK,GAAG,GAAGoQ,EAAE0c,MAAM,CAAC,IAAInY,EAAEvE,EAAE0c,MAAMzc,EAAEsE,GAAG,CAAC,GAAG,IAAI1E,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAACD,EAAEme,QAAQpe,GAAG,GAAGC,EAAE0c,OAAO,EAAE3c,KAAKC,EAAE0c,MAAMzc,GAAGD,EAAE0c,MAAM1c,EAAE6e,MAAM7e,EAAE0c,KAAK,CAAC,GAAG1c,EAAEme,OAAOne,EAAEmd,KAAK,CAACrkC,EAAEq6B,IAAI,gCAAgCnT,EAAEpQ,KAAK,GAAG,KAAK,CAACoQ,EAAEpQ,KAAK,GAAG,KAAK,GAAG,GAAG,IAAIkQ,EAAE,MAAMhnB,EAAE,GAAGunB,EAAEC,EAAER,EAAEE,EAAEme,OAAO9d,EAAE,CAAC,IAAIA,EAAEL,EAAEme,OAAO9d,GAAGL,EAAEqd,OAAOrd,EAAE6d,KAAK,CAAC/kC,EAAEq6B,IAAI,gCAAgCnT,EAAEpQ,KAAK,GAAG,KAAK,CAAC2Q,EAAEF,EAAEL,EAAEsd,OAAOjd,GAAGL,EAAEsd,MAAMtd,EAAEod,MAAM/c,GAAGL,EAAEsd,MAAMjd,EAAEA,EAAEL,EAAEzyB,SAAS8yB,EAAEL,EAAEzyB,QAAQ02B,EAAEjE,EAAEv3B,MAAM,MAAMw7B,EAAE5lB,EAAEkiB,EAAEhI,EAAEyH,EAAEme,OAAO9d,EAAEL,EAAEzyB,OAAO,IAAIuyB,EAAEO,IAAIA,EAAEP,GAAGA,GAAGO,EAAEL,EAAEzyB,QAAQ8yB,EAAEhiB,EAAEka,KAAK0L,EAAE1D,OAAOF,IAAI,IAAIL,EAAEzyB,SAASyyB,EAAEpQ,KAAK,IAAI,MAAM,KAAK,GAAG,GAAG,IAAIkQ,EAAE,MAAMhnB,EAAEuF,EAAEka,KAAKyH,EAAEzyB,OAAOuyB,IAAIE,EAAEpQ,KAAK,GAAG,MAAM,KAAK,GAAG,GAAGoQ,EAAEkZ,KAAK,CAAC,KAAKjZ,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAGK,GAAGR,EAAEhnB,EAAE++B,WAAWvX,EAAEN,EAAE3Y,OAAOiZ,EAAEA,IAAIxnB,EAAEqgC,MAAMnZ,EAAEie,MAAMje,EAAEge,MAAMjZ,EAAE/E,EAAEie,MAAM5/B,EAAEiiB,EAAE/H,EAAE+H,GAAGwD,EAAE9D,EAAEie,MAAM5/B,EAAEiiB,EAAE/H,EAAE+H,IAAIA,EAAER,GAAGE,EAAEge,MAAMje,EAAEqY,EAAErY,MAAMC,EAAEie,MAAM,CAACnlC,EAAEq6B,IAAI,uBAAuBnT,EAAEpQ,KAAK,GAAG,KAAK,CAACqQ,EAAEF,EAAE,CAAC,CAACC,EAAEpQ,KAAK,GAAG,KAAK,GAAG,GAAGoQ,EAAEkZ,MAAMlZ,EAAEge,MAAM,CAAC,KAAK/d,EAAE,IAAI,CAAC,GAAG,IAAIJ,EAAE,MAAM/mB,EAAE+mB,IAAIE,GAAGG,EAAEN,MAAMK,EAAEA,GAAG,CAAC,CAAC,GAAGF,KAAK,WAAWC,EAAE3Y,OAAO,CAACvO,EAAEq6B,IAAI,yBAAyBnT,EAAEpQ,KAAK,GAAG,KAAK,CAACqQ,EAAEF,EAAE,CAAC,CAACC,EAAEpQ,KAAK,GAAG,KAAK,GAAGlB,EAAE,EAAE,MAAM5V,EAAE,KAAK,GAAG4V,GAAG,EAAE,MAAM5V,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,QAAQ,OAAOo/B,EAAE,OAAOp/B,EAAEq7B,SAAS5b,EAAEzf,EAAEy6B,UAAUzT,EAAEhnB,EAAEi7B,QAAQnU,EAAE9mB,EAAEk7B,SAASnU,EAAEG,EAAEud,KAAKxd,EAAEC,EAAEwd,KAAKvd,GAAGD,EAAEod,OAAO9c,IAAIxnB,EAAEy6B,WAAWvT,EAAEpQ,KAAK,KAAKoQ,EAAEpQ,KAAK,IAAI,IAAIxD,KAAKqtB,EAAE3gC,EAAEA,EAAEm7B,OAAOn7B,EAAEq7B,SAAS7T,EAAExnB,EAAEy6B,YAAYvT,EAAEpQ,KAAK,IAAI,IAAI8L,GAAG5iB,EAAEk7B,SAAS1T,GAAGxnB,EAAEy6B,UAAUz6B,EAAEsgC,UAAU1d,EAAE5iB,EAAE++B,WAAWvX,EAAEN,EAAE3Y,OAAOiZ,EAAEN,EAAEkZ,MAAM5Y,IAAIxnB,EAAEqgC,MAAMnZ,EAAEie,MAAMje,EAAEge,MAAMjZ,EAAE/E,EAAEie,MAAM5/B,EAAEiiB,EAAExnB,EAAEq7B,SAAS7T,GAAGwD,EAAE9D,EAAEie,MAAM5/B,EAAEiiB,EAAExnB,EAAEq7B,SAAS7T,IAAIxnB,EAAEojC,UAAUlc,EAAEwd,MAAMxd,EAAE8d,KAAK,GAAG,IAAI,KAAK9d,EAAEpQ,KAAK,IAAI,IAAI,KAAKoQ,EAAEpQ,MAAM,KAAKoQ,EAAEpQ,KAAK,IAAI,IAAI,GAAG8L,GAAG,IAAI4E,GAAG,IAAIlU,IAAIsC,IAAIopB,IAAIppB,GAAG,GAAGA,EAAE,EAAEsR,EAAE2V,WAAW,SAAS78B,GAAG,IAAIA,IAAIA,EAAEomB,MAAM,OAAOgZ,EAAE,IAAI9rB,EAAEtT,EAAEomB,MAAM,OAAO9S,EAAE3jB,SAAS2jB,EAAE3jB,OAAO,MAAMqQ,EAAEomB,MAAM,KAAK4Y,CAAC,EAAE9X,EAAE8U,iBAAiB,SAASh8B,EAAEsT,GAAG,IAAI4T,EAAE,OAAOlnB,GAAGA,EAAEomB,MAAM,IAAI,GAAGc,EAAElnB,EAAEomB,OAAOga,MAAMhB,IAAIlY,EAAEiZ,KAAK7sB,GAAG8wB,MAAK,EAAGpF,GAAGI,CAAC,EAAElY,EAAEoV,qBAAqB,SAASt8B,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE9T,EAAE7e,OAAO,OAAOuL,GAAGA,EAAEomB,MAAM,KAAKc,EAAElnB,EAAEomB,OAAOga,MAAM,KAAKlZ,EAAEpQ,KAAKsoB,EAAE,KAAKlY,EAAEpQ,MAAMkU,EAAE,EAAE1X,EAAE8T,EAAE,KAAKF,EAAEie,OAAO,EAAExE,EAAE3gC,EAAEsT,EAAE8T,EAAEA,IAAIF,EAAEpQ,KAAK,IAAI,IAAIoQ,EAAE+d,SAAS,EAAEjG,GAAGI,CAAC,EAAElY,EAAEmf,YAAY,oCAAoC,EAAE,CAAC,kBAAkB,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,KAAK,GAAG,CAAC,SAASrmC,EAAEsT,EAAE4T,GAAG,aAAa,IAAIwX,EAAE1+B,EAAE,mBAAmB2+B,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAAGK,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAII,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,EAAE,GAAGC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI/rB,EAAEuT,QAAQ,SAAS7mB,EAAEsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,GAAG,IAAIC,EAAEC,EAAEE,EAAEvE,EAAE4E,EAAED,EAAEE,EAAE0D,EAAEp9B,EAAEq9B,EAAErE,EAAE2d,KAAKhlB,EAAE,EAAE2L,EAAE,EAAExV,EAAE,EAAEyV,EAAE,EAAEC,EAAE,EAAE3V,EAAE,EAAE4V,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEQ,EAAE,EAAEpB,EAAE,KAAKI,EAAE,EAAEF,EAAE,IAAI0T,EAAEvB,MAAM,IAAIlR,EAAE,IAAIyS,EAAEvB,MAAM,IAAI/Q,EAAE,KAAKqS,EAAE,EAAE,IAAI/e,EAAE,EAAEA,GAAG,GAAGA,IAAIsL,EAAEtL,GAAG,EAAE,IAAI2L,EAAE,EAAEA,EAAEjE,EAAEiE,IAAIL,EAAE1X,EAAE4T,EAAEmE,MAAM,IAAIE,EAAEH,EAAEE,EAAE,GAAG,GAAGA,GAAG,IAAIN,EAAEM,GAAGA,KAAK,GAAGA,EAAEC,IAAIA,EAAED,GAAG,IAAIA,EAAE,OAAO/lB,EAAEuhB,KAAK,SAASvhB,EAAEuhB,KAAK,SAASC,EAAE2d,KAAK,EAAE,EAAE,IAAI7uB,EAAE,EAAEA,EAAEyV,GAAG,IAAIN,EAAEnV,GAAGA,KAAK,IAAI0V,EAAE1V,IAAI0V,EAAE1V,GAAG6J,EAAE+L,EAAE,EAAE/L,GAAG,GAAGA,IAAI,GAAG+L,IAAI,GAAGA,GAAGT,EAAEtL,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE+L,IAAI,IAAIzrB,GAAG,IAAIsrB,GAAG,OAAO,EAAE,IAAIW,EAAE,GAAG,EAAEvM,EAAE,EAAEA,EAAE,GAAGA,IAAIuM,EAAEvM,EAAE,GAAGuM,EAAEvM,GAAGsL,EAAEtL,GAAG,IAAI2L,EAAE,EAAEA,EAAEjE,EAAEiE,IAAI,IAAI/X,EAAE4T,EAAEmE,KAAK5L,EAAEwM,EAAE3Y,EAAE4T,EAAEmE,OAAOA,GAAG,GAAG9D,EAAE,IAAIvnB,GAAG8qB,EAAEsB,EAAE3M,EAAE,IAAI,IAAIzf,GAAG8qB,EAAE6T,EAAEzT,GAAG,IAAIkB,EAAE4S,EAAEP,GAAG,IAAI,MAAM3T,EAAEsU,EAAEhT,EAAEiT,GAAG,GAAG3f,EAAE7J,EAAE2R,EAAEV,EAAE0E,EAAEH,EAAEa,EAAE,EAAE/E,GAAG,EAAEvE,GAAG8I,EAAE,IAAI9V,EAAE2V,IAAI,EAAE,IAAIvrB,GAAG,IAAI0rB,GAAG,IAAI1rB,GAAG,IAAI0rB,EAAE,OAAO,EAAE,OAAO,CAAC,IAAIjE,EAAE/H,EAAE8L,EAAEz9B,EAAE0xB,EAAE4L,GAAG9D,GAAG4D,EAAE,EAAE1L,EAAE4L,IAAI5L,EAAE4L,GAAG9D,GAAG4D,EAAEiB,EAAEqS,EAAEhf,EAAE4L,IAAIP,EAAEI,EAAEzL,EAAE4L,MAAMF,EAAE,GAAG,GAAGnE,EAAE,GAAGtH,EAAE8L,EAAE3V,EAAEoR,EAAE,GAAGrR,EAAErQ,EAAEiiB,GAAG0E,GAAGV,IAAIvE,GAAGD,IAAIS,GAAG,GAAG0D,GAAG,GAAGp9B,EAAI,IAAIk5B,IAAI,IAAID,EAAE,GAAGtH,EAAE,EAAEwM,EAAElF,GAAGA,IAAI,EAAE,GAAG,IAAIA,GAAGkF,GAAGlF,EAAE,EAAEkF,GAAGlF,GAAGkF,EAAE,EAAEb,IAAI,KAAKL,EAAEtL,GAAG,CAAC,GAAGA,IAAI4L,EAAE,MAAM5L,EAAEpM,EAAE4T,EAAEzH,EAAE4L,GAAG,CAAC,GAAGE,EAAE7L,IAAIwM,EAAEtJ,KAAKuE,EAAE,CAAC,IAAI,IAAIqE,IAAIA,EAAED,GAAG/D,GAAG3R,EAAE4V,EAAE,IAAI7V,EAAE8J,EAAE8L,GAAG5V,EAAE4V,EAAEF,MAAMG,GAAGT,EAAEpV,EAAE4V,KAAK,IAAI5V,IAAI6V,IAAI,EAAE,GAAGC,GAAG,GAAG9V,EAAE,IAAI5V,GAAG,IAAI0rB,GAAG,IAAI1rB,GAAG,IAAI0rB,EAAE,OAAO,EAAEnmB,EAAE4hB,EAAE+E,EAAEtJ,GAAG2I,GAAG,GAAG3V,GAAG,GAAG4R,EAAEV,CAAG,CAAC,CAAC,OAAO,IAAIoF,IAAI3mB,EAAEiiB,EAAE0E,GAAGxM,EAAE8L,GAAG,GAAG,IAAI,IAAMzE,EAAE2d,KAAKnZ,EAAE,CAAC,CAAC,EAAE,CAAC,kBAAkB,KAAK,GAAG,CAAC,SAASvrB,EAAEsT,EAAE4T,GAAG,aAAa5T,EAAEuT,QAAQ,CAAC,EAAE,kBAAkB,EAAE,aAAa,EAAE,GAAG,KAAK,aAAa,KAAK,eAAe,KAAK,aAAa,KAAK,sBAAsB,KAAK,eAAe,KAAK,uBAAuB,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS7mB,EAAEsT,EAAE4T,GAAG,aAAa,IAAI3hB,EAAEvF,EAAE,mBAAmB+mB,EAAE,EAAEC,EAAE,EAAE,SAASI,EAAEpnB,GAAG,IAAI,IAAIsT,EAAEtT,EAAEvL,OAAO,KAAK6e,GAAGtT,EAAEsT,GAAG,CAAC,CAAC,IAAIwT,EAAE,EAAErH,EAAE,GAAGwH,EAAE,IAAIE,EAAEF,EAAE,EAAExH,EAAEmD,EAAE,GAAG4E,EAAE,GAAGz5B,EAAE,EAAEo5B,EAAE,EAAEiE,EAAE,GAAG7D,EAAE,GAAGE,EAAE,EAAE0D,EAAE,IAAIzL,EAAE,GAAG2L,EAAE,GAAGxV,EAAE,GAAGyV,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI3V,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG4V,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAIC,EAAE,IAAIv0B,MAAM,GAAGiwB,EAAE,IAAIC,EAAEqE,GAAG,IAAIC,EAAE,IAAIx0B,MAAM,EAAE0rB,GAAGwE,EAAEsE,GAAG,IAAIQ,EAAE,IAAIh1B,MAAM,KAAKkwB,EAAE8E,GAAG,IAAIpB,EAAE,IAAI5zB,MAAM,KAAKkwB,EAAE0D,GAAG,IAAII,EAAE,IAAIh0B,MAAMuoB,GAAG2H,EAAE8D,GAAG,IAAIF,EAAEiB,EAAEG,EAAEqS,EAAE,IAAIvnC,MAAM0rB,GAAG,SAAS8b,EAAE1+B,EAAEsT,EAAE4T,EAAEE,EAAE7hB,GAAGzV,KAAKw2C,YAAYtmC,EAAElQ,KAAKy2C,WAAWjzB,EAAExjB,KAAK02C,WAAWtf,EAAEp3B,KAAK22C,MAAMrf,EAAEt3B,KAAK42C,WAAWnhC,EAAEzV,KAAK62C,UAAU3mC,GAAGA,EAAEvL,MAAM,CAAC,SAASkqC,EAAE3+B,EAAEsT,GAAGxjB,KAAK82C,SAAS5mC,EAAElQ,KAAK+2C,SAAS,EAAE/2C,KAAKg3C,UAAUxzB,CAAC,CAAC,SAAS0rB,EAAEh/B,GAAG,OAAOA,EAAE,IAAIksB,EAAElsB,GAAGksB,EAAE,KAAKlsB,IAAI,GAAG,CAAC,SAASo/B,EAAEp/B,EAAEsT,GAAGtT,EAAE6+B,YAAY7+B,EAAE4+B,WAAW,IAAItrB,EAAEtT,EAAE6+B,YAAY7+B,EAAE4+B,WAAWtrB,IAAI,EAAE,GAAG,CAAC,SAAS+rB,EAAEr/B,EAAEsT,EAAE4T,GAAGlnB,EAAEkjC,SAAS3b,EAAEL,GAAGlnB,EAAEijC,QAAQ3vB,GAAGtT,EAAEkjC,SAAS,MAAM9D,EAAEp/B,EAAEA,EAAEijC,QAAQjjC,EAAEijC,OAAO3vB,GAAGiU,EAAEvnB,EAAEkjC,SAASljC,EAAEkjC,UAAUhc,EAAEK,IAAIvnB,EAAEijC,QAAQ3vB,GAAGtT,EAAEkjC,SAAS,MAAMljC,EAAEkjC,UAAUhc,EAAE,CAAC,SAASoY,EAAEt/B,EAAEsT,EAAE4T,GAAGmY,EAAEr/B,EAAEknB,EAAE,EAAE5T,GAAG4T,EAAE,EAAE5T,EAAE,GAAG,CAAC,SAAS0sB,EAAEhgC,EAAEsT,GAAG,IAAI,IAAI4T,EAAE,EAAEA,GAAG,EAAElnB,EAAEA,KAAK,EAAEknB,IAAI,EAAE,IAAI5T,IAAI,OAAO4T,IAAI,CAAC,CAAC,SAASyZ,EAAE3gC,EAAEsT,EAAE4T,GAAG,IAAIE,EAAE7hB,EAAEuhB,EAAE,IAAI5vB,MAAMk0B,EAAE,GAAG3L,EAAE,EAAE,IAAI2H,EAAE,EAAEA,GAAGgE,EAAEhE,IAAIN,EAAEM,GAAG3H,EAAEA,EAAEyH,EAAEE,EAAE,IAAI,EAAE,IAAI7hB,EAAE,EAAEA,GAAG+N,EAAE/N,IAAI,CAAC,IAAIwhB,EAAE/mB,EAAE,EAAEuF,EAAE,GAAG,IAAIwhB,IAAI/mB,EAAE,EAAEuF,GAAGy6B,EAAElZ,EAAEC,KAAKA,GAAG,CAAC,CAAC,SAASia,EAAEhhC,GAAG,IAAIsT,EAAE,IAAIA,EAAE,EAAEA,EAAE6T,EAAE7T,IAAItT,EAAEgiC,UAAU,EAAE1uB,GAAG,EAAE,IAAIA,EAAE,EAAEA,EAAEsP,EAAEtP,IAAItT,EAAEiiC,UAAU,EAAE3uB,GAAG,EAAE,IAAIA,EAAE,EAAEA,EAAEkU,EAAElU,IAAItT,EAAEkiC,QAAQ,EAAE5uB,GAAG,EAAEtT,EAAEgiC,UAAU,EAAE7W,GAAG,EAAEnrB,EAAE8iC,QAAQ9iC,EAAE+iC,WAAW,EAAE/iC,EAAE+gC,SAAS/gC,EAAEgjC,QAAQ,CAAC,CAAC,SAAS7B,EAAEnhC,GAAG,EAAEA,EAAEkjC,SAAS9D,EAAEp/B,EAAEA,EAAEijC,QAAQ,EAAEjjC,EAAEkjC,WAAWljC,EAAE6+B,YAAY7+B,EAAE4+B,WAAW5+B,EAAEijC,QAAQjjC,EAAEijC,OAAO,EAAEjjC,EAAEkjC,SAAS,CAAC,CAAC,SAASzB,EAAEzhC,EAAEsT,EAAE4T,EAAEE,GAAG,IAAI7hB,EAAE,EAAE+N,EAAEwT,EAAE,EAAEI,EAAE,OAAOlnB,EAAEuF,GAAGvF,EAAE8mB,IAAI9mB,EAAEuF,KAAKvF,EAAE8mB,IAAIM,EAAE9T,IAAI8T,EAAEF,EAAE,CAAC,SAASic,EAAEnjC,EAAEsT,EAAE4T,GAAG,IAAI,IAAIE,EAAEpnB,EAAEuiC,KAAKrb,GAAG3hB,EAAE2hB,GAAG,EAAE3hB,GAAGvF,EAAEwiC,WAAWj9B,EAAEvF,EAAEwiC,UAAUf,EAAEnuB,EAAEtT,EAAEuiC,KAAKh9B,EAAE,GAAGvF,EAAEuiC,KAAKh9B,GAAGvF,EAAE0iC,QAAQn9B,KAAKk8B,EAAEnuB,EAAE8T,EAAEpnB,EAAEuiC,KAAKh9B,GAAGvF,EAAE0iC,SAAS1iC,EAAEuiC,KAAKrb,GAAGlnB,EAAEuiC,KAAKh9B,GAAG2hB,EAAE3hB,EAAEA,IAAI,EAAEvF,EAAEuiC,KAAKrb,GAAGE,CAAC,CAAC,SAASkc,EAAEtjC,EAAEsT,EAAE4T,GAAG,IAAIE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,EAAE,EAAE,GAAG,IAAI/mB,EAAE+gC,SAAS,KAAK3Z,EAAEpnB,EAAE6+B,YAAY7+B,EAAE6iC,MAAM,EAAE9b,IAAI,EAAE/mB,EAAE6+B,YAAY7+B,EAAE6iC,MAAM,EAAE9b,EAAE,GAAGxhB,EAAEvF,EAAE6+B,YAAY7+B,EAAE2iC,MAAM5b,GAAGA,IAAI,IAAIK,EAAEkY,EAAEt/B,EAAEuF,EAAE+N,IAAIgsB,EAAEt/B,GAAG8mB,EAAEgE,EAAEvlB,IAAI0hB,EAAE,EAAE3T,GAAG,KAAKmM,EAAE6L,EAAExE,KAAKuY,EAAEr/B,EAAEuF,GAAG2lB,EAAEpE,GAAGrH,GAAG6f,EAAEt/B,EAAE8mB,EAAEkY,IAAI5X,GAAGF,GAAG,KAAKzH,EAAE8L,EAAEzE,KAAKuY,EAAEr/B,EAAEonB,GAAGqX,EAAE3X,GAAGrH,IAAIsH,EAAE/mB,EAAE+gC,WAAWzB,EAAEt/B,EAAEmrB,EAAE7X,EAAE,CAAC,SAASiwB,EAAEvjC,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEuhB,EAAExT,EAAEszB,SAASnnB,EAAEnM,EAAEwzB,UAAUR,YAAYvf,EAAEzT,EAAEwzB,UAAUH,UAAU3f,EAAE1T,EAAEwzB,UAAUL,MAAMxf,GAAG,EAAE,IAAIjnB,EAAEwiC,SAAS,EAAExiC,EAAEyiC,SAAS10C,EAAEm5B,EAAE,EAAEA,EAAEF,EAAEE,IAAI,IAAIJ,EAAE,EAAEI,IAAIlnB,EAAEuiC,OAAOviC,EAAEwiC,UAAUvb,EAAEC,EAAElnB,EAAE0iC,MAAMxb,GAAG,GAAGJ,EAAE,EAAEI,EAAE,GAAG,EAAE,KAAKlnB,EAAEwiC,SAAS,GAAG1b,EAAE,GAAGvhB,EAAEvF,EAAEuiC,OAAOviC,EAAEwiC,UAAUvb,EAAE,IAAIA,EAAE,IAAI,EAAEjnB,EAAE0iC,MAAMn9B,GAAG,EAAEvF,EAAE8iC,UAAU/b,IAAI/mB,EAAE+iC,YAAYtjB,EAAE,EAAEla,EAAE,IAAI,IAAI+N,EAAEuzB,SAAS5f,EAAEC,EAAElnB,EAAEwiC,UAAU,EAAE,GAAGtb,EAAEA,IAAIic,EAAEnjC,EAAE8mB,EAAEI,GAAG,IAAI3hB,EAAEyhB,EAAEE,EAAElnB,EAAEuiC,KAAK,GAAGviC,EAAEuiC,KAAK,GAAGviC,EAAEuiC,KAAKviC,EAAEwiC,YAAYW,EAAEnjC,EAAE8mB,EAAE,GAAGM,EAAEpnB,EAAEuiC,KAAK,GAAGviC,EAAEuiC,OAAOviC,EAAEyiC,UAAUvb,EAAElnB,EAAEuiC,OAAOviC,EAAEyiC,UAAUrb,EAAEN,EAAE,EAAEvhB,GAAGuhB,EAAE,EAAEI,GAAGJ,EAAE,EAAEM,GAAGpnB,EAAE0iC,MAAMn9B,IAAIvF,EAAE0iC,MAAMxb,IAAIlnB,EAAE0iC,MAAMtb,GAAGpnB,EAAE0iC,MAAMxb,GAAGlnB,EAAE0iC,MAAMtb,IAAI,EAAEN,EAAE,EAAEI,EAAE,GAAGJ,EAAE,EAAEM,EAAE,GAAG7hB,EAAEvF,EAAEuiC,KAAK,GAAGh9B,IAAI49B,EAAEnjC,EAAE8mB,EAAE,GAAG,GAAG9mB,EAAEwiC,WAAWxiC,EAAEuiC,OAAOviC,EAAEyiC,UAAUziC,EAAEuiC,KAAK,GAAG,SAASviC,EAAEsT,GAAG,IAAI4T,EAAEE,EAAE7hB,EAAEuhB,EAAErH,EAAEsH,EAAEC,EAAE1T,EAAEszB,SAAS3f,EAAE3T,EAAEuzB,SAAS1f,EAAE7T,EAAEwzB,UAAUR,YAAY1jB,EAAEtP,EAAEwzB,UAAUH,UAAUnf,EAAElU,EAAEwzB,UAAUP,WAAWhf,EAAEjU,EAAEwzB,UAAUN,WAAW/e,EAAEnU,EAAEwzB,UAAUJ,WAAWvb,EAAE,EAAE,IAAIrE,EAAE,EAAEA,GAAGsE,EAAEtE,IAAI9mB,EAAEsiC,SAASxb,GAAG,EAAE,IAAIE,EAAE,EAAEhnB,EAAEuiC,KAAKviC,EAAEyiC,UAAU,GAAG,EAAEvb,EAAElnB,EAAEyiC,SAAS,EAAEvb,EAAEn5B,EAAEm5B,IAAIO,GAAGX,EAAEE,EAAE,EAAEA,EAAE,GAAGI,EAAEpnB,EAAEuiC,KAAKrb,IAAI,GAAG,GAAG,KAAKJ,EAAEW,EAAE0D,KAAKnE,EAAE,EAAEI,EAAE,GAAGN,EAAEG,EAAEG,IAAIpnB,EAAEsiC,SAASxb,KAAKrH,EAAE,EAAE8H,GAAGH,IAAI3H,EAAE+H,EAAEJ,EAAEG,IAAIR,EAAEC,EAAE,EAAEI,GAAGpnB,EAAE8iC,SAAS/b,GAAGD,EAAErH,GAAGmD,IAAI5iB,EAAE+iC,YAAYhc,GAAGI,EAAE,EAAEC,EAAE,GAAG3H,KAAK,GAAG,IAAI0L,EAAE,CAAC,EAAE,CAAC,IAAIrE,EAAEW,EAAE,EAAE,IAAIznB,EAAEsiC,SAASxb,IAAIA,IAAI9mB,EAAEsiC,SAASxb,KAAK9mB,EAAEsiC,SAASxb,EAAE,IAAI,EAAE9mB,EAAEsiC,SAAS7a,KAAK0D,GAAG,CAAC,OAAO,EAAEA,GAAG,IAAIrE,EAAEW,EAAE,IAAIX,EAAEA,IAAI,IAAIM,EAAEpnB,EAAEsiC,SAASxb,GAAG,IAAIM,GAAGH,GAAG1hB,EAAEvF,EAAEuiC,OAAOrb,MAAMF,EAAE,EAAEzhB,EAAE,KAAKuhB,IAAI9mB,EAAE8iC,UAAUhc,EAAEE,EAAE,EAAEzhB,EAAE,IAAIyhB,EAAE,EAAEzhB,GAAGyhB,EAAE,EAAEzhB,EAAE,GAAGuhB,GAAGM,IAAI,CAAC,CAAtqB,CAAwqBpnB,EAAEsT,GAAGqtB,EAAE7Z,EAAEG,EAAEjnB,EAAEsiC,SAAS,CAAC,SAASyE,EAAE/mC,EAAEsT,EAAE4T,GAAG,IAAIE,EAAE7hB,EAAEuhB,GAAG,EAAErH,EAAEnM,EAAE,GAAGyT,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,IAAI,IAAIxH,IAAIuH,EAAE,IAAIC,EAAE,GAAG3T,EAAE,GAAG4T,EAAE,GAAG,GAAG,MAAME,EAAE,EAAEA,GAAGF,EAAEE,IAAI7hB,EAAEka,EAAEA,EAAEnM,EAAE,GAAG8T,EAAE,GAAG,KAAKL,EAAEC,GAAGzhB,IAAIka,IAAIsH,EAAEE,EAAEjnB,EAAEkiC,QAAQ,EAAE38B,IAAIwhB,EAAE,IAAIxhB,GAAGA,IAAIuhB,GAAG9mB,EAAEkiC,QAAQ,EAAE38B,KAAKvF,EAAEkiC,QAAQ,EAAExiB,MAAMqH,GAAG,GAAG/mB,EAAEkiC,QAAQ,EAAE7W,KAAKrrB,EAAEkiC,QAAQ,EAAErsB,KAAKiR,EAAEvhB,EAAE0hB,GAAGF,EAAE,KAAKtH,GAAGuH,EAAE,IAAI,GAAGzhB,IAAIka,GAAGuH,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAG,CAAC,SAASggB,EAAEhnC,EAAEsT,EAAE4T,GAAG,IAAIE,EAAE7hB,EAAEuhB,GAAG,EAAErH,EAAEnM,EAAE,GAAGyT,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,IAAI,IAAIxH,IAAIuH,EAAE,IAAIC,EAAE,GAAGG,EAAE,EAAEA,GAAGF,EAAEE,IAAI,GAAG7hB,EAAEka,EAAEA,EAAEnM,EAAE,GAAG8T,EAAE,GAAG,OAAOL,EAAEC,GAAGzhB,IAAIka,GAAG,CAAC,GAAGsH,EAAEE,EAAE,KAAKqY,EAAEt/B,EAAEuF,EAAEvF,EAAEkiC,SAAS,KAAKnb,SAAS,IAAIxhB,GAAGA,IAAIuhB,IAAIwY,EAAEt/B,EAAEuF,EAAEvF,EAAEkiC,SAASnb,KAAKuY,EAAEt/B,EAAE0f,EAAE1f,EAAEkiC,SAAS7C,EAAEr/B,EAAE+mB,EAAE,EAAE,IAAIA,GAAG,IAAIuY,EAAEt/B,EAAEqrB,EAAErrB,EAAEkiC,SAAS7C,EAAEr/B,EAAE+mB,EAAE,EAAE,KAAKuY,EAAEt/B,EAAE6V,EAAE7V,EAAEkiC,SAAS7C,EAAEr/B,EAAE+mB,EAAE,GAAG,IAAID,EAAEvhB,EAAE0hB,GAAGF,EAAE,KAAKtH,GAAGuH,EAAE,IAAI,GAAGzhB,IAAIka,GAAGuH,EAAE,EAAE,IAAIA,EAAE,EAAE,EAAE,CAAC,CAACI,EAAEqX,GAAG,IAAIwI,GAAE,EAAG,SAASC,EAAElnC,EAAEsT,EAAE4T,EAAEE,GAAGiY,EAAEr/B,GAAG8mB,GAAG,IAAIM,EAAE,EAAE,GAAG,GAAG,SAASpnB,EAAEsT,EAAE4T,EAAEE,GAAG+Z,EAAEnhC,GAAGonB,IAAIgY,EAAEp/B,EAAEknB,GAAGkY,EAAEp/B,GAAGknB,IAAI3hB,EAAEq3B,SAAS58B,EAAE6+B,YAAY7+B,EAAErQ,OAAO2jB,EAAE4T,EAAElnB,EAAE4+B,SAAS5+B,EAAE4+B,SAAS1X,CAAC,CAAxG,CAA0GlnB,EAAEsT,EAAE4T,GAAE,EAAG,CAACA,EAAEmc,SAAS,SAASrjC,GAAGinC,IAAI,WAAW,IAAIjnC,EAAEsT,EAAE4T,EAAEE,EAAE7hB,EAAEuhB,EAAE,IAAI5vB,MAAMk0B,EAAE,GAAG,IAAIhE,EAAEF,EAAE,EAAEE,EAAE3H,EAAE,EAAE2H,IAAI,IAAI8D,EAAE9D,GAAGF,EAAElnB,EAAE,EAAEA,EAAE,GAAGsrB,EAAElE,GAAGpnB,IAAI8qB,EAAE5D,KAAKE,EAAE,IAAI0D,EAAE5D,EAAE,GAAGE,EAAEA,EAAE7hB,EAAE,EAAE6hB,EAAE,GAAGA,IAAI,IAAIqX,EAAErX,GAAG7hB,EAAEvF,EAAE,EAAEA,EAAE,GAAGurB,EAAEnE,GAAGpnB,IAAIksB,EAAE3mB,KAAK6hB,EAAE,IAAI7hB,IAAI,EAAE6hB,EAAExE,EAAEwE,IAAI,IAAIqX,EAAErX,GAAG7hB,GAAG,EAAEvF,EAAE,EAAEA,EAAE,GAAGurB,EAAEnE,GAAG,EAAEpnB,IAAIksB,EAAE,IAAI3mB,KAAK6hB,EAAE,IAAI9T,EAAE,EAAEA,GAAG8X,EAAE9X,IAAIwT,EAAExT,GAAG,EAAE,IAAItT,EAAE,EAAEA,GAAG,KAAKyrB,EAAE,EAAEzrB,EAAE,GAAG,EAAEA,IAAI8mB,EAAE,KAAK,KAAK9mB,GAAG,KAAKyrB,EAAE,EAAEzrB,EAAE,GAAG,EAAEA,IAAI8mB,EAAE,KAAK,KAAK9mB,GAAG,KAAKyrB,EAAE,EAAEzrB,EAAE,GAAG,EAAEA,IAAI8mB,EAAE,KAAK,KAAK9mB,GAAG,KAAKyrB,EAAE,EAAEzrB,EAAE,GAAG,EAAEA,IAAI8mB,EAAE,KAAK,IAAI6Z,EAAElV,EAAEtE,EAAE,EAAEL,GAAG9mB,EAAE,EAAEA,EAAE4iB,EAAE5iB,IAAI0rB,EAAE,EAAE1rB,EAAE,GAAG,EAAE0rB,EAAE,EAAE1rB,GAAGggC,EAAEhgC,EAAE,GAAGgrB,EAAE,IAAI0T,EAAEjT,EAAEH,EAAErE,EAAE,EAAEE,EAAEiE,GAAGa,EAAE,IAAIyS,EAAEhT,EAAEH,EAAE,EAAE3I,EAAEwI,GAAGgB,EAAE,IAAIsS,EAAE,IAAIxnC,MAAM,GAAG0e,EAAE,EAAE4R,EAAEC,EAAE,CAAvgB,GAA2gBwf,GAAE,GAAIjnC,EAAEmiC,OAAO,IAAIxD,EAAE3+B,EAAEgiC,UAAUhX,GAAGhrB,EAAEoiC,OAAO,IAAIzD,EAAE3+B,EAAEiiC,UAAUhW,GAAGjsB,EAAEqiC,QAAQ,IAAI1D,EAAE3+B,EAAEkiC,QAAQ9V,GAAGpsB,EAAEijC,OAAO,EAAEjjC,EAAEkjC,SAAS,EAAElC,EAAEhhC,EAAE,EAAEknB,EAAE8c,iBAAiBkD,EAAEhgB,EAAE+X,gBAAgB,SAASj/B,EAAEsT,EAAE4T,EAAEE,GAAG,IAAI7hB,EAAEuhB,EAAErH,EAAE,EAAE,EAAEzf,EAAE2qB,OAAO,IAAI3qB,EAAEw6B,KAAK4I,YAAYpjC,EAAEw6B,KAAK4I,UAAU,SAASpjC,GAAG,IAAIsT,EAAE4T,EAAE,WAAW,IAAI5T,EAAE,EAAEA,GAAG,GAAGA,IAAI4T,KAAK,EAAE,GAAG,EAAEA,GAAG,IAAIlnB,EAAEgiC,UAAU,EAAE1uB,GAAG,OAAOyT,EAAE,GAAG,IAAI/mB,EAAEgiC,UAAU,KAAK,IAAIhiC,EAAEgiC,UAAU,KAAK,IAAIhiC,EAAEgiC,UAAU,IAAI,OAAOhb,EAAE,IAAI1T,EAAE,GAAGA,EAAE2T,EAAE3T,IAAI,GAAG,IAAItT,EAAEgiC,UAAU,EAAE1uB,GAAG,OAAO0T,EAAE,OAAOD,CAAC,CAAlO,CAAoO/mB,IAAIujC,EAAEvjC,EAAEA,EAAEmiC,QAAQoB,EAAEvjC,EAAEA,EAAEoiC,QAAQ3iB,EAAE,SAASzf,GAAG,IAAIsT,EAAE,IAAIyzB,EAAE/mC,EAAEA,EAAEgiC,UAAUhiC,EAAEmiC,OAAO0E,UAAUE,EAAE/mC,EAAEA,EAAEiiC,UAAUjiC,EAAEoiC,OAAOyE,UAAUtD,EAAEvjC,EAAEA,EAAEqiC,SAAS/uB,EAAEkU,EAAE,EAAE,GAAGlU,GAAG,IAAItT,EAAEkiC,QAAQ,EAAE1W,EAAElY,GAAG,GAAGA,KAAK,OAAOtT,EAAE8iC,SAAS,GAAGxvB,EAAE,GAAG,EAAE,EAAE,EAAEA,CAAC,CAArL,CAAuLtT,GAAGuF,EAAEvF,EAAE8iC,QAAQ,EAAE,IAAI,GAAGhc,EAAE9mB,EAAE+iC,WAAW,EAAE,IAAI,IAAIx9B,IAAIA,EAAEuhB,IAAIvhB,EAAEuhB,EAAEI,EAAE,EAAEA,EAAE,GAAG3hB,IAAI,IAAI+N,EAAE4zB,EAAElnC,EAAEsT,EAAE4T,EAAEE,GAAG,IAAIpnB,EAAEm6B,UAAUrT,IAAIvhB,GAAG85B,EAAEr/B,EAAE,GAAGonB,EAAE,EAAE,GAAG,GAAGkc,EAAEtjC,EAAEyrB,EAAEC,KAAK2T,EAAEr/B,EAAE,GAAGonB,EAAE,EAAE,GAAG,GAAG,SAASpnB,EAAEsT,EAAE4T,EAAEE,GAAG,IAAI7hB,EAAE,IAAI85B,EAAEr/B,EAAEsT,EAAE,IAAI,GAAG+rB,EAAEr/B,EAAEknB,EAAE,EAAE,GAAGmY,EAAEr/B,EAAEonB,EAAE,EAAE,GAAG7hB,EAAE,EAAEA,EAAE6hB,EAAE7hB,IAAI85B,EAAEr/B,EAAEA,EAAEkiC,QAAQ,EAAE1W,EAAEjmB,GAAG,GAAG,GAAGyhC,EAAEhnC,EAAEA,EAAEgiC,UAAU1uB,EAAE,GAAG0zB,EAAEhnC,EAAEA,EAAEiiC,UAAU/a,EAAE,EAAE,CAA/I,CAAiJlnB,EAAEA,EAAEmiC,OAAO0E,SAAS,EAAE7mC,EAAEoiC,OAAOyE,SAAS,EAAEpnB,EAAE,GAAG6jB,EAAEtjC,EAAEA,EAAEgiC,UAAUhiC,EAAEiiC,YAAYjB,EAAEhhC,GAAGonB,GAAG+Z,EAAEnhC,EAAE,EAAEknB,EAAE2Z,UAAU,SAAS7gC,EAAEsT,EAAE4T,GAAG,OAAOlnB,EAAE6+B,YAAY7+B,EAAE6iC,MAAM,EAAE7iC,EAAE+gC,UAAUztB,IAAI,EAAE,IAAItT,EAAE6+B,YAAY7+B,EAAE6iC,MAAM,EAAE7iC,EAAE+gC,SAAS,GAAG,IAAIztB,EAAEtT,EAAE6+B,YAAY7+B,EAAE2iC,MAAM3iC,EAAE+gC,UAAU,IAAI7Z,EAAElnB,EAAE+gC,WAAW,IAAIztB,EAAEtT,EAAEgiC,UAAU,EAAE9a,MAAMlnB,EAAEgjC,UAAU1vB,IAAItT,EAAEgiC,UAAU,GAAGlX,EAAE5D,GAAGD,EAAE,MAAMjnB,EAAEiiC,UAAU,EAAEjD,EAAE1rB,OAAOtT,EAAE+gC,WAAW/gC,EAAE4iC,YAAY,CAAC,EAAE1b,EAAE6c,UAAU,SAAS/jC,GAAGq/B,EAAEr/B,EAAE,EAAE,GAAGs/B,EAAEt/B,EAAEmrB,EAAEM,GAAG,SAASzrB,GAAG,KAAKA,EAAEkjC,UAAU9D,EAAEp/B,EAAEA,EAAEijC,QAAQjjC,EAAEijC,OAAO,EAAEjjC,EAAEkjC,SAAS,GAAG,GAAGljC,EAAEkjC,WAAWljC,EAAE6+B,YAAY7+B,EAAE4+B,WAAW,IAAI5+B,EAAEijC,OAAOjjC,EAAEijC,SAAS,EAAEjjC,EAAEkjC,UAAU,EAAE,CAAvJ,CAAyJljC,EAAE,CAAC,EAAE,CAAC,kBAAkB,KAAK,GAAG,CAAC,SAASA,EAAEsT,EAAE4T,GAAG,aAAa5T,EAAEuT,QAAQ,WAAW/2B,KAAKwQ,MAAM,KAAKxQ,KAAKmrC,QAAQ,EAAEnrC,KAAKorC,SAAS,EAAEprC,KAAKwwC,SAAS,EAAExwC,KAAKqrC,OAAO,KAAKrrC,KAAKurC,SAAS,EAAEvrC,KAAK2qC,UAAU,EAAE3qC,KAAKivC,UAAU,EAAEjvC,KAAKuqC,IAAI,GAAGvqC,KAAKs2B,MAAM,KAAKt2B,KAAKszC,UAAU,EAAEtzC,KAAKuwC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,SAASrgC,EAAEsT,EAAE4T,IAAG,SAAUlnB,IAAI,SAASknB,EAAEE,GAAG,aAAa,IAAIF,EAAE2N,aAAa,CAAC,IAAItvB,EAAEuhB,EAAExT,EAAEmM,EAAEsH,EAAE,EAAEC,EAAE,CAAC,EAAEC,GAAE,EAAGE,EAAED,EAAEpiB,SAAS9E,EAAEhB,OAAOmoC,gBAAgBnoC,OAAOmoC,eAAejgB,GAAGlnB,EAAEA,GAAGA,EAAE/P,WAAW+P,EAAEknB,EAAE3hB,EAAE,qBAAqB,CAAC,EAAEgrB,SAASjJ,KAAKJ,EAAEkgB,SAAS,SAASpnC,GAAGonC,QAAQC,SAAS,WAAW7f,EAAExnB,EAAE,EAAE,EAAE,WAAW,GAAGknB,EAAEiS,cAAcjS,EAAEogB,cAAc,CAAC,IAAItnC,GAAE,EAAGsT,EAAE4T,EAAE+R,UAAU,OAAO/R,EAAE+R,UAAU,WAAWj5B,GAAE,CAAE,EAAEknB,EAAEiS,YAAY,GAAG,KAAKjS,EAAE+R,UAAU3lB,EAAEtT,CAAC,CAAC,CAAhJ,IAAqJyf,EAAE,gBAAgB1Q,KAAKw4B,SAAS,IAAIrgB,EAAEx2B,iBAAiBw2B,EAAEx2B,iBAAiB,UAAU62B,GAAE,GAAIL,EAAEsgB,YAAY,YAAYjgB,GAAG,SAASvnB,GAAGknB,EAAEiS,YAAY1Z,EAAEzf,EAAE,IAAI,GAAGknB,EAAE0R,iBAAiBtlB,EAAE,IAAIslB,gBAAgBI,MAAMC,UAAU,SAASj5B,GAAGwnB,EAAExnB,EAAE/R,KAAK,EAAE,SAAS+R,GAAGsT,EAAE4lB,MAAMC,YAAYn5B,EAAE,GAAGmnB,GAAG,uBAAuBA,EAAEtH,cAAc,WAAWiH,EAAEK,EAAE4R,gBAAgB,SAAS/4B,GAAG,IAAIsT,EAAE6T,EAAEtH,cAAc,UAAUvM,EAAEulB,mBAAmB,WAAWrR,EAAExnB,GAAGsT,EAAEulB,mBAAmB,KAAK/R,EAAEvF,YAAYjO,GAAGA,EAAE,IAAI,EAAEwT,EAAE1F,YAAY9N,EAAE,GAAG,SAAStT,GAAG/P,WAAWu3B,EAAE,EAAExnB,EAAE,EAAEA,EAAE60B,aAAa,SAAS70B,GAAG,mBAAmBA,IAAIA,EAAE,IAAIynC,SAAS,GAAGznC,IAAI,IAAI,IAAIsT,EAAE,IAAIpc,MAAMi3B,UAAU15B,OAAO,GAAGyyB,EAAE,EAAEA,EAAE5T,EAAE7e,OAAOyyB,IAAI5T,EAAE4T,GAAGiH,UAAUjH,EAAE,GAAG,IAAIE,EAAE,CAACsgB,SAAS1nC,EAAEnR,KAAKykB,GAAG,OAAO0T,EAAED,GAAGK,EAAE7hB,EAAEwhB,GAAGA,GAAG,EAAE/mB,EAAE2nC,eAAe/kB,CAAC,CAAC,SAASA,EAAE5iB,UAAUgnB,EAAEhnB,EAAE,CAAC,SAASwnB,EAAExnB,GAAG,GAAGinB,EAAEh3B,WAAWu3B,EAAE,EAAExnB,OAAO,CAAC,IAAIsT,EAAE0T,EAAEhnB,GAAG,GAAGsT,EAAE,CAAC2T,GAAE,EAAG,KAAK,SAASjnB,GAAG,IAAIsT,EAAEtT,EAAE0nC,SAASxgB,EAAElnB,EAAEnR,KAAK,OAAOq4B,EAAEzyB,QAAQ,KAAK,EAAE6e,IAAI,MAAM,KAAK,EAAEA,EAAE4T,EAAE,IAAI,MAAM,KAAK,EAAE5T,EAAE4T,EAAE,GAAGA,EAAE,IAAI,MAAM,KAAK,EAAE5T,EAAE4T,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAI,MAAM,QAAQ5T,EAAE4f,MAAM9L,EAAEF,GAAG,CAA3K,CAA6K5T,EAAE,CAAC,QAAQsP,EAAE5iB,GAAGinB,GAAE,CAAE,CAAC,CAAC,CAAC,CAAC,SAASM,EAAEvnB,GAAGA,EAAE5Q,SAAS83B,GAAG,iBAAiBlnB,EAAE/R,MAAM,IAAI+R,EAAE/R,KAAK0K,QAAQ8mB,IAAI+H,GAAGxnB,EAAE/R,KAAK2G,MAAM6qB,EAAEhrB,QAAQ,CAAC,CAA7gD,CAA+gD,oBAAoBk/B,UAAK,IAAS3zB,EAAElQ,KAAKkQ,EAAE2zB,KAAM,GAAErM,KAAKx3B,KAAK,oBAAoBujB,EAAAA,EAAOA,EAAAA,EAAO,oBAAoBsgB,KAAKA,KAAK,oBAAoBhkC,OAAOA,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAApr9F,CAAyr9F,GAAG,E,0ICAp99F,SAASi4C,EAAmBn5C,GAAM,OAAEo5C,GAAS,GAAS,CAAC,GAE1D,IAAKp5C,GAAwB,KAAhBA,EAAK6J,OACd,MAAO,CAAEiG,OAAO,GAIpB,GAAa,MAAT9P,EACA,MAAO,CAAE8P,OAAO,GAIpB,IAAK9P,EAAKkD,WAAW,KACjB,MAAO,CACH4M,OAAO,EACP9Q,MAAO2lB,EAAAA,GAAKC,OAAOC,EAAE,sCAK7B,GAAI,qBAAqBvU,KAAKtQ,IAASA,EAAKc,SAAS,MACjD,MAAO,CACHgP,OAAO,EACP9Q,MAAO2lB,EAAAA,GAAKC,OAAOC,EAAE,uCAM7B,MAAMw0B,EAAaD,EAAS,aAAe,SAC3C,GAAIC,EAAW/oC,KAAKtQ,GAChB,MAAO,CACH8P,OAAO,EACP9Q,MAAO2lB,EAAAA,GAAKC,OAAOC,EAAE,mCAK7B,GAAI7kB,EAAKc,SAAS,MACd,MAAO,CACHgP,OAAO,EACP9Q,MAAO2lB,EAAAA,GAAKC,OAAOC,EAAE,0CAM7B,MAAMy0B,EAAe,8CACrB,OAAIA,EAAahpC,KAAKtQ,GACX,CACH8P,OAAO,EACP9Q,MAAO2lB,EAAAA,GAAKC,OAAOC,EAAE,iCAItB,CAAE/U,OAAO,EACpB,C","sources":["webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cb6d","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cba1","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?540f","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?256e","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?66ed","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?f2e3","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?f98e","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?9ca8","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?6b85","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?e3f8","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8326","webpack://sanyue_imghub/./src/utils/fileIdValidator.js","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8cda","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?0608","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?ed70","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?e516","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?06e7","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?fd3e","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?6ed7","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?ff7f","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?8969","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?8cbb","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?a03e","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?0461","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?4854","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?005a","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?09c8","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?eb45","webpack://sanyue_imghub/./src/utils/fileManager.js","webpack://sanyue_imghub/./src/utils/dashboard/rectIntersects.js","webpack://sanyue_imghub/./src/utils/dashboard/useDragSelect.js","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?40d2","webpack://sanyue_imghub/./node_modules/jszip/dist/jszip.min.js","webpack://sanyue_imghub/./src/utils/pathValidator.js"],"sourcesContent":["import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"move-file-dialog-wrapper\"\n};\nconst _hoisted_2 = {\n class: \"move-dialog-content\"\n};\nconst _hoisted_3 = {\n class: \"move-path-input-container\"\n};\nconst _hoisted_4 = {\n class: \"move-dialog-hint\"\n};\nconst _hoisted_5 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_6 = {\n class: \"move-drawer-content\"\n};\nconst _hoisted_7 = {\n class: \"move-path-section\"\n};\nconst _hoisted_8 = {\n class: \"move-path-label\"\n};\nconst _hoisted_9 = {\n class: \"move-path-input-row\"\n};\nconst _hoisted_10 = {\n class: \"move-dialog-hint\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"embedded-tree-section\"\n};\nconst _hoisted_12 = {\n class: \"tree-section-header\"\n};\nconst _hoisted_13 = {\n class: \"tree-section-title\"\n};\nconst _hoisted_14 = {\n class: \"tree-container\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_16 = {\n class: \"error-text\"\n};\nconst _hoisted_17 = {\n class: \"node-label\"\n};\nconst _hoisted_18 = {\n class: \"drawer-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_dialog, {\n key: 0,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n width: \"500px\",\n \"show-close\": true,\n class: \"move-dialog\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, {\n prepend: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_DirectoryTreePicker, {\n \"current-directory\": $props.currentDirectory,\n source: \"admin\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-picker-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])]), _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t('moveFile.hint')), 1)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"])) : (_openBlock(), _createBlock(_component_el_drawer, {\n key: 1,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n direction: \"btt\",\n size: \"auto\",\n \"show-close\": true,\n class: \"move-drawer\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n onClick: $options.handleClose,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n class: \"directory-picker-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showTreePicker = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('moveFile.hintMobile')), 1)]), $data.showTreePicker ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('moveFile.selectDirectory')), 1), _createVNode(_component_el_button, {\n text: \"\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showTreePicker = false)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_14, [$data.treeError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($data.treeError), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleTreeNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_17, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.treeLoading]])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"]))]);\n}","import DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'MoveFileDialog',\n components: {\n DirectoryTreePicker\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentDirectory: {\n type: String,\n default: ''\n },\n isBatchMove: {\n type: Boolean,\n default: false\n },\n initialPath: {\n type: String,\n default: '/'\n }\n },\n emits: ['update:modelValue', 'confirm', 'close'],\n data() {\n return {\n targetPath: '/',\n loading: false,\n windowWidth: window.innerWidth,\n // 移动端内嵌树相关\n showTreePicker: false,\n treeData: [],\n treeLoading: false,\n treeError: '',\n treeProps: {\n children: 'children',\n label: 'name'\n }\n };\n },\n computed: {\n dialogVisible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n isDesktop() {\n return this.windowWidth > 768;\n }\n },\n watch: {\n modelValue(newVal) {\n if (newVal) {\n this.targetPath = this.initialPath || '/';\n this.showTreePicker = false;\n }\n },\n showTreePicker(newVal) {\n if (newVal && !this.isDesktop) {\n this.fetchDirectoryTree();\n }\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n handleDirectorySelect(path) {\n this.targetPath = path;\n },\n handleConfirm() {\n this.$emit('confirm', this.targetPath);\n },\n handleClose() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n },\n // 移动端内嵌树相关方法\n async fetchDirectoryTree() {\n this.treeLoading = true;\n this.treeError = '';\n try {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.treeError = this.$t('moveFile.authFailed');\n } else {\n this.treeError = this.$t('moveFile.serverError');\n }\n return;\n }\n const data = await response.json();\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n this.treeError = this.$t('moveFile.loadTreeFailed');\n } finally {\n this.treeLoading = false;\n }\n },\n handleTreeNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.targetPath = path;\n this.showTreePicker = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MoveFileDialog.vue?vue&type=template&id=7aaa437c&scoped=true\"\nimport script from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\n\nimport \"./MoveFileDialog.vue?vue&type=style&index=0&id=7aaa437c&scoped=true&lang=css\"\nimport \"./MoveFileDialog.vue?vue&type=style&index=1&id=7aaa437c&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aaa437c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"mobile-drawer-header\"\n};\nconst _hoisted_2 = {\n class: \"mobile-drawer-title\"\n};\nconst _hoisted_3 = {\n class: \"mobile-drawer-content\"\n};\nconst _hoisted_4 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"drawer-slide\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-overlay\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"mobile-drawer\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('mobileDirectory.title')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"mobile-drawer-close\",\n onClick: $options.close\n }, null, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: !$props.currentPath\n }]),\n onClick: _cache[0] || (_cache[0] = $event => $options.navigate(''))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.rootDirectory')), 1)], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (folder, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: index === $options.pathParts.length - 1\n }]),\n style: _normalizeStyle({\n paddingLeft: (index + 1) * 16 + 16 + 'px'\n }),\n onClick: $event => $options.navigate($options.pathParts.slice(0, index + 1).join('/'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(folder), 1)], 14, _hoisted_4);\n }), 128)), $props.currentPath ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-back\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goBack && $options.goBack(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.goBack')), 1)])) : _createCommentVNode(\"\", true)])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'MobileDirectoryDrawer',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentPath: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'navigate', 'goBack'],\n computed: {\n pathParts() {\n return this.currentPath.split('/').filter(Boolean);\n }\n },\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n navigate(path) {\n this.$emit('navigate', path);\n this.close();\n },\n goBack() {\n this.$emit('goBack');\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileDirectoryDrawer.vue?vue&type=template&id=3b79a1b6&scoped=true\"\nimport script from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\n\nimport \"./MobileDirectoryDrawer.vue?vue&type=style&index=0&id=3b79a1b6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3b79a1b6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"bottom-sheet-header\"\n};\nconst _hoisted_2 = {\n class: \"bottom-sheet-title\"\n};\nconst _hoisted_3 = {\n class: \"bottom-sheet-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"bottom-sheet\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bottom-sheet-overlay\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_cache[10] || (_cache[10] = _createElementVNode(\"div\", {\n class: \"bottom-sheet-handle\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.title), 1)]), _createElementVNode(\"div\", _hoisted_3, [!$props.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[0] || (_cache[0] = $event => $options.handleAction('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.viewDetail')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[1] || (_cache[1] = $event => $options.handleAction('copy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleAction('download'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.downloadFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleAction('tag'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.tagManagement')), 1)])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[5] || (_cache[5] = $event => $options.handleAction('folderCopy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[6] || (_cache[6] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFolder')), 1)])], 64)), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item bottom-sheet-danger\",\n onClick: _cache[7] || (_cache[7] = $event => $options.handleAction('delete'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString($props.isFolder ? _ctx.$t('mobileAction.deleteFolder') : _ctx.$t('mobileAction.deleteFile')), 1)])])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","export default {\n name: 'MobileActionSheet',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n title: {\n type: String,\n default: ''\n },\n isFolder: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:modelValue', 'action'],\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n handleAction(action) {\n this.$emit('action', action);\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileActionSheet.vue?vue&type=template&id=efef5a4c&scoped=true\"\nimport script from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\nexport * from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\n\nimport \"./MobileActionSheet.vue?vue&type=style&index=0&id=efef5a4c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-efef5a4c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"batch-tag-container\"\n};\nconst _hoisted_2 = {\n class: \"tab-content\"\n};\nconst _hoisted_3 = {\n class: \"tab-description\"\n};\nconst _hoisted_4 = {\n class: \"input-section\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = {\n class: \"tags-to-add-section\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_9 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_10 = {\n class: \"action-buttons\"\n};\nconst _hoisted_11 = {\n class: \"tab-content\"\n};\nconst _hoisted_12 = {\n class: \"tab-description\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_14 = {\n class: \"tags-container\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_16 = {\n class: \"tab-content\"\n};\nconst _hoisted_17 = {\n class: \"tab-description\"\n};\nconst _hoisted_18 = {\n class: \"action-buttons\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('batchTag.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.activeTab = $event),\n type: \"border-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.addTab'),\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, _toDisplayString(_ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n })), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('batchTag.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddInputTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddInputTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_6);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.pendingTags')), 1), $data.tagsToAdd.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.tagsToAdd, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('batchTag.noPendingTags')), 1))]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.executeAddTags,\n loading: $data.loading,\n disabled: $data.tagsToAdd.length === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.addToAllFiles')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.removeTab'),\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('batchTag.removeDescription')), 1), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.commonTags')), 1), _createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.commonTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveCommonTag(tag),\n class: \"tag-item\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('batchTag.noCommonTags')), 1))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.clearTab'),\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"p\", _hoisted_17, _toDisplayString(_ctx.$t('batchTag.clearDescription', {\n count: $options.fileCount\n })), 1), _createVNode(_component_el_alert, {\n title: _ctx.$t('batchTag.clearWarningTitle'),\n type: \"warning\",\n description: _ctx.$t('batchTag.clearWarningDesc'),\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }, null, 8, [\"title\", \"description\"]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.confirmClearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'BatchTagDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n selectedFiles: {\n type: Array,\n required: true,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n activeTab: 'add',\n inputTag: '',\n tagsToAdd: [],\n commonTags: [],\n suggestions: [],\n showSuggestions: false,\n loading: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '600px';\n },\n selectedFilesOnly() {\n // 排除文件夹,只保留文件\n return this.selectedFiles.filter(file => !file.isFolder);\n },\n fileCount() {\n return this.selectedFilesOnly.length;\n },\n fileIds() {\n return this.selectedFilesOnly.map(file => file.name);\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadCommonTags();\n } else {\n this.resetData();\n }\n },\n activeTab(newTab) {\n if (newTab === 'remove') {\n this.loadCommonTags();\n }\n }\n },\n methods: {\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n },\n async loadCommonTags() {\n if (this.selectedFilesOnly.length === 0) {\n this.commonTags = [];\n return;\n }\n try {\n // 获取所有文件的标签\n const tagPromises = this.selectedFilesOnly.map(file => fetchWithAuth(`/api/manage/tags/${encodeURIComponent(file.name)}`, {\n method: 'GET'\n }));\n const responses = await Promise.all(tagPromises);\n const allTags = [];\n for (const response of responses) {\n if (response.ok) {\n const data = await response.json();\n allTags.push(data.tags || []);\n }\n }\n\n // 找出共有标签\n if (allTags.length > 0) {\n this.commonTags = allTags[0].filter(tag => allTags.every(tags => tags.includes(tag)));\n } else {\n this.commonTags = [];\n }\n } catch (error) {\n console.error('Error loading common tags:', error);\n ElMessage.error(this.$t('batchTag.loadCommonTagsFailed'));\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.tagsToAdd.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddInputTag();\n },\n handleAddInputTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.tagsToAdd.includes(tag)) {\n ElMessage.warning(this.$t('batchTag.tagAlreadyInList'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.tagsToAdd.push(tag);\n this.inputTag = '';\n this.showSuggestions = false;\n },\n removeFromToAdd(tag) {\n const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\n if (this.tagsToAdd.length === 0) {\n ElMessage.warning(this.$t('batchTag.pleaseAddTags'));\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.addSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveCommonTag(tag) {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.removeSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('batchTag.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n ElMessageBox.confirm(this.$t('batchTag.clearConfirmMessage', {\n count: this.fileCount\n }), this.$t('batchTag.clearConfirmTitle'), {\n confirmButtonText: this.$t('batchTag.clearConfirmOk'),\n cancelButtonText: this.$t('batchTag.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info(this.$t('batchTag.clearCancelled'));\n });\n },\n async executeClearTags() {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.clearSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error(this.$t('batchTag.clearFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClose() {\n this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=0d04afa1&scoped=true\"\nimport script from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\nexport * from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\n\nimport \"./BatchTagDialog.vue?vue&type=style&index=0&id=0d04afa1&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0d04afa1\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-management-container\"\n};\nconst _hoisted_2 = {\n class: \"input-section\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_4 = [\"onClick\"];\nconst _hoisted_5 = {\n class: \"current-tags-section\"\n};\nconst _hoisted_6 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_7 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_8 = {\n class: \"popular-tags-section\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"empty-message\"\n};\nconst _hoisted_12 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_Loading = _resolveComponent(\"Loading\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('tagManagement.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('tagManagement.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_4);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.currentTags')), 1), $data.currentTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('tagManagement.noTags')), 1))]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.popularTags')), 1), $data.popularTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.popularTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n onClick: $event => $options.handleAddPopularTag(tag),\n class: \"tag-item clickable\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))])) : $data.loadingPopularTags ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_icon, {\n class: \"is-loading\"\n }, {\n default: _withCtx(() => [_createVNode(_component_Loading)]),\n _: 1\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('tagManagement.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString(_ctx.$t('tagManagement.noPopularTags')), 1))])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n currentTags: [],\n inputTag: '',\n suggestions: [],\n popularTags: [],\n showSuggestions: false,\n loading: false,\n loadingPopularTags: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '500px';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n methods: {\n async loadFileTags() {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n } else {\n throw new Error('Failed to load tags');\n }\n } catch (error) {\n console.error('Error loading file tags:', error);\n ElMessage.error(this.$t('tagManagement.loadFailed'));\n }\n },\n async loadPopularTags() {\n this.loadingPopularTags = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/autocomplete?limit=20', {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.popularTags = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n }\n } catch (error) {\n console.error('Error loading popular tags:', error);\n } finally {\n this.loadingPopularTags = false;\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddTag();\n },\n async handleAddTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.currentTags.includes(tag)) {\n ElMessage.warning(this.$t('tagManagement.tagExists'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.inputTag = '';\n this.showSuggestions = false;\n ElMessage.success(this.$t('tagManagement.addSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n const error = await response.json();\n throw new Error(error.message || this.$t('tagManagement.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || this.$t('tagManagement.addFailed'));\n }\n },\n async handleRemoveTag(tag) {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n ElMessage.success(this.$t('tagManagement.removeSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error(this.$t('tagManagement.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('tagManagement.removeFailed'));\n }\n },\n handleAddPopularTag(tag) {\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=24c809e4&scoped=true\"\nimport script from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\nexport * from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\n\nimport \"./TagManagementDialog.vue?vue&type=style&index=0&id=24c809e4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-24c809e4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"detail-actions\"\n};\nconst _hoisted_2 = {\n class: \"preview-section\"\n};\nconst _hoisted_3 = {\n class: \"preview-content\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1\n};\nconst _hoisted_7 = {\n key: 1\n};\nconst _hoisted_8 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"align-items\": \"center\",\n \"gap\": \"6px\"\n }\n};\nconst _hoisted_9 = {\n key: 1,\n style: {\n \"color\": \"#59636E\"\n }\n};\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_11 = {\n key: 1,\n style: {\n \"color\": \"#59636E\"\n }\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('fileDetail.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [!$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('download')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.download')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 1,\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('tagManagement')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.tags')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 2,\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('block')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.blacklist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 3,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.$emit('white')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.whitelist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 4,\n type: \"danger\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$emit('delete')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.deleteBtn')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 5,\n type: \"warning\",\n onClick: _cache[5] || (_cache[5] = $event => $options.startEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.edit')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 6,\n type: \"info\",\n onClick: _cache[6] || (_cache[6] = $event => $options.openRenameDialog()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"i-cursor\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.rename')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 7,\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => $options.saveMetadata()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\",\n loading: $data.editSaving\n }, {\n default: _withCtx(() => [!$data.editSaving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\",\n style: {\n \"margin-right\": \"3px\"\n }\n })) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.save')), 1)]),\n _: 1\n }, 8, [\"loading\"])) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 8,\n onClick: _cache[8] || (_cache[8] = $event => $options.cancelEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.cancel')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.activeTab = $event),\n onTabClick: $options.handleTabClick,\n style: {\n \"margin-bottom\": \"10px\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('fileDetail.originUrl'),\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: \"Markdown\",\n name: \"mdUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.mdUrl,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $props.urls.mdUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"HTML\",\n name: \"htmlUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.htmlUrl,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $props.urls.htmlUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"BBCode\",\n name: \"bbUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.bbUrl,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $props.urls.bbUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), $props.file?.metadata?.TgFileId ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 0,\n label: \"TG File ID\",\n name: \"tgId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.tgId,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $props.urls.tgId = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3Location ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 1,\n label: \"S3 Location\",\n name: \"s3Location\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3Location,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $props.urls.S3Location = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3CdnFileUrl ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 2,\n label: \"S3 CDN URL\",\n name: \"s3CdnFileUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3CdnFileUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $props.urls.S3CdnFileUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [$options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n src: $props.fileLink,\n autoplay: \"\",\n muted: \"\",\n loop: \"\",\n class: \"video-preview\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.openImageLink && $options.openImageLink(...args))\n }, null, 8, _hoisted_4)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_5)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n \"preview-src-list\": [$props.fileLink],\n \"preview-teleported\": true,\n fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))])]), _createVNode(_component_el_descriptions, {\n border: \"\",\n column: $options.descColumn\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileNameLabel')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileName,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.editForm.FileName = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileType')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileType,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.editForm.FileType = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileTypePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString($props.file?.metadata?.FileType || _ctx.$t('fileDetail.unknown')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileSizeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.fileSizeDisplay), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.imageDimensions')\n }, {\n default: _withCtx(() => [$options.imageDimensions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Width) + \" × \" + _toDisplayString($props.file?.metadata?.Height), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"display\": \"inline-flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.orientationIcon), 1)]),\n _: 1\n })])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('fileDetail.noDimensions')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadTimeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.channelTypeAndName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.accessStatusAndReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: $options.accessTagType,\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Label || _ctx.$t('fileDetail.noTags')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadIP')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadAddressLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileTags')\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.file?.metadata?.Tags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128))])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('fileDetail.noTags')), 1))]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"column\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showRenameDialog,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.showRenameDialog = $event),\n title: _ctx.$t('fileDetail.renameTitle'),\n width: $options.dialogWidth,\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[21] || (_cache[21] = $event => $options.closeRenameDialog())\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameCancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[22] || (_cache[22] = $event => $options.submitRename()),\n loading: $data.renameSaving,\n disabled: !$data.renameValidation.valid\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameConfirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n onSubmit: _withModifiers($options.submitRename, [\"prevent\"])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('fileDetail.renameLabel'),\n error: $data.renameValidation.error\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.renameForm.newFileId,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.renameForm.newFileId = $event),\n placeholder: _ctx.$t('fileDetail.renamePlaceholder'),\n onInput: $options.validateRenameInput,\n clearable: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"onInput\"])]),\n _: 1\n }, 8, [\"label\", \"error\"])]),\n _: 1\n }, 8, [\"onSubmit\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","/**\r\n * File_ID 验证器模块\r\n * 提供 File_ID 格式验证功能,用于重命名操作的前端校验\r\n * 非法字符规则复用 pathValidator 的字符集\r\n */\r\n\r\n/**\r\n * 非法字符正则表达式\r\n * 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n * 与 pathValidator.js 保持一致\r\n */\r\nconst INVALID_CHARS = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n\r\n/**\r\n * 验证 File_ID 格式\r\n * @param {string} newFileId - 新的 File_ID\r\n * @param {string} currentFileId - 当前 File_ID\r\n * @returns {{ valid: boolean, error?: string }}\r\n */\r\nexport function validateFileId(newFileId, currentFileId) {\r\n // 1. 空值/纯空白检测\r\n if (!newFileId || newFileId.trim() === '') {\r\n return {\r\n valid: false,\r\n error: '文件名不能为空'\r\n };\r\n }\r\n\r\n // 2. 与当前 File_ID 相同检测\r\n if (newFileId === currentFileId) {\r\n return {\r\n valid: false,\r\n error: '文件名未发生变化'\r\n };\r\n }\r\n\r\n // 3. 路径穿越检测\r\n if (newFileId.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 3.5 单独的 . 路径段检测(仅检查 /./ 或开头 ./,不检查末尾以允许继续输入如 .123)\r\n if (/\\/\\.\\//.test(newFileId) || /^\\.\\//.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 4. 非法字符检测(复用 pathValidator 的字符规则)\r\n if (INVALID_CHARS.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名包含非法字符,请使用合法的文件名格式'\r\n };\r\n }\r\n\r\n // 5. 连续斜杠检测\r\n if (newFileId.includes('//')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含连续的斜杠'\r\n };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n","import { ElMessage } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFileId } from '@/utils/fileIdValidator';\nexport default {\n name: 'FileDetailDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n file: {\n type: Object,\n default: null\n },\n fileLink: {\n type: String,\n default: ''\n },\n urls: {\n type: Object,\n default: () => ({\n originUrl: '',\n mdUrl: '',\n htmlUrl: '',\n bbUrl: '',\n tgId: '',\n S3Location: '',\n S3CdnFileUrl: ''\n })\n }\n },\n emits: ['update:modelValue', 'download', 'tagManagement', 'block', 'white', 'delete', 'metadataUpdated', 'fileRenamed'],\n watch: {\n visible(val) {\n if (!val) {\n // 关闭弹窗时退出编辑状态\n this.isEditing = false;\n this.editSaving = false;\n }\n }\n },\n data() {\n return {\n activeTab: 'originUrl',\n isEditing: false,\n editForm: {\n FileName: '',\n FileType: ''\n },\n editSaving: false,\n showRenameDialog: false,\n renameForm: {\n newFileId: ''\n },\n renameValidation: {\n valid: true,\n error: ''\n },\n renameSaving: false\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '95%' : '900px';\n },\n descColumn() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n uploadTime() {\n if (this.file?.metadata?.TimeStamp) {\n return new Date(this.file.metadata.TimeStamp).toLocaleString();\n }\n return this.$t('fileDetail.unknown');\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return this.$t('fileDetail.accessNormalWhitelist');\n if (listType === 'Block') return this.$t('fileDetail.accessBlockedBlacklist');\n if (label === 'adult') return this.$t('fileDetail.accessBlockedReview');\n return this.$t('fileDetail.accessNormal');\n },\n accessTagType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return 'success';\n if (listType === 'Block') return 'danger';\n if (label === 'adult') return 'danger';\n return 'success';\n },\n imageDimensions() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (width && height) return true;\n return null;\n },\n orientationIcon() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (!width || !height) return '';\n const ratio = width / height;\n if (ratio > 1.1) return this.$t('fileDetail.orientationLandscape');\n if (ratio < 0.9) return this.$t('fileDetail.orientationPortrait');\n return this.$t('fileDetail.orientationSquare');\n },\n fileSizeDisplay() {\n const sizeBytes = this.file?.metadata?.FileSizeBytes;\n const sizeMB = this.file?.metadata?.FileSize;\n if (sizeBytes) {\n // 根据大小选择合适的单位\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(2)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return this.$t('fileDetail.unknown');\n }\n },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) video.play();else video.pause();\n },\n handleTabClick() {},\n handleUrlClick(e) {\n const input = e.target;\n input.select();\n navigator.clipboard.writeText(input.value).then(() => {\n ElMessage.success(this.$t('fileDetail.linkCopied'));\n });\n },\n openImageLink() {\n if (this.fileLink) {\n window.open(this.fileLink, '_blank');\n }\n },\n startEdit() {\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.isEditing = true;\n },\n cancelEdit() {\n this.isEditing = false;\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.editSaving = false;\n },\n async saveMetadata() {\n this.editSaving = true;\n try {\n const fileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/metadata/${fileId}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n FileName: this.editForm.FileName,\n FileType: this.editForm.FileType\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.metadataSaved'));\n this.isEditing = false;\n this.$emit('metadataUpdated', fileId, data.metadata);\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n }\n } catch (error) {\n console.error('Error saving metadata:', error);\n ElMessage.error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n } finally {\n this.editSaving = false;\n }\n },\n openRenameDialog() {\n this.renameForm.newFileId = this.file?.name || '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n this.showRenameDialog = true;\n },\n closeRenameDialog() {\n this.showRenameDialog = false;\n this.renameForm.newFileId = '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n },\n validateRenameInput() {\n const result = validateFileId(this.renameForm.newFileId, this.file?.name || '');\n this.renameValidation = {\n valid: result.valid,\n error: result.error || ''\n };\n },\n async submitRename() {\n if (this.renameSaving) return;\n\n // Validate input first\n this.validateRenameInput();\n if (!this.renameValidation.valid) {\n return;\n }\n this.renameSaving = true;\n try {\n const oldFileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/rename/${oldFileId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n newFileId: this.renameForm.newFileId\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.renameSuccess'));\n this.showRenameDialog = false;\n this.$emit('fileRenamed', oldFileId, this.renameForm.newFileId, data.metadata);\n } else if (response.status === 409) {\n // Conflict — target File_ID already exists\n this.renameValidation = {\n valid: false,\n error: this.$t('fileDetail.renameConflict')\n };\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.renameFailed'));\n }\n } catch (error) {\n console.error('Error renaming file:', error);\n ElMessage.error(error.message || this.$t('fileDetail.renameFailed'));\n } finally {\n this.renameSaving = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=38a97614&scoped=true\"\nimport script from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\nexport * from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\n\nimport \"./FileDetailDialog.vue?vue&type=style&index=0&id=38a97614&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-38a97614\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"batch-floating-bar\"\n};\nconst _hoisted_2 = {\n class: \"batch-selection-summary\"\n};\nconst _hoisted_3 = {\n class: \"batch-selection-count\"\n};\nconst _hoisted_4 = {\n class: \"batch-floating-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"batch-toolbar\"\n }, {\n default: _withCtx(() => [$props.selectedCount > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"batch-floating-btn ghost\",\n \"aria-label\": _ctx.$t('dashboard.clearSelection'),\n onClick: $options.handleClear\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"batch-floating-icon\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _cache[0] || (_cache[0] = _createElementVNode(\"span\", {\n class: \"batch-toolbar-divider\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_4, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.actions, action => {\n return _openBlock(), _createBlock(_component_el_tooltip, {\n key: action.command,\n disabled: $options.disableTooltip,\n content: _ctx.$t(action.label),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"batch-floating-btn\", action.className]),\n \"aria-label\": _ctx.$t(action.label),\n onClick: $event => $options.handleAction(action.command)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: action.icon,\n class: \"batch-floating-icon\"\n }, null, 8, [\"icon\"])]),\n _: 2\n }, 1032, [\"class\", \"aria-label\", \"onClick\"])]),\n _: 2\n }, 1032, [\"disabled\", \"content\"]);\n }), 128))])])) : _createCommentVNode(\"\", true)]),\n _: 1\n });\n}","export default {\n name: 'BatchActionBar',\n props: {\n selectedCount: {\n type: Number,\n required: true\n }\n },\n emits: ['action', 'clear'],\n data() {\n return {\n actions: [{\n command: 'copy',\n label: 'dashboard.copy',\n icon: 'copy',\n className: 'copy'\n }, {\n command: 'download',\n label: 'dashboard.download',\n icon: 'download',\n className: 'download'\n }, {\n command: 'move',\n label: 'dashboard.move',\n icon: 'file-export',\n className: 'move'\n }, {\n command: 'tagManagement',\n label: 'dashboard.tagManagement',\n icon: 'tags',\n className: 'tag'\n }, {\n command: 'ban',\n label: 'dashboard.addToBlacklist',\n icon: 'ban',\n className: 'ban'\n }, {\n command: 'white',\n label: 'dashboard.addToWhitelist',\n icon: 'shield-alt',\n className: 'white'\n }, {\n command: 'delete',\n label: 'dashboard.delete',\n icon: 'trash-alt',\n className: 'danger'\n }]\n };\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n }\n },\n methods: {\n handleAction(command) {\n this.$emit('action', command);\n },\n handleClear() {\n this.$emit('clear');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchActionBar.vue?vue&type=template&id=6de9da06&scoped=true\"\nimport script from \"./BatchActionBar.vue?vue&type=script&lang=js\"\nexport * from \"./BatchActionBar.vue?vue&type=script&lang=js\"\n\nimport \"./BatchActionBar.vue?vue&type=style&index=0&id=6de9da06&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6de9da06\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, withKeys as _withKeys, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"aria-checked\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"dashboard-checkbox\", [`dashboard-checkbox--${$props.variant}`, {\n 'checked': $props.checked,\n 'indeterminate': $props.indeterminate && !$props.checked\n }]]),\n role: \"checkbox\",\n \"aria-checked\": $options.ariaChecked,\n tabindex: \"0\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args)),\n onKeydown: [_cache[1] || (_cache[1] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"enter\"])), _cache[2] || (_cache[2] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"space\"]))]\n }, [$props.checked ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"dashboard-checkbox-mark\"\n })) : $props.indeterminate ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"minus\",\n class: \"dashboard-checkbox-mark\"\n })) : _createCommentVNode(\"\", true)], 42, _hoisted_1);\n}","export default {\n name: 'DashboardCheckbox',\n props: {\n checked: {\n type: Boolean,\n default: false\n },\n indeterminate: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: 'list',\n validator: value => ['list', 'breadcrumb'].includes(value)\n }\n },\n emits: ['click'],\n computed: {\n ariaChecked() {\n if (this.checked) return 'true';\n if (this.indeterminate) return 'mixed';\n return 'false';\n }\n },\n methods: {\n handleClick(event) {\n this.$emit('click', event);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardCheckbox.vue?vue&type=template&id=f8222714&scoped=true\"\nimport script from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardCheckbox.vue?vue&type=style&index=0&id=f8222714&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f8222714\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n class: \"filename-start\"\n};\nconst _hoisted_6 = {\n class: \"filename-end\"\n};\nconst _hoisted_7 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_9 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_10 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"channel-name-box\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_13 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"address-box\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"list-item\",\n onTouchstart: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[9] || (_cache[9] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_DashboardCheckbox, {\n checked: $data.localSelected,\n onClick: _withModifiers($options.toggleSelect, [\"stop\"])\n }, null, 8, [\"checked\", \"onClick\"])]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [$options.isFolder ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"list-folder-icon\"\n })) : $options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: $props.fileLink,\n class: \"list-preview-img\",\n muted: \"\",\n preload: \"metadata\"\n }, null, 8, _hoisted_2)) : $options.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 2,\n src: $props.fileLink,\n class: \"list-preview-img\",\n loading: \"lazy\",\n decoding: \"async\"\n }, null, 8, _hoisted_3)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"list-file-icon\"\n }))]), _createElementVNode(\"div\", {\n class: \"list-col list-col-name\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [_createElementVNode(\"span\", {\n class: \"filename-ellipsis\",\n title: $options.displayName\n }, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.fileNameStart), 1), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.fileNameEnd), 1)], 8, _hoisted_4)]), _createElementVNode(\"div\", _hoisted_7, [!$options.isFolder && $props.item.metadata?.Tags && $props.item.metadata.Tags.length > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.item.metadata.Tags.slice(0, 3), (tag, tagIndex) => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: tagIndex,\n class: \"color-tag\",\n style: _normalizeStyle({\n background: $options.getTagColor(tagIndex)\n })\n }, _toDisplayString(tag), 5);\n }), 128)), $props.item.metadata.Tags.length > 3 ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"color-tag color-tag-more\",\n style: _normalizeStyle({\n background: $options.getTagColor(3)\n })\n }, \"+\" + _toDisplayString($props.item.metadata.Tags.length - 3), 5)) : _createCommentVNode(\"\", true)], 64)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"-\"))]), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.isFolder ? '-' : $props.item.metadata?.Channel || $props.item.channelTag || '-'), 1), _createElementVNode(\"div\", _hoisted_10, [!$options.isFolder && $props.item.metadata?.ChannelName ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString($props.item.metadata.ChannelName), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))]), _createElementVNode(\"div\", _hoisted_13, [!$options.isFolder && $props.item.metadata?.UploadIP ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString($props.item.metadata.UploadIP), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_15, \"-\"))]), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.isFolder ? '-' : $options.fileSizeDisplay), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.uploadDate), 1), _createElementVNode(\"div\", _hoisted_18, [!$options.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[2] || (_cache[2] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('folderCopy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[7] || (_cache[7] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"content\"])])], 32);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nexport default {\n name: 'FileListItem',\n components: {\n DashboardCheckbox\n },\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n default: ''\n }\n },\n emits: ['update:selected', 'enter', 'detail', 'copy', 'folderCopy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n tagColors: ['#f472b6', '#a78bfa', '#60a5fa', '#34d399']\n };\n },\n computed: {\n isFolder() {\n // 检查 isFolder 属性或名称以 / 结尾\n return this.item.isFolder || this.item.name?.endsWith('/');\n },\n isVideo() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isImage() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp');\n },\n displayName() {\n if (this.isFolder) {\n const parts = this.item.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.item.name;\n }\n return this.item.metadata?.FileName || this.getFileName(this.item.name);\n },\n fileNameStart() {\n const name = this.displayName;\n if (name.length <= 20) return name;\n return name.slice(0, -8);\n },\n fileNameEnd() {\n const name = this.displayName;\n if (name.length <= 20) return '';\n return name.slice(-8);\n },\n uploadDate() {\n if (this.item.uploaded) {\n return new Date(this.item.uploaded).toLocaleDateString();\n }\n if (this.item.metadata?.TimeStamp) {\n return new Date(this.item.metadata.TimeStamp).toLocaleDateString();\n }\n return '-';\n },\n fileSizeDisplay() {\n const sizeBytes = this.item.metadata?.FileSizeBytes;\n const sizeMB = this.item.metadata?.FileSize;\n if (sizeBytes) {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return '-';\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n },\n methods: {\n toggleSelect() {\n this.localSelected = !this.localSelected;\n this.$emit('update:selected', this.localSelected);\n },\n handlePreviewClick() {\n if (this.isFolder) {\n this.$emit('enter');\n } else {\n this.$emit('detail');\n }\n },\n getFileName(name) {\n const parts = (name || '').split('/');\n return parts[parts.length - 1];\n },\n getTagColor(index) {\n return this.tagColors[index % this.tagColors.length];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileListItem.vue?vue&type=template&id=4b029ac8&scoped=true\"\nimport script from \"./FileListItem.vue?vue&type=script&lang=js\"\nexport * from \"./FileListItem.vue?vue&type=script&lang=js\"\n\nimport \"./FileListItem.vue?vue&type=style&index=0&id=4b029ac8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4b029ac8\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"file-short-info\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"success-tag\"\n};\nconst _hoisted_3 = {\n key: 1,\n class: \"fail-tag\"\n};\nconst _hoisted_4 = {\n key: 2,\n class: \"success-tag\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"primary-tag\"\n};\nconst _hoisted_6 = {\n key: 0,\n style: {\n \"margin-left\": \"2px\"\n }\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"skeleton-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"error-text\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_12 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_13 = {\n class: \"file-name-row\"\n};\nconst _hoisted_14 = {\n class: \"file-name\"\n};\nconst _hoisted_15 = {\n class: \"action-bar\"\n};\nconst _hoisted_16 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_17 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card\",\n onTouchstart: _cache[17] || (_cache[17] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[18] || (_cache[18] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[19] || (_cache[19] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", _hoisted_1, [$props.item.metadata?.ListType === 'White' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString($options.channelTag), 1)) : $props.item.metadata?.ListType === 'Block' || $props.item.metadata?.Label === 'adult' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($options.channelTag), 1)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString($options.channelTag), 1)), $props.item.metadata?.Tags && $props.item.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\",\n style: {\n \"margin-right\": \"3px\",\n \"font-size\": \"12px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString($props.item.metadata.Tags[0]) + \" \", 1), $props.item.metadata.Tags.length > 1 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" (+\" + _toDisplayString($props.item.metadata.Tags.length - 1) + \") \", 1)) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)]), $options.isVideo ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [$data.videoLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7)) : $data.videoError ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"error-wrapper\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])) : _createCommentVNode(\"\", true), _withDirectives(_createElementVNode(\"video\", {\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[5] || (_cache[5] = $event => $options.handleVideoHover($event, false)),\n onFullscreenchange: _cache[6] || (_cache[6] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onWebkitfullscreenchange: _cache[7] || (_cache[7] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onLoadeddata: _cache[8] || (_cache[8] = $event => $data.videoLoading = false),\n onError: _cache[9] || (_cache[9] = (...args) => $options.handleVideoError && $options.handleVideoError(...args))\n }, null, 40, _hoisted_9), [[_vShow, !$data.videoLoading && !$data.videoError]])], 64)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"music\",\n class: \"file-icon audio-icon\"\n })])) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n \"preview-teleported\": true,\n src: $props.fileLink,\n \"preview-src-list\": $props.previewSrcList,\n fit: \"cover\",\n lazy: \"\",\n decoding: \"async\",\n class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, null, -1)]))]),\n error: _withCtx(() => [_createElementVNode(\"div\", {\n class: \"error-wrapper\",\n onClick: _cache[11] || (_cache[11] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.detail'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[12] || (_cache[12] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[13] || (_cache[13] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[14] || (_cache[14] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[15] || (_cache[15] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[16] || (_cache[16] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])])]),\n _: 1\n });\n}","export default {\n name: 'FileCard',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n required: true\n },\n previewSrcList: {\n type: Array,\n default: () => []\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'detail', 'copy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n videoLoading: true,\n videoError: false\n };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n displayName() {\n const fileName = this.item.metadata?.FileName || this.item.name || '';\n const parts = fileName.split('/');\n return parts[parts.length - 1];\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n },\n fileLink() {\n // 链接变化时重置加载状态\n this.videoLoading = true;\n this.videoError = false;\n }\n },\n methods: {\n handleVideoError() {\n this.videoLoading = false;\n this.videoError = true;\n },\n handleVideoClick(e) {\n const video = e.target;\n if (video.requestFullscreen) {\n video.requestFullscreen();\n } else if (video.webkitRequestFullscreen) {\n video.webkitRequestFullscreen();\n } else if (video.mozRequestFullScreen) {\n video.mozRequestFullScreen();\n } else if (video.msRequestFullscreen) {\n video.msRequestFullscreen();\n }\n },\n handleFullscreenChange(e) {\n const video = e.target;\n const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n if (isFullscreen) {\n // 进入全屏:取消静音和循环\n video.muted = false;\n video.loop = false;\n } else {\n // 退出全屏:恢复静音和循环,暂停并重置\n video.muted = true;\n video.loop = true;\n video.pause();\n video.currentTime = 0;\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileCard.vue?vue&type=template&id=12b39bad&scoped=true\"\nimport script from \"./FileCard.vue?vue&type=script&lang=js\"\nexport * from \"./FileCard.vue?vue&type=script&lang=js\"\n\nimport \"./FileCard.vue?vue&type=style&index=0&id=12b39bad&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-12b39bad\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_2 = {\n class: \"file-name-row\"\n};\nconst _hoisted_3 = {\n class: \"file-name\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"action-bar\"\n};\nconst _hoisted_5 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card folder-card\",\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", {\n class: \"folder-icon\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('enter'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"folder-icon-svg\"\n })]), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($options.folderName), 1)]), $props.showActions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_cache[9] || (_cache[9] = _createElementVNode(\"div\", {\n class: \"action-bar-left\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n });\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FolderCard',\n props: {\n name: {\n type: String,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n showActions: {\n type: Boolean,\n default: true\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'enter', 'copy', 'move', 'delete', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected\n };\n },\n computed: {\n folderName() {\n const parts = this.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.name;\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FolderCard.vue?vue&type=template&id=e3ec6a12&scoped=true\"\nimport script from \"./FolderCard.vue?vue&type=script&lang=js\"\nexport * from \"./FolderCard.vue?vue&type=script&lang=js\"\n\nimport \"./FolderCard.vue?vue&type=style&index=0&id=e3ec6a12&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e3ec6a12\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createStaticVNode as _createStaticVNode } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return $props.type === 'card' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'skeleton-' + i,\n class: \"skeleton-card\"\n }, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"div\", {\n class: \"skeleton-image\"\n }, null, -1), _createElementVNode(\"div\", {\n class: \"skeleton-info\"\n }, [_createElementVNode(\"div\", {\n class: \"skeleton-text\"\n })], -1)]))]);\n }), 128)) : $props.type === 'list' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'list-skeleton-' + i,\n class: \"list-item skeleton-list-item\"\n }, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"
\", 10)]))]);\n }), 128)) : _createCommentVNode(\"\", true);\n}","export default {\n name: 'SkeletonLoader',\n props: {\n type: {\n type: String,\n default: 'card',\n validator: value => ['card', 'list'].includes(value)\n },\n count: {\n type: Number,\n default: 15\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SkeletonLoader.vue?vue&type=template&id=ef863880&scoped=true\"\nimport script from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\nexport * from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\n\nimport \"./SkeletonLoader.vue?vue&type=style&index=0&id=ef863880&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ef863880\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"el-dropdown-link filter-trigger\"\n};\nconst _hoisted_2 = {\n class: \"filter-section\"\n};\nconst _hoisted_3 = {\n class: \"filter-title\"\n};\nconst _hoisted_4 = {\n class: \"filter-options\"\n};\nconst _hoisted_5 = {\n class: \"filter-section\"\n};\nconst _hoisted_6 = {\n class: \"filter-title\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-title\"\n};\nconst _hoisted_10 = {\n class: \"filter-options\"\n};\nconst _hoisted_11 = {\n class: \"filter-section\"\n};\nconst _hoisted_12 = {\n class: \"filter-title\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n class: \"filter-section\"\n};\nconst _hoisted_15 = {\n class: \"filter-title\"\n};\nconst _hoisted_16 = {\n class: \"filter-options\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_18 = {\n class: \"filter-title\"\n};\nconst _hoisted_19 = {\n class: \"filter-options\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_21 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_22 = {\n class: \"filter-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_badge = _resolveComponent(\"el-badge\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n return _openBlock(), _createBlock(_component_el_dropdown, {\n \"hide-on-click\": false,\n trigger: \"click\",\n class: \"filter-dropdown\",\n ref: \"dropdownRef\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"filter-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('filter.accessStatus')), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.accessStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localFilters.accessStatus = $event),\n onChange: _cache[1] || (_cache[1] = $event => $options.handleFilterChange('accessStatus'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.accessStatusOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'accessStatus-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('filter.blackWhiteList')), 1), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.listType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.localFilters.listType = $event),\n onChange: _cache[3] || (_cache[3] = $event => $options.handleFilterChange('listType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.listTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'listType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('filter.reviewResult')), 1), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.label,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.localFilters.label = $event),\n onChange: _cache[5] || (_cache[5] = $event => $options.handleFilterChange('label'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.labelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'label-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('filter.fileType')), 1), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.fileType,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.localFilters.fileType = $event),\n onChange: _cache[7] || (_cache[7] = $event => $options.handleFilterChange('fileType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.fileTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'fileType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('filter.channelType')), 1), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channel,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.localFilters.channel = $event),\n onChange: _cache[9] || (_cache[9] = $event => $options.handleFilterChange('channel'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.channelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channel-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), $props.channelNameOptions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('filter.channelName')), 1), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.localFilters.channelName = $event),\n onChange: _cache[11] || (_cache[11] = $event => $options.handleFilterChange('channelName'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedChannelNames, (group, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: 'group-' + group.type\n }, [index > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(group.typeLabel), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.channels, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channelName-' + option.type + '-' + option.name,\n label: option.type + ':' + option.name\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.name), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))], 64);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('filter.clearFilters')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_1, [_createVNode(_component_el_badge, {\n value: $options.activeFilterCount,\n hidden: $options.activeFilterCount === 0,\n class: \"filter-badge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"filter\",\n class: \"header-icon\"\n })]),\n _: 1\n }, 8, [\"value\", \"hidden\"])])]),\n _: 1\n }, 512);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nexport default {\n name: 'FilterDropdown',\n props: {\n filters: {\n type: Object,\n default: () => ({\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'none'\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n })\n },\n channelNameOptions: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:filters', 'change'],\n data() {\n return {\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\n // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.blocked'),\n value: 'blocked'\n }];\n },\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions() {\n return [{\n label: this.$t('filter.whiteList'),\n value: 'White'\n }, {\n label: this.$t('filter.blackList'),\n value: 'Block'\n }, {\n label: this.$t('filter.notSet'),\n value: 'None'\n }];\n },\n // 审查结果选项\n labelOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.teenContent'),\n value: 'teen'\n }, {\n label: this.$t('filter.adultContent'),\n value: 'adult'\n }];\n },\n fileTypeOptions() {\n return [{\n label: this.$t('filter.image'),\n value: 'image'\n }, {\n label: this.$t('filter.video'),\n value: 'video'\n }, {\n label: this.$t('filter.audio'),\n value: 'audio'\n }, {\n label: this.$t('filter.other'),\n value: 'other'\n }];\n },\n channelOptions() {\n return [{\n label: 'Telegram',\n value: 'TelegramNew'\n }, {\n label: 'Cloudflare R2',\n value: 'CloudflareR2'\n }, {\n label: 'S3',\n value: 'S3'\n }, {\n label: 'Discord',\n value: 'Discord'\n }, {\n label: 'HuggingFace',\n value: 'HuggingFace'\n }, {\n label: 'WebDAV',\n value: 'WebDAV'\n }, {\n label: this.$t('filter.externalLink'),\n value: 'External'\n }];\n },\n activeFilterCount() {\n return Object.values(this.localFilters).reduce((count, arr) => count + arr.length, 0);\n },\n // 按类型分组渠道名称\n groupedChannelNames() {\n const groups = {};\n this.channelNameOptions.forEach(option => {\n if (!groups[option.type]) {\n groups[option.type] = {\n type: option.type,\n typeLabel: option.typeLabel,\n channels: []\n };\n }\n groups[option.type].channels.push(option);\n });\n return Object.values(groups);\n }\n },\n watch: {\n filters: {\n handler(newFilters) {\n this.localFilters = {\n accessStatus: Array.isArray(newFilters.accessStatus) ? [...newFilters.accessStatus] : [],\n listType: Array.isArray(newFilters.listType) ? [...newFilters.listType] : [],\n label: Array.isArray(newFilters.label) ? [...newFilters.label] : [],\n fileType: Array.isArray(newFilters.fileType) ? [...newFilters.fileType] : [],\n channel: Array.isArray(newFilters.channel) ? [...newFilters.channel] : [],\n channelName: Array.isArray(newFilters.channelName) ? [...newFilters.channelName] : []\n };\n },\n immediate: true,\n deep: true\n }\n },\n methods: {\n handleFilterChange(type) {\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type,\n filters: {\n ...this.localFilters\n }\n });\n },\n clearFilters() {\n this.localFilters = {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type: 'clear',\n filters: {\n ...this.localFilters\n }\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FilterDropdown.vue?vue&type=template&id=e6a38b20&scoped=true\"\nimport script from \"./FilterDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FilterDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./FilterDropdown.vue?vue&type=style&index=0&id=e6a38b20&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e6a38b20\"]])\n\nexport default __exports__","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withKeys as _withKeys, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content\"\n};\nconst _hoisted_3 = {\n class: \"search-area\"\n};\nconst _hoisted_4 = {\n class: \"search-card\"\n};\nconst _hoisted_5 = {\n class: \"actions\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_8 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_9 = {\n class: \"breadcrumb-view-toggle\",\n role: \"group\"\n};\nconst _hoisted_10 = [\"title\", \"aria-pressed\"];\nconst _hoisted_11 = [\"title\", \"aria-pressed\"];\nconst _hoisted_12 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_13 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_14 = [\"title\"];\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_16 = {\n class: \"empty-text\"\n};\nconst _hoisted_17 = {\n class: \"empty-hint\"\n};\nconst _hoisted_18 = {\n class: \"list-header\"\n};\nconst _hoisted_19 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_20 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_21 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_22 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_23 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_24 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_25 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_26 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_27 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_28 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_30 = {\n class: \"empty-text\"\n};\nconst _hoisted_31 = {\n class: \"empty-hint\"\n};\nconst _hoisted_32 = {\n class: \"pagination-container\"\n};\nconst _hoisted_33 = {\n class: \"pagination-center\"\n};\nconst _hoisted_34 = {\n class: \"pagination-right\"\n};\nconst _hoisted_35 = {\n class: \"page-total\"\n};\nconst _hoisted_36 = {\n class: \"page-jump\"\n};\nconst _hoisted_37 = {\n class: \"dialog-section\"\n};\nconst _hoisted_38 = {\n class: \"section-header\"\n};\nconst _hoisted_39 = {\n class: \"section-title\"\n};\nconst _hoisted_40 = {\n class: \"section-content\"\n};\nconst _hoisted_41 = {\n class: \"dialog-section\"\n};\nconst _hoisted_42 = {\n class: \"section-header\"\n};\nconst _hoisted_43 = {\n class: \"section-title\"\n};\nconst _hoisted_44 = {\n class: \"section-content\"\n};\nconst _hoisted_45 = {\n class: \"setting-item\"\n};\nconst _hoisted_46 = {\n class: \"setting-label\"\n};\nconst _hoisted_47 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_48 = {\n class: \"setting-label\"\n};\nconst _hoisted_49 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_FilterDropdown = _resolveComponent(\"FilterDropdown\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\");\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\");\n const _component_SkeletonLoader = _resolveComponent(\"SkeletonLoader\");\n const _component_FolderCard = _resolveComponent(\"FolderCard\");\n const _component_FileCard = _resolveComponent(\"FileCard\");\n const _component_FileListItem = _resolveComponent(\"FileListItem\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_main = _resolveComponent(\"el-main\");\n const _component_el_container = _resolveComponent(\"el-container\");\n const _component_BatchActionBar = _resolveComponent(\"BatchActionBar\");\n const _component_FileDetailDialog = _resolveComponent(\"FileDetailDialog\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_TagManagementDialog = _resolveComponent(\"TagManagementDialog\");\n const _component_BatchTagDialog = _resolveComponent(\"BatchTagDialog\");\n const _component_MobileActionSheet = _resolveComponent(\"MobileActionSheet\");\n const _component_MobileDirectoryDrawer = _resolveComponent(\"MobileDirectoryDrawer\");\n const _component_MoveFileDialog = _resolveComponent(\"MoveFileDialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_container, null, {\n default: _withCtx(() => [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"dashboard\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.tempSearch,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.tempSearch = $event),\n size: \"small\",\n placeholder: _ctx.$t('dashboard.searchPlaceholder'),\n onKeyup: _withKeys($options.handleSearch, [\"enter\"])\n }, {\n suffix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"search\",\n class: \"search-icon\",\n onClick: $options.handleSearch\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\"])]), _createVNode(_component_FilterDropdown, {\n filters: $data.filters,\n \"onUpdate:filters\": _cache[1] || (_cache[1] = $event => $data.filters = $event),\n channelNameOptions: $data.channelNameOptions,\n onChange: $options.handleFilterChange\n }, null, 8, [\"filters\", \"channelNameOptions\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_dropdown, {\n onCommand: $options.sort,\n \"hide-on-click\": false\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"dateDesc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByDateDesc')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByNameAsc')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: $options.sortIcon,\n class: \"header-icon\"\n }, null, 8, [\"icon\"])])]),\n _: 1\n }, 8, [\"onCommand\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showUrlDialog = true)\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: _normalizeClass([\"main-container\", {\n 'has-batch-toolbar': $data.selectedFiles.length > 0\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.selectPage,\n indeterminate: $options.selectedPageFiles && !$options.selectPage,\n variant: \"breadcrumb\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"checked\", \"indeterminate\", \"onClick\"]), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'card'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.cardView'),\n \"aria-pressed\": $data.viewMode === 'card',\n onClick: _cache[3] || (_cache[3] = $event => $options.setViewMode('card'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"th-large\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_10), _createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'list'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.listView'),\n \"aria-pressed\": $data.viewMode === 'list',\n onClick: _cache[4] || (_cache[4] = $event => $options.setViewMode('list'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"list\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_11)]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[5] || (_cache[5] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : _ctx.$t('dashboard.rootDirectory')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[6] || (_cache[6] = $event => $options.navigateToFolder(''))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"breadcrumb-home-icon\"\n })]),\n _: 1\n }), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentPath.split('/').filter(Boolean), (folder, index) => {\n return _openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: index,\n onClick: $event => $options.navigateToFolder($data.currentPath.split('/').filter(Boolean).slice(0, index + 1).join('/'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(folder), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))]),\n _: 1\n })]), _createElementVNode(\"span\", {\n class: \"stats-badge\",\n title: _ctx.$t('dashboard.totalFiles', {\n count: _ctx.$data.Number\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_14)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\",\n onTouchstartPassive: _cache[7] || (_cache[7] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[8] || (_cache[8] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[9] || (_cache[9] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_16, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_17, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [$options.isFolder(item) ? (_openBlock(), _createBlock(_component_FolderCard, {\n key: 0,\n name: item.name,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n showActions: !$data.isSearchMode,\n disableTooltip: $options.disableTooltip,\n onEnter: $event => $options.enterFolder(item.name),\n onCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onTouchstart: $event => $options.handleFolderTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"name\", \"selected\", \"onUpdate:selected\", \"showActions\", \"disableTooltip\", \"onEnter\", \"onCopy\", \"onMove\", \"onDelete\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"])) : (_openBlock(), _createBlock(_component_FileCard, {\n key: 1,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n previewSrcList: item.previewSrcList,\n disableTooltip: $options.disableTooltip,\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"previewSrcList\", \"disableTooltip\", \"onDetail\", \"onCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]))], 64);\n }), 128))], 34)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\",\n onTouchstartPassive: _cache[11] || (_cache[11] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[12] || (_cache[12] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[13] || (_cache[13] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.isSelectAll,\n indeterminate: $options.isIndeterminate,\n onClick: _cache[10] || (_cache[10] = $event => $options.handleSelectAllPage(!$options.isSelectAll))\n }, null, 8, [\"checked\", \"indeterminate\"])]), _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_22, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_23, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_24, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_25, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_26, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_28, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_30, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_31, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createBlock(_component_FileListItem, {\n key: index,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n onEnter: $event => $options.enterFolder(item.name),\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onFolderCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.isFolder(item) ? $options.handleFolderTouchStart(item, index) : $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"onEnter\", \"onDetail\", \"onCopy\", \"onFolderCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]);\n }), 128))], 34)), $setup.isDragging ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"drag-select-overlay\",\n style: _normalizeStyle({\n position: 'fixed',\n left: $setup.selectionRect.left + 'px',\n top: $setup.selectionRect.top + 'px',\n width: $setup.selectionRect.width + 'px',\n height: $setup.selectionRect.height + 'px'\n })\n }, null, 4)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_32, [_createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $options.filteredTableData.length,\n \"page-size\": $data.pageSize,\n \"current-page\": $data.currentPage,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"page-size\", \"current-page\", \"pager-count\", \"onCurrentChange\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.refreshFileList,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync\",\n class: _normalizeClass({\n 'fa-spin': $data.refreshLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"]), $data.currentPage === Math.ceil($options.filteredTableData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.loadMore')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.jumpPage = $event),\n size: \"small\",\n class: \"jump-input\",\n onKeyup: _withKeys($options.handleJumpPage, [\"enter\"])\n }, null, 8, [\"modelValue\", \"onKeyup\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: $options.handleJumpPage,\n class: \"jump-btn\"\n }, {\n default: _withCtx(() => [...(_cache[31] || (_cache[31] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n }), _createVNode(_component_BatchActionBar, {\n \"selected-count\": $data.selectedFiles.length,\n onAction: $options.handleBatchAction,\n onClear: $options.clearSelection\n }, null, 8, [\"selected-count\", \"onAction\", \"onClear\"]), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[16] || (_cache[16] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[17] || (_cache[17] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[18] || (_cache[18] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[19] || (_cache[19] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[20] || (_cache[20] = $event => $options.handleDetailDelete($data.detailFile?.name)),\n onMetadataUpdated: $options.handleMetadataUpdated,\n onFileRenamed: $options.handleFileRenamed\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\", \"onMetadataUpdated\", \"onFileRenamed\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('dashboard.linkFormat'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.defaultUrlFormat = $event),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"originUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"mdUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[32] || (_cache[32] = _createElementVNode(\"span\", null, \"Markdown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"htmlUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[33] || (_cache[33] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"bbUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[34] || (_cache[34] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"tgId\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"radio-icon\"\n }), _cache[35] || (_cache[35] = _createElementVNode(\"span\", null, \"TG File ID\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3Location\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.s3Link')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_41, [_createElementVNode(\"div\", _hoisted_42, [_createElementVNode(\"span\", _hoisted_43, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"span\", _hoisted_46, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_49, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[24] || (_cache[24] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.showTagDialog = $event),\n fileId: $data.currentTagFile,\n onTagsUpdated: $options.handleTagsUpdated\n }, null, 8, [\"modelValue\", \"fileId\", \"onTagsUpdated\"]), _createVNode(_component_BatchTagDialog, {\n modelValue: $data.showBatchTagDialog,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.showBatchTagDialog = $event),\n selectedFiles: $data.selectedFiles,\n onTagsUpdated: $options.handleBatchTagsUpdated\n }, null, 8, [\"modelValue\", \"selectedFiles\", \"onTagsUpdated\"]), _createVNode(_component_MobileActionSheet, {\n modelValue: $data.showMobileActionModal,\n \"onUpdate:modelValue\": _cache[28] || (_cache[28] = $event => $data.showMobileActionModal = $event),\n title: $data.mobileActionIsFolder ? $options.getFolderName($data.mobileActionFile?.name || '') : $data.mobileActionFile?.metadata?.FileName || $options.getFileName($data.mobileActionFile?.name || ''),\n isFolder: $data.mobileActionIsFolder,\n onAction: $options.handleMobileAction\n }, null, 8, [\"modelValue\", \"title\", \"isFolder\", \"onAction\"]), _createVNode(_component_MobileDirectoryDrawer, {\n modelValue: $data.showMobileDirectoryDrawer,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"]), _createVNode(_component_MoveFileDialog, {\n modelValue: $data.showMoveDialog,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.showMoveDialog = $event),\n \"current-directory\": $data.currentPath,\n \"is-batch-move\": $data.isBatchMove,\n \"initial-path\": $data.moveTargetPath,\n onConfirm: $options.confirmMove\n }, null, 8, [\"modelValue\", \"current-directory\", \"is-batch-move\", \"initial-path\", \"onConfirm\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\nimport i18n from '@/locales';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n this.fileListCache = null;\r\n this.storageWarningShown = false;\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n const fileList = this.getMutableFileList();\r\n return {\r\n ...fileList,\r\n files: [...(fileList.files || [])],\r\n directories: [...(fileList.directories || [])],\r\n };\r\n }\r\n\r\n getMutableFileList() {\r\n if (this.fileListCache) {\r\n return this.fileListCache;\r\n }\r\n\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n this.fileListCache = fileList ? JSON.parse(fileList) : this.createEmptyFileList();\r\n return this.fileListCache;\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n this.fileListCache = this.createEmptyFileList();\r\n return this.fileListCache;\r\n }\r\n }\r\n\r\n // 更新内存缓存,并尽量持久化到 localStorage\r\n updateFileListCache(fileList) {\r\n this.fileListCache = fileList || this.createEmptyFileList();\r\n const persisted = this.persistFileListCache();\r\n\r\n return {\r\n cacheUpdated: true,\r\n persisted,\r\n };\r\n }\r\n\r\n persistFileListCache() {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(this.fileListCache));\r\n return true;\r\n } catch (error) {\r\n this.handleStoragePersistError(error);\r\n return false;\r\n }\r\n }\r\n\r\n createEmptyFileList() {\r\n return { files: [], directories: [] };\r\n }\r\n\r\n handleStoragePersistError(error) {\r\n console.warn('File list is kept in memory because localStorage persistence failed:', error);\r\n\r\n try {\r\n localStorage.removeItem(this.FILE_LIST_PATH);\r\n } catch (removeError) {\r\n console.warn('Failed to remove stale file list cache:', removeError);\r\n }\r\n\r\n if (!this.storageWarningShown) {\r\n this.storageWarningShown = true;\r\n ElMessage.warning(i18n.global.t('dashboard.fileListMemoryCacheWarning'));\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n fileList.files.push(newFile);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error adding file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件夹\r\n addFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n }\r\n return false; // 文件夹已存在\r\n } catch (error) {\r\n console.error('Error adding folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 移动文件或文件夹\r\n moveFile(oldPath, newPath, isFolder = false, currentPath = '') {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n \r\n if (isFolder) {\r\n // 更新目录列表\r\n const oldFolderIndex = fileList.directories.indexOf(oldPath);\r\n if (oldFolderIndex !== -1) {\r\n fileList.directories.splice(oldFolderIndex, 1);\r\n }\r\n\r\n } else {\r\n // 移动单个文件\r\n const fileIndex = fileList.files.findIndex(file => file.name === oldPath);\r\n if (fileIndex !== -1) {\r\n // 从旧位置移除\r\n fileList.files.splice(fileIndex, 1);\r\n }\r\n\r\n }\r\n\r\n // 如果新路径包含当前目录的直接子目录,则添加直接子目录\r\n if (newPath.startsWith(currentPath)) {\r\n const pathArray = newPath.substring(currentPath.length).split('/');\r\n if (pathArray.length > 1) {\r\n const newFolder = currentPath + pathArray[0];\r\n if (!fileList.directories.includes(newFolder)) {\r\n fileList.directories.push(newFolder);\r\n }\r\n }\r\n }\r\n\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error moving file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件\r\n removeFile(fileName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件夹(同时删除该文件夹下的所有文件)\r\n removeFolder(folderName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => !file.name.startsWith(folderName + '/'));\r\n fileList.directories = fileList.directories.filter(dir => dir !== folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 获取指定目录下的文件和子目录\r\n getFilesInFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const files = fileList.files.filter(file => file.name.startsWith(folderName + '/'));\r\n const subdirectories = fileList.directories.filter(dir => dir.startsWith(folderName + '/'));\r\n return { files, directories: subdirectories };\r\n } catch (error) {\r\n console.error('Error getting files in folder:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 构建筛选参数URL\r\n buildFilterParams(filters) {\r\n let params = '';\r\n // 访问状态筛选(综合判断)\r\n if (filters.accessStatus && filters.accessStatus.length > 0) {\r\n params += `&accessStatus=${encodeURIComponent(filters.accessStatus.join(','))}`;\r\n }\r\n // 黑白名单筛选(直接使用 ListType 字段)\r\n if (filters.listType && filters.listType.length > 0) {\r\n params += `&listType=${encodeURIComponent(filters.listType.join(','))}`;\r\n }\r\n if (filters.label && filters.label.length > 0) {\r\n params += `&label=${encodeURIComponent(filters.label.join(','))}`;\r\n }\r\n if (filters.fileType && filters.fileType.length > 0) {\r\n params += `&fileType=${encodeURIComponent(filters.fileType.join(','))}`;\r\n }\r\n if (filters.channel && filters.channel.length > 0) {\r\n params += `&channel=${encodeURIComponent(filters.channel.join(','))}`;\r\n }\r\n if (filters.channelName && filters.channelName.length > 0) {\r\n params += `&channelName=${encodeURIComponent(filters.channelName.join(','))}`;\r\n }\r\n return params;\r\n }\r\n\r\n // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '', filters = {}) {\r\n search = search.trim();\r\n try {\r\n let url = `/api/manage/list?count=60&dir=${dir}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n \r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n const newFileList = await response.json();\r\n if (!newFileList.isIndexedResponse) {\r\n ElMessage.warning(i18n.global.t('dashboard.indexingWarning'));\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.updateFileListCache(newFileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error refreshing file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 读取更多数据\r\n async loadMoreFiles(dir, search = '', includeTags = '', excludeTags = '', count = 60, filters = {}) {\r\n search = search.trim();\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const start = fileList.files.length;\r\n\r\n let url = `/api/manage/list?dir=${dir}&start=${start}&count=${count}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n\r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n \r\n const moreFiles = await response.json();\r\n fileList.files.push(...moreFiles.files);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error loading more files:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n}\r\n\r\nexport const fileManager = new FileManager();\r\n","/**\r\n * 矩形工具函数\r\n * 用于框选(rubber-band selection)功能中的矩形计算和相交检测\r\n */\r\n\r\n/**\r\n * 判断两个矩形是否相交\r\n * @param {Object} rectA - { left, top, right, bottom }\r\n * @param {Object} rectB - { left, top, right, bottom }\r\n * @returns {boolean} 是否存在重叠区域\r\n */\r\nexport function rectIntersects(rectA, rectB) {\r\n return !(\r\n rectA.right <= rectB.left ||\r\n rectA.left >= rectB.right ||\r\n rectA.bottom <= rectB.top ||\r\n rectA.top >= rectB.bottom\r\n );\r\n}\r\n\r\n/**\r\n * 根据起始点和当前点计算选区矩形\r\n * @param {Object} start - { x, y } 起始鼠标坐标\r\n * @param {Object} current - { x, y } 当前鼠标坐标\r\n * @returns {Object} { left, top, width, height, right, bottom }\r\n */\r\nexport function calcSelectionRect(start, current) {\r\n const left = Math.min(start.x, current.x);\r\n const top = Math.min(start.y, current.y);\r\n const width = Math.abs(current.x - start.x);\r\n const height = Math.abs(current.y - start.y);\r\n return { left, top, width, height, right: left + width, bottom: top + height };\r\n}\r\n","import { ref, watch, onMounted, onBeforeUnmount, toValue } from 'vue';\r\nimport { rectIntersects, calcSelectionRect } from './rectIntersects.js';\r\n\r\n/**\r\n * Vue 3 Composable:框选(rubber-band selection)核心逻辑,支持多视图模式\r\n *\r\n * @param {Object} options\r\n * @param {Object} options.modes - Per-view-mode configuration\r\n * @param {Object} options.modes.card - Card view config\r\n * @param {import('vue').Ref} options.modes.card.containerRef\r\n * @param {string} options.modes.card.itemSelector - e.g. '.img-card'\r\n * @param {Object} options.modes.list - List view config\r\n * @param {import('vue').Ref} options.modes.list.containerRef\r\n * @param {string} options.modes.list.itemSelector - e.g. '.list-item'\r\n * @param {string} [options.mainSelector='.main-container'] - 主内容区域的 CSS 选择器,框选只能从该区域内开始\r\n * @param {import('vue').Ref} options.viewMode - 当前视图模式\r\n * @param {import('vue').Ref} options.items - 当前页的数据项(paginatedTableData)\r\n * @returns {{ isDragging: import('vue').Ref, selectionRect: import('vue').Ref }}\r\n */\r\nexport function useDragSelect(options) {\r\n const {\r\n modes,\r\n mainSelector = '.main-container',\r\n viewMode,\r\n items,\r\n } = options;\r\n\r\n // --- Reactive state ---\r\n const isDragging = ref(false);\r\n const selectionRect = ref({ left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 });\r\n\r\n // --- Internal (non-reactive) state ---\r\n let startPoint = null; // { x, y } viewport coordinates at mousedown\r\n let preSelectSnapshot = []; // boolean[] snapshot of items[i].selected before drag\r\n let isAppendMode = false; // whether Shift/Ctrl/Cmd was held at mousedown\r\n\r\n // --- Enable/disable state ---\r\n const MOBILE_BREAKPOINT = 768; // px – at or below this width, drag-select is disabled\r\n let listenerAttached = false; // tracks whether the container mousedown listener is active\r\n\r\n // --- Auto-scroll state ---\r\n const EDGE_THRESHOLD = 50; // px from viewport edge to trigger auto-scroll\r\n const SCROLL_SPEED = 10; // px per frame to scroll\r\n let autoScrollTimer = null; // requestAnimationFrame ID for auto-scroll\r\n\r\n // --- Text selection prevention state ---\r\n let savedUserSelect = ''; // saved document.body.style.userSelect before drag\r\n\r\n // ------------------------------------------------------------------\r\n // Mode resolution helper\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Returns the configuration for the current viewMode.\r\n * @returns {{ containerRef: import('vue').Ref, itemSelector: string } | undefined}\r\n */\r\n function getActiveConfig() {\r\n const mode = toValue(viewMode);\r\n return modes[mode] || undefined;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Enable / disable helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Determine whether drag-select should be enabled.\r\n * Returns true when viewMode is 'card' or 'list' AND window width > 768px.\r\n */\r\n function shouldEnable() {\r\n const mode = toValue(viewMode);\r\n return (mode === 'card' || mode === 'list') && window.innerWidth > MOBILE_BREAKPOINT;\r\n }\r\n\r\n /**\r\n * Conditionally attach or detach the container listener based on shouldEnable().\r\n * Also cancels any active drag when detaching.\r\n */\r\n function syncListenerState() {\r\n if (shouldEnable()) {\r\n if (!listenerAttached) {\r\n attachContainerListener();\r\n }\r\n } else {\r\n if (listenerAttached) {\r\n cancelDrag();\r\n detachContainerListener();\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * 判断 mousedown 目标是否为可启动框选的空白区域。\r\n * 必须在主内容区域内,且不在卡片、交互元素上。\r\n */\r\n function isBlankArea(event) {\r\n const target = event.target;\r\n // 必须在主内容区域(el-main)内\r\n const mainArea = target.closest(mainSelector);\r\n if (!mainArea) return false;\r\n // 排除当前模式的可选元素\r\n const config = getActiveConfig();\r\n if (config) {\r\n const itemEl = target.closest(config.itemSelector);\r\n if (itemEl) {\r\n const container = toValue(config.containerRef);\r\n if (container && container.contains(itemEl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n // 排除交互元素(按钮、输入框、链接、下拉菜单、分页等)\r\n const interactive = target.closest('button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container');\r\n if (interactive) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Determine whether a modifier key for append-select is pressed.\r\n */\r\n function hasAppendModifier(event) {\r\n return event.shiftKey || event.ctrlKey || event.metaKey;\r\n }\r\n\r\n /**\r\n * Save a snapshot of the current selected state for all items.\r\n */\r\n function saveSnapshot() {\r\n const currentItems = toValue(items);\r\n preSelectSnapshot = currentItems.map((item) => !!item.selected);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Auto-scroll helpers\r\n // ------------------------------------------------------------------\r\n\r\n /** The last known clientY during a drag – updated by onMouseMove. */\r\n let lastClientY = 0;\r\n\r\n /**\r\n * Start the auto-scroll loop. On each animation frame we check whether the\r\n * mouse is within EDGE_THRESHOLD of the top or bottom of the viewport and\r\n * scroll accordingly. The selection rectangle and card hit-testing are also\r\n * updated after each scroll step so the visual feedback stays in sync.\r\n */\r\n function startAutoScroll() {\r\n if (autoScrollTimer !== null) return; // already running\r\n\r\n function scrollStep() {\r\n const viewportHeight = window.innerHeight;\r\n let scrollDelta = 0;\r\n\r\n if (lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n // Near bottom edge → scroll down\r\n scrollDelta = SCROLL_SPEED;\r\n } else if (lastClientY <= EDGE_THRESHOLD) {\r\n // Near top edge → scroll up\r\n scrollDelta = -SCROLL_SPEED;\r\n }\r\n\r\n if (scrollDelta !== 0) {\r\n window.scrollBy(0, scrollDelta);\r\n\r\n // After scrolling, the viewport-relative positions of cards change,\r\n // but the mouse hasn't moved. We need to adjust the start point so\r\n // the selection rectangle accounts for the scroll offset, then\r\n // re-run hit-testing.\r\n if (startPoint) {\r\n startPoint.y -= scrollDelta;\r\n selectionRect.value = calcSelectionRect(startPoint, { x: selectionRect.value.right >= startPoint.x ? selectionRect.value.right : selectionRect.value.left, y: lastClientY });\r\n updateSelection();\r\n }\r\n }\r\n\r\n // Continue the loop\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n /**\r\n * Stop the auto-scroll loop and clean up the timer.\r\n */\r\n function stopAutoScroll() {\r\n if (autoScrollTimer !== null) {\r\n cancelAnimationFrame(autoScrollTimer);\r\n autoScrollTimer = null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Text selection prevention helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Disable text selection on the document body during drag.\r\n */\r\n function disableTextSelection() {\r\n savedUserSelect = document.body.style.userSelect;\r\n document.body.style.userSelect = 'none';\r\n }\r\n\r\n /**\r\n * Restore the original text selection behavior on the document body.\r\n */\r\n function restoreTextSelection() {\r\n document.body.style.userSelect = savedUserSelect;\r\n }\r\n\r\n /**\r\n * Update the selected state of every item based on the current selection rectangle.\r\n */\r\n function updateSelection() {\r\n const config = getActiveConfig();\r\n if (!config) return;\r\n\r\n const container = toValue(config.containerRef);\r\n if (!container) return;\r\n\r\n const currentItems = toValue(items);\r\n const rect = selectionRect.value;\r\n\r\n // Build the selection rect in {left, top, right, bottom} format for intersection test\r\n const selRect = {\r\n left: rect.left,\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n };\r\n\r\n // Query all item DOM elements inside the container using the active mode's selector\r\n const itemElements = container.querySelectorAll(config.itemSelector);\r\n\r\n // Iterate over items and corresponding DOM elements\r\n currentItems.forEach((item, index) => {\r\n const itemEl = itemElements[index];\r\n if (!itemEl) return;\r\n\r\n const itemRect = itemEl.getBoundingClientRect();\r\n const itemBounds = {\r\n left: itemRect.left,\r\n top: itemRect.top,\r\n right: itemRect.right,\r\n bottom: itemRect.bottom,\r\n };\r\n\r\n const intersects = rectIntersects(selRect, itemBounds);\r\n\r\n if (isAppendMode) {\r\n // Append mode: keep original state, toggle on if intersects\r\n // If originally selected, stay selected regardless\r\n // If not originally selected, select if intersects\r\n if (preSelectSnapshot[index]) {\r\n item.selected = true;\r\n } else {\r\n item.selected = intersects;\r\n }\r\n } else {\r\n // Non-append mode: selected = intersects only\r\n item.selected = intersects;\r\n }\r\n });\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Mouse event handlers\r\n // ------------------------------------------------------------------\r\n\r\n function onMouseDown(event) {\r\n // 仅响应鼠标左键\r\n if (event.button !== 0) return;\r\n\r\n // 点击在卡片上时不启动框选\r\n if (!isBlankArea(event)) return;\r\n\r\n // Record start point (viewport coordinates)\r\n startPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Determine append mode from modifier keys at the moment of mousedown\r\n isAppendMode = hasAppendModifier(event);\r\n\r\n // 保存选中状态快照\r\n saveSnapshot();\r\n\r\n // 非追加模式下先清除所有选中\r\n if (!isAppendMode) {\r\n const currentItems = toValue(items);\r\n currentItems.forEach((item) => {\r\n item.selected = false;\r\n });\r\n }\r\n\r\n // Start dragging\r\n isDragging.value = true;\r\n selectionRect.value = calcSelectionRect(startPoint, startPoint);\r\n\r\n // 防止文本选中\r\n disableTextSelection();\r\n\r\n // Attach document-level listeners for move and up\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n function onMouseMove(event) {\r\n if (!isDragging.value || !startPoint) return;\r\n\r\n const currentPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Track last clientY for auto-scroll\r\n lastClientY = event.clientY;\r\n\r\n // Update selection rectangle\r\n selectionRect.value = calcSelectionRect(startPoint, currentPoint);\r\n\r\n // Update card selection based on intersection\r\n updateSelection();\r\n\r\n // Start or continue auto-scroll if near viewport edges\r\n const viewportHeight = window.innerHeight;\r\n if (lastClientY <= EDGE_THRESHOLD || lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n startAutoScroll();\r\n } else {\r\n stopAutoScroll();\r\n }\r\n }\r\n\r\n function onMouseUp(_event) {\r\n if (!isDragging.value) return;\r\n\r\n // 停止自动滚动\r\n stopAutoScroll();\r\n\r\n // 恢复文本选中\r\n restoreTextSelection();\r\n\r\n // End dragging\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n\r\n // Clean up document-level listeners\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Lifecycle: attach / detach container listener\r\n // ------------------------------------------------------------------\r\n\r\n function attachContainerListener() {\r\n if (!listenerAttached) {\r\n document.addEventListener('mousedown', onMouseDown);\r\n listenerAttached = true;\r\n }\r\n }\r\n\r\n function detachContainerListener() {\r\n if (listenerAttached) {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n listenerAttached = false;\r\n }\r\n }\r\n\r\n /**\r\n * Force-stop any in-progress drag (e.g. when viewMode changes).\r\n */\r\n function cancelDrag() {\r\n if (isDragging.value) {\r\n stopAutoScroll();\r\n restoreTextSelection();\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n }\r\n\r\n // 监听 viewMode 变化,启用/禁用框选\r\n // Always cancel any in-progress drag when viewMode changes (Requirement 2.3),\r\n // then re-evaluate whether listeners should be attached for the new mode.\r\n watch(\r\n () => toValue(viewMode),\r\n () => {\r\n cancelDrag();\r\n syncListenerState();\r\n }\r\n );\r\n\r\n // --- Window resize handler ---\r\n function onWindowResize() {\r\n syncListenerState();\r\n }\r\n\r\n onMounted(() => {\r\n // 仅在满足条件时启用\r\n if (shouldEnable()) {\r\n attachContainerListener();\r\n }\r\n // Always listen for resize to dynamically enable/disable\r\n window.addEventListener('resize', onWindowResize);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n cancelDrag();\r\n restoreTextSelection();\r\n stopAutoScroll();\r\n detachContainerListener();\r\n window.removeEventListener('resize', onWindowResize);\r\n });\r\n\r\n return {\r\n isDragging,\r\n selectionRect,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { mapGetters } from 'vuex';\nimport JSZip from 'jszip';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport TagManagementDialog from '@/components/dashboard/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/dashboard/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/dashboard/SkeletonLoader.vue';\nimport FileCard from '@/components/dashboard/FileCard.vue';\nimport FolderCard from '@/components/dashboard/FolderCard.vue';\nimport MoveFileDialog from '@/components/dashboard/MoveFileDialog.vue';\nimport FileListItem from '@/components/dashboard/FileListItem.vue';\nimport FileDetailDialog from '@/components/dashboard/FileDetailDialog.vue';\nimport BatchActionBar from '@/components/dashboard/BatchActionBar.vue';\nimport MobileActionSheet from '@/components/dashboard/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/dashboard/MobileDirectoryDrawer.vue';\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nimport FilterDropdown from '@/components/dashboard/FilterDropdown.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport { ref } from 'vue';\nimport { useDragSelect } from '@/utils/dashboard/useDragSelect.js';\nexport default {\n name: 'AdminDashBoard',\n mixins: [backgroundManager],\n data() {\n return {\n Number: 0,\n directFileCount: 0,\n // 当前目录直接子文件数量\n directFolderCount: 0,\n // 当前目录直接子文件夹数量\n showLogoutButton: false,\n tableData: [],\n tempSearch: '',\n search: '',\n searchKeywords: '',\n // Keywords only (without tag filters) for backend search\n searchIncludeTags: '',\n // 包含的标签,逗号分隔\n searchExcludeTags: '',\n // 排除的标签,逗号分隔\n isSearchMode: false,\n currentPage: 1,\n pageSize: 15,\n selectedFiles: [],\n sortOption: 'dateDesc',\n isUploading: false,\n showdetailDialog: false,\n detailFile: null,\n activeUrlTab: 'originUrl',\n defaultUrlFormat: 'originUrl',\n showUrlDialog: false,\n useCustomUrl: 'false',\n // 是否启用自定义链接\n customUrlPrefix: '',\n // 自定义链接前缀\n loading: false,\n // 加载状态\n currentPath: '',\n // 当前文件夹路径\n refreshLoading: false,\n showTagDialog: false,\n // 标签管理对话框\n showBatchTagDialog: false,\n // 批量标签管理对话框\n currentTagFile: '',\n // 当前标签管理的文件\n viewMode: 'card',\n // 视图模式:card 或 list\n showMobileActionModal: false,\n // 移动端操作模态框\n mobileActionFile: null,\n // 当前移动端操作的文件\n mobileActionIndex: -1,\n // 当前移动端操作的文件索引\n mobileActionIsFolder: false,\n // 是否为文件夹操作\n longPressTimer: null,\n // 长按计时器\n showMobileDirectoryDrawer: false,\n // 移动端目录抽屉\n jumpPage: '',\n // 跳转页码输入\n // 筛选相关状态(数组形式支持多选)\n filters: {\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'None'\n label: [],\n // 审查结果: 'normal', 'teen', 'adult'\n fileType: [],\n // 文件类型: 'image', 'video', 'audio', 'other'\n channel: [],\n // 渠道类型: 'TelegramNew', 'CloudflareR2', 'S3', 'Discord', 'HuggingFace', 'WebDAV', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [],\n // 动态从文件列表中提取\n // 移动文件对话框相关状态\n showMoveDialog: false,\n // 移动文件对话框\n moveTargetPath: '/',\n // 移动目标路径\n moveFileKey: '',\n // 当前移动的文件key\n moveFileIndex: -1,\n // 当前移动的文件索引\n isBatchMove: false,\n // 是否为批量移动\n pageSwipeStartX: null,\n pageSwipeStartY: null,\n pageSwipeStartTime: 0\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n BatchActionBar,\n MobileActionSheet,\n MobileDirectoryDrawer,\n DashboardCheckbox,\n FilterDropdown,\n MoveFileDialog,\n LanguageSwitcher\n },\n setup() {\n const cardContainerRef = ref(null);\n const listContainerRef = ref(null);\n const viewModeRef = ref('card');\n const itemsRef = ref([]);\n const {\n isDragging,\n selectionRect\n } = useDragSelect({\n modes: {\n card: {\n containerRef: cardContainerRef,\n itemSelector: '.img-card'\n },\n list: {\n containerRef: listContainerRef,\n itemSelector: '.list-item'\n }\n },\n viewMode: viewModeRef,\n items: itemsRef\n });\n return {\n cardContainerRef,\n listContainerRef,\n viewModeRef,\n itemsRef,\n isDragging,\n selectionRect\n };\n },\n computed: {\n ...mapGetters(['adminUrlSettings', 'userConfig']),\n filteredTableData() {\n return this.tableData;\n },\n totalPages() {\n return Math.ceil(this.filteredTableData.length / this.pageSize) || 1;\n },\n // 基于当前文件夹直接子文件和子文件夹数量计算的真实总页数\n realTotalPages() {\n const total = this.directFolderCount + this.directFileCount;\n return Math.ceil(total / this.pageSize) || 1;\n },\n // 计算当前激活的筛选条件数量(数组形式)\n activeFilterCount() {\n return Object.values(this.filters).reduce((count, arr) => count + (Array.isArray(arr) ? arr.length : 0), 0);\n },\n // 判断是否处于搜索或筛选模式\n hasSearchOrFilter() {\n return this.isSearchMode || this.activeFilterCount > 0;\n },\n paginatedTableData() {\n const sortedData = this.sortData(this.filteredTableData);\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n let data = sortedData.slice(start, end);\n // 增加previewSrcList属性,用于预览图片\n const fullList = data.filter(file => this.isImage(file)).map(file => this.getFileLink(file.name));\n data.forEach(file => {\n if (this.isImage(file)) {\n // 重新排序,索引大于等于当前索引的元素在前,否则在后\n file.previewSrcList = fullList.slice(fullList.indexOf(this.getFileLink(file.name))).concat(fullList.slice(0, fullList.indexOf(this.getFileLink(file.name))));\n }\n });\n // 增加channelTag属性,用于显示渠道信息\n data.forEach(file => {\n if (file.metadata?.Channel === 'TelegramNew' || file.metadata?.Channel === 'Telegram') {\n file.channelTag = 'TG';\n } else if (file.metadata?.Channel === 'CloudflareR2') {\n file.channelTag = 'R2';\n } else if (file.metadata?.Channel === 'S3') {\n file.channelTag = 'S3';\n } else if (file.metadata?.Channel === 'Discord') {\n file.channelTag = 'DC';\n } else if (file.metadata?.Channel === 'HuggingFace') {\n file.channelTag = 'HF';\n } else if (file.metadata?.Channel === 'WebDAV') {\n file.channelTag = 'WD';\n } else if (file.metadata?.Channel === 'External') {\n file.channelTag = this.$t('dashboard.externalTag');\n } else {\n file.channelTag = this.$t('dashboard.unknownTag');\n }\n });\n return data;\n },\n sortIcon() {\n return this.sortOption === 'dateDesc' ? 'sort-amount-down' : 'sort-alpha-up';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n detailDialogWidth() {\n return window.innerWidth > 768 ? '70%' : '90%';\n },\n accessType() {\n if (this.detailFile?.metadata?.ListType === 'White') {\n return this.$t('filter.normal');\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return this.$t('filter.blocked');\n } else {\n return this.$t('filter.normal');\n }\n },\n allUrl() {\n // 外链图片均采用外链\n if (this.detailFile?.metadata?.Channel === 'External') {\n return {\n 'originUrl': `${this.detailFile?.metadata?.ExternalLink}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n } else {\n return {\n 'originUrl': `${this.rootUrl}${this.detailFile?.name}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.rootUrl}${this.detailFile?.name}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n }\n },\n tableColumnNum() {\n return window.innerWidth > 768 ? 3 : 1;\n },\n tablePreviewSpan() {\n return window.innerWidth > 768 ? 2 : 1;\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n selectPage() {\n // 如果当前页所有文件都被选中,则返回 true,否则返回 false\n return this.paginatedTableData.every(file => file.selected);\n },\n selectedPageFiles() {\n // 如果当前页有文件被选中,则返回 true,否则返回 false\n return this.paginatedTableData.some(file => file.selected);\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.userConfig?.urlPrefix || `${document.location.origin}/file/`;\n },\n isSelectAll: {\n get() {\n return this.paginatedTableData.length > 0 && this.paginatedTableData.every(file => file.selected);\n },\n set(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n }\n },\n isIndeterminate() {\n const selectedCount = this.paginatedTableData.filter(file => file.selected).length;\n return selectedCount > 0 && selectedCount < this.paginatedTableData.length;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 5 : 7;\n }\n },\n watch: {\n // Sync viewMode data property to the ref used by useDragSelect\n viewMode: {\n handler(newVal) {\n this.viewModeRef = newVal;\n },\n immediate: true\n },\n // Sync paginatedTableData computed property to the ref used by useDragSelect\n paginatedTableData: {\n handler(newVal) {\n this.itemsRef = newVal;\n },\n immediate: true\n },\n tableData: {\n handler(newData) {\n // selectedFiles 增加 newData中新选中,不包含在 selectedFiles 中的文件\n this.selectedFiles = this.selectedFiles.concat(newData.filter(file => file.selected && !this.selectedFiles.includes(file)));\n // selectedFiles 删掉 newData 中已取消选中的文件\n this.selectedFiles = this.selectedFiles.filter(file => file.selected);\n // selectedFiles 删掉 tableData 中已删除的文件\n this.selectedFiles = this.selectedFiles.filter(file => newData.includes(file));\n },\n deep: true\n },\n sortOption(newOption) {\n localStorage.setItem('sortOption', newOption);\n },\n defaultUrlFormat(newFormat) {\n localStorage.setItem('defaultUrlFormat', newFormat);\n },\n showdetailDialog(newVal) {\n if (newVal) {\n this.activeUrlTab = this.defaultUrlFormat || 'originUrl';\n }\n },\n customUrlPrefix(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n currentPath(val) {\n // 页面切换时,取消选择的内容\n this.tableData.forEach(file => file.selected = false);\n }\n },\n methods: {\n // 切换视图模式\n setViewMode(mode) {\n if (this.viewMode === mode) {\n return;\n }\n this.viewMode = mode;\n localStorage.setItem('viewMode', this.viewMode);\n },\n // 列表视图全选当前页\n handleSelectAllPage(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n },\n // 移动端长按开始\n handleTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = false;\n this.showMobileActionModal = true;\n }, 500); // 500ms 长按触发\n },\n // 移动端长按结束/取消\n handleTouchEnd() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n },\n // 文件夹长按开始\n handleFolderTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = true;\n this.showMobileActionModal = true;\n }, 500);\n },\n // 处理移动端操作\n handleMobileAction(action) {\n const file = this.mobileActionFile;\n const index = this.mobileActionIndex;\n this.showMobileActionModal = false;\n if (!file) return;\n switch (action) {\n case 'detail':\n this.openDetailDialog(index, file.name);\n break;\n case 'copy':\n this.handleCopy(index, file.name);\n break;\n case 'folderCopy':\n this.handleFolderCopy(file.name);\n break;\n case 'download':\n this.handleDownload(file.name);\n break;\n case 'move':\n this.handleMove(index, file.name);\n break;\n case 'delete':\n this.handleDelete(index, file.name);\n break;\n case 'tag':\n this.handleTagManagement(file.name);\n break;\n }\n },\n // 返回上一级目录\n handleGoBack() {\n const pathParts = this.currentPath.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n pathParts.pop();\n const parentPath = pathParts.join('/');\n this.navigateToFolder(parentPath);\n }\n this.showMobileDirectoryDrawer = false;\n },\n // 获取标签颜色\n getTagColor(index) {\n const colors = ['linear-gradient(135deg, #667eea 0%, #764ba2 100%)', 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'];\n return colors[index % colors.length];\n },\n // 视频hover播放控制\n handleVideoHover(event, isEnter) {\n const video = event.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n },\n // 格式化文件大小\n formatFileSize(bytes) {\n if (!bytes || bytes === 0) return '-';\n bytes = Number(bytes);\n if (isNaN(bytes)) return '-';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let i = 0;\n while (bytes >= 1024 && i < units.length - 1) {\n bytes /= 1024;\n i++;\n }\n return bytes.toFixed(i > 0 ? 1 : 0) + ' ' + units[i];\n },\n handleSearch() {\n this.search = this.tempSearch;\n this.isSearchMode = this.search.trim() !== '';\n this.currentPage = 1; // 重置到第一页\n\n // 解析搜索字符串,提取标签和关键字\n // 支持 #tag 表示包含标签,-#tag 表示排除标签\n if (this.search && this.search.trim()) {\n const includeTags = [];\n const excludeTags = [];\n\n // 匹配 -#tag 和 #tag\n let searchText = this.search;\n\n // 先匹配排除标签 -#tag\n const excludeTagRegex = /-#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(excludeTagRegex, (match, tag) => {\n excludeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 再匹配包含标签 #tag\n const includeTagRegex = /#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(includeTagRegex, (match, tag) => {\n includeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 清理剩余的关键字(去除多余空格)\n this.searchKeywords = searchText.replace(/\\s+/g, ' ').trim();\n\n // 构建标签查询字符串\n this.searchIncludeTags = includeTags.join(',');\n this.searchExcludeTags = excludeTags.join(',');\n console.log('Search keywords:', this.searchKeywords);\n console.log('Include tags:', this.searchIncludeTags);\n console.log('Exclude tags:', this.searchExcludeTags);\n } else {\n this.searchKeywords = '';\n this.searchIncludeTags = '';\n this.searchExcludeTags = '';\n }\n this.refreshFileList();\n },\n // 处理筛选变化(来自 FilterDropdown 组件)\n handleFilterChange({\n type,\n filters\n }) {\n this.filters = filters;\n this.currentPage = 1; // 重置到第一页\n this.refreshFileList();\n },\n // 清除所有筛选条件\n clearFilters() {\n this.filters = {\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.currentPage = 1;\n this.refreshFileList();\n },\n // 从 API 获取所有渠道名称\n async extractChannelNames() {\n try {\n const response = await fetchWithAuth('/api/channels?includeDisabled=true', {\n method: 'GET'\n });\n if (response.ok) {\n const channels = await response.json();\n const channelOptions = [];\n\n // 类型映射(显示名称)\n const typeLabels = {\n telegram: 'Telegram',\n cfr2: 'Cloudflare R2',\n s3: 'S3',\n discord: 'Discord',\n huggingface: 'HuggingFace',\n webdav: 'WebDAV'\n };\n\n // 按类型提取渠道名称,channel.type是类型内部存储名称(可能根据版本有变化),type是类型对外名称\n Object.entries(channels).forEach(([type, channelList]) => {\n if (Array.isArray(channelList) && channelList.length > 0) {\n channelList.forEach(channel => {\n if (channel.name) {\n channelOptions.push({\n name: channel.name,\n type: channel.type,\n typeLabel: typeLabels[type] || type,\n // 使用 channel.type:channel.name 作为唯一标识\n value: `${channel.type}:${channel.name}`\n });\n }\n });\n }\n });\n\n // 按类型和名称排序\n channelOptions.sort((a, b) => {\n if (a.type !== b.type) {\n return a.type.localeCompare(b.type);\n }\n return a.name.localeCompare(b.name);\n });\n this.channelNameOptions = channelOptions;\n }\n } catch (error) {\n console.error('Failed to fetch channel names:', error);\n }\n },\n handleDownload(key) {\n const link = document.createElement('a');\n link.href = this.getFileLink(key);\n link.download = key;\n link.click();\n },\n openDetailDialog(index, key) {\n this.detailFile = this.paginatedTableData[index];\n this.showdetailDialog = true;\n },\n handleTabClick(tab) {\n this.activeUrlTab = tab.props.name;\n },\n handleUrlClick(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('dashboard.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('dashboard.copyFailed')\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm(this.$t('dashboard.deleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n this.showdetailDialog = false;\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBlock(key) {\n this.$confirm(this.$t('dashboard.blockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/block/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.blockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.blockFailed')));\n }).catch(() => console.log('Block cancelled'));\n },\n handleWhite(key) {\n this.$confirm(this.$t('dashboard.whiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/white/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.whiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.whiteFailed')));\n }).catch(() => console.log('White cancelled'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(isFolder ? this.$t('dashboard.deleteFolderConfirm') : this.$t('dashboard.deleteFileConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}?folder=${isFolder}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBatchDelete() {\n this.$confirm(this.$t('dashboard.batchDeleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/delete/${file.name}?folder=${isFolder}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n fileManager.removeFile(this.selectedFiles[index].name);\n }\n });\n this.selectedFiles = [];\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.batchDeleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchDeleteFailed')));\n }).catch(() => console.log('Batch delete cancelled'));\n },\n async handleBatchCopy() {\n // 分离文件和文件夹\n const files = this.selectedFiles.filter(item => !item.isFolder);\n const folders = this.selectedFiles.filter(item => item.isFolder);\n\n // 如果有文件夹,显示加载状态\n let loading = null;\n if (folders.length > 0) {\n loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n }\n try {\n // 收集所有文件(包括文件夹内的文件)\n let allFiles = [...files];\n\n // 递归获取所有文件夹内的文件\n for (const folder of folders) {\n try {\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folder.name)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n if (data.files && data.files.length > 0) {\n allFiles = allFiles.concat(data.files);\n }\n } catch (error) {\n console.error(`获取文件夹 ${folder.name} 内容失败:`, error);\n }\n }\n if (loading) loading.close();\n if (allFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.batchCopySuccess', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('Batch copy failed:', error);\n this.$message.error(this.$t('dashboard.batchCopyFailed'));\n }\n },\n copyToClipboardFallback(text) {\n const textarea = document.createElement('textarea');\n document.body.appendChild(textarea);\n textarea.style.position = 'fixed';\n textarea.style.clip = 'rect(0 0 0 0)';\n textarea.style.top = '10px';\n textarea.value = text;\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n this.$message.success(this.$t('dashboard.batchCopyLinksSuccess'));\n },\n handleCopy(index, key) {\n let text = '';\n if (this.paginatedTableData[index].metadata?.Channel === 'External') {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = this.paginatedTableData[index].metadata?.ExternalLink;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.paginatedTableData[index].metadata?.ExternalLink})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.paginatedTableData[index].metadata?.ExternalLink}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n } else {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = `${this.rootUrl}${key}`;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.rootUrl}${key})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.rootUrl}${key}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n }\n navigator.clipboard ? navigator.clipboard.writeText(text).then(() => this.$message.success(this.$t('dashboard.copyFileLinkSuccess'))) : this.copyToClipboardFallback(text);\n },\n async loadMoreData() {\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, 60, this.filters);\n // 获取新的文件列表后\n await this.fetchFileList();\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadMoreFailed'));\n } finally {\n this.loading = false;\n }\n },\n updateStats(num, init = false) {\n if (init) {\n this.Number = num;\n } else {\n this.Number += num;\n }\n },\n sort(command) {\n this.sortOption = command;\n },\n sortData(data) {\n // 文件夹始终在前\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n if (this.sortOption === 'dateDesc') {\n // 按时间降序\n folders.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n files.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n } else {\n // 按文件名升序\n folders.sort((a, b) => a.name.localeCompare(b.name));\n files.sort((a, b) => a.name.localeCompare(b.name));\n }\n return folders.concat(files);\n },\n handleVideoClick(event) {\n const videoElement = event.target;\n if (videoElement.requestFullscreen) {\n videoElement.requestFullscreen();\n } else if (videoElement.webkitRequestFullscreen) {\n // Safari/Old Chrome\n videoElement.webkitRequestFullscreen();\n } else if (videoElement.mozRequestFullScreen) {\n // Firefox\n videoElement.mozRequestFullScreen();\n } else if (videoElement.msRequestFullscreen) {\n // IE/Edge\n videoElement.msRequestFullscreen();\n }\n },\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n handleSelectPage() {\n if (this.selectPage) {\n this.paginatedTableData.forEach(file => file.selected = false);\n } else {\n this.paginatedTableData.forEach(file => file.selected = true);\n }\n },\n clearSelection() {\n this.tableData.forEach(file => file.selected = false);\n this.selectedFiles = [];\n },\n handleBatchAction(command) {\n if (command === 'copy') {\n this.handleBatchCopy();\n } else if (command === 'delete') {\n this.handleBatchDelete();\n } else if (command === 'download') {\n this.handleBatchDownload();\n } else if (command === 'move') {\n this.handleBatchMove();\n } else if (command === 'tagManagement') {\n this.handleBatchTagManagement();\n } else if (command === 'ban') {\n this.handleBatchBlock();\n } else if (command === 'white') {\n this.handleBatchWhite();\n }\n },\n handleMove(index, key) {\n // 打开自定义移动对话框\n this.moveFileKey = key;\n this.moveFileIndex = index;\n this.isBatchMove = false;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n handleBatchMove() {\n // 打开自定义移动对话框(批量模式)\n this.isBatchMove = true;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n // 确认移动操作\n confirmMove(targetPath) {\n const value = targetPath;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return;\n }\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning(this.$t('dashboard.moveTargetSameAsCurrent'));\n return;\n }\n\n // 关闭对话框\n this.showMoveDialog = false;\n if (this.isBatchMove) {\n // 批量移动\n this.executeBatchMove(newPath);\n } else {\n // 单个文件移动\n this.executeSingleMove(newPath);\n }\n },\n // 执行单个文件移动\n executeSingleMove(newPath) {\n const key = this.moveFileKey;\n const isFolder = this.tableData.find(file => file.name === key)?.isFolder;\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + key.split('/').pop();\n fileManager.moveFile(key, newKey, isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n // 执行批量移动\n executeBatchMove(newPath) {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const file = this.selectedFiles[index];\n file.selected = false;\n const fileIndex = this.tableData.findIndex(f => f.name === file.name);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + file.name.split('/').pop();\n fileManager.moveFile(file.name, newKey, file.isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n }\n }\n });\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n handleBatchBlock() {\n this.$confirm(this.$t('dashboard.batchBlockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/block/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchBlockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchBlockFailed')));\n }).catch(() => console.log('Batch block cancelled'));\n },\n handleBatchWhite() {\n this.$confirm(this.$t('dashboard.batchWhiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/white/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchWhiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchWhiteFailed')));\n }).catch(() => console.log('Batch white cancelled'));\n },\n handleBatchDownload() {\n // 将选中文件打包成 zip 文件下载\n const zip = new JSZip();\n const folder = zip.folder('files');\n // 构造Promise数组,等待所有文件下载完成后再打包\n const fileNameCount = {}; // 用于跟踪文件名出现的次数\n\n const downloadPromises = this.selectedFiles.map(async file => {\n // 跳过文件夹\n if (file.isFolder) {\n return;\n }\n const response = await fetch(this.getFileLink(file.name));\n const blob = await response.blob();\n // 检查文件名是否已经存在\n let fileName = file.metadata?.FileName || file.name;\n if (fileNameCount[fileName]) {\n // 如果已经存在,则在文件名后加上编号\n const extension = fileName.substring(fileName.lastIndexOf('.'));\n const baseName = fileName.substring(0, fileName.lastIndexOf('.'));\n fileName = `${baseName}(${fileNameCount[fileName]})${extension}`;\n fileNameCount[file.name]++;\n } else {\n // 如果不存在,则初始化为1\n fileNameCount[fileName] = 1;\n }\n // 将文件添加到 zip 文件夹中\n folder.file(fileName, blob);\n });\n Promise.all(downloadPromises).then(() => zip.generateAsync({\n type: 'blob'\n })).then(blob => {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = 'files.zip';\n link.click();\n });\n },\n isVideo(file) {\n // 排除音频文件\n if (this.isAudio(file)) return false;\n let flag = file.metadata?.FileType?.includes('video');\n // 用文件名后缀判断是否为视频文件\n if (!flag) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'rmvb', '3gp', 'mpg', 'mpeg', 'm4v', 'f4v', 'rm', 'asf', 'dat', 'ts', 'vob', 'swf', 'divx', 'xvid', 'm2ts', 'mts', 'm2v', '3g2', '3gp2', '3gpp', '3gpp2', 'mpe', 'm1v', 'mpv', 'mpv2', 'mp2v', 'm2t', 'm2ts', 'm2v', 'm4v'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = videoExtensions.includes(extension);\n }\n return flag;\n },\n isAudio(file) {\n let flag = file.metadata?.FileType?.includes('audio');\n // 用文件名后缀判断是否为音频文件\n if (!flag) {\n const audioExtensions = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'm4a', 'ape', 'aiff', 'alac', 'opus', 'mid', 'midi', 'm4b', 'm4p', 'm4r', 'amr', 'au', 'ra', 'ram'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = audioExtensions.includes(extension);\n }\n return flag;\n },\n isImage(file) {\n let flag = file.metadata?.FileType?.includes('image');\n // 用文件名后缀判断是否为图片文件\n if (!flag) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'psd', 'ai', 'eps', 'raw', 'cr2', 'nef', 'orf', 'sr2', 'dng', 'arw', 'rw2', 'raf', 'pef', 'x3f', 'srf', 'erf', 'mrw', 'nrw', 'kdc', 'dcr', 'mef', 'mos', 'crw', 'raf', 'rwl', 'srw', '3fr', 'fff', 'iiq', 'qtk', 'bay', 'k25', 'kdc', 'dcs', 'drf', 'dng', 'erf', 'kdc', 'mdc', 'mef', 'mos', 'mrw', 'nef', 'nrw', 'orf', 'pef', 'ptx', 'pxn', 'r3d', 'raf', 'raw', 'rwl', 'rw2', 'rwz', 'sr2', 'srf', 'x3f'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = imageExtensions.includes(extension);\n }\n return flag;\n },\n getFileLink(filename) {\n const fileLink = process.env.NODE_ENV === 'production' ? `/file/${filename}?from=admin` : `/api/file/${filename}?from=admin`;\n return fileLink;\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (this.currentPage === Math.ceil(this.tableData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n isMobileViewport() {\n return window.innerWidth < 768;\n },\n updateResponsivePageSize() {\n const nextPageSize = this.isMobileViewport() ? 16 : 15;\n if (this.pageSize === nextPageSize) return;\n const firstVisibleIndex = (this.currentPage - 1) * this.pageSize;\n this.pageSize = nextPageSize;\n this.currentPage = Math.min(Math.floor(firstVisibleIndex / nextPageSize) + 1, this.realTotalPages);\n },\n isSwipeIgnoredTarget(target) {\n return Boolean(target?.closest?.('button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn'));\n },\n handlePageSwipeStart(event) {\n if (!this.isMobileViewport() || this.isDragging || this.loading || this.showMobileActionModal || this.showMobileDirectoryDrawer || this.isSwipeIgnoredTarget(event.target)) {\n this.resetPageSwipe();\n return;\n }\n const touch = event.touches?.[0];\n if (!touch) return;\n this.pageSwipeStartX = touch.clientX;\n this.pageSwipeStartY = touch.clientY;\n this.pageSwipeStartTime = Date.now();\n },\n async handlePageSwipeEnd(event) {\n if (this.pageSwipeStartX === null || this.pageSwipeStartY === null) return;\n const touch = event.changedTouches?.[0];\n if (!touch) {\n this.resetPageSwipe();\n return;\n }\n const deltaX = touch.clientX - this.pageSwipeStartX;\n const deltaY = touch.clientY - this.pageSwipeStartY;\n const elapsed = Date.now() - this.pageSwipeStartTime;\n this.resetPageSwipe();\n if (elapsed > 700 || Math.abs(deltaX) < 64 || Math.abs(deltaX) < Math.abs(deltaY) * 1.35) {\n return;\n }\n const targetPage = deltaX < 0 ? this.currentPage + 1 : this.currentPage - 1;\n await this.goToSwipePage(targetPage);\n },\n resetPageSwipe() {\n this.pageSwipeStartX = null;\n this.pageSwipeStartY = null;\n this.pageSwipeStartTime = 0;\n },\n async goToSwipePage(page) {\n if (page < 1 || page > this.realTotalPages || page === this.currentPage) return;\n if (page > this.totalPages) {\n await this.loadMoreDataUntilPage(page);\n return;\n }\n this.handlePageChange(page);\n },\n // 跳转到指定页码\n handleJumpPage() {\n const page = parseInt(this.jumpPage);\n if (isNaN(page) || page < 1) {\n this.$message.warning(this.$t('dashboard.invalidPageNumber'));\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(this.$t('dashboard.pageExceedsMax', {\n max: this.realTotalPages\n }));\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info(this.$t('dashboard.loadingData'));\n this.loadMoreDataUntilPage(page);\n } else {\n this.currentPage = page;\n }\n this.jumpPage = '';\n },\n // 加载数据直到指定页\n async loadMoreDataUntilPage(targetPage) {\n this.loading = true;\n try {\n // 计算目标页需要的文件数量(不包含文件夹)\n // 目标页最后一个项目的索引 = targetPage * pageSize\n // 需要的文件数 = 目标索引 - 已有文件夹数量\n const targetIndex = targetPage * this.pageSize;\n const currentFolderCount = this.filteredTableData.filter(item => item.isFolder).length;\n const currentFileCount = this.filteredTableData.filter(item => !item.isFolder).length;\n\n // 需要加载的文件数量 = 目标位置需要的文件数 - 当前已加载的文件数\n const neededFileCount = Math.max(0, targetIndex - currentFolderCount - currentFileCount);\n if (neededFileCount > 0) {\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, neededFileCount, this.filters);\n await this.fetchFileList();\n }\n this.currentPage = Math.min(targetPage, this.totalPages);\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadDataFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 判断是否为文件夹\n isFolder(item) {\n // 如果是已经标记为文件夹的项目,直接返回true\n if (item.isFolder) {\n return true;\n }\n\n // 获取真实的文件路径(去除URL前缀)\n let path = item.name;\n if (path.startsWith('http')) {\n path = path.split('/file/')[1];\n }\n\n // 如果文件名包含'/',需要判断是否是当前路径下的文件\n if (path && path.includes('/')) {\n // 获取相对于当前路径的部分\n const relativePath = this.currentPath ? path.substring(this.currentPath.length) : path;\n\n // 如果在根目录,第一个斜杠前的部分就是文件夹\n if (this.currentPath === '') {\n return !path.split('/')[0].includes('.');\n }\n\n // 如果在子文件夹中,检查相对路径是否还包含其他文件夹\n return relativePath.includes('/');\n }\n return false;\n },\n // 获取文件夹名称\n getFolderName(path) {\n let folderName = '';\n // 如果是文件夹路径,只返回最后一级文件夹名\n if (path && path.includes('/')) {\n const parts = path.split('/');\n // 如果是根目录下的文件夹\n if (this.currentPath === '') {\n folderName = parts[0];\n } else {\n // 如果是子文件夹\n const relativePath = path.substring(this.currentPath.length);\n folderName = relativePath.split('/')[0];\n }\n } else {\n folderName = path;\n }\n const maxLength = 20; // Adjust max length as needed\n if (folderName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${folderName.substring(0, startLength)}...${folderName.substring(folderName.length - endLength)}`;\n }\n return folderName;\n },\n // 获取文件名称(去除路径和URL前缀)\n getFileName(path) {\n let fileName = path.split('/').pop();\n const maxLength = 20; // Adjust max length as needed, ensure it fits in one line\n if (fileName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${fileName.substring(0, startLength)}...${fileName.substring(fileName.length - endLength)}`;\n }\n return fileName;\n },\n // 获取文件名前半部分(用于中间省略效果)\n getFileNameStart(name) {\n if (!name) return '';\n // 如果文件名较短,返回全部\n if (name.length <= 30) return name;\n // 保留开头部分(约60%的长度用于显示前半部分)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回文件名主体部分\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(baseName.length, Math.floor(name.length * 0.6));\n return baseName.substring(0, keepLength);\n }\n // 无扩展名的情况\n return name.substring(0, Math.floor(name.length * 0.6));\n },\n // 获取文件名后半部分(用于中间省略效果)\n getFileNameEnd(name) {\n if (!name) return '';\n // 如果文件名较短,返回空\n if (name.length <= 30) return '';\n // 保留末尾部分(包含扩展名)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回最后几个字符 + 扩展名\n const ext = name.substring(dotIndex);\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(8, Math.floor(baseName.length * 0.2));\n return '…' + baseName.substring(baseName.length - keepLength) + ext;\n }\n // 无扩展名的情况\n const keepLength = Math.min(10, Math.floor(name.length * 0.3));\n return '…' + name.substring(name.length - keepLength);\n },\n // 进入文件夹\n enterFolder(folderPath) {\n // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\n // 确保空路径时不添加 '/'\n this.currentPath = path ? path + (path.endsWith('/') ? '' : '/') : '';\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 获取文件列表\n async fetchFileList() {\n this.loading = true;\n try {\n // 从本地存储获取数据\n const data = fileManager.getLocalFileList();\n\n // 解析返回的数据\n const folders = new Set(data.directories || []);\n const files = data.files || [];\n\n // 处理文件夹数据\n const folderItems = Array.from(folders).map(folder => ({\n name: folder,\n isFolder: true,\n selected: false,\n metadata: {\n FileName: folder.split('/').pop()\n }\n }));\n\n // 处理文件数据\n const fileItems = files.map(file => ({\n name: file.name,\n isFolder: false,\n selected: false,\n metadata: file.metadata\n }));\n\n // 更新表格数据\n this.tableData = [...folderItems, ...fileItems];\n\n // 更新统计信息\n this.updateStats(data.totalCount, true);\n\n // 更新直接文件和文件夹数量\n this.directFileCount = data.directFileCount || 0;\n this.directFolderCount = data.directFolderCount || 0;\n } catch (error) {\n console.error('Error fetching file list:', error);\n this.$message.error(this.$t('dashboard.fetchFileListFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 刷新文件列表\n async refreshFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n const success = await fileManager.refreshFileList(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, this.filters);\n if (success) {\n await this.fetchFileList();\n } else {\n throw new Error('Refresh failed');\n }\n } catch (error) {\n // 认证失败由 fetchWithAuth 统一处理跳转,不重复提示\n if (!error.message?.includes('Unauthorized') && this.$store.state.adminLoggedIn) {\n console.error('Error refreshing file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n }\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // 刷新本地文件列表\n async refreshLocalFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n await this.fetchFileList();\n } catch (error) {\n console.error('Error refreshing local file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // Tag management methods\n handleTagManagement(fileId) {\n this.currentTagFile = fileId;\n this.showTagDialog = true;\n },\n handleBatchTagManagement() {\n if (this.selectedFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.selectFilesFirst'));\n return;\n }\n this.showBatchTagDialog = true;\n },\n async handleTagsUpdated(tags) {\n // 更新本地文件数据中的标签\n const fileIndex = this.tableData.findIndex(file => file.name === this.currentTagFile);\n if (fileIndex !== -1) {\n // 更新 tableData 中的标签\n if (!this.tableData[fileIndex].metadata) {\n this.tableData[fileIndex].metadata = {};\n }\n this.tableData[fileIndex].metadata.Tags = tags;\n\n // 如果详情对话框正在显示这个文件,也更新详情数据\n if (this.showdetailDialog && this.detailFile?.name === this.currentTagFile) {\n if (!this.detailFile.metadata) {\n this.detailFile.metadata = {};\n }\n this.detailFile.metadata.Tags = tags;\n }\n }\n },\n async handleBatchTagsUpdated() {\n // 刷新文件列表以显示更新后的标签\n await this.refreshLocalFileList();\n },\n handleMetadataUpdated(fileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === fileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 如果 detailFile 正在显示该文件,同步更新 detailFile\n if (this.detailFile && this.detailFile.name === fileId) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n }\n },\n handleFileRenamed(oldFileId, newFileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 name(File_ID)和 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === oldFileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].name = newFileId;\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 更新 detailFile 引用并关闭/重新打开详情弹窗以刷新链接\n if (this.detailFile && this.detailFile.name === oldFileId) {\n this.detailFile.name = newFileId;\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n // 关闭详情弹窗,然后在下一个 tick 重新打开以刷新所有链接\n this.showdetailDialog = false;\n this.$nextTick(() => {\n this.showdetailDialog = true;\n });\n }\n },\n // 生成单个文件链接\n generateFileLink(key, metadata) {\n const isExternal = metadata?.Channel === 'External';\n const baseUrl = isExternal ? metadata?.ExternalLink : `${this.rootUrl}${key}`;\n const fileName = metadata?.FileName || key;\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n return baseUrl;\n case 'mdUrl':\n return `![${fileName}](${baseUrl})`;\n case 'htmlUrl':\n return `\"${fileName}\"`;\n case 'bbUrl':\n return `[img]${baseUrl}[/img]`;\n case 'tgId':\n return metadata?.TgFileId || '';\n case 's3Location':\n return metadata?.S3Location || '';\n default:\n return baseUrl;\n }\n },\n // 复制文件夹中所有文件的链接\n async handleFolderCopy(folderName) {\n // 显示加载状态\n const loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n try {\n // 调用 list API 递归获取文件夹内所有文件\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folderName)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n loading.close();\n if (!data.files || data.files.length === 0) {\n this.$message.warning(this.$t('dashboard.folderEmptyNoLinks'));\n return;\n }\n\n // 根据当前链接格式生成所有文件链接\n const links = data.files.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n }\n } catch (error) {\n loading.close();\n console.error('Copy folder links failed:', error);\n this.$message.error(this.$t('dashboard.copyFolderLinksFailed'));\n }\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n this.updateResponsivePageSize();\n window.addEventListener('resize', this.updateResponsivePageSize);\n this.loading = true;\n // 路由守卫已通过 /api/auth/sessionCheck 验证认证状态\n this.showLogoutButton = this.$store.state.adminLoggedIn;\n // 首次加载时刷新文件列表\n this.refreshFileList().then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error(this.$t('dashboard.syncDataError'));\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n\n // 恢复视图模式偏好\n const savedViewMode = localStorage.getItem('viewMode');\n if (savedViewMode === 'card' || savedViewMode === 'list') {\n this.viewMode = savedViewMode;\n }\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateResponsivePageSize);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=57eabdee&scoped=true\"\nimport script from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\nexport * from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\n\nimport \"./AdminDashBoard.vue?vue&type=style&index=0&id=57eabdee&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-57eabdee\"]])\n\nexport default __exports__","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","width","trigger","transition","reference","onClick","$slots","undefined","default","error","icon","type","size","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","value","includes","children","label","windowWidth","window","innerWidth","computed","this","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","get","withAuthCode","tree","err","console","startsWith","$emit","__exports__","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_component_el_input","_component_DirectoryTreePicker","_component_el_dialog","dialogVisible","isBatchMove","onClose","handleClose","footer","handleConfirm","targetPath","placeholder","prepend","onSelect","handleDirectorySelect","showTreePicker","text","treeError","handleTreeNodeClick","treeLoading","components","DirectoryTreePicker","Boolean","initialPath","emits","set","val","to","close","active","currentPath","navigate","pathParts","folder","index","length","style","paddingLeft","slice","join","goBack","split","filter","isFolder","handleAction","action","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","dialogWidth","activeTab","count","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","append","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","Array","required","debounceTimer","selectedFilesOnly","file","fileIds","map","loadCommonTags","resetData","newTab","tagPromises","encodeURIComponent","responses","Promise","all","allTags","push","tags","every","clearTimeout","trim","fetchSuggestions","prefix","toLowerCase","warning","indexOf","splice","headers","body","JSON","stringify","Error","success","updated","confirm","confirmButtonText","cancelButtonText","then","executeClearTags","catch","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","round","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","lazy","border","column","descColumn","editForm","FileName","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","Tags","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","valid","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","test","Object","fileType","endsWith","TimeStamp","Date","toLocaleString","listType","ListType","height","ratio","sizeBytes","FileSizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","e","video","target","paused","play","pause","input","select","navigator","clipboard","writeText","open","result","oldFileId","_component_el_tooltip","selectedCount","disableTooltip","content","handleClear","actions","command","className","Number","variant","checked","indeterminate","role","ariaChecked","tabindex","handleClick","onKeydown","event","_component_DashboardCheckbox","onTouchstart","onTouchend","onTouchmove","localSelected","toggleSelect","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","DashboardCheckbox","selected","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_checkbox","_component_el_card","onChange","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","fileName","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","document","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","i","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_el_badge","_component_el_checkbox_group","_component_el_dropdown_menu","_component_el_dropdown","dropdown","localFilters","accessStatus","handleFilterChange","accessStatusOptions","option","listTypeOptions","labelOptions","fileTypeOptions","channel","channelOptions","channelNameOptions","channelName","groupedChannelNames","group","typeLabel","channels","clearFilters","activeFilterCount","hidden","filters","values","reduce","arr","groups","forEach","handler","newFilters","isArray","immediate","deep","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_component_DashboardTabs","_component_FilterDropdown","_component_el_dropdown_item","_component_el_header","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_BatchActionBar","_component_FileDetailDialog","_component_el_radio","_component_el_radio_group","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","onCommand","sort","sortIcon","showUrlDialog","handleLogout","selectPage","selectedPageFiles","handleSelectPage","viewMode","setViewMode","showMobileDirectoryDrawer","pop","separator","navigateToFolder","isDragging","onTouchstartPassive","handlePageSwipeStart","onTouchendPassive","handlePageSwipeEnd","onTouchcancelPassive","resetPageSwipe","pageSize","paginatedTableData","hasSearchOrFilter","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","position","left","selectionRect","top","layout","total","filteredTableData","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","Math","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","onAction","handleBatchAction","onClear","clearSelection","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","onMetadataUpdated","handleMetadataUpdated","onFileRenamed","handleFileRenamed","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","constructor","FILE_LIST_PATH","fileListCache","storageWarningShown","getLocalFileList","fileList","getMutableFileList","files","directories","localStorage","getItem","parse","createEmptyFileList","updateFileListCache","persisted","persistFileListCache","cacheUpdated","setItem","handleStoragePersistError","warn","removeItem","removeError","ElMessage","i18n","global","t","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","findIndex","pathArray","substring","newFolder","removeFile","removeFolder","dir","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","loadMoreFiles","start","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","min","x","y","abs","useDragSelect","options","modes","mainSelector","items","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","mode","toValue","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","mainArea","closest","config","itemEl","itemSelector","container","containerRef","contains","interactive","hasAppendModifier","shiftKey","ctrlKey","metaKey","saveSnapshot","currentItems","lastClientY","startAutoScroll","scrollStep","viewportHeight","innerHeight","scrollDelta","scrollBy","updateSelection","requestAnimationFrame","stopAutoScroll","cancelAnimationFrame","disableTextSelection","userSelect","restoreTextSelection","rect","selRect","itemElements","querySelectorAll","itemRect","getBoundingClientRect","itemBounds","intersects","onMouseDown","button","clientX","clientY","onMouseMove","onMouseUp","currentPoint","_event","onWindowResize","onMounted","onBeforeUnmount","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","sortOption","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","pageSwipeStartX","pageSwipeStartY","pageSwipeStartTime","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","end","fullList","concat","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","some","userConfig","urlPrefix","location","origin","newData","newOption","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","replace","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","a","b","localeCompare","link","createElement","href","download","click","tab","$message","$confirm","reject","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","lock","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","appendChild","clip","execCommand","removeChild","fetchFileList","num","init","videoElement","fetch","credentials","authType","finally","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","tempData","refreshLocalFileList","f","resolve","zip","fileNameCount","downloadPromises","async","blob","extension","lastIndexOf","baseName","generateAsync","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","isMobileViewport","updateResponsivePageSize","nextPageSize","firstVisibleIndex","floor","isSwipeIgnoredTarget","touch","touches","now","changedTouches","deltaX","deltaY","elapsed","targetPage","goToSwipePage","loadMoreDataUntilPage","parseInt","max","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","from","fileItems","totalCount","state","adminLoggedIn","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode","module","exports","s","o","h","u","r","l","n","code","call","d","c","p","encode","getTypeOf","charCodeAt","charAt","decode","substr","uint8array","Uint8Array","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","pako","A","fromCharCode","O","utf8encode","I","m","g","v","w","k","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","resume","registerPrevious","generatedError","generateWorker","platform","_compressWorker","arguments","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","load","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","allocBuffer","alloc","fill","isBuffer","toUpperCase","toString","remove","generate","generateInternalStream","mimeType","checkSupport","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","apply","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","buffer","byteLength","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","nodeStream","MutationObserver","WebKitMutationObserver","createTextNode","observe","characterData","MessageChannel","onreadystatechange","parentNode","documentElement","port1","onmessage","port2","postMessage","TypeError","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","race","assign","chunkSize","windowBits","memLevel","strategy","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","last","havedict","flags","check","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","attachEvent","Function","callback","clearImmediate","validateFolderPath","strict","dotPattern","invalidChars"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/957.e8a16dfc.js.map.gz b/frontend-dist/js/957.e8a16dfc.js.map.gz deleted file mode 100644 index 2952cd4a2108eeba5c421de587b567a2a6540dbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146478 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 R137G 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�)y2LxpmLgv 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

cT>=<2nj8v649Q=BHPJJBMLEk#Gr0Oi7rB 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 Dx#b)7 diff --git a/frontend-dist/js/967.4c8a2786.js.map b/frontend-dist/js/967.4c8a2786.js.map deleted file mode 100644 index 1f5b2ee7..00000000 --- a/frontend-dist/js/967.4c8a2786.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/967.4c8a2786.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/views/NotFound.vue?30c5","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"

\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=59d53856&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=59d53856&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-59d53856\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","onClick","goHome","circle","size","default","icon","_","errorImage","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","$router","push","history","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/967.4c8a2786.js.map.gz b/frontend-dist/js/967.4c8a2786.js.map.gz deleted file mode 100644 index 9418427d64b470205736d929a5051940523958ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9801 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 diff --git a/frontend-dist/js/967.4c8a2786.js b/frontend-dist/js/967.db104add.js similarity index 99% rename from frontend-dist/js/967.4c8a2786.js rename to frontend-dist/js/967.db104add.js index 17b7124c..80ab2368 100644 --- a/frontend-dist/js/967.4c8a2786.js +++ b/frontend-dist/js/967.db104add.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[967],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):a&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,r=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const r=this.userConfig?.[e];if(!n||void 0!==r)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}},84967:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(80047),s=(a(85331),a(99648),a(56768));const r={class:"not-found-container"},o=["innerHTML"],i={class:"not-found-content"},l={class:"back-button-wrapper"},c={class:"error-animation"},d={class:"error-image"},u=["src"],g={class:"error-info"},m={class:"error-actions"},p={class:"help-links"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",r,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",i,[(0,s.Lk)("div",l,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[t[3]||(t[3]=(0,s.Lk)("div",{class:"error-number"},[(0,s.Lk)("span",{class:"four"},"4"),(0,s.Lk)("span",{class:"zero"},"0"),(0,s.Lk)("span",{class:"four"},"4")],-1)),(0,s.Lk)("div",d,[(0,s.Lk)("img",{src:y.errorImage,alt:"404",class:"floating-image"},null,8,u)])]),(0,s.Lk)("div",g,[t[10]||(t[10]=(0,s.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[5]||(t[5]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[9]||(t[9]=(0,s.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[6]||(t[6]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.goDashboard&&y.goDashboard(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"tachometer-alt"}),t[7]||(t[7]=(0,s.eW)(" 管理面板 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[8]||(t[8]=(0,s.eW)(" 刷新页面 ",-1))])])])])]),t[12]||(t[12]=(0,s.Fv)('
',1))])}a(44114);var b=a(60782),y=a(48903),f={name:"NotFound",mixins:[y.A],computed:{...(0,b.L8)(["useDarkMode","userConfig"]),errorImage(){return a(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},I=a(71241);const v=(0,I.A)(f,[["render",k],["__scopeId","data-v-59d53856"]]);var B=v},96682:function(e,t,a){e.exports=a.p+"img/404.8ed11fb3.png"}}]); -//# sourceMappingURL=967.4c8a2786.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[967],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.de27f549.jpg"},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):a&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,r=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const r=this.userConfig?.[e];if(!n||void 0!==r)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}},84967:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(80047),s=(a(85331),a(99648),a(56768));const r={class:"not-found-container"},o=["innerHTML"],i={class:"not-found-content"},l={class:"back-button-wrapper"},c={class:"error-animation"},d={class:"error-image"},u=["src"],g={class:"error-info"},m={class:"error-actions"},p={class:"help-links"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",r,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",i,[(0,s.Lk)("div",l,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[t[3]||(t[3]=(0,s.Lk)("div",{class:"error-number"},[(0,s.Lk)("span",{class:"four"},"4"),(0,s.Lk)("span",{class:"zero"},"0"),(0,s.Lk)("span",{class:"four"},"4")],-1)),(0,s.Lk)("div",d,[(0,s.Lk)("img",{src:y.errorImage,alt:"404",class:"floating-image"},null,8,u)])]),(0,s.Lk)("div",g,[t[10]||(t[10]=(0,s.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[5]||(t[5]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[9]||(t[9]=(0,s.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[6]||(t[6]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.goDashboard&&y.goDashboard(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"tachometer-alt"}),t[7]||(t[7]=(0,s.eW)(" 管理面板 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[8]||(t[8]=(0,s.eW)(" 刷新页面 ",-1))])])])])]),t[12]||(t[12]=(0,s.Fv)('
',1))])}a(44114);var b=a(60782),y=a(48903),f={name:"NotFound",mixins:[y.A],computed:{...(0,b.L8)(["useDarkMode","userConfig"]),errorImage(){return a(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},I=a(71241);const v=(0,I.A)(f,[["render",k],["__scopeId","data-v-59d53856"]]);var B=v},96682:function(e,t,a){e.exports=a.p+"img/404.8ed11fb3.png"}}]); +//# sourceMappingURL=967.db104add.js.map \ No newline at end of file diff --git a/frontend-dist/js/967.db104add.js.gz b/frontend-dist/js/967.db104add.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..779dd2b67dadf959d7c8904dfcb7550415451f3c GIT binary patch literal 3633 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 D`EwH; literal 0 HcmV?d00001 diff --git a/frontend-dist/js/967.db104add.js.map b/frontend-dist/js/967.db104add.js.map new file mode 100644 index 00000000..501c7c0e --- /dev/null +++ b/frontend-dist/js/967.db104add.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/967.db104add.js","mappings":"oRAOA,KACEA,IAAAA,GACE,MAAO,CACLC,mBAAoB,EACpBC,qBAAsB,EACtBC,mBAAoB,KAEpBC,qBAAsB,KAE1B,EACAC,SAAU,KACLC,EAAAA,EAAAA,IAAW,CAAC,aAAc,iBAAkB,gBAC/CC,UAAAA,GACE,OAAOC,KAAKC,YAAYF,YAAc,GACxC,EACAG,SAAAA,GACE,OAAOF,KAAKC,YAAYC,WAAa,CACvC,EAEAC,wBAAAA,GACE,MAAO,8JAIT,EAEAC,sBAAAA,GACE,MAAO,4kCAkCT,GAGFC,MAAO,CAELC,WAAAA,CAAYC,EAAQC,GAEdD,IAAWC,GAAUR,KAAKJ,sBAC5BI,KAAKS,UAAU,KACbT,KAAKU,sBACHV,KAAKJ,qBAAqBe,UAC1BX,KAAKJ,qBAAqBgB,kBAC1BZ,KAAKJ,qBAAqBiB,qBAC1Bb,KAAKJ,qBAAqBkB,qBAIlC,GAGFC,OAAAA,GAEEf,KAAKgB,wBACP,EAEAC,aAAAA,GAEMjB,KAAKL,oBACPuB,cAAclB,KAAKL,oBAGrBK,KAAKmB,uBAAsB,GAE3BnB,KAAKoB,wBACP,EAEAC,QAAS,CAIPL,sBAAAA,GACE,MAAMM,EAAU,4BAChB,IAAKC,SAASC,eAAeF,GAAU,CACrC,MAAMG,EAAQF,SAASG,cAAc,SACrCD,EAAME,GAAKL,EACXG,EAAMG,YAAc5B,KAAKI,uBACzBmB,SAASM,KAAKC,YAAYL,EAC5B,CACF,EAKAL,sBAAAA,GACE,MAAME,EAAU,4BACVS,EAAgBR,SAASC,eAAeF,GAC1CS,GACFA,EAAcC,QAElB,EAMAC,wBAAAA,CAAyBC,GACvB,IAAKA,EAEH,YADAC,QAAQC,KAAK,cAKf,GAAIb,SAASC,eAAe,QAAUD,SAASC,eAAe,OAC5D,OAIF,MAAMa,EAAMd,SAASG,cAAc,OACnCW,EAAIV,GAAK,MACTU,EAAIC,UAAY,oBAChBD,EAAIE,IAAM,mBAGV,MAAMC,EAAMjB,SAASG,cAAc,OACnCc,EAAIb,GAAK,MACTa,EAAIF,UAAY,oBAChBE,EAAID,IAAM,mBAGVL,EAAUO,aAAaJ,EAAKH,EAAUQ,YACtCR,EAAUO,aAAaD,EAAKN,EAAUQ,WACxC,EAQAC,oBAAAA,CAAqBhC,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAE/G,IAA0C,IAAtCd,KAAKC,YAAY2C,iBAEnB,YADA5C,KAAKmB,uBAAsB,GAK7BnB,KAAKJ,qBAAuB,CAC1Be,YACAC,oBACAC,uBACAC,sBAIF,MAAMoB,EAAYX,SAASsB,cAAcjC,GACzCZ,KAAK8C,2BAA2BZ,GAE5BpB,KACEoB,GAAeX,SAASC,eAAe,QAAWD,SAASC,eAAe,QAC5ExB,KAAKiC,yBAAyBC,IAIlC,MAAMG,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEpC,IAAKa,IAAQG,EAEX,YADAL,QAAQC,KAAK,4DAIf,MAAMW,EAAmB/C,KAAKC,aAAaU,GAElB,SAArBoC,EACF/C,KAAKgD,mBAAmBX,EAAKG,EAAK5B,GACzBqC,MAAMC,QAAQH,IAAqBA,EAAiBI,OAAS,EACtEnD,KAAKoD,6BAA6Bf,EAAKG,EAAKO,EAAkBnC,GACrDqC,MAAMC,QAAQH,IAAiD,IAA5BA,EAAiBI,OAC7DnD,KAAKqD,2BAA2BhB,EAAKU,EAAiB,GAAInC,GACjDC,GACTb,KAAKsD,sBAAsBjB,EAAKzB,EAEpC,EAKAoC,kBAAAA,CAAmBX,EAAKG,EAAK5B,GAC3BZ,KAAKuD,OAAOC,SAAS,uBAAuBC,KAAK,KACZ,IAA/BzD,KAAK0D,eAAeP,SAExBnD,KAAK2D,oBAAoBtB,EAAKrC,KAAK0D,eAAe1D,KAAKP,qBAAqBmE,IAAKhD,GAAmB,GAEpGZ,KAAKL,mBAAqBkE,YAAY,KACpC7D,KAAK8D,oBAAoBzB,EAAKG,IAC7BxC,KAAKD,cAEZ,EAKAqD,4BAAAA,CAA6Bf,EAAKG,EAAKuB,EAAYnD,GACjDZ,KAAK2D,oBAAoBtB,EAAK0B,EAAW/D,KAAKN,sBAAuBkB,GAAmB,GAExFZ,KAAKL,mBAAqBkE,YAAY,KACpC7D,KAAKgE,sBAAsB3B,EAAKG,EAAKuB,IACpC/D,KAAKD,WACV,EAKAsD,0BAAAA,CAA2BhB,EAAK4B,EAAcrD,GAC5CZ,KAAK2D,oBAAoBtB,EAAK4B,EAAcrD,EAC9C,EAKA0C,qBAAAA,CAAsBjB,EAAKzB,GAEzB,MAAMsD,EAASlE,KAAKM,YACd6D,EACFC,EADiBF,EACT,MACA,MAEZlE,KAAK2D,oBAAoBtB,EAAK8B,EAAcvD,EAC9C,EAKA+C,mBAAAA,CAAoBU,EAAYC,EAAU1D,EAAmB2D,GAAa,GAExEF,EAAW5C,MAAM+C,QAAU,EAC3BH,EAAW5C,MAAMgD,QAAU,EAC3BzE,KAAK0E,wBAAwBL,EAAYE,GACzC,MAAMrC,EAAYX,SAASsB,cAAcjC,GACzCZ,KAAK8C,2BAA2BZ,GAEhC,MAAMyC,EAAYA,KAChBC,sBAAsB,KACpBA,sBAAsB,KACpBP,EAAW5C,MAAMgD,QAAUzE,KAAKE,UAC5BqE,IACFF,EAAW5C,MAAMoD,UAAY,qBAM/BC,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfX,EAAWY,IAAMX,EACjBK,KAEFG,EAAQI,QAAU,KAChBb,EAAWY,IAAMX,EACjBK,KAEFG,EAAQG,IAAMX,CAChB,EAEAI,uBAAAA,CAAwBL,EAAYE,GAAa,GAC/C,IAAKF,EAAY,OAEjB,MAAMc,EAAeC,KAAKC,IAAIrF,KAAKD,WAAa,KAAM,MACtDsE,EAAW5C,MAAM6D,WAAaf,EAC1B,yDAAyDY,eACzD,kEACJd,EAAW5C,MAAM8D,gBAAkB,gBACnClB,EAAW5C,MAAMoD,UAAY,UAC/B,EAEA/B,0BAAAA,CAA2BZ,GACzB,IAAKA,EAAW,OAEhB,MAAMsD,EAAgBC,OAAOC,iBAAiBxD,GACf,WAA3BsD,EAAcG,WAChBzD,EAAUT,MAAMkE,SAAW,YAGA,SAAzBH,EAAchB,SAChBtC,EAAUT,MAAM+C,OAAS,KAG3BtC,EAAUT,MAAMmE,UAAY,SAC9B,EAKA9B,mBAAAA,CAAoBzB,EAAKG,GACvB,GAAmC,IAA/BxC,KAAK0D,eAAeP,OAAc,OAEtC,MAAM0C,EAAoC,GAArBxD,EAAIZ,MAAMgD,QACzBqB,EAAQD,EAAexD,EAAMG,EAC7BuD,EAASF,EAAerD,EAAMH,EAEpCrC,KAAKP,oBAAsBO,KAAKP,mBAAqB,GAAKO,KAAK0D,eAAeP,OAC9E,MAAM6C,EAAUhG,KAAK0D,eAAe1D,KAAKP,qBAAqBmE,IAG9DkC,EAAMrE,MAAM+C,QAAU,EACtBuB,EAAOtE,MAAM+C,QAAU,EACvBxE,KAAK0E,wBAAwBqB,GAAQ,GAErC,MAAMjB,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfe,EAAOd,IAAMe,EAGbC,WAAW,KACTF,EAAOtE,MAAMgD,QAAUzE,KAAKE,UAC5B6F,EAAOtE,MAAMoD,UAAY,eAGzBoB,WAAW,KACTH,EAAMrE,MAAMgD,QAAU,EACtBzE,KAAK0E,wBAAwBoB,GAAO,IACnC,OACF,KAELhB,EAAQG,IAAMe,CAChB,EAKAhC,qBAAAA,CAAsB3B,EAAKG,EAAKuB,GAC9B,MAAM8B,EAAoC,GAArBxD,EAAIZ,MAAMgD,QACzBqB,EAAQD,EAAexD,EAAMG,EAC7BuD,EAASF,EAAerD,EAAMH,EAEpCrC,KAAKN,sBAAwBM,KAAKN,qBAAuB,GAAKqE,EAAWZ,OACzE,MAAM6C,EAAUjC,EAAW/D,KAAKN,sBAGhCoG,EAAMrE,MAAM+C,QAAU,EACtBuB,EAAOtE,MAAM+C,QAAU,EACvBxE,KAAK0E,wBAAwBqB,GAAQ,GAErC,MAAMjB,EAAU,IAAIC,MACpBD,EAAQE,OAAS,KACfe,EAAOd,IAAMe,EAEbC,WAAW,KACTF,EAAOtE,MAAMgD,QAAUzE,KAAKE,UAC5B6F,EAAOtE,MAAMoD,UAAY,eAEzBoB,WAAW,KACTH,EAAMrE,MAAMgD,QAAU,EACtBzE,KAAK0E,wBAAwBoB,GAAO,IACnC,OACF,KAELhB,EAAQG,IAAMe,CAChB,EAKAE,uBAAAA,GACMlG,KAAKL,qBACPuB,cAAclB,KAAKL,oBACnBK,KAAKL,mBAAqB,KAE9B,EAMAwB,qBAAAA,CAAsBgF,GAAY,GAChC,MAAM9D,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEhC2E,GAEE9D,IACFA,EAAIZ,MAAM6D,WAAa,OACvBjD,EAAIZ,MAAMgD,QAAU,EACpBpC,EAAI4C,IAAM,GAEVgB,WAAW,KACL5D,IAAKA,EAAIZ,MAAM6D,WAAa,oEAC/B,KAED9C,IACFA,EAAIf,MAAM6D,WAAa,OACvB9C,EAAIf,MAAMgD,QAAU,EACpBjC,EAAIyC,IAAM,GAEVgB,WAAW,KACLzD,IAAKA,EAAIf,MAAM6D,WAAa,oEAC/B,OAIDjD,IACFA,EAAIZ,MAAMgD,QAAU,EACpBwB,WAAW,KACL5D,IAAKA,EAAI4C,IAAM,KAClB,OAEDzC,IACFA,EAAIf,MAAMgD,QAAU,EACpBwB,WAAW,KACLzD,IAAKA,EAAIyC,IAAM,KAClB,OAGT,EASAvE,qBAAAA,CAAsBC,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GAChH,MAAMiC,EAAmB/C,KAAKC,aAAaU,GAG3C,IAAKE,QAA6CuF,IAArBrD,EAE3B,YADA/C,KAAKqG,uBAAuB1F,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMuB,EAAMd,SAASC,eAAe,OAC9BgB,EAAMjB,SAASC,eAAe,OAEpC,IAAKa,IAAQG,EAGX,YADAxC,KAAKqG,uBAAuB1F,EAAWC,EAAmBC,EAAsBC,GAKlF,MAAMwF,EAAiC,GAArBjE,EAAIZ,MAAMgD,QAAepC,EAAMG,EAC3CuD,EAA8B,GAArB1D,EAAIZ,MAAMgD,QAAejC,EAAMH,EAGxC6B,EAASlE,KAAKM,YACdiG,EACFnC,EADkBF,EACV,MACA,MAGNsC,EAAa,IAAIzB,MACvByB,EAAWxB,OAAS,KAElBe,EAAOd,IAAMsB,EAGbR,EAAOf,OAAS,KAEdsB,EAAU7E,MAAMgD,QAAU,EAG1BwB,WAAW,KACTF,EAAOtE,MAAMgD,QAAUzE,KAAKE,WAC3B,MAIPsG,EAAWtB,QAAU,KAEnB/C,QAAQC,KAAK,sBACbpC,KAAKqG,uBAAuB1F,EAAWC,EAAmBC,EAAsBC,IAGlF0F,EAAWvB,IAAMsB,CACnB,EAKAF,sBAAAA,CAAuB1F,EAAWC,EAAoB,SAAUC,GAAuB,EAAOC,GAAqB,GACjHd,KAAKkG,0BACLlG,KAAKmB,uBAAsB,GAC3BnB,KAAKP,mBAAqB,EAC1BO,KAAKN,qBAAuB,EAG5BuG,WAAW,KACTjG,KAAK2C,qBAAqBhC,EAAWC,EAAmBC,EAAsBC,IAC7E,IACL,G,mHCvgBJ,MAAM2F,EAAa,CACjBC,MAAO,uBAEHC,EAAa,CAAC,aACdC,EAAa,CACjBF,MAAO,qBAEHG,EAAa,CACjBH,MAAO,uBAEHI,EAAa,CACjBJ,MAAO,mBAEHK,EAAa,CACjBL,MAAO,eAEHM,EAAa,CAAC,OACdC,EAAa,CACjBP,MAAO,cAEHQ,EAAa,CACjBR,MAAO,iBAEHS,EAAc,CAClBT,MAAO,cAEHU,EAAc,CAClBV,MAAO,eAEF,SAASW,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAA+B,QAAkB,qBACjDC,EAAuB,KAC7B,OAAO,WAAc,QAAoB,MAAOpB,EAAY,EAAC,QAAoB,MAAO,CACtFC,MAAO,qBACPoB,UAAWR,EAAKnH,0BACf,KAAM,EAAGwG,IAAa,QAAoB,MAAOC,EAAY,EAAC,QAAoB,MAAOC,EAAY,EAAC,QAAagB,EAAsB,CAC1InB,MAAO,cACPqB,QAASJ,EAASK,OAClBC,OAAQ,GACRC,KAAM,SACL,CACDC,SAAS,QAAS,IAAM,EAAC,QAAaP,EAA8B,CAClEQ,KAAM,WAERC,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAOvB,EAAY,CAACS,EAAO,KAAOA,EAAO,IAAK,QAAoB,MAAO,CACjHb,MAAO,gBACN,EAAC,QAAoB,OAAQ,CAC9BA,MAAO,QACN,MAAM,QAAoB,OAAQ,CACnCA,MAAO,QACN,MAAM,QAAoB,OAAQ,CACnCA,MAAO,QACN,OAAQ,KAAK,QAAoB,MAAOK,EAAY,EAAC,QAAoB,MAAO,CACjF9B,IAAK0C,EAASW,WACd/F,IAAK,MACLmE,MAAO,kBACN,KAAM,EAAGM,QAAiB,QAAoB,MAAOC,EAAY,CAACM,EAAO,MAAQA,EAAO,KAAM,QAAoB,KAAM,CACzHb,MAAO,eACN,SAAU,IAAKa,EAAO,MAAQA,EAAO,KAAM,QAAoB,IAAK,CACrEb,MAAO,qBACN,8BAA+B,KAAK,QAAoB,MAAOQ,EAAY,EAAC,QAAaW,EAAsB,CAChHU,KAAM,UACNL,KAAM,QACNxB,MAAO,yBACPqB,QAASJ,EAASK,QACjB,CACDG,SAAS,QAAS,IAAM,EAAC,QAAaP,EAA8B,CAClEQ,KAAM,OACN1B,MAAO,aACLa,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,MAC1Dc,EAAG,GACF,EAAG,CAAC,aAAa,QAAaR,EAAsB,CACrDK,KAAM,QACNxB,MAAO,2BACPqB,QAASJ,EAASa,QACjB,CACDL,SAAS,QAAS,IAAM,EAAC,QAAaP,EAA8B,CAClEQ,KAAM,aACN1B,MAAO,aACLa,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,MAC1Dc,EAAG,GACF,EAAG,CAAC,eAAe,QAAoB,MAAOlB,EAAa,CAACI,EAAO,KAAOA,EAAO,IAAK,QAAoB,IAAK,CAChHb,MAAO,aACN,UAAW,KAAK,QAAoB,MAAOU,EAAa,EAAC,QAAoB,IAAK,CACnFqB,KAAM,qBACNV,QAASR,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASK,QAAUL,EAASK,UAAUU,IACtFhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CQ,KAAM,qBACJb,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,OAAO,QAAoB,IAAK,CACxFkB,KAAM,qBACNV,QAASR,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASgB,aAAehB,EAASgB,eAAeD,IAChGhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CQ,KAAM,mBACJb,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,OAAO,QAAoB,IAAK,CACxFkB,KAAM,qBACNV,QAASR,EAAO,KAAOA,EAAO,GAAK,IAAImB,IAASf,EAASiB,aAAejB,EAASiB,eAAeF,IAChGhC,MAAO,cACN,EAAC,QAAakB,EAA8B,CAC7CQ,KAAM,SACJb,EAAO,KAAOA,EAAO,IAAK,QAAiB,UAAW,cAAeA,EAAO,MAAQA,EAAO,KAAM,QAAmB,0VAAuW,KACje,C,mCCrGA,GACEsB,KAAM,WACNC,OAAQ,CAACC,EAAA,GACTlJ,SAAU,KACL,QAAW,CAAC,cAAe,eAC9B,UAAAyI,GAEE,OAAO,EAAQ,MACjB,GAEF,OAAAvH,GAEEf,KAAK2C,qBAAqB,cAAe,wBAAwB,GAAO,EAC1E,EACA,aAAA1B,GAEEjB,KAAKkG,yBACP,EACA7E,QAAS,CACP,MAAA2G,GACEhI,KAAKgJ,QAAQC,KAAK,IACpB,EACA,MAAAT,GACM/C,OAAOyD,QAAQ/F,OAAS,EAC1BnD,KAAKgJ,QAAQG,IAAI,GAEjBnJ,KAAKgJ,QAAQC,KAAK,IAEtB,EACA,WAAAN,GACE3I,KAAKgJ,QAAQC,KAAK,aACpB,EACA,WAAAL,GACEnD,OAAO2D,SAASC,QAClB,I,WC9BJ,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASjC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/views/NotFound.vue?30c5","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=59d53856&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=59d53856&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-59d53856\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","onClick","goHome","circle","size","default","icon","_","errorImage","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","$router","push","history","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/967.db104add.js.map.gz b/frontend-dist/js/967.db104add.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..1efd0466f7dd1f1ce790b6fe1aa7a1e994c3edce GIT binary patch literal 9787 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 Vb<8v!v0oG~{9pJx|NUEz003KjX#)TN literal 0 HcmV?d00001 diff --git a/frontend-dist/js/app.e9233b6a.js b/frontend-dist/js/app.08a5e390.js similarity index 98% rename from frontend-dist/js/app.e9233b6a.js rename to frontend-dist/js/app.08a5e390.js index 9c8aa347..3065108a 100644 --- a/frontend-dist/js/app.e9233b6a.js +++ b/frontend-dist/js/app.08a5e390.js @@ -1,2 +1,2 @@ -(function(){"use strict";var e={457:function(e,a,t){var o=t(94373);const n=o.A.create({baseURL:"/",withCredentials:!0});a.A=n},16915:function(e,a,t){var o=t(48512),n=t(51219),l=t(25507),i=t(457),r=t(46638);const s=(e,a,t)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.adminRequired)return l.A.commit("setAdminLoggedIn",!0),t();if(o.valid&&"admin"===o.authType)return l.A.commit("setAdminLoggedIn",!0),t();const i=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()})},d=(e,a,t)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return l.A.commit("setUserLoggedIn",!0),t();if(o.valid)return l.A.commit("setUserLoggedIn",!0),t();const i=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()})},c=[{path:"/",name:"home",component:()=>Promise.all([t.e(385),t.e(451),t.e(870)]).then(t.bind(t,26870)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(21),t.e(283),t.e(679)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(451),t.e(957)]).then(t.bind(t,35177)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(322),t.e(449)]).then(t.bind(t,75449)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(322),t.e(888)]).then(t.bind(t,29888)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(21),t.e(283),t.e(227)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>t.e(331).then(t.bind(t,16331))},{path:"/whiteliston",name:"whiteliston",component:()=>t.e(278).then(t.bind(t,18278))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(412).then(t.bind(t,4412))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>t.e(967).then(t.bind(t,84967))}],u=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=u},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),l=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!1,userLoggedIn:!1,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,adminLoggedIn:e=>e.adminLoggedIn,userLoggedIn:e=>e.userLoggedIn,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,a){e.userConfig=a},setBingWallPapers(e,a){e.bingWallPapers=a},setAdminLoggedIn(e,a){e.adminLoggedIn=a},setUserLoggedIn(e,a){e.userLoggedIn=a},setUploadMethod(e,a){e.uploadMethod=a},setUploadCopyUrlForm(e,a){e.uploadCopyUrlForm=a},setCompressConfig(e,{key:a,value:t}){e.compressConfig[a]=t},setStoreUploadChannel(e,a){e.storeUploadChannel=a},setStoreChannelName(e,a){e.storeChannelName=a},setStoreUploadNameType(e,a){e.storeUploadNameType=a},setCustomUrlSettings(e,{key:a,value:t}){e.customUrlSettings[a]=t},setStoreAutoRetry(e,a){e.storeAutoRetry=a},setAdminUrlSettings(e,{key:a,value:t}){e.adminUrlSettings[a]=t},setUseDarkMode(e,a){e.useDarkMode=a},setCusDarkMode(e,a){e.cusDarkMode=a},setStoreUploadFolder(e,a){e.uploadFolder=a,localStorage.setItem("uploadFolder",a)},setStoreAutoReUpload(e,a){e.autoReUpload=a}},actions:{async fetchUserConfig({commit:e}){try{const a=await n.A.get("/api/userConfig");e("setUserConfig",a.data)}catch(a){console.log(a)}},async fetchBingWallPapers({commit:e}){try{const a=await n.A.get("/api/bing/wallpaper"),t=a.data.data,o=t.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(o.map(e=>new Promise((a,t)=>{const o=new Image;o.onload=a,o.onerror=t,o.src=e.url}))),e("setBingWallPapers",o)}catch(a){console.log(a)}}},modules:{},plugins:[(0,l.A)({paths:["userConfig","uploadMethod","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode"]})]})},46638:function(e,a,t){t.d(a,{Ay:function(){return c},xS:function(){return d}});var o=t(85384),n=JSON.parse('{"login":{"title":"登录到 {owner} 图床","adminTitle":"管理端登录","password":"密码","username":"用户名","passwordPlaceholder":"请输入认证码","usernamePlaceholder":"请输入用户名","adminPasswordPlaceholder":"请输入密码","submit":"登录","success":"登录成功","failed":"登录失败,请检查密码是否正确","adminFailed":"用户名或密码错误","serverError":"服务器错误","systemError":"系统错误","authRequired":"请先认证!","authFailed":"认证失败!"},"upload":{"folderPlaceholder":"上传目录","pasteUpload":"粘贴上传","fileUpload":"文件上传","dragUploadText":"拖拽 点击Ctrl + V 粘贴上传","pasteUrlPlaceholder":"粘贴外链上传,多个外链用换行分隔","pasteUploadBtn":"上 传","pasteSave":"转存","pasteExternal":"外链","history":"上传记录","announcement":"查看公告","noAnnouncement":"暂无公告","announcementTitle":"公告","announcementAck":"我已知晓!","settings":"上传设置","linkFormat":"链接格式","manage":"系统管理","logout":"退出登录","logoutSuccess":"已退出登录","viewDocs":"查看文档","switchUploadMethod":"切换上传方式","copyAll":"整体复制","retryFailed":"失败重试","clearList":"清空列表","clearAll":"清空全部","clearUploaded":"清空已上传"},"uploadForm":{"deleted":"{name}已删除","uploadSuccess":"{name}上传成功","uploadFailed":"{name}上传失败","compressFailedCannotUpload":"{name}压缩失败,无法上传!","fileTooLarge":"{name}文件过大,无法上传!","compressedFileTooLarge":"{name}压缩后文件过大,无法上传!","copySuccess":"复制成功","copyFailed":"复制失败","copyAllSuccess":"整体复制成功","fileNotUploaded":"文件未上传成功,无法复制链接","fileListCleared":"文件列表已清空","fileListEmpty":"文件列表为空","successFilesCleared":"成功上传文件已清空","successFilesEmpty":"成功上传文件为空","noFailedFiles":"无上传失败文件","autoRetryOn":"自动重试已开启","autoRetryOff":"自动重试已关闭","autoRetry":"自动重试","maxRetryReached":"{name} 已达到最大重试次数({max}),停止重试","urlRequestFailed":"粘贴板中的URL地址请求失败","chunkMerging":"分块上传完成,正在合并文件,请耐心等待...","fileSizeTooLarge":"文件过大","chunkInitFailed":"初始化分块上传失败","uploadError":"上传过程中发生错误","imageLoadFailed":"图片加载失败"},"uploadSettings":{"title":"上传设置","uploadChannel":"上传渠道","channelType":"渠道类型","channelName":"渠道名称","channelNameTooltip":"选择具体的渠道名称,不选择则使用负载均衡或默认渠道","autoSelect":"自动选择","uploadDirectory":"上传目录","uploadDirectoryPlaceholder":"请输入上传目录路径","autoSwitch":"自动切换","autoSwitchTooltip":"对于非分块上传文件,上传失败自动切换到其他渠道上传","fileNaming":"文件命名方式","namingDefault":"默认","namingIndex":"仅前缀","namingOrigin":"仅原名","namingShort":"短链接","filePreprocess":"文件预处理","filePreprocessTooltip":"上传前在本地进行格式转换和压缩,仅对图片文件生效","convertToWebp":"转换为WebP","convertToWebpTooltip":"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传","fileCompress":"文件压缩","compressThreshold":"压缩阈值","compressThresholdTooltip":"设置图片大小阈值,超过此值将自动压缩,单位MB","expectedSize":"期望大小","expectedSizeTooltip":"设置压缩后图片大小期望值,单位MB","serverCompress":"服务端压缩","serverCompressTooltip":"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题","enableCompress":"开启压缩","confirm":"确定"},"uploadHistory":{"title":"历史记录","totalRecords":"共 {count} 条","switchView":"切换视图","clearRecords":"清空记录","loading":"加载中...","pullToLoadMore":"下拉加载更多","noMoreRecords":"没有更多记录了","emptyHistory":"暂无上传记录","linkCopied":"链接已复制","copyFailed":"复制失败","clearConfirmTitle":"提示","clearConfirmMessage":"确定要清空所有上传记录吗?","clearConfirmOk":"确定","clearConfirmCancel":"取消","recordsCleared":"记录已清空","deleteConfirmMessage":"确定要删除这条记录吗?","recordDeleted":"记录已删除"},"settings":{"linkFormatTitle":"链接格式设置","defaultCopyLink":"默认复制链接","rawLink":"原始链接","customLink":"自定义链接","customLinkTooltip":"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入","enableCustom":"启用自定义","customPrefix":"自定义前缀","customPrefixPlaceholder":"请输入自定义链接前缀","confirm":"确定","s3Link":"S3链接"},"dashboard":{"searchPlaceholder":"搜索:#标签 -#排除标签","sortByDateDesc":"按时间倒序","sortByNameAsc":"按名称升序","selectedItems":"项已选","clearSelection":"清除选择","copy":"复制","delete":"删除","download":"下载","move":"移动","tagManagement":"标签管理","addToBlacklist":"加入黑名单","addToWhitelist":"加入白名单","linkFormat":"链接格式","listView":"列表视图","cardView":"卡片视图","logout":"退出登录","rootDirectory":"根目录","totalFiles":"共 {count} 个文件","noMatchingFiles":"未找到匹配的文件或文件夹","currentDirEmpty":"当前目录为空","adjustSearchHint":"尝试调整搜索条件或筛选器","uploadHint":"上传文件后将显示在这里","loadMore":"加载更多","totalPages":"共 {count} 页","jumpTo":"跳至","preview":"预览","fileName":"文件名","tags":"标签","channelType":"渠道类型","channelNameCol":"渠道名称","uploadAddress":"上传地址","fileSize":"大小","uploadTime":"上传时间","actions":"操作","externalTag":"外链","unknownTag":"未知","detail":"详情","copyLink":"复制链接","moveFile":"移动","downloadFile":"下载","loadFailed":"加载失败","copySuccess":"复制成功","copyFailed":"复制失败","deleteConfirm":"此操作将永久删除该文件, 是否继续?","deleteConfirmTitle":"提示","deleteConfirmOk":"确定","deleteConfirmCancel":"取消","deleteSuccess":"删除成功","deleteFailed":"删除失败","blockConfirm":"此操作将把该文件加入黑名单, 是否继续?","blockSuccess":"加入黑名单成功","blockFailed":"加入黑名单失败","whiteConfirm":"此操作将把该文件加入白名单, 是否继续?","whiteSuccess":"加入白名单成功","whiteFailed":"加入白名单失败","deleteFolderConfirm":"此操作将永久删除文件夹, 是否继续?","deleteFileConfirm":"此操作将永久删除该文件, 是否继续?","batchDeleteConfirm":"此操作将永久删除选中的文件及文件夹, 是否继续?","batchDeleteSuccess":"批量删除成功","batchDeleteFailed":"批量删除失败","batchBlockConfirm":"此操作将把选中的文件加入黑名单, 是否继续?","batchBlockSuccess":"批量加入黑名单成功","batchBlockFailed":"批量加入黑名单失败","batchWhiteConfirm":"此操作将把选中的文件加入白名单, 是否继续?","batchWhiteSuccess":"批量加入白名单成功","batchWhiteFailed":"批量加入白名单失败","noLinksAvailable":"没有可复制的链接","batchCopySuccess":"批量复制 {count} 个链接成功","batchCopyFailed":"批量复制链接失败,请重试","batchCopyLinksSuccess":"批量复制链接成功","copyFileLinkSuccess":"复制文件链接成功","fileListMemoryCacheWarning":"文件列表较大,已切换为内存缓存;刷新页面后需要重新加载列表。","indexingWarning":"索引构建中,当前搜索和排序结果可能不准确,请稍后再试。","loadMoreFailed":"加载更多文件失败,请检查网络连接","moveSuccess":"移动成功","moveFailed":"移动失败","moveTargetSameAsCurrent":"目标文件夹不能是当前文件夹","invalidPageNumber":"请输入有效的页码","pageExceedsMax":"页码不能超过 {max}","loadingData":"正在加载数据,请稍候...","loadDataFailed":"加载数据失败,请检查网络连接","fetchFileListFailed":"获取文件列表失败","refreshFailed":"刷新失败,请重试","selectFilesFirst":"请先选择文件","syncDataError":"同步数据时出错,请检查网络连接","fetchingFileList":"正在获取文件列表...","folderEmptyNoLinks":"文件夹为空,没有可复制的链接","copiedFileLinks":"已复制 {count} 个文件链接","copyFolderLinksFailed":"复制文件夹链接失败,请重试"},"dashboardTabs":{"fileManagement":"文件管理","userManagement":"用户管理","systemSettings":"系统设置","fileUpload":"文件上传"},"fileDetail":{"title":"文件详情","download":"下载","tags":"标签","blacklist":"黑名单","whitelist":"白名单","deleteBtn":"删除","edit":"编辑","rename":"重命名","save":"保存","cancel":"取消","originUrl":"原始链接","fileNameLabel":"文件名","fileNamePlaceholder":"请输入文件名","fileType":"文件类型","fileTypePlaceholder":"如 image/jpeg","fileSizeLabel":"文件大小","imageDimensions":"图片尺寸","noDimensions":"无","uploadTimeLabel":"上传时间","channelTypeAndName":"渠道类型/名称","accessStatusAndReview":"访问状态/审查","uploadIP":"上传IP","uploadAddressLabel":"上传地址","fileTags":"文件标签","noTags":"暂无标签","unknown":"未知","accessNormal":"正常","accessNormalWhitelist":"正常(白名单)","accessBlockedBlacklist":"已屏蔽(黑名单)","accessBlockedReview":"已屏蔽(审查不通过)","orientationLandscape":"横","orientationPortrait":"竖","orientationSquare":"方","linkCopied":"链接已复制","metadataSaved":"元数据保存成功","metadataSaveFailed":"保存元数据失败","renameTitle":"重命名 File ID","renameLabel":"新 File ID","renamePlaceholder":"请输入新的 File ID","renameCancel":"取消","renameConfirm":"确认重命名","renameSuccess":"文件重命名成功","renameConflict":"目标文件名已存在","renameFailed":"重命名失败"},"filter":{"accessStatus":"访问状态","normal":"正常","blocked":"已屏蔽","blackWhiteList":"黑白名单","whiteList":"白名单","blackList":"黑名单","notSet":"未设置","reviewResult":"审查结果","teenContent":"12+内容","adultContent":"成人内容","fileType":"文件类型","image":"图片","video":"视频","audio":"音频","other":"其他","channelType":"渠道类型","externalLink":"外链","channelName":"渠道名称","clearFilters":"清除筛选"},"moveFile":{"title":"移动文件","batchTitle":"批量移动文件","targetDirectory":"目标目录","targetPlaceholder":"请输入目标目录路径","hint":"提示:路径以 / 开头表示根目录,如 /photos/2024/","hintMobile":"提示:路径以 / 开头表示根目录","selectDirectory":"选择目录","cancel":"取消","confirm":"确定","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadTreeFailed":"加载目录树失败,请检查网络连接"},"batchTag":{"title":"批量标签管理","addTab":"添加","removeTab":"移除","clearTab":"清空","addDescription":"为选中的 {count} 个文件添加标签","inputPlaceholder":"输入标签名称","pendingTags":"待添加的标签","noPendingTags":"暂无待添加标签","addToAllFiles":"添加到所有文件","removeDescription":"移除选中文件的共有标签","commonTags":"共有标签","noCommonTags":"选中的文件没有共有标签","clearDescription":"清空选中的 {count} 个文件的所有标签","clearWarningTitle":"⚠️警告","clearWarningDesc":"此操作将清空所有选中文件的标签,且不可恢复","confirmClearAll":"确认清空所有标签","tagAlreadyInList":"标签已在列表中","pleaseAddTags":"请先添加要批量添加的标签","addSuccess":"成功为 {count} 个文件添加标签","addFailed":"批量添加标签失败","removeSuccess":"成功从 {count} 个文件中移除标签","removeFailed":"移除标签失败","clearConfirmMessage":"确定要清空选中的 {count} 个文件的所有标签吗?此操作不可恢复。","clearConfirmTitle":"确认清空","clearConfirmOk":"确定","clearConfirmCancel":"取消","clearCancelled":"已取消清空操作","clearSuccess":"成功清空 {count} 个文件的标签","clearFailed":"清空标签失败","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败"},"mobileAction":{"viewDetail":"查看详情","copyLink":"复制链接","downloadFile":"下载文件","moveFile":"移动文件","tagManagement":"标签管理","moveFolder":"移动文件夹","deleteFile":"删除文件","deleteFolder":"删除文件夹"},"mobileDirectory":{"title":"目录导航","rootDirectory":"根目录","goBack":"返回上一级"},"sysConfig":{"logout":"退出登录"},"sysConfigTabs":{"systemStatus":"系统状态","uploadSettings":"上传设置","securitySettings":"安全设置","pageSettings":"网页设置","otherSettings":"其他设置"},"dateRangeCalendar":{"previousMonth":"上个月","nextMonth":"下个月","startDate":"起始日期","endDate":"结束日期","rangeSeparator":"至","monthTitle":"{year}-{month}","weekdaySun":"日","weekdayMon":"一","weekdayTue":"二","weekdayWed":"三","weekdayThu":"四","weekdayFri":"五","weekdaySat":"六"},"sysStatus":{"totalFiles":"文件总数","clickToRefresh":"点击刷新","indexUpdateTime":"索引更新时间","systemVersion":"系统版本","clickToViewChangelog":"点击查看更新日志","channelDistribution":"上传渠道分布","fileStatusDistribution":"文件状态分布","uploadTrend":"上传趋势","uploadTrendGroupBy":"上传趋势分组方式","totalUploads":"上传总数","byChannelType":"渠道类型","byChannelName":"渠道名称","selectDateRange":"选择日期范围","otherChannels":"其他","uploadsUnit":"次","noData":"暂无数据","totalFilesLabel":"文件总数","statusTypes":"状态类型","systemMaintenance":"系统维护","rebuildIndex":"重建索引","rebuilding":"重建中...","rebuildTooltip":"重新扫描所有文件并更新索引数据,适用于数据不一致时的修复","backupData":"备份数据","backingUp":"备份中...","backupTooltip":"备份所有文件元数据和系统设置到JSON文件","restoreData":"恢复数据","restoring":"恢复中...","restoreTooltip":"从备份文件恢复数据,将覆盖现有的文件元数据和系统设置","cancelOperation":"取消操作","retry":"重试","close":"关闭","records":"条记录","aboutToComplete":"即将完成","seconds":"约 {count} 秒","minutes":"约 {count} 分钟","hoursMinutes":"约 {hours} 小时 {minutes} 分钟","phaseFetching":"正在获取数据","phaseSorting":"正在排序","phaseUploading":"正在上传","phaseFinalizing":"正在完成","phaseBuilding":"正在构建备份","phaseDownloading":"正在生成下载","phaseRestoringFiles":"正在恢复文件","phaseRestoringSettings":"正在恢复设置","phaseCompleted":"已完成","phaseRetrying":"正在重试","rebuildSuccess":"索引重建完成!共处理 {count} 个文件","backupSuccess":"备份完成!共备份 {count} 个文件","backupSuccessWithSettings":"备份完成!共备份 {fileCount} 个文件,{settingsCount} 个设置项","operationInProgress":"已有操作正在进行中","selectJsonFile":"请选择JSON格式的备份文件","restoreConfirmMessage":"恢复操作将覆盖现有的文件元数据和系统设置,此操作不可逆。确定要继续吗?","restoreConfirmTitle":"确认恢复","restoreConfirmOk":"确定恢复","restoreConfirmCancel":"取消","invalidBackupFile":"备份文件格式无效,请选择有效的 JSON 文件","restoreSuccess":"恢复完成!已恢复 {files} 个文件和 {settings} 个设置项,正在重建索引...","restoreFailed":"恢复数据失败","fetchIndexFailed":"获取索引信息失败","unknown":"未知","blocked":"已屏蔽","normalStatus":"正常","latestUpload":"最近上传","earliestUpload":"最早上传","daysAgo":"{count}天前","hoursAgo":"{count}小时前","minutesAgo":"{count}分钟前","justNow":"刚刚","cancellingRebuild":"正在取消索引重建..."},"sysUpload":{"title":"上传渠道管理","titleTooltip":"管理所有上传渠道的配置,点击卡片查看详情或编辑","filterPlaceholder":"筛选渠道类型","addChannel":"添加渠道","loadBalance":"负载均衡","unnamedChannel":"未命名渠道","envVariable":"环境变量","noChannels":"暂无 {type} 渠道","detail":"详情","editBtn":"编辑","deleteBtn":"删除","addDialogTitle":"添加新渠道","channelTypeLabel":"渠道类型","channelTypePlaceholder":"请选择渠道类型","channelNameLabel":"渠道名称","channelNamePlaceholder":"请输入渠道名称","channelNameImmutableTip":"添加后将作为文件关联渠道的唯一标识,不支持修改","channelNameEditDisabledTip":"渠道名称用于关联已上传文件,不支持修改","botTokenLabel":"Bot Token","botTokenPlaceholder":"请输入 Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"请输入 Chat ID","proxyDomain":"代理域名","proxyDomainPlaceholder":"可选,例如: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"例如: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN 域名","cdnDomainPlaceholder":"可选,请填写完整 CDN 访问地址前缀,例如:https://cdn.example.com","cdnDomainTip":"可选配置。可用于生成和展示文件访问链接,服务端读取文件内容时也会优先尝试通过 CDN 读取。","bucketName":"存储桶名称","bucketNamePlaceholder":"请输入存储桶名称","bucketRegion":"存储桶区域","bucketRegionPlaceholder":"默认填写 auto","accessKeyId":"访问密钥 ID","accessKeyIdPlaceholder":"请输入访问密钥 ID","secretAccessKey":"机密访问密钥","secretAccessKeyPlaceholder":"请输入机密访问密钥","pathStyle":"路径风格","pathStyleTip":"使用 OpenList 等不兼容主机风格服务时需开启","quotaLimit":"容量限制","quotaLimitGB":"容量上限 (GB)","quotaThreshold":"停用阈值 (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"请输入 Channel ID","nitroMember":"Nitro 会员","nitroTip":"会员单文件限制 25MB,否则为 10MB","discordWarning":"Discord 有接口频率限制,不建议将其用作大规模并发场景","repoName":"仓库名","repoNamePlaceholder":"格式: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"请输入 Access Token","privateRepo":"私有仓库","privateRepoTip":"私有仓库限制 100GB","webdavBaseUrl":"WebDAV 基础地址","webdavBaseUrlPlaceholder":"例如: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"用户名","webdavUsernamePlaceholder":"可选用户名","webdavPassword":"密码","webdavPasswordPlaceholder":"可选密码","webdavPublicUrlPlaceholder":"可选,请填写完整公开访问地址前缀,例如:https://cdn.example.com/imgbed","webdavPublicUrlTip":"可选配置。服务端读取文件内容时会优先尝试通过该公开地址读取,失败后回退 WebDAV API。","webdavHeaders":"自定义请求头","webdavHeadersPlaceholder":"可选 JSON 对象,例如: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"自定义请求头必须是有效的 JSON 对象","webdavCreateDirectory":"自动创建目录","webdavCreateDirectoryTip":"上传文件前自动创建父级目录","cancel":"取消","confirmAdd":"确认添加","detailDialogTitle":"渠道详情 - {name}","channelNameDetail":"渠道名称","channelTypeDetail":"渠道类型","statusLabel":"状态","enabled":"已启用","disabled":"已禁用","configSource":"配置来源","publicUrl":"公开访问链接","notSet":"未设置","isPathStyle":"是","isNotPathStyle":"否","currentUsage":"当前用量","closeBtn":"关闭","editDialogTitle":"编辑渠道 - {name}","enableChannel":"启用渠道","saveChanges":"保存修改","r2ConfigNote":"请按照
配置 R2 渠道 文档说明添加 R2 渠道","reservedName":"该名称为系统保留名称,请使用其他名称","duplicateName":"该类型下已存在同名渠道,请使用其他名称","fixedChannelCannotDelete":"环境变量配置的渠道无法删除","deleteChannelConfirm":"确定要删除该渠道吗?删除后,仍关联该渠道的文件可能无法访问。","quotaInitConfirm":"首次启用容量限制需要统计现有文件容量,这可能需要一些时间。是否立即统计?","quotaInitTitle":"初始化容量统计","quotaInitConfirmBtn":"立即统计","quotaInitCancelBtn":"稍后手动统计","quotaInitLater":"您可以稍后点击刷新按钮手动统计","quotaCalculating":"正在统计容量,请稍候...","quotaCalculateSuccess":"容量统计完成","quotaCalculateFailed":"统计失败","quotaCalculateError":"统计失败: "},"sysSecurity":{"authManagement":"认证管理","userAuth":"用户端认证","adminAuth":"管理端认证","uploadPassword":"上传密码","confirmPassword":"确认密码","adminUsername":"用户名","adminPassword":"密码","apiTokenManagement":"API Token 管理","imageReview":"图像审查","imageReviewTooltip":"仅对非分块上传文件生效,支持 nsfwjs 和 moderatecontent.com 渠道","enableReview":"开启审查","reviewChannel":"审查渠道","reviewChannelPlaceholder":"请选择审查渠道","apiKey":"API Key","apiPath":"API 路径","ipQuery":"IP 归属地查询","ipQueryTooltip":"上传时按配置调用自定义 API 查询上传 IP 归属地,参数值支持 {\'{ip}\'} 占位符","enableIpQuery":"开启查询","ipQueryChannel":"查询渠道","ipQueryChannelPlaceholder":"请选择查询渠道","customApi":"自定义 API","queryParams":"查询参数","paramNamePlaceholder":"参数名","paramValuePlaceholder":"参数值,如 {\'{ip}\'}","addQueryParam":"添加参数","responseFields":"响应字段","responseFieldsTip":"最终显示内容会按照字段顺序拼接","responseFieldPathPlaceholder":"JSON 路径,如 country.name","addResponseField":"添加字段","uploadManagement":"上传管理","accessManagement":"访问管理","domainFilter":"域名过滤","allowedDomains":"放行域名","allowedDomainsTooltip":"1.针对访问域名设置权限
2.留空默认全部放行,多个域名请用英文逗号分隔","whiteListMode":"白名单模式","enableWhiteList":"是否开启","enableWhiteListTooltip":"1.针对文件设置权限
2.开启后,仅被加入白名单的文件可被访问","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

允许公开浏览的目录,多个目录用逗号分隔

示例:wallpaper,photos,album

支持子目录:2026/lucky,2026/rich

访问链接:https://你的域名/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"启用后,可以通过WebDAV协议访问和管理图片","webdavUsername":"用户名","webdavPassword":"密码","webdavUploadChannel":"上传渠道","webdavDefaultChannel":"默认渠道","webdavChannelName":"指定渠道名","settingsSaved":"设置已保存"},"customerConfig":{"uploadFileList":"上传文件列表","fileNameCol":"文件名","filePreview":"文件预览","uploadTimeCol":"上传时间","ipAddress":"IP地址","address":"地址","uploadCount":"上传次数","allowUpload":"允许上传","allow":"允许","deny":"禁止","loadMore":"加载更多","loadError":"加载更多数据时出错,请检查网络连接","syncError":"同步数据时出错,请检查网络连接"},"publicBrowse":{"searchPlaceholder":"搜索文件名 或 #页码","fileCount":"{count} 个文件","loading":"加载中...","retry":"重试","creditText":"该图库由林酱贡献代码","loadingMore":"加载中...","allLoaded":"已加载全部","creditLink":"林酱贡献","browseDisabled":"公开浏览功能未启用","directoryNotAllowed":"该目录不允许公开访问","accessDenied":"访问被拒绝","loadFailed":"加载失败,请重试","rootDirectory":"根目录","copyLink":"复制链接","copied":"已复制","downloadBtn":"下载","swipeHint":"← 滑动切换 →","rotate90":"旋转90°"},"transformMedia":{"download":"下载","playbackSpeed":"播放速度","normalSpeed":"正常","playMode":"播放模式","stopAfterPlay":"播完停止","sequentialPlay":"顺序播放","loopSingle":"单曲循环","more":"更多"},"directoryTree":{"selectDirectory":"选择目录","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadFailed":"加载目录树失败,请检查网络连接"},"floatingSave":{"saving":"保存中","save":"保存"},"theme":{"lightMode":"浅色模式","darkMode":"深色模式","autoMode":"自动模式"},"common":{"confirm":"确定","cancel":"取消","close":"关闭","save":"保存","delete":"删除","edit":"编辑","copy":"复制","download":"下载","retry":"重试","loading":"加载中...","success":"成功","failed":"失败","warning":"警告","info":"提示","yes":"是","no":"否","all":"全部类型","select":"请选择"},"validation":{"pathMustStartWithSlash":"目标目录必须以 \\"/\\" 开头","pathTraversalNotAllowed":"目标目录不能包含路径穿越字符 \\"..\\"","singleDotNotAllowed":"目标目录不能包含单独的 \\".\\" 路径段","consecutiveSlashNotAllowed":"目标目录不能包含连续的斜杠","invalidCharacters":"目标目录包含非法字符,请使用合法的路径格式","uploadDirReplace":"上传目录"},"language":{"switchTo":"中/En","switchLanguage":"切换语言"},"whitelist":{"title":"白名单模式已启用","description":"抱歉,当前已开启白名单模式,上传的图片需要审核通过后才能展示,请等待审核通过后再进行访问。","goHome":"返回首页","goBack":"返回上页","helpText":"您可以尝试:","uploadImage":"图片上传","refreshPage":"刷新页面"}}'),l=JSON.parse('{"login":{"title":"Login to {owner} ImgHub","adminTitle":"Admin Login","password":"Password","username":"Username","passwordPlaceholder":"Enter auth code","usernamePlaceholder":"Enter username","adminPasswordPlaceholder":"Enter password","submit":"Login","success":"Login successful","failed":"Login failed, please check your password","adminFailed":"Invalid username or password","serverError":"Server error","systemError":"System error","authRequired":"Please authenticate first!","authFailed":"Authentication failed!"},"upload":{"folderPlaceholder":"Upload directory","pasteUpload":"Paste Upload","fileUpload":"File Upload","dragUploadText":"Drag Click or Ctrl + V to paste upload","pasteUrlPlaceholder":"Paste external links, separate multiple links with line breaks","pasteUploadBtn":"Upload","pasteSave":"Save","pasteExternal":"External","history":"Upload History","announcement":"Announcements","noAnnouncement":"No announcements","announcementTitle":"Announcement","announcementAck":"Got it!","settings":"Upload Settings","linkFormat":"Link Format","manage":"Management","logout":"Logout","logoutSuccess":"Logged out","viewDocs":"Documentation","switchUploadMethod":"Switch Upload Method","copyAll":"Copy All","retryFailed":"Retry Failed","clearList":"Clear List","clearAll":"Clear All","clearUploaded":"Clear Uploaded"},"uploadForm":{"deleted":"{name} deleted","uploadSuccess":"{name} uploaded successfully","uploadFailed":"{name} upload failed","compressFailedCannotUpload":"{name} compression failed, cannot upload!","fileTooLarge":"{name} file too large, cannot upload!","compressedFileTooLarge":"{name} still too large after compression, cannot upload!","copySuccess":"Copied successfully","copyFailed":"Copy failed","copyAllSuccess":"All copied successfully","fileNotUploaded":"File not uploaded, cannot copy link","fileListCleared":"File list cleared","fileListEmpty":"File list is empty","successFilesCleared":"Uploaded files cleared","successFilesEmpty":"No uploaded files","noFailedFiles":"No failed files","autoRetryOn":"Auto retry enabled","autoRetryOff":"Auto retry disabled","autoRetry":"Auto Retry","maxRetryReached":"{name} reached max retry limit ({max}), stopping","urlRequestFailed":"URL request from clipboard failed","chunkMerging":"Chunk upload complete, merging file, please wait...","fileSizeTooLarge":"File too large","chunkInitFailed":"Failed to init chunked upload","uploadError":"Upload error occurred","imageLoadFailed":"Image load failed"},"uploadSettings":{"title":"Upload Settings","uploadChannel":"Upload Channel","channelType":"Channel Type","channelName":"Channel Name","channelNameTooltip":"Select a specific channel name. If not selected, load balancing or default channel will be used","autoSelect":"Auto Select","uploadDirectory":"Upload Directory","uploadDirectoryPlaceholder":"Enter upload directory path","autoSwitch":"Auto Switch","autoSwitchTooltip":"For non-chunked uploads, automatically switch to another channel on failure","fileNaming":"File Naming","namingDefault":"Default","namingIndex":"Prefix Only","namingOrigin":"Original Name","namingShort":"Short Link","filePreprocess":"File Preprocessing","filePreprocessTooltip":"Convert format and compress locally before upload, only applies to image files","convertToWebp":"Convert to WebP","convertToWebpTooltip":"Convert images to WebP format before upload to reduce file size. Falls back to original format on failure","fileCompress":"File Compression","compressThreshold":"Compression Threshold","compressThresholdTooltip":"Set image size threshold, files exceeding this will be auto-compressed (MB)","expectedSize":"Expected Size","expectedSizeTooltip":"Set expected image size after compression (MB)","serverCompress":"Server-side Compression","serverCompressTooltip":"1. Compress on Telegram side, only applies to image files uploaded via Telegram channel
2. If image size (after local compression) exceeds 10MB, this setting is ignored
3. For high-resolution, transparent background images, it\'s recommended to disable server compression to avoid issues","enableCompress":"Enable Compression","confirm":"OK"},"uploadHistory":{"title":"History","totalRecords":"{count} records","switchView":"Switch View","clearRecords":"Clear Records","loading":"Loading...","pullToLoadMore":"Pull to load more","noMoreRecords":"No more records","emptyHistory":"No upload history","linkCopied":"Link copied","copyFailed":"Copy failed","clearConfirmTitle":"Notice","clearConfirmMessage":"Are you sure you want to clear all upload records?","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","recordsCleared":"Records cleared","deleteConfirmMessage":"Are you sure you want to delete this record?","recordDeleted":"Record deleted"},"settings":{"linkFormatTitle":"Link Format Settings","defaultCopyLink":"Default Copy Format","rawLink":"Raw Link","customLink":"Custom Link","customLinkTooltip":"Default link is https://your.domain/file/xxx.jpg
If custom link format is enabled, only the xxx.jpg part is kept, please enter the rest manually","enableCustom":"Enable Custom","customPrefix":"Custom Prefix","customPrefixPlaceholder":"Enter custom link prefix","confirm":"OK","s3Link":"S3 Link"},"dashboard":{"searchPlaceholder":"Search: #tag -#exclude","sortByDateDesc":"Sort by date (newest)","sortByNameAsc":"Sort by name (A-Z)","selectedItems":"selected","clearSelection":"Clear selection","copy":"Copy","delete":"Delete","download":"Download","move":"Move","tagManagement":"Tag Management","addToBlacklist":"Add to Blacklist","addToWhitelist":"Add to Whitelist","linkFormat":"Link Format","listView":"List View","cardView":"Card View","logout":"Logout","rootDirectory":"Root","totalFiles":"{count} files","noMatchingFiles":"No matching files or folders found","currentDirEmpty":"Current directory is empty","adjustSearchHint":"Try adjusting search criteria or filters","uploadHint":"Uploaded files will appear here","loadMore":"Load More","totalPages":"{count} pages","jumpTo":"Go to","preview":"Preview","fileName":"File Name","tags":"Tags","channelType":"Channel Type","channelNameCol":"Channel Name","uploadAddress":"Upload Address","fileSize":"Size","uploadTime":"Upload Time","actions":"Actions","externalTag":"External","unknownTag":"Unknown","detail":"Detail","copyLink":"Copy Link","moveFile":"Move","downloadFile":"Download","loadFailed":"Load failed","copySuccess":"Copied successfully","copyFailed":"Copy failed","deleteConfirm":"This will permanently delete this file. Continue?","deleteConfirmTitle":"Notice","deleteConfirmOk":"OK","deleteConfirmCancel":"Cancel","deleteSuccess":"Deleted successfully","deleteFailed":"Delete failed","blockConfirm":"This will add the file to blacklist. Continue?","blockSuccess":"Added to blacklist successfully","blockFailed":"Failed to add to blacklist","whiteConfirm":"This will add the file to whitelist. Continue?","whiteSuccess":"Added to whitelist successfully","whiteFailed":"Failed to add to whitelist","deleteFolderConfirm":"This will permanently delete this folder. Continue?","deleteFileConfirm":"This will permanently delete this file. Continue?","batchDeleteConfirm":"This will permanently delete selected files and folders. Continue?","batchDeleteSuccess":"Batch delete successful","batchDeleteFailed":"Batch delete failed","batchBlockConfirm":"This will add selected files to blacklist. Continue?","batchBlockSuccess":"Batch blacklist successful","batchBlockFailed":"Batch blacklist failed","batchWhiteConfirm":"This will add selected files to whitelist. Continue?","batchWhiteSuccess":"Batch whitelist successful","batchWhiteFailed":"Batch whitelist failed","noLinksAvailable":"No links to copy","batchCopySuccess":"Copied {count} links successfully","batchCopyFailed":"Batch copy failed, please retry","batchCopyLinksSuccess":"Batch copy successful","copyFileLinkSuccess":"File link copied","fileListMemoryCacheWarning":"The file list is large, so it is being kept in memory. Refreshing the page will require loading it again.","indexingWarning":"The index is still building, so current search and sort results may be inaccurate. Please try again later.","loadMoreFailed":"Failed to load more files, please check network","moveSuccess":"Moved successfully","moveFailed":"Move failed","moveTargetSameAsCurrent":"Target folder cannot be the current folder","invalidPageNumber":"Please enter a valid page number","pageExceedsMax":"Page number cannot exceed {max}","loadingData":"Loading data, please wait...","loadDataFailed":"Failed to load data, please check network","fetchFileListFailed":"Failed to fetch file list","refreshFailed":"Refresh failed, please retry","selectFilesFirst":"Please select files first","syncDataError":"Error syncing data, please check network","fetchingFileList":"Fetching file list...","folderEmptyNoLinks":"Folder is empty, no links to copy","copiedFileLinks":"Copied {count} file links","copyFolderLinksFailed":"Failed to copy folder links, please retry"},"dashboardTabs":{"fileManagement":"File Management","userManagement":"User Management","systemSettings":"System Settings","fileUpload":"File Upload"},"fileDetail":{"title":"File Details","download":"Download","tags":"Tags","blacklist":"Blacklist","whitelist":"Whitelist","deleteBtn":"Delete","edit":"Edit","rename":"Rename","save":"Save","cancel":"Cancel","originUrl":"Original Link","fileNameLabel":"File Name","fileNamePlaceholder":"Enter file name","fileType":"File Type","fileTypePlaceholder":"e.g. image/jpeg","fileSizeLabel":"File Size","imageDimensions":"Dimensions","noDimensions":"N/A","uploadTimeLabel":"Upload Time","channelTypeAndName":"Channel Type/Name","accessStatusAndReview":"Access Status/Review","uploadIP":"Upload IP","uploadAddressLabel":"Upload Address","fileTags":"File Tags","noTags":"No tags","unknown":"Unknown","accessNormal":"Normal","accessNormalWhitelist":"Normal (Whitelisted)","accessBlockedBlacklist":"Blocked (Blacklisted)","accessBlockedReview":"Blocked (Review rejected)","orientationLandscape":"Landscape","orientationPortrait":"Portrait","orientationSquare":"Square","linkCopied":"Link copied","metadataSaved":"Metadata saved successfully","metadataSaveFailed":"Failed to save metadata","renameTitle":"Rename File ID","renameLabel":"New File ID","renamePlaceholder":"Enter new File ID","renameCancel":"Cancel","renameConfirm":"Confirm Rename","renameSuccess":"File renamed successfully","renameConflict":"Target file name already exists","renameFailed":"Rename failed"},"filter":{"accessStatus":"Access Status","normal":"Normal","blocked":"Blocked","blackWhiteList":"Black/White List","whiteList":"Whitelist","blackList":"Blacklist","notSet":"Not Set","reviewResult":"Review Result","teenContent":"12+ Content","adultContent":"Adult Content","fileType":"File Type","image":"Image","video":"Video","audio":"Audio","other":"Other","channelType":"Channel Type","externalLink":"External Link","channelName":"Channel Name","clearFilters":"Clear Filters"},"moveFile":{"title":"Move File","batchTitle":"Batch Move Files","targetDirectory":"Target Directory","targetPlaceholder":"Enter target directory path","hint":"Tip: Paths starting with / indicate root directory, e.g. /photos/2024/","hintMobile":"Tip: Paths starting with / indicate root directory","selectDirectory":"Select Directory","cancel":"Cancel","confirm":"OK","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadTreeFailed":"Failed to load directory tree, please check network connection"},"batchTag":{"title":"Batch Tag Management","addTab":"Add","removeTab":"Remove","clearTab":"Clear","addDescription":"Add tags to {count} selected files","inputPlaceholder":"Enter tag name","pendingTags":"Tags to add","noPendingTags":"No tags to add","addToAllFiles":"Add to all files","removeDescription":"Remove common tags from selected files","commonTags":"Common Tags","noCommonTags":"Selected files have no common tags","clearDescription":"Clear all tags from {count} selected files","clearWarningTitle":"⚠️Warning","clearWarningDesc":"This will clear all tags from selected files and cannot be undone","confirmClearAll":"Confirm clear all tags","tagAlreadyInList":"Tag already in list","pleaseAddTags":"Please add tags first","addSuccess":"Tags added to {count} files successfully","addFailed":"Batch tag addition failed","removeSuccess":"Tags removed from {count} files successfully","removeFailed":"Tag removal failed","clearConfirmMessage":"Are you sure you want to clear all tags from {count} selected files? This cannot be undone.","clearConfirmTitle":"Confirm Clear","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","clearCancelled":"Clear operation cancelled","clearSuccess":"Tags cleared from {count} files successfully","clearFailed":"Failed to clear tags","loadCommonTagsFailed":"Failed to load common tags"},"tagManagement":{"title":"Tag Management","inputPlaceholder":"Enter tag name","currentTags":"Current Tags","noTags":"No tags","popularTags":"Popular Tags","loading":"Loading...","noPopularTags":"No popular tags","close":"Close","tagExists":"Tag already exists","addSuccess":"Tag added successfully","addFailed":"Failed to add tag","removeSuccess":"Tag removed successfully","removeFailed":"Failed to remove tag","loadFailed":"Failed to load tags"},"mobileAction":{"viewDetail":"View Details","copyLink":"Copy Link","downloadFile":"Download File","moveFile":"Move File","tagManagement":"Tag Management","moveFolder":"Move Folder","deleteFile":"Delete File","deleteFolder":"Delete Folder"},"mobileDirectory":{"title":"Directory Navigation","rootDirectory":"Root","goBack":"Go Back"},"sysConfig":{"logout":"Logout"},"sysConfigTabs":{"systemStatus":"System Status","uploadSettings":"Upload Settings","securitySettings":"Security Settings","pageSettings":"Page Settings","otherSettings":"Other Settings"},"dateRangeCalendar":{"previousMonth":"Previous month","nextMonth":"Next month","startDate":"Start date","endDate":"End date","rangeSeparator":"to","monthTitle":"{year}-{month}","weekdaySun":"Sun","weekdayMon":"Mon","weekdayTue":"Tue","weekdayWed":"Wed","weekdayThu":"Thu","weekdayFri":"Fri","weekdaySat":"Sat"},"sysStatus":{"totalFiles":"Total Files","clickToRefresh":"Click to refresh","indexUpdateTime":"Index Update Time","systemVersion":"System Version","clickToViewChangelog":"Click to view changelog","channelDistribution":"Upload Channel Distribution","fileStatusDistribution":"File Status Distribution","uploadTrend":"Upload Trend","uploadTrendGroupBy":"Upload trend group by","totalUploads":"Total Uploads","byChannelType":"Channel Type","byChannelName":"Channel Name","selectDateRange":"Select date range","otherChannels":"Other","uploadsUnit":"uploads","noData":"No data","totalFilesLabel":"Total Files","statusTypes":"Status Types","systemMaintenance":"System Maintenance","rebuildIndex":"Rebuild Index","rebuilding":"Rebuilding...","rebuildTooltip":"Rescan all files and update index data, useful for fixing data inconsistencies","backupData":"Backup Data","backingUp":"Backing up...","backupTooltip":"Backup all file metadata and system settings to a JSON file","restoreData":"Restore Data","restoring":"Restoring...","restoreTooltip":"Restore data from a backup file, this will overwrite existing file metadata and system settings","cancelOperation":"Cancel Operation","retry":"Retry","close":"Close","records":"records","aboutToComplete":"Almost done","seconds":"~{count} seconds","minutes":"~{count} minutes","hoursMinutes":"~{hours} hours {minutes} minutes","phaseFetching":"Fetching data","phaseSorting":"Sorting","phaseUploading":"Uploading","phaseFinalizing":"Finalizing","phaseBuilding":"Building backup","phaseDownloading":"Generating download","phaseRestoringFiles":"Restoring files","phaseRestoringSettings":"Restoring settings","phaseCompleted":"Completed","phaseRetrying":"Retrying","rebuildSuccess":"Index rebuild complete! Processed {count} files","backupSuccess":"Backup complete! Backed up {count} files","backupSuccessWithSettings":"Backup complete! Backed up {fileCount} files and {settingsCount} settings","operationInProgress":"An operation is already in progress","selectJsonFile":"Please select a JSON backup file","restoreConfirmMessage":"Restoring will overwrite existing file metadata and system settings. This cannot be undone. Continue?","restoreConfirmTitle":"Confirm Restore","restoreConfirmOk":"Confirm Restore","restoreConfirmCancel":"Cancel","invalidBackupFile":"Invalid backup file format, please select a valid JSON file","restoreSuccess":"Restore complete! Restored {files} files and {settings} settings, rebuilding index...","restoreFailed":"Failed to restore data","fetchIndexFailed":"Failed to fetch index information","unknown":"Unknown","blocked":"Blocked","normalStatus":"Normal","latestUpload":"Latest Upload","earliestUpload":"Earliest Upload","daysAgo":"{count} days ago","hoursAgo":"{count} hours ago","minutesAgo":"{count} minutes ago","justNow":"Just now","cancellingRebuild":"Cancelling index rebuild..."},"sysUpload":{"title":"Upload Channel Management","titleTooltip":"Manage all upload channel configurations. Click a card to view details or edit","filterPlaceholder":"Filter channel type","addChannel":"Add Channel","loadBalance":"Load Balance","unnamedChannel":"Unnamed Channel","envVariable":"Environment Variable","noChannels":"No {type} channels","detail":"Detail","editBtn":"Edit","deleteBtn":"Delete","addDialogTitle":"Add New Channel","channelTypeLabel":"Channel Type","channelTypePlaceholder":"Select channel type","channelNameLabel":"Channel Name","channelNamePlaceholder":"Enter channel name","channelNameImmutableTip":"After creation, this becomes the unique identifier for files associated with the channel and cannot be changed","channelNameEditDisabledTip":"The channel name links uploaded files to this channel and cannot be changed","botTokenLabel":"Bot Token","botTokenPlaceholder":"Enter Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"Enter Chat ID","proxyDomain":"Proxy Domain","proxyDomainPlaceholder":"Optional, e.g.: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"e.g.: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN Domain","cdnDomainPlaceholder":"Optional. Enter the full CDN URL prefix, e.g. https://cdn.example.com","cdnDomainTip":"Optional. Can be used to generate and display file access links. Server-side file reads also try the CDN first.","bucketName":"Bucket Name","bucketNamePlaceholder":"Enter bucket name","bucketRegion":"Bucket Region","bucketRegionPlaceholder":"Default: auto","accessKeyId":"Access Key ID","accessKeyIdPlaceholder":"Enter Access Key ID","secretAccessKey":"Secret Access Key","secretAccessKeyPlaceholder":"Enter Secret Access Key","pathStyle":"Path Style","pathStyleTip":"Enable when using services incompatible with host-style like OpenList","quotaLimit":"Quota Limit","quotaLimitGB":"Quota Limit (GB)","quotaThreshold":"Disable Threshold (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"Enter Channel ID","nitroMember":"Nitro Member","nitroTip":"Nitro members: 25MB per file, otherwise 10MB","discordWarning":"Discord has API rate limits, not recommended for high-concurrency scenarios","repoName":"Repository Name","repoNamePlaceholder":"Format: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"Enter Access Token","privateRepo":"Private Repository","privateRepoTip":"Private repository limit: 100GB","webdavBaseUrl":"WebDAV Base URL","webdavBaseUrlPlaceholder":"e.g.: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"Username","webdavUsernamePlaceholder":"Optional username","webdavPassword":"Password","webdavPasswordPlaceholder":"Optional password","webdavPublicUrlPlaceholder":"Optional. Enter the full public URL prefix, e.g. https://cdn.example.com/imgbed","webdavPublicUrlTip":"Optional. Server-side file reads try this public URL first and fall back to the WebDAV API on failure.","webdavHeaders":"Custom Headers","webdavHeadersPlaceholder":"Optional JSON object, e.g.: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"Custom headers must be a valid JSON object","webdavCreateDirectory":"Auto Create Directories","webdavCreateDirectoryTip":"Create parent directories before uploading files","cancel":"Cancel","confirmAdd":"Confirm Add","detailDialogTitle":"Channel Details - {name}","channelNameDetail":"Channel Name","channelTypeDetail":"Channel Type","statusLabel":"Status","enabled":"Enabled","disabled":"Disabled","configSource":"Config Source","publicUrl":"Public Access URL","notSet":"Not Set","isPathStyle":"Yes","isNotPathStyle":"No","currentUsage":"Current Usage","closeBtn":"Close","editDialogTitle":"Edit Channel - {name}","enableChannel":"Enable Channel","saveChanges":"Save Changes","r2ConfigNote":"Please follow the R2 Channel Configuration documentation to add R2 channels","reservedName":"This name is reserved by the system, please use another name","duplicateName":"A channel with this name already exists, please use another name","fixedChannelCannotDelete":"Channels configured via environment variables cannot be deleted","deleteChannelConfirm":"Are you sure you want to delete this channel? Files still associated with it may become inaccessible.","quotaInitConfirm":"First time enabling quota requires calculating existing file sizes, this may take some time. Calculate now?","quotaInitTitle":"Initialize Quota Statistics","quotaInitConfirmBtn":"Calculate Now","quotaInitCancelBtn":"Calculate Later","quotaInitLater":"You can click the refresh button to calculate later","quotaCalculating":"Calculating quota, please wait...","quotaCalculateSuccess":"Quota calculation complete","quotaCalculateFailed":"Calculation failed","quotaCalculateError":"Calculation failed: "},"sysSecurity":{"authManagement":"Authentication Management","userAuth":"User Authentication","adminAuth":"Admin Authentication","uploadPassword":"Upload Password","confirmPassword":"Confirm Password","adminUsername":"Username","adminPassword":"Password","apiTokenManagement":"API Token Management","imageReview":"Image Review","imageReviewTooltip":"Only applies to non-chunked uploads, supports nsfwjs and moderatecontent.com channels","enableReview":"Enable Review","reviewChannel":"Review Channel","reviewChannelPlaceholder":"Select review channel","apiKey":"API Key","apiPath":"API Path","ipQuery":"IP Geolocation Query","ipQueryTooltip":"Calls a custom API during upload to query the upload IP location. Parameter values support the {\'{ip}\'} placeholder","enableIpQuery":"Enable Query","ipQueryChannel":"Query Channel","ipQueryChannelPlaceholder":"Select query channel","customApi":"Custom API","queryParams":"Query Parameters","paramNamePlaceholder":"Parameter name","paramValuePlaceholder":"Parameter value, e.g. {\'{ip}\'}","addQueryParam":"Add Parameter","responseFields":"Response Fields","responseFieldsTip":"The final display text is joined in field order","responseFieldPathPlaceholder":"JSON path, e.g. country.name","addResponseField":"Add Field","uploadManagement":"Upload Management","accessManagement":"Access Management","domainFilter":"Domain Filter","allowedDomains":"Allowed Domains","allowedDomainsTooltip":"1. Set permissions based on access domain
2. Leave empty to allow all, separate multiple domains with commas","whiteListMode":"Whitelist Mode","enableWhiteList":"Enable","enableWhiteListTooltip":"1. Set permissions based on files
2. When enabled, only whitelisted files can be accessed","settingsSaved":"Settings saved","tokenName":"Name","tokenValue":"Token","permissions":"Permissions","createdAt":"Created At","status":"Status","expiresAt":"Expires At","operation":"Actions","editBtn":"Edit","deleteBtn":"Delete","permUpload":"Upload","permDelete":"Delete","permList":"List","permManage":"Manage","createTokenTitle":"Create New API Token","tokenNameLabel":"Token Name","tokenNamePlaceholder":"Enter token name","permissionsLabel":"Permissions","neverExpire":"Never Expire","validPeriod":"Valid Period","autoDeleteOnExpire":"Auto-delete on expiry","createBtn":"Create","editTokenTitle":"Edit API Token","updateBtn":"Update","tokenCreatedTitle":"Token Created Successfully","tokenCreatedWarning":"Please save the following token. You won\'t be able to view the full token after closing this dialog!","fullToken":"Full Token","copyBtn":"Copy","savedBtn":"I\'ve Saved It","tokenCopied":"Token copied to clipboard","copyFailed":"Copy failed, please copy manually","tokenCreateSuccess":"Token created successfully","tokenCreateFailed":"Failed to create token","tokenUpdateSuccess":"Token updated successfully","tokenUpdateFailed":"Failed to update token","tokenDeleteConfirm":"This will permanently delete this token. Continue?","tokenDeleteConfirmTitle":"Notice","tokenDeleteConfirmOk":"OK","tokenDeleteConfirmCancel":"Cancel","tokenDeleteSuccess":"Token deleted successfully","tokenDeleteFailed":"Failed to delete token","tokenListFailed":"Failed to fetch token list","passwordUrlReserved":"Password cannot contain URL reserved characters: % & ? # /","confirmUploadPassword":"Please re-enter upload password","confirmAdminPassword":"Please re-enter admin password","passwordMismatch":"Passwords do not match","passwordUnchanged":"Unchanged (leave empty to keep current password)","adminPasswordChangedRelogin":"Admin password changed, redirecting to login page","clearPassword":"Clear authentication info","tokenNameRequired":"Please enter token name","permissionsRequired":"Please select permissions","validPeriodRequired":"Valid period must be greater than 0","timeUnitSeconds":"seconds","timeUnitMinutes":"minutes","timeUnitHours":"hours","timeUnitDays":"days","timeUnitMonths":"months","timeUnitYears":"years","sessionSecurityPolicy":"Session Security Policy","secureMode":"Secure Mode","secureModeTooltip":"When enabled, cookies are only transmitted over HTTPS. Make sure your site has HTTPS enabled","userSessionMaxAge":"User Session Max Age","adminSessionMaxAge":"Admin Session Max Age","sessionMaxAgeUnit":"days","sessionMaxAgeInvalid":"Session max age must be an integer from 1 to 3650"},"sysPage":{"settingsSaved":"Settings saved","refreshAnnouncement":"Reset announcement read status","otherSettings":"Other Settings","channelSelectPlaceholder":"Please select upload channel first"},"sysOthers":{"remoteTelemetry":"Remote Telemetry","remoteTelemetryTooltip":"Helps with issue tracking and debugging, recommended to enable","enable":"Enable","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"When set, backend operations like blocking and deleting won\'t be affected by CDN cache
Recommended, see documentation for setup","zoneId":"Zone ID","accountEmail":"Account Email","randomImageApi":"Random Image API","randomImageApiTooltip":"See documentation for API usage details","directory":"Directory","directoryTooltip":"1. Directories with random image access, defaults to root. Separate multiple directories with commas
2. All directories use absolute paths, e.g. /img/cover, meaning files in this directory and all subdirectories can be accessed by the random image API","publicBrowse":"Public Gallery","publicBrowseTooltip":"When enabled, visitors can browse images in specified directories via /browse path (read-only, no delete/move)","openDirectory":"Open Directory","openDirectoryTooltip":"

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

Access URL: https://your.domain/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save"},"theme":{"lightMode":"Light Mode","darkMode":"Dark Mode","autoMode":"Auto Mode"},"common":{"confirm":"OK","cancel":"Cancel","close":"Close","save":"Save","delete":"Delete","edit":"Edit","copy":"Copy","download":"Download","retry":"Retry","loading":"Loading...","success":"Success","failed":"Failed","warning":"Warning","info":"Notice","yes":"Yes","no":"No","all":"All Types","select":"Select"},"validation":{"pathMustStartWithSlash":"Path must start with \\"/\\"","pathTraversalNotAllowed":"Path cannot contain \\"..\\"","singleDotNotAllowed":"Path cannot contain standalone \\".\\"","consecutiveSlashNotAllowed":"Path cannot contain consecutive slashes","invalidCharacters":"Path contains invalid characters, please use a valid path format","uploadDirReplace":"Upload directory"},"language":{"switchTo":"中/En","switchLanguage":"Switch Language"},"whitelist":{"title":"Whitelist Mode Enabled","description":"Sorry, the whitelist mode is currently enabled. Uploaded images need to be approved before they can be displayed. Please wait for approval.","goHome":"Go Home","goBack":"Go Back","helpText":"You can try:","uploadImage":"Upload Image","refreshPage":"Refresh Page"}}');const i="app-locale";function r(){const e=localStorage.getItem(i);return"zh-CN"===e||"en"===e?e:"zh-CN"}const s=(0,o.hU)({legacy:!0,locale:r(),fallbackLocale:"zh-CN",messages:{"zh-CN":n,en:l}});function d(e){s.global.locale=e,localStorage.setItem(i,e),document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}var c=s},81525:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),l=t(18642),i=(t(15412),t(30372),t(98950)),r=t(30292),s=t(47984),d=t(79262),c=t(70193),u=t(55363),m=t(31050),p=t(22909),h=t(10220),g=t(74036),f=t(90389),y=t(81828),b=t(27483),C=t(66806),k=t(61536),T=t(3263),w=t(57038),v=t(63416),S=t(63027),P=t(19223),F=t(93422),A=t(16249),D=t(34335),L=t(14722),U=t(16829),N=t(53916),M=t(48749),I=t(2511),R=t(12375),x=t(97619),B=t(84310),E=t(14552),O=t(79919),W=t(10767),q=t(20491),V=t(18422),j=t(17214),H=t(44845),z=t(55319),K=t(71669),Q=t(38557),J=t(15925),G=t(10798),_=t(39329),Y=t(59708),X=t(41165),$=t(50230),Z=t(99288),ee=t(67992),ae=t(37538),te=t(13118),oe=t(36050),ne=t(69721),le=t(75192),ie=t(50672),re=t(3149),se=t(11221),de=t(73585),ce=t(63236),ue=t(1860),me=t(13110),pe=t(6246),he=t(42302),ge=t(75504),fe=t(40587),ye=t(5299),be=t(81775),Ce=t(13127),ke=t(18742),Te=t(97579),we=t(56746),ve=t(58422),Se=t(20444),Pe=t(88502),Fe=t(21872),Ae=t(64795),De=t(82262),Le=t(88921),Ue=t(39916),Ne=t(18579),Me=t(80500),Ie=t(58428),Re=t(87849),xe=t(78034),Be=t(59413),Ee=t(58869),Oe=t(79102),We=t(78337),qe=t(38870),Ve=t(70577),je=t(93212),He=t(40275),ze=t(52995),Ke=t(38410),Qe=t(167),Je=t(53223),Ge=t(97447),_e=t(67830),Ye=[u.rC,m.UH,p.B0,h.Ce,g.IN,s.xK,f.Df,y.ck,b.LB,C.e4,k.ok,T.$F,w.gK,v.e6,S.rQ,P.Jt,F.Wz,A.Xk,D.B2,L.a$,U.jB,d.ZD,N.wF,M.rO,I.jT,R.Xb,x.dB,B.Ub,E.q9,O.rM,W.jP,q.he,c._2,V.cb,j.MT,H.vH,z.v,K.bx,Q.tU,J.zp,G.A,_.pS,Y.A4,X.h8,$.o1,Z.UD,ee.mR,ae.ao,te.Uj,oe.gD,ne.Bw,le.CY,ie.In,re.v0,se.lS,de.jb,ce.yv,ue.Up,me.iW,pe.CQ,he.IT,ge.EZ,fe.xb,ye.PJ,be.X,Ce.ji,ke.is,Te.R9,we.QL,ve.wR,Se.oE,Pe.ye,Fe.UB,Ae.hS,De.Mj,Le.D6,Ue.QO,Ne.V2,Me.im,Ie.Gx,Re.H9,xe.Yp,Be.z1,Ee.Nf,Oe.oM,We.VN,qe.Ot,Ve.xi,je._2,He.DX,ze.l9,Ke.GR,Qe.ns,Je.Be,Ge.Jm,_e.Mc],Xe=t(97722),$e=(t(85331),t(10961),t(56768));function Ze(e,a,t,o,n,l){const i=(0,$e.g2)("router-view"),r=Xe.H6;return(0,$e.uX)(),(0,$e.Wv)(r,{locale:l.elementLocale},{default:(0,$e.k6)(()=>[(0,$e.bF)(i)]),_:1},8,["locale"])}var ea=t(60782),aa=t(6166),ta=t(55186),oa=t(54791),na={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,ea.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?ta.A:oa.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{initOverlayScrollbars(){try{if(aa.ae.valid(document.body))return void(this.osInstance=(0,aa.ae)(document.body));this.osInstance=(0,aa.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const a=document.querySelector(".el-image-viewer__wrapper");a?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},la=t(71241);const ia=(0,la.A)(na,[["render",Ze]]);var ra=ia,sa=t(16915),da=t(25507),ca=t(46638),ua=t(57477);t(21862),t(50635);i.Yv.add(...Ye);const ma=(0,o.Ef)(ra),pa=(0,n.Zf)();ma.component("font-awesome-icon",r.gc);for(const[ba,Ca]of Object.entries(ua))ma.component(ba,Ca);const ha=()=>{const e=document.documentElement;let a;if(da.A.state.cusDarkMode&&null!==da.A.state.useDarkMode)a=da.A.state.useDarkMode;else{if(a=window.matchMedia("(prefers-color-scheme: dark)").matches,!a){const e=new Date,t=e.getHours();a=t>=22||t<6}da.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},ga=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},fa=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},ya=(e,a)=>{const t=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');t.forEach(e=>e.remove());const o=document.createElement("link"),n=document.createElement("link"),l=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",l.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",l.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",l.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(l)};da.A.dispatch("fetchUserConfig").then(()=>{ha(),fa(da.A.getters.userConfig),ya(da.A.state.useDarkMode,da.A.getters.userConfig),da.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&da.A.state.cusDarkMode&&(ga(a.useDarkMode),ya(a.useDarkMode,da.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(ha(),ya(da.A.state.useDarkMode,da.A.getters.userConfig))}),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).use(pa).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var l=a[o]={exports:{}};return e[o].call(l.exports,l,l.exports,t),l.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,l){if(!o){var i=1/0;for(c=0;c=l)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,l0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[o,n,l]}}(),function(){t.n=function(e){var a=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(a,{a:a}),a}}(),function(){t.d=function(e,a){for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce(function(a,o){return t.f[o](e,a),a},[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{21:"e06c66b8",22:"f752503c",227:"44709224",278:"66af4a0a",283:"5d4f325d",331:"0b44b778",412:"2eefa4a8",449:"865896d4",679:"23bb4457",870:"9e7db652",888:"f7235188",957:"e8a16dfc",967:"4c8a2786"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{227:"e7484000",278:"e44cbf52",322:"2b40f004",331:"dd13d5f5",385:"20c34d33",412:"ba63fb59",449:"0a847317",451:"7e03bef9",679:"e7484000",870:"16cbea0a",888:"793f4b66",957:"db5680df",967:"3f3c6dac"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)}}(),function(){var e={},a="sanyue_imghub:";t.l=function(o,n,l,i){if(e[o])e[o].push(n);else{var r,s;if(void 0!==l)for(var d=document.getElementsByTagName("script"),c=0;c{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.adminRequired)return l.A.commit("setAdminLoggedIn",!0),t();if(o.valid&&"admin"===o.authType)return l.A.commit("setAdminLoggedIn",!0),t();const i=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()})},d=(e,a,t)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return l.A.commit("setUserLoggedIn",!0),t();if(o.valid)return l.A.commit("setUserLoggedIn",!0),t();const i=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()})},c=[{path:"/",name:"home",component:()=>Promise.all([t.e(385),t.e(451),t.e(148)]).then(t.bind(t,50148)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(21),t.e(283),t.e(679)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(451),t.e(903)]).then(t.bind(t,47515)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(322),t.e(449)]).then(t.bind(t,75449)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(322),t.e(888)]).then(t.bind(t,29888)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(21),t.e(283),t.e(227)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>t.e(331).then(t.bind(t,16331))},{path:"/whiteliston",name:"whiteliston",component:()=>t.e(278).then(t.bind(t,18278))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(412).then(t.bind(t,4412))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>t.e(967).then(t.bind(t,84967))}],u=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=u},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),l=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!1,userLoggedIn:!1,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,adminLoggedIn:e=>e.adminLoggedIn,userLoggedIn:e=>e.userLoggedIn,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,a){e.userConfig=a},setBingWallPapers(e,a){e.bingWallPapers=a},setAdminLoggedIn(e,a){e.adminLoggedIn=a},setUserLoggedIn(e,a){e.userLoggedIn=a},setUploadMethod(e,a){e.uploadMethod=a},setUploadCopyUrlForm(e,a){e.uploadCopyUrlForm=a},setCompressConfig(e,{key:a,value:t}){e.compressConfig[a]=t},setStoreUploadChannel(e,a){e.storeUploadChannel=a},setStoreChannelName(e,a){e.storeChannelName=a},setStoreUploadNameType(e,a){e.storeUploadNameType=a},setCustomUrlSettings(e,{key:a,value:t}){e.customUrlSettings[a]=t},setStoreAutoRetry(e,a){e.storeAutoRetry=a},setAdminUrlSettings(e,{key:a,value:t}){e.adminUrlSettings[a]=t},setUseDarkMode(e,a){e.useDarkMode=a},setCusDarkMode(e,a){e.cusDarkMode=a},setStoreUploadFolder(e,a){e.uploadFolder=a,localStorage.setItem("uploadFolder",a)},setStoreAutoReUpload(e,a){e.autoReUpload=a}},actions:{async fetchUserConfig({commit:e}){try{const a=await n.A.get("/api/userConfig");e("setUserConfig",a.data)}catch(a){console.log(a)}},async fetchBingWallPapers({commit:e}){try{const a=await n.A.get("/api/bing/wallpaper"),t=a.data.data,o=t.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(o.map(e=>new Promise((a,t)=>{const o=new Image;o.onload=a,o.onerror=t,o.src=e.url}))),e("setBingWallPapers",o)}catch(a){console.log(a)}}},modules:{},plugins:[(0,l.A)({paths:["userConfig","uploadMethod","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode"]})]})},46638:function(e,a,t){t.d(a,{Ay:function(){return c},xS:function(){return d}});var o=t(85384),n=JSON.parse('{"login":{"title":"登录到 {owner} 图床","adminTitle":"管理端登录","password":"密码","username":"用户名","passwordPlaceholder":"请输入认证码","usernamePlaceholder":"请输入用户名","adminPasswordPlaceholder":"请输入密码","submit":"登录","success":"登录成功","failed":"登录失败,请检查密码是否正确","adminFailed":"用户名或密码错误","serverError":"服务器错误","systemError":"系统错误","authRequired":"请先认证!","authFailed":"认证失败!"},"upload":{"folderPlaceholder":"上传目录","pasteUpload":"粘贴上传","fileUpload":"文件上传","dragUploadText":"拖拽 点击Ctrl + V 粘贴上传","pasteUrlPlaceholder":"粘贴外链上传,多个外链用换行分隔","pasteUploadBtn":"上 传","pasteSave":"转存","pasteExternal":"外链","history":"上传记录","announcement":"查看公告","noAnnouncement":"暂无公告","announcementTitle":"公告","announcementAck":"我已知晓!","settings":"上传设置","linkFormat":"链接格式","manage":"系统管理","logout":"退出登录","logoutSuccess":"已退出登录","viewDocs":"查看文档","switchUploadMethod":"切换上传方式","copyAll":"整体复制","retryFailed":"失败重试","clearList":"清空列表","clearAll":"清空全部","clearUploaded":"清空已上传"},"uploadForm":{"deleted":"{name}已删除","uploadSuccess":"{name}上传成功","uploadFailed":"{name}上传失败","compressFailedCannotUpload":"{name}压缩失败,无法上传!","fileTooLarge":"{name}文件过大,无法上传!","compressedFileTooLarge":"{name}压缩后文件过大,无法上传!","copySuccess":"复制成功","copyFailed":"复制失败","copyAllSuccess":"整体复制成功","fileNotUploaded":"文件未上传成功,无法复制链接","fileListCleared":"文件列表已清空","fileListEmpty":"文件列表为空","successFilesCleared":"成功上传文件已清空","successFilesEmpty":"成功上传文件为空","noFailedFiles":"无上传失败文件","autoRetryOn":"自动重试已开启","autoRetryOff":"自动重试已关闭","autoRetry":"自动重试","maxRetryReached":"{name} 已达到最大重试次数({max}),停止重试","urlRequestFailed":"粘贴板中的URL地址请求失败","chunkMerging":"分块上传完成,正在合并文件,请耐心等待...","fileSizeTooLarge":"文件过大","chunkInitFailed":"初始化分块上传失败","uploadError":"上传过程中发生错误","imageLoadFailed":"图片加载失败"},"uploadSettings":{"title":"上传设置","uploadChannel":"上传渠道","channelType":"渠道类型","channelName":"渠道名称","channelNameTooltip":"选择具体的渠道名称,不选择则使用负载均衡或默认渠道","autoSelect":"自动选择","uploadDirectory":"上传目录","uploadDirectoryPlaceholder":"请输入上传目录路径","autoSwitch":"自动切换","autoSwitchTooltip":"对于非分块上传文件,上传失败自动切换到其他渠道上传","fileNaming":"文件命名方式","namingDefault":"默认","namingIndex":"仅前缀","namingOrigin":"仅原名","namingShort":"短链接","filePreprocess":"文件预处理","filePreprocessTooltip":"上传前在本地进行格式转换和压缩,仅对图片文件生效","convertToWebp":"转换为WebP","convertToWebpTooltip":"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传","fileCompress":"文件压缩","compressThreshold":"压缩阈值","compressThresholdTooltip":"设置图片大小阈值,超过此值将自动压缩,单位MB","expectedSize":"期望大小","expectedSizeTooltip":"设置压缩后图片大小期望值,单位MB","serverCompress":"服务端压缩","serverCompressTooltip":"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题","enableCompress":"开启压缩","confirm":"确定"},"uploadHistory":{"title":"历史记录","totalRecords":"共 {count} 条","switchView":"切换视图","clearRecords":"清空记录","loading":"加载中...","pullToLoadMore":"下拉加载更多","noMoreRecords":"没有更多记录了","emptyHistory":"暂无上传记录","linkCopied":"链接已复制","copyFailed":"复制失败","clearConfirmTitle":"提示","clearConfirmMessage":"确定要清空所有上传记录吗?","clearConfirmOk":"确定","clearConfirmCancel":"取消","recordsCleared":"记录已清空","deleteConfirmMessage":"确定要删除这条记录吗?","recordDeleted":"记录已删除"},"settings":{"linkFormatTitle":"链接格式设置","defaultCopyLink":"默认复制链接","rawLink":"原始链接","customLink":"自定义链接","customLinkTooltip":"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入","enableCustom":"启用自定义","customPrefix":"自定义前缀","customPrefixPlaceholder":"请输入自定义链接前缀","confirm":"确定","s3Link":"S3链接"},"dashboard":{"searchPlaceholder":"搜索:#标签 -#排除标签","sortByDateDesc":"按时间倒序","sortByNameAsc":"按名称升序","selectedItems":"项已选","clearSelection":"清除选择","copy":"复制","delete":"删除","download":"下载","move":"移动","tagManagement":"标签管理","addToBlacklist":"加入黑名单","addToWhitelist":"加入白名单","linkFormat":"链接格式","listView":"列表视图","cardView":"卡片视图","logout":"退出登录","rootDirectory":"根目录","totalFiles":"共 {count} 个文件","noMatchingFiles":"未找到匹配的文件或文件夹","currentDirEmpty":"当前目录为空","adjustSearchHint":"尝试调整搜索条件或筛选器","uploadHint":"上传文件后将显示在这里","loadMore":"加载更多","totalPages":"共 {count} 页","jumpTo":"跳至","preview":"预览","fileName":"文件名","tags":"标签","channelType":"渠道类型","channelNameCol":"渠道名称","uploadAddress":"上传地址","fileSize":"大小","uploadTime":"上传时间","actions":"操作","externalTag":"外链","unknownTag":"未知","detail":"详情","copyLink":"复制链接","moveFile":"移动","downloadFile":"下载","loadFailed":"加载失败","copySuccess":"复制成功","copyFailed":"复制失败","deleteConfirm":"此操作将永久删除该文件, 是否继续?","deleteConfirmTitle":"提示","deleteConfirmOk":"确定","deleteConfirmCancel":"取消","deleteSuccess":"删除成功","deleteFailed":"删除失败","blockConfirm":"此操作将把该文件加入黑名单, 是否继续?","blockSuccess":"加入黑名单成功","blockFailed":"加入黑名单失败","whiteConfirm":"此操作将把该文件加入白名单, 是否继续?","whiteSuccess":"加入白名单成功","whiteFailed":"加入白名单失败","deleteFolderConfirm":"此操作将永久删除文件夹, 是否继续?","deleteFileConfirm":"此操作将永久删除该文件, 是否继续?","batchDeleteConfirm":"此操作将永久删除选中的文件及文件夹, 是否继续?","batchDeleteSuccess":"批量删除成功","batchDeleteFailed":"批量删除失败","batchBlockConfirm":"此操作将把选中的文件加入黑名单, 是否继续?","batchBlockSuccess":"批量加入黑名单成功","batchBlockFailed":"批量加入黑名单失败","batchWhiteConfirm":"此操作将把选中的文件加入白名单, 是否继续?","batchWhiteSuccess":"批量加入白名单成功","batchWhiteFailed":"批量加入白名单失败","noLinksAvailable":"没有可复制的链接","batchCopySuccess":"批量复制 {count} 个链接成功","batchCopyFailed":"批量复制链接失败,请重试","batchCopyLinksSuccess":"批量复制链接成功","copyFileLinkSuccess":"复制文件链接成功","fileListMemoryCacheWarning":"文件列表较大,已切换为内存缓存;刷新页面后需要重新加载列表。","indexingWarning":"索引构建中,当前搜索和排序结果可能不准确,请稍后再试。","loadMoreFailed":"加载更多文件失败,请检查网络连接","moveSuccess":"移动成功","moveFailed":"移动失败","moveTargetSameAsCurrent":"目标文件夹不能是当前文件夹","invalidPageNumber":"请输入有效的页码","pageExceedsMax":"页码不能超过 {max}","loadingData":"正在加载数据,请稍候...","loadDataFailed":"加载数据失败,请检查网络连接","fetchFileListFailed":"获取文件列表失败","refreshFailed":"刷新失败,请重试","selectFilesFirst":"请先选择文件","syncDataError":"同步数据时出错,请检查网络连接","fetchingFileList":"正在获取文件列表...","folderEmptyNoLinks":"文件夹为空,没有可复制的链接","copiedFileLinks":"已复制 {count} 个文件链接","copyFolderLinksFailed":"复制文件夹链接失败,请重试"},"dashboardTabs":{"fileManagement":"文件管理","userManagement":"用户管理","systemSettings":"系统设置","fileUpload":"文件上传"},"fileDetail":{"title":"文件详情","download":"下载","tags":"标签","blacklist":"黑名单","whitelist":"白名单","deleteBtn":"删除","edit":"编辑","rename":"重命名","save":"保存","cancel":"取消","originUrl":"原始链接","fileNameLabel":"文件名","fileNamePlaceholder":"请输入文件名","fileType":"文件类型","fileTypePlaceholder":"如 image/jpeg","fileSizeLabel":"文件大小","imageDimensions":"图片尺寸","noDimensions":"无","uploadTimeLabel":"上传时间","channelTypeAndName":"渠道类型/名称","accessStatusAndReview":"访问状态/审查","uploadIP":"上传IP","uploadAddressLabel":"上传地址","fileTags":"文件标签","noTags":"暂无标签","unknown":"未知","accessNormal":"正常","accessNormalWhitelist":"正常(白名单)","accessBlockedBlacklist":"已屏蔽(黑名单)","accessBlockedReview":"已屏蔽(审查不通过)","orientationLandscape":"横","orientationPortrait":"竖","orientationSquare":"方","linkCopied":"链接已复制","metadataSaved":"元数据保存成功","metadataSaveFailed":"保存元数据失败","renameTitle":"重命名 File ID","renameLabel":"新 File ID","renamePlaceholder":"请输入新的 File ID","renameCancel":"取消","renameConfirm":"确认重命名","renameSuccess":"文件重命名成功","renameConflict":"目标文件名已存在","renameFailed":"重命名失败"},"filter":{"accessStatus":"访问状态","normal":"正常","blocked":"已屏蔽","blackWhiteList":"黑白名单","whiteList":"白名单","blackList":"黑名单","notSet":"未设置","reviewResult":"审查结果","teenContent":"12+内容","adultContent":"成人内容","fileType":"文件类型","image":"图片","video":"视频","audio":"音频","other":"其他","channelType":"渠道类型","externalLink":"外链","channelName":"渠道名称","clearFilters":"清除筛选"},"moveFile":{"title":"移动文件","batchTitle":"批量移动文件","targetDirectory":"目标目录","targetPlaceholder":"请输入目标目录路径","hint":"提示:路径以 / 开头表示根目录,如 /photos/2024/","hintMobile":"提示:路径以 / 开头表示根目录","selectDirectory":"选择目录","cancel":"取消","confirm":"确定","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadTreeFailed":"加载目录树失败,请检查网络连接"},"batchTag":{"title":"批量标签管理","addTab":"添加","removeTab":"移除","clearTab":"清空","addDescription":"为选中的 {count} 个文件添加标签","inputPlaceholder":"输入标签名称","pendingTags":"待添加的标签","noPendingTags":"暂无待添加标签","addToAllFiles":"添加到所有文件","removeDescription":"移除选中文件的共有标签","commonTags":"共有标签","noCommonTags":"选中的文件没有共有标签","clearDescription":"清空选中的 {count} 个文件的所有标签","clearWarningTitle":"⚠️警告","clearWarningDesc":"此操作将清空所有选中文件的标签,且不可恢复","confirmClearAll":"确认清空所有标签","tagAlreadyInList":"标签已在列表中","pleaseAddTags":"请先添加要批量添加的标签","addSuccess":"成功为 {count} 个文件添加标签","addFailed":"批量添加标签失败","removeSuccess":"成功从 {count} 个文件中移除标签","removeFailed":"移除标签失败","clearConfirmMessage":"确定要清空选中的 {count} 个文件的所有标签吗?此操作不可恢复。","clearConfirmTitle":"确认清空","clearConfirmOk":"确定","clearConfirmCancel":"取消","clearCancelled":"已取消清空操作","clearSuccess":"成功清空 {count} 个文件的标签","clearFailed":"清空标签失败","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败"},"mobileAction":{"viewDetail":"查看详情","copyLink":"复制链接","downloadFile":"下载文件","moveFile":"移动文件","tagManagement":"标签管理","moveFolder":"移动文件夹","deleteFile":"删除文件","deleteFolder":"删除文件夹"},"mobileDirectory":{"title":"目录导航","rootDirectory":"根目录","goBack":"返回上一级"},"sysConfig":{"logout":"退出登录"},"sysConfigTabs":{"systemStatus":"系统状态","uploadSettings":"上传设置","securitySettings":"安全设置","pageSettings":"网页设置","otherSettings":"其他设置"},"dateRangeCalendar":{"previousMonth":"上个月","nextMonth":"下个月","startDate":"起始日期","endDate":"结束日期","rangeSeparator":"至","monthTitle":"{year}-{month}","weekdaySun":"日","weekdayMon":"一","weekdayTue":"二","weekdayWed":"三","weekdayThu":"四","weekdayFri":"五","weekdaySat":"六"},"sysStatus":{"totalFiles":"文件总数","clickToRefresh":"点击刷新","indexUpdateTime":"索引更新时间","systemVersion":"系统版本","clickToViewChangelog":"点击查看更新日志","channelDistribution":"上传渠道分布","fileStatusDistribution":"文件状态分布","uploadTrend":"上传趋势","uploadTrendGroupBy":"上传趋势分组方式","totalUploads":"上传总数","byChannelType":"渠道类型","byChannelName":"渠道名称","selectDateRange":"选择日期范围","otherChannels":"其他","uploadsUnit":"次","noData":"暂无数据","totalFilesLabel":"文件总数","statusTypes":"状态类型","systemMaintenance":"系统维护","rebuildIndex":"重建索引","rebuilding":"重建中...","rebuildTooltip":"重新扫描所有文件并更新索引数据,适用于数据不一致时的修复","backupData":"备份数据","backingUp":"备份中...","backupTooltip":"备份所有文件元数据和系统设置到JSON文件","restoreData":"恢复数据","restoring":"恢复中...","restoreTooltip":"从备份文件恢复数据,将覆盖现有的文件元数据和系统设置","cancelOperation":"取消操作","retry":"重试","close":"关闭","records":"条记录","aboutToComplete":"即将完成","seconds":"约 {count} 秒","minutes":"约 {count} 分钟","hoursMinutes":"约 {hours} 小时 {minutes} 分钟","phaseFetching":"正在获取数据","phaseSorting":"正在排序","phaseUploading":"正在上传","phaseFinalizing":"正在完成","phaseBuilding":"正在构建备份","phaseDownloading":"正在生成下载","phaseRestoringFiles":"正在恢复文件","phaseRestoringSettings":"正在恢复设置","phaseCompleted":"已完成","phaseRetrying":"正在重试","rebuildSuccess":"索引重建完成!共处理 {count} 个文件","backupSuccess":"备份完成!共备份 {count} 个文件","backupSuccessWithSettings":"备份完成!共备份 {fileCount} 个文件,{settingsCount} 个设置项","operationInProgress":"已有操作正在进行中","selectJsonFile":"请选择JSON格式的备份文件","restoreConfirmMessage":"恢复操作将覆盖现有的文件元数据和系统设置,此操作不可逆。确定要继续吗?","restoreConfirmTitle":"确认恢复","restoreConfirmOk":"确定恢复","restoreConfirmCancel":"取消","invalidBackupFile":"备份文件格式无效,请选择有效的 JSON 文件","restoreSuccess":"恢复完成!已恢复 {files} 个文件和 {settings} 个设置项,正在重建索引...","restoreFailed":"恢复数据失败","fetchIndexFailed":"获取索引信息失败","unknown":"未知","blocked":"已屏蔽","normalStatus":"正常","latestUpload":"最近上传","earliestUpload":"最早上传","daysAgo":"{count}天前","hoursAgo":"{count}小时前","minutesAgo":"{count}分钟前","justNow":"刚刚","cancellingRebuild":"正在取消索引重建..."},"sysUpload":{"title":"上传渠道管理","titleTooltip":"管理所有上传渠道的配置,点击卡片查看详情或编辑","filterPlaceholder":"筛选渠道类型","addChannel":"添加渠道","loadBalance":"负载均衡","unnamedChannel":"未命名渠道","envVariable":"环境变量","noChannels":"暂无 {type} 渠道","detail":"详情","editBtn":"编辑","deleteBtn":"删除","addDialogTitle":"添加新渠道","channelTypeLabel":"渠道类型","channelTypePlaceholder":"请选择渠道类型","channelNameLabel":"渠道名称","channelNamePlaceholder":"请输入渠道名称","channelNameImmutableTip":"添加后将作为文件关联渠道的唯一标识,不支持修改","channelNameEditDisabledTip":"渠道名称用于关联已上传文件,不支持修改","botTokenLabel":"Bot Token","botTokenPlaceholder":"请输入 Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"请输入 Chat ID","proxyDomain":"代理域名","proxyDomainPlaceholder":"可选,例如: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"例如: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN 域名","cdnDomainPlaceholder":"可选,请填写完整 CDN 访问地址前缀,例如:https://cdn.example.com","cdnDomainTip":"可选配置。可用于生成和展示文件访问链接,服务端读取文件内容时也会优先尝试通过 CDN 读取。","bucketName":"存储桶名称","bucketNamePlaceholder":"请输入存储桶名称","bucketRegion":"存储桶区域","bucketRegionPlaceholder":"默认填写 auto","accessKeyId":"访问密钥 ID","accessKeyIdPlaceholder":"请输入访问密钥 ID","secretAccessKey":"机密访问密钥","secretAccessKeyPlaceholder":"请输入机密访问密钥","pathStyle":"路径风格","pathStyleTip":"使用 OpenList 等不兼容主机风格服务时需开启","quotaLimit":"容量限制","quotaLimitGB":"容量上限 (GB)","quotaThreshold":"停用阈值 (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"请输入 Channel ID","nitroMember":"Nitro 会员","nitroTip":"会员单文件限制 25MB,否则为 10MB","discordWarning":"Discord 有接口频率限制,不建议将其用作大规模并发场景","repoName":"仓库名","repoNamePlaceholder":"格式: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"请输入 Access Token","privateRepo":"私有仓库","privateRepoTip":"私有仓库限制 100GB","webdavBaseUrl":"WebDAV 基础地址","webdavBaseUrlPlaceholder":"例如: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"用户名","webdavUsernamePlaceholder":"可选用户名","webdavPassword":"密码","webdavPasswordPlaceholder":"可选密码","webdavPublicUrlPlaceholder":"可选,请填写完整公开访问地址前缀,例如:https://cdn.example.com/imgbed","webdavPublicUrlTip":"可选配置。服务端读取文件内容时会优先尝试通过该公开地址读取,失败后回退 WebDAV API。","webdavHeaders":"自定义请求头","webdavHeadersPlaceholder":"可选 JSON 对象,例如: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"自定义请求头必须是有效的 JSON 对象","webdavCreateDirectory":"自动创建目录","webdavCreateDirectoryTip":"上传文件前自动创建父级目录","cancel":"取消","confirmAdd":"确认添加","detailDialogTitle":"渠道详情 - {name}","channelNameDetail":"渠道名称","channelTypeDetail":"渠道类型","statusLabel":"状态","enabled":"已启用","disabled":"已禁用","configSource":"配置来源","publicUrl":"公开访问链接","notSet":"未设置","isPathStyle":"是","isNotPathStyle":"否","currentUsage":"当前用量","closeBtn":"关闭","editDialogTitle":"编辑渠道 - {name}","enableChannel":"启用渠道","saveChanges":"保存修改","r2ConfigNote":"请按照 配置 R2 渠道 文档说明添加 R2 渠道","reservedName":"该名称为系统保留名称,请使用其他名称","duplicateName":"该类型下已存在同名渠道,请使用其他名称","fixedChannelCannotDelete":"环境变量配置的渠道无法删除","deleteChannelConfirm":"确定要删除该渠道吗?删除后,仍关联该渠道的文件可能无法访问。","quotaInitConfirm":"首次启用容量限制需要统计现有文件容量,这可能需要一些时间。是否立即统计?","quotaInitTitle":"初始化容量统计","quotaInitConfirmBtn":"立即统计","quotaInitCancelBtn":"稍后手动统计","quotaInitLater":"您可以稍后点击刷新按钮手动统计","quotaCalculating":"正在统计容量,请稍候...","quotaCalculateSuccess":"容量统计完成","quotaCalculateFailed":"统计失败","quotaCalculateError":"统计失败: "},"sysSecurity":{"authManagement":"认证管理","userAuth":"用户端认证","adminAuth":"管理端认证","uploadPassword":"上传密码","confirmPassword":"确认密码","adminUsername":"用户名","adminPassword":"密码","apiTokenManagement":"API Token 管理","imageReview":"图像审查","imageReviewTooltip":"仅对非分块上传文件生效,支持 nsfwjs 和 moderatecontent.com 渠道","enableReview":"开启审查","reviewChannel":"审查渠道","reviewChannelPlaceholder":"请选择审查渠道","apiKey":"API Key","apiPath":"API 路径","ipQuery":"IP 归属地查询","ipQueryTooltip":"上传时按配置调用自定义 API 查询上传 IP 归属地,参数值支持 {\'{ip}\'} 占位符","enableIpQuery":"开启查询","ipQueryChannel":"查询渠道","ipQueryChannelPlaceholder":"请选择查询渠道","customApi":"自定义 API","queryParams":"查询参数","paramNamePlaceholder":"参数名","paramValuePlaceholder":"参数值,如 {\'{ip}\'}","addQueryParam":"添加参数","responseFields":"响应字段","responseFieldsTip":"最终显示内容会按照字段顺序拼接","responseFieldPathPlaceholder":"JSON 路径,如 country.name","addResponseField":"添加字段","uploadManagement":"上传管理","accessManagement":"访问管理","domainFilter":"域名过滤","allowedDomains":"放行域名","allowedDomainsTooltip":"1.针对访问域名设置权限
2.留空默认全部放行,多个域名请用英文逗号分隔","whiteListMode":"白名单模式","enableWhiteList":"是否开启","enableWhiteListTooltip":"1.针对文件设置权限
2.开启后,仅被加入白名单的文件可被访问","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

允许公开浏览的目录,多个目录用逗号分隔

示例:wallpaper,photos,album

支持子目录:2026/lucky,2026/rich

访问链接:https://你的域名/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"启用后,可以通过WebDAV协议访问和管理图片","webdavUsername":"用户名","webdavPassword":"密码","webdavUploadChannel":"上传渠道","webdavDefaultChannel":"默认渠道","webdavChannelName":"指定渠道名","settingsSaved":"设置已保存"},"customerConfig":{"uploadFileList":"上传文件列表","fileNameCol":"文件名","filePreview":"文件预览","uploadTimeCol":"上传时间","ipAddress":"IP地址","address":"地址","uploadCount":"上传次数","allowUpload":"允许上传","allow":"允许","deny":"禁止","loadMore":"加载更多","loadError":"加载更多数据时出错,请检查网络连接","syncError":"同步数据时出错,请检查网络连接"},"publicBrowse":{"searchPlaceholder":"搜索文件名 或 #页码","fileCount":"{count} 个文件","loading":"加载中...","retry":"重试","creditText":"该图库由林酱贡献代码","loadingMore":"加载中...","allLoaded":"已加载全部","creditLink":"林酱贡献","browseDisabled":"公开浏览功能未启用","directoryNotAllowed":"该目录不允许公开访问","accessDenied":"访问被拒绝","loadFailed":"加载失败,请重试","rootDirectory":"根目录","copyLink":"复制链接","copied":"已复制","downloadBtn":"下载","swipeHint":"← 滑动切换 →","rotate90":"旋转90°"},"transformMedia":{"download":"下载","playbackSpeed":"播放速度","normalSpeed":"正常","playMode":"播放模式","stopAfterPlay":"播完停止","sequentialPlay":"顺序播放","loopSingle":"单曲循环","more":"更多"},"directoryTree":{"selectDirectory":"选择目录","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadFailed":"加载目录树失败,请检查网络连接"},"floatingSave":{"saving":"保存中","save":"保存"},"theme":{"lightMode":"浅色模式","darkMode":"深色模式","autoMode":"自动模式"},"common":{"confirm":"确定","cancel":"取消","close":"关闭","save":"保存","delete":"删除","edit":"编辑","copy":"复制","download":"下载","retry":"重试","loading":"加载中...","success":"成功","failed":"失败","warning":"警告","info":"提示","yes":"是","no":"否","all":"全部类型","select":"请选择"},"validation":{"pathMustStartWithSlash":"目标目录必须以 \\"/\\" 开头","pathTraversalNotAllowed":"目标目录不能包含路径穿越字符 \\"..\\"","singleDotNotAllowed":"目标目录不能包含单独的 \\".\\" 路径段","consecutiveSlashNotAllowed":"目标目录不能包含连续的斜杠","invalidCharacters":"目标目录包含非法字符,请使用合法的路径格式","uploadDirReplace":"上传目录"},"language":{"switchTo":"中/En","switchLanguage":"切换语言"},"whitelist":{"title":"白名单模式已启用","description":"抱歉,当前已开启白名单模式,上传的图片需要审核通过后才能展示,请等待审核通过后再进行访问。","goHome":"返回首页","goBack":"返回上页","helpText":"您可以尝试:","uploadImage":"图片上传","refreshPage":"刷新页面"}}'),l=JSON.parse('{"login":{"title":"Login to {owner} ImgHub","adminTitle":"Admin Login","password":"Password","username":"Username","passwordPlaceholder":"Enter auth code","usernamePlaceholder":"Enter username","adminPasswordPlaceholder":"Enter password","submit":"Login","success":"Login successful","failed":"Login failed, please check your password","adminFailed":"Invalid username or password","serverError":"Server error","systemError":"System error","authRequired":"Please authenticate first!","authFailed":"Authentication failed!"},"upload":{"folderPlaceholder":"Upload directory","pasteUpload":"Paste Upload","fileUpload":"File Upload","dragUploadText":"Drag Click or Ctrl + V to paste upload","pasteUrlPlaceholder":"Paste external links, separate multiple links with line breaks","pasteUploadBtn":"Upload","pasteSave":"Save","pasteExternal":"External","history":"Upload History","announcement":"Announcements","noAnnouncement":"No announcements","announcementTitle":"Announcement","announcementAck":"Got it!","settings":"Upload Settings","linkFormat":"Link Format","manage":"Management","logout":"Logout","logoutSuccess":"Logged out","viewDocs":"Documentation","switchUploadMethod":"Switch Upload Method","copyAll":"Copy All","retryFailed":"Retry Failed","clearList":"Clear List","clearAll":"Clear All","clearUploaded":"Clear Uploaded"},"uploadForm":{"deleted":"{name} deleted","uploadSuccess":"{name} uploaded successfully","uploadFailed":"{name} upload failed","compressFailedCannotUpload":"{name} compression failed, cannot upload!","fileTooLarge":"{name} file too large, cannot upload!","compressedFileTooLarge":"{name} still too large after compression, cannot upload!","copySuccess":"Copied successfully","copyFailed":"Copy failed","copyAllSuccess":"All copied successfully","fileNotUploaded":"File not uploaded, cannot copy link","fileListCleared":"File list cleared","fileListEmpty":"File list is empty","successFilesCleared":"Uploaded files cleared","successFilesEmpty":"No uploaded files","noFailedFiles":"No failed files","autoRetryOn":"Auto retry enabled","autoRetryOff":"Auto retry disabled","autoRetry":"Auto Retry","maxRetryReached":"{name} reached max retry limit ({max}), stopping","urlRequestFailed":"URL request from clipboard failed","chunkMerging":"Chunk upload complete, merging file, please wait...","fileSizeTooLarge":"File too large","chunkInitFailed":"Failed to init chunked upload","uploadError":"Upload error occurred","imageLoadFailed":"Image load failed"},"uploadSettings":{"title":"Upload Settings","uploadChannel":"Upload Channel","channelType":"Channel Type","channelName":"Channel Name","channelNameTooltip":"Select a specific channel name. If not selected, load balancing or default channel will be used","autoSelect":"Auto Select","uploadDirectory":"Upload Directory","uploadDirectoryPlaceholder":"Enter upload directory path","autoSwitch":"Auto Switch","autoSwitchTooltip":"For non-chunked uploads, automatically switch to another channel on failure","fileNaming":"File Naming","namingDefault":"Default","namingIndex":"Prefix Only","namingOrigin":"Original Name","namingShort":"Short Link","filePreprocess":"File Preprocessing","filePreprocessTooltip":"Convert format and compress locally before upload, only applies to image files","convertToWebp":"Convert to WebP","convertToWebpTooltip":"Convert images to WebP format before upload to reduce file size. Falls back to original format on failure","fileCompress":"File Compression","compressThreshold":"Compression Threshold","compressThresholdTooltip":"Set image size threshold, files exceeding this will be auto-compressed (MB)","expectedSize":"Expected Size","expectedSizeTooltip":"Set expected image size after compression (MB)","serverCompress":"Server-side Compression","serverCompressTooltip":"1. Compress on Telegram side, only applies to image files uploaded via Telegram channel
2. If image size (after local compression) exceeds 10MB, this setting is ignored
3. For high-resolution, transparent background images, it\'s recommended to disable server compression to avoid issues","enableCompress":"Enable Compression","confirm":"OK"},"uploadHistory":{"title":"History","totalRecords":"{count} records","switchView":"Switch View","clearRecords":"Clear Records","loading":"Loading...","pullToLoadMore":"Pull to load more","noMoreRecords":"No more records","emptyHistory":"No upload history","linkCopied":"Link copied","copyFailed":"Copy failed","clearConfirmTitle":"Notice","clearConfirmMessage":"Are you sure you want to clear all upload records?","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","recordsCleared":"Records cleared","deleteConfirmMessage":"Are you sure you want to delete this record?","recordDeleted":"Record deleted"},"settings":{"linkFormatTitle":"Link Format Settings","defaultCopyLink":"Default Copy Format","rawLink":"Raw Link","customLink":"Custom Link","customLinkTooltip":"Default link is https://your.domain/file/xxx.jpg
If custom link format is enabled, only the xxx.jpg part is kept, please enter the rest manually","enableCustom":"Enable Custom","customPrefix":"Custom Prefix","customPrefixPlaceholder":"Enter custom link prefix","confirm":"OK","s3Link":"S3 Link"},"dashboard":{"searchPlaceholder":"Search: #tag -#exclude","sortByDateDesc":"Sort by date (newest)","sortByNameAsc":"Sort by name (A-Z)","selectedItems":"selected","clearSelection":"Clear selection","copy":"Copy","delete":"Delete","download":"Download","move":"Move","tagManagement":"Tag Management","addToBlacklist":"Add to Blacklist","addToWhitelist":"Add to Whitelist","linkFormat":"Link Format","listView":"List View","cardView":"Card View","logout":"Logout","rootDirectory":"Root","totalFiles":"{count} files","noMatchingFiles":"No matching files or folders found","currentDirEmpty":"Current directory is empty","adjustSearchHint":"Try adjusting search criteria or filters","uploadHint":"Uploaded files will appear here","loadMore":"Load More","totalPages":"{count} pages","jumpTo":"Go to","preview":"Preview","fileName":"File Name","tags":"Tags","channelType":"Channel Type","channelNameCol":"Channel Name","uploadAddress":"Upload Address","fileSize":"Size","uploadTime":"Upload Time","actions":"Actions","externalTag":"External","unknownTag":"Unknown","detail":"Detail","copyLink":"Copy Link","moveFile":"Move","downloadFile":"Download","loadFailed":"Load failed","copySuccess":"Copied successfully","copyFailed":"Copy failed","deleteConfirm":"This will permanently delete this file. Continue?","deleteConfirmTitle":"Notice","deleteConfirmOk":"OK","deleteConfirmCancel":"Cancel","deleteSuccess":"Deleted successfully","deleteFailed":"Delete failed","blockConfirm":"This will add the file to blacklist. Continue?","blockSuccess":"Added to blacklist successfully","blockFailed":"Failed to add to blacklist","whiteConfirm":"This will add the file to whitelist. Continue?","whiteSuccess":"Added to whitelist successfully","whiteFailed":"Failed to add to whitelist","deleteFolderConfirm":"This will permanently delete this folder. Continue?","deleteFileConfirm":"This will permanently delete this file. Continue?","batchDeleteConfirm":"This will permanently delete selected files and folders. Continue?","batchDeleteSuccess":"Batch delete successful","batchDeleteFailed":"Batch delete failed","batchBlockConfirm":"This will add selected files to blacklist. Continue?","batchBlockSuccess":"Batch blacklist successful","batchBlockFailed":"Batch blacklist failed","batchWhiteConfirm":"This will add selected files to whitelist. Continue?","batchWhiteSuccess":"Batch whitelist successful","batchWhiteFailed":"Batch whitelist failed","noLinksAvailable":"No links to copy","batchCopySuccess":"Copied {count} links successfully","batchCopyFailed":"Batch copy failed, please retry","batchCopyLinksSuccess":"Batch copy successful","copyFileLinkSuccess":"File link copied","fileListMemoryCacheWarning":"The file list is large, so it is being kept in memory. Refreshing the page will require loading it again.","indexingWarning":"The index is still building, so current search and sort results may be inaccurate. Please try again later.","loadMoreFailed":"Failed to load more files, please check network","moveSuccess":"Moved successfully","moveFailed":"Move failed","moveTargetSameAsCurrent":"Target folder cannot be the current folder","invalidPageNumber":"Please enter a valid page number","pageExceedsMax":"Page number cannot exceed {max}","loadingData":"Loading data, please wait...","loadDataFailed":"Failed to load data, please check network","fetchFileListFailed":"Failed to fetch file list","refreshFailed":"Refresh failed, please retry","selectFilesFirst":"Please select files first","syncDataError":"Error syncing data, please check network","fetchingFileList":"Fetching file list...","folderEmptyNoLinks":"Folder is empty, no links to copy","copiedFileLinks":"Copied {count} file links","copyFolderLinksFailed":"Failed to copy folder links, please retry"},"dashboardTabs":{"fileManagement":"File Management","userManagement":"User Management","systemSettings":"System Settings","fileUpload":"File Upload"},"fileDetail":{"title":"File Details","download":"Download","tags":"Tags","blacklist":"Blacklist","whitelist":"Whitelist","deleteBtn":"Delete","edit":"Edit","rename":"Rename","save":"Save","cancel":"Cancel","originUrl":"Original Link","fileNameLabel":"File Name","fileNamePlaceholder":"Enter file name","fileType":"File Type","fileTypePlaceholder":"e.g. image/jpeg","fileSizeLabel":"File Size","imageDimensions":"Dimensions","noDimensions":"N/A","uploadTimeLabel":"Upload Time","channelTypeAndName":"Channel Type/Name","accessStatusAndReview":"Access Status/Review","uploadIP":"Upload IP","uploadAddressLabel":"Upload Address","fileTags":"File Tags","noTags":"No tags","unknown":"Unknown","accessNormal":"Normal","accessNormalWhitelist":"Normal (Whitelisted)","accessBlockedBlacklist":"Blocked (Blacklisted)","accessBlockedReview":"Blocked (Review rejected)","orientationLandscape":"Landscape","orientationPortrait":"Portrait","orientationSquare":"Square","linkCopied":"Link copied","metadataSaved":"Metadata saved successfully","metadataSaveFailed":"Failed to save metadata","renameTitle":"Rename File ID","renameLabel":"New File ID","renamePlaceholder":"Enter new File ID","renameCancel":"Cancel","renameConfirm":"Confirm Rename","renameSuccess":"File renamed successfully","renameConflict":"Target file name already exists","renameFailed":"Rename failed"},"filter":{"accessStatus":"Access Status","normal":"Normal","blocked":"Blocked","blackWhiteList":"Black/White List","whiteList":"Whitelist","blackList":"Blacklist","notSet":"Not Set","reviewResult":"Review Result","teenContent":"12+ Content","adultContent":"Adult Content","fileType":"File Type","image":"Image","video":"Video","audio":"Audio","other":"Other","channelType":"Channel Type","externalLink":"External Link","channelName":"Channel Name","clearFilters":"Clear Filters"},"moveFile":{"title":"Move File","batchTitle":"Batch Move Files","targetDirectory":"Target Directory","targetPlaceholder":"Enter target directory path","hint":"Tip: Paths starting with / indicate root directory, e.g. /photos/2024/","hintMobile":"Tip: Paths starting with / indicate root directory","selectDirectory":"Select Directory","cancel":"Cancel","confirm":"OK","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadTreeFailed":"Failed to load directory tree, please check network connection"},"batchTag":{"title":"Batch Tag Management","addTab":"Add","removeTab":"Remove","clearTab":"Clear","addDescription":"Add tags to {count} selected files","inputPlaceholder":"Enter tag name","pendingTags":"Tags to add","noPendingTags":"No tags to add","addToAllFiles":"Add to all files","removeDescription":"Remove common tags from selected files","commonTags":"Common Tags","noCommonTags":"Selected files have no common tags","clearDescription":"Clear all tags from {count} selected files","clearWarningTitle":"⚠️Warning","clearWarningDesc":"This will clear all tags from selected files and cannot be undone","confirmClearAll":"Confirm clear all tags","tagAlreadyInList":"Tag already in list","pleaseAddTags":"Please add tags first","addSuccess":"Tags added to {count} files successfully","addFailed":"Batch tag addition failed","removeSuccess":"Tags removed from {count} files successfully","removeFailed":"Tag removal failed","clearConfirmMessage":"Are you sure you want to clear all tags from {count} selected files? This cannot be undone.","clearConfirmTitle":"Confirm Clear","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","clearCancelled":"Clear operation cancelled","clearSuccess":"Tags cleared from {count} files successfully","clearFailed":"Failed to clear tags","loadCommonTagsFailed":"Failed to load common tags"},"tagManagement":{"title":"Tag Management","inputPlaceholder":"Enter tag name","currentTags":"Current Tags","noTags":"No tags","popularTags":"Popular Tags","loading":"Loading...","noPopularTags":"No popular tags","close":"Close","tagExists":"Tag already exists","addSuccess":"Tag added successfully","addFailed":"Failed to add tag","removeSuccess":"Tag removed successfully","removeFailed":"Failed to remove tag","loadFailed":"Failed to load tags"},"mobileAction":{"viewDetail":"View Details","copyLink":"Copy Link","downloadFile":"Download File","moveFile":"Move File","tagManagement":"Tag Management","moveFolder":"Move Folder","deleteFile":"Delete File","deleteFolder":"Delete Folder"},"mobileDirectory":{"title":"Directory Navigation","rootDirectory":"Root","goBack":"Go Back"},"sysConfig":{"logout":"Logout"},"sysConfigTabs":{"systemStatus":"System Status","uploadSettings":"Upload Settings","securitySettings":"Security Settings","pageSettings":"Page Settings","otherSettings":"Other Settings"},"dateRangeCalendar":{"previousMonth":"Previous month","nextMonth":"Next month","startDate":"Start date","endDate":"End date","rangeSeparator":"to","monthTitle":"{year}-{month}","weekdaySun":"Sun","weekdayMon":"Mon","weekdayTue":"Tue","weekdayWed":"Wed","weekdayThu":"Thu","weekdayFri":"Fri","weekdaySat":"Sat"},"sysStatus":{"totalFiles":"Total Files","clickToRefresh":"Click to refresh","indexUpdateTime":"Index Update Time","systemVersion":"System Version","clickToViewChangelog":"Click to view changelog","channelDistribution":"Upload Channel Distribution","fileStatusDistribution":"File Status Distribution","uploadTrend":"Upload Trend","uploadTrendGroupBy":"Upload trend group by","totalUploads":"Total Uploads","byChannelType":"Channel Type","byChannelName":"Channel Name","selectDateRange":"Select date range","otherChannels":"Other","uploadsUnit":"uploads","noData":"No data","totalFilesLabel":"Total Files","statusTypes":"Status Types","systemMaintenance":"System Maintenance","rebuildIndex":"Rebuild Index","rebuilding":"Rebuilding...","rebuildTooltip":"Rescan all files and update index data, useful for fixing data inconsistencies","backupData":"Backup Data","backingUp":"Backing up...","backupTooltip":"Backup all file metadata and system settings to a JSON file","restoreData":"Restore Data","restoring":"Restoring...","restoreTooltip":"Restore data from a backup file, this will overwrite existing file metadata and system settings","cancelOperation":"Cancel Operation","retry":"Retry","close":"Close","records":"records","aboutToComplete":"Almost done","seconds":"~{count} seconds","minutes":"~{count} minutes","hoursMinutes":"~{hours} hours {minutes} minutes","phaseFetching":"Fetching data","phaseSorting":"Sorting","phaseUploading":"Uploading","phaseFinalizing":"Finalizing","phaseBuilding":"Building backup","phaseDownloading":"Generating download","phaseRestoringFiles":"Restoring files","phaseRestoringSettings":"Restoring settings","phaseCompleted":"Completed","phaseRetrying":"Retrying","rebuildSuccess":"Index rebuild complete! Processed {count} files","backupSuccess":"Backup complete! Backed up {count} files","backupSuccessWithSettings":"Backup complete! Backed up {fileCount} files and {settingsCount} settings","operationInProgress":"An operation is already in progress","selectJsonFile":"Please select a JSON backup file","restoreConfirmMessage":"Restoring will overwrite existing file metadata and system settings. This cannot be undone. Continue?","restoreConfirmTitle":"Confirm Restore","restoreConfirmOk":"Confirm Restore","restoreConfirmCancel":"Cancel","invalidBackupFile":"Invalid backup file format, please select a valid JSON file","restoreSuccess":"Restore complete! Restored {files} files and {settings} settings, rebuilding index...","restoreFailed":"Failed to restore data","fetchIndexFailed":"Failed to fetch index information","unknown":"Unknown","blocked":"Blocked","normalStatus":"Normal","latestUpload":"Latest Upload","earliestUpload":"Earliest Upload","daysAgo":"{count} days ago","hoursAgo":"{count} hours ago","minutesAgo":"{count} minutes ago","justNow":"Just now","cancellingRebuild":"Cancelling index rebuild..."},"sysUpload":{"title":"Upload Channel Management","titleTooltip":"Manage all upload channel configurations. Click a card to view details or edit","filterPlaceholder":"Filter channel type","addChannel":"Add Channel","loadBalance":"Load Balance","unnamedChannel":"Unnamed Channel","envVariable":"Environment Variable","noChannels":"No {type} channels","detail":"Detail","editBtn":"Edit","deleteBtn":"Delete","addDialogTitle":"Add New Channel","channelTypeLabel":"Channel Type","channelTypePlaceholder":"Select channel type","channelNameLabel":"Channel Name","channelNamePlaceholder":"Enter channel name","channelNameImmutableTip":"After creation, this becomes the unique identifier for files associated with the channel and cannot be changed","channelNameEditDisabledTip":"The channel name links uploaded files to this channel and cannot be changed","botTokenLabel":"Bot Token","botTokenPlaceholder":"Enter Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"Enter Chat ID","proxyDomain":"Proxy Domain","proxyDomainPlaceholder":"Optional, e.g.: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"e.g.: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN Domain","cdnDomainPlaceholder":"Optional. Enter the full CDN URL prefix, e.g. https://cdn.example.com","cdnDomainTip":"Optional. Can be used to generate and display file access links. Server-side file reads also try the CDN first.","bucketName":"Bucket Name","bucketNamePlaceholder":"Enter bucket name","bucketRegion":"Bucket Region","bucketRegionPlaceholder":"Default: auto","accessKeyId":"Access Key ID","accessKeyIdPlaceholder":"Enter Access Key ID","secretAccessKey":"Secret Access Key","secretAccessKeyPlaceholder":"Enter Secret Access Key","pathStyle":"Path Style","pathStyleTip":"Enable when using services incompatible with host-style like OpenList","quotaLimit":"Quota Limit","quotaLimitGB":"Quota Limit (GB)","quotaThreshold":"Disable Threshold (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"Enter Channel ID","nitroMember":"Nitro Member","nitroTip":"Nitro members: 25MB per file, otherwise 10MB","discordWarning":"Discord has API rate limits, not recommended for high-concurrency scenarios","repoName":"Repository Name","repoNamePlaceholder":"Format: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"Enter Access Token","privateRepo":"Private Repository","privateRepoTip":"Private repository limit: 100GB","webdavBaseUrl":"WebDAV Base URL","webdavBaseUrlPlaceholder":"e.g.: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"Username","webdavUsernamePlaceholder":"Optional username","webdavPassword":"Password","webdavPasswordPlaceholder":"Optional password","webdavPublicUrlPlaceholder":"Optional. Enter the full public URL prefix, e.g. https://cdn.example.com/imgbed","webdavPublicUrlTip":"Optional. Server-side file reads try this public URL first and fall back to the WebDAV API on failure.","webdavHeaders":"Custom Headers","webdavHeadersPlaceholder":"Optional JSON object, e.g.: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"Custom headers must be a valid JSON object","webdavCreateDirectory":"Auto Create Directories","webdavCreateDirectoryTip":"Create parent directories before uploading files","cancel":"Cancel","confirmAdd":"Confirm Add","detailDialogTitle":"Channel Details - {name}","channelNameDetail":"Channel Name","channelTypeDetail":"Channel Type","statusLabel":"Status","enabled":"Enabled","disabled":"Disabled","configSource":"Config Source","publicUrl":"Public Access URL","notSet":"Not Set","isPathStyle":"Yes","isNotPathStyle":"No","currentUsage":"Current Usage","closeBtn":"Close","editDialogTitle":"Edit Channel - {name}","enableChannel":"Enable Channel","saveChanges":"Save Changes","r2ConfigNote":"Please follow the R2 Channel Configuration documentation to add R2 channels","reservedName":"This name is reserved by the system, please use another name","duplicateName":"A channel with this name already exists, please use another name","fixedChannelCannotDelete":"Channels configured via environment variables cannot be deleted","deleteChannelConfirm":"Are you sure you want to delete this channel? Files still associated with it may become inaccessible.","quotaInitConfirm":"First time enabling quota requires calculating existing file sizes, this may take some time. Calculate now?","quotaInitTitle":"Initialize Quota Statistics","quotaInitConfirmBtn":"Calculate Now","quotaInitCancelBtn":"Calculate Later","quotaInitLater":"You can click the refresh button to calculate later","quotaCalculating":"Calculating quota, please wait...","quotaCalculateSuccess":"Quota calculation complete","quotaCalculateFailed":"Calculation failed","quotaCalculateError":"Calculation failed: "},"sysSecurity":{"authManagement":"Authentication Management","userAuth":"User Authentication","adminAuth":"Admin Authentication","uploadPassword":"Upload Password","confirmPassword":"Confirm Password","adminUsername":"Username","adminPassword":"Password","apiTokenManagement":"API Token Management","imageReview":"Image Review","imageReviewTooltip":"Only applies to non-chunked uploads, supports nsfwjs and moderatecontent.com channels","enableReview":"Enable Review","reviewChannel":"Review Channel","reviewChannelPlaceholder":"Select review channel","apiKey":"API Key","apiPath":"API Path","ipQuery":"IP Geolocation Query","ipQueryTooltip":"Calls a custom API during upload to query the upload IP location. Parameter values support the {\'{ip}\'} placeholder","enableIpQuery":"Enable Query","ipQueryChannel":"Query Channel","ipQueryChannelPlaceholder":"Select query channel","customApi":"Custom API","queryParams":"Query Parameters","paramNamePlaceholder":"Parameter name","paramValuePlaceholder":"Parameter value, e.g. {\'{ip}\'}","addQueryParam":"Add Parameter","responseFields":"Response Fields","responseFieldsTip":"The final display text is joined in field order","responseFieldPathPlaceholder":"JSON path, e.g. country.name","addResponseField":"Add Field","uploadManagement":"Upload Management","accessManagement":"Access Management","domainFilter":"Domain Filter","allowedDomains":"Allowed Domains","allowedDomainsTooltip":"1. Set permissions based on access domain
2. Leave empty to allow all, separate multiple domains with commas","whiteListMode":"Whitelist Mode","enableWhiteList":"Enable","enableWhiteListTooltip":"1. Set permissions based on files
2. When enabled, only whitelisted files can be accessed","settingsSaved":"Settings saved","tokenName":"Name","tokenValue":"Token","permissions":"Permissions","createdAt":"Created At","status":"Status","expiresAt":"Expires At","operation":"Actions","editBtn":"Edit","deleteBtn":"Delete","permUpload":"Upload","permDelete":"Delete","permList":"List","permManage":"Manage","createTokenTitle":"Create New API Token","tokenNameLabel":"Token Name","tokenNamePlaceholder":"Enter token name","permissionsLabel":"Permissions","neverExpire":"Never Expire","validPeriod":"Valid Period","autoDeleteOnExpire":"Auto-delete on expiry","createBtn":"Create","editTokenTitle":"Edit API Token","updateBtn":"Update","tokenCreatedTitle":"Token Created Successfully","tokenCreatedWarning":"Please save the following token. You won\'t be able to view the full token after closing this dialog!","fullToken":"Full Token","copyBtn":"Copy","savedBtn":"I\'ve Saved It","tokenCopied":"Token copied to clipboard","copyFailed":"Copy failed, please copy manually","tokenCreateSuccess":"Token created successfully","tokenCreateFailed":"Failed to create token","tokenUpdateSuccess":"Token updated successfully","tokenUpdateFailed":"Failed to update token","tokenDeleteConfirm":"This will permanently delete this token. Continue?","tokenDeleteConfirmTitle":"Notice","tokenDeleteConfirmOk":"OK","tokenDeleteConfirmCancel":"Cancel","tokenDeleteSuccess":"Token deleted successfully","tokenDeleteFailed":"Failed to delete token","tokenListFailed":"Failed to fetch token list","passwordUrlReserved":"Password cannot contain URL reserved characters: % & ? # /","confirmUploadPassword":"Please re-enter upload password","confirmAdminPassword":"Please re-enter admin password","passwordMismatch":"Passwords do not match","passwordUnchanged":"Unchanged (leave empty to keep current password)","adminPasswordChangedRelogin":"Admin password changed, redirecting to login page","clearPassword":"Clear authentication info","tokenNameRequired":"Please enter token name","permissionsRequired":"Please select permissions","validPeriodRequired":"Valid period must be greater than 0","timeUnitSeconds":"seconds","timeUnitMinutes":"minutes","timeUnitHours":"hours","timeUnitDays":"days","timeUnitMonths":"months","timeUnitYears":"years","sessionSecurityPolicy":"Session Security Policy","secureMode":"Secure Mode","secureModeTooltip":"When enabled, cookies are only transmitted over HTTPS. Make sure your site has HTTPS enabled","userSessionMaxAge":"User Session Max Age","adminSessionMaxAge":"Admin Session Max Age","sessionMaxAgeUnit":"days","sessionMaxAgeInvalid":"Session max age must be an integer from 1 to 3650"},"sysPage":{"settingsSaved":"Settings saved","refreshAnnouncement":"Reset announcement read status","otherSettings":"Other Settings","channelSelectPlaceholder":"Please select upload channel first"},"sysOthers":{"remoteTelemetry":"Remote Telemetry","remoteTelemetryTooltip":"Helps with issue tracking and debugging, recommended to enable","enable":"Enable","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"When set, backend operations like blocking and deleting won\'t be affected by CDN cache
Recommended, see documentation for setup","zoneId":"Zone ID","accountEmail":"Account Email","randomImageApi":"Random Image API","randomImageApiTooltip":"See documentation for API usage details","directory":"Directory","directoryTooltip":"1. Directories with random image access, defaults to root. Separate multiple directories with commas
2. All directories use absolute paths, e.g. /img/cover, meaning files in this directory and all subdirectories can be accessed by the random image API","publicBrowse":"Public Gallery","publicBrowseTooltip":"When enabled, visitors can browse images in specified directories via /browse path (read-only, no delete/move)","openDirectory":"Open Directory","openDirectoryTooltip":"

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

Access URL: https://your.domain/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save"},"theme":{"lightMode":"Light Mode","darkMode":"Dark Mode","autoMode":"Auto Mode"},"common":{"confirm":"OK","cancel":"Cancel","close":"Close","save":"Save","delete":"Delete","edit":"Edit","copy":"Copy","download":"Download","retry":"Retry","loading":"Loading...","success":"Success","failed":"Failed","warning":"Warning","info":"Notice","yes":"Yes","no":"No","all":"All Types","select":"Select"},"validation":{"pathMustStartWithSlash":"Path must start with \\"/\\"","pathTraversalNotAllowed":"Path cannot contain \\"..\\"","singleDotNotAllowed":"Path cannot contain standalone \\".\\"","consecutiveSlashNotAllowed":"Path cannot contain consecutive slashes","invalidCharacters":"Path contains invalid characters, please use a valid path format","uploadDirReplace":"Upload directory"},"language":{"switchTo":"中/En","switchLanguage":"Switch Language"},"whitelist":{"title":"Whitelist Mode Enabled","description":"Sorry, the whitelist mode is currently enabled. Uploaded images need to be approved before they can be displayed. Please wait for approval.","goHome":"Go Home","goBack":"Go Back","helpText":"You can try:","uploadImage":"Upload Image","refreshPage":"Refresh Page"}}');const i="app-locale";function r(){const e=localStorage.getItem(i);return"zh-CN"===e||"en"===e?e:"zh-CN"}const s=(0,o.hU)({legacy:!0,locale:r(),fallbackLocale:"zh-CN",messages:{"zh-CN":n,en:l}});function d(e){s.global.locale=e,localStorage.setItem(i,e),document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}var c=s},81525:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),l=t(18642),i=(t(15412),t(30372),t(98950)),r=t(30292),s=t(47984),d=t(79262),c=t(70193),u=t(55363),m=t(31050),p=t(22909),h=t(10220),g=t(74036),f=t(90389),y=t(81828),b=t(27483),C=t(66806),k=t(61536),T=t(3263),w=t(57038),v=t(63416),S=t(63027),P=t(19223),F=t(93422),A=t(16249),D=t(34335),L=t(14722),U=t(16829),N=t(53916),M=t(48749),I=t(2511),R=t(12375),x=t(97619),B=t(84310),E=t(14552),O=t(79919),W=t(10767),q=t(20491),V=t(18422),j=t(17214),H=t(44845),z=t(55319),K=t(71669),Q=t(38557),J=t(15925),G=t(10798),_=t(39329),Y=t(59708),X=t(41165),$=t(50230),Z=t(99288),ee=t(67992),ae=t(37538),te=t(13118),oe=t(36050),ne=t(69721),le=t(75192),ie=t(50672),re=t(3149),se=t(11221),de=t(73585),ce=t(63236),ue=t(1860),me=t(13110),pe=t(6246),he=t(42302),ge=t(75504),fe=t(40587),ye=t(5299),be=t(81775),Ce=t(13127),ke=t(18742),Te=t(97579),we=t(56746),ve=t(58422),Se=t(20444),Pe=t(88502),Fe=t(21872),Ae=t(64795),De=t(82262),Le=t(88921),Ue=t(39916),Ne=t(18579),Me=t(80500),Ie=t(58428),Re=t(87849),xe=t(78034),Be=t(59413),Ee=t(58869),Oe=t(79102),We=t(78337),qe=t(38870),Ve=t(70577),je=t(93212),He=t(40275),ze=t(52995),Ke=t(38410),Qe=t(167),Je=t(53223),Ge=t(97447),_e=t(67830),Ye=[u.rC,m.UH,p.B0,h.Ce,g.IN,s.xK,f.Df,y.ck,b.LB,C.e4,k.ok,T.$F,w.gK,v.e6,S.rQ,P.Jt,F.Wz,A.Xk,D.B2,L.a$,U.jB,d.ZD,N.wF,M.rO,I.jT,R.Xb,x.dB,B.Ub,E.q9,O.rM,W.jP,q.he,c._2,V.cb,j.MT,H.vH,z.v,K.bx,Q.tU,J.zp,G.A,_.pS,Y.A4,X.h8,$.o1,Z.UD,ee.mR,ae.ao,te.Uj,oe.gD,ne.Bw,le.CY,ie.In,re.v0,se.lS,de.jb,ce.yv,ue.Up,me.iW,pe.CQ,he.IT,ge.EZ,fe.xb,ye.PJ,be.X,Ce.ji,ke.is,Te.R9,we.QL,ve.wR,Se.oE,Pe.ye,Fe.UB,Ae.hS,De.Mj,Le.D6,Ue.QO,Ne.V2,Me.im,Ie.Gx,Re.H9,xe.Yp,Be.z1,Ee.Nf,Oe.oM,We.VN,qe.Ot,Ve.xi,je._2,He.DX,ze.l9,Ke.GR,Qe.ns,Je.Be,Ge.Jm,_e.Mc],Xe=t(97722),$e=(t(85331),t(10961),t(56768));function Ze(e,a,t,o,n,l){const i=(0,$e.g2)("router-view"),r=Xe.H6;return(0,$e.uX)(),(0,$e.Wv)(r,{locale:l.elementLocale},{default:(0,$e.k6)(()=>[(0,$e.bF)(i)]),_:1},8,["locale"])}var ea=t(60782),aa=t(6166),ta=t(55186),oa=t(54791),na={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,ea.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?ta.A:oa.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{initOverlayScrollbars(){try{if(aa.ae.valid(document.body))return void(this.osInstance=(0,aa.ae)(document.body));this.osInstance=(0,aa.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const a=document.querySelector(".el-image-viewer__wrapper");a?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},la=t(71241);const ia=(0,la.A)(na,[["render",Ze]]);var ra=ia,sa=t(16915),da=t(25507),ca=t(46638),ua=t(57477);t(21862),t(50635);i.Yv.add(...Ye);const ma=(0,o.Ef)(ra),pa=(0,n.Zf)();ma.component("font-awesome-icon",r.gc);for(const[ba,Ca]of Object.entries(ua))ma.component(ba,Ca);const ha=()=>{const e=document.documentElement;let a;if(da.A.state.cusDarkMode&&null!==da.A.state.useDarkMode)a=da.A.state.useDarkMode;else{if(a=window.matchMedia("(prefers-color-scheme: dark)").matches,!a){const e=new Date,t=e.getHours();a=t>=22||t<6}da.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},ga=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},fa=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},ya=(e,a)=>{const t=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');t.forEach(e=>e.remove());const o=document.createElement("link"),n=document.createElement("link"),l=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",l.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",l.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",l.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(l)};da.A.dispatch("fetchUserConfig").then(()=>{ha(),fa(da.A.getters.userConfig),ya(da.A.state.useDarkMode,da.A.getters.userConfig),da.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&da.A.state.cusDarkMode&&(ga(a.useDarkMode),ya(a.useDarkMode,da.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(ha(),ya(da.A.state.useDarkMode,da.A.getters.userConfig))}),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).use(pa).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var l=a[o]={exports:{}};return e[o].call(l.exports,l,l.exports,t),l.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,l){if(!o){var i=1/0;for(c=0;c=l)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,l0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[o,n,l]}}(),function(){t.n=function(e){var a=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(a,{a:a}),a}}(),function(){t.d=function(e,a){for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce(function(a,o){return t.f[o](e,a),a},[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{21:"f318bc2e",22:"f752503c",148:"b1b1da05",227:"44709224",278:"bb8355a5",283:"5d4f325d",331:"4f42d273",412:"2eefa4a8",449:"865896d4",679:"23bb4457",888:"f7235188",903:"808d69b5",967:"db104add"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{148:"ff5f4652",227:"e7484000",278:"e44cbf52",322:"2b40f004",331:"dd13d5f5",385:"20c34d33",412:"ba63fb59",449:"0a847317",451:"7e03bef9",679:"e7484000",888:"af58b0bb",903:"7a90c42f",967:"3f3c6dac"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)}}(),function(){var e={},a="sanyue_imghub:";t.l=function(o,n,l,i){if(e[o])e[o].push(n);else{var r,s;if(void 0!==l)for(var d=document.getElementsByTagName("script"),c=0;cB(AYsDdU`S>LI63O> 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 {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\r\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n adminLoggedIn: state => state.adminLoggedIn,\r\n userLoggedIn: state => state.userLoggedIn,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\r\n state.bingWallPapers = bingWallPapers;\r\n },\r\n setAdminLoggedIn(state, loggedIn) {\r\n state.adminLoggedIn = loggedIn;\r\n },\r\n setUserLoggedIn(state, loggedIn) {\r\n state.userLoggedIn = loggedIn;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\r\n try {\r\n const response = await axios.get('/api/userConfig');\r\n commit('setUserConfig', response.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState({\r\n // 只持久化非敏感数据,不持久化认证状态\r\n paths: [\r\n 'userConfig',\r\n 'uploadMethod',\r\n 'uploadCopyUrlForm',\r\n 'compressConfig',\r\n 'storeUploadChannel',\r\n 'storeChannelName',\r\n 'storeAutoRetry',\r\n 'storeUploadNameType',\r\n 'uploadFolder',\r\n 'customUrlSettings',\r\n 'adminUrlSettings',\r\n 'autoReUpload',\r\n 'useDarkMode',\r\n 'cusDarkMode',\r\n ]\r\n })]\r\n})\r\n","import { createI18n } from 'vue-i18n'\r\nimport zhCN from './zh-CN.json'\r\nimport en from './en.json'\r\n\r\nconst LOCALE_KEY = 'app-locale'\r\n\r\nfunction getStoredLocale() {\r\n const stored = localStorage.getItem(LOCALE_KEY)\r\n if (stored === 'zh-CN' || stored === 'en') return stored\r\n return 'zh-CN'\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale(),\r\n fallbackLocale: 'zh-CN',\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nexport function setLocale(locale) {\r\n i18n.global.locale = locale\r\n localStorage.setItem(LOCALE_KEY, locale)\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\r\n}\r\n\r\nexport { LOCALE_KEY, getStoredLocale }\r\nexport default i18n\r\n","import { faAws } from '@fortawesome/free-brands-svg-icons/faAws';\r\nimport { faCloudflare } from '@fortawesome/free-brands-svg-icons/faCloudflare';\r\nimport { faDiscord } from '@fortawesome/free-brands-svg-icons/faDiscord';\r\nimport { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoubleLeft';\r\nimport { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight';\r\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons/faArrowDown';\r\nimport { faArrowLeft } from '@fortawesome/free-solid-svg-icons/faArrowLeft';\r\nimport { faArrowUp } from '@fortawesome/free-solid-svg-icons/faArrowUp';\r\nimport { faBan } from '@fortawesome/free-solid-svg-icons/faBan';\r\nimport { faBars } from '@fortawesome/free-solid-svg-icons/faBars';\r\nimport { faBook } from '@fortawesome/free-solid-svg-icons/faBook';\r\nimport { faBullhorn } from '@fortawesome/free-solid-svg-icons/faBullhorn';\r\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons/faCalendar';\r\nimport { faChartBar } from '@fortawesome/free-solid-svg-icons/faChartBar';\r\nimport { faChartLine } from '@fortawesome/free-solid-svg-icons/faChartLine';\r\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck';\r\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons/faCheckSquare';\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\r\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';\r\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\r\nimport { faCircleHalfStroke } from '@fortawesome/free-solid-svg-icons/faCircleHalfStroke';\r\nimport { faClock } from '@fortawesome/free-solid-svg-icons/faClock';\r\nimport { faCloud } from '@fortawesome/free-solid-svg-icons/faCloud';\r\nimport { faCloudUpload } from '@fortawesome/free-solid-svg-icons/faCloudUpload';\r\nimport { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons/faCloudUploadAlt';\r\nimport { faCode } from '@fortawesome/free-solid-svg-icons/faCode';\r\nimport { faCodeBranch } from '@fortawesome/free-solid-svg-icons/faCodeBranch';\r\nimport { faCog } from '@fortawesome/free-solid-svg-icons/faCog';\r\nimport { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';\r\nimport { faComments } from '@fortawesome/free-solid-svg-icons/faComments';\r\nimport { faCompressAlt } from '@fortawesome/free-solid-svg-icons/faCompressAlt';\r\nimport { faCopy } from '@fortawesome/free-solid-svg-icons/faCopy';\r\nimport { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase';\r\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons/faEdit';\r\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons/faEllipsisH';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';\r\nimport { faExclamation } from '@fortawesome/free-solid-svg-icons/faExclamation';\r\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle';\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';\r\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\r\nimport { faFile } from '@fortawesome/free-solid-svg-icons/faFile';\r\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\r\nimport { faFileExport } from '@fortawesome/free-solid-svg-icons/faFileExport';\r\nimport { faFileSignature } from '@fortawesome/free-solid-svg-icons/faFileSignature';\r\nimport { faFilter } from '@fortawesome/free-solid-svg-icons/faFilter';\r\nimport { faFolder } from '@fortawesome/free-solid-svg-icons/faFolder';\r\nimport { faFolderOpen } from '@fortawesome/free-solid-svg-icons/faFolderOpen';\r\nimport { faFolderTree } from '@fortawesome/free-solid-svg-icons/faFolderTree';\r\nimport { faGlobe } from '@fortawesome/free-solid-svg-icons/faGlobe';\r\nimport { faHashtag } from '@fortawesome/free-solid-svg-icons/faHashtag';\r\nimport { faHistory } from '@fortawesome/free-solid-svg-icons/faHistory';\r\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome';\r\nimport { faICursor } from '@fortawesome/free-solid-svg-icons/faICursor';\r\nimport { faImage } from '@fortawesome/free-solid-svg-icons/faImage';\r\nimport { faImages } from '@fortawesome/free-solid-svg-icons/faImages';\r\nimport { faInbox } from '@fortawesome/free-solid-svg-icons/faInbox';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\r\nimport { faLink } from '@fortawesome/free-solid-svg-icons/faLink';\r\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\r\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\r\nimport { faMinusSquare } from '@fortawesome/free-solid-svg-icons/faMinusSquare';\r\nimport { faMoon } from '@fortawesome/free-solid-svg-icons/faMoon';\r\nimport { faMusic } from '@fortawesome/free-solid-svg-icons/faMusic';\r\nimport { faPager } from '@fortawesome/free-solid-svg-icons/faPager';\r\nimport { faPaperPlane } from '@fortawesome/free-solid-svg-icons/faPaperPlane';\r\nimport { faPaste } from '@fortawesome/free-solid-svg-icons/faPaste';\r\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons/faQuestionCircle';\r\nimport { faQuoteRight } from '@fortawesome/free-solid-svg-icons/faQuoteRight';\r\nimport { faRedo } from '@fortawesome/free-solid-svg-icons/faRedo';\r\nimport { faRobot } from '@fortawesome/free-solid-svg-icons/faRobot';\r\nimport { faSave } from '@fortawesome/free-solid-svg-icons/faSave';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\r\nimport { faServer } from '@fortawesome/free-solid-svg-icons/faServer';\r\nimport { faShareAlt } from '@fortawesome/free-solid-svg-icons/faShareAlt';\r\nimport { faShield } from '@fortawesome/free-solid-svg-icons/faShield';\r\nimport { faShieldAlt } from '@fortawesome/free-solid-svg-icons/faShieldAlt';\r\nimport { faSignOutAlt } from '@fortawesome/free-solid-svg-icons/faSignOutAlt';\r\nimport { faSortAlphaUp } from '@fortawesome/free-solid-svg-icons/faSortAlphaUp';\r\nimport { faSortAmountDown } from '@fortawesome/free-solid-svg-icons/faSortAmountDown';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\nimport { faSquare } from '@fortawesome/free-solid-svg-icons/faSquare';\r\nimport { faSun } from '@fortawesome/free-solid-svg-icons/faSun';\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons/faSync';\r\nimport { faSyncAlt } from '@fortawesome/free-solid-svg-icons/faSyncAlt';\r\nimport { faTachometerAlt } from '@fortawesome/free-solid-svg-icons/faTachometerAlt';\r\nimport { faTag } from '@fortawesome/free-solid-svg-icons/faTag';\r\nimport { faTags } from '@fortawesome/free-solid-svg-icons/faTags';\r\nimport { faThLarge } from '@fortawesome/free-solid-svg-icons/faThLarge';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\r\nimport { faTools } from '@fortawesome/free-solid-svg-icons/faTools';\r\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons/faTrashAlt';\r\nimport { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';\r\nimport { faUserCog } from '@fortawesome/free-solid-svg-icons/faUserCog';\r\n\r\nexport default [\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faArrowDown,\r\n faArrowLeft,\r\n faArrowUp,\r\n faAws,\r\n faBan,\r\n faBars,\r\n faBook,\r\n faBullhorn,\r\n faCalendar,\r\n faChartBar,\r\n faChartLine,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCircleHalfStroke,\r\n faClock,\r\n faCloud,\r\n faCloudflare,\r\n faCloudUpload,\r\n faCloudUploadAlt,\r\n faCode,\r\n faCodeBranch,\r\n faCog,\r\n faCogs,\r\n faComments,\r\n faCompressAlt,\r\n faCopy,\r\n faDatabase,\r\n faDiscord,\r\n faDownload,\r\n faEdit,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faExclamation,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faFile,\r\n faFileAlt,\r\n faFileExport,\r\n faFileSignature,\r\n faFilter,\r\n faFolder,\r\n faFolderOpen,\r\n faFolderTree,\r\n faGlobe,\r\n faHashtag,\r\n faHistory,\r\n faHome,\r\n faICursor,\r\n faImage,\r\n faImages,\r\n faInbox,\r\n faInfoCircle,\r\n faLink,\r\n faList,\r\n faMinus,\r\n faMinusSquare,\r\n faMoon,\r\n faMusic,\r\n faPager,\r\n faPaperPlane,\r\n faPaste,\r\n faPlus,\r\n faQuestionCircle,\r\n faQuoteRight,\r\n faRedo,\r\n faRobot,\r\n faSave,\r\n faSearch,\r\n faServer,\r\n faShareAlt,\r\n faShield,\r\n faShieldAlt,\r\n faSignOutAlt,\r\n faSortAlphaUp,\r\n faSortAmountDown,\r\n faSpinner,\r\n faSquare,\r\n faSun,\r\n faSync,\r\n faSyncAlt,\r\n faTachometerAlt,\r\n faTag,\r\n faTags,\r\n faThLarge,\r\n faTimes,\r\n faTools,\r\n faTrashAlt,\r\n faUpload,\r\n faUserCog\r\n];\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n const _component_el_config_provider = _resolveComponent(\"el-config-provider\");\n return _openBlock(), _createBlock(_component_el_config_provider, {\n locale: $options.elementLocale\n }, {\n default: _withCtx(() => [_createVNode(_component_router_view)]),\n _: 1\n }, 8, [\"locale\"]);\n}","import { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport zhCnLocale from 'element-plus/es/locale/lang/zh-cn';\nimport enLocale from 'element-plus/es/locale/lang/en';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode']),\n elementLocale() {\n return this.$i18n.locale === 'zh-CN' ? zhCnLocale : enLocale;\n }\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=6633a13d\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nimport fontAwesomeIcons from './utils/fontawesomeIcons';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport i18n from './locales'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(...fontAwesomeIcons);\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).use(i18n).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n app.use(store).use(router).use(ElementPlus).use(i18n).use(head).mount('#app');\r\n})\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"21\":\"f318bc2e\",\"22\":\"f752503c\",\"148\":\"b1b1da05\",\"227\":\"44709224\",\"278\":\"bb8355a5\",\"283\":\"5d4f325d\",\"331\":\"4f42d273\",\"412\":\"2eefa4a8\",\"449\":\"865896d4\",\"679\":\"23bb4457\",\"888\":\"f7235188\",\"903\":\"808d69b5\",\"967\":\"db104add\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"148\":\"ff5f4652\",\"227\":\"e7484000\",\"278\":\"e44cbf52\",\"322\":\"2b40f004\",\"331\":\"dd13d5f5\",\"385\":\"20c34d33\",\"412\":\"ba63fb59\",\"449\":\"0a847317\",\"451\":\"7e03bef9\",\"679\":\"e7484000\",\"888\":\"af58b0bb\",\"903\":\"7a90c42f\",\"967\":\"3f3c6dac\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"sanyue_imghub:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"148\":1,\"227\":1,\"278\":1,\"322\":1,\"331\":1,\"385\":1,\"412\":1,\"449\":1,\"451\":1,\"679\":1,\"888\":1,\"903\":1,\"967\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(322|385|451)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(81525); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","withCredentials","adminAuthGuard","to","from","next","get","then","res","data","adminRequired","store","commit","valid","authType","wasLoggedIn","state","adminLoggedIn","name","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setAdminLoggedIn","loggedIn","setUserLoggedIn","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","key","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","response","console","log","fetchBingWallPapers","wallpapers","map","wallpaper","url","Promise","all","resolve","reject","img","Image","onload","onerror","src","modules","plugins","createPersistedState","paths","LOCALE_KEY","getStoredLocale","stored","createI18n","legacy","locale","fallbackLocale","messages","zhCN","en","setLocale","document","documentElement","lang","faAngleDoubleLeft","faAngleDoubleRight","faArrowDown","faArrowLeft","faArrowUp","faAws","faBan","faBars","faBook","faBullhorn","faCalendar","faChartBar","faChartLine","faCheck","faCheckSquare","faChevronDown","faChevronLeft","faChevronRight","faCircleHalfStroke","faClock","faCloud","faCloudflare","faCloudUpload","faCloudUploadAlt","faCode","faCodeBranch","faCog","faCogs","faComments","faCompressAlt","faCopy","faDatabase","faDiscord","faDownload","faEdit","faEllipsisH","faEllipsisV","faExclamation","faExclamationCircle","faExclamationTriangle","faExternalLinkAlt","faEye","faFile","faFileAlt","faFileExport","faFileSignature","faFilter","faFolder","faFolderOpen","faFolderTree","faGlobe","faHashtag","faHistory","faHome","faICursor","faImage","faImages","faInbox","faInfoCircle","faLink","faList","faMinus","faMinusSquare","faMoon","faMusic","faPager","faPaperPlane","faPaste","faPlus","faQuestionCircle","faQuoteRight","faRedo","faRobot","faSave","faSearch","faServer","faShareAlt","faShield","faShieldAlt","faSignOutAlt","faSortAlphaUp","faSortAmountDown","faSpinner","faSquare","faSun","faSync","faSyncAlt","faTachometerAlt","faTag","faTags","faThLarge","faTimes","faTools","faTrashAlt","faUpload","faUserCog","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_component_el_config_provider","elementLocale","default","_","osInstance","imageViewerObserver","computed","this","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","subscribe","mutation","type","payload","use","ElementPlus","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","push","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","err","Error","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/app.08a5e390.js.map.gz b/frontend-dist/js/app.08a5e390.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..120081b485508870434c10039620c4b601bfae5b GIT binary patch literal 18374 zcmV)PK()UgiwFP!000023hll7cN@o%DEzO?;^vrOGy?dPC~}$X%wPyYB*h0rQ;Mj| zGXxsIkb@a$WeA#>VI1w@3UDegq)z#J2)!i=@j+h_Vo?DooRtqiLVTJj^K~T1Oz0$;-HOr=N zO_UCTf?DWWy`Js1gTj2FYidzcN%8k#Yy8|tQ}*%h^> z83z?ZwRKIib+x8dU0q#K?Ioi^SPoiO`Fi6 z8pl|TF&iCyO9POH>ZDKvDsZ}QdMq5G5D~8(8%q?|Yt7th5@^nq} zbhWA(llq2Q(`t9ss;1Ry2wH_KMr9e&mueiUs%hIs%o0jjAv~C3s(oEEJBFiU6M#*o z1?*f?+q!1%@2hK?S?TJC1G;7df8G5vCwg65gW60@YjYV3^|X+c^*@b}*}7^8DQjgJ z)73Sti;Q`kCuM7zxq+ZdmxEp+Q9G&yozu}T!qh>L{v-9y&gc^L=R)+lwxabhvkua+ z5C513l>m{rM?cp!!U)qC1^G(a3hAbE^p-hxb#k@w2>~&;?j-FOJCTG zYkInPSHFN3+t6w)6Xd8a%^e!%T7YFzH`IDwuC1f~nbfz`9j&^guBbOmWAe5J6|s7{ z^nJkfSod+j;4Hfu=;{t+tZ2qp3{a+RBC9fy1_>5sY+^=RXk^okaT|bbX;?8+Fv4t- zi~=qDh}A-2MVkdj^~Mo#Hq^0SN!uW|jcLKGBRQ`R3^&Ta_=cvjij;*@;Vpd|$+{?h{-e;f_FXB9Y;yukknnY)62$9&$jS z(FpaUN+eKPTMsG#ctU_E2n5#FPh>D(fFT3fi~&$b1ZB!lj|u9S55p5ZmP3tc64W7$ zSAu(_PZHdKTeOdLNklb|nl~Fk%6yqd-mimlGiMM>6?B`4w$&~DW+j$qjU8eyt|R%k zM57-?*aH0)(Qyr1J*}53lE7<^^f^=yHw9!jg7ox`iIBEQ7Sw?$4F;{NUqi@g0U1P) zecd5Q4+VA>hD$t9w1C=vE9zRAYp!`g+Yb!hb{bULp^h@gTYrF>SzAx=vPYD34U#d} zh{s(@#txH>_b(!(BM2FYC0th`q(g+%K^_Sm3yF*=gS7s%5syc$fmDP<#f&aN9TC(F zhnh9wp_+k`nRr5Q1CxuMDKrL%tcTS3AdsLrCUjCAsGM*zJ2LnnkWo$($_ax|P8vcn z$fKaDnM;S#Y=Lq}7G)cjeVTc&1ndiO$zYp-GLOGmo;3ytlhw-ctnto1WjI%puP?QKZ7(_w_{3R zDYF7ub2_ctrz+eFP{YMf4M!N5CYZ7Uh_nH+8|-dNTMG?CqMSw^o2hVk97Xt>+J_4% zEK@hA;@Eay<1lM5>C@`Vgr?SSqiupvwJM<5#*`*`7iws=y~rur)T$@?<0axe&3RKO zYPa;5<*t4S&p{rhmLhq$%QXdlo5HUV*>Y91bqvkCsT;8^2h+U)&5PVVmK?(`V>q*uxiN=t%=o^L48}1Cf7q$pgkmw!9;iuHH3|e zB$||ub@*dULy~b9nnKQ;P8F4dT}|7rJ2Zy*>}_hs7Gm4H4U}xHaO-oEjKR95Z4>i1 zh1I-<%HIUxtDfkwHNCwGw4Ug0mAi3Z9d}qoG0b;V~t}XV-y#0 zhq!{gw*|!>A4vEK=#4nSa;GqN#ATUxj%YU=MM*I8Ad@8>iEd`_;huf+7}b zax#OYw{Z?pyA|V( zM&?OP(=>M-%9-&5>8;Do4(>5n(agufFvodg1*XzE%{UtO7=X9uCR%~oYJ~I#D*7;T z=K@Y0Dq!sk}*^T6j=Z{x>`I-_eQ83R~3 zaNS(HgPBV>vu~LEgS_H(^*&eyygj_-s7YYLOq!dbDK*W+`58RK+M#~5jxDj5u^VQV z!O7}^Azjg4#JZNr^?^NKu8LCY+Dh5Dr~vxD4BE`u;m)WRIgP;I4W7J?y@Op*#}eQU zfnIH)HGd!4@|A?og-`d;LX?TRW-Rlc_qFPVzam*(>J5X8E^e94nzCg!O@^&HVQAWv zK_*H?vWky^ZT32L;Ht#e2G zS8M8h!(Y116-5nqw>G(NQS5CPd}Pw%wA7suW9D~ZIp0lgT@<;{r*M-4+|t*Zh%ZYUPGTgbzkFngOebH$e1*?WNdSW zC|=WQN3_0}+JH3hU98|DF0zyxv$tcD5p)X3%?vCrszhREE1D9;#>EUu`xLTbRzIj@ z3gGJ4JTltrXsG9)n4Dmv zSz(DUlXk$viX64psGnFMC)(BtkWUw;BC^Pe|7~?-B=M@g#++xSBQGCZUnZ{R^VNA z8`W~OOSjX(S*vcZl787F?=IqYGFeBoCT4CXXBKsmR;N`iXyeurr=ccxGJ3RHwrDJZ z?6uIRVSq~&fLB0CtluPl%xwZ2@2hjVW}F!43ush_6}V}j*jZ*?0oaC_r7hw7Dh8KT zF}SRX30v0TUUAQi50 zxCLueoZPgwJ}nQI!wSm5kq#REmfl6u*{!X7g`ioT$`IgcSee$Pycv@8ID}&R1V}O} zNT8!1*SQA;&7NEJJQdZ@45u_X6%IG{`TJ2V40?DdPaaYpa$Vk@K+jlW7Vn2+$sV%PjqUp&Zw^P)$ zFdUBSWJ7Fg#?6XPALyl6O&J-F!0BwDP2Q`_Z2S>O3DAnJozOU)AZ?-6)vDptLKA_f z^eEJzBW*Hzs7X!kO2Z_Eqh^3A(3r*P@R8m_Iu7(l&`|~&zv~*;4Vzlkm*DHGF+5Hy z)q{#DOj5LL*YBz8+Oo!-jyN4|uW(z00wf}L4rxK20`pn5XV!QUs4VogEE6J}=W0u; zsqPq$VOOGt^A+e!Xi95~ilKa?5U8U0ed|LvSbJ8tm9y=lJlLSfNrPK4{)1Q+gVMfo6}J1Z6KyvjT zp3bFW4XFSbG;1Se$pUaV^)lW9b_YY;e8xkYU zSrq7%xs8}u^qF;5h>RVCSte%GAlj)Ck$!hI_6awTb_P^cZz74+73w=MOwbEkZy>Ha zgbVkcuw$s>?}0UAmQhgeOw?)Hd>`Q~sH{v&PxwbeJP?rK>l><}-8M)}w1~1JZX`tg zp6XiUI5c&OH(Mm2UvmZfZ@Y?wZb^(ul{WmUoQvaQH6e|rcB}*8Dl=wvZJ!u_tj8kU zqi7aVCy!`W_EA@EYhn*_2MtiPRiNFp8@W#NAnk5Md1$@>eXzKM7^2%$CAzv{WovT7 z-bAicp3sVwUxYqWs_uAg{djL(V+6pZU;$JliVfo|#f?mOaw*!{Q$tJdB zS#xbPG6`}n*i!gHT!$)AksOIos~8Pn8~+fhr7d7td?ok55iggx69j=zD< z2jC8Fm(;*OgM^c13KRsH8j!CBZ1{Z&h>0B>ASAS24G8T$-{d|j!n+10Gig6V+kn6{ zl^NOzM3qS6ibTfZn)SrsKw6H;d-e#te@2h?fD_X!jj>JNNKN-gqyTt# zlgbPY9&`w8pd6F?wqWDP#g1DiGgxF$Ou=2^l3R~eS-;L#ZaDf^_`16Xrixib6LcB7 z4yV0+vZnow!~zgZYr~@*>^0iE+SH8wN!}+@7><2J%l!4th|v11T)=cHi2}Gc_mzm= zs%D;4h}LzVyaZtGn$1MFk>he^lOko1bKq!#6=prLsb~7eJ;W7mBEbP-SwBJn#Z}CK z(cR+PlT~nLL?-FBtH(9g9z%~Vugg>zjy^}|82YkX{Pzx8Corx%6v|U+;P}?4=a6vXrr%^{X%G^Z%3w?t!mM>FoNMZ<0d#wEF5HYtX@Y|3NO zmrX&Ns62ocRWZ=Eg0Y_3W~Yua(ni8I59-k%>L5sqRMDCb&J*MA!5t6)^akG{<%V$g z9XXtk%1(o`3 z2?Ok24V`J*Ai{UG)!_{8*2(or9Xv^-APcJZP$MkU2!0W(^e7$)XMj4ztU+j=SvDST z<&3~%3@_=$rlCQalna4hr7%4#g>G;@?KMcAr?*nm-X^%vveO=o6&qrxlJj1NJQGtC zTUDV_lP0ZnXE1e#=6Z+EaM-Ebns%b;5JD)x*Mnz1c?nho>;S{Bv`F0(d|>5HaS zT4*v{a4)51e^0-aZe3lh^Eb0iq>QyfFr2ccX&r;e z=c(GEK1aIk78VLCLl6M_DR_=i7;Jr-wqIdlI5GQQNtDE$cU|oFf!e5Q<~`NYDzFrd zOQLTdw}^4W+R&!WDFbK4m1z>AHkWZ8tsHfkQ%!VPGoIGldemd)Bq5Wm~?Ex3&6e^I)$&E<5f%iAdH6MCj|z;RUx?$ORCkGTa}$XW!WpeABQT9RqNBj)ZuGDR8$WSTds zq?{1s9Zv_|sHAx1)=i{3OQmmC}^YfG_}u+PJQ>yk;ZKYNeD z!S7=YHa~fCJMOpYE#V?G$RlQGQ+0VQYw~4mn~v3?|H35!LeaeiBd>ZJEe7EnAZO}! zVlWBC>!FC;lx5fCXJV=tt*g}nMBkUzOfz~1ww8=CXqS~*ALVNsr_WfVrB!RewwNu2h>@H6kOC3nAS1NKuc0iQ(5kRa+pRk^JVC9H zb$k;+?@v^5i9VfF6*L!HlTgO+jf&*!H_@R@aN7Mzm{zOYO)y0WLsuQSaW-wA!o8oNqE4-nrk~5uabF#j-PsAQ5vah2L8)$GMOX@npDd0XXr$El%8n_1>+*@)MA zK-hF;5KlZffGXL7$s#LV3L_a9YE`Wny``h2*zOASgJnTE#Fo!)MQd3@9FpUn=Puu# zA#WGZylgM0aX{;jtEyR03xU`78!RZyKPVit{hrl0oG+IH%N_LDp51MC`upWlIq)0h zerP*E**dYkfX=92T-^8iA@j?&+hiwKDIbKM&#qqF@fw!Hf~x}%`7O^4tz#B=T~=#& z?v+}i^?IeFKKt_Abi=x8;VUDxCZ}gFE!?$i_hL$UdU@aT!XWgm-WAIFeK)kbtla4I z-9yFktR`!Y0_JslR;aXDs5Dv2>N}yrPI{gnj)0@dTDHrSp6~UT9}WOn$oyag49pGs zK2xv_BY*+b2iB1lG<>@k61V~vGPqWkjfkgfyY}@)5c~mH9B{{jE^*M}X>DhfIOi1wE_56mS24HAaE&_4ggSv0;UsQ6w!0P&{q7Jp$B0 z;JG~|7VfJ-2chMM{a)c=q!|s*4VfE)g0#CJ-wNtLrR95FWek6hE$sTcF8se-R?eRM z@a)6iVfxv7Kl$YM--2||HKAg=L1?)RrYsVUQp0Cf$cisP5k=Xz0=B)iIuGNa!GfT~ z+@sQ+^@_P?-g!}3TwGMfdcN1}H$vNU$CNKCW92brUKuM}J$p$%X96IX5c9=aez2GoQcm_S5gY`}FOv zJ$>(;r*D4a>~FsR?7d$+d;hCv?>#wtKezRkiS_FUQOhn+HKztLfh!!cD99nznac{*MSJIpQmERe7(3Q^RwLQ7dx zd=`}O=gTiEFP(~(L9udK`Q$fmJpa)v&;H@7)Vint^ggxj(~n+%`osS?|Lea$|IY89 zz4N+&uv<#;F92Byo4dsx^=+Ru$K$FM>XlN%>vrw1I2N!_gQBZmyUm(4cT7e4$K&!o z3;Vu{JSs-XX*!9>h_>_p=auuH{{8v)-#>fvAI^XD8vO6OPoBR0HR=T+$uiYQ^pWM* zP346b6ly|0?A#sn7>z509Q)I@(Bq;t@D3==ln_;{`4$9j-Se`9=T?QVJvGE9WpS3)n znQqAZ`J_hY^r}NhA_k=CN~K;-7|vNl(}N72|AQv4V~ckQZ?! zx$d}x%0@p3y)N?&&u!W545`DiFQ?Z?Kz?rY27@4E-67QGXI@TgU4r}ED3wf{G@W@_ zSCjxr{?tnd*mu0fq20~0DVuS5h-%IE1J%(=RbS(*?S*+`q7h5e)GoJzkL7ff4qD4{x_cf z3@qid_kQyH2VW<<^Z6@pKl|UWDv|fikiBkzHnA+6C(A>X=^UDev*{WOJ6;p!A8P$r zD&O#WgKghg^8D_+GM1D^p9O*7f@Ctp(*qTmSNbmb@0+Srisx?jEyoTA7Z=hkKfgf0 z{G-cja*voF-t~6aelM@cshY6s$jmT0mg_Pn(P+%(8Fz4;V&_BGp1=O;*?Vt4efw+Y zzxmnoum0WHn{Pb*~+xD`O}zV`{o@w|!^BXD$0AfjMR)%H$up3ginhAjKN!jbH!kv)BIZ z{M~oXKKiya7Als1xaKukYS1?NL7XEG5>XxBZ5pBgP&t4?j@Jv6HB>94Ad=bYkdd7N zO5_e1@Hv!aAS6K&x*!cEWnQEma>1k$Lv=?AFqwVf*i1oYi(D{t^I)X{7mu{z6^k+# z4Y+iJ()TGKjv|62m&}p>MDA$<0Dl#3kHGv1hGCn9wUBj- zV{)mnaVR%7mL1oLQJR%sk(WPqvwY2zmslp0N18cOW=aoq`=JF}YO*Hai+>VUVwNhY zhm?~lsUVa^spLY=bi_hEp&JDLq{hgpBUwOMOhM$=mGB*ls+>HJM2-ql7Nes1*ku>V z6_Cry>T=wYii-L`O3TA9WkWwmpBL33>9b@-QpV8Qq%u*JQd)k!MnWBmN?%eA*+5l} zET_+u)0`TUTJ*so8$47NseFDt^^EdNHINc>s>-U}xOMb>L5-5i749Myes6GbWECQPOd>BF>!zj`;OA+Oq#(X^0gXp}mvjZp#7yeQ!Uo$*;3 zmY##I(5~%R|4WKiB<1T6kxQypd=2fTG=6Cc$?qHqzw~vf6w)*(YH8uuP_@Bl)Ic@oU)JSiJuRHV;^w6B=gXEo9@rxgs`hSFkTqa)3rFDc|! zPYDf3WWpuR9T_a>d2WD#GRKx3W;W^K`E_i3Aqk&w-V6U=gb{b&WROz@w-1yey5PsN z)OZdnIbNIRFXZ^&rR7W9_S6jjIkz9?{qnKpI6Xk0;Q?)Z@Z5m*9pmQXKRFN?>mo)` z>RP>G^qI06CCf3DswjP24R*q?7tEK-$H&KL!@x8)rd*3FDD{0uO~RfgC_I%v;;1B% zQZ7IL`Pa_A`Lkyqe|+}C-#>lrRoHL){)cDp{N(8m|Kse*2b9PQy!ZO~lQ(5(;_-&> zb?tzaEXOG(S#j0YyX;tCDZ)Om=NvH*JqVH;&jAyRx4U370yKJEi^=Z9eWY%?tp`2nVs5ZAy;5X#n1?H#9ohC^*9UnT%l5#$lF=9XGp_a1Ty=LEGvGx(^J*VHc zK`TATa~>97N^R)A{?$)@`}MQe-+KPzpPYa9+vi{V>G^j*IDg~4Pd|G7li$1%<&x)) z+pXikP?FD7!6_Ff_@YoBGaC4(xP8QB2C&Z{_3ntx&|SCau_1)y2@VZ#~tI2h$}2V?p!zS zlpvN=F2dZX0CVHq*b~3HZfL9K-imo&fpDB&?>Yq+M#Wlv7iUgzLg94XT*U&#Xjl*; z?2RU_lyX+zaW&i!fc<6x0$b8Z{ur#vZMn>NN_Xp5YA>=_l9f10}?5%Dx&A+L;xh%n_e-ORbH5LyXiIh5Sv;OKTL{MEjgCkjxZ;B;>*#mdF+P-lX*K{Qsf#_ z{G+y~qj4wa+_bc}EbTam1pTjCo-a;5lv_Sy*Y|zPZ3fqaqxN+hdbf-KiJccfVmMyE z*>Wst8|O;6Vz>;-iXAjOzd0H{4wONrxowA4y#Bt!R#_{&0BPVkb~D-DBeA~Uzv2FJlVHQi@aXOwqVxu@vc8pmLbDNew5;g&p#n!R>P#+Z=2g=8`3a4~NMh8$i_*mm` zL|hPrnTx0XsDH6y8iI}B@^Bvco;&iGl;DQp9C=(yaKmtpu9IZIELPiZIBeN+TJ_NP z4o75b3OH{b8MWU5B7Z&_6;HpJkB7TDM#jc1)eCTHPWV~TYEDkyfG=t!d|(;pVbOid zZFEM)MPNA?+ascC=ivxOMUrEucwI2PM#V%xdDw8-HF7t`a5*@8gAtMS23h0D3N1J& zHWDTQl*Q&9yCV+)0hGaJHto^a1prwrj$`)%J6IkKm4F(G@5RrA@5L;>lZIn;amR2p zj4|9rI7yR!R?Gx_5&pZrZGma}S!)pRIdz20cP(etb`M7#H!0XG?!k!k4zlzu*&{X@ z0CKU6+By!Ci_4^y+^FaXEEi+lZo5|4_eXDR1eu2yA`3@E2&X$Um}u8yBuwOM%Ez?c zWA10b24F)l-t`>X0{gR$y(`=cR4hzy=(E9ivQXmc%x$>K^K#k~?Pg303Yx}!A@ z05Vu=M&A#-(S(A-WN~%n!^2m?1Q7Xng3%FWZHbz@@12Z>2q1Fsw7kzSImBQYjG%2t z!UX_1Sb}gwEJ0Rtt=VpWGApmd!p3KBGaE1kJ(hg`dGA7=vXnZn35} z5-tG9V)6F9(MUpw44%4mG#bAEAd7`r{)j700?EMy;ou`;0+1}Gj^&SRz6qclY&LV6 zBjN&(A(%!dj6-Gd*=={dAC8PL0?T6b{7`dx9cx67umqQnv+MQUaAcQT5;TjsXS?pG zB114)T%%7WL*|isf5b-ib6N%wCLeVs z(OaWQ0EZcR1S|^E$ZY+oxj8sj%UNRYEuEG|LAzjb%5fll>6V-L@)Mb!cPM}IO(Q8u z?EJ_{eETMy1Y0nPG}bswf0MFGri$&1Y-*~h@{WR>oZ1eMv%syN{O&i?-?(v{PD}*v zD;a;goFShLkR8~G#CGy4NPLoGIGH3|yNT4^K>8GpRym0_uH_W&Kb4Ze5h{NQXJ$^? zi*j1*mdj72e#p-gj=V%}!VM?q4CHd)EJ}SQi^ndiRAS^}N~XhQVNwD*R5A(Rv&kfa z+eJ!5_lfk)ogi`wxiaJwuPcLa&w`u+3;Xo9EE~9BPkf6tx0DD>O?(D2b8!8c{>}_d zSXj!Rut1c)aiN#^7HhRcVh|?2okYdSwND~LEMKHVSck};u%3{`r=%;(nl!*P|c?9D5a9PgZ}JlHMph`PcC$TcwXRv%`Tm= z?T4&6FVL1srI@3|2Z`9@Wbka%SqW)~$&CmOJ9bd|0tQOvhA&Edo{#vpAfmG)Qc=IM zW?TW@jQZoVUw-TC^|x}m`22tT^ZEb#-uZ`b!+H51ze6xY3*1$7*KQm}H#~{66Oe1W zc9_9d9A8KjLXA+%@;NGZIxcaUu7TNhu?dL=z(M{uzoD%0^P&QcbR86ul&xqyO?9?N zsR?$X>#{}|lNA$n43YEm%1fNP7)BmMaxjDoQmuH-L^>{^$oICvMP?swv^Akrt5`{t4wjA#` z(^R;*p<_3j%uQ1_i0Mw?m5-4uLY{RUi6)9O3UU@XRwJx`KB zPWP&fEm^k1no8(NXtTXPKc*_;=!u&kUhrnPB8e+6mzAeK{F}2k|C!DlJ^%UFp8fL4 z*$?2x%JbL$?(Cyi%4c8y_vhdH7q}7ToA1JvF@OEbvnRjGl5?5H;75ki+Nc;EXHRI$ z_^eTcNLh>{*dO(oKd3W@H9}xmi8n_nCWC^l{pI$qleB&D+JHQ63N zLsy2z<0BA$xoHPsnZTBr11AItC13XJQC6_Grz|SvFaEc^y^ZZHb8qj9Ep4!!q3I{W(H zOJyY#{NxVqJYRh8d}ehJOH7%cS}F(Oz`=J5Mg+XR@13N86U}t&ecu`yx)Z-`f?n~4 zm)U|^^4w61pFhdR1A-voN}y;Z5d_gOxcui;VoyAWhfWkAT!v*9@eAxkiR=RbiA(>p zcm7M)`Ij=+`SUVg1b>6n-AL$*eS!6_61{{w3)fRrCOeW0zDCD#4$ENnLC;-30y{a~ z|0U|$fWP-qlDoKEzQUqN!j)MHmoq5|{P2G+JteEzES5^8bYI4&s`;A+yzFAln|fszXsuqa6v=#X4C=ow1Qr-Qrltjy>T7wv zQlv^B;Pn#`l81`dQr7Vik`i-6-)2EEr)$Thv&KmxlISvbji3MQx94xXCtoq4Jbn9X zXRmy8{_79VzWKBBCvQFd<%iFI@CyYxUU~YjAIfii*r5P294mnH^to3Qcfzj2X_gJL z)RDsIFto!$#ZKNxA)jV`@{9Ag{)H}|<9Bj@|NUpL{^QwuZ-4UJ*OE7ee%0+oWK3O%$;pmyL`vSkh&Iz zUto+CKKu1gpTGU>r~m%p(+_`2HJm?r>->Aadj7rt7+Te_?KZvRQWsVZYpiKo#j#?~ zXD#Lj*BhSW`PYL6t>&Ol$H&I0C<_t?;PLKtJO2_9+1hr!V{WEb;NW@oU_X}uuaD-u zcML~+m%TpuFw#f&<#r&*mll<&DLCDWUw^6G7=C90Nb?W>-!k(^3b5W#AC2LPdHlj2&xiI|*E?ca1UQznD$N;WMx{*dA3Q$) zOxq9l-v9h-I4b|<=|BD8{AaH||M~Z!_h0?^{JS5-9D*%Q7S`>M-L*qJ9$l1gJ(JlJ zu_ELp8V!6AMn1%aK|0bE@`hR?9I zv*tL(F~@cfANb5!+$|uU!b4S&($cl2^J4-E52Y?m5KwA)zG*c&MI;;U4Q_a@5Qg#O z4Jmv^YIrV2{7R(L?9GLW=$0ys2Mu!ivj9U=Mu!!omVCT)Yz(b~1!)S82@*xpJdKOX zB#6=xhsPGKth^$kIzDUVh&u`+NIN_t7TS$+7p51ujNU_kV5#S}#}W!U*^ti-ZKA=S z3)Vbs^arrx^XJ6p&V*F^Wg&@V7);y}c*WeN0j`LmU`Z^LE|YEN|Sce z4tjX?_*m-ptug*IO);wxh0p)|d%q%|I+?O5OEGQB7RS?uXLfQq``gz^gGYDeB&QZ` zd-6+orRy_eW+WATafp@3@4y?1NurV*vk40b6uxZv!hG}X@53%g;!%*GzYorgeO8S8 ztE!TFhbn0iQK%F~Z;YjEskDtf>`uCPfFv!KVule}i!m|hCFj+2(G0IgvbXi5OL%6N(P zL&yG`)$8%8I(mDD-#M1DopU!}Fg_F?g`xn4zK>lb@4fs%RKhRNo%!_gz?X7ax!Ym< z`Y;6pNOs*L%UAaH_(P!FElR;9=;(Y2cH+@m1yG+}a$1X)+f;h}P_eB_DwIDy9mG@m}es`{R_09;5_vQv&`5uTsou$M~+BLsF@m(=EZ?9#UFR z3($Q{aEQ>wV-G;A^3bfq)uo(~aNA+ufe{>g-lgLE|qyG;o=aywq%(H`Hc~UqaX!7Sb$7;-=*)gY{x;~)!Y_L5CbfPZcNdZ384Nj zbDDJRTErUE0i1*c$qye)2qK_N%T47@%DEDQ=mL!J98FO2YBN3&M$e$Ob_%SJ=i&?1=e;VkB{g48$r5o6Cd2 z%ZDS8dvNe@d;zYqjH%rXqvixX$8NCV!S(B^GC95=O2oUk0z&2$+A9ljp52Pu{+Edc zkEcZ=lFq0m`oaI$tzs*NjjE62g_CO&xgs0-3U3s4i*Xa6OZ@aKK;spz30;utJ(YA2 zl~@qlq-D5>u0k7iW-1;Ny-E8dUf}^c2p+1?5zkzpVTMM&8NOLrib8NHoEH*w(xt z@RV52u~4GKKK|A{FDxn!ka>bjT;b<)sVQ?QnsX4X4QZTZLSr7X0az57e3Y#`{9Z9G zt139Wz=+N-8r2WwBmw2)m>Me{s85szrZKnQWj<`KiwDZvES#5UrE9}a$5XC7gI&h=jvIUy5wG#2fKRskWL;q{nio)R3-Wa@TN` z!kNOwLB3r0GF{giFZrz5Z?IU|^$48vTd+G9IHB}l)*{I9#HOTtP# z6r8Xe$2$h&9rsBX1kce;*B9}mKb$A!vKVW9-$6b@cfk{BfdZ#znu_NtB8);};%?y} zDDM`OYho5su0bFJro6OUn3~)z%18o z=Lr1P1l2w_G1t6tYoAEEb%Tg+?oUq4Sk2~c;Zzte4~a(*!14L^Z`XEhBM6rM7~R|m zF6w8|f34PRYv#u6RHFab&6&BGiHV6s|FM~w#(s;JoaQnywLde_nwXeL^k1_%Io+IX z5nHF{W~t;vV|u1Jo$S&A3zfA&_QQzxvsnVZv-)PFOxg!3kwnBHftTZx`d&?$P_ zYR%5=Pwej}dithyYoakT)k^gAbZfeCqiHp=J>3YTuFmT?xS6&nPkdt42+kC*rBHMN zN(g#ZXn_&m7#!!L^5CJxl5T;JE;RVqv9cuU8Iv-{#<_VCM{r7$Q$z@D)#ejHdBXTU z1%yMI>&XJ@?H`~@>`C)ISI0fy3q7d0)Ukr~V^>UGv;>R+7nD=JNV1_!8_ooZ*$0C0xwcYrCvYi6amNhf{4aeqE(Iv>w@*S7KT=%!#xjR zln?PY#Bhndvo;eusDVDXYqjygnB4-Eq@ywEWguTVab&qGCte*y7Eq}N_Cv`YF5*)P zS{VBFem}(e{Kjr!Tmi~`2d~Rcmw;})&Kb{(W_$V?pPog3Eh@o+vhOqNkaJJAv+Y*# zFQ{BZcg)b_LM%czZ2yc3j0tapfG9OOmLD*H9P5Xz>vLlZ@hHo+#2XS1IgTL72-kBP zFt;j0;1?3>n0y>bW~xIunQjg}T!7CNL|jY?E-c$YY^l3J3Otua7(^vHEKHbcJ)a$^ z3Oj<>AIS-29eH+B>9VfkFzXNF>C- z>;^)Ya4$L4ipU*-1m|b+dV7}7-0+SF+DRw!9bwu+;?gFt^V-3GLO-KD<%mHoS5lNM zw@9p7h%Iwm@v@^xFT;l@mGF%4<^#i6D0q_Y8+aU~S)|uD;|D#Jmz0nm!sJNCR3(HX zlHt41kdWBkIS5 zsGuNRf^aNu^_YYT6d|D*YSZ*^k}dBRpnzmT2+pGsv0I2*4jMf2-=Uw4zYYxXnH`22 zGi}wX;3jimD_K=Mr-{wYJn|BGEg+%+ZZH|Dvv&(ngimqqZpZ<6gu-qih-g7;Aud3B zUdnDEWG7)+n0r^!=>i4n@PrpwE}k5?wBwwoJulOnrDUb?V2o3;Iulxfh^4(fydXrH zm^jxXA6ME*2V`Si{6ROw2eKX`UP!pinB^=}h(Nk1s+sgR#S^^zawHH7shWArpNX4a zyMng+(rT+_B~_TqT0~4D6J&-3=tSgnC47#em*dH3 zT*;;-CMcdg9(Od1D%f5e&$ubCAXZ7yO$;I)5h8b>D+Un_?nvI~QzqGV1LlW1o)Z-` z3!PAc?%gM zq@VH(@HEDudl(_A!F2K1Bp0hDJ_JLnoojqUgFtV;{Bm9qo*SDbq0ps^X>AI_xfoZt zxTuKnoJfqA7#TMqc7miEMVqiMuEQhuUQ1MVpLVXOoe?Y%+3^O-7!v z$;cfxdAbmJHqtzZykp~0GswAdQBg#PTKi(0Xiwt~bR(y}XovfX)#8g$@|cOlm%{hb zK0B1p3(<*P^ix%`+7jD|e1SO>Ni?H}9p5`vgaLpL0>;A~#nknbPS=k=@Kikx1vHfV&*m&@@Q5nl@i!^-tS4nw0W%7`j13%Ve3q+C`W zq=ug=w9vx{me;H*6Nw~1kQ{g;kGg}aj5oBcZ`arFY^1lUJYPAmjx6pii&R{aAh?rk zh_dsFDcU7x;g{3xiUn&vW_+wBb1KEr0S<(6S(#9}%yI)|w_rIwvzmh#J-GH=A!o3R z5IqoqH2OXmU(P@@oj}5&RVViNhYdhc_`%e}i#GhhPgnl$#p$W3m#61uU!Iwr9REVO z6tW;5pNZ@v1FZrLbpgw{5yj)*QYJmZWCH5tl(BYxgVk^FjvtqCt6qw4?|3 zB^Yz)zF-NSzqp5Y5xaH}*lrtMMvTjhFXZEf6=xm2!B<hp)j&zADc# z%2;BNJ|?fx$5Ko5v3V>l$hxMCjgJkjkT2B7lI!&0<%h1q(*=_&@_KHYbH?`M!=mK+ zl>a+TCL}&j6Qy%^rD!Wk9yls!bEx>b>;j1gfrOK5;tK?IA}4rCHb*YDK;oq3wXMX5 z(zRT>#e#6y#J!$7aZ9f9;Y2UuLNB6{7gQ`U!Sh#9DW)o^PC@QDEw=;D?HQu1yrY3$ zib$|*w=H&HX_rMd;ib?*kb;SL&!p@5Y>mg4^4!Td*YCUFh!;6Lk`N~DW>eWMNWi-V zg+~V`qg7Q70A{Vya;!FlAPC8*H37~FWZSO=vDSh&$rxivdQ`rSPQ{v*;5d0apV}97 zlr4<eVYdFVNaJsS&lUcjjA#t_=rl*s!t9Y*eyJ~VyTy3rl9R?HPHrN zo*I$2v?g$UmxBPzLpVi$3H%U9Dw53{ALqMYXh!yXr~!NjgZLVu1P|Ebk)NOmIIp7} zF%is^DA;7+R)x4f#S1&k7pjDoj);fhsQ?JLfW10UQ~LntSOc-Fi@Q_4?v-ew2b*0RMJDEwmZ@3ktlT z7JLR^F!%-Z7Lf|TxR8gc@lFAZopEf)u=-&K%o(7;3Rb;#n>A}LLJ*CJNlJ%?71V<1 ztdYf5Pzz|cz@Fda9F(BgBp?hbgxI2jT7c6=a%0?K?}J-{o{dj6j5>(GNne3s@-w;Dne;E7n$k{#Yi zc7Fnw)ZuhuGt5aw6Wy6S1DdHj>b92n5yTyqs5R;{t08(Ub)=ezIo&jddMYg7&?MSEL?evr= zp6ZCdVgP!cgMJ@l=faa5{IAawJnxWx@CP{XLp;4fAN&5k2lepYgK}@ptr~ z10~T@4)iHY5U!p_o8Lw{xyj9MdWRHoQ#)YEyOEq!e(nv*k#WuMT?ZPY3(;|+BwL=} zd=ACECYlB^cD#!b?3n1PZEgX=t=ZB~yg(bOi0;dVCdRj815fx>xdpWV{RE}cH!UZb zRZt6wi=Y5U)N%YWTQrXNrL{miT~muOjq=T>{GvuQXi;ZnM84eT(3!|2%Za%?PRN^if=z9J)kkXR3X+U%38?@3LreVKx4+*r4 zV8o?95m)23C+_gUhQ?R)U=si#M0#+#I2BUR7m0a~3wLzMjI>&SrjfnOFEOD-OtQzs zFib?pChuFw51ft6#2QMCbQuJ43q>+2lY^b)wLzw8mlO*gPzE6*>y^}uaPI+!UF;e< z{)|EqAB+aOmY+&NxA8ucp7p?)GH{B@(BnWq~aGpae!hi;wqz2FNQ{ZQh h^BGPk^A8>Zy1w6FTb>sd<_m?>{|`jkRB@00006}wnHm59 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/app.e9233b6a.js.gz b/frontend-dist/js/app.e9233b6a.js.gz deleted file mode 100644 index b3f2e4ea6e08adf8c51279b04f1f4d2fcf189401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25181 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 ca7c>x*>d^otx4{y {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\r\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\n getters: {\r\n userConfig: state => state.userConfig,\n bingWallPapers: state => state.bingWallPapers,\n adminLoggedIn: state => state.adminLoggedIn,\n userLoggedIn: state => state.userLoggedIn,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\n state.bingWallPapers = bingWallPapers;\n },\n setAdminLoggedIn(state, loggedIn) {\n state.adminLoggedIn = loggedIn;\r\n },\r\n setUserLoggedIn(state, loggedIn) {\r\n state.userLoggedIn = loggedIn;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\n try {\n const response = await axios.get('/api/userConfig');\n commit('setUserConfig', response.data);\n } catch (error) {\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState({\r\n // 只持久化非敏感数据,不持久化认证状态\r\n paths: [\r\n 'userConfig',\r\n 'uploadMethod',\r\n 'uploadCopyUrlForm',\r\n 'compressConfig',\r\n 'storeUploadChannel',\r\n 'storeChannelName',\r\n 'storeAutoRetry',\r\n 'storeUploadNameType',\r\n 'uploadFolder',\r\n 'customUrlSettings',\r\n 'adminUrlSettings',\r\n 'autoReUpload',\r\n 'useDarkMode',\r\n 'cusDarkMode',\n ]\r\n })]\r\n})\r\n","import { createI18n } from 'vue-i18n'\r\nimport zhCN from './zh-CN.json'\r\nimport en from './en.json'\r\n\r\nconst LOCALE_KEY = 'app-locale'\r\n\r\nfunction getStoredLocale() {\r\n const stored = localStorage.getItem(LOCALE_KEY)\r\n if (stored === 'zh-CN' || stored === 'en') return stored\r\n return 'zh-CN'\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale(),\r\n fallbackLocale: 'zh-CN',\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nexport function setLocale(locale) {\r\n i18n.global.locale = locale\r\n localStorage.setItem(LOCALE_KEY, locale)\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\r\n}\r\n\r\nexport { LOCALE_KEY, getStoredLocale }\r\nexport default i18n\r\n","import { faAws } from '@fortawesome/free-brands-svg-icons/faAws';\r\nimport { faCloudflare } from '@fortawesome/free-brands-svg-icons/faCloudflare';\r\nimport { faDiscord } from '@fortawesome/free-brands-svg-icons/faDiscord';\r\nimport { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoubleLeft';\r\nimport { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight';\r\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons/faArrowDown';\r\nimport { faArrowLeft } from '@fortawesome/free-solid-svg-icons/faArrowLeft';\r\nimport { faArrowUp } from '@fortawesome/free-solid-svg-icons/faArrowUp';\r\nimport { faBan } from '@fortawesome/free-solid-svg-icons/faBan';\r\nimport { faBars } from '@fortawesome/free-solid-svg-icons/faBars';\r\nimport { faBook } from '@fortawesome/free-solid-svg-icons/faBook';\r\nimport { faBullhorn } from '@fortawesome/free-solid-svg-icons/faBullhorn';\r\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons/faCalendar';\r\nimport { faChartBar } from '@fortawesome/free-solid-svg-icons/faChartBar';\r\nimport { faChartLine } from '@fortawesome/free-solid-svg-icons/faChartLine';\r\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck';\r\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons/faCheckSquare';\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\r\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';\r\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\r\nimport { faCircleHalfStroke } from '@fortawesome/free-solid-svg-icons/faCircleHalfStroke';\r\nimport { faClock } from '@fortawesome/free-solid-svg-icons/faClock';\r\nimport { faCloud } from '@fortawesome/free-solid-svg-icons/faCloud';\r\nimport { faCloudUpload } from '@fortawesome/free-solid-svg-icons/faCloudUpload';\r\nimport { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons/faCloudUploadAlt';\r\nimport { faCode } from '@fortawesome/free-solid-svg-icons/faCode';\r\nimport { faCodeBranch } from '@fortawesome/free-solid-svg-icons/faCodeBranch';\r\nimport { faCog } from '@fortawesome/free-solid-svg-icons/faCog';\r\nimport { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';\r\nimport { faComments } from '@fortawesome/free-solid-svg-icons/faComments';\r\nimport { faCompressAlt } from '@fortawesome/free-solid-svg-icons/faCompressAlt';\r\nimport { faCopy } from '@fortawesome/free-solid-svg-icons/faCopy';\r\nimport { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase';\r\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons/faEdit';\r\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons/faEllipsisH';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';\r\nimport { faExclamation } from '@fortawesome/free-solid-svg-icons/faExclamation';\r\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle';\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';\r\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\r\nimport { faFile } from '@fortawesome/free-solid-svg-icons/faFile';\r\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\r\nimport { faFileExport } from '@fortawesome/free-solid-svg-icons/faFileExport';\r\nimport { faFileSignature } from '@fortawesome/free-solid-svg-icons/faFileSignature';\r\nimport { faFilter } from '@fortawesome/free-solid-svg-icons/faFilter';\r\nimport { faFolder } from '@fortawesome/free-solid-svg-icons/faFolder';\r\nimport { faFolderOpen } from '@fortawesome/free-solid-svg-icons/faFolderOpen';\r\nimport { faFolderTree } from '@fortawesome/free-solid-svg-icons/faFolderTree';\r\nimport { faGlobe } from '@fortawesome/free-solid-svg-icons/faGlobe';\r\nimport { faHashtag } from '@fortawesome/free-solid-svg-icons/faHashtag';\r\nimport { faHistory } from '@fortawesome/free-solid-svg-icons/faHistory';\r\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome';\r\nimport { faICursor } from '@fortawesome/free-solid-svg-icons/faICursor';\r\nimport { faImage } from '@fortawesome/free-solid-svg-icons/faImage';\r\nimport { faImages } from '@fortawesome/free-solid-svg-icons/faImages';\r\nimport { faInbox } from '@fortawesome/free-solid-svg-icons/faInbox';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\r\nimport { faLink } from '@fortawesome/free-solid-svg-icons/faLink';\r\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\r\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\r\nimport { faMinusSquare } from '@fortawesome/free-solid-svg-icons/faMinusSquare';\r\nimport { faMoon } from '@fortawesome/free-solid-svg-icons/faMoon';\r\nimport { faMusic } from '@fortawesome/free-solid-svg-icons/faMusic';\r\nimport { faPager } from '@fortawesome/free-solid-svg-icons/faPager';\r\nimport { faPaperPlane } from '@fortawesome/free-solid-svg-icons/faPaperPlane';\r\nimport { faPaste } from '@fortawesome/free-solid-svg-icons/faPaste';\r\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons/faQuestionCircle';\r\nimport { faQuoteRight } from '@fortawesome/free-solid-svg-icons/faQuoteRight';\r\nimport { faRedo } from '@fortawesome/free-solid-svg-icons/faRedo';\r\nimport { faRobot } from '@fortawesome/free-solid-svg-icons/faRobot';\r\nimport { faSave } from '@fortawesome/free-solid-svg-icons/faSave';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\r\nimport { faServer } from '@fortawesome/free-solid-svg-icons/faServer';\r\nimport { faShareAlt } from '@fortawesome/free-solid-svg-icons/faShareAlt';\r\nimport { faShield } from '@fortawesome/free-solid-svg-icons/faShield';\r\nimport { faShieldAlt } from '@fortawesome/free-solid-svg-icons/faShieldAlt';\r\nimport { faSignOutAlt } from '@fortawesome/free-solid-svg-icons/faSignOutAlt';\r\nimport { faSortAlphaUp } from '@fortawesome/free-solid-svg-icons/faSortAlphaUp';\r\nimport { faSortAmountDown } from '@fortawesome/free-solid-svg-icons/faSortAmountDown';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\nimport { faSquare } from '@fortawesome/free-solid-svg-icons/faSquare';\r\nimport { faSun } from '@fortawesome/free-solid-svg-icons/faSun';\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons/faSync';\r\nimport { faSyncAlt } from '@fortawesome/free-solid-svg-icons/faSyncAlt';\r\nimport { faTachometerAlt } from '@fortawesome/free-solid-svg-icons/faTachometerAlt';\r\nimport { faTag } from '@fortawesome/free-solid-svg-icons/faTag';\r\nimport { faTags } from '@fortawesome/free-solid-svg-icons/faTags';\r\nimport { faThLarge } from '@fortawesome/free-solid-svg-icons/faThLarge';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\r\nimport { faTools } from '@fortawesome/free-solid-svg-icons/faTools';\r\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons/faTrashAlt';\r\nimport { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';\r\nimport { faUserCog } from '@fortawesome/free-solid-svg-icons/faUserCog';\r\n\r\nexport default [\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faArrowDown,\r\n faArrowLeft,\r\n faArrowUp,\r\n faAws,\r\n faBan,\r\n faBars,\r\n faBook,\r\n faBullhorn,\r\n faCalendar,\r\n faChartBar,\r\n faChartLine,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCircleHalfStroke,\r\n faClock,\r\n faCloud,\r\n faCloudflare,\r\n faCloudUpload,\r\n faCloudUploadAlt,\r\n faCode,\r\n faCodeBranch,\r\n faCog,\r\n faCogs,\r\n faComments,\r\n faCompressAlt,\r\n faCopy,\r\n faDatabase,\r\n faDiscord,\r\n faDownload,\r\n faEdit,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faExclamation,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faFile,\r\n faFileAlt,\r\n faFileExport,\r\n faFileSignature,\r\n faFilter,\r\n faFolder,\r\n faFolderOpen,\r\n faFolderTree,\r\n faGlobe,\r\n faHashtag,\r\n faHistory,\r\n faHome,\r\n faICursor,\r\n faImage,\r\n faImages,\r\n faInbox,\r\n faInfoCircle,\r\n faLink,\r\n faList,\r\n faMinus,\r\n faMinusSquare,\r\n faMoon,\r\n faMusic,\r\n faPager,\r\n faPaperPlane,\r\n faPaste,\r\n faPlus,\r\n faQuestionCircle,\r\n faQuoteRight,\r\n faRedo,\r\n faRobot,\r\n faSave,\r\n faSearch,\r\n faServer,\r\n faShareAlt,\r\n faShield,\r\n faShieldAlt,\r\n faSignOutAlt,\r\n faSortAlphaUp,\r\n faSortAmountDown,\r\n faSpinner,\r\n faSquare,\r\n faSun,\r\n faSync,\r\n faSyncAlt,\r\n faTachometerAlt,\r\n faTag,\r\n faTags,\r\n faThLarge,\r\n faTimes,\r\n faTools,\r\n faTrashAlt,\r\n faUpload,\r\n faUserCog\r\n];\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n const _component_el_config_provider = _resolveComponent(\"el-config-provider\");\n return _openBlock(), _createBlock(_component_el_config_provider, {\n locale: $options.elementLocale\n }, {\n default: _withCtx(() => [_createVNode(_component_router_view)]),\n _: 1\n }, 8, [\"locale\"]);\n}","import { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport zhCnLocale from 'element-plus/es/locale/lang/zh-cn';\nimport enLocale from 'element-plus/es/locale/lang/en';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode']),\n elementLocale() {\n return this.$i18n.locale === 'zh-CN' ? zhCnLocale : enLocale;\n }\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=6633a13d\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nimport fontAwesomeIcons from './utils/fontawesomeIcons';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport i18n from './locales'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(...fontAwesomeIcons);\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).use(i18n).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n app.use(store).use(router).use(ElementPlus).use(i18n).use(head).mount('#app');\r\n})\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"21\":\"e06c66b8\",\"22\":\"f752503c\",\"227\":\"44709224\",\"278\":\"66af4a0a\",\"283\":\"5d4f325d\",\"331\":\"0b44b778\",\"412\":\"2eefa4a8\",\"449\":\"865896d4\",\"679\":\"23bb4457\",\"870\":\"9e7db652\",\"888\":\"f7235188\",\"957\":\"e8a16dfc\",\"967\":\"4c8a2786\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"227\":\"e7484000\",\"278\":\"e44cbf52\",\"322\":\"2b40f004\",\"331\":\"dd13d5f5\",\"385\":\"20c34d33\",\"412\":\"ba63fb59\",\"449\":\"0a847317\",\"451\":\"7e03bef9\",\"679\":\"e7484000\",\"870\":\"16cbea0a\",\"888\":\"793f4b66\",\"957\":\"db5680df\",\"967\":\"3f3c6dac\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"sanyue_imghub:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"227\":1,\"278\":1,\"322\":1,\"331\":1,\"385\":1,\"412\":1,\"449\":1,\"451\":1,\"679\":1,\"870\":1,\"888\":1,\"957\":1,\"967\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(322|385|451)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(81525); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","withCredentials","adminAuthGuard","to","from","next","get","then","res","data","adminRequired","store","commit","valid","authType","wasLoggedIn","state","adminLoggedIn","name","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setAdminLoggedIn","loggedIn","setUserLoggedIn","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","key","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","response","console","log","fetchBingWallPapers","wallpapers","map","wallpaper","url","Promise","all","resolve","reject","img","Image","onload","onerror","src","modules","plugins","createPersistedState","paths","LOCALE_KEY","getStoredLocale","stored","createI18n","legacy","locale","fallbackLocale","messages","zhCN","en","setLocale","document","documentElement","lang","faAngleDoubleLeft","faAngleDoubleRight","faArrowDown","faArrowLeft","faArrowUp","faAws","faBan","faBars","faBook","faBullhorn","faCalendar","faChartBar","faChartLine","faCheck","faCheckSquare","faChevronDown","faChevronLeft","faChevronRight","faCircleHalfStroke","faClock","faCloud","faCloudflare","faCloudUpload","faCloudUploadAlt","faCode","faCodeBranch","faCog","faCogs","faComments","faCompressAlt","faCopy","faDatabase","faDiscord","faDownload","faEdit","faEllipsisH","faEllipsisV","faExclamation","faExclamationCircle","faExclamationTriangle","faExternalLinkAlt","faEye","faFile","faFileAlt","faFileExport","faFileSignature","faFilter","faFolder","faFolderOpen","faFolderTree","faGlobe","faHashtag","faHistory","faHome","faICursor","faImage","faImages","faInbox","faInfoCircle","faLink","faList","faMinus","faMinusSquare","faMoon","faMusic","faPager","faPaperPlane","faPaste","faPlus","faQuestionCircle","faQuoteRight","faRedo","faRobot","faSave","faSearch","faServer","faShareAlt","faShield","faShieldAlt","faSignOutAlt","faSortAlphaUp","faSortAmountDown","faSpinner","faSquare","faSun","faSync","faSyncAlt","faTachometerAlt","faTag","faTags","faThLarge","faTimes","faTools","faTrashAlt","faUpload","faUserCog","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_component_el_config_provider","elementLocale","default","_","osInstance","imageViewerObserver","computed","this","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","subscribe","mutation","type","payload","use","ElementPlus","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","push","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","err","Error","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/app.e9233b6a.js.map.gz b/frontend-dist/js/app.e9233b6a.js.map.gz deleted file mode 100644 index 2c77682d893877b556d3f6f05d6818bf7a6588ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18398 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 F006Av>6icj

H-^85*7X!K;oNaKk^~z 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