diff --git a/README-zh.md b/README-zh.md index ff21db5..05cd77d 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,6 +1,6 @@ > 🌐 在线体验: http://39.105.110.128:0721 , 这是我一个空闲的2c2g3m的云主机没有cdn > -# Stable-Diffusion-WebUI无边图像浏览 +# 无边图像浏览 [查看近期更新](https://github.com/zanllp/sd-webui-infinite-image-browsing/wiki/Change-log) @@ -69,6 +69,27 @@ ### 🧠 Topic/Tag 分析 - 标签关系图可视化与主题聚类联动。 +### 🗂️ 智能整理 +AI 驱动的自动文件整理 + +- **语义聚类**:基于 AI 向量化技术,自动将语义相似的图片分组 +- **智能命名**:AI 自动生成有意义的文件夹名称,支持多语言 +- **预览确认**:执行前可预览整理方案,支持跳过或调整特定分组 +- **后台处理**:大文件夹在后台异步处理,不影响继续使用 +- **灵活配置**:支持移动/复制、设置最小聚类大小、递归处理子文件夹 + +**使用方法:** +1. 进入需要整理的文件夹 +2. 点击地址栏中的「智能整理」按钮 +3. 配置选项(目标文件夹、最小聚类大小等) +4. 等待 AI 分析完成 +5. 预览整理方案 +6. 确认执行 + +> **前置条件**:与自然语言搜索相同 - 需要配置 `OPENAI_BASE_URL`、`OPENAI_API_KEY`,以及 Python 依赖 `numpy`、`hnswlib` +> +> 📸 查看下方[智能整理预览](#智能整理-1)获取截图和视频演示 + ### 🌐 多语言支持 - 目前支持简体中文/繁体中文/英文/德语。 - 如果您希望添加新的语言,请参考 [i18n.ts](https://github.com/zanllp/sd-webui-infinite-image-browsing/blob/main/vue/src/i18n/zh-hans.ts) 并提交相关的代码。 @@ -173,6 +194,20 @@ https://user-images.githubusercontent.com/25872019/230768207-daab786b-d4ab-489f- image +## 智能整理 + +AI 驱动的自动文件整理 - 自动将相似图片分组并创建有意义的文件夹。 + +智能整理配置弹窗 + +智能整理生成标题 + +智能整理预览 + +智能整理预览列表 + +https://github.com/user-attachments/assets/c1279556-d255-4e71-b230-48523a4859bf + ## 自然语言分类&搜索(实验性) 这个功能用于把图片按**提示词语义相似度**自动分组(主题),并支持用一句自然语言做**语义检索**(类似 RAG 的召回阶段)。 diff --git a/README.md b/README.md index 9c746a6..ff75073 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [Installation / Running](#installation--running) -# Stable Diffusion webui Infinite Image Browsing +# Infinite Image Browsing (IIB) ### Software Support and Development Progress Overview | Software | Support | Provided by | @@ -84,6 +84,27 @@ If you would like to support more software, please refer to: [parsers](https://g ### 🧠 Topic/Tag Analysis - Tag relationship graph visualization for topic clusters. +### 🗂️ Smart Organize +AI-powered automatic file organization + +- **Semantic Clustering**: Automatically groups similar images based on prompt semantics using AI embeddings +- **Auto-Generated Folder Names**: AI generates meaningful folder names in your preferred language +- **Preview Before Action**: Review the proposed organization before confirming - skip or adjust as needed +- **Background Processing**: Large folders are processed in the background, you can continue working +- **Flexible Options**: Choose between move or copy, set minimum cluster size, include subfolders recursively + +**How to use:** +1. Navigate to the folder you want to organize +2. Click the "Smart Organize" button in the address bar +3. Configure options (target folder, min cluster size, etc.) +4. Wait for AI analysis to complete +5. Preview the proposed organization +6. Confirm to execute + +> **Requirements**: Same as Topic Search - requires `OPENAI_BASE_URL`, `OPENAI_API_KEY`, and Python dependencies `numpy`, `hnswlib` +> +> 📸 See [Smart Organize Preview](#smart-organize) below for screenshots and video demo. + ### 🌐 Multilingual Support - Currently supports Simplified Chinese/Traditional Chinese/English/German. - If you would like to add a new language, please refer to [i18n.ts](https://github.com/zanllp/sd-webui-infinite-image-browsing/blob/main/vue/src/i18n/zh-hans.ts) and submit the relevant code. @@ -190,6 +211,20 @@ https://user-images.githubusercontent.com/25872019/230768207-daab786b-d4ab-489f- image +## Smart Organize + +AI-powered automatic file organization - groups similar images and creates meaningful folders. + +Smart Organize Config Modal + +Smart Organize Generate Title + +Smart Organize Preview + +Smart Organize Preview List + +https://github.com/user-attachments/assets/c1279556-d255-4e71-b230-48523a4859bf + ## Natural Language Categorization & Search (Experimental) This feature groups images by **semantic similarity of prompts** and supports **natural-language retrieval** (similar to the retrieval stage in RAG). diff --git a/change.log.md b/change.log.md index 64a3abb..af4ac94 100644 --- a/change.log.md +++ b/change.log.md @@ -1,5 +1,42 @@ [跳到中文](#中文) -# English +# English + +## 2026-02-17 +### 🗂️ Smart Organize - AI-Powered File Organization \ + +Automatically organize scattered images into meaningful folders using AI. + +**Features:** +- **Semantic Clustering**: Groups images based on prompt similarity using AI embeddings +- **Auto-Generated Names**: AI creates meaningful folder names in your preferred language +- **Preview & Confirm**: Review the proposed organization before executing - skip or adjust any cluster +- **Background Processing**: Large folders process asynchronously without blocking your workflow +- **Flexible Options**: Move or copy, set minimum cluster size, include subfolders recursively + +**How to use:** +1. Navigate to the folder you want to organize +2. Click **"Smart Organize"** button in the address bar +3. Configure options in the modal +4. Wait for AI analysis (embedding → clustering → title generation) +5. Preview the result - hover over filenames to see image thumbnails +6. Confirm to execute + +Smart Organize Config Modal + +Smart Organize Generate Title + +Smart Organize Preview + +Smart Organize Preview List + +https://github.com/user-attachments/assets/c1279556-d255-4e71-b230-48523a4859bf + +> Requirements: Same as Topic Search - `OPENAI_BASE_URL`, `OPENAI_API_KEY`, Python deps `numpy`, `hnswlib` + +### Flatten Folder +New feature to move all files from subfolders to the current folder with conflict detection. + + ## 2026-02-01 ### Drag-and-drop into folders and safer move/copy @@ -654,6 +691,42 @@ Triggered under the same circumstances as above, there will be a button to updat # 中文 +## 2026-02-17 +### 🗂️ 智能整理 - AI 驱动的文件整理 + +使用 AI 自动将零散图片整理到有意义的文件夹中。 + +**功能特性:** +- **语义聚类**:基于 AI 向量化技术,自动将语义相似的图片分组 +- **智能命名**:AI 自动生成有意义的文件夹名称,支持多语言 +- **预览确认**:执行前可预览整理方案,支持跳过或调整特定分组 +- **后台处理**:大文件夹在后台异步处理,不影响继续使用 +- **灵活配置**:支持移动/复制、设置最小聚类大小、递归处理子文件夹 + +**使用方法:** +1. 进入需要整理的文件夹 +2. 点击地址栏中的「智能整理」按钮 +3. 在弹窗中配置选项 +4. 等待 AI 分析(向量化 → 聚类 → 生成标题) +5. 预览整理方案 - 鼠标悬停文件名可查看缩略图 +6. 确认执行 + +智能整理配置弹窗 + +智能整理生成标题 + +智能整理预览 + +智能整理预览列表 + +https://github.com/user-attachments/assets/c1279556-d255-4e71-b230-48523a4859bf + +> 前置条件:与自然语言搜索相同 - `OPENAI_BASE_URL`、`OPENAI_API_KEY`、Python 依赖 `numpy`、`hnswlib` + +### 压平文件夹 +新功能:将所有子文件夹中的文件移动到当前文件夹,支持文件名冲突检测。 + + ## 2026-02-01 ### 支持拖拽到文件夹与更安全的移动/复制 - 支持拖拽文件到文件夹,并修复右侧打开文件夹与界面细节。 diff --git a/docs/imgs/smart-organize-config-modal.png b/docs/imgs/smart-organize-config-modal.png new file mode 100644 index 0000000..a5e6806 Binary files /dev/null and b/docs/imgs/smart-organize-config-modal.png differ diff --git a/docs/imgs/smart-organize-generate-title.png b/docs/imgs/smart-organize-generate-title.png new file mode 100644 index 0000000..439d73c Binary files /dev/null and b/docs/imgs/smart-organize-generate-title.png differ diff --git a/docs/imgs/smart-organize-preview-list.png b/docs/imgs/smart-organize-preview-list.png new file mode 100644 index 0000000..872f701 Binary files /dev/null and b/docs/imgs/smart-organize-preview-list.png differ diff --git a/docs/imgs/smart-organize-preview.png b/docs/imgs/smart-organize-preview.png new file mode 100644 index 0000000..67029e2 Binary files /dev/null and b/docs/imgs/smart-organize-preview.png differ diff --git a/javascript/index.js b/javascript/index.js index 572ec9a..82132d8 100644 --- a/javascript/index.js +++ b/javascript/index.js @@ -13,8 +13,8 @@ Promise.resolve().then(async () => { Infinite Image Browsing - - + + diff --git a/scripts/iib/api.py b/scripts/iib/api.py index 8ef73ae..8865604 100644 --- a/scripts/iib/api.py +++ b/scripts/iib/api.py @@ -63,6 +63,7 @@ from scripts.iib.db.datamodel import ( from scripts.iib.db.update_image_data import update_image_data, rebuild_image_index, add_image_data_single from scripts.iib.topic_cluster import mount_topic_cluster_routes from scripts.iib.tag_graph import mount_tag_graph_routes +from scripts.iib.organize_files import mount_organize_routes from scripts.iib.logger import logger from scripts.iib.seq import seq import urllib.parse @@ -942,6 +943,111 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs): check_path_trust(req.path) open_file_with_default_app(req.path) + # ========== Flatten Folder API ========== + + class FlattenFolderReq(BaseModel): + folder_path: str + dry_run: bool = True # If True, only check for conflicts without moving + + class FlattenFolderResp(BaseModel): + success: bool + total_files: int + conflicts: List[str] # List of duplicate file names + moved_files: int = 0 + errors: List[str] = [] + + @app.post( + api_base + "/flatten_folder", + dependencies=[Depends(verify_secret), Depends(write_permission_required)], + ) + async def flatten_folder(req: FlattenFolderReq): + """ + Flatten a folder by moving all files from subfolders to the root folder. + Two phases: + 1. dry_run=True: Scan and check for filename conflicts + 2. dry_run=False: Actually move the files + """ + check_path_trust(req.folder_path) + folder_path = os.path.normpath(req.folder_path) + + if not os.path.isdir(folder_path): + raise HTTPException(400, detail=f"Not a folder: {folder_path}") + + # Collect all files recursively + all_files = [] # List of (full_path, filename) + for root, dirs, files in os.walk(folder_path): + # Skip the root folder itself + if root == folder_path: + continue + for f in files: + if is_media_file(f): + full_path = os.path.join(root, f) + all_files.append((full_path, f)) + + # Check for filename conflicts + filename_count = {} + for _, filename in all_files: + filename_count[filename] = filename_count.get(filename, 0) + 1 + + conflicts = [name for name, count in filename_count.items() if count > 1] + + if req.dry_run: + return FlattenFolderResp( + success=len(conflicts) == 0, + total_files=len(all_files), + conflicts=conflicts + ) + + # If not dry_run, check for conflicts first + if conflicts: + raise HTTPException( + 400, + detail=f"Cannot flatten: {len(conflicts)} filename conflicts found" + ) + + # Actually move files + conn = DataBase.get_conn() + moved_count = 0 + errors = [] + + for full_path, filename in all_files: + try: + dest_path = os.path.join(folder_path, filename) + + # Move the file + shutil.move(full_path, dest_path) + + # Update database + img = DbImg.get(conn, full_path) + if img: + img.update_path(conn, dest_path, force=True) + + # Move associated txt file if exists + txt_path = get_img_geninfo_txt_path(full_path) + if txt_path and os.path.exists(txt_path): + txt_dest = os.path.join(folder_path, os.path.basename(txt_path)) + shutil.move(txt_path, txt_dest) + + moved_count += 1 + except Exception as e: + errors.append(f"{full_path}: {str(e)}") + + # Clean up empty directories + for root, dirs, files in os.walk(folder_path, topdown=False): + if root != folder_path: + try: + if not os.listdir(root): # Directory is empty + os.rmdir(root) + except Exception: + pass + + return FlattenFolderResp( + success=len(errors) == 0, + total_files=len(all_files), + conflicts=[], + moved_files=moved_count, + errors=errors + ) @app.post( api_base + "/batch_top_4_media_info", @@ -1281,7 +1387,7 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs): # ===== 主题聚类 / Embedding(拆分到独立模块,减少 api.py 体积)===== - mount_topic_cluster_routes( + topic_cluster_funcs = mount_topic_cluster_routes( app=app, db_api_base=db_api_base, verify_secret=verify_secret, @@ -1303,6 +1409,16 @@ def infinite_image_browsing_api(app: FastAPI, **kwargs): openai_api_key=OPENAI_API_KEY, ) + # ===== 智能文件整理 ===== + mount_organize_routes( + app=app, + db_api_base=db_api_base, + verify_secret=verify_secret, + write_permission_required=write_permission_required, + start_cluster_job_func=topic_cluster_funcs["start_cluster_job"], + get_cluster_job_status_func=topic_cluster_funcs["get_cluster_job_status"], + ) + class ExtraPathModel(BaseModel): path: str diff --git a/scripts/iib/organize_files.py b/scripts/iib/organize_files.py new file mode 100644 index 0000000..4b410f4 --- /dev/null +++ b/scripts/iib/organize_files.py @@ -0,0 +1,682 @@ +""" +Smart file organization based on topic clustering. +Organizes scattered image files into folders based on semantic clustering. +""" + +import os +import uuid +import asyncio +import threading +import time +import shutil +from typing import Dict, List, Optional, Callable, Any +from collections import defaultdict +from pydantic import BaseModel +from fastapi import FastAPI, Depends, HTTPException + +from scripts.iib.logger import logger +from scripts.iib.db.datamodel import DataBase, Image as DbImg +from scripts.iib.tool import get_img_geninfo_txt_path, is_media_file + + +# ========== Job Storage ========== + +_ORGANIZE_JOBS: Dict[str, Dict] = {} +_ORGANIZE_JOBS_LOCK = threading.Lock() +_ORGANIZE_JOBS_MAX = 16 + + +def _job_now() -> float: + return time.time() + + +def _organize_job_get(job_id: str) -> Optional[Dict]: + with _ORGANIZE_JOBS_LOCK: + j = _ORGANIZE_JOBS.get(job_id) + return dict(j) if isinstance(j, dict) else None + + +def _organize_job_upsert(job_id: str, patch: Dict) -> None: + with _ORGANIZE_JOBS_LOCK: + cur = _ORGANIZE_JOBS.get(job_id) + if not isinstance(cur, dict): + cur = {"job_id": job_id} + cur.update(patch or {}) + cur["updated_at"] = _job_now() + _ORGANIZE_JOBS[job_id] = cur + _organize_job_trim() + + +def _organize_job_trim() -> None: + with _ORGANIZE_JOBS_LOCK: + if len(_ORGANIZE_JOBS) <= _ORGANIZE_JOBS_MAX: + return + items = sorted( + _ORGANIZE_JOBS.items(), + key=lambda kv: kv[1].get("updated_at", 0), + reverse=True + ) + keep = dict(items[:_ORGANIZE_JOBS_MAX]) + _ORGANIZE_JOBS.clear() + _ORGANIZE_JOBS.update(keep) + + +# ========== Request/Response Models ========== + +class OrganizeFilesReq(BaseModel): + folder_paths: List[str] + dest_folder: Optional[str] = None + threshold: float = 0.90 + min_cluster_size: int = 2 + lang: str = "en" + recursive: bool = False # If True, treat all files in subfolders as files to organize + + # Folder naming options + folder_naming: str = "title" # "title" | "keywords" | "id" + max_folder_name_length: int = 50 + + # Operation options + action: str = "move" # "move" | "copy" + handle_noise: str = "unsorted" # "skip" | "unsorted" | "leave" + noise_folder_name: str = "未分类" + + +class OrganizeFolderEdit(BaseModel): + cluster_id: str + new_folder_name: str + + +class OrganizeFilesConfirmReq(BaseModel): + job_id: str + folder_edits: Optional[List[OrganizeFolderEdit]] = None + skip_cluster_ids: Optional[List[str]] = None + + +# ========== Utility Functions ========== + +def _sanitize_folder_name(name: str, max_len: int = 50) -> str: + """Sanitize folder name, remove illegal characters but keep spaces for readability.""" + if not name: + return "cluster" + + import re + + # Remove illegal characters for Windows/Unix + illegal = r'<>:"/\|?*' + for c in illegal: + name = name.replace(c, ' ') + + # Remove leading/trailing spaces and dots + name = name.strip(' .') + + # Replace multiple consecutive spaces with single space (keep spaces, don't convert to underscore) + name = re.sub(r'\s+', ' ', name) + + # Truncate + if len(name) > max_len: + name = name[:max_len].rstrip(' ._') + + return name or "cluster" + + +def _generate_folder_name( + cluster: Dict, + naming: str, + existing_disk_names: set, + max_len: int +) -> str: + """ + Generate folder name for a cluster (without uniqueness check). + + Args: + cluster: cluster info dict + naming: naming strategy ("title" | "keywords" | "id") + existing_disk_names: set of folder names already existing on disk (case-insensitive, for merging) + max_len: max folder name length + + Returns: + folder name string + + Note: This function may return the same name for different clusters. + The caller (_build_file_mappings) is responsible for merging clusters with the same name. + """ + if naming == "title": + base = cluster.get("title", "") or f"cluster_{cluster.get('id', '')}" + elif naming == "keywords": + kws = cluster.get("keywords", [])[:3] + base = "_".join(kws) if kws else f"cluster_{cluster.get('id', '')}" + else: # id + base = f"cluster_{cluster.get('id', '')}" + + base = _sanitize_folder_name(base, max_len) + + # Check if this name matches an existing folder on disk (case-insensitive) + # If so, use the disk name (preserving case) for merging + existing_disk_lower_map = {n.lower(): n for n in existing_disk_names} + if base.lower() in existing_disk_lower_map: + return existing_disk_lower_map[base.lower()] + + return base + + +def _build_file_mappings( + cluster_result: Dict, + dest_folder: str, + folder_naming: str, + max_len: int, + handle_noise: str, + noise_folder_name: str +) -> Dict: + """ + Build file mappings from cluster result. + Returns: {clusters, noise, all_mappings} + + Note: Clusters with the same generated folder name will be merged into one. + """ + # Get existing folder names on disk (for merge detection) + existing_disk_names = set() + if os.path.isdir(dest_folder): + for item in os.listdir(dest_folder): + item_path = os.path.join(dest_folder, item) + if os.path.isdir(item_path): + existing_disk_names.add(item) + + all_mappings = [] + + # First pass: generate folder names and group clusters by folder name + # This merges clusters that would end up with the same folder name + folder_to_clusters: Dict[str, Dict] = {} # folder_name -> merged cluster info + + for cluster in cluster_result.get("clusters", []): + folder_name = _generate_folder_name(cluster, folder_naming, existing_disk_names, max_len) + + if folder_name in folder_to_clusters: + # Merge into existing + existing = folder_to_clusters[folder_name] + existing["paths"].extend(cluster.get("paths", [])) + existing["cluster_ids"].append(cluster["id"]) + # Merge keywords (dedupe) + for kw in cluster.get("keywords", []): + if kw not in existing["keywords"]: + existing["keywords"].append(kw) + else: + # New folder + folder_to_clusters[folder_name] = { + "folder_name": folder_name, + "title": cluster.get("title", ""), + "keywords": list(cluster.get("keywords", [])), + "paths": list(cluster.get("paths", [])), + "cluster_ids": [cluster["id"]], + } + + # Second pass: build file mappings from merged clusters + clusters_preview = [] + for folder_name, merged in folder_to_clusters.items(): + file_mappings = [] + # Use first cluster_id as the main id, or combine them + cluster_id = merged["cluster_ids"][0] if len(merged["cluster_ids"]) == 1 else "_".join(merged["cluster_ids"]) + + for path in merged["paths"]: + filename = os.path.basename(path) + dest_path = os.path.join(dest_folder, folder_name, filename) + mapping = { + "src_path": path, + "dest_folder_name": folder_name, + "dest_path": dest_path, + "cluster_id": cluster_id, + "is_noise": False + } + file_mappings.append(mapping) + all_mappings.append(mapping) + + clusters_preview.append({ + "cluster_id": cluster_id, + "suggested_folder_name": folder_name, + "title": merged["title"], + "keywords": merged["keywords"], + "size": len(file_mappings), + "file_mappings": file_mappings + }) + + # Process noise files + noise_mappings = [] + noise_paths = cluster_result.get("noise", []) + noise_folder = "" + + if handle_noise == "unsorted" and noise_paths: + # Put into "unsorted" folder + noise_folder_base = _sanitize_folder_name(noise_folder_name, max_len) + + # Check if noise folder already exists on disk (merge into it) + existing_disk_lower_map = {n.lower(): n for n in existing_disk_names} + if noise_folder_base.lower() in existing_disk_lower_map: + # Use existing folder name (case-preserved) + noise_folder = existing_disk_lower_map[noise_folder_base.lower()] + else: + # Check if it conflicts with a cluster folder name + used_folder_names = set(folder_to_clusters.keys()) + used_lower_map = {n.lower(): n for n in used_folder_names} + if noise_folder_base.lower() in used_lower_map: + # Merge into the cluster folder (or add suffix to avoid confusion) + # For noise, we add suffix to avoid mixing with clustered files + noise_folder = noise_folder_base + counter = 1 + while noise_folder.lower() in used_lower_map or noise_folder.lower() in existing_disk_lower_map: + noise_folder = f"{noise_folder_base}_{counter}" + counter += 1 + else: + noise_folder = noise_folder_base + + for path in noise_paths: + filename = os.path.basename(path) + dest_path = os.path.join(dest_folder, noise_folder, filename) + mapping = { + "src_path": path, + "dest_folder_name": noise_folder, + "dest_path": dest_path, + "cluster_id": "__noise__", + "is_noise": True + } + noise_mappings.append(mapping) + all_mappings.append(mapping) + + elif handle_noise == "leave": + # Keep in original location, don't move + for path in noise_paths: + mapping = { + "src_path": path, + "dest_folder_name": "", + "dest_path": path, # Keep original + "cluster_id": "__noise__", + "is_noise": True + } + noise_mappings.append(mapping) + # Don't add to all_mappings since no move needed + + # "skip": completely ignore noise files + + noise_cluster = { + "cluster_id": "__noise__", + "suggested_folder_name": noise_folder, + "title": "未分类" if noise_folder_name == "未分类" else "Unsorted", + "keywords": [], + "size": len(noise_paths), + "file_mappings": noise_mappings + } + + return { + "clusters": clusters_preview, + "noise": noise_cluster, + "all_mappings": all_mappings + } + + +# ========== Route Mounting ========== + +def mount_organize_routes( + app: FastAPI, + db_api_base: str, + verify_secret, + write_permission_required, + # Cluster job functions from topic_cluster + start_cluster_job_func: Callable, + get_cluster_job_status_func: Callable, +): + """Mount file organization routes.""" + + async def _run_organize_job(job_id: str, req: OrganizeFilesReq): + """ + Background task for file organization. + Uses topic_cluster job API internally. + """ + try: + logger.info(f"[organize_files][{job_id}] Starting organize job") + + _organize_job_upsert(job_id, { + "status": "running", + "progress": { + "stage": "clustering", + "embedded_done": 0, + "to_embed": 0, + "clusters_done": 0, + "clusters_total": 0, + "moved_done": 0, + "moved_total": 0, + "current_file": "", + "created_folders": [], + "errors": [] + } + }) + + # 1. Start cluster job using topic_cluster API + logger.info(f"[organize_files][{job_id}] Starting cluster job (recursive={req.recursive})") + cluster_job_id = await start_cluster_job_func( + folder_paths=req.folder_paths, + threshold=req.threshold, + min_cluster_size=req.min_cluster_size, + lang=req.lang, + recursive=req.recursive, + ) + + # 2. Poll cluster job status until done + logger.info(f"[organize_files][{job_id}] Polling cluster job {cluster_job_id}") + max_wait = 3600 # 1 hour max + start_time = time.time() + poll_interval = 0.5 + + while True: + if time.time() - start_time > max_wait: + raise Exception("Cluster job timeout") + + cluster_status = await get_cluster_job_status_func(cluster_job_id) + status = cluster_status.get("status", "") + stage = cluster_status.get("stage", "") + progress = cluster_status.get("progress", {}) + + # Update organize job progress based on cluster job + _organize_job_upsert(job_id, { + "progress": { + "stage": stage, + "embedded_done": progress.get("embedded_done", 0), + "to_embed": progress.get("to_embed", 0), + "clusters_done": progress.get("clusters_done", 0), + "clusters_total": progress.get("clusters_total", 0), + "moved_done": 0, + "moved_total": 0, + "current_file": "", + "created_folders": [], + "errors": [] + } + }) + + if status == "done": + cluster_result = cluster_status.get("result", {}) + break + elif status == "error": + raise Exception(f"Cluster job failed: {cluster_status.get('error', 'Unknown error')}") + + await asyncio.sleep(poll_interval) + # Increase poll interval gradually + poll_interval = min(poll_interval * 1.2, 2.0) + + # 3. Build file mappings for preview + logger.info(f"[organize_files][{job_id}] Building file mappings") + dest_folder = req.dest_folder or req.folder_paths[0] + dest_folder = os.path.abspath(dest_folder) + + preview_data = _build_file_mappings( + cluster_result, + dest_folder, + req.folder_naming, + req.max_folder_name_length, + req.handle_noise, + req.noise_folder_name + ) + + preview = { + "job_id": job_id, + "dest_folder": dest_folder, + "total_files": len(preview_data["all_mappings"]), + "clusters": preview_data["clusters"], + "noise": preview_data["noise"], + "all_mappings": preview_data["all_mappings"] + } + + _organize_job_upsert(job_id, { + "status": "preview_ready", + "preview": preview, + "progress": { + "stage": "preview_ready", + "embedded_done": 0, + "to_embed": 0, + "clusters_done": len(preview_data["clusters"]), + "clusters_total": len(preview_data["clusters"]), + "moved_done": 0, + "moved_total": 0, + "current_file": "", + "created_folders": [], + "errors": [] + } + }) + + logger.info(f"[organize_files][{job_id}] Preview ready: {len(preview_data['all_mappings'])} files") + + except Exception as e: + import traceback + logger.error(f"[organize_files][{job_id}] Error: {e}") + logger.error(traceback.format_exc()) + _organize_job_upsert(job_id, { + "status": "error", + "error": str(e), + }) + + async def _execute_organize(job_id: str, req: OrganizeFilesConfirmReq): + """ + Execute file organization (move/copy files). + """ + try: + job = _organize_job_get(job_id) + if not job: + return + + original_req = job.get("req", {}) + action = original_req.get("action", "move") + preview = job.get("preview", {}) + all_mappings = list(preview.get("all_mappings", [])) + dest_folder = preview.get("dest_folder", "") + + logger.info(f"[organize_files][{job_id}] Executing organize: action={action}, mappings={len(all_mappings)}") + + # Apply user edits + folder_edits = {} + for edit in (req.folder_edits or []): + folder_edits[edit.cluster_id] = edit.new_folder_name + + skip_ids = set(req.skip_cluster_ids or []) + + # Filter and update mappings + final_mappings = [] + + for m in all_mappings: + # Skip if cluster is skipped + if m["cluster_id"] in skip_ids: + continue + + # Apply folder name edits + if m["cluster_id"] in folder_edits: + new_name = _sanitize_folder_name(folder_edits[m["cluster_id"]]) + m["dest_folder_name"] = new_name + m["dest_path"] = os.path.join(dest_folder, new_name, os.path.basename(m["src_path"])) + + # Skip files that don't need moving (same src and dest) + if m["dest_path"] != m["src_path"]: + final_mappings.append(m) + + total = len(final_mappings) + + _organize_job_upsert(job_id, { + "status": "moving", + "progress": { + "stage": "moving", + "moved_total": total, + "moved_done": 0, + "current_file": "", + "created_folders": [], + "errors": [] + } + }) + + # Group by destination folder + by_dest: Dict[str, List[Dict]] = defaultdict(list) + for m in final_mappings: + dest_dir = os.path.dirname(m["dest_path"]) + by_dest[dest_dir].append(m) + + created_folders = [] + errors = [] + moved_done = 0 + + conn = DataBase.get_conn() + + # Execute moves/copies + for dest_dir, mappings in by_dest.items(): + try: + # Update progress + current_folder = os.path.basename(dest_dir) + _organize_job_upsert(job_id, { + "progress": { + "stage": "moving", + "moved_done": moved_done, + "moved_total": total, + "current_file": f"-> {current_folder}/", + "created_folders": created_folders, + "errors": errors + } + }) + + # Create destination folder + if not os.path.exists(dest_dir): + os.makedirs(dest_dir, exist_ok=True) + created_folders.append(dest_dir) + + # Move or copy each file + for m in mappings: + src_path = m["src_path"] + dest_path = m["dest_path"] + + try: + txt_path = get_img_geninfo_txt_path(src_path) + if action == "move": + if txt_path: + shutil.move(txt_path, dest_dir) + img = DbImg.get(conn, src_path) + if img: + img.update_path(conn, dest_path, force=True) + shutil.move(src_path, dest_path) + else: + shutil.copy2(src_path, dest_path) + if txt_path: + shutil.copy2(txt_path, dest_dir) + + moved_done += 1 + + except Exception as e: + errors.append({ + "src": src_path, + "dest": dest_path, + "error": str(e) + }) + logger.error(f"[organize_files][{job_id}] Error moving {src_path}: {e}") + + conn.commit() + logger.info(f"[organize_files][{job_id}] Processed {len(mappings)} files to {dest_dir}") + + except Exception as e: + conn.rollback() + error_info = {"dest": dest_dir, "count": len(mappings), "error": str(e)} + errors.append(error_info) + logger.error(f"[organize_files][{job_id}] Error with folder {dest_dir}: {e}") + + # Yield control + await asyncio.sleep(0) + + # Done + _organize_job_upsert(job_id, { + "status": "done", + "progress": { + "stage": "done", + "moved_done": moved_done, + "moved_total": total, + "current_file": "", + "created_folders": created_folders, + "errors": errors + }, + "result": { + "moved_count": moved_done, + "created_folders": created_folders, + "errors": errors + } + }) + + logger.info(f"[organize_files][{job_id}] Completed: moved {moved_done} files to {len(created_folders)} folders") + + except Exception as e: + import traceback + logger.error(f"[organize_files][{job_id}] Execute error: {e}") + logger.error(traceback.format_exc()) + _organize_job_upsert(job_id, { + "status": "error", + "error": str(e), + }) + + @app.post( + f"{db_api_base}/organize_files_start", + dependencies=[Depends(verify_secret), Depends(write_permission_required)], + ) + async def organize_files_start(req: OrganizeFilesReq): + """ + Start file organization task (background). + Returns job_id for progress polling. + """ + # Validate folders + folders = [] + for p in req.folder_paths: + if isinstance(p, str) and p.strip(): + folders.append(os.path.normpath(p.strip())) + + if not folders: + raise HTTPException(400, "folder_paths is required") + + for f in folders: + if not os.path.exists(f) or not os.path.isdir(f): + raise HTTPException(400, f"Folder not found: {f}") + + # Update req with normalized folders + req.folder_paths = folders + + job_id = uuid.uuid4().hex + _organize_job_upsert(job_id, { + "status": "queued", + "req": req.dict(), + "created_at": _job_now() + }) + + asyncio.create_task(_run_organize_job(job_id, req)) + + logger.info(f"[organize_files] Started job {job_id} for folders: {folders}") + return {"job_id": job_id} + + @app.get( + f"{db_api_base}/organize_files_status", + dependencies=[Depends(verify_secret)], + ) + async def organize_files_status(job_id: str): + """ + Query task status and progress. + Status flow: queued -> running -> preview_ready -> (confirm) -> moving -> done + """ + job = _organize_job_get(job_id) + if not job: + raise HTTPException(404, "Job not found") + return job + + @app.post( + f"{db_api_base}/organize_files_confirm", + dependencies=[Depends(verify_secret), Depends(write_permission_required)], + ) + async def organize_files_confirm(req: OrganizeFilesConfirmReq): + """ + Confirm and execute file organization. + - Can modify folder names via folder_edits + - Can skip clusters via skip_cluster_ids + """ + job = _organize_job_get(req.job_id) + if not job: + raise HTTPException(404, "Job not found") + + if job.get("status") != "preview_ready": + raise HTTPException(400, f"Job not ready for confirmation, current status: {job.get('status')}") + + asyncio.create_task(_execute_organize(req.job_id, req)) + + return {"ok": True, "job_id": req.job_id} diff --git a/scripts/iib/tool.py b/scripts/iib/tool.py index e2fa247..c0029c2 100755 --- a/scripts/iib/tool.py +++ b/scripts/iib/tool.py @@ -896,10 +896,11 @@ def accumulate_streaming_response(resp: requests.Response) -> str: delta = (obj.get('choices') or [{}])[0].get('delta') or {} chunk_text = delta.get('content') or '' if chunk_text: - # try: - # print(f"[streaming] chunk_received len={len(chunk_text)} snippet={chunk_text[:200]}") - # except Exception: - # pass + try: + if is_dev: + print(f"[streaming] chunk_received len={len(chunk_text)} snippet={chunk_text[:200]}") + except Exception: + pass content_buffer += chunk_text return content_buffer.strip() \ No newline at end of file diff --git a/scripts/iib/topic_cluster.py b/scripts/iib/topic_cluster.py index a384722..503d532 100644 --- a/scripts/iib/topic_cluster.py +++ b/scripts/iib/topic_cluster.py @@ -157,6 +157,12 @@ def _job_get(job_id: str) -> Optional[Dict]: return dict(j) if isinstance(j, dict) else None +# Export for use by other modules (e.g., organize_files) +def get_cluster_job_status(job_id: str) -> Optional[Dict]: + """Public function to get cluster job status.""" + return _job_get(job_id) + + def _job_upsert(job_id: str, patch: Dict) -> None: with _TOPIC_CLUSTER_JOBS_LOCK: cur = _TOPIC_CLUSTER_JOBS.get(job_id) @@ -934,6 +940,7 @@ def mount_topic_cluster_routes( force: bool, batch_size: int, max_chars: int, + recursive: bool = True, progress_cb: Optional[Callable[[Dict], None]] = None, ) -> Dict: """ @@ -941,10 +948,13 @@ def mount_topic_cluster_routes( Progress payload (best-effort): - stage: "embedding" - folder, scanned, to_embed, embedded_done, updated, skipped + + Args: + recursive: If True, include files in subfolders. Default True for backward compatibility. """ logger.info("[build_embeddings] === _build_embeddings_one_folder START ===") - logger.info("[build_embeddings] folder=%s model=%s force=%s batch_size=%s max_chars=%s", - folder, model, force, batch_size, max_chars) + logger.info("[build_embeddings] folder=%s model=%s force=%s batch_size=%s max_chars=%s recursive=%s", + folder, model, force, batch_size, max_chars, recursive) if not openai_api_key: logger.error("[build_embeddings] OpenAI API Key not configured") @@ -970,6 +980,14 @@ def mount_topic_cluster_routes( cur.execute("SELECT id, path, exif FROM image WHERE path LIKE ?", (like_prefix,)) rows = cur.fetchall() + # Filter to direct children only if not recursive + if not recursive: + def is_direct_child(path: str) -> bool: + parent_dir = os.path.dirname(path) + return os.path.normpath(parent_dir) == os.path.normpath(folder) + rows = [r for r in rows if is_direct_child(r[1])] + logger.info("[build_embeddings] Filtered to direct children: %d files", len(rows)) + images = [] for image_id, path, exif in rows: if not isinstance(path, str) or not os.path.exists(path): @@ -1165,6 +1183,8 @@ def mount_topic_cluster_routes( force: Optional[bool] = False batch_size: Optional[int] = 64 max_chars: Optional[int] = 4000 + # If True, recursively scan subfolders; default True for backward compatibility + recursive: Optional[bool] = True @app.post( f"{db_api_base}/build_iib_output_embeddings", @@ -1182,12 +1202,14 @@ def mount_topic_cluster_routes( batch_size = max(1, min(int(req.batch_size or 64), 256)) max_chars = max(256, min(int(req.max_chars or 4000), 8000)) force = bool(req.force) + recursive = bool(req.recursive) if req.recursive is not None else True return await _build_embeddings_one_folder( folder=folder, model=model, force=force, batch_size=batch_size, max_chars=max_chars, + recursive=recursive, progress_cb=None, ) @@ -1210,6 +1232,8 @@ def mount_topic_cluster_routes( force_title: Optional[bool] = False # Output language for titles/keywords (from frontend globalStore.lang) lang: Optional[str] = None + # If True, recursively scan subfolders; default True for Topic Search (backward compatible) + recursive: Optional[bool] = True def _scope_cache_stale_by_folders(conn: Connection, folders: List[str]) -> Dict: """ @@ -1409,6 +1433,9 @@ def mount_topic_cluster_routes( logger.info("[cluster_after] use_title_cache=%s force_title=%s", use_title_cache, force_title) + recursive = bool(req.recursive) if req.recursive is not None else False + logger.info("[cluster_after] recursive=%s", recursive) + if progress_cb: logger.info("[cluster_after] Calling progress callback with clustering stage") progress_cb({"stage": "clustering", "folder": folder, "folders": folders}) @@ -1426,6 +1453,17 @@ def mount_topic_cluster_routes( ) rows = cur.fetchall() + # Filter to direct children only if not recursive + if not recursive: + def is_direct_child(path: str, folders: List[str]) -> bool: + for f in folders: + parent_dir = os.path.dirname(path) + if os.path.normpath(parent_dir) == os.path.normpath(f): + return True + return False + rows = [r for r in rows if is_direct_child(r[1], folders)] + logger.info("[cluster_after] Filtered to direct children: %d files", len(rows)) + items = [] for n, (image_id, path, exif, vec_blob) in enumerate(rows): if not isinstance(path, str) or not os.path.exists(path): @@ -1608,31 +1646,50 @@ def mount_topic_cluster_routes( sorted_keywords = sorted(keyword_frequency.items(), key=lambda x: x[1], reverse=True) return [k for k, v in sorted_keywords[:100]] + # Separate clusters that need LLM title from those that are too small (noise) + clusters_to_title = [] for cidx, c in enumerate(clusters): if len(c["members"]) < min_cluster_size: for mi in c["members"]: noise.append(items[mi]["path"]) - continue + else: + member_items = [items[mi] for mi in c["members"]] + paths = [x["path"] for x in member_items] + texts = [x.get("text") or "" for x in member_items] + member_ids = [x["id"] for x in member_items] + rep = (c.get("sample_text") or (texts[0] if texts else "")).strip() + cluster_hash = _cluster_sig( + member_ids=member_ids, + model=model, + threshold=threshold, + min_cluster_size=min_cluster_size, + title_model=title_model, + lang=output_lang, + ) + clusters_to_title.append({ + "cidx": cidx, + "paths": paths, + "texts": texts, + "rep": rep, + "cluster_hash": cluster_hash, + }) - member_items = [items[mi] for mi in c["members"]] - paths = [x["path"] for x in member_items] - texts = [x.get("text") or "" for x in member_items] - member_ids = [x["id"] for x in member_items] + # Process LLM titles concurrently in batches + LLM_CONCURRENCY = 5 # Number of concurrent LLM requests + completed_count = [0] # Use list for closure mutation - # Representative prompt for LLM title generation - rep = (c.get("sample_text") or (texts[0] if texts else "")).strip() + async def process_cluster_title(cluster_info: dict) -> dict: + cidx = cluster_info["cidx"] + paths = cluster_info["paths"] + texts = cluster_info["texts"] + rep = cluster_info["rep"] + cluster_hash = cluster_info["cluster_hash"] + # Check cache first cached = None - cluster_hash = _cluster_sig( - member_ids=member_ids, - model=model, - threshold=threshold, - min_cluster_size=min_cluster_size, - title_model=title_model, - lang=output_lang, - ) if use_title_cache and (not force_title): cached = TopicTitleCache.get(conn, cluster_hash) + if cached and isinstance(cached, dict) and cached.get("title"): title = str(cached.get("title")) keywords = cached.get("keywords") or [] @@ -1657,23 +1714,37 @@ def mount_topic_cluster_routes( except Exception: pass - for kw in keywords or []: - keyword_frequency[kw] = keyword_frequency.get(kw, 0) + 1 + # Update progress + completed_count[0] += 1 + if progress_cb: + progress_cb({"stage": "titling", "clusters_total": len(clusters_to_title), "clusters_done": completed_count[0]}) - out_clusters.append( - { - "id": f"topic_{cidx}", - "title": title, - "keywords": keywords, - "size": len(paths), - "paths": paths, - "sample_prompt": _clean_for_title(rep)[:200], - } - ) - if (cidx + 1) % 6 == 0: - if progress_cb: - progress_cb({"stage": "titling", "clusters_total": len(clusters), "clusters_done": cidx + 1}) - await asyncio.sleep(0) + return { + "id": f"topic_{cidx}", + "title": title, + "keywords": keywords, + "size": len(paths), + "paths": paths, + "sample_prompt": _clean_for_title(rep)[:200], + } + + # Use semaphore to limit concurrency + semaphore = asyncio.Semaphore(LLM_CONCURRENCY) + + async def process_with_semaphore(cluster_info: dict) -> dict: + async with semaphore: + return await process_cluster_title(cluster_info) + + # Run all title generations concurrently (limited by semaphore) + if clusters_to_title: + logger.info(f"[cluster_after] Processing {len(clusters_to_title)} clusters with concurrency={LLM_CONCURRENCY}") + tasks = [process_with_semaphore(c) for c in clusters_to_title] + out_clusters = await asyncio.gather(*tasks) + + # Update keyword frequency from results + for cluster in out_clusters: + for kw in cluster.get("keywords") or []: + keyword_frequency[kw] = keyword_frequency.get(kw, 0) + 1 out_clusters.sort(key=lambda x: x["size"], reverse=True) return { @@ -1862,4 +1933,44 @@ def mount_topic_cluster_routes( # We intentionally do NOT keep the legacy synchronous `/cluster_iib_output` endpoint. # The UI should use `/cluster_iib_output_job_start` + `/cluster_iib_output_job_status` only. + # Return internal functions for use by other modules (e.g., organize_files) + async def start_cluster_job_for_organize( + folder_paths: List[str], + threshold: float = 0.90, + min_cluster_size: int = 2, + lang: str = "en", + recursive: bool = False, + ) -> str: + """ + Start a cluster job and return job_id. + This is a wrapper for organize_files to use. + """ + _ensure_perf_deps() + req = ClusterIibOutputReq( + folder_paths=folder_paths, + threshold=threshold, + min_cluster_size=min_cluster_size, + lang=lang, + recursive=recursive, + ) + job_id = uuid.uuid4().hex + _job_upsert(job_id, {"status": "queued", "stage": "queued", "created_at": _job_now()}) + asyncio.create_task(_run_cluster_job(job_id, req)) + return job_id + + async def get_cluster_job_status_for_organize(job_id: str) -> Dict: + """ + Get cluster job status. + This is a wrapper for organize_files to use. + """ + j = _job_get(job_id) + if not j: + return {"status": "not_found", "error": "job not found"} + return j + + return { + "start_cluster_job": start_cluster_job_for_organize, + "get_cluster_job_status": get_cluster_job_status_for_organize, + } + diff --git a/vue/components.d.ts b/vue/components.d.ts index d1af34f..d8b6df0 100644 --- a/vue/components.d.ts +++ b/vue/components.d.ts @@ -33,6 +33,7 @@ declare module '@vue/runtime-core' { AMenuItem: typeof import('ant-design-vue/es')['MenuItem'] AModal: typeof import('ant-design-vue/es')['Modal'] AProgress: typeof import('ant-design-vue/es')['Progress'] + ARadio: typeof import('ant-design-vue/es')['Radio'] ARadioButton: typeof import('ant-design-vue/es')['RadioButton'] ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup'] ARow: typeof import('ant-design-vue/es')['Row'] @@ -57,7 +58,9 @@ declare module '@vue/runtime-core' { HistoryRecord: typeof import('./src/components/HistoryRecord.vue')['default'] MultiSelectKeep: typeof import('./src/components/MultiSelectKeep.vue')['default'] NumInput: typeof import('./src/components/numInput.vue')['default'] + OrganizeJobsPanel: typeof import('./src/components/OrganizeJobsPanel.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + SmartOrganizeConfigModal: typeof import('./src/components/SmartOrganizeConfigModal.vue')['default'] } } diff --git a/vue/dist/assets/FileItem-0881fad3.css b/vue/dist/assets/FileItem-0881fad3.css deleted file mode 100644 index a2a9577..0000000 --- a/vue/dist/assets/FileItem-0881fad3.css +++ /dev/null @@ -1 +0,0 @@ -.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.changeIndicators[data-v-78cd67a3]{position:absolute;display:flex;flex-direction:column;height:100%;align-items:center;justify-content:center;opacity:.6}.changeIndicatorsRight[data-v-78cd67a3]{position:absolute;right:0}.changeIndicator[data-v-78cd67a3]{margin-left:-4px;width:16px;height:16px;border-radius:2px;border:1px solid rgba(255,255,255,.2);background-color:gray;line-height:16px;margin-bottom:2px;text-align:center;font-size:6pt;font-weight:600;color:#000;z-index:9999;pointer-events:auto;box-shadow:0 0 4px #00000080}.changeIndicatorsRight .changeIndicator[data-v-78cd67a3]{margin-right:-4px;border-top-right-radius:8px;border-bottom-right-radius:8px;text-align:left;padding-left:2px}.changeIndicatorsLeft .changeIndicator[data-v-78cd67a3]{border-top-left-radius:8px;border-bottom-left-radius:8px;text-align:right;padding-right:2px}.changeIndicatorWrapper[data-v-78cd67a3]{top:0;position:absolute;user-select:none;width:100%;height:100%;z-index:999999;pointer-events:none}.hoverOverlay[data-v-78cd67a3]{display:none;background-color:#000c;color:#fff;border:1px solid gray;padding:10px 20px;border-radius:5px;z-index:100;opacity:1;font-size:8pt;line-height:1.2;overflow:hidden}.hoverOverlay ul[data-v-78cd67a3]{list-style:none;padding:0}.hoverOverlay ul li[data-v-78cd67a3]{display:inline-block;padding-left:4px;padding-right:4px;border:1px solid gray;border-radius:2px;margin:1px;font-weight:200}.changeIndicators[data-v-78cd67a3]:hover{opacity:1}.changeIndicators:hover+div.hoverOverlay[data-v-78cd67a3]{display:block;position:absolute;top:0;left:0;width:100%;height:100%}table tr td:first-child span[data-v-78cd67a3]{padding:1px 3px;display:inline-block;width:100%}table tr td[data-v-78cd67a3]:first-child{padding-right:10px;vertical-align:top}.otherChangeIndicator[data-v-78cd67a3]{background-color:#8b5b8e;color:#efefef}.stepsChangeIndicator[data-v-78cd67a3]{background-color:#577ab8;color:#efefef}.seedChangeIndicator[data-v-78cd67a3]{background-color:#649da3;color:#121}.negpromptChangeIndicator[data-v-78cd67a3]{background-color:#d8a390;color:#2f2f2f}.modelChangeIndicator[data-v-78cd67a3]{background-color:#d68679;color:#efefef}.promptChangeIndicator[data-v-78cd67a3]{background-color:#8fba99;color:#121}.cfgChangeIndicator[data-v-78cd67a3]{background-color:#d4c98f;color:#121}.sizeChangeIndicator[data-v-78cd67a3]{background-color:#678a6c;color:#efefef}.center[data-v-d7ac6541]{display:flex;justify-content:center;align-items:center}.item-content[data-v-d7ac6541]{position:relative}.item-content.video[data-v-d7ac6541]{background-color:var(--zp-border);border-radius:8px;overflow:hidden;width:var(--21801204);height:var(--21801204);background-size:cover;background-position:center;cursor:pointer}.item-content.audio[data-v-d7ac6541]{background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);border-radius:8px;overflow:hidden;width:var(--21801204);height:var(--21801204);display:flex;align-items:center;justify-content:center;cursor:pointer}.item-content.audio .audio-icon[data-v-d7ac6541]{font-size:48px}.item-content .play-icon[data-v-d7ac6541]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:100%;display:flex}.item-content .tags-container[data-v-d7ac6541]{position:absolute;right:8px;bottom:8px;display:flex;width:calc(100% - 16px);flex-wrap:wrap-reverse;flex-direction:row-reverse}.item-content .tags-container>*[data-v-d7ac6541]{margin:0 0 4px 4px;font-size:14px;line-height:1.6}.close-icon[data-v-d7ac6541]{position:absolute;top:0;right:0;transform:translate(50%,-50%) scale(1.5);cursor:pointer;z-index:100;border-radius:100%;overflow:hidden;line-height:1;background-color:var(--zp-primary-background)}.file[data-v-d7ac6541]{padding:8px 16px;margin:8px;display:flex;align-items:center;background:var(--zp-primary-background);border-radius:8px;box-shadow:0 0 4px var(--zp-secondary-variant-background);position:relative}.file:hover .more[data-v-d7ac6541]{opacity:1}.file .more[data-v-d7ac6541]{opacity:0;transition:all .3s ease;position:absolute;top:4px;right:4px;z-index:100;display:flex;align-items:center;justify-content:center;flex-direction:column;line-height:1em}.file .more .float-btn-wrap[data-v-d7ac6541]{font-size:1.5em;cursor:pointer;font-size:500;padding:4px;border-radius:100vh;color:#fff;background:var(--zp-icon-bg);margin-bottom:4px}.file .more .float-btn-wrap.like-selected[data-v-d7ac6541]{color:#df0505}.file.grid[data-v-d7ac6541]{padding:0;display:inline-block;box-sizing:content-box;box-shadow:unset;background-color:var(--zp-secondary-background)}.file.grid[data-v-d7ac6541] .icon{font-size:8em}.file.grid[data-v-d7ac6541] .profile{padding:0 4px}.file.grid[data-v-d7ac6541] .profile .name{font-weight:500;padding:0}.file.grid[data-v-d7ac6541] .profile .basic-info{display:flex;justify-content:space-between;flex-direction:row;margin:0;font-size:.7em}.file.grid[data-v-d7ac6541] .profile .basic-info *{white-space:nowrap;overflow:hidden}.file.grid[data-v-d7ac6541] .ant-image,.file.grid[data-v-d7ac6541] .preview-icon-wrap{border:1px solid var(--zp-secondary);background-color:var(--zp-secondary-variant-background);border-radius:8px;overflow:hidden}.file.grid[data-v-d7ac6541] img:not(.dir-cover-item),.file.grid[data-v-d7ac6541] .dir-cover-container,.file.grid[data-v-d7ac6541] .preview-icon-wrap>[role=img]{height:var(--21801204);width:var(--21801204);object-fit:contain}.file.clickable[data-v-d7ac6541]{cursor:pointer}.file.selected[data-v-d7ac6541]{outline:#0084ff solid 2px}.file .name[data-v-d7ac6541]{flex:1;padding:8px;word-break:break-all}.file .basic-info[data-v-d7ac6541]{overflow:hidden;display:flex;flex-direction:column;align-items:flex-end}.file .dir-cover-container[data-v-d7ac6541]{top:0;display:flex;flex-wrap:wrap;padding:4px}.file .dir-cover-container>img[data-v-d7ac6541]{width:calc(50% - 8px);height:calc(50% - 8px);margin:4px;object-fit:cover;border-radius:8px;overflow:hidden} diff --git a/vue/dist/assets/FileItem-353a3123.css b/vue/dist/assets/FileItem-353a3123.css new file mode 100644 index 0000000..b1697bd --- /dev/null +++ b/vue/dist/assets/FileItem-353a3123.css @@ -0,0 +1 @@ +.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.changeIndicators[data-v-4ea1ffe2]{position:absolute;display:flex;flex-direction:column;height:100%;align-items:center;justify-content:center;opacity:.6}.changeIndicatorsRight[data-v-4ea1ffe2]{position:absolute;right:0}.changeIndicator[data-v-4ea1ffe2]{margin-left:-4px;width:16px;height:16px;border-radius:2px;border:1px solid rgba(255,255,255,.2);background-color:gray;line-height:16px;margin-bottom:2px;text-align:center;font-size:6pt;font-weight:600;color:#000;z-index:9999;pointer-events:auto;box-shadow:0 0 4px #00000080}.changeIndicatorsRight .changeIndicator[data-v-4ea1ffe2]{margin-right:-4px;border-top-right-radius:8px;border-bottom-right-radius:8px;text-align:left;padding-left:2px}.changeIndicatorsLeft .changeIndicator[data-v-4ea1ffe2]{border-top-left-radius:8px;border-bottom-left-radius:8px;text-align:right;padding-right:2px}.changeIndicatorWrapper[data-v-4ea1ffe2]{top:0;position:absolute;user-select:none;width:100%;height:100%;z-index:999999;pointer-events:none}.hoverOverlay[data-v-4ea1ffe2]{display:none;background-color:#000c;color:#fff;border:1px solid gray;padding:10px 20px;border-radius:5px;z-index:100;opacity:1;font-size:8pt;line-height:1.2;overflow:hidden}.hoverOverlay ul[data-v-4ea1ffe2]{list-style:none;padding:0}.hoverOverlay ul li[data-v-4ea1ffe2]{display:inline-block;padding-left:4px;padding-right:4px;border:1px solid gray;border-radius:2px;margin:1px;font-weight:200}.changeIndicators[data-v-4ea1ffe2]:hover{opacity:1}.changeIndicators:hover+div.hoverOverlay[data-v-4ea1ffe2]{display:block;position:absolute;top:0;left:0;width:100%;height:100%}table tr td:first-child span[data-v-4ea1ffe2]{padding:1px 3px;display:inline-block;width:100%}table tr td[data-v-4ea1ffe2]:first-child{padding-right:10px;vertical-align:top}.otherChangeIndicator[data-v-4ea1ffe2]{background-color:#8b5b8e;color:#efefef}.stepsChangeIndicator[data-v-4ea1ffe2]{background-color:#577ab8;color:#efefef}.seedChangeIndicator[data-v-4ea1ffe2]{background-color:#649da3;color:#121}.negpromptChangeIndicator[data-v-4ea1ffe2]{background-color:#d8a390;color:#2f2f2f}.modelChangeIndicator[data-v-4ea1ffe2]{background-color:#d68679;color:#efefef}.promptChangeIndicator[data-v-4ea1ffe2]{background-color:#8fba99;color:#121}.cfgChangeIndicator[data-v-4ea1ffe2]{background-color:#d4c98f;color:#121}.sizeChangeIndicator[data-v-4ea1ffe2]{background-color:#678a6c;color:#efefef}.center[data-v-27cbce0c]{display:flex;justify-content:center;align-items:center}.item-content[data-v-27cbce0c]{position:relative}.item-content.video[data-v-27cbce0c]{background-color:var(--zp-border);border-radius:8px;overflow:hidden;width:var(--0163f23c);height:var(--0163f23c);background-size:cover;background-position:center;cursor:pointer}.item-content.audio[data-v-27cbce0c]{background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);border-radius:8px;overflow:hidden;width:var(--0163f23c);height:var(--0163f23c);display:flex;align-items:center;justify-content:center;cursor:pointer}.item-content.audio .audio-icon[data-v-27cbce0c]{font-size:48px}.item-content .play-icon[data-v-27cbce0c]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:100%;display:flex}.item-content .tags-container[data-v-27cbce0c]{position:absolute;right:8px;bottom:8px;display:flex;width:calc(100% - 16px);flex-wrap:wrap-reverse;flex-direction:row-reverse}.item-content .tags-container>*[data-v-27cbce0c]{margin:0 0 4px 4px;font-size:14px;line-height:1.6}.close-icon[data-v-27cbce0c]{position:absolute;top:0;right:0;transform:translate(50%,-50%) scale(1.5);cursor:pointer;z-index:100;border-radius:100%;overflow:hidden;line-height:1;background-color:var(--zp-primary-background)}.file[data-v-27cbce0c]{padding:8px 16px;margin:8px;display:flex;align-items:center;background:var(--zp-primary-background);border-radius:8px;box-shadow:0 0 4px var(--zp-secondary-variant-background);position:relative}.file:hover .more[data-v-27cbce0c]{opacity:1}.file .more[data-v-27cbce0c]{opacity:0;transition:all .3s ease;position:absolute;top:4px;right:4px;z-index:100;display:flex;align-items:center;justify-content:center;flex-direction:column;line-height:1em}.file .more .float-btn-wrap[data-v-27cbce0c]{font-size:1.5em;cursor:pointer;font-size:500;padding:4px;border-radius:100vh;color:#fff;background:var(--zp-icon-bg);margin-bottom:4px}.file .more .float-btn-wrap.like-selected[data-v-27cbce0c]{color:#df0505}.file.grid[data-v-27cbce0c]{padding:0;display:inline-block;box-sizing:content-box;box-shadow:unset;background-color:var(--zp-secondary-background)}.file.grid[data-v-27cbce0c] .icon{font-size:8em}.file.grid[data-v-27cbce0c] .profile{padding:0 4px}.file.grid[data-v-27cbce0c] .profile .name{font-weight:500;padding:0}.file.grid[data-v-27cbce0c] .profile .basic-info{display:flex;justify-content:space-between;flex-direction:row;margin:0;font-size:.7em}.file.grid[data-v-27cbce0c] .profile .basic-info *{white-space:nowrap;overflow:hidden}.file.grid[data-v-27cbce0c] .ant-image,.file.grid[data-v-27cbce0c] .preview-icon-wrap{border:1px solid var(--zp-secondary);background-color:var(--zp-secondary-variant-background);border-radius:8px;overflow:hidden}.file.grid[data-v-27cbce0c] img:not(.dir-cover-item),.file.grid[data-v-27cbce0c] .dir-cover-container,.file.grid[data-v-27cbce0c] .preview-icon-wrap>[role=img]{height:var(--0163f23c);width:var(--0163f23c);object-fit:contain}.file.clickable[data-v-27cbce0c]{cursor:pointer}.file.selected[data-v-27cbce0c]{outline:#0084ff solid 2px}.file .name[data-v-27cbce0c]{flex:1;padding:8px;word-break:break-all}.file .basic-info[data-v-27cbce0c]{overflow:hidden;display:flex;flex-direction:column;align-items:flex-end}.file .dir-cover-container[data-v-27cbce0c]{top:0;display:flex;flex-wrap:wrap;padding:4px}.file .dir-cover-container>img[data-v-27cbce0c]{width:calc(50% - 8px);height:calc(50% - 8px);margin:4px;object-fit:cover;border-radius:8px;overflow:hidden} diff --git a/vue/dist/assets/FileItem-3bb21719.js b/vue/dist/assets/FileItem-3bb21719.js deleted file mode 100644 index 7acfdd0..0000000 --- a/vue/dist/assets/FileItem-3bb21719.js +++ /dev/null @@ -1,2 +0,0 @@ -import{c as y,A as Z,aB as re,aC as ae,ad as De,o as s,x as I,db as Le,dc as Je,dd as He,bY as Ue,de as Ke,a7 as We,k as d,an as W,p as h,y as p,n as z,H as O,bZ as me,b_ as Ye,df as Ge,G as Qe,Q as j,d as de,r as ze,Y as H,m,t as f,z as S,dg as qe,X as Pe,d0 as Ze,c$ as xe,M as $e,l as o,q as Oe,cQ as Xe,c0 as et,$ as ve,aD as tt,v as it,dh as ye,O as nt,di as st,cV as ot,dj as lt,dk as rt,dl as be,dm as at,dn as ee,dp as dt,dq as ut,ax as ft,cU as ct,dr as ht,ds as gt,dt as pt}from"./index-2865012e.js";import{_ as mt}from"./index-cc5bdcee.js";import{D as U,a as ie}from"./index-f200274c.js";import"./index-50dada2e.js";U.Button=ie;U.install=function(e){return e.component(U.name,U),e.component(ie.name,ie),e};var vt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z"}}]},name:"star",theme:"filled"};const yt=vt;function Ae(e){for(var t=1;t0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var n=e.indexOf("Trident/");if(n>0){var i=e.indexOf("rv:");return parseInt(e.substring(i+3,e.indexOf(".",i)),10)}var r=e.indexOf("Edge/");return r>0?parseInt(e.substring(r+5,e.indexOf(".",r)),10):-1}let G;function ne(){ne.init||(ne.init=!0,G=Pt()!==-1)}var x={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){ne(),De(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",G&&this.$el.appendChild(e),e.data="about:blank",G||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!G&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const $t=Le();re("data-v-b329ee4c");const Ot={class:"resize-observer",tabindex:"-1"};ae();const Nt=$t((e,t,n,i,r,a)=>(s(),I("div",Ot)));x.render=Nt;x.__scopeId="data-v-b329ee4c";x.__file="src/components/ResizeObserver.vue";function q(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?q=function(t){return typeof t}:q=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},q(e)}function Bt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Te(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n2&&arguments[2]!==void 0?arguments[2]:{},i,r,a,v=function(g){for(var _=arguments.length,w=new Array(_>1?_-1:0),D=1;D<_;D++)w[D-1]=arguments[D];if(a=w,!(i&&g===r)){var T=n.leading;typeof T=="function"&&(T=T(g,r)),(!i||g!==r)&&T&&e.apply(void 0,[g].concat(Ce(a))),r=g,clearTimeout(i),i=setTimeout(function(){e.apply(void 0,[g].concat(Ce(a))),i=0},t)}};return v._clear=function(){clearTimeout(i),i=null},v}function Me(e,t){if(e===t)return!0;if(q(e)==="object"){for(var n in e)if(!Me(e[n],t[n]))return!1;return!0}return!1}var Ht=function(){function e(t,n,i){Bt(this,e),this.el=t,this.observer=null,this.frozen=!1,this.createObserver(n,i)}return Mt(e,[{key:"createObserver",value:function(n,i){var r=this;if(this.observer&&this.destroyObserver(),!this.frozen){if(this.options=Lt(n),this.callback=function(c,g){r.options.callback(c,g),c&&r.options.once&&(r.frozen=!0,r.destroyObserver())},this.callback&&this.options.throttle){var a=this.options.throttleOptions||{},v=a.leading;this.callback=Jt(this.callback,this.options.throttle,{leading:function(g){return v==="both"||v==="visible"&&g||v==="hidden"&&!g}})}this.oldResult=void 0,this.observer=new IntersectionObserver(function(c){var g=c[0];if(c.length>1){var _=c.find(function(D){return D.isIntersecting});_&&(g=_)}if(r.callback){var w=g.isIntersecting&&g.intersectionRatio>=r.threshold;if(w===r.oldResult)return;r.oldResult=w,r.callback(w,g)}},this.options.intersection),De(function(){r.observer&&r.observer.observe(r.el)})}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&typeof this.options.intersection.threshold=="number"?this.options.intersection.threshold:0}}]),e}();function Fe(e,t,n){var i=t.value;if(i)if(typeof IntersectionObserver>"u")console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var r=new Ht(e,i,n);e._vue_visibilityState=r}}function Ut(e,t,n){var i=t.value,r=t.oldValue;if(!Me(i,r)){var a=e._vue_visibilityState;if(!i){Re(e);return}a?a.createObserver(i,n):Fe(e,{value:i},n)}}function Re(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var Kt={beforeMount:Fe,updated:Ut,unmounted:Re},Wt={itemsLimit:1e3},Yt=/(auto|scroll)/;function Ve(e,t){return e.parentNode===null?t:Ve(e.parentNode,t.concat([e]))}var te=function(t,n){return getComputedStyle(t,null).getPropertyValue(n)},Gt=function(t){return te(t,"overflow")+te(t,"overflow-y")+te(t,"overflow-x")},qt=function(t){return Yt.test(Gt(t))};function we(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var t=Ve(e.parentNode,[]),n=0;n{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0})},activated(){const e=this.$_lastUpdateScrollPosition;typeof e=="number"&&this.$nextTick(()=>{this.scrollToPosition(e)})},beforeUnmount(){this.removeListeners()},methods:{addView(e,t,n,i,r){const a=Je({id:ei++,index:t,used:!0,key:i,type:r}),v=He({item:n,position:0,nr:a});return e.push(v),v},unuseView(e,t=!1){const n=this.$_unusedViews,i=e.nr.type;let r=n.get(i);r||(r=[],n.set(i,r)),r.push(e),t||(e.nr.used=!1,e.position=-9999)},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;const t=()=>requestAnimationFrame(()=>{this.$_scrollDirty=!1;const{continuous:n}=this.updateVisibleItems(!1,!0);n||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))});t(),this.updateInterval&&(this.$_updateTimeout=setTimeout(()=>{this.$_updateTimeout=0,this.$_scrollDirty&&t()},this.updateInterval))}},handleVisibilityChange(e,t){this.ready&&(e||t.boundingClientRect.width!==0||t.boundingClientRect.height!==0?(this.$emit("visible"),requestAnimationFrame(()=>{this.updateVisibleItems(!1)})):this.$emit("hidden"))},updateVisibleItems(e,t=!1){const n=this.itemSize,i=this.gridItems||1,r=this.itemSecondarySize||n,a=this.$_computedMinItemSize,v=this.typeField,c=this.simpleArray?null:this.keyField,g=this.items,_=g.length,w=this.sizes,D=this.$_views,T=this.$_unusedViews,L=this.pool,X=this.itemIndexByKey;let P,C,V,l,A;if(!_)P=C=l=A=V=0;else if(this.$_prerender)P=l=0,C=A=Math.min(this.prerender,g.length),V=null;else{const u=this.getScroll();if(t){let $=u.start-this.$_lastUpdateScrollPosition;if($<0&&($=-$),n===null&&$u.start&&(ge=B),B=~~((J+ge)/2);while(B!==pe);for(B<0&&(B=0),P=B,V=w[_-1].accumulator,C=B;C<_&&w[C].accumulator_&&(C=_)),l=P;l<_&&Q+w[l].accumulator_&&(C=_),l<0&&(l=0),A>_&&(A=_),V=Math.ceil(_/i)*n}}C-P>Wt.itemsLimit&&this.itemsLimitError(),this.totalSize=V;let b;const R=P<=this.$_endIndex&&C>=this.$_startIndex;if(R)for(let u=0,E=L.length;u=C)&&this.unuseView(b));const K=R?null:new Map;let F,N,M;for(let u=P;u=Q.length)&&(b=this.addView(L,u,F,E,N),this.unuseView(b,!0),Q=T.get(N)),b=Q[M],K.set(N,M+1)),D.delete(b.nr.key),b.nr.used=!0,b.nr.index=u,b.nr.key=E,b.nr.type=N,D.set(E,b),$=!0;else if(!b.nr.used&&(b.nr.used=!0,b.nr.index=u,$=!0,Q)){const J=Q.indexOf(b);J!==-1&&Q.splice(J,1)}b.item=F,$&&(u===g.length-1&&this.$emit("scroll-end"),u===0&&this.$emit("scroll-start")),n===null?(b.position=w[u-1].accumulator,b.offset=0):(b.position=Math.floor(u/i)*n,b.offset=u%i*r)}return this.$_startIndex=P,this.$_endIndex=C,this.emitUpdate&&this.$emit("update",P,C,l,A),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:R}},getListenerTarget(){let e=we(this.$el);return window.document&&(e===window.document.documentElement||e===window.document.body)&&(e=window),e},getScroll(){const{$el:e,direction:t}=this,n=t==="vertical";let i;if(this.pageMode){const r=e.getBoundingClientRect(),a=n?r.height:r.width;let v=-(n?r.top:r.left),c=n?window.innerHeight:window.innerWidth;v<0&&(c+=v,v=0),v+c>a&&(c=a-v),i={start:v,end:v+c}}else n?i={start:e.scrollTop,end:e.scrollTop+e.clientHeight}:i={start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return i},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,le?{passive:!0}:!1),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(e){let t;const n=this.gridItems||1;this.itemSize===null?t=e>0?this.sizes[e-1].accumulator:0:t=Math.floor(e/n)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){const t=this.direction==="vertical"?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let n,i,r;if(this.pageMode){const a=we(this.$el),v=a.tagName==="HTML"?0:a[t.scroll],c=a.getBoundingClientRect(),_=this.$el.getBoundingClientRect()[t.start]-c[t.start];n=a,i=t.scroll,r=e+v+_}else n=this.$el,i=t.scroll,r=e;n[i]=r},itemsLimitError(){throw setTimeout(()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")}),new Error("Rendered items limit reached")},sortViews(){this.pool.sort((e,t)=>e.nr.index-t.nr.index)}}};const ti={key:0,ref:"before",class:"vue-recycle-scroller__slot"},ii={key:1,ref:"after",class:"vue-recycle-scroller__slot"};function ni(e,t,n,i,r,a){const v=Ue("ResizeObserver"),c=Ke("observe-visibility");return We((s(),d("div",{class:j(["vue-recycle-scroller",{ready:r.ready,"page-mode":n.pageMode,[`direction-${e.direction}`]:!0}]),onScrollPassive:t[0]||(t[0]=(...g)=>a.handleScroll&&a.handleScroll(...g))},[e.$slots.before?(s(),d("div",ti,[W(e.$slots,"before")],512)):h("v-if",!0),(s(),I(me(n.listTag),{ref:"wrapper",style:Qe({[e.direction==="vertical"?"minHeight":"minWidth"]:r.totalSize+"px"}),class:j(["vue-recycle-scroller__item-wrapper",n.listClass])},{default:p(()=>[(s(!0),d(z,null,O(r.pool,g=>(s(),I(me(n.itemTag),Ye({key:g.nr.id,style:r.ready?{transform:`translate${e.direction==="vertical"?"Y":"X"}(${g.position}px) translate${e.direction==="vertical"?"X":"Y"}(${g.offset}px)`,width:n.gridItems?`${e.direction==="vertical"&&n.itemSecondarySize||n.itemSize}px`:void 0,height:n.gridItems?`${e.direction==="horizontal"&&n.itemSecondarySize||n.itemSize}px`:void 0}:null,class:["vue-recycle-scroller__item-view",[n.itemClass,{hover:!n.skipHover&&r.hoverKey===g.nr.key}]]},Ge(n.skipHover?{}:{mouseenter:()=>{r.hoverKey=g.nr.key},mouseleave:()=>{r.hoverKey=null}})),{default:p(()=>[W(e.$slots,"default",{item:g.item,index:g.nr.index,active:g.nr.used})]),_:2},1040,["style","class"]))),128)),W(e.$slots,"empty")]),_:3},8,["style","class"])),e.$slots.after?(s(),d("div",ii,[W(e.$slots,"after")],512)):h("v-if",!0),y(v,{onNotify:a.handleResize},null,8,["onNotify"])],34)),[[c,a.handleVisibilityChange]])}je.render=ni;je.__file="src/components/RecycleScroller.vue";const Ee=de({__name:"ContextMenu",props:{file:{},idx:{},selectedTag:{},isSelectedMutilFiles:{type:Boolean}},emits:["contextMenuClick"],setup(e,{emit:t}){const n=e,i=ze(),r=H(()=>{var a;return(((a=i.conf)==null?void 0:a.all_custom_tags)??[]).reduce((v,c)=>[...v,{...c,selected:!!n.selectedTag.find(g=>g.id===c.id)}],[])});return(a,v)=>{const c=Pe,g=Ze,_=xe,w=$e;return s(),I(w,{onClick:v[0]||(v[0]=D=>t("contextMenuClick",D,a.file,a.idx))},{default:p(()=>{var D;return[y(c,{key:"deleteFiles"},{default:p(()=>[m(f(a.$t("deleteSelected")),1)]),_:1}),y(c,{key:"openWithDefaultApp"},{default:p(()=>[m(f(a.$t("openWithDefaultApp")),1)]),_:1}),y(c,{key:"saveSelectedAsJson"},{default:p(()=>[m(f(a.$t("saveSelectedAsJson")),1)]),_:1}),a.file.type==="dir"?(s(),d(z,{key:0},[y(c,{key:"openInNewTab"},{default:p(()=>[m(f(a.$t("openInNewTab")),1)]),_:1}),y(c,{key:"openOnTheRight"},{default:p(()=>[m(f(a.$t("openOnTheRight")),1)]),_:1}),y(c,{key:"openWithWalkMode"},{default:p(()=>[m(f(a.$t("openWithWalkMode")),1)]),_:1})],64)):h("",!0),a.file.type==="file"?(s(),d(z,{key:1},[S(qe)(a.file.name)?(s(),d(z,{key:0},[y(c,{key:"viewGenInfo"},{default:p(()=>[m(f(a.$t("viewGenerationInfo")),1)]),_:1}),y(c,{key:"tiktokView"},{default:p(()=>[m(f(a.$t("tiktokView")),1)]),_:1}),y(g),((D=S(i).conf)==null?void 0:D.launch_mode)!=="server"?(s(),d(z,{key:0},[y(c,{key:"send2txt2img"},{default:p(()=>[m(f(a.$t("sendToTxt2img")),1)]),_:1}),y(c,{key:"send2img2img"},{default:p(()=>[m(f(a.$t("sendToImg2img")),1)]),_:1}),y(c,{key:"send2inpaint"},{default:p(()=>[m(f(a.$t("sendToInpaint")),1)]),_:1}),y(c,{key:"send2extras"},{default:p(()=>[m(f(a.$t("sendToExtraFeatures")),1)]),_:1}),y(_,{key:"sendToThirdPartyExtension",title:a.$t("sendToThirdPartyExtension")},{default:p(()=>[y(c,{key:"send2controlnet-txt2img"},{default:p(()=>[m("ControlNet - "+f(a.$t("t2i")),1)]),_:1}),y(c,{key:"send2controlnet-img2img"},{default:p(()=>[m("ControlNet - "+f(a.$t("i2i")),1)]),_:1}),y(c,{key:"send2outpaint"},{default:p(()=>[m("openOutpaint")]),_:1})]),_:1},8,["title"])],64)):h("",!0),y(c,{key:"send2BatchDownload"},{default:p(()=>[m(f(a.$t("sendToBatchDownload")),1)]),_:1}),y(_,{key:"copy2target",title:a.$t("copyTo")},{default:p(()=>[(s(!0),d(z,null,O(S(i).quickMovePaths,T=>(s(),I(c,{key:`copy-to-${T.dir}`},{default:p(()=>[m(f(T.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),y(_,{key:"move2target",title:a.$t("moveTo")},{default:p(()=>[(s(!0),d(z,null,O(S(i).quickMovePaths,T=>(s(),I(c,{key:`move-to-${T.dir}`},{default:p(()=>[m(f(T.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),y(g),a.isSelectedMutilFiles?(s(),d(z,{key:1},[y(_,{key:"batch-add-tag",title:a.$t("batchAddTag")},{default:p(()=>[y(c,{key:"add-custom-tag"},{default:p(()=>[m("+ "+f(a.$t("addNewCustomTag")),1)]),_:1}),(s(!0),d(z,null,O(r.value,T=>(s(),I(c,{key:`batch-add-tag-${T.id}`},{default:p(()=>[m(f(T.name),1)]),_:2},1024))),128))]),_:1},8,["title"]),y(_,{key:"batch-remove-tag",title:a.$t("batchRemoveTag")},{default:p(()=>[(s(!0),d(z,null,O(r.value,T=>(s(),I(c,{key:`batch-remove-tag-${T.id}`},{default:p(()=>[m(f(T.name),1)]),_:2},1024))),128))]),_:1},8,["title"])],64)):(s(),I(_,{key:"toggle-tag",title:a.$t("toggleTag")},{default:p(()=>[y(c,{key:"add-custom-tag"},{default:p(()=>[m("+ "+f(a.$t("addNewCustomTag")),1)]),_:1}),(s(!0),d(z,null,O(r.value,T=>(s(),I(c,{key:`toggle-tag-${T.id}`},{default:p(()=>[m(f(T.name)+" ",1),T.selected?(s(),I(S(Ne),{key:0})):(s(),I(S(Be),{key:1}))]),_:2},1024))),128))]),_:1},8,["title"])),y(g),y(c,{key:"openFileLocationInNewTab"},{default:p(()=>[m(f(a.$t("openFileLocationInNewTab")),1)]),_:1}),y(c,{key:"openWithLocalFileBrowser"},{default:p(()=>[m(f(a.$t("openWithLocalFileBrowser")),1)]),_:1})],64)):h("",!0),y(g),y(c,{key:"rename"},{default:p(()=>[m(f(a.$t("rename")),1)]),_:1}),y(c,{key:"previewInNewWindow"},{default:p(()=>[m(f(a.$t("previewInNewWindow")),1)]),_:1}),y(c,{key:"download"},{default:p(()=>[m(f(a.$t("download")),1)]),_:1}),y(c,{key:"copyPreviewUrl"},{default:p(()=>[m(f(a.$t("copySourceFilePreviewLink")),1)]),_:1}),y(c,{key:"copyFilePath"},{default:p(()=>[m(f(a.$t("copyFilePath")),1)]),_:1})],64)):h("",!0)]}),_:1})}}}),k=e=>(re("data-v-78cd67a3"),e=e(),ae(),e),si={class:"changeIndicatorWrapper"},oi={key:0,class:"changeIndicatorsLeft changeIndicators"},li={key:0,class:"promptChangeIndicator changeIndicator"},ri={key:1,class:"negpromptChangeIndicator changeIndicator"},ai={key:2,class:"seedChangeIndicator changeIndicator"},di={key:3,class:"stepsChangeIndicator changeIndicator"},ui={key:4,class:"cfgChangeIndicator changeIndicator"},fi={key:5,class:"sizeChangeIndicator changeIndicator"},ci={key:6,class:"modelChangeIndicator changeIndicator"},hi={key:7,class:"samplerChangeIndicator changeIndicator"},gi={key:8,class:"otherChangeIndicator changeIndicator"},pi={class:"hoverOverlay"},mi=k(()=>o("strong",null,"This file",-1)),vi=k(()=>o("br",null,null,-1)),yi=k(()=>o("br",null,null,-1)),bi={key:0},Ai=k(()=>o("td",null,[o("span",{class:"promptChangeIndicator"},"+ Prompt")],-1)),ki={key:1},_i=k(()=>o("td",null,[o("span",{class:"negpromptChangeIndicator"},"- Prompt")],-1)),Si={key:2},Ii=k(()=>o("td",null,[o("span",{class:"seedChangeIndicator"},"Seed")],-1)),Ti={key:3},Ci=k(()=>o("td",null,[o("span",{class:"stepsChangeIndicator"},"Steps")],-1)),wi={key:4},Ei=k(()=>o("td",null,[o("span",{class:"cfgChangeIndicator"},"Cfg Scale")],-1)),Di={key:5},Qi=k(()=>o("td",null,[o("span",{class:"sizeChangeIndicator"},"Size")],-1)),zi={key:6},Pi=k(()=>o("td",null,[o("span",{class:"modelChangeIndicator"},"Model")],-1)),$i=k(()=>o("br",null,null,-1)),Oi={key:7},Ni=k(()=>o("td",null,[o("span",{class:"samplerChangeIndicator"},"Sampler")],-1)),Bi=k(()=>o("br",null,null,-1)),Mi=k(()=>o("br",null,null,-1)),Fi={key:0},Ri=k(()=>o("span",{class:"otherChangeIndicator"},"Other",-1)),Vi=k(()=>o("br",null,null,-1)),ji=k(()=>o("br",null,null,-1)),Li={key:1,class:"changeIndicatorsRight changeIndicators"},Ji={key:0,class:"promptChangeIndicator changeIndicator"},Hi={key:1,class:"negpromptChangeIndicator changeIndicator"},Ui={key:2,class:"seedChangeIndicator changeIndicator"},Ki={key:3,class:"stepsChangeIndicator changeIndicator"},Wi={key:4,class:"cfgChangeIndicator changeIndicator"},Yi={key:5,class:"sizeChangeIndicator changeIndicator"},Gi={key:6,class:"modelChangeIndicator changeIndicator"},qi={key:7,class:"samplerChangeIndicator changeIndicator"},Zi={key:8,class:"otherChangeIndicator changeIndicator"},xi={class:"hoverOverlay"},Xi=k(()=>o("strong",null,"This file",-1)),en=k(()=>o("br",null,null,-1)),tn=k(()=>o("br",null,null,-1)),nn={key:0},sn=k(()=>o("td",null,[o("span",{class:"promptChangeIndicator"},"+ Prompt")],-1)),on={key:1},ln=k(()=>o("td",null,[o("span",{class:"negpromptChangeIndicator"},"- Prompt")],-1)),rn={key:2},an=k(()=>o("td",null,[o("span",{class:"seedChangeIndicator"},"Seed")],-1)),dn={key:3},un=k(()=>o("td",null,[o("span",{class:"stepsChangeIndicator"},"Steps")],-1)),fn={key:4},cn=k(()=>o("td",null,[o("span",{class:"cfgChangeIndicator"},"Cfg Scale")],-1)),hn={key:5},gn=k(()=>o("td",null,[o("span",{class:"sizeChangeIndicator"},"Size")],-1)),pn={key:6},mn=k(()=>o("td",null,[o("span",{class:"modelChangeIndicator"},"Model")],-1)),vn=k(()=>o("br",null,null,-1)),yn={key:7},bn=k(()=>o("td",null,[o("span",{class:"samplerChangeIndicator"},"Sampler")],-1)),An=k(()=>o("br",null,null,-1)),kn=k(()=>o("br",null,null,-1)),_n={key:0},Sn=k(()=>o("span",{class:"otherChangeIndicator"},"Other",-1)),In=k(()=>o("br",null,null,-1)),Tn=k(()=>o("br",null,null,-1)),Cn=de({__name:"ChangeIndicator",props:{genDiffToPrevious:{},genDiffToNext:{},genInfo:{}},setup(e){function t(i){const r=["prompt","negativePrompt","seed","steps","cfgScale","size","Model","others"],a=Object.keys(i).filter(v=>!r.includes(v));return Object.fromEntries(a.map(v=>[v,i[v]]))}function n(i){return Object.keys(t(i)).length>0}return(i,r)=>(s(),d("div",si,[i.genDiffToPrevious.empty?h("",!0):(s(),d("div",oi,["prompt"in i.genDiffToPrevious.diff?(s(),d("div",li,"P+")):h("",!0),"negativePrompt"in i.genDiffToPrevious.diff?(s(),d("div",ri,"P-")):h("",!0),"seed"in i.genDiffToPrevious.diff?(s(),d("div",ai,"Se")):h("",!0),"steps"in i.genDiffToPrevious.diff?(s(),d("div",di,"St")):h("",!0),"cfgScale"in i.genDiffToPrevious.diff?(s(),d("div",ui,"Cf")):h("",!0),"size"in i.genDiffToPrevious.diff?(s(),d("div",fi,"Si")):h("",!0),"Model"in i.genDiffToPrevious.diff?(s(),d("div",ci,"Mo")):h("",!0),"Sampler"in i.genDiffToPrevious.diff?(s(),d("div",hi,"Sa")):h("",!0),n(i.genDiffToPrevious.diff)?(s(),d("div",gi,"Ot")):h("",!0)])),o("div",pi,[o("small",null,[y(S(Se)),mi,m(" vs "+f(i.genDiffToPrevious.otherFile)+" ",1),vi,yi,o("table",null,["prompt"in i.genDiffToPrevious.diff?(s(),d("tr",bi,[Ai,o("td",null,f(i.genDiffToPrevious.diff.prompt)+" tokens changed",1)])):h("",!0),"negativePrompt"in i.genDiffToPrevious.diff?(s(),d("tr",ki,[_i,o("td",null,f(i.genDiffToPrevious.diff.negativePrompt)+" tokens changed",1)])):h("",!0),"seed"in i.genDiffToPrevious.diff?(s(),d("tr",Si,[Ii,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.seed[0]),1),m(" vs "+f(i.genDiffToPrevious.diff.seed[1]),1)])])):h("",!0),"steps"in i.genDiffToPrevious.diff?(s(),d("tr",Ti,[Ci,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.steps[0]),1),m(" vs "+f(i.genDiffToPrevious.diff.steps[1]),1)])])):h("",!0),"cfgScale"in i.genDiffToPrevious.diff?(s(),d("tr",wi,[Ei,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.cfgScale[0]),1),m(" vs "+f(i.genDiffToPrevious.diff.cfgScale[1]),1)])])):h("",!0),"size"in i.genDiffToPrevious.diff?(s(),d("tr",Di,[Qi,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.size[0]),1),m(" vs "+f(i.genDiffToPrevious.diff.size[1]),1)])])):h("",!0),"Model"in i.genDiffToPrevious.diff?(s(),d("tr",zi,[Pi,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.Model[0]),1),$i,m(" vs "+f(i.genDiffToPrevious.diff.Model[1]),1)])])):h("",!0),"Sampler"in i.genDiffToPrevious.diff?(s(),d("tr",Oi,[Ni,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.Sampler[0]),1),Bi,m(" vs "+f(i.genDiffToPrevious.diff.Sampler[1]),1)])])):h("",!0)]),Mi,n(i.genDiffToPrevious.diff)?(s(),d("div",Fi,[Ri,m(" props that changed:"),Vi,ji,o("ul",null,[(s(!0),d(z,null,O(t(i.genDiffToPrevious.diff),(a,v)=>(s(),d("li",null,f(v),1))),256))])])):h("",!0)])]),i.genDiffToNext.empty?h("",!0):(s(),d("div",Li,["prompt"in i.genDiffToNext.diff?(s(),d("div",Ji,"P+")):h("",!0),"negativePrompt"in i.genDiffToNext.diff?(s(),d("div",Hi,"P-")):h("",!0),"seed"in i.genDiffToNext.diff?(s(),d("div",Ui,"Se")):h("",!0),"steps"in i.genDiffToNext.diff?(s(),d("div",Ki,"St")):h("",!0),"cfgScale"in i.genDiffToNext.diff?(s(),d("div",Wi,"Cf")):h("",!0),"size"in i.genDiffToNext.diff?(s(),d("div",Yi,"Si")):h("",!0),"Model"in i.genDiffToNext.diff?(s(),d("div",Gi,"Mo")):h("",!0),"Sampler"in i.genDiffToNext.diff?(s(),d("div",qi,"Sa")):h("",!0),n(i.genDiffToNext.diff)?(s(),d("div",Zi,"Ot")):h("",!0)])),o("div",xi,[o("small",null,[y(S(Se)),Xi,m(" vs "+f(i.genDiffToNext.otherFile)+" ",1),en,tn,o("table",null,["prompt"in i.genDiffToNext.diff?(s(),d("tr",nn,[sn,o("td",null,f(i.genDiffToNext.diff.prompt)+" tokens changed",1)])):h("",!0),"negativePrompt"in i.genDiffToNext.diff?(s(),d("tr",on,[ln,o("td",null,f(i.genDiffToNext.diff.negativePrompt)+" tokens changed",1)])):h("",!0),"seed"in i.genDiffToNext.diff?(s(),d("tr",rn,[an,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.seed[0]),1),m(" vs "+f(i.genDiffToNext.diff.seed[1]),1)])])):h("",!0),"steps"in i.genDiffToNext.diff?(s(),d("tr",dn,[un,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.steps[0]),1),m(" vs "+f(i.genDiffToNext.diff.steps[1]),1)])])):h("",!0),"cfgScale"in i.genDiffToNext.diff?(s(),d("tr",fn,[cn,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.cfgScale[0]),1),m(" vs "+f(i.genDiffToNext.diff.cfgScale[1]),1)])])):h("",!0),"size"in i.genDiffToNext.diff?(s(),d("tr",hn,[gn,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.size[0]),1),m(" vs "+f(i.genDiffToNext.diff.size[1]),1)])])):h("",!0),"Model"in i.genDiffToNext.diff?(s(),d("tr",pn,[mn,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.Model[0]),1),vn,m(" vs "+f(i.genDiffToNext.diff.Model[1]),1)])])):h("",!0),"Sampler"in i.genDiffToNext.diff?(s(),d("tr",yn,[bn,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.Sampler[0]),1),An,m(" vs "+f(i.genDiffToNext.diff.Sampler[1]),1)])])):h("",!0)]),kn,n(i.genDiffToNext.diff)?(s(),d("div",_n,[Sn,m(" props that changed:"),In,Tn,o("ul",null,[(s(!0),d(z,null,O(t(i.genDiffToNext.diff),(a,v)=>(s(),d("li",null,f(v),1))),256))])])):h("",!0)])])]))}});const wn=Oe(Cn,[["__scopeId","data-v-78cd67a3"]]),En=e=>(re("data-v-d7ac6541"),e=e(),ae(),e),Dn=["data-idx"],Qn={key:1,class:"more"},zn={class:"float-btn-wrap"},Pn={key:1,class:"tags-container"},$n=["url"],On={class:"play-icon"},Nn=["src"],Bn={key:0,class:"tags-container"},Mn=En(()=>o("div",{class:"audio-icon"},"🎵",-1)),Fn={key:0,class:"tags-container"},Rn={key:5,class:"preview-icon-wrap"},Vn={key:1,class:"dir-cover-container"},jn=["src"],Ln={key:6,class:"profile"},Jn=["title"],Hn={class:"basic-info"},Un={style:{"margin-right":"4px"}},Y=160,Kn=de({__name:"FileItem",props:{file:{},idx:{},selected:{type:Boolean,default:!1},showMenuIdx:{},cellWidth:{},fullScreenPreviewImageUrl:{},enableRightClickMenu:{type:Boolean,default:!0},enableCloseIcon:{type:Boolean,default:!1},isSelectedMutilFiles:{type:Boolean},genInfo:{},enableChangeIndicator:{type:Boolean},extraTags:{},coverFiles:{},getGenDiff:{},getGenDiffWatchDep:{}},emits:["update:showMenuIdx","fileItemClick","dragstart","dragend","dropToFolder","previewVisibleChange","contextMenuClick","close-icon-click","tiktokView"],setup(e,{emit:t}){const n=e;Xe(l=>({21801204:l.$props.cellWidth+"px"}));const i=ze(),r=et(),a=ve(),v=ve(),c=tt(()=>{const{getGenDiff:l,file:A,idx:b}=n;l&&(v.value=l(A.gen_info_obj,b,1,A),a.value=l(A.gen_info_obj,b,-1,A))},200+100*Math.random());it(()=>{var l;return(l=n.getGenDiffWatchDep)==null?void 0:l.call(n,n.idx)},()=>{c()},{immediate:!0,deep:!0});const g=H(()=>r.tagMap.get(n.file.fullpath)??[]),_=H(()=>{const l=i.gridThumbnailResolution;return i.enableThumbnail?ye(n.file,[l,l].join("x")):nt(n.file)}),w=H(()=>{var l;return(((l=i.conf)==null?void 0:l.all_custom_tags)??[]).reduce((A,b)=>[...A,{...b,selected:!!g.value.find(R=>R.id===b.id)}],[])}),D=H(()=>w.value.find(l=>l.type==="custom"&&l.name==="like")),T=()=>{ft(D.value),t("contextMenuClick",{key:`toggle-tag-${D.value.id}`},n.file,n.idx)},L=l=>{n.file.type==="dir"&&(l.preventDefault(),l.dataTransfer&&(l.dataTransfer.dropEffect="move"))},X=l=>{n.file.type==="dir"&&(l.preventDefault(),l.stopPropagation(),t("dropToFolder",l,n.file,n.idx))},P=l=>{i.magicSwitchTiktokView&&n.file.type==="file"&&be(n.file.name)?(l.stopPropagation(),l.preventDefault(),t("tiktokView",n.file,n.idx),setTimeout(()=>{ct()},500)):t("fileItemClick",l,n.file,n.idx)},C=()=>{i.magicSwitchTiktokView?t("tiktokView",n.file,n.idx):ht(n.file,l=>t("contextMenuClick",{key:`toggle-tag-${l}`},n.file,n.idx),()=>t("tiktokView",n.file,n.idx))},V=()=>{i.magicSwitchTiktokView?t("tiktokView",n.file,n.idx):gt(n.file,l=>t("contextMenuClick",{key:`toggle-tag-${l}`},n.file,n.idx),()=>t("tiktokView",n.file,n.idx))};return(l,A)=>{const b=U,R=Pe,K=$e,F=pt,N=mt;return s(),I(b,{trigger:["contextmenu"],visible:S(i).longPressOpenContextMenu?typeof l.idx=="number"&&l.showMenuIdx===l.idx:void 0,"onUpdate:visible":A[7]||(A[7]=M=>typeof l.idx=="number"&&t("update:showMenuIdx",M?l.idx:-1))},{overlay:p(()=>[l.enableRightClickMenu?(s(),I(Ee,{key:0,file:l.file,idx:l.idx,"selected-tag":g.value,onContextMenuClick:A[6]||(A[6]=(M,u,E)=>t("contextMenuClick",M,u,E)),"is-selected-mutil-files":l.isSelectedMutilFiles},null,8,["file","idx","selected-tag","is-selected-mutil-files"])):h("",!0)]),default:p(()=>{var M;return[(s(),d("li",{class:j(["file file-item-trigger grid",{clickable:l.file.type==="dir",selected:l.selected}]),"data-idx":l.idx,key:l.file.name,draggable:"true",onDragstart:A[3]||(A[3]=u=>t("dragstart",u,l.idx)),onDragend:A[4]||(A[4]=u=>t("dragend",u,l.idx)),onDragover:L,onDrop:X,onClickCapture:A[5]||(A[5]=u=>P(u))},[o("div",null,[l.enableCloseIcon?(s(),d("div",{key:0,class:"close-icon",onClick:A[0]||(A[0]=u=>t("close-icon-click"))},[y(S(st))])):h("",!0),l.enableRightClickMenu?(s(),d("div",Qn,[y(b,null,{overlay:p(()=>[y(Ee,{file:l.file,idx:l.idx,"selected-tag":g.value,onContextMenuClick:A[1]||(A[1]=(u,E,Q)=>t("contextMenuClick",u,E,Q)),"is-selected-mutil-files":l.isSelectedMutilFiles},null,8,["file","idx","selected-tag","is-selected-mutil-files"])]),default:p(()=>[o("div",zn,[y(S(ot))])]),_:1}),l.file.type==="file"?(s(),I(b,{key:0},{overlay:p(()=>[w.value.length>1?(s(),I(K,{key:0,onClick:A[2]||(A[2]=u=>t("contextMenuClick",u,l.file,l.idx))},{default:p(()=>[(s(!0),d(z,null,O(w.value,u=>(s(),I(R,{key:`toggle-tag-${u.id}`},{default:p(()=>[m(f(u.name)+" ",1),u.selected?(s(),I(S(Ne),{key:0})):(s(),I(S(Be),{key:1}))]),_:2},1024))),128))]),_:1})):h("",!0)]),default:p(()=>{var u,E;return[o("div",{class:j(["float-btn-wrap",{"like-selected":(u=D.value)==null?void 0:u.selected}]),onClick:T},[(E=D.value)!=null&&E.selected?(s(),I(S(lt),{key:0})):(s(),I(S(rt),{key:1}))],2)]}),_:1})):h("",!0)])):h("",!0),S(be)(l.file.name)?(s(),d("div",{key:l.file.fullpath,class:j(`idx-${l.idx} item-content`)},[l.enableChangeIndicator&&v.value&&a.value?(s(),I(wn,{key:0,"gen-diff-to-next":v.value,"gen-diff-to-previous":a.value},null,8,["gen-diff-to-next","gen-diff-to-previous"])):h("",!0),y(F,{src:_.value,fallback:S(It),preview:{src:l.fullScreenPreviewImageUrl,onVisibleChange:(u,E)=>t("previewVisibleChange",u,E)}},null,8,["src","fallback","preview"]),g.value&&l.cellWidth>Y?(s(),d("div",Pn,[(s(!0),d(z,null,O(l.extraTags??g.value,u=>(s(),I(N,{key:u.id,color:S(r).getColor(u)},{default:p(()=>[m(f(u.name),1)]),_:2},1032,["color"]))),128))])):h("",!0)],2)):S(at)(l.file.name)?(s(),d("div",{key:3,class:j(`idx-${l.idx} item-content video`),url:S(ee)(l.file),style:Qe({"background-image":`url('${l.file.cover_url??S(ee)(l.file)}')`}),onClick:C},[o("div",On,[o("img",{src:S(zt),style:{width:"40px",height:"40px"}},null,8,Nn)]),g.value&&l.cellWidth>Y?(s(),d("div",Bn,[(s(!0),d(z,null,O(g.value,u=>(s(),I(N,{key:u.id,color:S(r).getColor(u)},{default:p(()=>[m(f(u.name),1)]),_:2},1032,["color"]))),128))])):h("",!0)],14,$n)):S(dt)(l.file.name)?(s(),d("div",{key:4,class:j(`idx-${l.idx} item-content audio`),onClick:V},[Mn,g.value&&l.cellWidth>Y?(s(),d("div",Fn,[(s(!0),d(z,null,O(g.value,u=>(s(),I(N,{key:u.id,color:S(r).getColor(u)},{default:p(()=>[m(f(u.name),1)]),_:2},1032,["color"]))),128))])):h("",!0)],2)):(s(),d("div",Rn,[l.file.type==="file"?(s(),I(S(St),{key:0,class:"icon center"})):(M=l.coverFiles)!=null&&M.length&&l.cellWidth>160?(s(),d("div",Vn,[(s(!0),d(z,null,O(l.coverFiles,u=>(s(),d("img",{class:"dir-cover-item",src:u.media_type==="image"?S(ye)(u):S(ee)(u),key:u.fullpath},null,8,jn))),128))])):(s(),I(S(ut),{key:2,class:"icon center"}))])),l.cellWidth>Y?(s(),d("div",Ln,[o("div",{class:"name line-clamp-1",title:l.file.name},f(l.file.name),9,Jn),o("div",Hn,[o("div",Un,f(l.file.type)+" "+f(l.file.size),1),o("div",null,f(l.file.date),1)])])):h("",!0)])],42,Dn))]}),_:1},8,["visible"])}}});const Zn=Oe(Kn,[["__scopeId","data-v-d7ac6541"]]);export{Zn as F,Ee as _,je as s}; diff --git a/vue/dist/assets/FileItem-c62b10f3.js b/vue/dist/assets/FileItem-c62b10f3.js new file mode 100644 index 0000000..ac4377e --- /dev/null +++ b/vue/dist/assets/FileItem-c62b10f3.js @@ -0,0 +1,2 @@ +import{c as y,A as Z,at as re,au as ae,aH as De,o as s,v as S,cs as Le,ct as Je,cu as He,bf as Ue,cv as Ke,ba as We,j as d,ad as W,m as h,x as p,F as Q,G as $,bg as me,bh as Ye,cw as Ge,E as ze,Q as j,d as de,p as Qe,af as H,l as m,t as f,y as I,cx as qe,a0 as Pe,co as Ze,cn as xe,M as Oe,k as o,n as $e,cb as Xe,bk as et,r as ve,av as tt,s as it,cy as ye,O as nt,cz as st,ch as ot,cA as lt,cB as rt,cC as be,cD as at,cE as ee,cF as dt,cG as ut,ao as ft,cg as ct,cH as ht,cI as gt,cJ as pt,bO as mt}from"./index-c24b5c8e.js";import{D as U,a as ie}from"./index-5130babf.js";U.Button=ie;U.install=function(e){return e.component(U.name,U),e.component(ie.name,ie),e};var vt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z"}}]},name:"star",theme:"filled"};const yt=vt;function Ae(e){for(var t=1;t0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var n=e.indexOf("Trident/");if(n>0){var i=e.indexOf("rv:");return parseInt(e.substring(i+3,e.indexOf(".",i)),10)}var r=e.indexOf("Edge/");return r>0?parseInt(e.substring(r+5,e.indexOf(".",r)),10):-1}let G;function ne(){ne.init||(ne.init=!0,G=Pt()!==-1)}var x={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){ne(),De(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",G&&this.$el.appendChild(e),e.data="about:blank",G||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!G&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const Ot=Le();re("data-v-b329ee4c");const $t={class:"resize-observer",tabindex:"-1"};ae();const Nt=Ot((e,t,n,i,r,a)=>(s(),S("div",$t)));x.render=Nt;x.__scopeId="data-v-b329ee4c";x.__file="src/components/ResizeObserver.vue";function q(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?q=function(t){return typeof t}:q=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},q(e)}function Bt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Te(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n2&&arguments[2]!==void 0?arguments[2]:{},i,r,a,v=function(g){for(var _=arguments.length,E=new Array(_>1?_-1:0),D=1;D<_;D++)E[D-1]=arguments[D];if(a=E,!(i&&g===r)){var T=n.leading;typeof T=="function"&&(T=T(g,r)),(!i||g!==r)&&T&&e.apply(void 0,[g].concat(Ce(a))),r=g,clearTimeout(i),i=setTimeout(function(){e.apply(void 0,[g].concat(Ce(a))),i=0},t)}};return v._clear=function(){clearTimeout(i),i=null},v}function Me(e,t){if(e===t)return!0;if(q(e)==="object"){for(var n in e)if(!Me(e[n],t[n]))return!1;return!0}return!1}var Ht=function(){function e(t,n,i){Bt(this,e),this.el=t,this.observer=null,this.frozen=!1,this.createObserver(n,i)}return Mt(e,[{key:"createObserver",value:function(n,i){var r=this;if(this.observer&&this.destroyObserver(),!this.frozen){if(this.options=Lt(n),this.callback=function(c,g){r.options.callback(c,g),c&&r.options.once&&(r.frozen=!0,r.destroyObserver())},this.callback&&this.options.throttle){var a=this.options.throttleOptions||{},v=a.leading;this.callback=Jt(this.callback,this.options.throttle,{leading:function(g){return v==="both"||v==="visible"&&g||v==="hidden"&&!g}})}this.oldResult=void 0,this.observer=new IntersectionObserver(function(c){var g=c[0];if(c.length>1){var _=c.find(function(D){return D.isIntersecting});_&&(g=_)}if(r.callback){var E=g.isIntersecting&&g.intersectionRatio>=r.threshold;if(E===r.oldResult)return;r.oldResult=E,r.callback(E,g)}},this.options.intersection),De(function(){r.observer&&r.observer.observe(r.el)})}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&typeof this.options.intersection.threshold=="number"?this.options.intersection.threshold:0}}]),e}();function Fe(e,t,n){var i=t.value;if(i)if(typeof IntersectionObserver>"u")console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var r=new Ht(e,i,n);e._vue_visibilityState=r}}function Ut(e,t,n){var i=t.value,r=t.oldValue;if(!Me(i,r)){var a=e._vue_visibilityState;if(!i){Re(e);return}a?a.createObserver(i,n):Fe(e,{value:i},n)}}function Re(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var Kt={beforeMount:Fe,updated:Ut,unmounted:Re},Wt={itemsLimit:1e3},Yt=/(auto|scroll)/;function Ve(e,t){return e.parentNode===null?t:Ve(e.parentNode,t.concat([e]))}var te=function(t,n){return getComputedStyle(t,null).getPropertyValue(n)},Gt=function(t){return te(t,"overflow")+te(t,"overflow-y")+te(t,"overflow-x")},qt=function(t){return Yt.test(Gt(t))};function Ee(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var t=Ve(e.parentNode,[]),n=0;n{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0})},activated(){const e=this.$_lastUpdateScrollPosition;typeof e=="number"&&this.$nextTick(()=>{this.scrollToPosition(e)})},beforeUnmount(){this.removeListeners()},methods:{addView(e,t,n,i,r){const a=Je({id:ei++,index:t,used:!0,key:i,type:r}),v=He({item:n,position:0,nr:a});return e.push(v),v},unuseView(e,t=!1){const n=this.$_unusedViews,i=e.nr.type;let r=n.get(i);r||(r=[],n.set(i,r)),r.push(e),t||(e.nr.used=!1,e.position=-9999)},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;const t=()=>requestAnimationFrame(()=>{this.$_scrollDirty=!1;const{continuous:n}=this.updateVisibleItems(!1,!0);n||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))});t(),this.updateInterval&&(this.$_updateTimeout=setTimeout(()=>{this.$_updateTimeout=0,this.$_scrollDirty&&t()},this.updateInterval))}},handleVisibilityChange(e,t){this.ready&&(e||t.boundingClientRect.width!==0||t.boundingClientRect.height!==0?(this.$emit("visible"),requestAnimationFrame(()=>{this.updateVisibleItems(!1)})):this.$emit("hidden"))},updateVisibleItems(e,t=!1){const n=this.itemSize,i=this.gridItems||1,r=this.itemSecondarySize||n,a=this.$_computedMinItemSize,v=this.typeField,c=this.simpleArray?null:this.keyField,g=this.items,_=g.length,E=this.sizes,D=this.$_views,T=this.$_unusedViews,L=this.pool,X=this.itemIndexByKey;let P,C,V,l,A;if(!_)P=C=l=A=V=0;else if(this.$_prerender)P=l=0,C=A=Math.min(this.prerender,g.length),V=null;else{const u=this.getScroll();if(t){let O=u.start-this.$_lastUpdateScrollPosition;if(O<0&&(O=-O),n===null&&Ou.start&&(ge=B),B=~~((J+ge)/2);while(B!==pe);for(B<0&&(B=0),P=B,V=E[_-1].accumulator,C=B;C<_&&E[C].accumulator_&&(C=_)),l=P;l<_&&z+E[l].accumulator_&&(C=_),l<0&&(l=0),A>_&&(A=_),V=Math.ceil(_/i)*n}}C-P>Wt.itemsLimit&&this.itemsLimitError(),this.totalSize=V;let b;const R=P<=this.$_endIndex&&C>=this.$_startIndex;if(R)for(let u=0,w=L.length;u=C)&&this.unuseView(b));const K=R?null:new Map;let F,N,M;for(let u=P;u=z.length)&&(b=this.addView(L,u,F,w,N),this.unuseView(b,!0),z=T.get(N)),b=z[M],K.set(N,M+1)),D.delete(b.nr.key),b.nr.used=!0,b.nr.index=u,b.nr.key=w,b.nr.type=N,D.set(w,b),O=!0;else if(!b.nr.used&&(b.nr.used=!0,b.nr.index=u,O=!0,z)){const J=z.indexOf(b);J!==-1&&z.splice(J,1)}b.item=F,O&&(u===g.length-1&&this.$emit("scroll-end"),u===0&&this.$emit("scroll-start")),n===null?(b.position=E[u-1].accumulator,b.offset=0):(b.position=Math.floor(u/i)*n,b.offset=u%i*r)}return this.$_startIndex=P,this.$_endIndex=C,this.emitUpdate&&this.$emit("update",P,C,l,A),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:R}},getListenerTarget(){let e=Ee(this.$el);return window.document&&(e===window.document.documentElement||e===window.document.body)&&(e=window),e},getScroll(){const{$el:e,direction:t}=this,n=t==="vertical";let i;if(this.pageMode){const r=e.getBoundingClientRect(),a=n?r.height:r.width;let v=-(n?r.top:r.left),c=n?window.innerHeight:window.innerWidth;v<0&&(c+=v,v=0),v+c>a&&(c=a-v),i={start:v,end:v+c}}else n?i={start:e.scrollTop,end:e.scrollTop+e.clientHeight}:i={start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return i},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,le?{passive:!0}:!1),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(e){let t;const n=this.gridItems||1;this.itemSize===null?t=e>0?this.sizes[e-1].accumulator:0:t=Math.floor(e/n)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){const t=this.direction==="vertical"?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let n,i,r;if(this.pageMode){const a=Ee(this.$el),v=a.tagName==="HTML"?0:a[t.scroll],c=a.getBoundingClientRect(),_=this.$el.getBoundingClientRect()[t.start]-c[t.start];n=a,i=t.scroll,r=e+v+_}else n=this.$el,i=t.scroll,r=e;n[i]=r},itemsLimitError(){throw setTimeout(()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")}),new Error("Rendered items limit reached")},sortViews(){this.pool.sort((e,t)=>e.nr.index-t.nr.index)}}};const ti={key:0,ref:"before",class:"vue-recycle-scroller__slot"},ii={key:1,ref:"after",class:"vue-recycle-scroller__slot"};function ni(e,t,n,i,r,a){const v=Ue("ResizeObserver"),c=Ke("observe-visibility");return We((s(),d("div",{class:j(["vue-recycle-scroller",{ready:r.ready,"page-mode":n.pageMode,[`direction-${e.direction}`]:!0}]),onScrollPassive:t[0]||(t[0]=(...g)=>a.handleScroll&&a.handleScroll(...g))},[e.$slots.before?(s(),d("div",ti,[W(e.$slots,"before")],512)):h("v-if",!0),(s(),S(me(n.listTag),{ref:"wrapper",style:ze({[e.direction==="vertical"?"minHeight":"minWidth"]:r.totalSize+"px"}),class:j(["vue-recycle-scroller__item-wrapper",n.listClass])},{default:p(()=>[(s(!0),d(Q,null,$(r.pool,g=>(s(),S(me(n.itemTag),Ye({key:g.nr.id,style:r.ready?{transform:`translate${e.direction==="vertical"?"Y":"X"}(${g.position}px) translate${e.direction==="vertical"?"X":"Y"}(${g.offset}px)`,width:n.gridItems?`${e.direction==="vertical"&&n.itemSecondarySize||n.itemSize}px`:void 0,height:n.gridItems?`${e.direction==="horizontal"&&n.itemSecondarySize||n.itemSize}px`:void 0}:null,class:["vue-recycle-scroller__item-view",[n.itemClass,{hover:!n.skipHover&&r.hoverKey===g.nr.key}]]},Ge(n.skipHover?{}:{mouseenter:()=>{r.hoverKey=g.nr.key},mouseleave:()=>{r.hoverKey=null}})),{default:p(()=>[W(e.$slots,"default",{item:g.item,index:g.nr.index,active:g.nr.used})]),_:2},1040,["style","class"]))),128)),W(e.$slots,"empty")]),_:3},8,["style","class"])),e.$slots.after?(s(),d("div",ii,[W(e.$slots,"after")],512)):h("v-if",!0),y(v,{onNotify:a.handleResize},null,8,["onNotify"])],34)),[[c,a.handleVisibilityChange]])}je.render=ni;je.__file="src/components/RecycleScroller.vue";const we=de({__name:"ContextMenu",props:{file:{},idx:{},selectedTag:{},isSelectedMutilFiles:{type:Boolean}},emits:["contextMenuClick"],setup(e,{emit:t}){const n=e,i=Qe(),r=H(()=>{var a;return(((a=i.conf)==null?void 0:a.all_custom_tags)??[]).reduce((v,c)=>[...v,{...c,selected:!!n.selectedTag.find(g=>g.id===c.id)}],[])});return(a,v)=>{const c=Pe,g=Ze,_=xe,E=Oe;return s(),S(E,{onClick:v[0]||(v[0]=D=>t("contextMenuClick",D,a.file,a.idx))},{default:p(()=>{var D;return[y(c,{key:"deleteFiles"},{default:p(()=>[m(f(a.$t("deleteSelected")),1)]),_:1}),y(c,{key:"openWithDefaultApp"},{default:p(()=>[m(f(a.$t("openWithDefaultApp")),1)]),_:1}),y(c,{key:"saveSelectedAsJson"},{default:p(()=>[m(f(a.$t("saveSelectedAsJson")),1)]),_:1}),a.file.type==="dir"?(s(),d(Q,{key:0},[y(c,{key:"openInNewTab"},{default:p(()=>[m(f(a.$t("openInNewTab")),1)]),_:1}),y(c,{key:"openOnTheRight"},{default:p(()=>[m(f(a.$t("openOnTheRight")),1)]),_:1}),y(c,{key:"openWithWalkMode"},{default:p(()=>[m(f(a.$t("openWithWalkMode")),1)]),_:1})],64)):h("",!0),a.file.type==="file"?(s(),d(Q,{key:1},[I(qe)(a.file.name)?(s(),d(Q,{key:0},[y(c,{key:"viewGenInfo"},{default:p(()=>[m(f(a.$t("viewGenerationInfo")),1)]),_:1}),y(c,{key:"tiktokView"},{default:p(()=>[m(f(a.$t("tiktokView")),1)]),_:1}),y(g),((D=I(i).conf)==null?void 0:D.launch_mode)!=="server"?(s(),d(Q,{key:0},[y(c,{key:"send2txt2img"},{default:p(()=>[m(f(a.$t("sendToTxt2img")),1)]),_:1}),y(c,{key:"send2img2img"},{default:p(()=>[m(f(a.$t("sendToImg2img")),1)]),_:1}),y(c,{key:"send2inpaint"},{default:p(()=>[m(f(a.$t("sendToInpaint")),1)]),_:1}),y(c,{key:"send2extras"},{default:p(()=>[m(f(a.$t("sendToExtraFeatures")),1)]),_:1}),y(_,{key:"sendToThirdPartyExtension",title:a.$t("sendToThirdPartyExtension")},{default:p(()=>[y(c,{key:"send2controlnet-txt2img"},{default:p(()=>[m("ControlNet - "+f(a.$t("t2i")),1)]),_:1}),y(c,{key:"send2controlnet-img2img"},{default:p(()=>[m("ControlNet - "+f(a.$t("i2i")),1)]),_:1}),y(c,{key:"send2outpaint"},{default:p(()=>[m("openOutpaint")]),_:1})]),_:1},8,["title"])],64)):h("",!0),y(c,{key:"send2BatchDownload"},{default:p(()=>[m(f(a.$t("sendToBatchDownload")),1)]),_:1}),y(_,{key:"copy2target",title:a.$t("copyTo")},{default:p(()=>[(s(!0),d(Q,null,$(I(i).quickMovePaths,T=>(s(),S(c,{key:`copy-to-${T.dir}`},{default:p(()=>[m(f(T.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),y(_,{key:"move2target",title:a.$t("moveTo")},{default:p(()=>[(s(!0),d(Q,null,$(I(i).quickMovePaths,T=>(s(),S(c,{key:`move-to-${T.dir}`},{default:p(()=>[m(f(T.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),y(g),a.isSelectedMutilFiles?(s(),d(Q,{key:1},[y(_,{key:"batch-add-tag",title:a.$t("batchAddTag")},{default:p(()=>[y(c,{key:"add-custom-tag"},{default:p(()=>[m("+ "+f(a.$t("addNewCustomTag")),1)]),_:1}),(s(!0),d(Q,null,$(r.value,T=>(s(),S(c,{key:`batch-add-tag-${T.id}`},{default:p(()=>[m(f(T.name),1)]),_:2},1024))),128))]),_:1},8,["title"]),y(_,{key:"batch-remove-tag",title:a.$t("batchRemoveTag")},{default:p(()=>[(s(!0),d(Q,null,$(r.value,T=>(s(),S(c,{key:`batch-remove-tag-${T.id}`},{default:p(()=>[m(f(T.name),1)]),_:2},1024))),128))]),_:1},8,["title"])],64)):(s(),S(_,{key:"toggle-tag",title:a.$t("toggleTag")},{default:p(()=>[y(c,{key:"add-custom-tag"},{default:p(()=>[m("+ "+f(a.$t("addNewCustomTag")),1)]),_:1}),(s(!0),d(Q,null,$(r.value,T=>(s(),S(c,{key:`toggle-tag-${T.id}`},{default:p(()=>[m(f(T.name)+" ",1),T.selected?(s(),S(I(Ne),{key:0})):(s(),S(I(Be),{key:1}))]),_:2},1024))),128))]),_:1},8,["title"])),y(g),y(c,{key:"openFileLocationInNewTab"},{default:p(()=>[m(f(a.$t("openFileLocationInNewTab")),1)]),_:1}),y(c,{key:"openWithLocalFileBrowser"},{default:p(()=>[m(f(a.$t("openWithLocalFileBrowser")),1)]),_:1})],64)):h("",!0),y(g),y(c,{key:"rename"},{default:p(()=>[m(f(a.$t("rename")),1)]),_:1}),y(c,{key:"previewInNewWindow"},{default:p(()=>[m(f(a.$t("previewInNewWindow")),1)]),_:1}),y(c,{key:"download"},{default:p(()=>[m(f(a.$t("download")),1)]),_:1}),y(c,{key:"copyPreviewUrl"},{default:p(()=>[m(f(a.$t("copySourceFilePreviewLink")),1)]),_:1}),y(c,{key:"copyFilePath"},{default:p(()=>[m(f(a.$t("copyFilePath")),1)]),_:1})],64)):h("",!0)]}),_:1})}}}),k=e=>(re("data-v-4ea1ffe2"),e=e(),ae(),e),si={class:"changeIndicatorWrapper"},oi={key:0,class:"changeIndicatorsLeft changeIndicators"},li={key:0,class:"promptChangeIndicator changeIndicator"},ri={key:1,class:"negpromptChangeIndicator changeIndicator"},ai={key:2,class:"seedChangeIndicator changeIndicator"},di={key:3,class:"stepsChangeIndicator changeIndicator"},ui={key:4,class:"cfgChangeIndicator changeIndicator"},fi={key:5,class:"sizeChangeIndicator changeIndicator"},ci={key:6,class:"modelChangeIndicator changeIndicator"},hi={key:7,class:"samplerChangeIndicator changeIndicator"},gi={key:8,class:"otherChangeIndicator changeIndicator"},pi={class:"hoverOverlay"},mi=k(()=>o("strong",null,"This file",-1)),vi=k(()=>o("br",null,null,-1)),yi=k(()=>o("br",null,null,-1)),bi={key:0},Ai=k(()=>o("td",null,[o("span",{class:"promptChangeIndicator"},"+ Prompt")],-1)),ki={key:1},_i=k(()=>o("td",null,[o("span",{class:"negpromptChangeIndicator"},"- Prompt")],-1)),Ii={key:2},Si=k(()=>o("td",null,[o("span",{class:"seedChangeIndicator"},"Seed")],-1)),Ti={key:3},Ci=k(()=>o("td",null,[o("span",{class:"stepsChangeIndicator"},"Steps")],-1)),Ei={key:4},wi=k(()=>o("td",null,[o("span",{class:"cfgChangeIndicator"},"Cfg Scale")],-1)),Di={key:5},zi=k(()=>o("td",null,[o("span",{class:"sizeChangeIndicator"},"Size")],-1)),Qi={key:6},Pi=k(()=>o("td",null,[o("span",{class:"modelChangeIndicator"},"Model")],-1)),Oi=k(()=>o("br",null,null,-1)),$i={key:7},Ni=k(()=>o("td",null,[o("span",{class:"samplerChangeIndicator"},"Sampler")],-1)),Bi=k(()=>o("br",null,null,-1)),Mi=k(()=>o("br",null,null,-1)),Fi={key:0},Ri=k(()=>o("span",{class:"otherChangeIndicator"},"Other",-1)),Vi=k(()=>o("br",null,null,-1)),ji=k(()=>o("br",null,null,-1)),Li={key:1,class:"changeIndicatorsRight changeIndicators"},Ji={key:0,class:"promptChangeIndicator changeIndicator"},Hi={key:1,class:"negpromptChangeIndicator changeIndicator"},Ui={key:2,class:"seedChangeIndicator changeIndicator"},Ki={key:3,class:"stepsChangeIndicator changeIndicator"},Wi={key:4,class:"cfgChangeIndicator changeIndicator"},Yi={key:5,class:"sizeChangeIndicator changeIndicator"},Gi={key:6,class:"modelChangeIndicator changeIndicator"},qi={key:7,class:"samplerChangeIndicator changeIndicator"},Zi={key:8,class:"otherChangeIndicator changeIndicator"},xi={class:"hoverOverlay"},Xi=k(()=>o("strong",null,"This file",-1)),en=k(()=>o("br",null,null,-1)),tn=k(()=>o("br",null,null,-1)),nn={key:0},sn=k(()=>o("td",null,[o("span",{class:"promptChangeIndicator"},"+ Prompt")],-1)),on={key:1},ln=k(()=>o("td",null,[o("span",{class:"negpromptChangeIndicator"},"- Prompt")],-1)),rn={key:2},an=k(()=>o("td",null,[o("span",{class:"seedChangeIndicator"},"Seed")],-1)),dn={key:3},un=k(()=>o("td",null,[o("span",{class:"stepsChangeIndicator"},"Steps")],-1)),fn={key:4},cn=k(()=>o("td",null,[o("span",{class:"cfgChangeIndicator"},"Cfg Scale")],-1)),hn={key:5},gn=k(()=>o("td",null,[o("span",{class:"sizeChangeIndicator"},"Size")],-1)),pn={key:6},mn=k(()=>o("td",null,[o("span",{class:"modelChangeIndicator"},"Model")],-1)),vn=k(()=>o("br",null,null,-1)),yn={key:7},bn=k(()=>o("td",null,[o("span",{class:"samplerChangeIndicator"},"Sampler")],-1)),An=k(()=>o("br",null,null,-1)),kn=k(()=>o("br",null,null,-1)),_n={key:0},In=k(()=>o("span",{class:"otherChangeIndicator"},"Other",-1)),Sn=k(()=>o("br",null,null,-1)),Tn=k(()=>o("br",null,null,-1)),Cn=de({__name:"ChangeIndicator",props:{genDiffToPrevious:{},genDiffToNext:{},genInfo:{}},setup(e){function t(i){const r=["prompt","negativePrompt","seed","steps","cfgScale","size","Model","others"],a=Object.keys(i).filter(v=>!r.includes(v));return Object.fromEntries(a.map(v=>[v,i[v]]))}function n(i){return Object.keys(t(i)).length>0}return(i,r)=>(s(),d("div",si,[i.genDiffToPrevious.empty?h("",!0):(s(),d("div",oi,["prompt"in i.genDiffToPrevious.diff?(s(),d("div",li,"P+")):h("",!0),"negativePrompt"in i.genDiffToPrevious.diff?(s(),d("div",ri,"P-")):h("",!0),"seed"in i.genDiffToPrevious.diff?(s(),d("div",ai,"Se")):h("",!0),"steps"in i.genDiffToPrevious.diff?(s(),d("div",di,"St")):h("",!0),"cfgScale"in i.genDiffToPrevious.diff?(s(),d("div",ui,"Cf")):h("",!0),"size"in i.genDiffToPrevious.diff?(s(),d("div",fi,"Si")):h("",!0),"Model"in i.genDiffToPrevious.diff?(s(),d("div",ci,"Mo")):h("",!0),"Sampler"in i.genDiffToPrevious.diff?(s(),d("div",hi,"Sa")):h("",!0),n(i.genDiffToPrevious.diff)?(s(),d("div",gi,"Ot")):h("",!0)])),o("div",pi,[o("small",null,[y(I(Ie)),mi,m(" vs "+f(i.genDiffToPrevious.otherFile)+" ",1),vi,yi,o("table",null,["prompt"in i.genDiffToPrevious.diff?(s(),d("tr",bi,[Ai,o("td",null,f(i.genDiffToPrevious.diff.prompt)+" tokens changed",1)])):h("",!0),"negativePrompt"in i.genDiffToPrevious.diff?(s(),d("tr",ki,[_i,o("td",null,f(i.genDiffToPrevious.diff.negativePrompt)+" tokens changed",1)])):h("",!0),"seed"in i.genDiffToPrevious.diff?(s(),d("tr",Ii,[Si,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.seed[0]),1),m(" vs "+f(i.genDiffToPrevious.diff.seed[1]),1)])])):h("",!0),"steps"in i.genDiffToPrevious.diff?(s(),d("tr",Ti,[Ci,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.steps[0]),1),m(" vs "+f(i.genDiffToPrevious.diff.steps[1]),1)])])):h("",!0),"cfgScale"in i.genDiffToPrevious.diff?(s(),d("tr",Ei,[wi,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.cfgScale[0]),1),m(" vs "+f(i.genDiffToPrevious.diff.cfgScale[1]),1)])])):h("",!0),"size"in i.genDiffToPrevious.diff?(s(),d("tr",Di,[zi,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.size[0]),1),m(" vs "+f(i.genDiffToPrevious.diff.size[1]),1)])])):h("",!0),"Model"in i.genDiffToPrevious.diff?(s(),d("tr",Qi,[Pi,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.Model[0]),1),Oi,m(" vs "+f(i.genDiffToPrevious.diff.Model[1]),1)])])):h("",!0),"Sampler"in i.genDiffToPrevious.diff?(s(),d("tr",$i,[Ni,o("td",null,[o("strong",null,f(i.genDiffToPrevious.diff.Sampler[0]),1),Bi,m(" vs "+f(i.genDiffToPrevious.diff.Sampler[1]),1)])])):h("",!0)]),Mi,n(i.genDiffToPrevious.diff)?(s(),d("div",Fi,[Ri,m(" props that changed:"),Vi,ji,o("ul",null,[(s(!0),d(Q,null,$(t(i.genDiffToPrevious.diff),(a,v)=>(s(),d("li",null,f(v),1))),256))])])):h("",!0)])]),i.genDiffToNext.empty?h("",!0):(s(),d("div",Li,["prompt"in i.genDiffToNext.diff?(s(),d("div",Ji,"P+")):h("",!0),"negativePrompt"in i.genDiffToNext.diff?(s(),d("div",Hi,"P-")):h("",!0),"seed"in i.genDiffToNext.diff?(s(),d("div",Ui,"Se")):h("",!0),"steps"in i.genDiffToNext.diff?(s(),d("div",Ki,"St")):h("",!0),"cfgScale"in i.genDiffToNext.diff?(s(),d("div",Wi,"Cf")):h("",!0),"size"in i.genDiffToNext.diff?(s(),d("div",Yi,"Si")):h("",!0),"Model"in i.genDiffToNext.diff?(s(),d("div",Gi,"Mo")):h("",!0),"Sampler"in i.genDiffToNext.diff?(s(),d("div",qi,"Sa")):h("",!0),n(i.genDiffToNext.diff)?(s(),d("div",Zi,"Ot")):h("",!0)])),o("div",xi,[o("small",null,[y(I(Ie)),Xi,m(" vs "+f(i.genDiffToNext.otherFile)+" ",1),en,tn,o("table",null,["prompt"in i.genDiffToNext.diff?(s(),d("tr",nn,[sn,o("td",null,f(i.genDiffToNext.diff.prompt)+" tokens changed",1)])):h("",!0),"negativePrompt"in i.genDiffToNext.diff?(s(),d("tr",on,[ln,o("td",null,f(i.genDiffToNext.diff.negativePrompt)+" tokens changed",1)])):h("",!0),"seed"in i.genDiffToNext.diff?(s(),d("tr",rn,[an,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.seed[0]),1),m(" vs "+f(i.genDiffToNext.diff.seed[1]),1)])])):h("",!0),"steps"in i.genDiffToNext.diff?(s(),d("tr",dn,[un,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.steps[0]),1),m(" vs "+f(i.genDiffToNext.diff.steps[1]),1)])])):h("",!0),"cfgScale"in i.genDiffToNext.diff?(s(),d("tr",fn,[cn,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.cfgScale[0]),1),m(" vs "+f(i.genDiffToNext.diff.cfgScale[1]),1)])])):h("",!0),"size"in i.genDiffToNext.diff?(s(),d("tr",hn,[gn,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.size[0]),1),m(" vs "+f(i.genDiffToNext.diff.size[1]),1)])])):h("",!0),"Model"in i.genDiffToNext.diff?(s(),d("tr",pn,[mn,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.Model[0]),1),vn,m(" vs "+f(i.genDiffToNext.diff.Model[1]),1)])])):h("",!0),"Sampler"in i.genDiffToNext.diff?(s(),d("tr",yn,[bn,o("td",null,[o("strong",null,f(i.genDiffToNext.diff.Sampler[0]),1),An,m(" vs "+f(i.genDiffToNext.diff.Sampler[1]),1)])])):h("",!0)]),kn,n(i.genDiffToNext.diff)?(s(),d("div",_n,[In,m(" props that changed:"),Sn,Tn,o("ul",null,[(s(!0),d(Q,null,$(t(i.genDiffToNext.diff),(a,v)=>(s(),d("li",null,f(v),1))),256))])])):h("",!0)])])]))}});const En=$e(Cn,[["__scopeId","data-v-4ea1ffe2"]]),wn=e=>(re("data-v-27cbce0c"),e=e(),ae(),e),Dn=["data-idx"],zn={key:1,class:"more"},Qn={class:"float-btn-wrap"},Pn={key:1,class:"tags-container"},On=["url"],$n={class:"play-icon"},Nn=["src"],Bn={key:0,class:"tags-container"},Mn=wn(()=>o("div",{class:"audio-icon"},"🎵",-1)),Fn={key:0,class:"tags-container"},Rn={key:5,class:"preview-icon-wrap"},Vn={key:1,class:"dir-cover-container"},jn=["src"],Ln={key:6,class:"profile"},Jn=["title"],Hn={class:"basic-info"},Un={style:{"margin-right":"4px"}},Y=160,Kn=de({__name:"FileItem",props:{file:{},idx:{},selected:{type:Boolean,default:!1},showMenuIdx:{},cellWidth:{},fullScreenPreviewImageUrl:{},enableRightClickMenu:{type:Boolean,default:!0},enableCloseIcon:{type:Boolean,default:!1},isSelectedMutilFiles:{type:Boolean},genInfo:{},enableChangeIndicator:{type:Boolean},extraTags:{},coverFiles:{},getGenDiff:{},getGenDiffWatchDep:{}},emits:["update:showMenuIdx","fileItemClick","dragstart","dragend","dropToFolder","previewVisibleChange","contextMenuClick","close-icon-click","tiktokView"],setup(e,{emit:t}){const n=e;Xe(l=>({"0163f23c":l.$props.cellWidth+"px"}));const i=Qe(),r=et(),a=ve(),v=ve(),c=tt(()=>{const{getGenDiff:l,file:A,idx:b}=n;l&&(v.value=l(A.gen_info_obj,b,1,A),a.value=l(A.gen_info_obj,b,-1,A))},200+100*Math.random());it(()=>{var l;return(l=n.getGenDiffWatchDep)==null?void 0:l.call(n,n.idx)},()=>{c()},{immediate:!0,deep:!0});const g=H(()=>r.tagMap.get(n.file.fullpath)??[]),_=H(()=>{const l=i.gridThumbnailResolution;return i.enableThumbnail?ye(n.file,[l,l].join("x")):nt(n.file)}),E=H(()=>{var l;return(((l=i.conf)==null?void 0:l.all_custom_tags)??[]).reduce((A,b)=>[...A,{...b,selected:!!g.value.find(R=>R.id===b.id)}],[])}),D=H(()=>E.value.find(l=>l.type==="custom"&&l.name==="like")),T=()=>{ft(D.value),t("contextMenuClick",{key:`toggle-tag-${D.value.id}`},n.file,n.idx)},L=l=>{n.file.type==="dir"&&(l.preventDefault(),l.dataTransfer&&(l.dataTransfer.dropEffect="move"))},X=l=>{n.file.type==="dir"&&(l.preventDefault(),l.stopPropagation(),t("dropToFolder",l,n.file,n.idx))},P=l=>{i.magicSwitchTiktokView&&n.file.type==="file"&&be(n.file.name)?(l.stopPropagation(),l.preventDefault(),t("tiktokView",n.file,n.idx),setTimeout(()=>{ct()},500)):t("fileItemClick",l,n.file,n.idx)},C=()=>{i.magicSwitchTiktokView?t("tiktokView",n.file,n.idx):ht(n.file,l=>t("contextMenuClick",{key:`toggle-tag-${l}`},n.file,n.idx),()=>t("tiktokView",n.file,n.idx))},V=()=>{i.magicSwitchTiktokView?t("tiktokView",n.file,n.idx):gt(n.file,l=>t("contextMenuClick",{key:`toggle-tag-${l}`},n.file,n.idx),()=>t("tiktokView",n.file,n.idx))};return(l,A)=>{const b=U,R=Pe,K=Oe,F=pt,N=mt;return s(),S(b,{trigger:["contextmenu"],visible:I(i).longPressOpenContextMenu?typeof l.idx=="number"&&l.showMenuIdx===l.idx:void 0,"onUpdate:visible":A[7]||(A[7]=M=>typeof l.idx=="number"&&t("update:showMenuIdx",M?l.idx:-1))},{overlay:p(()=>[l.enableRightClickMenu?(s(),S(we,{key:0,file:l.file,idx:l.idx,"selected-tag":g.value,onContextMenuClick:A[6]||(A[6]=(M,u,w)=>t("contextMenuClick",M,u,w)),"is-selected-mutil-files":l.isSelectedMutilFiles},null,8,["file","idx","selected-tag","is-selected-mutil-files"])):h("",!0)]),default:p(()=>{var M;return[(s(),d("li",{class:j(["file file-item-trigger grid",{clickable:l.file.type==="dir",selected:l.selected}]),"data-idx":l.idx,key:l.file.name,draggable:"true",onDragstart:A[3]||(A[3]=u=>t("dragstart",u,l.idx)),onDragend:A[4]||(A[4]=u=>t("dragend",u,l.idx)),onDragover:L,onDrop:X,onClickCapture:A[5]||(A[5]=u=>P(u))},[o("div",null,[l.enableCloseIcon?(s(),d("div",{key:0,class:"close-icon",onClick:A[0]||(A[0]=u=>t("close-icon-click"))},[y(I(st))])):h("",!0),l.enableRightClickMenu?(s(),d("div",zn,[y(b,null,{overlay:p(()=>[y(we,{file:l.file,idx:l.idx,"selected-tag":g.value,onContextMenuClick:A[1]||(A[1]=(u,w,z)=>t("contextMenuClick",u,w,z)),"is-selected-mutil-files":l.isSelectedMutilFiles},null,8,["file","idx","selected-tag","is-selected-mutil-files"])]),default:p(()=>[o("div",Qn,[y(I(ot))])]),_:1}),l.file.type==="file"?(s(),S(b,{key:0},{overlay:p(()=>[E.value.length>1?(s(),S(K,{key:0,onClick:A[2]||(A[2]=u=>t("contextMenuClick",u,l.file,l.idx))},{default:p(()=>[(s(!0),d(Q,null,$(E.value,u=>(s(),S(R,{key:`toggle-tag-${u.id}`},{default:p(()=>[m(f(u.name)+" ",1),u.selected?(s(),S(I(Ne),{key:0})):(s(),S(I(Be),{key:1}))]),_:2},1024))),128))]),_:1})):h("",!0)]),default:p(()=>{var u,w;return[o("div",{class:j(["float-btn-wrap",{"like-selected":(u=D.value)==null?void 0:u.selected}]),onClick:T},[(w=D.value)!=null&&w.selected?(s(),S(I(lt),{key:0})):(s(),S(I(rt),{key:1}))],2)]}),_:1})):h("",!0)])):h("",!0),I(be)(l.file.name)?(s(),d("div",{key:l.file.fullpath,class:j(`idx-${l.idx} item-content`)},[l.enableChangeIndicator&&v.value&&a.value?(s(),S(En,{key:0,"gen-diff-to-next":v.value,"gen-diff-to-previous":a.value},null,8,["gen-diff-to-next","gen-diff-to-previous"])):h("",!0),y(F,{src:_.value,fallback:I(St),preview:{src:l.fullScreenPreviewImageUrl,onVisibleChange:(u,w)=>t("previewVisibleChange",u,w)}},null,8,["src","fallback","preview"]),g.value&&l.cellWidth>Y?(s(),d("div",Pn,[(s(!0),d(Q,null,$(l.extraTags??g.value,u=>(s(),S(N,{key:u.id,color:I(r).getColor(u)},{default:p(()=>[m(f(u.name),1)]),_:2},1032,["color"]))),128))])):h("",!0)],2)):I(at)(l.file.name)?(s(),d("div",{key:3,class:j(`idx-${l.idx} item-content video`),url:I(ee)(l.file),style:ze({"background-image":`url('${l.file.cover_url??I(ee)(l.file)}')`}),onClick:C},[o("div",$n,[o("img",{src:I(Qt),style:{width:"40px",height:"40px"}},null,8,Nn)]),g.value&&l.cellWidth>Y?(s(),d("div",Bn,[(s(!0),d(Q,null,$(g.value,u=>(s(),S(N,{key:u.id,color:I(r).getColor(u)},{default:p(()=>[m(f(u.name),1)]),_:2},1032,["color"]))),128))])):h("",!0)],14,On)):I(dt)(l.file.name)?(s(),d("div",{key:4,class:j(`idx-${l.idx} item-content audio`),onClick:V},[Mn,g.value&&l.cellWidth>Y?(s(),d("div",Fn,[(s(!0),d(Q,null,$(g.value,u=>(s(),S(N,{key:u.id,color:I(r).getColor(u)},{default:p(()=>[m(f(u.name),1)]),_:2},1032,["color"]))),128))])):h("",!0)],2)):(s(),d("div",Rn,[l.file.type==="file"?(s(),S(I(It),{key:0,class:"icon center"})):(M=l.coverFiles)!=null&&M.length&&l.cellWidth>160?(s(),d("div",Vn,[(s(!0),d(Q,null,$(l.coverFiles,u=>(s(),d("img",{class:"dir-cover-item",src:u.media_type==="image"?I(ye)(u):I(ee)(u),key:u.fullpath},null,8,jn))),128))])):(s(),S(I(ut),{key:2,class:"icon center"}))])),l.cellWidth>Y?(s(),d("div",Ln,[o("div",{class:"name line-clamp-1",title:l.file.name},f(l.file.name),9,Jn),o("div",Hn,[o("div",Un,f(l.file.type)+" "+f(l.file.size),1),o("div",null,f(l.file.date),1)])])):h("",!0)])],42,Dn))]}),_:1},8,["visible"])}}});const Gn=$e(Kn,[["__scopeId","data-v-27cbce0c"]]);export{Gn as F,we as _,je as s}; diff --git a/vue/dist/assets/ImgSliPagePane-57b694a1.js b/vue/dist/assets/ImgSliPagePane-57b694a1.js deleted file mode 100644 index 5da9538..0000000 --- a/vue/dist/assets/ImgSliPagePane-57b694a1.js +++ /dev/null @@ -1 +0,0 @@ -import{d as a,o as t,k as s,c as n,cF as _,q as o}from"./index-2865012e.js";const c={class:"img-sli-container"},i=a({__name:"ImgSliPagePane",props:{paneIdx:{},tabIdx:{},left:{},right:{}},setup(l){return(e,r)=>(t(),s("div",c,[n(_,{left:e.left,right:e.right},null,8,["left","right"])]))}});const d=o(i,[["__scopeId","data-v-ae3fb9a8"]]);export{d as default}; diff --git a/vue/dist/assets/ImgSliPagePane-5f5e28b7.css b/vue/dist/assets/ImgSliPagePane-5f5e28b7.css new file mode 100644 index 0000000..ddc617c --- /dev/null +++ b/vue/dist/assets/ImgSliPagePane-5f5e28b7.css @@ -0,0 +1 @@ +.img-sli-container[data-v-ec71de83]{position:relative;overflow-y:auto;height:calc(100vh - 40px)} diff --git a/vue/dist/assets/ImgSliPagePane-868b21f8.css b/vue/dist/assets/ImgSliPagePane-868b21f8.css deleted file mode 100644 index 08ad926..0000000 --- a/vue/dist/assets/ImgSliPagePane-868b21f8.css +++ /dev/null @@ -1 +0,0 @@ -.img-sli-container[data-v-ae3fb9a8]{position:relative;overflow-y:auto;height:calc(100vh - 40px)} diff --git a/vue/dist/assets/ImgSliPagePane-a56ba321.js b/vue/dist/assets/ImgSliPagePane-a56ba321.js new file mode 100644 index 0000000..9bd3683 --- /dev/null +++ b/vue/dist/assets/ImgSliPagePane-a56ba321.js @@ -0,0 +1 @@ +import{d as t,o as a,j as n,c as s,b_ as _,n as o}from"./index-c24b5c8e.js";const c={class:"img-sli-container"},i=t({__name:"ImgSliPagePane",props:{paneIdx:{},tabIdx:{},left:{},right:{}},setup(l){return(e,r)=>(a(),n("div",c,[s(_,{left:e.left,right:e.right},null,8,["left","right"])]))}});const p=o(i,[["__scopeId","data-v-ec71de83"]]);export{p as default}; diff --git a/vue/dist/assets/MatchedImageGrid-16f21a80.js b/vue/dist/assets/MatchedImageGrid-16f21a80.js new file mode 100644 index 0000000..d8ff404 --- /dev/null +++ b/vue/dist/assets/MatchedImageGrid-16f21a80.js @@ -0,0 +1 @@ +import{d as pe,aJ as ue,aK as fe,s as ge,aH as me,p as he,o as m,j as I,c as n,y as e,x as o,B as E,k as d,C as ke,t as c,l as v,v as K,O as ve,Q as L,m as N,Y as we,V as _e,$ as Ce,a4 as Se,at as Ie,au as xe,n as be}from"./index-c24b5c8e.js";import{L as ye,R as Me,f as Ae,M as Ve}from"./MultiSelectKeep-ea31915e.js";import{s as Fe,F as De}from"./FileItem-c62b10f3.js";import{u as ze}from"./hook-4227849e.js";import{g as $e,o as O}from"./index-47a4d52c.js";/* empty css */import"./index-5130babf.js";import"./shortcut-4e374057.js";import"./_isIterateeCall-19da1ec8.js";const x=r=>(Ie("data-v-795e5ef4"),r=r(),xe(),r),Ge={class:"hint"},Te={class:"action-bar"},Be={class:"title line-clamp-1"},Re=x(()=>d("div",{"flex-placeholder":""},null,-1)),Je=x(()=>d("div",{style:{padding:"16px 0 512px"}},null,-1)),Ee={key:1,class:"no-res-hint"},Ke=x(()=>d("p",{class:"hint"},"暂无结果",-1)),Le=[Ke],Ne={key:2,class:"preview-switch"},Oe=pe({__name:"MatchedImageGrid",props:{tabIdx:{},paneIdx:{},id:{},title:{},paths:{}},setup(r){const h=r,t=ue({res:[],load:!1,loading:!1,async next(){var s;if(!(t.loading||t.load)){t.loading=!0;try{const u=t.res.length,f=(h.paths??[]).slice(u,u+200);if(!f.length){t.load=!0;return}const C=await fe(f),g=f.map(S=>C[S]).filter(Boolean);t.res.push(...g),u+200>=(((s=h.paths)==null?void 0:s.length)??0)&&(t.load=!0)}finally{t.loading=!1}}},async reset(){t.res=[],t.load=!1,await t.next()}}),{queue:P,images:l,onContextMenuClickU:b,stackViewEl:U,previewIdx:p,previewing:y,onPreviewVisibleChange:W,previewImgMove:M,canPreview:A,itemSize:V,gridItems:q,showGenInfo:k,imageGenInfo:F,q:Q,multiSelectedIdxs:w,onFileItemClick:j,scroller:D,showMenuIdx:_,onFileDragStart:H,onFileDragEnd:Y,cellWidth:X,onScroll:z,saveAllFileAsJson:Z,saveLoadedFileAsJson:ee,changeIndchecked:te,seedChangeChecked:le,getGenDiff:ie,getGenDiffWatchDep:se}=ze(t);ge(()=>h.paths,async()=>{var s;await t.reset({refetch:!0}),await me(),(s=D.value)==null||s.scrollToItem(0),z()},{immediate:!0});const ne=he(),{onClearAllSelected:oe,onSelectAll:ae,onReverseSelect:de}=$e(),ce=()=>{l.value.length!==0&&O(l.value,0)};return(s,i)=>{const u=Ve,f=we,C=_e,g=Ce,S=Se;return m(),I("div",{class:"container",ref_key:"stackViewEl",ref:U},[n(u,{show:!!e(w).length||e(ne).keepMultiSelect,onClearAllSelected:e(oe),onSelectAll:e(ae),onReverseSelect:e(de)},null,8,["show","onClearAllSelected","onSelectAll","onReverseSelect"]),n(S,{size:"large",spinning:!e(P).isIdle||t.loading},{default:o(()=>{var $,G,T,B;return[n(C,{visible:e(k),"onUpdate:visible":i[1]||(i[1]=a=>E(k)?k.value=a:null),width:"70vw","mask-closable":"",onOk:i[2]||(i[2]=a=>k.value=!1)},{cancelText:o(()=>[]),default:o(()=>[n(f,{active:"",loading:!e(Q).isIdle},{default:o(()=>[d("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:i[0]||(i[0]=a=>e(ke)(e(F)))},[d("div",Ge,c(s.$t("doubleClickToCopy")),1),v(" "+c(e(F)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),d("div",Te,[d("div",Be,"🧩 "+c(h.title),1),Re,n(g,{onClick:ce,disabled:!(($=e(l))!=null&&$.length)},{default:o(()=>[v(c(s.$t("tiktokView")),1)]),_:1},8,["disabled"]),n(g,{onClick:e(ee),disabled:!((G=e(l))!=null&&G.length)},{default:o(()=>[v(c(s.$t("saveLoadedImageAsJson")),1)]),_:1},8,["onClick","disabled"]),n(g,{onClick:e(Z),disabled:!((T=e(l))!=null&&T.length)},{default:o(()=>[v(c(s.$t("saveAllAsJson")),1)]),_:1},8,["onClick","disabled"])]),(B=e(l))!=null&&B.length?(m(),K(e(Fe),{key:0,ref_key:"scroller",ref:D,class:"file-list",items:e(l),"item-size":e(V).first,"key-field":"fullpath","item-secondary-size":e(V).second,gridItems:e(q),onScroll:e(z)},{after:o(()=>[Je]),default:o(({item:a,index:R})=>[n(De,{idx:R,file:a,"cell-width":e(X),"show-menu-idx":e(_),"onUpdate:showMenuIdx":i[3]||(i[3]=J=>E(_)?_.value=J:null),onDragstart:e(H),onDragend:e(Y),onFileItemClick:e(j),onTiktokView:(J,re)=>e(O)(e(l),re),"full-screen-preview-image-url":e(l)[e(p)]?e(ve)(e(l)[e(p)]):"",selected:e(w).includes(R),onContextMenuClick:e(b),onPreviewVisibleChange:e(W),"is-selected-mutil-files":e(w).length>1,"enable-change-indicator":e(te),"seed-change-checked":e(le),"get-gen-diff":e(ie),"get-gen-diff-watch-dep":e(se)},null,8,["idx","file","cell-width","show-menu-idx","onDragstart","onDragend","onFileItemClick","onTiktokView","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange","is-selected-mutil-files","enable-change-indicator","seed-change-checked","get-gen-diff","get-gen-diff-watch-dep"])]),_:1},8,["items","item-size","item-secondary-size","gridItems","onScroll"])):(m(),I("div",Ee,Le)),e(y)?(m(),I("div",Ne,[n(e(ye),{onClick:i[4]||(i[4]=a=>e(M)("prev")),class:L({disable:!e(A)("prev")})},null,8,["class"]),n(e(Me),{onClick:i[5]||(i[5]=a=>e(M)("next")),class:L({disable:!e(A)("next")})},null,8,["class"])])):N("",!0)]}),_:1},8,["spinning"]),e(y)&&e(l)&&e(l)[e(p)]?(m(),K(Ae,{key:0,file:e(l)[e(p)],idx:e(p),onContextMenuClick:e(b)},null,8,["file","idx","onContextMenuClick"])):N("",!0)],512)}}});const Ze=be(Oe,[["__scopeId","data-v-795e5ef4"]]);export{Ze as default}; diff --git a/vue/dist/assets/MatchedImageGrid-19d3b31e.css b/vue/dist/assets/MatchedImageGrid-19d3b31e.css new file mode 100644 index 0000000..0b5438a --- /dev/null +++ b/vue/dist/assets/MatchedImageGrid-19d3b31e.css @@ -0,0 +1 @@ +.container[data-v-6e837a6f]{background:var(--zp-secondary-background);position:relative}.container .action-bar[data-v-6e837a6f]{display:flex;align-items:center;user-select:none;gap:4px;padding:4px}.container .action-bar>*[data-v-6e837a6f]{flex-wrap:wrap}.container .file-list[data-v-6e837a6f]{list-style:none;padding:8px;overflow:auto;height:calc(var(--pane-max-height) - 40px);width:100%}.container .no-res-hint[data-v-6e837a6f]{height:var(--pane-max-height);display:flex;align-items:center;flex-direction:column;justify-content:center}.container .no-res-hint .hint[data-v-6e837a6f]{font-size:1.6em;margin-bottom:2em;text-align:center} diff --git a/vue/dist/assets/MatchedImageGrid-53718263.css b/vue/dist/assets/MatchedImageGrid-53718263.css new file mode 100644 index 0000000..cd78d49 --- /dev/null +++ b/vue/dist/assets/MatchedImageGrid-53718263.css @@ -0,0 +1 @@ +.container[data-v-795e5ef4]{background:var(--zp-secondary-background);position:relative;height:var(--pane-max-height)}.action-bar[data-v-795e5ef4]{display:flex;align-items:center;user-select:none;gap:6px;padding:6px 8px}.title[data-v-795e5ef4]{font-weight:700;max-width:40vw}.file-list[data-v-795e5ef4]{list-style:none;padding:8px;overflow:auto;height:calc(var(--pane-max-height) - 44px);width:100%}.no-res-hint[data-v-795e5ef4]{height:calc(var(--pane-max-height) - 44px);display:flex;align-items:center;flex-direction:column;justify-content:center}.no-res-hint .hint[data-v-795e5ef4]{font-size:1.2em;opacity:.7}.preview-switch[data-v-795e5ef4]{position:fixed;bottom:24px;right:24px;display:flex;gap:8px;font-size:36px;user-select:none}.disable[data-v-795e5ef4]{opacity:.3;pointer-events:none} diff --git a/vue/dist/assets/MatchedImageGrid-646995ed.js b/vue/dist/assets/MatchedImageGrid-646995ed.js new file mode 100644 index 0000000..d123d83 --- /dev/null +++ b/vue/dist/assets/MatchedImageGrid-646995ed.js @@ -0,0 +1 @@ +import{d as ke,r as he,s as C,aH as G,p as ve,o as u,j as S,c as n,y as e,x as o,B as z,k as d,C as Ie,t as a,l as p,v as U,O as we,aB as _e,m as b,Q as N,Y as Ce,V as Se,a2 as be,$ as E,a4 as ye,at as xe,au as Me,aI as Ae,n as Te}from"./index-c24b5c8e.js";import{L as Ve,R as $e,f as De,M as Fe}from"./MultiSelectKeep-ea31915e.js";import{s as Be,F as Re}from"./FileItem-c62b10f3.js";import{c as Ge,u as ze}from"./hook-4227849e.js";import{g as Ue,o as J}from"./index-47a4d52c.js";/* empty css */import"./index-5130babf.js";import"./shortcut-4e374057.js";import"./_isIterateeCall-19da1ec8.js";const Ne=c=>(xe("data-v-6e837a6f"),c=c(),Me(),c),Ee={class:"hint"},Je={class:"action-bar"},Le=Ne(()=>d("div",{style:{padding:"16px 0 512px"}},null,-1)),Oe={key:1},Pe={class:"no-res-hint"},Ke={class:"hint"},We={key:2,class:"preview-switch"},qe=ke({__name:"MatchedImageGrid",props:{tabIdx:{},paneIdx:{},selectedTagIds:{},id:{}},setup(c){const k=c,m=he(!1),g=Ge(t=>Ae({...k.selectedTagIds,random_sort:m.value},t)),{queue:L,images:s,onContextMenuClickU:y,stackViewEl:O,previewIdx:r,previewing:x,onPreviewVisibleChange:P,previewImgMove:M,canPreview:A,itemSize:T,gridItems:K,showGenInfo:f,imageGenInfo:V,q:W,multiSelectedIdxs:h,onFileItemClick:q,scroller:v,showMenuIdx:I,onFileDragStart:Q,onFileDragEnd:j,cellWidth:H,onScroll:w,saveAllFileAsJson:Y,props:X,saveLoadedFileAsJson:Z,changeIndchecked:ee,seedChangeChecked:te,getGenDiff:le,getGenDiffWatchDep:ne}=ze(g);C(()=>k.selectedTagIds,async()=>{var t;await g.reset(),await G(),(t=v.value)==null||t.scrollToItem(0),w()},{immediate:!0}),C(m,async()=>{var t;await g.reset(),await G(),(t=v.value)==null||t.scrollToItem(0),w()}),C(()=>k,async t=>{X.value=t},{deep:!0,immediate:!0});const se=ve(),{onClearAllSelected:ie,onSelectAll:oe,onReverseSelect:ae}=Ue(),de=()=>{s.value.length!==0&&J(s.value,0)};return(t,l)=>{const ce=Fe,re=Ce,ue=Se,pe=be,_=E,me=E,ge=ye;return u(),S("div",{class:"container",ref_key:"stackViewEl",ref:O},[n(ce,{show:!!e(h).length||e(se).keepMultiSelect,onClearAllSelected:e(ie),onSelectAll:e(oe),onReverseSelect:e(ae)},null,8,["show","onClearAllSelected","onSelectAll","onReverseSelect"]),n(ge,{size:"large",spinning:!e(L).isIdle},{default:o(()=>{var $,D,F;return[n(ue,{visible:e(f),"onUpdate:visible":l[1]||(l[1]=i=>z(f)?f.value=i:null),width:"70vw","mask-closable":"",onOk:l[2]||(l[2]=i=>f.value=!1)},{cancelText:o(()=>[]),default:o(()=>[n(re,{active:"",loading:!e(W).isIdle},{default:o(()=>[d("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:l[0]||(l[0]=i=>e(Ie)(e(V)))},[d("div",Ee,a(t.$t("doubleClickToCopy")),1),p(" "+a(e(V)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),d("div",Je,[n(pe,{checked:m.value,"onUpdate:checked":l[3]||(l[3]=i=>m.value=i),"checked-children":t.$t("randomSort"),"un-checked-children":t.$t("sortByDate")},null,8,["checked","checked-children","un-checked-children"]),n(_,{onClick:de,disabled:!(($=e(s))!=null&&$.length)},{default:o(()=>[p(a(t.$t("tiktokView")),1)]),_:1},8,["disabled"]),n(_,{onClick:e(Z)},{default:o(()=>[p(a(t.$t("saveLoadedImageAsJson")),1)]),_:1},8,["onClick"]),n(_,{onClick:e(Y)},{default:o(()=>[p(a(t.$t("saveAllAsJson")),1)]),_:1},8,["onClick"])]),(D=e(s))!=null&&D.length?(u(),U(e(Be),{key:0,ref_key:"scroller",ref:v,class:"file-list",items:e(s),"item-size":e(T).first,"key-field":"fullpath","item-secondary-size":e(T).second,gridItems:e(K),onScroll:e(w)},{after:o(()=>[Le]),default:o(({item:i,index:B})=>[n(Re,{idx:B,file:i,"cell-width":e(H),"show-menu-idx":e(I),"onUpdate:showMenuIdx":l[4]||(l[4]=R=>z(I)?I.value=R:null),onDragstart:e(Q),onDragend:e(j),onFileItemClick:e(q),onTiktokView:(R,fe)=>e(J)(e(s),fe),"full-screen-preview-image-url":e(s)[e(r)]?e(we)(e(s)[e(r)]):"",selected:e(h).includes(B),onContextMenuClick:e(y),onPreviewVisibleChange:e(P),"is-selected-mutil-files":e(h).length>1,"enable-change-indicator":e(ee),"seed-change-checked":e(te),"get-gen-diff":e(le),"get-gen-diff-watch-dep":e(ne)},null,8,["idx","file","cell-width","show-menu-idx","onDragstart","onDragend","onFileItemClick","onTiktokView","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange","is-selected-mutil-files","enable-change-indicator","seed-change-checked","get-gen-diff","get-gen-diff-watch-dep"])]),_:1},8,["items","item-size","item-secondary-size","gridItems","onScroll"])):e(g).load&&t.selectedTagIds.and_tags.length===1&&!((F=t.selectedTagIds.folder_paths_str)!=null&&F.trim())?(u(),S("div",Oe,[d("div",Pe,[d("p",Ke,a(t.$t("tagSearchNoResultsMessage")),1),n(me,{onClick:l[5]||(l[5]=i=>e(_e)()),type:"primary"},{default:o(()=>[p(a(t.$t("rebuildImageIndex")),1)]),_:1})])])):b("",!0),e(x)?(u(),S("div",We,[n(e(Ve),{onClick:l[6]||(l[6]=i=>e(M)("prev")),class:N({disable:!e(A)("prev")})},null,8,["class"]),n(e($e),{onClick:l[7]||(l[7]=i=>e(M)("next")),class:N({disable:!e(A)("next")})},null,8,["class"])])):b("",!0)]}),_:1},8,["spinning"]),e(x)&&e(s)&&e(s)[e(r)]?(u(),U(De,{key:0,file:e(s)[e(r)],idx:e(r),onContextMenuClick:e(y)},null,8,["file","idx","onContextMenuClick"])):b("",!0)],512)}}});const nt=Te(qe,[["__scopeId","data-v-6e837a6f"]]);export{nt as default}; diff --git a/vue/dist/assets/MatchedImageGrid-a8e00aa3.js b/vue/dist/assets/MatchedImageGrid-a8e00aa3.js deleted file mode 100644 index 67d2b42..0000000 --- a/vue/dist/assets/MatchedImageGrid-a8e00aa3.js +++ /dev/null @@ -1 +0,0 @@ -import{d as pe,Z as ue,bw as fe,v as ge,ad as me,r as he,o as m,k as I,c as n,z as e,y as o,C as U,l as d,E as ke,t as c,m as v,x as J,O as ve,Q as L,p as N,T as we,U as _e,W as Ce,aB as Se,aC as Ie,q as xe}from"./index-2865012e.js";import{S as be}from"./index-5aea14c7.js";import{L as ye,R as Me,f as Ae,M as Ve}from"./MultiSelectKeep-d96596db.js";import{s as Fe,F as ze}from"./FileItem-3bb21719.js";import{u as De}from"./hook-a753b2e2.js";import{g as Te,o as O}from"./index-9ff6b146.js";/* empty css */import"./index-50dada2e.js";import"./index-dfe4c7be.js";import"./index-85cde8a2.js";import"./index-f200274c.js";import"./index-cc5bdcee.js";import"./shortcut-7cf3ed76.js";import"./_isIterateeCall-3cdb292e.js";const x=r=>(Se("data-v-aea581a5"),r=r(),Ie(),r),Ge={class:"hint"},$e={class:"action-bar"},Be={class:"title line-clamp-1"},Re=x(()=>d("div",{"flex-placeholder":""},null,-1)),Ee=x(()=>d("div",{style:{padding:"16px 0 512px"}},null,-1)),Ue={key:1,class:"no-res-hint"},Je=x(()=>d("p",{class:"hint"},"暂无结果",-1)),Le=[Je],Ne={key:2,class:"preview-switch"},Oe=pe({__name:"MatchedImageGrid",props:{tabIdx:{},paneIdx:{},id:{},title:{},paths:{}},setup(r){const h=r,t=ue({res:[],load:!1,loading:!1,async next(){var s;if(!(t.loading||t.load)){t.loading=!0;try{const u=t.res.length,f=(h.paths??[]).slice(u,u+200);if(!f.length){t.load=!0;return}const C=await fe(f),g=f.map(S=>C[S]).filter(Boolean);t.res.push(...g),u+200>=(((s=h.paths)==null?void 0:s.length)??0)&&(t.load=!0)}finally{t.loading=!1}}},async reset(){t.res=[],t.load=!1,await t.next()}}),{queue:P,images:l,onContextMenuClickU:b,stackViewEl:W,previewIdx:p,previewing:y,onPreviewVisibleChange:q,previewImgMove:M,canPreview:A,itemSize:V,gridItems:K,showGenInfo:k,imageGenInfo:F,q:Q,multiSelectedIdxs:w,onFileItemClick:Z,scroller:z,showMenuIdx:_,onFileDragStart:j,onFileDragEnd:H,cellWidth:X,onScroll:D,saveAllFileAsJson:Y,saveLoadedFileAsJson:ee,changeIndchecked:te,seedChangeChecked:le,getGenDiff:ie,getGenDiffWatchDep:se}=De(t);ge(()=>h.paths,async()=>{var s;await t.reset({refetch:!0}),await me(),(s=z.value)==null||s.scrollToItem(0),D()},{immediate:!0});const ne=he(),{onClearAllSelected:oe,onSelectAll:ae,onReverseSelect:de}=Te(),ce=()=>{l.value.length!==0&&O(l.value,0)};return(s,i)=>{const u=Ve,f=we,C=_e,g=Ce,S=be;return m(),I("div",{class:"container",ref_key:"stackViewEl",ref:W},[n(u,{show:!!e(w).length||e(ne).keepMultiSelect,onClearAllSelected:e(oe),onSelectAll:e(ae),onReverseSelect:e(de)},null,8,["show","onClearAllSelected","onSelectAll","onReverseSelect"]),n(S,{size:"large",spinning:!e(P).isIdle||t.loading},{default:o(()=>{var T,G,$,B;return[n(C,{visible:e(k),"onUpdate:visible":i[1]||(i[1]=a=>U(k)?k.value=a:null),width:"70vw","mask-closable":"",onOk:i[2]||(i[2]=a=>k.value=!1)},{cancelText:o(()=>[]),default:o(()=>[n(f,{active:"",loading:!e(Q).isIdle},{default:o(()=>[d("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:i[0]||(i[0]=a=>e(ke)(e(F)))},[d("div",Ge,c(s.$t("doubleClickToCopy")),1),v(" "+c(e(F)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),d("div",$e,[d("div",Be,"🧩 "+c(h.title),1),Re,n(g,{onClick:ce,disabled:!((T=e(l))!=null&&T.length)},{default:o(()=>[v(c(s.$t("tiktokView")),1)]),_:1},8,["disabled"]),n(g,{onClick:e(ee),disabled:!((G=e(l))!=null&&G.length)},{default:o(()=>[v(c(s.$t("saveLoadedImageAsJson")),1)]),_:1},8,["onClick","disabled"]),n(g,{onClick:e(Y),disabled:!(($=e(l))!=null&&$.length)},{default:o(()=>[v(c(s.$t("saveAllAsJson")),1)]),_:1},8,["onClick","disabled"])]),(B=e(l))!=null&&B.length?(m(),J(e(Fe),{key:0,ref_key:"scroller",ref:z,class:"file-list",items:e(l),"item-size":e(V).first,"key-field":"fullpath","item-secondary-size":e(V).second,gridItems:e(K),onScroll:e(D)},{after:o(()=>[Ee]),default:o(({item:a,index:R})=>[n(ze,{idx:R,file:a,"cell-width":e(X),"show-menu-idx":e(_),"onUpdate:showMenuIdx":i[3]||(i[3]=E=>U(_)?_.value=E:null),onDragstart:e(j),onDragend:e(H),onFileItemClick:e(Z),onTiktokView:(E,re)=>e(O)(e(l),re),"full-screen-preview-image-url":e(l)[e(p)]?e(ve)(e(l)[e(p)]):"",selected:e(w).includes(R),onContextMenuClick:e(b),onPreviewVisibleChange:e(q),"is-selected-mutil-files":e(w).length>1,"enable-change-indicator":e(te),"seed-change-checked":e(le),"get-gen-diff":e(ie),"get-gen-diff-watch-dep":e(se)},null,8,["idx","file","cell-width","show-menu-idx","onDragstart","onDragend","onFileItemClick","onTiktokView","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange","is-selected-mutil-files","enable-change-indicator","seed-change-checked","get-gen-diff","get-gen-diff-watch-dep"])]),_:1},8,["items","item-size","item-secondary-size","gridItems","onScroll"])):(m(),I("div",Ue,Le)),e(y)?(m(),I("div",Ne,[n(e(ye),{onClick:i[4]||(i[4]=a=>e(M)("prev")),class:L({disable:!e(A)("prev")})},null,8,["class"]),n(e(Me),{onClick:i[5]||(i[5]=a=>e(M)("next")),class:L({disable:!e(A)("next")})},null,8,["class"])])):N("",!0)]}),_:1},8,["spinning"]),e(y)&&e(l)&&e(l)[e(p)]?(m(),J(Ae,{key:0,file:e(l)[e(p)],idx:e(p),onContextMenuClick:e(b)},null,8,["file","idx","onContextMenuClick"])):N("",!0)],512)}}});const st=xe(Oe,[["__scopeId","data-v-aea581a5"]]);export{st as default}; diff --git a/vue/dist/assets/MatchedImageGrid-c716d973.css b/vue/dist/assets/MatchedImageGrid-c716d973.css deleted file mode 100644 index b609180..0000000 --- a/vue/dist/assets/MatchedImageGrid-c716d973.css +++ /dev/null @@ -1 +0,0 @@ -.container[data-v-4815fec6]{background:var(--zp-secondary-background);position:relative}.container .action-bar[data-v-4815fec6]{display:flex;align-items:center;user-select:none;gap:4px;padding:4px}.container .action-bar>*[data-v-4815fec6]{flex-wrap:wrap}.container .file-list[data-v-4815fec6]{list-style:none;padding:8px;overflow:auto;height:calc(var(--pane-max-height) - 40px);width:100%}.container .no-res-hint[data-v-4815fec6]{height:var(--pane-max-height);display:flex;align-items:center;flex-direction:column;justify-content:center}.container .no-res-hint .hint[data-v-4815fec6]{font-size:1.6em;margin-bottom:2em;text-align:center} diff --git a/vue/dist/assets/MatchedImageGrid-d1641205.js b/vue/dist/assets/MatchedImageGrid-d1641205.js deleted file mode 100644 index 9834bd2..0000000 --- a/vue/dist/assets/MatchedImageGrid-d1641205.js +++ /dev/null @@ -1 +0,0 @@ -import{d as ke,$ as he,v as C,ad as z,r as ve,o as u,k as S,c as n,z as e,y as o,C as G,l as d,E as we,t as a,m as p,x as U,O as Ie,aJ as _e,p as b,Q as E,T as Ce,U as Se,W as J,aB as be,aC as ye,bv as xe,q as Me}from"./index-2865012e.js";import{S as Te}from"./index-5aea14c7.js";import{_ as Ae}from"./index-85cde8a2.js";import{L as $e,R as Ve,f as De,M as Fe}from"./MultiSelectKeep-d96596db.js";import{s as Be,F as Re}from"./FileItem-3bb21719.js";import{c as ze,u as Ge}from"./hook-a753b2e2.js";import{g as Ue,o as N}from"./index-9ff6b146.js";/* empty css */import"./index-50dada2e.js";import"./index-dfe4c7be.js";import"./index-f200274c.js";import"./index-cc5bdcee.js";import"./shortcut-7cf3ed76.js";import"./_isIterateeCall-3cdb292e.js";const Ee=c=>(be("data-v-4815fec6"),c=c(),ye(),c),Je={class:"hint"},Ne={class:"action-bar"},Le=Ee(()=>d("div",{style:{padding:"16px 0 512px"}},null,-1)),Oe={key:1},Pe={class:"no-res-hint"},We={class:"hint"},qe={key:2,class:"preview-switch"},Ke=ke({__name:"MatchedImageGrid",props:{tabIdx:{},paneIdx:{},selectedTagIds:{},id:{}},setup(c){const k=c,m=he(!1),g=ze(t=>xe({...k.selectedTagIds,random_sort:m.value},t)),{queue:L,images:s,onContextMenuClickU:y,stackViewEl:O,previewIdx:r,previewing:x,onPreviewVisibleChange:P,previewImgMove:M,canPreview:T,itemSize:A,gridItems:W,showGenInfo:f,imageGenInfo:$,q,multiSelectedIdxs:h,onFileItemClick:K,scroller:v,showMenuIdx:w,onFileDragStart:Q,onFileDragEnd:j,cellWidth:H,onScroll:I,saveAllFileAsJson:X,props:Y,saveLoadedFileAsJson:Z,changeIndchecked:ee,seedChangeChecked:te,getGenDiff:le,getGenDiffWatchDep:ne}=Ge(g);C(()=>k.selectedTagIds,async()=>{var t;await g.reset(),await z(),(t=v.value)==null||t.scrollToItem(0),I()},{immediate:!0}),C(m,async()=>{var t;await g.reset(),await z(),(t=v.value)==null||t.scrollToItem(0),I()}),C(()=>k,async t=>{Y.value=t},{deep:!0,immediate:!0});const se=ve(),{onClearAllSelected:ie,onSelectAll:oe,onReverseSelect:ae}=Ue(),de=()=>{s.value.length!==0&&N(s.value,0)};return(t,l)=>{const ce=Fe,re=Ce,ue=Se,pe=Ae,_=J,me=J,ge=Te;return u(),S("div",{class:"container",ref_key:"stackViewEl",ref:O},[n(ce,{show:!!e(h).length||e(se).keepMultiSelect,onClearAllSelected:e(ie),onSelectAll:e(oe),onReverseSelect:e(ae)},null,8,["show","onClearAllSelected","onSelectAll","onReverseSelect"]),n(ge,{size:"large",spinning:!e(L).isIdle},{default:o(()=>{var V,D,F;return[n(ue,{visible:e(f),"onUpdate:visible":l[1]||(l[1]=i=>G(f)?f.value=i:null),width:"70vw","mask-closable":"",onOk:l[2]||(l[2]=i=>f.value=!1)},{cancelText:o(()=>[]),default:o(()=>[n(re,{active:"",loading:!e(q).isIdle},{default:o(()=>[d("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:l[0]||(l[0]=i=>e(we)(e($)))},[d("div",Je,a(t.$t("doubleClickToCopy")),1),p(" "+a(e($)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),d("div",Ne,[n(pe,{checked:m.value,"onUpdate:checked":l[3]||(l[3]=i=>m.value=i),"checked-children":t.$t("randomSort"),"un-checked-children":t.$t("sortByDate")},null,8,["checked","checked-children","un-checked-children"]),n(_,{onClick:de,disabled:!((V=e(s))!=null&&V.length)},{default:o(()=>[p(a(t.$t("tiktokView")),1)]),_:1},8,["disabled"]),n(_,{onClick:e(Z)},{default:o(()=>[p(a(t.$t("saveLoadedImageAsJson")),1)]),_:1},8,["onClick"]),n(_,{onClick:e(X)},{default:o(()=>[p(a(t.$t("saveAllAsJson")),1)]),_:1},8,["onClick"])]),(D=e(s))!=null&&D.length?(u(),U(e(Be),{key:0,ref_key:"scroller",ref:v,class:"file-list",items:e(s),"item-size":e(A).first,"key-field":"fullpath","item-secondary-size":e(A).second,gridItems:e(W),onScroll:e(I)},{after:o(()=>[Le]),default:o(({item:i,index:B})=>[n(Re,{idx:B,file:i,"cell-width":e(H),"show-menu-idx":e(w),"onUpdate:showMenuIdx":l[4]||(l[4]=R=>G(w)?w.value=R:null),onDragstart:e(Q),onDragend:e(j),onFileItemClick:e(K),onTiktokView:(R,fe)=>e(N)(e(s),fe),"full-screen-preview-image-url":e(s)[e(r)]?e(Ie)(e(s)[e(r)]):"",selected:e(h).includes(B),onContextMenuClick:e(y),onPreviewVisibleChange:e(P),"is-selected-mutil-files":e(h).length>1,"enable-change-indicator":e(ee),"seed-change-checked":e(te),"get-gen-diff":e(le),"get-gen-diff-watch-dep":e(ne)},null,8,["idx","file","cell-width","show-menu-idx","onDragstart","onDragend","onFileItemClick","onTiktokView","full-screen-preview-image-url","selected","onContextMenuClick","onPreviewVisibleChange","is-selected-mutil-files","enable-change-indicator","seed-change-checked","get-gen-diff","get-gen-diff-watch-dep"])]),_:1},8,["items","item-size","item-secondary-size","gridItems","onScroll"])):e(g).load&&t.selectedTagIds.and_tags.length===1&&!((F=t.selectedTagIds.folder_paths_str)!=null&&F.trim())?(u(),S("div",Oe,[d("div",Pe,[d("p",We,a(t.$t("tagSearchNoResultsMessage")),1),n(me,{onClick:l[5]||(l[5]=i=>e(_e)()),type:"primary"},{default:o(()=>[p(a(t.$t("rebuildImageIndex")),1)]),_:1})])])):b("",!0),e(x)?(u(),S("div",qe,[n(e($e),{onClick:l[6]||(l[6]=i=>e(M)("prev")),class:E({disable:!e(T)("prev")})},null,8,["class"]),n(e(Ve),{onClick:l[7]||(l[7]=i=>e(M)("next")),class:E({disable:!e(T)("next")})},null,8,["class"])])):b("",!0)]}),_:1},8,["spinning"]),e(x)&&e(s)&&e(s)[e(r)]?(u(),U(De,{key:0,file:e(s)[e(r)],idx:e(r),onContextMenuClick:e(y)},null,8,["file","idx","onContextMenuClick"])):b("",!0)],512)}}});const dt=Me(Ke,[["__scopeId","data-v-4815fec6"]]);export{dt as default}; diff --git a/vue/dist/assets/MatchedImageGrid-e9e22234.css b/vue/dist/assets/MatchedImageGrid-e9e22234.css deleted file mode 100644 index b6a56f4..0000000 --- a/vue/dist/assets/MatchedImageGrid-e9e22234.css +++ /dev/null @@ -1 +0,0 @@ -.container[data-v-aea581a5]{background:var(--zp-secondary-background);position:relative;height:var(--pane-max-height)}.action-bar[data-v-aea581a5]{display:flex;align-items:center;user-select:none;gap:6px;padding:6px 8px}.title[data-v-aea581a5]{font-weight:700;max-width:40vw}.file-list[data-v-aea581a5]{list-style:none;padding:8px;overflow:auto;height:calc(var(--pane-max-height) - 44px);width:100%}.no-res-hint[data-v-aea581a5]{height:calc(var(--pane-max-height) - 44px);display:flex;align-items:center;flex-direction:column;justify-content:center}.no-res-hint .hint[data-v-aea581a5]{font-size:1.2em;opacity:.7}.preview-switch[data-v-aea581a5]{position:fixed;bottom:24px;right:24px;display:flex;gap:8px;font-size:36px;user-select:none}.disable[data-v-aea581a5]{opacity:.3;pointer-events:none} diff --git a/vue/dist/assets/MultiSelectKeep-5059400f.css b/vue/dist/assets/MultiSelectKeep-5059400f.css deleted file mode 100644 index 1da1fb8..0000000 --- a/vue/dist/assets/MultiSelectKeep-5059400f.css +++ /dev/null @@ -1 +0,0 @@ -.exif-browser[data-v-b913e528]{display:flex;flex-direction:column}.exif-browser .exif-header[data-v-b913e528]{display:flex;align-items:center;justify-content:space-between;padding:8px;background:var(--zp-secondary-variant-background);border-radius:4px;margin-bottom:8px}.exif-browser .exif-header .exif-path[data-v-b913e528]{display:flex;align-items:center;flex:1;overflow:hidden;white-space:nowrap}.exif-browser .exif-header .exif-path .path-item[data-v-b913e528]{padding:2px 4px;border-radius:2px}.exif-browser .exif-header .exif-path .path-item.clickable[data-v-b913e528]{cursor:pointer;color:var(--zp-primary)}.exif-browser .exif-header .exif-path .path-item.clickable[data-v-b913e528]:hover{background:var(--zp-secondary)}.exif-browser .exif-header .exif-path .path-separator[data-v-b913e528]{color:var(--zp-secondary);margin:0 4px}.exif-browser .exif-content .exif-item[data-v-b913e528]{display:flex;align-items:flex-start;padding:4px 8px;border-bottom:1px solid var(--zp-secondary)}.exif-browser .exif-content .exif-item[data-v-b913e528]:hover{background:var(--zp-secondary-variant-background)}.exif-browser .exif-content .exif-item .exif-key[data-v-b913e528]{flex:0 0 120px;font-weight:600;color:var(--zp-primary);word-break:break-all}.exif-browser .exif-content .exif-item .exif-value[data-v-b913e528]{flex:1;display:flex;align-items:flex-start;gap:4px;color:var(--zp-primary);word-break:break-all}.exif-browser .exif-content .exif-item .exif-value .value-text[data-v-b913e528]{flex:1;white-space:pre-wrap}.exif-browser .exif-content .exif-item .exif-value .value-text[data-v-b913e528] code{font-family:Consolas,Monaco,Courier New,monospace;font-size:.9em;line-height:1.5;background:transparent;padding:0}.exif-browser .exif-content .exif-item .exif-value .ant-btn-text[data-v-b913e528]{padding:0 4px;color:var(--zp-luminous)}.exif-browser .exif-content .exif-item .exif-value .ant-btn-text[data-v-b913e528]:hover{color:var(--zp-primary)}.exif-browser .exif-content .exif-simple[data-v-b913e528]{padding:8px;white-space:pre;color:var(--zp-primary)}.full-screen-menu[data-v-006d4d7c]{position:fixed;z-index:9999;background:var(--zp-primary-background);padding:8px 16px;box-shadow:0 0 4px var(--zp-secondary);border-radius:4px}.full-screen-menu .tags-container[data-v-006d4d7c]{margin:4px 0}.full-screen-menu .tags-container .tag[data-v-006d4d7c]{margin-right:4px;margin-bottom:4px;padding:2px 16px;border-radius:4px;display:inline-block;cursor:pointer;font-weight:700;transition:.5s all ease;border:2px solid var(--tag-color);color:var(--tag-color);background:var(--zp-primary-background);user-select:none}.full-screen-menu .tags-container .tag.selected[data-v-006d4d7c]{background:var(--tag-color);color:#fff}.full-screen-menu .container[data-v-006d4d7c]{height:100%;display:flex;overflow:hidden;flex-direction:column}.full-screen-menu .gen-info[data-v-006d4d7c]{flex:1;word-break:break-all;white-space:pre-line;overflow:auto;z-index:1;padding-top:4px;position:relative}.full-screen-menu .gen-info code[data-v-006d4d7c]{font-size:.9em;display:block;padding:4px;background:var(--zp-primary-background);border-radius:4px;margin-right:20px;white-space:pre-wrap;word-break:break-word;line-height:1.78em}.full-screen-menu .gen-info code[data-v-006d4d7c] .natural-text{margin:.5em 0;line-height:1.6em;text-align:justify;color:var(--zp-primary)}.full-screen-menu .gen-info code[data-v-006d4d7c] .short-tag{word-break:break-all;white-space:nowrap}.full-screen-menu .gen-info code[data-v-006d4d7c] span.tag{background:var(--zp-secondary-variant-background);color:var(--zp-primary);padding:2px 4px;border-radius:6px;margin-right:6px;margin-top:4px;line-height:1.3em;display:inline-block}.full-screen-menu .gen-info code[data-v-006d4d7c] .has-parentheses.tag{background:rgba(255,100,100,.14)}.full-screen-menu .gen-info code[data-v-006d4d7c] span.tag:hover{background:rgba(120,0,0,.15)}.full-screen-menu .gen-info table[data-v-006d4d7c]{font-size:1em;border-radius:4px;border-collapse:separate;margin-bottom:3em}.full-screen-menu .gen-info table tr td[data-v-006d4d7c]:first-child{white-space:nowrap;vertical-align:top}.full-screen-menu .gen-info table.extra-meta-table .extra-meta-value[data-v-006d4d7c]{display:block;max-height:200px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:.85em;background:var(--zp-secondary-variant-background);padding:8px;border-radius:4px}.full-screen-menu .gen-info table td[data-v-006d4d7c]{padding-right:14px;padding-left:4px;border-bottom:1px solid var(--zp-secondary);border-collapse:collapse}.full-screen-menu .gen-info .info-tags .info-tag[data-v-006d4d7c]{display:inline-block;overflow:hidden;border-radius:4px;margin-right:8px;border:2px solid var(--zp-primary)}.full-screen-menu .gen-info .info-tags .name[data-v-006d4d7c]{background-color:var(--zp-primary);color:var(--zp-primary-background);padding:4px;border-bottom-right-radius:4px}.full-screen-menu .gen-info .info-tags .value[data-v-006d4d7c]{padding:4px}.full-screen-menu.unset-size[data-v-006d4d7c]{width:unset!important;height:unset!important}.full-screen-menu .mouse-sensor[data-v-006d4d7c]{position:absolute;bottom:0;right:0;transform:rotate(90deg);cursor:se-resize;z-index:1;background:var(--zp-primary-background);border-radius:2px}.full-screen-menu .mouse-sensor>*[data-v-006d4d7c]{font-size:18px;padding:4px}.full-screen-menu .action-bar[data-v-006d4d7c]{display:flex;align-items:center;user-select:none;gap:4px}.full-screen-menu .action-bar .icon[data-v-006d4d7c]{font-size:1.5em;padding:2px 4px;border-radius:4px}.full-screen-menu .action-bar .icon[data-v-006d4d7c]:hover{background:var(--zp-secondary-variant-background)}.full-screen-menu .action-bar>*[data-v-006d4d7c]{flex-wrap:wrap}.full-screen-menu.lr[data-v-006d4d7c]{top:var(--4e261acc)!important;right:0!important;bottom:0!important;left:100vw!important;height:unset!important;width:var(--5c73a50d)!important;transition:left ease .3s}.full-screen-menu.lr.always-on[data-v-006d4d7c],.full-screen-menu.lr.mouse-in[data-v-006d4d7c]{left:var(--243d3811)!important}.tag-alpha-item[data-v-006d4d7c]{display:flex;margin-top:4px}.tag-alpha-item h4[data-v-006d4d7c]{width:32px;flex-shrink:0}.sort-tag-switch[data-v-006d4d7c]{display:inline-block;padding-right:16px;padding-left:8px;cursor:pointer;user-select:none}.sort-tag-switch span[data-v-006d4d7c]{transition:all ease .3s;transform:scale(1.2)}.sort-tag-switch:hover span[data-v-006d4d7c]{transform:scale(1.3)}.lr-layout-control[data-v-006d4d7c]{display:flex;align-items:center;gap:16px;padding:4px 8px;flex-wrap:wrap;border-radius:2px;border-left:3px solid var(--zp-luminous);background-color:var(--zp-secondary-background)}.lr-layout-control .ctrl-item[data-v-006d4d7c]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap}.select-actions[data-v-b04c3508]>:not(:last-child){margin-right:4px}.float-panel[data-v-b04c3508]{position:absolute;bottom:32px;right:32px;background:var(--zp-primary-background);border-radius:4px;z-index:1000;padding:8px;box-shadow:0 0 4px var(--zp-secondary)} diff --git a/vue/dist/assets/MultiSelectKeep-a673b915.css b/vue/dist/assets/MultiSelectKeep-a673b915.css new file mode 100644 index 0000000..a4a1079 --- /dev/null +++ b/vue/dist/assets/MultiSelectKeep-a673b915.css @@ -0,0 +1 @@ +.exif-browser[data-v-769039d4]{display:flex;flex-direction:column}.exif-browser .exif-header[data-v-769039d4]{display:flex;align-items:center;justify-content:space-between;padding:8px;background:var(--zp-secondary-variant-background);border-radius:4px;margin-bottom:8px}.exif-browser .exif-header .exif-path[data-v-769039d4]{display:flex;align-items:center;flex:1;overflow:hidden;white-space:nowrap}.exif-browser .exif-header .exif-path .path-item[data-v-769039d4]{padding:2px 4px;border-radius:2px}.exif-browser .exif-header .exif-path .path-item.clickable[data-v-769039d4]{cursor:pointer;color:var(--zp-primary)}.exif-browser .exif-header .exif-path .path-item.clickable[data-v-769039d4]:hover{background:var(--zp-secondary)}.exif-browser .exif-header .exif-path .path-separator[data-v-769039d4]{color:var(--zp-secondary);margin:0 4px}.exif-browser .exif-content .exif-item[data-v-769039d4]{display:flex;align-items:flex-start;padding:4px 8px;border-bottom:1px solid var(--zp-secondary)}.exif-browser .exif-content .exif-item[data-v-769039d4]:hover{background:var(--zp-secondary-variant-background)}.exif-browser .exif-content .exif-item .exif-key[data-v-769039d4]{flex:0 0 120px;font-weight:600;color:var(--zp-primary);word-break:break-all}.exif-browser .exif-content .exif-item .exif-value[data-v-769039d4]{flex:1;display:flex;align-items:flex-start;gap:4px;color:var(--zp-primary);word-break:break-all}.exif-browser .exif-content .exif-item .exif-value .value-text[data-v-769039d4]{flex:1;white-space:pre-wrap}.exif-browser .exif-content .exif-item .exif-value .value-text[data-v-769039d4] code{font-family:Consolas,Monaco,Courier New,monospace;font-size:.9em;line-height:1.5;background:transparent;padding:0}.exif-browser .exif-content .exif-item .exif-value .ant-btn-text[data-v-769039d4]{padding:0 4px;color:var(--zp-luminous)}.exif-browser .exif-content .exif-item .exif-value .ant-btn-text[data-v-769039d4]:hover{color:var(--zp-primary)}.exif-browser .exif-content .exif-simple[data-v-769039d4]{padding:8px;white-space:pre;color:var(--zp-primary)}.full-screen-menu[data-v-94026b33]{position:fixed;z-index:9999;background:var(--zp-primary-background);padding:8px 16px;box-shadow:0 0 4px var(--zp-secondary);border-radius:4px}.full-screen-menu .tags-container[data-v-94026b33]{margin:4px 0}.full-screen-menu .tags-container .tag[data-v-94026b33]{margin-right:4px;margin-bottom:4px;padding:2px 16px;border-radius:4px;display:inline-block;cursor:pointer;font-weight:700;transition:.5s all ease;border:2px solid var(--tag-color);color:var(--tag-color);background:var(--zp-primary-background);user-select:none}.full-screen-menu .tags-container .tag.selected[data-v-94026b33]{background:var(--tag-color);color:#fff}.full-screen-menu .container[data-v-94026b33]{height:100%;display:flex;overflow:hidden;flex-direction:column}.full-screen-menu .gen-info[data-v-94026b33]{flex:1;word-break:break-all;white-space:pre-line;overflow:auto;z-index:1;padding-top:4px;position:relative}.full-screen-menu .gen-info code[data-v-94026b33]{font-size:.9em;display:block;padding:4px;background:var(--zp-primary-background);border-radius:4px;margin-right:20px;white-space:pre-wrap;word-break:break-word;line-height:1.78em}.full-screen-menu .gen-info code[data-v-94026b33] .natural-text{margin:.5em 0;line-height:1.6em;text-align:justify;color:var(--zp-primary)}.full-screen-menu .gen-info code[data-v-94026b33] .short-tag{word-break:break-all;white-space:nowrap}.full-screen-menu .gen-info code[data-v-94026b33] span.tag{background:var(--zp-secondary-variant-background);color:var(--zp-primary);padding:2px 4px;border-radius:6px;margin-right:6px;margin-top:4px;line-height:1.3em;display:inline-block}.full-screen-menu .gen-info code[data-v-94026b33] .has-parentheses.tag{background:rgba(255,100,100,.14)}.full-screen-menu .gen-info code[data-v-94026b33] span.tag:hover{background:rgba(120,0,0,.15)}.full-screen-menu .gen-info table[data-v-94026b33]{font-size:1em;border-radius:4px;border-collapse:separate;margin-bottom:3em}.full-screen-menu .gen-info table tr td[data-v-94026b33]:first-child{white-space:nowrap;vertical-align:top}.full-screen-menu .gen-info table.extra-meta-table .extra-meta-value[data-v-94026b33]{display:block;max-height:200px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:.85em;background:var(--zp-secondary-variant-background);padding:8px;border-radius:4px}.full-screen-menu .gen-info table td[data-v-94026b33]{padding-right:14px;padding-left:4px;border-bottom:1px solid var(--zp-secondary);border-collapse:collapse}.full-screen-menu .gen-info .info-tags .info-tag[data-v-94026b33]{display:inline-block;overflow:hidden;border-radius:4px;margin-right:8px;border:2px solid var(--zp-primary)}.full-screen-menu .gen-info .info-tags .name[data-v-94026b33]{background-color:var(--zp-primary);color:var(--zp-primary-background);padding:4px;border-bottom-right-radius:4px}.full-screen-menu .gen-info .info-tags .value[data-v-94026b33]{padding:4px}.full-screen-menu.unset-size[data-v-94026b33]{width:unset!important;height:unset!important}.full-screen-menu .mouse-sensor[data-v-94026b33]{position:absolute;bottom:0;right:0;transform:rotate(90deg);cursor:se-resize;z-index:1;background:var(--zp-primary-background);border-radius:2px}.full-screen-menu .mouse-sensor>*[data-v-94026b33]{font-size:18px;padding:4px}.full-screen-menu .action-bar[data-v-94026b33]{display:flex;align-items:center;user-select:none;gap:4px}.full-screen-menu .action-bar .icon[data-v-94026b33]{font-size:1.5em;padding:2px 4px;border-radius:4px}.full-screen-menu .action-bar .icon[data-v-94026b33]:hover{background:var(--zp-secondary-variant-background)}.full-screen-menu .action-bar>*[data-v-94026b33]{flex-wrap:wrap}.full-screen-menu.lr[data-v-94026b33]{top:var(--3a9724bb)!important;right:0!important;bottom:0!important;left:100vw!important;height:unset!important;width:var(--074c5a24)!important;transition:left ease .3s}.full-screen-menu.lr.always-on[data-v-94026b33],.full-screen-menu.lr.mouse-in[data-v-94026b33]{left:var(--f5adef9c)!important}.tag-alpha-item[data-v-94026b33]{display:flex;margin-top:4px}.tag-alpha-item h4[data-v-94026b33]{width:32px;flex-shrink:0}.sort-tag-switch[data-v-94026b33]{display:inline-block;padding-right:16px;padding-left:8px;cursor:pointer;user-select:none}.sort-tag-switch span[data-v-94026b33]{transition:all ease .3s;transform:scale(1.2)}.sort-tag-switch:hover span[data-v-94026b33]{transform:scale(1.3)}.lr-layout-control[data-v-94026b33]{display:flex;align-items:center;gap:16px;padding:4px 8px;flex-wrap:wrap;border-radius:2px;border-left:3px solid var(--zp-luminous);background-color:var(--zp-secondary-background)}.lr-layout-control .ctrl-item[data-v-94026b33]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap}.select-actions[data-v-b6f9a67c]>:not(:last-child){margin-right:4px}.float-panel[data-v-b6f9a67c]{position:absolute;bottom:32px;right:32px;background:var(--zp-primary-background);border-radius:4px;z-index:1000;padding:8px;box-shadow:0 0 4px var(--zp-secondary)} diff --git a/vue/dist/assets/MultiSelectKeep-d96596db.js b/vue/dist/assets/MultiSelectKeep-ea31915e.js similarity index 54% rename from vue/dist/assets/MultiSelectKeep-d96596db.js rename to vue/dist/assets/MultiSelectKeep-ea31915e.js index 19b6e56..f81301d 100644 --- a/vue/dist/assets/MultiSelectKeep-d96596db.js +++ b/vue/dist/assets/MultiSelectKeep-ea31915e.js @@ -1,11 +1,10 @@ -import{c as m,A as Te,ao as cn,d as ct,r as Ge,at as Ve,cO as Et,$ as ue,Y as re,o as _,k as O,l as $,n as Y,H as ge,t as w,y as k,m as N,p as H,x as de,z as v,W as Fe,aB as Xt,aC as qt,q as ut,ba as un,v as xe,ad as dn,aH as De,aI as rt,Z as gn,ay as wt,cP as fn,aD as Xe,aF as hn,cQ as pn,c0 as vn,c3 as _n,cR as et,cS as mn,cT as yn,bl as bn,aG as $n,ae as ie,cU as Ot,cu as En,cv as wn,cV as kt,E as ze,B as Mt,cW as On,cX as xt,G as tt,Q as nt,C as Ue,cY as it,cZ as kn,ag as be,c_ as Mn,X as xn,c$ as Sn,d0 as Tn,M as Cn,az as Ln,d1 as An,d2 as zn,d3 as Dn}from"./index-2865012e.js";import{S as Ne,s as Nn}from"./index-5aea14c7.js";/* empty css */import"./index-50dada2e.js";import{_ as In}from"./index-dfe4c7be.js";import{_ as Pn}from"./index-85cde8a2.js";import{D as jn}from"./index-f200274c.js";import{_ as Bn}from"./FileItem-3bb21719.js";import{k as St}from"./index-9ff6b146.js";Ne.setDefaultIndicator=Nn;Ne.install=function(e){return e.component(Ne.name,Ne),e};var Rn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"}}]},name:"folder",theme:"outlined"};const Un=Rn;function Tt(e){for(var t=1;t{const n=e[t],i=typeof n;(i==="object"||i==="function")&&!Object.isFrozen(n)&&Jt(n)}),e}class Nt{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Gt(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function _e(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach(function(i){for(const l in i)n[l]=i[l]}),n}const ci="",It=e=>!!e.scope,ui=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((i,l)=>`${i}${"_".repeat(l+1)}`)].join(" ")}return`${t}${e}`};class di{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Gt(t)}openNode(t){if(!It(t))return;const n=ui(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){It(t)&&(this.buffer+=ci)}value(){return this.buffer}span(t){this.buffer+=``}}const Pt=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class _t{constructor(){this.rootNode=Pt(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=Pt({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(i=>this._walk(t,i)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{_t._collapse(n)}))}}class gi extends _t{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const i=t.root;n&&(i.scope=`language:${n}`),this.add(i)}toHTML(){return new di(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function Ie(e){return e?typeof e=="string"?e:e.source:null}function Vt(e){return Ee("(?=",e,")")}function fi(e){return Ee("(?:",e,")*")}function hi(e){return Ee("(?:",e,")?")}function Ee(...e){return e.map(n=>Ie(n)).join("")}function pi(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function mt(...e){return"("+(pi(e).capture?"":"?:")+e.map(i=>Ie(i)).join("|")+")"}function Yt(e){return new RegExp(e.toString()+"|").exec("").length-1}function vi(e,t){const n=e&&e.exec(t);return n&&n.index===0}const _i=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function yt(e,{joinWith:t}){let n=0;return e.map(i=>{n+=1;const l=n;let p=Ie(i),o="";for(;p.length>0;){const r=_i.exec(p);if(!r){o+=p;break}o+=p.substring(0,r.index),p=p.substring(r.index+r[0].length),r[0][0]==="\\"&&r[1]?o+="\\"+String(Number(r[1])+l):(o+=r[0],r[0]==="("&&n++)}return o}).map(i=>`(${i})`).join(t)}const mi=/\b\B/,Zt="[a-zA-Z]\\w*",bt="[a-zA-Z_]\\w*",Kt="\\b\\d+(\\.\\d+)?",Qt="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",en="\\b(0b[01]+)",yi="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",bi=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=Ee(t,/.*\b/,e.binary,/\b.*/)),_e({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,i)=>{n.index!==0&&i.ignoreMatch()}},e)},Pe={begin:"\\\\[\\s\\S]",relevance:0},$i={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Pe]},Ei={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Pe]},wi={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Ye=function(e,t,n={}){const i=_e({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const l=mt("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:Ee(/[ ]+/,"(",l,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},Oi=Ye("//","$"),ki=Ye("/\\*","\\*/"),Mi=Ye("#","$"),xi={scope:"number",begin:Kt,relevance:0},Si={scope:"number",begin:Qt,relevance:0},Ti={scope:"number",begin:en,relevance:0},Ci={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Pe,{begin:/\[/,end:/\]/,relevance:0,contains:[Pe]}]},Li={scope:"title",begin:Zt,relevance:0},Ai={scope:"title",begin:bt,relevance:0},zi={begin:"\\.\\s*"+bt,relevance:0},Di=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})};var He=Object.freeze({__proto__:null,APOS_STRING_MODE:$i,BACKSLASH_ESCAPE:Pe,BINARY_NUMBER_MODE:Ti,BINARY_NUMBER_RE:en,COMMENT:Ye,C_BLOCK_COMMENT_MODE:ki,C_LINE_COMMENT_MODE:Oi,C_NUMBER_MODE:Si,C_NUMBER_RE:Qt,END_SAME_AS_BEGIN:Di,HASH_COMMENT_MODE:Mi,IDENT_RE:Zt,MATCH_NOTHING_RE:mi,METHOD_GUARD:zi,NUMBER_MODE:xi,NUMBER_RE:Kt,PHRASAL_WORDS_MODE:wi,QUOTE_STRING_MODE:Ei,REGEXP_MODE:Ci,RE_STARTERS_RE:yi,SHEBANG:bi,TITLE_MODE:Li,UNDERSCORE_IDENT_RE:bt,UNDERSCORE_TITLE_MODE:Ai});function Ni(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function Ii(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Pi(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Ni,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function ji(e,t){Array.isArray(e.illegal)&&(e.illegal=mt(...e.illegal))}function Bi(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Ri(e,t){e.relevance===void 0&&(e.relevance=1)}const Ui=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(i=>{delete e[i]}),e.keywords=n.keywords,e.begin=Ee(n.beforeMatch,Vt(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Hi=["of","and","for","in","not","or","if","then","parent","list","value"],Wi="keyword";function tn(e,t,n=Wi){const i=Object.create(null);return typeof e=="string"?l(n,e.split(" ")):Array.isArray(e)?l(n,e):Object.keys(e).forEach(function(p){Object.assign(i,tn(e[p],t,p))}),i;function l(p,o){t&&(o=o.map(r=>r.toLowerCase())),o.forEach(function(r){const d=r.split("|");i[d[0]]=[p,Fi(d[0],d[1])]})}}function Fi(e,t){return t?Number(t):Xi(e)?0:1}function Xi(e){return Hi.includes(e.toLowerCase())}const jt={},$e=e=>{console.error(e)},Bt=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Me=(e,t)=>{jt[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),jt[`${e}/${t}`]=!0)},qe=new Error;function nn(e,t,{key:n}){let i=0;const l=e[n],p={},o={};for(let r=1;r<=t.length;r++)o[r+i]=l[r],p[r+i]=!0,i+=Yt(t[r-1]);e[n]=o,e[n]._emit=p,e[n]._multi=!0}function qi(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw $e("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),qe;if(typeof e.beginScope!="object"||e.beginScope===null)throw $e("beginScope must be object"),qe;nn(e,e.begin,{key:"beginScope"}),e.begin=yt(e.begin,{joinWith:""})}}function Ji(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw $e("skip, excludeEnd, returnEnd not compatible with endScope: {}"),qe;if(typeof e.endScope!="object"||e.endScope===null)throw $e("endScope must be object"),qe;nn(e,e.end,{key:"endScope"}),e.end=yt(e.end,{joinWith:""})}}function Gi(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Vi(e){Gi(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),qi(e),Ji(e)}function Yi(e){function t(o,r){return new RegExp(Ie(o),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(r?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(r,d){d.position=this.position++,this.matchIndexes[this.matchAt]=d,this.regexes.push([d,r]),this.matchAt+=Yt(r)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const r=this.regexes.map(d=>d[1]);this.matcherRe=t(yt(r,{joinWith:"|"}),!0),this.lastIndex=0}exec(r){this.matcherRe.lastIndex=this.lastIndex;const d=this.matcherRe.exec(r);if(!d)return null;const C=d.findIndex((Z,G)=>G>0&&Z!==void 0),D=this.matchIndexes[C];return d.splice(0,C),Object.assign(d,D)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(r){if(this.multiRegexes[r])return this.multiRegexes[r];const d=new n;return this.rules.slice(r).forEach(([C,D])=>d.addRule(C,D)),d.compile(),this.multiRegexes[r]=d,d}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(r,d){this.rules.push([r,d]),d.type==="begin"&&this.count++}exec(r){const d=this.getMatcher(this.regexIndex);d.lastIndex=this.lastIndex;let C=d.exec(r);if(this.resumingScanAtSamePosition()&&!(C&&C.index===this.lastIndex)){const D=this.getMatcher(0);D.lastIndex=this.lastIndex+1,C=D.exec(r)}return C&&(this.regexIndex+=C.position+1,this.regexIndex===this.count&&this.considerAll()),C}}function l(o){const r=new i;return o.contains.forEach(d=>r.addRule(d.begin,{rule:d,type:"begin"})),o.terminatorEnd&&r.addRule(o.terminatorEnd,{type:"end"}),o.illegal&&r.addRule(o.illegal,{type:"illegal"}),r}function p(o,r){const d=o;if(o.isCompiled)return d;[Ii,Bi,Vi,Ui].forEach(D=>D(o,r)),e.compilerExtensions.forEach(D=>D(o,r)),o.__beforeBegin=null,[Pi,ji,Ri].forEach(D=>D(o,r)),o.isCompiled=!0;let C=null;return typeof o.keywords=="object"&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),C=o.keywords.$pattern,delete o.keywords.$pattern),C=C||/\w+/,o.keywords&&(o.keywords=tn(o.keywords,e.case_insensitive)),d.keywordPatternRe=t(C,!0),r&&(o.begin||(o.begin=/\B|\b/),d.beginRe=t(d.begin),!o.end&&!o.endsWithParent&&(o.end=/\B|\b/),o.end&&(d.endRe=t(d.end)),d.terminatorEnd=Ie(d.end)||"",o.endsWithParent&&r.terminatorEnd&&(d.terminatorEnd+=(o.end?"|":"")+r.terminatorEnd)),o.illegal&&(d.illegalRe=t(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map(function(D){return Zi(D==="self"?o:D)})),o.contains.forEach(function(D){p(D,d)}),o.starts&&p(o.starts,r),d.matcher=l(d),d}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=_e(e.classNameAliases||{}),p(e)}function an(e){return e?e.endsWithParent||an(e.starts):!1}function Zi(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return _e(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:an(e)?_e(e,{starts:e.starts?_e(e.starts):null}):Object.isFrozen(e)?_e(e):e}var Ki="11.11.1";class Qi extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const at=Gt,Rt=_e,Ut=Symbol("nomatch"),ea=7,sn=function(e){const t=Object.create(null),n=Object.create(null),i=[];let l=!0;const p="Could not find the language '{}', did you forget to load/include a language module?",o={disableAutodetect:!0,name:"Plain text",contains:[]};let r={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:gi};function d(s){return r.noHighlightRe.test(s)}function C(s){let h=s.className+" ";h+=s.parentNode?s.parentNode.className:"";const L=r.languageDetectRe.exec(h);if(L){const P=ne(L[1]);return P||(Bt(p.replace("{}",L[1])),Bt("Falling back to no-highlight mode for this block.",s)),P?L[1]:"no-highlight"}return h.split(/\s+/).find(P=>d(P)||ne(P))}function D(s,h,L){let P="",U="";typeof h=="object"?(P=s,L=h.ignoreIllegals,U=h.language):(Me("10.7.0","highlight(lang, code, ...args) has been deprecated."),Me("10.7.0",`Please use highlight(code, options) instead. -https://github.com/highlightjs/highlight.js/issues/2277`),U=s,P=h),L===void 0&&(L=!0);const ae={code:P,language:U};we("before:highlight",ae);const se=ae.result?ae.result:Z(ae.language,ae.code,L);return se.code=ae.code,we("after:highlight",se),se}function Z(s,h,L,P){const U=Object.create(null);function ae(u,f){return u.keywords[f]}function se(){if(!b.keywords){R.addText(E);return}let u=0;b.keywordPatternRe.lastIndex=0;let f=b.keywordPatternRe.exec(E),x="";for(;f;){x+=E.substring(u,f.index);const c=M.case_insensitive?f[0].toLowerCase():f[0],z=ae(b,c);if(z){const[F,Re]=z;if(R.addText(x),x="",U[c]=(U[c]||0)+1,U[c]<=ea&&(le+=Re),F.startsWith("_"))x+=f[0];else{const ln=M.classNameAliases[F]||F;te(f[0],ln)}}else x+=f[0];u=b.keywordPatternRe.lastIndex,f=b.keywordPatternRe.exec(E)}x+=E.substring(u),R.addText(x)}function ve(){if(E==="")return;let u=null;if(typeof b.subLanguage=="string"){if(!t[b.subLanguage]){R.addText(E);return}u=Z(b.subLanguage,E,!0,ye[b.subLanguage]),ye[b.subLanguage]=u._top}else u=K(E,b.subLanguage.length?b.subLanguage:null);b.relevance>0&&(le+=u.relevance),R.__addSublanguage(u._emitter,u.language)}function V(){b.subLanguage!=null?ve():se(),E=""}function te(u,f){u!==""&&(R.startScope(f),R.addText(u),R.endScope())}function Be(u,f){let x=1;const c=f.length-1;for(;x<=c;){if(!u._emit[x]){x++;continue}const z=M.classNameAliases[u[x]]||u[x],F=f[x];z?te(F,z):(E=F,se(),E=""),x++}}function Oe(u,f){return u.scope&&typeof u.scope=="string"&&R.openNode(M.classNameAliases[u.scope]||u.scope),u.beginScope&&(u.beginScope._wrap?(te(E,M.classNameAliases[u.beginScope._wrap]||u.beginScope._wrap),E=""):u.beginScope._multi&&(Be(u.beginScope,f),E="")),b=Object.create(u,{parent:{value:b}}),b}function ke(u,f,x){let c=vi(u.endRe,x);if(c){if(u["on:end"]){const z=new Nt(u);u["on:end"](f,z),z.isMatchIgnored&&(c=!1)}if(c){for(;u.endsParent&&u.parent;)u=u.parent;return u}}if(u.endsWithParent)return ke(u.parent,f,x)}function Qe(u){return b.matcher.regexIndex===0?(E+=u[0],1):(Ae=!0,0)}function a(u){const f=u[0],x=u.rule,c=new Nt(x),z=[x.__beforeBegin,x["on:begin"]];for(const F of z)if(F&&(F(u,c),c.isMatchIgnored))return Qe(f);return x.skip?E+=f:(x.excludeBegin&&(E+=f),V(),!x.returnBegin&&!x.excludeBegin&&(E=f)),Oe(x,u),x.returnBegin?0:f.length}function g(u){const f=u[0],x=h.substring(u.index),c=ke(b,u,x);if(!c)return Ut;const z=b;b.endScope&&b.endScope._wrap?(V(),te(f,b.endScope._wrap)):b.endScope&&b.endScope._multi?(V(),Be(b.endScope,u)):z.skip?E+=f:(z.returnEnd||z.excludeEnd||(E+=f),V(),z.excludeEnd&&(E=f));do b.scope&&R.closeNode(),!b.skip&&!b.subLanguage&&(le+=b.relevance),b=b.parent;while(b!==c.parent);return c.starts&&Oe(c.starts,u),z.returnEnd?0:f.length}function X(){const u=[];for(let f=b;f!==M;f=f.parent)f.scope&&u.unshift(f.scope);u.forEach(f=>R.openNode(f))}let I={};function T(u,f){const x=f&&f[0];if(E+=u,x==null)return V(),0;if(I.type==="begin"&&f.type==="end"&&I.index===f.index&&x===""){if(E+=h.slice(f.index,f.index+1),!l){const c=new Error(`0 width match regex (${s})`);throw c.languageName=s,c.badRule=I.rule,c}return 1}if(I=f,f.type==="begin")return a(f);if(f.type==="illegal"&&!L){const c=new Error('Illegal lexeme "'+x+'" for mode "'+(b.scope||"")+'"');throw c.mode=b,c}else if(f.type==="end"){const c=g(f);if(c!==Ut)return c}if(f.type==="illegal"&&x==="")return E+=` -`,1;if(Le>1e5&&Le>f.index*3)throw new Error("potential infinite loop, way more iterations than matches");return E+=x,x.length}const M=ne(s);if(!M)throw $e(p.replace("{}",s)),new Error('Unknown language: "'+s+'"');const J=Yi(M);let oe="",b=P||J;const ye={},R=new r.__emitter(r);X();let E="",le=0,he=0,Le=0,Ae=!1;try{if(M.__emitTokens)M.__emitTokens(h,R);else{for(b.matcher.considerAll();;){Le++,Ae?Ae=!1:b.matcher.considerAll(),b.matcher.lastIndex=he;const u=b.matcher.exec(h);if(!u)break;const f=h.substring(he,u.index),x=T(f,u);he=u.index+x}T(h.substring(he))}return R.finalize(),oe=R.toHTML(),{language:s,value:oe,relevance:le,illegal:!1,_emitter:R,_top:b}}catch(u){if(u.message&&u.message.includes("Illegal"))return{language:s,value:at(h),illegal:!0,relevance:0,_illegalBy:{message:u.message,index:he,context:h.slice(he-100,he+100),mode:u.mode,resultSoFar:oe},_emitter:R};if(l)return{language:s,value:at(h),illegal:!1,relevance:0,errorRaised:u,_emitter:R,_top:b};throw u}}function G(s){const h={value:at(s),illegal:!1,relevance:0,_top:o,_emitter:new r.__emitter(r)};return h._emitter.addText(s),h}function K(s,h){h=h||r.languages||Object.keys(t);const L=G(s),P=h.filter(ne).filter(ee).map(V=>Z(V,s,!1));P.unshift(L);const U=P.sort((V,te)=>{if(V.relevance!==te.relevance)return te.relevance-V.relevance;if(V.language&&te.language){if(ne(V.language).supersetOf===te.language)return 1;if(ne(te.language).supersetOf===V.language)return-1}return 0}),[ae,se]=U,ve=ae;return ve.secondBest=se,ve}function S(s,h,L){const P=h&&n[h]||L;s.classList.add("hljs"),s.classList.add(`language-${P}`)}function j(s){let h=null;const L=C(s);if(d(L))return;if(we("before:highlightElement",{el:s,language:L}),s.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",s);return}if(s.children.length>0&&(r.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(s)),r.throwUnescapedHTML))throw new Qi("One of your code blocks includes unescaped HTML.",s.innerHTML);h=s;const P=h.textContent,U=L?D(P,{language:L,ignoreIllegals:!0}):K(P);s.innerHTML=U.value,s.dataset.highlighted="yes",S(s,L,U.language),s.result={language:U.language,re:U.relevance,relevance:U.relevance},U.secondBest&&(s.secondBest={language:U.secondBest.language,relevance:U.secondBest.relevance}),we("after:highlightElement",{el:s,result:U,text:P})}function W(s){r=Rt(r,s)}const q=()=>{y(),Me("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Q(){y(),Me("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let ce=!1;function y(){function s(){y()}if(document.readyState==="loading"){ce||window.addEventListener("DOMContentLoaded",s,!1),ce=!0;return}document.querySelectorAll(r.cssSelector).forEach(j)}function B(s,h){let L=null;try{L=h(e)}catch(P){if($e("Language definition for '{}' could not be registered.".replace("{}",s)),l)$e(P);else throw P;L=o}L.name||(L.name=s),t[s]=L,L.rawDefinition=h.bind(null,e),L.aliases&&fe(L.aliases,{languageName:s})}function A(s){delete t[s];for(const h of Object.keys(n))n[h]===s&&delete n[h]}function pe(){return Object.keys(t)}function ne(s){return s=(s||"").toLowerCase(),t[s]||t[n[s]]}function fe(s,{languageName:h}){typeof s=="string"&&(s=[s]),s.forEach(L=>{n[L.toLowerCase()]=h})}function ee(s){const h=ne(s);return h&&!h.disableAutodetect}function Ce(s){s["before:highlightBlock"]&&!s["before:highlightElement"]&&(s["before:highlightElement"]=h=>{s["before:highlightBlock"](Object.assign({block:h.el},h))}),s["after:highlightBlock"]&&!s["after:highlightElement"]&&(s["after:highlightElement"]=h=>{s["after:highlightBlock"](Object.assign({block:h.el},h))})}function Ze(s){Ce(s),i.push(s)}function je(s){const h=i.indexOf(s);h!==-1&&i.splice(h,1)}function we(s,h){const L=s;i.forEach(function(P){P[L]&&P[L](h)})}function Ke(s){return Me("10.7.0","highlightBlock will be removed entirely in v12.0"),Me("10.7.0","Please use highlightElement now."),j(s)}Object.assign(e,{highlight:D,highlightAuto:K,highlightAll:y,highlightElement:j,highlightBlock:Ke,configure:W,initHighlighting:q,initHighlightingOnLoad:Q,registerLanguage:B,unregisterLanguage:A,listLanguages:pe,getLanguage:ne,registerAliases:fe,autoDetection:ee,inherit:Rt,addPlugin:Ze,removePlugin:je}),e.debugMode=function(){l=!1},e.safeMode=function(){l=!0},e.versionString=Ki,e.regex={concat:Ee,lookahead:Vt,either:mt,optional:hi,anyNumberOfTimes:fi};for(const s in He)typeof He[s]=="object"&&Jt(He[s]);return Object.assign(e,He),e},Se=sn({});Se.newInstance=()=>sn({});var ta=Se;Se.HighlightJS=Se;Se.default=Se;const Ht=cn(ta);function na(e){const t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},i=["true","false","null"],l={scope:"literal",beginKeywords:i.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:i},contains:[t,n,e.QUOTE_STRING_MODE,l,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}const ia=e=>(Xt("data-v-b913e528"),e=e(),qt(),e),aa={class:"exif-browser"},sa={key:0,class:"exif-header"},oa={class:"exif-path"},ra=ia(()=>$("span",{class:"path-separator"},"/",-1)),la=["onClick"],ca={class:"exif-content"},ua={class:"exif-key"},da={class:"exif-value"},ga=["innerHTML"],fa={key:1,class:"exif-simple"},ha=["innerHTML"],pa=ct({__name:"ExifBrowser",props:{data:{}},setup(e){const t=e;Ht.registerLanguage("json",na);const n=Ge();Ve(async()=>{await(n.computedTheme==="dark"?Et(()=>Promise.resolve({}),["assets/atom-one-dark-b334430f.css"]):Et(()=>Promise.resolve({}),["assets/github-47e00288.css"]))});const i=ue([]),l=re(()=>{if(i.value.length===0)return t.data;let S=t.data;for(const j of i.value)S=j.value;return S}),p=new Map,o=S=>{if(typeof S!="string")return null;const j=S;if(p.has(j))return p.get(j);try{const W=JSON.parse(S);return p.set(j,W),W}catch{return null}},r=S=>o(S)!==null,d=S=>{if(S===null)return"null";if(typeof S=="object")try{return JSON.stringify(S,null,2)}catch{return String(S)}return String(S)},C=S=>{const j=d(S);if(typeof S=="string"&&S.length>1e3)return j.substring(0,1e3)+"...";try{return Ht.highlight(j,{language:"json"}).value}catch{return j}},D=(S,j)=>{const W=o(j);W!==null&&i.value.push({key:S,value:W})},Z=S=>{i.value=i.value.slice(0,S+1)},G=()=>{i.value=[]},K=S=>/^\d+$/.test(S)?`[${S}]`:S;return(S,j)=>{const W=Fe;return _(),O("div",aa,[i.value.length>0?(_(),O("div",sa,[$("div",oa,[$("span",{class:"path-item",onClick:G},"root"),(_(!0),O(Y,null,ge(i.value,(q,Q)=>(_(),O(Y,{key:Q},[ra,$("span",{class:"path-item clickable",onClick:ce=>Z(Q)},w(K(q.key)),9,la)],64))),128))]),m(W,{size:"small",onClick:G},{default:k(()=>[N(w(S.$t("reset")||"Reset"),1)]),_:1})])):H("",!0),$("div",ca,[typeof l.value=="object"&&l.value!==null?(_(!0),O(Y,{key:0},ge(l.value,(q,Q)=>(_(),O("div",{class:"exif-item",key:Q},[$("div",ua,w(K(Q)),1),$("div",da,[$("div",{class:"value-text",innerHTML:C(q)},null,8,ga),r(q)?(_(),de(W,{key:0,type:"text",onClick:ce=>D(String(Q),q)},{default:k(()=>[m(v(Wn),{style:{"font-size":"18px"}})]),_:2},1032,["onClick"])):H("",!0)])]))),128)):(_(),O("div",fa,[$("div",{innerHTML:C(l.value)},null,8,ha)]))])])}}});const va=ut(pa,[["__scopeId","data-v-b913e528"]]);function _a(e,t,n,i){let l=0,p=0,o=typeof(i==null?void 0:i.width)=="number"?i.width:0,r=typeof(i==null?void 0:i.height)=="number"?i.height:0,d=typeof(i==null?void 0:i.left)=="number"?i.left:0,C=typeof(i==null?void 0:i.top)=="number"?i.top:0,D=!1;const Z=y=>{y.stopPropagation(),y.preventDefault(),!(!e.value||!t.value)&&(l=y instanceof MouseEvent?y.clientX:y.touches[0].clientX,p=y instanceof MouseEvent?y.clientY:y.touches[0].clientY,o=e.value.offsetWidth,r=e.value.offsetHeight,t.value.offsetLeft,t.value.offsetTop,document.documentElement.addEventListener("mousemove",G),document.documentElement.addEventListener("touchmove",G),document.documentElement.addEventListener("mouseup",K),document.documentElement.addEventListener("touchend",K))},G=y=>{if(!e.value||!t.value)return;let B=o+((y instanceof MouseEvent?y.clientX:y.touches[0].clientX)-l),A=r+((y instanceof MouseEvent?y.clientY:y.touches[0].clientY)-p);e.value.offsetLeft+B>window.innerWidth&&(B=window.innerWidth-e.value.offsetLeft),e.value.offsetTop+A>window.innerHeight&&(A=window.innerHeight-e.value.offsetTop),e.value.style.width=`${B}px`,e.value.style.height=`${A}px`,i!=null&&i.onResize&&i.onResize(B,A)},K=()=>{document.documentElement.removeEventListener("mousemove",G),document.documentElement.removeEventListener("touchmove",G),document.documentElement.removeEventListener("mouseup",K),document.documentElement.removeEventListener("touchend",K)},S=y=>{y.stopPropagation(),y.preventDefault(),!(!e.value||!n.value)&&(D=!0,d=e.value.offsetLeft,C=e.value.offsetTop,l=y instanceof MouseEvent?y.clientX:y.touches[0].clientX,p=y instanceof MouseEvent?y.clientY:y.touches[0].clientY,document.documentElement.addEventListener("mousemove",j),document.documentElement.addEventListener("touchmove",j),document.documentElement.addEventListener("mouseup",W),document.documentElement.addEventListener("touchend",W))},j=y=>{if(!e.value||!n.value||!D)return;const B=d+((y instanceof MouseEvent?y.clientX:y.touches[0].clientX)-l),A=C+((y instanceof MouseEvent?y.clientY:y.touches[0].clientY)-p);B<0?e.value.style.left="0px":B+e.value.offsetWidth>window.innerWidth?e.value.style.left=`${window.innerWidth-e.value.offsetWidth}px`:e.value.style.left=`${B}px`,A<0?e.value.style.top="0px":A+e.value.offsetHeight>window.innerHeight?e.value.style.top=`${window.innerHeight-e.value.offsetHeight}px`:e.value.style.top=`${A}px`,i!=null&&i.onDrag&&i.onDrag(B,A)},W=()=>{D=!1,document.documentElement.removeEventListener("mousemove",j),document.documentElement.removeEventListener("touchmove",j),document.documentElement.removeEventListener("mouseup",W),document.documentElement.removeEventListener("touchend",W)},q=()=>{if(!e.value||!t.value)return;let y=e.value.offsetLeft,B=e.value.offsetTop,A=e.value.offsetWidth,pe=e.value.offsetHeight;y+A>window.innerWidth&&(y=window.innerWidth-A,y<0&&(y=0,A=window.innerWidth)),B+pe>window.innerHeight&&(B=window.innerHeight-pe,B<0&&(B=0,pe=window.innerHeight)),e.value.style.left=`${y}px`,e.value.style.top=`${B}px`,e.value.style.width=`${A}px`,e.value.style.height=`${pe}px`},Q=()=>{!e.value||!i||(typeof i.width=="number"&&(e.value.style.width=`${i.width}px`),typeof i.height=="number"&&(e.value.style.height=`${i.height}px`),typeof i.left=="number"&&(e.value.style.left=`${i.left}px`),typeof i.top=="number"&&(e.value.style.top=`${i.top}px`),q(),window.addEventListener("resize",q))},ce=()=>{document.documentElement.removeEventListener("mousemove",G),document.documentElement.removeEventListener("touchmove",G),document.documentElement.removeEventListener("mouseup",K),document.documentElement.removeEventListener("touchend",K),document.documentElement.removeEventListener("mousemove",j),document.documentElement.removeEventListener("touchmove",j),document.documentElement.removeEventListener("mouseup",W),document.documentElement.removeEventListener("touchend",W),window.removeEventListener("resize",q)};return Ve(Q),un(ce),xe(()=>i==null?void 0:i.disbaled,async y=>{await dn(),y!==void 0&&(y?ce():Q())}),xe(()=>[e.value,t.value,n.value],([y,B,A])=>{y&&B&&(B.addEventListener("mousedown",Z),B.addEventListener("touchstart",Z)),y&&A&&(A.addEventListener("mousedown",S),A.addEventListener("touchstart",S))}),{handleResizeMouseDown:Z,handleDragMouseDown:S}}let Wt=null;const ma=()=>{var d,C;const e=Ge(),t=De(rt+"fullscreen_layout",{enable:!0,panelWidth:384,alwaysOn:!0}),n=gn(Wt??((C=(d=e.conf)==null?void 0:d.app_fe_setting)==null?void 0:C.fullscreen_layout)??wt(t.value)),i="--iib-lr-layout-info-panel-width",l=re(()=>n.alwaysOn&&n.enable?n.panelWidth:0);xe(n,D=>{t.value=wt(D),Ft(n,i,l),ya(n),Wt=n},{deep:!0}),Ve(()=>Ft(n,i,l));const{enable:p,panelWidth:o,alwaysOn:r}=fn(n);return{state:n,isLeftRightLayout:p,panelwidtrhStyleVarName:i,lrLayoutInfoPanelWidth:o,lrMenuAlwaysOn:r}},ya=Xe(e=>hn("fullscreen_layout",e),300),Ft=Xe((e,t,n)=>{e.enable?(document.body.classList.add("fullscreen-lr-layout"),document.documentElement.style.setProperty(t,`${e.panelWidth}px`),document.documentElement.style.setProperty("--iib-lr-layout-container-offset",`${n.value}px`)):(document.documentElement.style.removeProperty(t),document.documentElement.style.removeProperty("--iib-lr-layout-container-offset"),document.body.classList.remove("fullscreen-lr-layout"))},300);/*! +import{c as m,A as Ae,ae as cn,d as lt,p as Ge,ak as Ve,c9 as $t,r as ce,af as ie,o as _,j as k,k as w,F as V,G as de,t as E,x as O,l as N,m as H,v as ue,y as v,$ as Fe,at as Ft,au as Xt,n as ct,bS as un,s as Le,aH as dn,az as Ne,aA as ot,aJ as gn,ap as wt,ca as fn,av as Xe,ax as hn,cb as pn,bk as vn,bn as _n,cc as Qe,cd as mn,ce as yn,cf as bn,ay as $n,T as ne,cg as Et,bL as wn,bM as En,ch as kt,C as De,z as Ot,ci as kn,cj as Mt,E as et,Q as tt,B as Ue,ck as nt,cl as On,R as be,cm as Mn,a0 as xn,cn as Sn,co as Tn,M as Ln,a2 as Cn,bQ as An,aq as zn,cp as Dn,cq as Nn,a4 as In,cr as jn}from"./index-c24b5c8e.js";/* empty css */import{D as Pn}from"./index-5130babf.js";import{_ as Bn}from"./FileItem-c62b10f3.js";import{k as xt}from"./index-47a4d52c.js";var Rn={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"}}]},name:"folder",theme:"outlined"};const Un=Rn;function St(e){for(var t=1;t{const n=e[t],i=typeof n;(i==="object"||i==="function")&&!Object.isFrozen(n)&&qt(n)}),e}class Dt{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Jt(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function _e(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach(function(i){for(const c in i)n[c]=i[c]}),n}const ci="",Nt=e=>!!e.scope,ui=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((i,c)=>`${i}${"_".repeat(c+1)}`)].join(" ")}return`${t}${e}`};class di{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Jt(t)}openNode(t){if(!Nt(t))return;const n=ui(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Nt(t)&&(this.buffer+=ci)}value(){return this.buffer}span(t){this.buffer+=``}}const It=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class vt{constructor(){this.rootNode=It(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=It({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(i=>this._walk(t,i)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{vt._collapse(n)}))}}class gi extends vt{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const i=t.root;n&&(i.scope=`language:${n}`),this.add(i)}toHTML(){return new di(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function Ie(e){return e?typeof e=="string"?e:e.source:null}function Gt(e){return we("(?=",e,")")}function fi(e){return we("(?:",e,")*")}function hi(e){return we("(?:",e,")?")}function we(...e){return e.map(n=>Ie(n)).join("")}function pi(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function _t(...e){return"("+(pi(e).capture?"":"?:")+e.map(i=>Ie(i)).join("|")+")"}function Vt(e){return new RegExp(e.toString()+"|").exec("").length-1}function vi(e,t){const n=e&&e.exec(t);return n&&n.index===0}const _i=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function mt(e,{joinWith:t}){let n=0;return e.map(i=>{n+=1;const c=n;let p=Ie(i),s="";for(;p.length>0;){const o=_i.exec(p);if(!o){s+=p;break}s+=p.substring(0,o.index),p=p.substring(o.index+o[0].length),o[0][0]==="\\"&&o[1]?s+="\\"+String(Number(o[1])+c):(s+=o[0],o[0]==="("&&n++)}return s}).map(i=>`(${i})`).join(t)}const mi=/\b\B/,Yt="[a-zA-Z]\\w*",yt="[a-zA-Z_]\\w*",Zt="\\b\\d+(\\.\\d+)?",Kt="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Qt="\\b(0b[01]+)",yi="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",bi=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=we(t,/.*\b/,e.binary,/\b.*/)),_e({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,i)=>{n.index!==0&&i.ignoreMatch()}},e)},je={begin:"\\\\[\\s\\S]",relevance:0},$i={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[je]},wi={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[je]},Ei={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Ye=function(e,t,n={}){const i=_e({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const c=_t("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:we(/[ ]+/,"(",c,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},ki=Ye("//","$"),Oi=Ye("/\\*","\\*/"),Mi=Ye("#","$"),xi={scope:"number",begin:Zt,relevance:0},Si={scope:"number",begin:Kt,relevance:0},Ti={scope:"number",begin:Qt,relevance:0},Li={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[je,{begin:/\[/,end:/\]/,relevance:0,contains:[je]}]},Ci={scope:"title",begin:Yt,relevance:0},Ai={scope:"title",begin:yt,relevance:0},zi={begin:"\\.\\s*"+yt,relevance:0},Di=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})};var He=Object.freeze({__proto__:null,APOS_STRING_MODE:$i,BACKSLASH_ESCAPE:je,BINARY_NUMBER_MODE:Ti,BINARY_NUMBER_RE:Qt,COMMENT:Ye,C_BLOCK_COMMENT_MODE:Oi,C_LINE_COMMENT_MODE:ki,C_NUMBER_MODE:Si,C_NUMBER_RE:Kt,END_SAME_AS_BEGIN:Di,HASH_COMMENT_MODE:Mi,IDENT_RE:Yt,MATCH_NOTHING_RE:mi,METHOD_GUARD:zi,NUMBER_MODE:xi,NUMBER_RE:Zt,PHRASAL_WORDS_MODE:Ei,QUOTE_STRING_MODE:wi,REGEXP_MODE:Li,RE_STARTERS_RE:yi,SHEBANG:bi,TITLE_MODE:Ci,UNDERSCORE_IDENT_RE:yt,UNDERSCORE_TITLE_MODE:Ai});function Ni(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function Ii(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function ji(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Ni,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Pi(e,t){Array.isArray(e.illegal)&&(e.illegal=_t(...e.illegal))}function Bi(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Ri(e,t){e.relevance===void 0&&(e.relevance=1)}const Ui=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(i=>{delete e[i]}),e.keywords=n.keywords,e.begin=we(n.beforeMatch,Gt(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Hi=["of","and","for","in","not","or","if","then","parent","list","value"],Wi="keyword";function en(e,t,n=Wi){const i=Object.create(null);return typeof e=="string"?c(n,e.split(" ")):Array.isArray(e)?c(n,e):Object.keys(e).forEach(function(p){Object.assign(i,en(e[p],t,p))}),i;function c(p,s){t&&(s=s.map(o=>o.toLowerCase())),s.forEach(function(o){const d=o.split("|");i[d[0]]=[p,Fi(d[0],d[1])]})}}function Fi(e,t){return t?Number(t):Xi(e)?0:1}function Xi(e){return Hi.includes(e.toLowerCase())}const jt={},$e=e=>{console.error(e)},Pt=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Te=(e,t)=>{jt[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),jt[`${e}/${t}`]=!0)},qe=new Error;function tn(e,t,{key:n}){let i=0;const c=e[n],p={},s={};for(let o=1;o<=t.length;o++)s[o+i]=c[o],p[o+i]=!0,i+=Vt(t[o-1]);e[n]=s,e[n]._emit=p,e[n]._multi=!0}function qi(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw $e("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),qe;if(typeof e.beginScope!="object"||e.beginScope===null)throw $e("beginScope must be object"),qe;tn(e,e.begin,{key:"beginScope"}),e.begin=mt(e.begin,{joinWith:""})}}function Ji(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw $e("skip, excludeEnd, returnEnd not compatible with endScope: {}"),qe;if(typeof e.endScope!="object"||e.endScope===null)throw $e("endScope must be object"),qe;tn(e,e.end,{key:"endScope"}),e.end=mt(e.end,{joinWith:""})}}function Gi(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Vi(e){Gi(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),qi(e),Ji(e)}function Yi(e){function t(s,o){return new RegExp(Ie(s),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(o?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(o,d){d.position=this.position++,this.matchIndexes[this.matchAt]=d,this.regexes.push([d,o]),this.matchAt+=Vt(o)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const o=this.regexes.map(d=>d[1]);this.matcherRe=t(mt(o,{joinWith:"|"}),!0),this.lastIndex=0}exec(o){this.matcherRe.lastIndex=this.lastIndex;const d=this.matcherRe.exec(o);if(!d)return null;const S=d.findIndex((Y,G)=>G>0&&Y!==void 0),A=this.matchIndexes[S];return d.splice(0,S),Object.assign(d,A)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(o){if(this.multiRegexes[o])return this.multiRegexes[o];const d=new n;return this.rules.slice(o).forEach(([S,A])=>d.addRule(S,A)),d.compile(),this.multiRegexes[o]=d,d}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(o,d){this.rules.push([o,d]),d.type==="begin"&&this.count++}exec(o){const d=this.getMatcher(this.regexIndex);d.lastIndex=this.lastIndex;let S=d.exec(o);if(this.resumingScanAtSamePosition()&&!(S&&S.index===this.lastIndex)){const A=this.getMatcher(0);A.lastIndex=this.lastIndex+1,S=A.exec(o)}return S&&(this.regexIndex+=S.position+1,this.regexIndex===this.count&&this.considerAll()),S}}function c(s){const o=new i;return s.contains.forEach(d=>o.addRule(d.begin,{rule:d,type:"begin"})),s.terminatorEnd&&o.addRule(s.terminatorEnd,{type:"end"}),s.illegal&&o.addRule(s.illegal,{type:"illegal"}),o}function p(s,o){const d=s;if(s.isCompiled)return d;[Ii,Bi,Vi,Ui].forEach(A=>A(s,o)),e.compilerExtensions.forEach(A=>A(s,o)),s.__beforeBegin=null,[ji,Pi,Ri].forEach(A=>A(s,o)),s.isCompiled=!0;let S=null;return typeof s.keywords=="object"&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),S=s.keywords.$pattern,delete s.keywords.$pattern),S=S||/\w+/,s.keywords&&(s.keywords=en(s.keywords,e.case_insensitive)),d.keywordPatternRe=t(S,!0),o&&(s.begin||(s.begin=/\B|\b/),d.beginRe=t(d.begin),!s.end&&!s.endsWithParent&&(s.end=/\B|\b/),s.end&&(d.endRe=t(d.end)),d.terminatorEnd=Ie(d.end)||"",s.endsWithParent&&o.terminatorEnd&&(d.terminatorEnd+=(s.end?"|":"")+o.terminatorEnd)),s.illegal&&(d.illegalRe=t(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map(function(A){return Zi(A==="self"?s:A)})),s.contains.forEach(function(A){p(A,d)}),s.starts&&p(s.starts,o),d.matcher=c(d),d}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=_e(e.classNameAliases||{}),p(e)}function nn(e){return e?e.endsWithParent||nn(e.starts):!1}function Zi(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return _e(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:nn(e)?_e(e,{starts:e.starts?_e(e.starts):null}):Object.isFrozen(e)?_e(e):e}var Ki="11.9.0";class Qi extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const it=Jt,Bt=_e,Rt=Symbol("nomatch"),ea=7,an=function(e){const t=Object.create(null),n=Object.create(null),i=[];let c=!0;const p="Could not find the language '{}', did you forget to load/include a language module?",s={disableAutodetect:!0,name:"Plain text",contains:[]};let o={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:gi};function d(r){return o.noHighlightRe.test(r)}function S(r){let h=r.className+" ";h+=r.parentNode?r.parentNode.className:"";const T=o.languageDetectRe.exec(h);if(T){const I=ee(T[1]);return I||(Pt(p.replace("{}",T[1])),Pt("Falling back to no-highlight mode for this block.",r)),I?T[1]:"no-highlight"}return h.split(/\s+/).find(I=>d(I)||ee(I))}function A(r,h,T){let I="",F="";typeof h=="object"?(I=r,T=h.ignoreIllegals,F=h.language):(Te("10.7.0","highlight(lang, code, ...args) has been deprecated."),Te("10.7.0",`Please use highlight(code, options) instead. +https://github.com/highlightjs/highlight.js/issues/2277`),F=r,I=h),T===void 0&&(T=!0);const Z={code:I,language:F};ke("before:highlight",Z);const ae=Z.result?Z.result:Y(Z.language,Z.code,T);return ae.code=Z.code,ke("after:highlight",ae),ae}function Y(r,h,T,I){const F=Object.create(null);function Z(u,f){return u.keywords[f]}function ae(){if(!$.keywords){L.addText(D);return}let u=0;$.keywordPatternRe.lastIndex=0;let f=$.keywordPatternRe.exec(D),l="";for(;f;){l+=D.substring(u,f.index);const b=j.case_insensitive?f[0].toLowerCase():f[0],P=Z($,b);if(P){const[oe,rn]=P;if(L.addText(l),l="",F[b]=(F[b]||0)+1,F[b]<=ea&&(xe+=rn),oe.startsWith("_"))l+=f[0];else{const ln=j.classNameAliases[oe]||oe;se(f[0],ln)}}else l+=f[0];u=$.keywordPatternRe.lastIndex,f=$.keywordPatternRe.exec(D)}l+=D.substring(u),L.addText(l)}function pe(){if(D==="")return;let u=null;if(typeof $.subLanguage=="string"){if(!t[$.subLanguage]){L.addText(D);return}u=Y($.subLanguage,D,!0,ge[$.subLanguage]),ge[$.subLanguage]=u._top}else u=K(D,$.subLanguage.length?$.subLanguage:null);$.relevance>0&&(xe+=u.relevance),L.__addSublanguage(u._emitter,u.language)}function J(){$.subLanguage!=null?pe():ae(),D=""}function se(u,f){u!==""&&(L.startScope(f),L.addText(u),L.endScope())}function Oe(u,f){let l=1;const b=f.length-1;for(;l<=b;){if(!u._emit[l]){l++;continue}const P=j.classNameAliases[u[l]]||u[l],oe=f[l];P?se(oe,P):(D=oe,ae(),D=""),l++}}function Me(u,f){return u.scope&&typeof u.scope=="string"&&L.openNode(j.classNameAliases[u.scope]||u.scope),u.beginScope&&(u.beginScope._wrap?(se(D,j.classNameAliases[u.beginScope._wrap]||u.beginScope._wrap),D=""):u.beginScope._multi&&(Oe(u.beginScope,f),D="")),$=Object.create(u,{parent:{value:$}}),$}function Re(u,f,l){let b=vi(u.endRe,l);if(b){if(u["on:end"]){const P=new Dt(u);u["on:end"](f,P),P.isMatchIgnored&&(b=!1)}if(b){for(;u.endsParent&&u.parent;)u=u.parent;return u}}if(u.endsWithParent)return Re(u.parent,f,l)}function a(u){return $.matcher.regexIndex===0?(D+=u[0],1):(Se=!0,0)}function g(u){const f=u[0],l=u.rule,b=new Dt(l),P=[l.__beforeBegin,l["on:begin"]];for(const oe of P)if(oe&&(oe(u,b),b.isMatchIgnored))return a(f);return l.skip?D+=f:(l.excludeBegin&&(D+=f),J(),!l.returnBegin&&!l.excludeBegin&&(D=f)),Me(l,u),l.returnBegin?0:f.length}function X(u){const f=u[0],l=h.substring(u.index),b=Re($,u,l);if(!b)return Rt;const P=$;$.endScope&&$.endScope._wrap?(J(),se(f,$.endScope._wrap)):$.endScope&&$.endScope._multi?(J(),Oe($.endScope,u)):P.skip?D+=f:(P.returnEnd||P.excludeEnd||(D+=f),J(),P.excludeEnd&&(D=f));do $.scope&&L.closeNode(),!$.skip&&!$.subLanguage&&(xe+=$.relevance),$=$.parent;while($!==b.parent);return b.starts&&Me(b.starts,u),P.returnEnd?0:f.length}function R(){const u=[];for(let f=$;f!==j;f=f.parent)f.scope&&u.unshift(f.scope);u.forEach(f=>L.openNode(f))}let x={};function z(u,f){const l=f&&f[0];if(D+=u,l==null)return J(),0;if(x.type==="begin"&&f.type==="end"&&x.index===f.index&&l===""){if(D+=h.slice(f.index,f.index+1),!c){const b=new Error(`0 width match regex (${r})`);throw b.languageName=r,b.badRule=x.rule,b}return 1}if(x=f,f.type==="begin")return g(f);if(f.type==="illegal"&&!T){const b=new Error('Illegal lexeme "'+l+'" for mode "'+($.scope||"")+'"');throw b.mode=$,b}else if(f.type==="end"){const b=X(f);if(b!==Rt)return b}if(f.type==="illegal"&&l==="")return 1;if(ze>1e5&&ze>f.index*3)throw new Error("potential infinite loop, way more iterations than matches");return D+=l,l.length}const j=ee(r);if(!j)throw $e(p.replace("{}",r)),new Error('Unknown language: "'+r+'"');const re=Yi(j);let ve="",$=I||re;const ge={},L=new o.__emitter(o);R();let D="",xe=0,fe=0,ze=0,Se=!1;try{if(j.__emitTokens)j.__emitTokens(h,L);else{for($.matcher.considerAll();;){ze++,Se?Se=!1:$.matcher.considerAll(),$.matcher.lastIndex=fe;const u=$.matcher.exec(h);if(!u)break;const f=h.substring(fe,u.index),l=z(f,u);fe=u.index+l}z(h.substring(fe))}return L.finalize(),ve=L.toHTML(),{language:r,value:ve,relevance:xe,illegal:!1,_emitter:L,_top:$}}catch(u){if(u.message&&u.message.includes("Illegal"))return{language:r,value:it(h),illegal:!0,relevance:0,_illegalBy:{message:u.message,index:fe,context:h.slice(fe-100,fe+100),mode:u.mode,resultSoFar:ve},_emitter:L};if(c)return{language:r,value:it(h),illegal:!1,relevance:0,errorRaised:u,_emitter:L,_top:$};throw u}}function G(r){const h={value:it(r),illegal:!1,relevance:0,_top:s,_emitter:new o.__emitter(o)};return h._emitter.addText(r),h}function K(r,h){h=h||o.languages||Object.keys(t);const T=G(r),I=h.filter(ee).filter(Ee).map(J=>Y(J,r,!1));I.unshift(T);const F=I.sort((J,se)=>{if(J.relevance!==se.relevance)return se.relevance-J.relevance;if(J.language&&se.language){if(ee(J.language).supersetOf===se.language)return 1;if(ee(se.language).supersetOf===J.language)return-1}return 0}),[Z,ae]=F,pe=Z;return pe.secondBest=ae,pe}function M(r,h,T){const I=h&&n[h]||T;r.classList.add("hljs"),r.classList.add(`language-${I}`)}function B(r){let h=null;const T=S(r);if(d(T))return;if(ke("before:highlightElement",{el:r,language:T}),r.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",r);return}if(r.children.length>0&&(o.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(r)),o.throwUnescapedHTML))throw new Qi("One of your code blocks includes unescaped HTML.",r.innerHTML);h=r;const I=h.textContent,F=T?A(I,{language:T,ignoreIllegals:!0}):K(I);r.innerHTML=F.value,r.dataset.highlighted="yes",M(r,T,F.language),r.result={language:F.language,re:F.relevance,relevance:F.relevance},F.secondBest&&(r.secondBest={language:F.secondBest.language,relevance:F.secondBest.relevance}),ke("after:highlightElement",{el:r,result:F,text:I})}function W(r){o=Bt(o,r)}const q=()=>{y(),Te("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Q(){y(),Te("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let le=!1;function y(){if(document.readyState==="loading"){le=!0;return}document.querySelectorAll(o.cssSelector).forEach(B)}function U(){le&&y()}typeof window<"u"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",U,!1);function C(r,h){let T=null;try{T=h(e)}catch(I){if($e("Language definition for '{}' could not be registered.".replace("{}",r)),c)$e(I);else throw I;T=s}T.name||(T.name=r),t[r]=T,T.rawDefinition=h.bind(null,e),T.aliases&&te(T.aliases,{languageName:r})}function he(r){delete t[r];for(const h of Object.keys(n))n[h]===r&&delete n[h]}function ye(){return Object.keys(t)}function ee(r){return r=(r||"").toLowerCase(),t[r]||t[n[r]]}function te(r,{languageName:h}){typeof r=="string"&&(r=[r]),r.forEach(T=>{n[T.toLowerCase()]=h})}function Ee(r){const h=ee(r);return h&&!h.disableAutodetect}function Ze(r){r["before:highlightBlock"]&&!r["before:highlightElement"]&&(r["before:highlightElement"]=h=>{r["before:highlightBlock"](Object.assign({block:h.el},h))}),r["after:highlightBlock"]&&!r["after:highlightElement"]&&(r["after:highlightElement"]=h=>{r["after:highlightBlock"](Object.assign({block:h.el},h))})}function Pe(r){Ze(r),i.push(r)}function Ke(r){const h=i.indexOf(r);h!==-1&&i.splice(h,1)}function ke(r,h){const T=r;i.forEach(function(I){I[T]&&I[T](h)})}function Be(r){return Te("10.7.0","highlightBlock will be removed entirely in v12.0"),Te("10.7.0","Please use highlightElement now."),B(r)}Object.assign(e,{highlight:A,highlightAuto:K,highlightAll:y,highlightElement:B,highlightBlock:Be,configure:W,initHighlighting:q,initHighlightingOnLoad:Q,registerLanguage:C,unregisterLanguage:he,listLanguages:ye,getLanguage:ee,registerAliases:te,autoDetection:Ee,inherit:Bt,addPlugin:Pe,removePlugin:Ke}),e.debugMode=function(){c=!1},e.safeMode=function(){c=!0},e.versionString=Ki,e.regex={concat:we,lookahead:Gt,either:_t,optional:hi,anyNumberOfTimes:fi};for(const r in He)typeof He[r]=="object"&&qt(He[r]);return Object.assign(e,He),e},Ce=an({});Ce.newInstance=()=>an({});var ta=Ce;Ce.HighlightJS=Ce;Ce.default=Ce;const Ut=cn(ta);function na(e){const t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},i=["true","false","null"],c={scope:"literal",beginKeywords:i.join(" ")};return{name:"JSON",keywords:{literal:i},contains:[t,n,e.QUOTE_STRING_MODE,c,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}const ia=e=>(Ft("data-v-769039d4"),e=e(),Xt(),e),aa={class:"exif-browser"},sa={key:0,class:"exif-header"},oa={class:"exif-path"},ra=ia(()=>w("span",{class:"path-separator"},"/",-1)),la=["onClick"],ca={class:"exif-content"},ua={class:"exif-key"},da={class:"exif-value"},ga=["innerHTML"],fa={key:1,class:"exif-simple"},ha=["innerHTML"],pa=lt({__name:"ExifBrowser",props:{data:{}},setup(e){const t=e;Ut.registerLanguage("json",na);const n=Ge();Ve(async()=>{await(n.computedTheme==="dark"?$t(()=>Promise.resolve({}),["assets/atom-one-dark-b334430f.css"]):$t(()=>Promise.resolve({}),["assets/github-47e00288.css"]))});const i=ce([]),c=ie(()=>{if(i.value.length===0)return t.data;let M=t.data;for(const B of i.value)M=B.value;return M}),p=new Map,s=M=>{if(typeof M!="string")return null;const B=M;if(p.has(B))return p.get(B);try{const W=JSON.parse(M);return p.set(B,W),W}catch{return null}},o=M=>s(M)!==null,d=M=>{if(M===null)return"null";if(typeof M=="object")try{return JSON.stringify(M,null,2)}catch{return String(M)}return String(M)},S=M=>{const B=d(M);if(typeof M=="string"&&M.length>1e3)return B.substring(0,1e3)+"...";try{return Ut.highlight(B,{language:"json"}).value}catch{return B}},A=(M,B)=>{const W=s(B);W!==null&&i.value.push({key:M,value:W})},Y=M=>{i.value=i.value.slice(0,M+1)},G=()=>{i.value=[]},K=M=>/^\d+$/.test(M)?`[${M}]`:M;return(M,B)=>{const W=Fe;return _(),k("div",aa,[i.value.length>0?(_(),k("div",sa,[w("div",oa,[w("span",{class:"path-item",onClick:G},"root"),(_(!0),k(V,null,de(i.value,(q,Q)=>(_(),k(V,{key:Q},[ra,w("span",{class:"path-item clickable",onClick:le=>Y(Q)},E(K(q.key)),9,la)],64))),128))]),m(W,{size:"small",onClick:G},{default:O(()=>[N(E(M.$t("reset")||"Reset"),1)]),_:1})])):H("",!0),w("div",ca,[typeof c.value=="object"&&c.value!==null?(_(!0),k(V,{key:0},de(c.value,(q,Q)=>(_(),k("div",{class:"exif-item",key:Q},[w("div",ua,E(K(Q)),1),w("div",da,[w("div",{class:"value-text",innerHTML:S(q)},null,8,ga),o(q)?(_(),ue(W,{key:0,type:"text",onClick:le=>A(String(Q),q)},{default:O(()=>[m(v(Wn),{style:{"font-size":"18px"}})]),_:2},1032,["onClick"])):H("",!0)])]))),128)):(_(),k("div",fa,[w("div",{innerHTML:S(c.value)},null,8,ha)]))])])}}});const va=ct(pa,[["__scopeId","data-v-769039d4"]]);function _a(e,t,n,i){let c=0,p=0,s=typeof(i==null?void 0:i.width)=="number"?i.width:0,o=typeof(i==null?void 0:i.height)=="number"?i.height:0,d=typeof(i==null?void 0:i.left)=="number"?i.left:0,S=typeof(i==null?void 0:i.top)=="number"?i.top:0,A=!1;const Y=y=>{y.stopPropagation(),y.preventDefault(),!(!e.value||!t.value)&&(c=y instanceof MouseEvent?y.clientX:y.touches[0].clientX,p=y instanceof MouseEvent?y.clientY:y.touches[0].clientY,s=e.value.offsetWidth,o=e.value.offsetHeight,t.value.offsetLeft,t.value.offsetTop,document.documentElement.addEventListener("mousemove",G),document.documentElement.addEventListener("touchmove",G),document.documentElement.addEventListener("mouseup",K),document.documentElement.addEventListener("touchend",K))},G=y=>{if(!e.value||!t.value)return;let U=s+((y instanceof MouseEvent?y.clientX:y.touches[0].clientX)-c),C=o+((y instanceof MouseEvent?y.clientY:y.touches[0].clientY)-p);e.value.offsetLeft+U>window.innerWidth&&(U=window.innerWidth-e.value.offsetLeft),e.value.offsetTop+C>window.innerHeight&&(C=window.innerHeight-e.value.offsetTop),e.value.style.width=`${U}px`,e.value.style.height=`${C}px`,i!=null&&i.onResize&&i.onResize(U,C)},K=()=>{document.documentElement.removeEventListener("mousemove",G),document.documentElement.removeEventListener("touchmove",G),document.documentElement.removeEventListener("mouseup",K),document.documentElement.removeEventListener("touchend",K)},M=y=>{y.stopPropagation(),y.preventDefault(),!(!e.value||!n.value)&&(A=!0,d=e.value.offsetLeft,S=e.value.offsetTop,c=y instanceof MouseEvent?y.clientX:y.touches[0].clientX,p=y instanceof MouseEvent?y.clientY:y.touches[0].clientY,document.documentElement.addEventListener("mousemove",B),document.documentElement.addEventListener("touchmove",B),document.documentElement.addEventListener("mouseup",W),document.documentElement.addEventListener("touchend",W))},B=y=>{if(!e.value||!n.value||!A)return;const U=d+((y instanceof MouseEvent?y.clientX:y.touches[0].clientX)-c),C=S+((y instanceof MouseEvent?y.clientY:y.touches[0].clientY)-p);U<0?e.value.style.left="0px":U+e.value.offsetWidth>window.innerWidth?e.value.style.left=`${window.innerWidth-e.value.offsetWidth}px`:e.value.style.left=`${U}px`,C<0?e.value.style.top="0px":C+e.value.offsetHeight>window.innerHeight?e.value.style.top=`${window.innerHeight-e.value.offsetHeight}px`:e.value.style.top=`${C}px`,i!=null&&i.onDrag&&i.onDrag(U,C)},W=()=>{A=!1,document.documentElement.removeEventListener("mousemove",B),document.documentElement.removeEventListener("touchmove",B),document.documentElement.removeEventListener("mouseup",W),document.documentElement.removeEventListener("touchend",W)},q=()=>{if(!e.value||!t.value)return;let y=e.value.offsetLeft,U=e.value.offsetTop,C=e.value.offsetWidth,he=e.value.offsetHeight;y+C>window.innerWidth&&(y=window.innerWidth-C,y<0&&(y=0,C=window.innerWidth)),U+he>window.innerHeight&&(U=window.innerHeight-he,U<0&&(U=0,he=window.innerHeight)),e.value.style.left=`${y}px`,e.value.style.top=`${U}px`,e.value.style.width=`${C}px`,e.value.style.height=`${he}px`},Q=()=>{!e.value||!i||(typeof i.width=="number"&&(e.value.style.width=`${i.width}px`),typeof i.height=="number"&&(e.value.style.height=`${i.height}px`),typeof i.left=="number"&&(e.value.style.left=`${i.left}px`),typeof i.top=="number"&&(e.value.style.top=`${i.top}px`),q(),window.addEventListener("resize",q))},le=()=>{document.documentElement.removeEventListener("mousemove",G),document.documentElement.removeEventListener("touchmove",G),document.documentElement.removeEventListener("mouseup",K),document.documentElement.removeEventListener("touchend",K),document.documentElement.removeEventListener("mousemove",B),document.documentElement.removeEventListener("touchmove",B),document.documentElement.removeEventListener("mouseup",W),document.documentElement.removeEventListener("touchend",W),window.removeEventListener("resize",q)};return Ve(Q),un(le),Le(()=>i==null?void 0:i.disbaled,async y=>{await dn(),y!==void 0&&(y?le():Q())}),Le(()=>[e.value,t.value,n.value],([y,U,C])=>{y&&U&&(U.addEventListener("mousedown",Y),U.addEventListener("touchstart",Y)),y&&C&&(C.addEventListener("mousedown",M),C.addEventListener("touchstart",M))}),{handleResizeMouseDown:Y,handleDragMouseDown:M}}let Ht=null;const ma=()=>{var d,S;const e=Ge(),t=Ne(ot+"fullscreen_layout",{enable:!0,panelWidth:384,alwaysOn:!0}),n=gn(Ht??((S=(d=e.conf)==null?void 0:d.app_fe_setting)==null?void 0:S.fullscreen_layout)??wt(t.value)),i="--iib-lr-layout-info-panel-width",c=ie(()=>n.alwaysOn&&n.enable?n.panelWidth:0);Le(n,A=>{t.value=wt(A),Wt(n,i,c),ya(n),Ht=n},{deep:!0}),Ve(()=>Wt(n,i,c));const{enable:p,panelWidth:s,alwaysOn:o}=fn(n);return{state:n,isLeftRightLayout:p,panelwidtrhStyleVarName:i,lrLayoutInfoPanelWidth:s,lrMenuAlwaysOn:o}},ya=Xe(e=>hn("fullscreen_layout",e),300),Wt=Xe((e,t,n)=>{e.enable?(document.body.classList.add("fullscreen-lr-layout"),document.documentElement.style.setProperty(t,`${e.panelWidth}px`),document.documentElement.style.setProperty("--iib-lr-layout-container-offset",`${n.value}px`)):(document.documentElement.style.removeProperty(t),document.documentElement.style.removeProperty("--iib-lr-layout-container-offset"),document.body.classList.remove("fullscreen-lr-layout"))},300);/*! author:kooboy_li@163.com MIT licensed -*/let on=19968,ba=(40896-on)/2,lt="",We=",",$a=(()=>{let e=[];for(let t=33;t<127;t++)t!=34&&t!=92&&t!=45&&e.push(String.fromCharCode(t));return e.join(lt)})(),$t={a:{yi:"!]#R$!$q(3(p)[*2*g+6+d.C.q0[0w1L2<717l8B8E9?:8;V;[;e;{<)<+.>4??@~A`BbC:CGC^CiDMDjDkF!H/H;JaL?M.M2MoNCN|OgO|P$P)PBPyQ~R%R.S.T;Tk^l$lt?uJv$vMyE|R}a-!}-#&-#8-#L-#b-$Q-%?-+q-,6-,8",yu:"#V$l%S&9&I('(7(=)))m*#*$*B+2+F+v,0,b,i.W0.1F232L2a3(384>6P8n;';i;y<1>(>)>]@iB&X&m&s'2'X'd'f(9(c(i(j)@)l+'+M.).+1y1{2=3K4c6&6'6)606<6B6`9`9{:a`?`AgCLCuD%D2F2GyH&H1I;K~LkLuM&MYO0O3O9P8PbPcQqR5S2SCU0U~V%XYY&Z}[G^P`7cUc}dEeNgOj$j)l?m:n4p,sOuRv.y'{/|i}1~P-$B-%Y-)|-)}-*K-+G-+H-,m-.@-.M-/|-0y-2D-2c-4W-4`-4h-7a-7p-9c-9i",shang:")Y6V9cJvR8UqXJXa])asbQc,s,uSvz-#+-.;",xia:"#Y#w&,&;'''I)1.u/j7=:[<'B[ByCtL'NmNyQOR([0`(cLh[iRkVt/t_u4uezFzM|W|{~d-&)-*4-.}-0a-5;-8S",han:"#,.m/h:l

MFrGXJqNrOUPCPqPrQ|]@`+`2h1lBlZnXp*r;rWrkz9{4{B}x-#c-#y-$;-$l-$y-%Q-%n-(i-(x-)i-/!-3*-5B-9V",wan:"#=$0&o.]0F4@5X5b6*628u9pk@,JhR`b$b`knmtujz'z0}<-#+-'I-*Q-16-7m",san:"3T3q3w3x7~uJuwzA-'n-([-,s",ji:"#r%''l'y)3)d)o*Z+'+9+G+M+T+Z+^+g+x._.c/R090d1S1W2;43484J4R5C5w6)6C6`7f7s878H8t8w9J9X9Z9{;8;<;B;C=(=2>6?YA$B+CHD0D8DbE:EQF2I*I|JEJnKKL)L:LkLzMdN'N5N:NiQ6QyRrUWVcVnWPWQWtX6XEXYXuY(ZAZ|[/]O]e^F^J^U^~`)b#b0c*ckc}dee!e$e9e>eyf+fXfrg)hFhriMjZlrqmr)sRt%uov3vevw|@};}N}g~!~+~F~{-!&-!u-#N-$%-&a-'u-(,-*x-+]-,W-.?-.V-._-.d-.g-/+-0$-0H-1%-1/-10-1^-1o-2/-2@-3'-4)-4o-5>-5H-5U-6,-6J-7/-7P-9e-9g-9h-9i-9j-:l",bu:"0$192,FKJgT=UYZ^e+hhjmm8mFoGpGp}sjw]w{-'7-'E-/m-3#-4.-6=",fou:"4I:L:O:Q~1-3:",mian:"!G!d#4$U$W$]3Y5X6A6_6o9g9w@qB/CkG!H_Q;-!L-!M-!P-/_-7y-7z-8'-8,-8q-8r",gai:"):5=5LD,ErI!J1Z'_/`TaYaac!lnpcw[|O}1",chou:"!+#n$N+0/y0}2:4e5/6#9jB*B.GNLfUmZ+^3^5_4e%e4fWkan]nbo.o6oU}u~$~*-.X-/>",zhuan:"%H'S'V.K0k1B1H1r2?7Z+7+f,8.#.|0K0p2O>#DNE1P.ccd]eMlpt8y>-0&",ju:"!Z$L$w%R*W,c,l/e1~3&3J8#:t=#=`=k@FBGC0DlD}FeGAIaIkJbMrN[OVP`RDTlU|W>Y`[$^Z`Ua*ccc{dWd]dae#e@eFeff8fSg*ga@'@2@KA%C|DQO+O]O^PvR!REScU'UfZw]m`l`na'i[l_m;p-4F-6'-63-91",shi:"!E!Q!e#?$p%$&+'$([(](q*^.&/5/n0[1w204zQQR9VYW2W@W^X2XNYxY{ZI[:[<[v]X^l^{^}_p`DaDbmgqi8ixjdk!kNkpl(lkntoMo^ocoeofp5ppq%q&q*q4qbr=t9x/-&^-&_-&}-'<-'@-(*-(8-)!-)H-+,-/<-0?-0d-0o-0p-2:-2O-3+-38-57-6M-9C-9E",qiu:"*6*7+a0r3k4D5]6j>7CaCeF`HEJXMhNgNjONP;QMQ_RfSWUUX?XUXqXrajc$d'jpjskXl]n@o.oup:r?-#5-#6-$8-/'-/k-0W-0X-1,-2Z-4v-7&-9U-:Y-:Z-:]",bing:"!n)F*4+/,>.75@DsOcZ7l`puqar||>-!:-!q-#,-#G-''-'C-(D-/O",ye:"$>$E(0,a6g=;@?HfSb[]_]lUlfn(oip=rmtDtTtevTx?-!O-!R-$5-%N-'F-'e-(T-*o-4Y-61",cong:"$'&Y1>8==g=l=p=vDIE=I2JUK0LsRZZk]$a}a~sKtBuKu_-*)-*V-+Y",dong:"&&.r0b5D?7?C@JD|G;I#KwQ([&jV~^-)T-/=-0)-4g-5/-6T-9,",si:"'?(b)^)g)p*+.+>0KxL+NLP7PiQnReS&W_`tp1pvp{qTqnr8r`tIuzyB-&6-&R-&^-&c-&s-&{-(:-)L-)q-*8-+.-0.-5j-6`-9N-:o",cheng:"#0$,$P&W*O*[*w+A+{,O,v/l5[7#:`?}FQOoS(UKZV_#cHcJk#m$nhrxtkuxv@vWx=xB|2-!A-$h-'w-)o-*>-+B-/u",diu:"r2xL-&&",liang:"3A3D3{6K@0CRF{Q%Up[,_Oe1h!h2hCiBiHojss-!=-)h-.J-.O",you:"(r)O*I7o8W;L;f=5=M>VDKFoFsFwG/KaOOOSPSQLY8ZN_;`qh%hMjWjnk6kPlYmEn3n>ncodp~r3x&x<-),-.y-/1-1p-1z-7N-8P-9D",yan:"##%F%L&%&F&T&v(Z,j/u1?2$5t7V;!;h?<@@AsCVCYCZD3FmGpH.JlN_PVQAT$UxV9WUX/XkXmXnY?Z3[U^1^C^E_e_~`B`C`RbDbPc;g/g7kIm#mNmsn5nHnsnyoPoVo`x+z7zkzmzn{A{`{e|}}2}b-%'-%,-%B-%v-'0-(#-)~-*$-*F-*j-*s-+C-.4-.H-.Y-0V-3$-3*-3B-3n-5#-5G-5u-7K-7r-8T-8W-8_-8`-8a-8d-8j-9L-9Q-9w-:1-:N",sang:"'EVNts-%2-%{",gun:"#<&#'U6F6z9dJ>JpTFTwUu]4h:?B@}AbB3BwECHxJ1NwOrP'U9UPXM[X[hhLhmq`tetlu.xSyUzTzU{W}4-!S-!s-#F-#`-#j-%f-(A-*%-+t-.3-/K-/U-1u-3T-3z-6g",ya:"#B%C&{'I*{,a.g=UDEKqO;T1WEWGY.^[g=i!j4lUp=s=v7x;}f-3C-3c-4U-6O-6V-9o-:;",pan:"!&!>!?!H!o'L'x2A76=F>R?$AIH+m/V2T4{6b99>j@`BnEkK*O:OBP^R2RKSzTKTNTO[@e^f>ohparHtQv5wbyF-3_-9@",jie:"#S%@&{(.*d+=.G0e4J5,599D;k=(@/CfD,G#G`J[LzOFP&P:PTQ=SKSQSqT/TITPTlU4U7UPVQXOXSX}Z%ZWZh]/^K^~_5ckdve=j^qGtNtXz,|1}.-!m-!u-$U-%c-&v-+i-.l-/@-2&-4{-5$",feng:"!@%N'40m5v7R:3C$FdHnN.PFSaWI[R^c`?b.c5k'n+n;r[u5uXxs-!$-!4-&%-&J-&L-(w-3(-3,-3F-8)",guan:"!'$b$j$k(W)B,Y/f0E6:9&:]:gBVFqIEWSW{X+X.a?bifMh?kmsUu>w7zOzS{,{2}{-'K-(N-0q-1N-1j-2e-2z-6D-7A",kuang:"!Y!z$Y%1%r%w(G+}/O/z5'538V8vZ-8>",chuan:",40jA7BYB`BhBxEvale[hIkJp%wQ-5+",chan:"&6'W)K)q1N6D7$8*8A8[8_:6;xCODJIHKQQ2RGR_R{S1UeW!W`X3ZMZy]B^+^7_N_bfbi|n2n6o@rTr]uWw3xYz%ze{7{g-#Q-%D-%~-(%-(S-+Z",lin:"$B&['t0:393O5{8!S]SrU;VsD5E4GTO$WNYk`LdDdNgjozp?wr~~-!a-&.-.D-.`-/&-/0-1t-1v-1}-9=",dan:"!K%$%5)r,S0N1h4V8A=A=B=H=~>q@9ATAVH*JDOkPUTLV?VoXGX~ZK_'a|bBc3f{mHn&nKn~~t-$I-'G-'s-)*-)a-,C-3Z-8H-8b-8i",wei:"#o$M%}&0'#'D'M6/6p6r7+8y9f;6>n@gC+D!DOE+FCGBH)I&I(I4INJ]K$KJL7LdMDN0PwQ$QDQHR?T3T6V`WkX$Z)[#[^^*^4_I_^e;fefig@hbj>kg?:?k@N?#@!@D@E@nA3C!CWC}D*DFE'E,E]EpFFF|GKHKHjJXKsNSODOGOXOwPIPMQEQIQWTETsTvU.V(V6ViW+WKWMXpYS[C^H`Va4a{b4bXc(c7cRd=dZegh*hPhRiAiLlIm(m*mmnQowo|pFqZYZZ]U_6_9d9fYj6j~lWm)mep)rQrbrctvwkxc{y|U}6~?~C~`~m-!Z-*'-+R-/j-0j-3i-4/-4@-5,-5f-6j-6s-7)-9G-9W-9X",tuo:"%U%V&z0L2J4v?{@$F_H6MUTbT~Y'Yc^QdHdQnVq+r`x1{{|;|<-&d-(.-(z-({-)1-)J-)K-*:-*e-*p-+$-+3-.b-/%-/[-0b-3O-4,-6_-8}-9$-9?",zhe:"#'%+%E'P2f2|_@eB>CADvFAI0I>J:L]M:M~TgWHWfY/Ya[|[}^6_ngmi6k`kll*l9r!tdwhxRzv}!-!j-%=-&9-&T-'(-'=-*&-0u-1I-2f-3;-3]-5F-5Y-7+-9T-:%",zhi:"!7!t$s%=(J(i(k(s(y)2)I)Z*2*>*A*T*^*c+(+)+J+Y,G/k4Q4b5T5W5s6~7^7|9(98;(<0=E=Q=b=}>L>|?+?QA4^4g=0D{OPOZX]Yb[(]G]W^ng=o;t*xHzI{N~J-&t-/9-/a-1{-22-9]-9`",hu:"(1(~.j0Z1M3!3^545r757G?0AMCtCxD5C_{u-$*-'1-(A-1!-1d-2i",yue:"$S%!(a){0^0|242S2_373H4<8sAlM{O,O.ZaZc_>cid2dCdFfZgApDqBw2whw}zczd{[-,V-6:-6B-8Y-:^-:m",lao:"&)'n,71s3<5>9M~CXE%F$H(JWMaOQP%Yg^jgrh>mAqa-$^-(w-/(-1w",pang:"!o'A1+=/>R?$?=A/B|QmWsd@jf~6~|-0k-2g-:K-:M",guai:"0,;%",sheng:"!D!^...t7*7q859e=[=x?*E(KM]^aMb1q2t2|#|Y|u-4_-9B",hao:"*:.,25-%|-0i",mie:"!`(D1G1dJxL>SNS~W]vt-1e-3M",nie:"1&294(4,=G=|B)B0E!GDMlSX^=e)e?eAezforAs$sJu*vfw9wByVyY{&|c}(-%L-%x-:#",xi:"!>#6$3$d%/&(&g'J's(!)P)n*l+7,,,n313z434i5j6H7?7W81878g979U;V;n<2<5<6>c>d@>A6BABBB}FUG]HeI9IbIwJ+JVKzL2NdPjQoQqRYRqSiT!U)UzW9WFWiWlX7XfXjXlZH[K[m]5]F_@`.`/`W`_a(cCcGcfcwesf)fulGlplwm&m4m_n:oIokp2p7pbqLqMqvsYu+ufv&w6wSxJy,z[{5{b}9}?}P}U~#~2~q-!%-&?-'2-'`-'r-(1-(C-*C-*O-*{-.)-/x-0_-1+-1J-2X-2q-46-6*-8I-9O",xiang:"!;)*+50U5Q6Y8b9u:U;E;J<4APC{HGHvLTaU4UI`]a$a]bxdRjGl{m/q#qOrXu,x$x>y`-$a-$e-%c-%d-)B-+5-3J-3q-4(-7i",mao:"!M#i$i*:/66e:uqcsVx,y%-,B-,O-4|",mai:"?W?XF>K^LgS{aKaxj(l+~g~h-!'-5{-7t-7u",luan:";D?dAzA{L=NDW~o{r7w@-4'-6G-6h-:y",ru:"/M7F8G:1>AEgIYJ6KlLhQJSHU:VGW,inlEm`oSr+x_-%E-&!-1]-3)-3K-3x",xue:"$?,(A=C@E@IGLKStTnXd[p_[coe,hdibig~/-!_-#M-18-2k-6%-6^",sha:"%4&G052u4O8F8~<<WIYIuTJU!Zt`m`pgNlNlypHu7wcyZ~0-!d-.x",qian:"'K.(/~0A0t1'2*2D2R2p6+7[8J8q:G;h>b@vA~CnD(EIElF:I%IjK>KLNNO&O8P}VR[*[u]u_q`!`&gSh;i~kjk~p9pEpOq;q?r6sPtYukvqwPwgwtwvx+{x-#U-$z-*+-*/-*=-+U-,y-,z-0x-37-4M-6z-8G-8M",suo:"#*1Z1^4Z797U:?;cFaFbJ7P{VJcuk)tatju3u9xi-/b",gan:"!3%)*1*t.Y/x1*1}3%4s91>GCmE#T>Y^bJbTcAcTcti}nE-+e-.Q-1T-2w-3*-:i",gui:"!q#o$.$C%x%})0)s,E/?1K1T?NERJ;N%P/R*RpUgEi#lilxuyvlzY{P|M~#-#K-*;-.7-.:-.=-/S-1F-1U-2%-2r-34-:Y-:]",jue:"$Z$l$o%6,%525S8#9NA^D=KiKtNnO6RwRxU!WWWbX%X5X>XBXZXiY4Zj]N^f_}a0c[chd7h7x8D9V:4AQCyFOFPNxV}Zm]c_QazkFkHl.uqv!vF}*}/}G}H}w-#$-#r-+|-,/",gen:"CQEHdc",xie:"';(f*&3c4k5+595I5h6g6v7&8>8T92:B:M<3>l?T?V?ZA&LRLTM0Q7QKS+S@SBStTRV*V^W4XKXOXS[B[y^<_Z_mflfnl,lU-!i-!v-#1-#D-#h-$#-%c-/S-2%-9Z-9q-9t-9~-:b",zhai:"%X)3,92qP*Q,Znh5iGj+jM-.N",kang:"%<+U2v3tg1lJpgugwmz={L-17",da:"!W.u/(/S84;H=Xs]Q]fa`d0dhe3gvh_hfi;i?lvnkoHo]p#q]v*xW-'%-(B-*h-+;-/Q-1>-20-3|-5k-5s-78-:a",hai:"5L?Aj9l/lnnro<-'!-'~-)Z-)b-+>-+p",heng:"?J?mMZT9vc-3o-4$-6e",peng:"%c&'&S'+'Z+,.V1+1@5@8P>~AACgE%FdJRMkRiRjU3eSgbh:s9v{zL-$+-$0-):-*A-,X-,b-,q-4K-6y",mu:"!1#N%]+V7`7n:@?.C5DeF~G%O=e/qKqPx!~3~G-#9",ting:"/s5l%>&?qC)FnI7PWQ8ZJ[El=rUxKz`~K-!~-$g-%e-9F",qin:"$j$k*'*Q.d5c=>>MD1DAGZG^GkMRO8Q}RJS7TVWJWrZQc]pXpkriwix{}c-!]-$~-)f-+E-/c-33-4L",qing:"&/&Z'i046+60:ZDaHzQ#Wr[%]%_Agph+i7m;>t?fA!BuC,DrGWH=I'J{L4MmO^U+U,U6VrW5ZL[d]Rd8d_eKf@m3pxq5qFrVtow0wxw|x(yT-'4-'^-(E-(V-(d-(g-).-)[-*^-+)-+~-,$-/0-1=-1}-42-6k",lian:"'K+D2+2P2V6w7b8k94;s{M-#!",ren:"(o*,*e+#4A4U5)5y8x9$>?@AD)E}FGGDTUU2Y!ZC^I^Vg&gFi&p/p;pRqp-!W-![-#[-#w-&i-'#-(2-.^-3{",shen:"!U![$8$r$u%j)#)9,12e2g3T3U3q3w4l96:p:~>i>m?t@BFkHwH}JGK!LCPGPHUNX)Y1YHZ*[2^)_%_L_S_VfylPqRrj-$W-)W-.m-/z-0@-0|-1)-2N-4A-8b",ze:"#R#}$n(+*p/,0J1I=0BsKAS?Vz[(].a@b7b]c:jO-&t-6.-9s-:,",jin:"!#$j$k%M)8)G.U.m/J4W4`6L70:/B6F&F;GcGkJYM!TWW%WzXsTwGy2-!^-'m-(Y-)$-7D-88-::",pu:"$5*k+j0$8LBTBUFXGGGaH~IsIt[D]]_|bEfInprtupv=xbyqyu|[-/m",reng:"(_DGiu|z",zong:"&Y'h+?3P3]4$5z6E6Q6n6x7(7M7X7e7t9%9nz?!?MB'CwE5E7ENE`F4GHHuJbL;NsXHYOYP[I_caFa[bzb~cZcpd(h3hQiJmbp&pmsGtRtuy=yO-$s-$t-,I-/{-0r-2P-4e-9)-9f-9i-9u-:D",zai:"#^7HGHb+g|i9n^",ta:"(d)i2~VAZr]wdBe7etfFfOfpkdkiq+sBt]tex1{'{5{;{={R{o-!s-#*-#B-/?-0t-2d",xian:"!:!O#5$<&#(F(h)X*3+D/D0V2k3B4%4|5A5c5t6,6]7J7r8Z8c8q90:%;];d;h?&@oAnA~B;BvDSDwFzG,LOM'M*MpOKO_O}PJT+T0V_W:WRX,ZXZo[O]d`>awbKb^cYdgd}f;fhgBhHnfo'oPqvr#r$rFrqs0o334=4P4f5i8o8{;z*]+m.?/Q/i345D5N5`9PA@EjJPO1T,Z,cFj|ndq:qYqjxC-')-/L-2*",dai:"0,1n4x7%9AC?OMQ]TdW=Yd^xa7aLbqdff'gCgLg[i%jIk4p0~z-!0-)E-/>-3I-8N-8e",ling:"%d)D*M++.5/+4p6@9];K;U<.=KBqD[GiJJJmL%M|OiT(TcUjYVdLgZh/n8oWpts0x)zN|q~;~O~]~a~c-!2-$L-%`-)C-/$-05-2C-3L-6Y-7E-7q-9z-9{-:A-:T",chao:"!k,h,r2u6?9b;5J@mA+DTGMH!UlUqZfs&sWy+z'z(z0zh{1{a-#d-.0-02-1X-2H-2T-92-:d",sa:"8g?^HDK{LYY@fnpQuwwS}A-!c-!s-&,-&P-)&",fan:"%0(M/1/40i2A2d6R7i8$;o<[AIBcBfE0KNLPM>N!SOVqXva=bcfXo:-+g",wo:"#l&A,R,_6}>I@OAlB!G*HQLgP[Qbe:-(p-:4-:I-:L",jian:"!%#9#`$<$D$I&N&b','r'}(&(<(X+D.p/9/g0#0/0Q181k262I3_5U6Z788(899v:9$>S@fB4BoCICSCTETE~G-#O-#X-'A-'S-(7-(k-,h-0Y-0`-0h-1(-28-2h-37-40-4R-5@-71-7F-7I-7J-7W",fen:"#|%A*9./2x3=3r4S9';M;q;~ARD4IxKmO?O@TGY,`^`ff|hjnOpUvY}K~5-'W-'}-(c-(r-.w-1M-2Q-35-85-8n-9.-9:",bin:"%A8I::A)AiNc`X`cahailKvjya~l-$p-%G-%k-,'-,1-,E-,_-,p-.!",di:"!u#/%W')'.'{)<)_*U.v/*1=2c4+6c:);X;@WDXD_FMG9G_ICJMJrJwJ|M6Q+QVR-0>-69",fang:"!I!n(l4Y9*>TBjD;O!Y;^ed@lLp@siwn|,-,?-.v-1s-3E-51",pei:">Q?(JBSwUrUsauc2hyiPnBn{s5y7|%|f~M-)#",diao:"$#&a,C,k.B1]5FJML|NhOaXxZ8Zv_M`ro~p_r!r:s*s[vawUxExR}v~D-.c-//-0%-2L-2{-3&-4O-9>",dun:"!^?gD'G!O'O(R/RO`ahShWiNu6zlzqzw{<{D{Q{c~4-#?-#{-%(-'f-)(-)4-.r-0g-0z-2V-36-3G-9<",xin:"!=(F?zBID7FkLZSyVtY3Y-%T-%U-*[-,w-.G-.W-1_",tang:"$f'@)f0{3V3j3o;l=)@zA4J4LJQSR$RAcMc~eef&g+m]o=tiu)uTv'wDx[yWyd{1}:-#I-']-'h-5:-96",huo:"!V$S$^(*)>)S*Y*_*`+|,W10=$=4AuCJG.IhMTSI[g`0a:4<%<@?R?U@.AEANAhG{THVmd#uQ}Y-$|",che:"$;%I&?&@=JFjP@gFA}EKFRFcK:LmRBTDW6Y7Zz[Q[o^;_V`$arb;c`cad>dKeagKimjHmDo@pAt(|C|o~H-5T-7]-9l-9m-:=",xun:"!x$Q*p,^4;8MAjEnF:KLKSL[LaMcRzS%XwY#Y)Yt^R^T_+j%jajlkclsmzoTv`-%A-(}-)U-+%-1?-1H-24-5A",chi:"!]!y$).X.y/A0+02133,5W<#<$>?2?D@SE9E|GeO%OHORR;U/U0UkVMYFZ9Zq[t`8aRcBc^d+dfeGj@jBkKkfkrkyl7q7q^qusx~9-&l-(4-(|-+&-.R-3Y-4!-4r-4w-4y-5]-6Z-8(-8C-9k-9v-:<",xuan:"!m!x#d$['5)k0R5?7J7d7w9K-+4",bai:"+&.;3;3M51L^W3b:b_-#k",gu:"!/$J'B)A*~+P.z010?0u3g75:r:v;Q>K@(AfE)G>GhJ,LSOdOjSeXFYR^h`%a]bxgdgehYi,iXk,nYprpws]wwy.}h-%@-%W-'Y-(Q-+`-/;-0'-2I-3^-5?-6S-7%-9*-9+",ni:"!h#P*G2m73=i>$>}@pABA{DqLpOLP.Q!XXZt`~d`h.jhmCpnx3}L~X-(e-0,-2J-7`-:+",ban:"*E2s5!9;>PBgBkQ*QvVKd[iciipPqEwfzx|$-!h-$F-%Z-.n-35",zhou:"!+#U$x&y062.2@2C3+384:777o8p9:B>o?#B^F@GoI$LfY][a]y^r_4_Manc0gkg{h,i0inCqg~Q-);-)`-)t-*r-+[-0(-3~-6f",qu:"$L'o(}.2.F/@2U3?4o5#<1u?/AxDlG:HhKbM}O[OfOpQdRDRlSkSpT'T:U&WxX!X&X=YeYjZj^tcjcld%d*fqf}g2gWw-#)",ga:"g=onsfwH-.A",dian:"&p'v,j1iIiKRPXdXeVewq!x%|8~@-!E-%3-%4-%z-*g-8Q-:8",tian:"!:#;'1'H,j4w6D>v@:BRBXGvWmX9atnTr#rFsXx%xM{%{n-!>-!G-'$-3f-5J-5S-8:",bi:"#L#M'!(w)L*@*C+;.n.o/E/Y0(0)1/1<2r2y4M4m6>7Q8@8};7<,=a>a>r@lA[BlC|E*F.FJG~H:J*>1>2GdYf^ucScxorpC&CqD^FyHSK}Tjh$la-#&-$)-,Z-/`",zuo:"(|*S+!+n/,/p4*7{?'D{F^H`HaJ?Th[(nWp||7-&t",ti:"!g#e')'?)Z)|*v/8285f6|9Y9y:{DXF!KgLIUzV&V'[qd)d2eJemexf~g8jxk=kLo&rDt)xy-%$-%r-*2-+m-,0-,L-,]-,a-/^-0B-2U-4;-4w-4y-5L-5M-5i-6r",zhan:"$H&b.33*6=9oGQLMN2N`NaOeWyYQZ/]h]l^B`#cghUhgiSl0n|zK~V-%~-&*-&N-&e-'|-*b-*l-.Z-1S-2y-37-60-7=-8i-:h",he:"&c()*(0z2i3@4?8r-:`",she:"'y(`BJBKBLJuNpOgP(S5Y>^dagakc'cDg~{!{^-#h-)u-7l",die:"!g!t&w5M9GpB5C6D~PmQ`R@V,V]YU[7_WcbdOdXdreigojNz+-#1-0S-2R-3d",gou:"/01%2)3g6t:&DhO[U#VBWwX;YNY~_(`ob5bgk_pMqHwl}k-#A-#m",kou:"!P!Z#r$$,P.2/W1OD+K=KFp$-5K",ning:"$P=R>!DpLevm-,~-64",yong:"%p&>A]DcIPP=Yre2e]l@mJmio9rHuVyh}n}~-%*-%s-'x-/y-0w-15-2A-2o-5`",wa:"%K,),?,E,`=N@r@xOyTuW1lc-#W-#^-#t-8w",ka:"?8U@qV",bao:",<.~6h?,DgGYHcK`L4MJN^OJTeUdV4V5Vf`ib*d8q/w%x.zs~>-!6-&x-&|-(9-)/-+j-,M-/7-1~-3/-3A-6Q-9r-:B",huai:"=7N3N8VDVSeE-:f",ming:"!C!w#zEDJ'R,WuZ0m^n_q}xT-3.-6L",hen:"Y|-!y",quan:"$b%u/K0B5<6$7:9mEqI3NAP|SlXLZ#_)dkeIgzi=o5qxv%xO{#-#_-%M-&$-)V-*3-,e-0L-2^-9}",tiao:"!~(t),,J,g/!3/4.5F=S?PCdD^H0J@JMJNPnWdZ8Zv_McqdwjCr!rdtyxR-#%-,G-/o-1&-2;-9y-:C",xing:"!D#Z&$0Y0g6J@YApBFEuF7FhHrP9T#XVX_[_lMluo+pBqZqwrhwZx6|D|S-'V-(/-)p-+D-/5-0D",kan:"!N$=$g%?'^.QG&T%h8ho{4{q-%)-.+-:R-:X",lai:"#8#F/X0%2/2MG'H%MSW7Zqaob,c&c4k.mBsgxd-$q-$w-)y-0*-4B-4f-8%",kua:"50?>B~Z=d9dlq~-+s",gong:"'91*44474=8o;z>[OBXQXba6bZfzg$gtrG-!z-,T-:L-:Q-:W-:u",mi:"!s#p$A(w)')w*C1d2b2}3p407c;>;F?bClH{J#K'K/L}N#N6PaU*WZW[WcX1Z.[j[l_g_rjXo4oXoYo_r,z/-!K-66-7X-7Y-7j-82-9&",an:"!(!.;)?I@XEzGlHWHgJSUxZS[N_d`k`{r1s:x]zy}+~=-!w-!x-$1-(l-/E-4I-4u-6v-8c",lu:"!)#Q$_%|&L&d'])E)J*}+[+o071X1v2!2#2G2H3I6S8^9q:f?9A,AtBmBzCFCMCND.G@JcJeJtKcM[NSYXh[~aVb|d$dseCf#gxh^h|i/i>iTk5nwpis2sascu8uMumvGw&w+yr|A|t~x-%J-%_-)+-)r-*N-,3-.q-.t-00-1i-1r-1y-3w-4E-4P-6!-6>-6U-7;-7C-7M-7b-8l",mou:"!|7n:@Oq[[_Ue6t=-#9-3y-8!",cun:".N2nA>lS",lv:"$()(*r+~0`5Z5~6S7_7j9q:*@wA(A8A;HkM,NKV=VZm'rJw#xDz_{T-*u-+*-5a",zhen:"!X!b!c!}%Y'%)5)T)b+I.A0X264N4w5Y7D7L9,:2=I?%B9H5I5IWJ&LnTpUSWaYKZb^pa2afbWc%g^hZi4iqkOnNoxq$r~s`tOu$u%wJyS|0|_~L-)D-,o-1f-3@-6R-8d",ce:"/%/U/^/t0G1W36F/H3HPJA",chai:")&>HCjEJNzS9T[Xz`jp4wY",nong:")v*j+q8C?cAXL,V~]iioipoL-,{-9a",hou:"#c$t0q3Z@AGFyHCKyL2LtNBNMP{DoU1UbVTdPllnm-+o-/R-:p",jun:"&].=/`0<0CFlGCI1O/PeTXWhaeg?m1p^qfr&t'wj|Q}^}l-$j-'8-(J-)m-+F-/]-2?-43-44-47-7U-7^-7d-:Y-:]",zu:"(x*J+10H4}95GqHbIkYm^kd6eLtdu2u;yk|6-!f",hun:"!F#O#W#]F6I8JyXT[=_2hczo{d-'>-(L-.C-9J",su:"';+1+3+],X1U3.324X7K7U:?>,>/@{DWFwJsM+M]MiXWYE[r^o_lcyf(k$khksnZrR-':-*_-+L-/i-1@-5p-6~",pai:"0'1z1|IOhBjLtV",biao:"'c,!1D@3A,A1AoJoM=T@UoVa[3]#b?seuZw$ycz#-&&-&+-&5-&D-&E-&F-&H-&O-&W-&X-*~-+@-+W-,;-2j-7Q",fei:"%[//1!6M9aO>e>r>z>{@GDFGjH$KhP_PuRuUtZp_GaObsvEyP|g~T-!/-!H-!I-&Y-&[-&]-'H-(j-*!-*,-0+-2F-9;",bei:"&i&r)`0'3f>wA[DfJ9M8PAU'V;ZLZwa1bVgch@iDlbm5mQqWrPv[wd|=-!l-#,-#C-+k-4N-6x",dao:")=)H)x+B+K005F8hbdm?n~o,oJqQsMx#y8-$x",chui:"&U0D@8GPsFtny0|n-$u-:_",kong:"%.&V,/0@;gg,sA-#(-4[",juan:"!{#2#H5J5V7Z9S:|;=?w@7AaG[K3SfUM^&mTrZras6u0vHy5yXzt}^}l-#'-&k-'.-6m-:w",luo:"%T&!&='n/>0M2]5>8f9M:n;@@)@UAwF8H9HYJ5N9OrRHS6UvW~X'Z1dbf`g'kAl:uEw>y/yf}s-$f-('-)_-*P-*k-+=-+X-/K-4#-6)",song:"&P.@===yGOY0Z]^b_?jcu1-$@-%[-'[-)e-,c",leng:"#>&h++L@eD",ben:"/&<(DxRuaUblk/sIy&",cai:"#T677P8aGSK+U>a5b[dxeQob",ying:"!R$v&C&|(P)c+_2K2^6U7/8`9^:>:X:Y:c=?A:ASDzEAF7F9G0G1H@HAHBHZJKLqMwOmQ0QPQiR0S8SgVPWv[i]M]|adbHc@g:j/m2twv8vky?~_-##-$.-$i-%g-%o-%p-1V-3g-4q-5*-53-5o-5~-67-6C-74-7>",ruan:"&u(>6^U?sA7C~G3G}HRITJZQgSUb(hKn}o/sL|T-0#-0Q-4i-4~-6{",ruo:"0P1#DnI}mP-0e-0{-5<",dang:"!,#s%2'((2/[1f2&CDF3GbKuN(S)UCW&]b^A_kd&kEvWxB{9~A-8[",huang:"'w+e0f1q7O>=C1F#H|Q@RtSuYv[V[f_Xd,kWt3txu}yI},-$,-'P-*.-0T-1A-2]-5q-86-87",duan:"${'&.I1`2X6a:#IMK(QfRI]1a*g3kxu]yN|F~x-#J-+}-,*-5a",sou:"#v2BC;IQJ(L_M?Qum[o3t~uAyH-&:-&<-&S-'c-(R-*<",yuan:"!9!f)V.i0F6f7':.;m>CD3DYE?I?I_InLGLdO5PRPzQFQXQrT&TYUiUuV3VF[xa3bYh]iQj=k@kgl8lRnPphs'u(|^-%1-)9-*G-.o-30-3U-4V-5%-54-6K-6]-6}-8s-9!-90-95",rong:"+Q+S5E7@9C;^>FEFEfF5J/QhQwQxSDVEghthyb-)R",jiang:"(43u3|5P8:9L:F<>=.A2EaH^ILK.LAQjRM[w]=^W`6ngo>oF|H-#P-%5-12-2_",bang:"&<'A+%5_749B@uC8IcO!O*OvPt[s_olQlVt^y^-#3-,#",shan:"#:'m)K)q+W.s7g7}:D;p;r?pALATBaD&DtR}S,TCWjY%[b]r^ObFc?cVd^gGlAn#p!qtvBwRz4z5z;{@|P|X-'q-*J-+V-/l-1C-1D-2s-2y",que:"&5&E&g'6'7(1(N:P:RI]O6c}z}{*{l{p}a-4Q-6t",nuo:"+<+u3e3y4&5JiKWL.M4N*N+N7N@SPZ:^(^zhxnoqls?vPvvw:yz~<-!*-$O-$_-%7-%}-1Y-6<-9R",zao:",y,~1R3sC#LlMPOC]`d1f4fNk%ktoCwA",cao:"3m>9C=C[EwJ_R:VbV|n)uc-*D-94",ao:"!T'Y}I-*S-+S-0~-2b-5X-8{",cou:"@ThJiK",chuang:"'_,H,L,q{+{E",piao:"$+).1D7a:;_tmuuCuUye-#!-%;-%y-'i-(Z-,t-,u-1*-2m",zun:"8':^U5]Pk|qqv+-1B-2u-4n-5|",deng:"$7'q.M/H1pCCW|`:f9l>mxv6yx}E",tie:"=VH8OhaPbndXq'qzv>vRx'-&z-'Q-*i",seng:"-,v",zhuang:"3:3nF)F]UBUZ",min:"!B%9&`.}/<1l6O6d:,:wDiSSb'pqs7tEzEzZ{K{S-1$-2n-3P-8q-8r",sai:"2'@cb6c9-%#-0_-2X",tai:"0+27>h>yB8BeD]GeLjdIl[nSpfw^-&/-)E-+7-/6-2$",lan:"17212Q4/8K8i9x;+I2F7I@sAHM9N?R1Z@[`l1~u-)S-*B-*v-0s-97",long:"!p$a%n&=(R(S,u.!.6/;1*162N=P>'?6E'[,A6;9l;1;;-&@-&C-&U-'b-(W-)M-)c-*@-*d-+T-.9-0m-5=-5_-7.-76-7[",shou:"6.9h@yC2uA-(_-:s",ran:"7v>ZDZIFOEOYTST`Tz-,A-,K",gang:"%.&q/{639!:N:W:x>Ep+s)ttwe",gua:"506}:z;%>xU^|cnedr#rFxM-&'-&1-*9-3k-6c",zui:"#G)C+15&8d;$KjRdXHi]nInqo!s$s8",qia:"%{'I?1HyU4dUnU-!{-+z",mei:"!L!_#)#a({)]+X0h3p;I;T?S?r@PE&FfI@QGTZdMg0mOnlrKtUtZyMyQ~N-#^-.>-.F-5(-7(-8V-8h",zhun:"+$,56(>UT8YAZ{_Pj.",du:"#K#b*f.T.^1,>DCsFBR&SZSmUyWqZd^$^D_E`3b%bNc)mMo(sDs|v}yL{!{^-!Y-#V-#s-#u-*E-,,-8]-8k",kai:"II`7gysvtbt{vCxGxvy@z<{({U-&;",hua:"%;&K'B3S8/BWD9D:GgIKK[MzR#XKZ&Ze[4[>]A]o_&`0p(p)rbsdunxN-*]-+<-5m-8=",bie:"FTNFObRmVuf6-19-2l-8|-:[",pao:"%e(@(O,!?|H>M=TeTfV>dDdTgfq/x.-!N-!o-7Q-7S-7|",geng:"56575d6m7,9Q;j;uAbArG?HYM3PfQ4Q[SRi_i`l6v|z$-#0-,k-0F",pou:"0$UO",tuan:"1H4'V8a%u<-5V-6#",zuan:"1B2Y808N8U8e:Kb3fjftq)vxw?w~",keng:"%t&3&RZOr>t1uOxg|&",gao:"#R#g)4)6)e*m+N+O/v0~3i7E:5;O;TA'B,GILrMHZ[_:m+ryu#xny]-#o-'_-,4-,5-5R-5v-93",lang:"&7*n/dC(F{IXJ.JHPOQlZEg%lzl~m.rLu&xzz^{]-)h",weng:"#q:b;}=rJ0L(Qstg-56-7,-9_",tao:")?58617A7N9W9kG|PoUhX{Yn[{^MdwhXjPjenzs+|r-!k-!t-#@-#l-#|-&w-'d-'y-)P-)x-9/",nao:"%z&q'*?a@&@ZAkP6R~YZ]Ju|x@zJ{O-.'",zang:";S?_AmAyB$I,K@M#abambLbUb}rC-)A-++-,.",suan:"(z.b/m0;1BI^nn",nian:"':*5*P1Y3*C/K6evf5f[h=iCiS-/4-0;-1x-2K-4%-8B",shuai:"7>:4RNTH",mang:"!5!6&<&D.ZCvEXEiG4G5M_OvRaSAlDp.rsx:-)g",rou:"*!2w3X>3?l@aHdQC]tekhEt$-#2-#f-*7-0R-4t",cen:"+W.m1A",shuang:"(V7;CPuh}z~b-*M-*y-+^-5c-6A-7B",po:"%g%i/70I3'7i<,IlK,jLn%n[o1oKotq9uswMwz|=-$K-%a-)7-,N-.E",a:"@@s@x}|:",tun:"AYAeC~OlVL`G`IgJ~Z-&h-(0-.j-1q-8J",hang:".k/T5*9HBiDHOAT#UAa9j3lJ-$C-%]-.i",shun:"!x$&$1$9BZKo-$:-%S-,g",ne:"!vY6^]",chuo:"'j0^6?8&9bd!e'e`Q`b`va/hpj9k3l/lsn9tCvSyJy{{:{r}i}{-*|-,|-/n-0A-0K-2>-3?-4+-7<",ken:"&#>8>Y>fUFV$`S`wsh-:?-:E",chuai:"A0ACeb",pa:"/bm|roxk-.6-1K",nin:"?[",kun:"#7&H);*s+*5oGEPpUEUJUgV.`wo%sCy*z]zj{Y-)w-,<-,=-,D-0/-2G-4^-5'-6w",qun:"0<;_;`UVU^e.k&-7U",ri:"TMp/p;pd-)%-+(",lve:"+4rgrlxr",zhui:"&U((.h66729r:'@C@|[!b>c6j_o#s>sQvdy1})}Y-)s-+J-4Z",sao:"$O7m8<:A:HAdR4-&<-*#-*I-+Q-,:-0l-1R-2a",en:"J!",zou:"0&6GG=[)_CcNcOlem@mcn.|h-*H-+1-/w-06-2E-83-:.-:7-:n",nv:"2h=TSvSxp8wW",nuan:"-'M",shuo:"$m&+'$0cIvZaZc_>qttmv~x*",niu:"4H9.FxpTwq-!`",rao:"+i8)9FF,KdVvk}}B-'v-(>",niang:"nuoRoZ",shui:"#I)7*q*z@1U[ZaZcZg_>_KzG",nve:"&ONJ",niao:"@%E>K1T^UGVO-2{-6H",kuan:",s,tAqw(-,&-,2",cuan:",',Q,s,t,z1)1[fLfsrZw;yv",te:"?vRgr{xe",zen:"]V_y",zei:"S;a_bv-0M-1Q-2+",zhua:"2(AU-,Y",shuan:"5<@]z3{?",zhuai:"#1dmi'",nou:";v=,tfv;",shai:"/Z121J1e2[[K",sen:"Ve",run:"$1AOz@zQ{F",ei:"ZH_@",gei:"5C9J",miu:"7n:@]+_w",neng:"?LR'",fiao:"WL",shei:"Zg",zhei:"j:",nun:"-84"},m:{yi:"-:~-:<-:;-:4-:3-:#-:!-9~-9T-92-8u-8R-8N-8I-8+-8(-7O-7M-74-6l-6c-6L-5z-5)-40-2U-2Q-2>-11-0o-/_-..-,o-,B-,3-+q-+[-+<-)X-(o-(5-'w-'k-'=-'#-&6-$'-!?~=}E}1|x{Zz|zzxix6x.x%wKw,v%uPs_rurorEr8r)pppdpXojoioVnxn_,^g]|]{]`]/[!Z=Y5XVVTTgT_T7T1SxSsR~RyR;QwQ0Q!PDP6NbN^N,MZMSLXLIL6L$J9I}IUIIHMG?EaEHE4D!CwCFBkBTBEB9B5@2?Y?K?I>K>H>'=a=R;m:~:48c8!7,5g4q3&2}2Y1j1f1`1M1/1'0t.O.K,_,,*x*f(c'G&.&&%b%Y%G%$$b$6$/#x#T!9",ding:"-:}-8q-)?-%!vipfkGiydzY2Ik6u+B&^&[%_",zheng:"-:}-9O-7L-0#{1{,yjuvsRm*lNlIi;eheZe8e4e3d/`x_v]3[+ZSY8Y2XlVFTYT#Q1C@A!4W3w07.),]%*#C",kao:"-:|n{k][#TbL>>R3p/,",qiao:"-:|-:(-6A-5v-4=-3(-2[-.@-,2-$H-$5-!q-!=y/y$xkx4rSm+m!k]k%j:iSi(hqbvaT_wVuV6V$T%KgGaF^FKFGEpDSBCBBB;8<2b1C1>.}#e",yu:"-:|-:p-9^-9P-9J-9H-80-7t-75-6'-5g-5b-5H-4U-3F-2l-20-1F-+K-)O-)+-(J-%a-$p-$K-$9-!7}]}W}5{7zizNzEvyvwv9v3tytjtetcsqsos@rsq|pyp+p%oQn6m%l8kyklk8jfgvguf%eGdWbtb(aLaKa:`1_1^:]e]d]KZOZ!YmXiTDS`SUS7RpQyNvLAKsJKJJJ;IAH|HmHVDVD:D*D#D!CrC[CDC,B*@K=Q<><<<1;h;_:v9G908=7M7I7A535#2{2R1b1:1(0;/q.(.&,1+G+9+7)n)h)F))(+&*%!$M$D$=#V!A!0",qi:"-:{-:r-9{-9E-9;-99-82-8$-5f-5(-3D-2{-1:-0G-.j-(Y-(A-(.-'v-'C-&%-%m-%I-%F-%E-%:-$D-#N-!Z-!B}$zvyHwbw;w1u~t[tFn;n3n$m~l^kkiBg/dpdTcKbJ4GyGJEW8l1T",xia:"-:y-:s-9u-6I-5e-3w-+T-*+-(v-'m-%n-!!}({Mwtwpm/logkeB_3YST)P~M-1A-/j-/i-*P-*J-(^-&C-&9-$k}[{Xtrrbp,n8lJl%dqbm_c_L]cZ(VLV%T]R_R^QRQQPOK9IJCH@l@^@?=k=Z=?y>]=x<`;t;(9.9(857&6{6d5m3D/;.j+?(>(!&8%{%t%4$X$,#H#>#'!w",bu:"-:q-7F-,M-*w-*t-(d-'K-&D{B{?{6zPtOm#izh'gfd,bi[rY}Y{YfQHM,C>C;C:'=",fou:"-:q-(cvCBj4H",mian:"-:o-42-1d-0w-,S-,H-$`tktQsZqpq#aDNWJ^E=D~@p?|;k;,7G/o",gai:"-:n-9w-6e-+u-+t|'uYm@dy^AW%T`QYNaHZGNGM:M8|'{&6!,",chou:"-:m-:l-8m-5_-4=-2A-(m~{t/r!iKhld$b3aS_%[_Y%W~N?N=LJJkI|E?B_0h/O.s.p&3&!%l#v!m",zhuan:"-:k-7o-3G-3+-2y-.I-)n-%+~EzRyPreq;<`,E%g#(",ju:"-:j-:?-9m-7n-62-5`-5S-4x-4j-2l-19-0%-.Z-.:-,.-+n-)H-'d-$|{/ztx_uct_tNt$o{nvnqnOnMmqmil`jYj9j7g+e%d:-(h-(c-%5-!.-!,~|~X}2|L{2xhvCs7*6e4n2x.Q.G,n)Q'(%k%h%@$p#R!U",shi:"-:h-:g-9q-9l-9N-9M-8t-8_-7R-6k-6]-1X-0m-,^-,:-+_-+6-++-*>-);-()-'{-',-%.-#t-#7-!W-!>{>z|y{xn=}:{:s:W:5:'9v7C7?6n4=4%28.3.+.#,0)$&3$}",qiu:"-:f-:^-8m-6#-)u-)9-&+~*|FyTsQl4j2j1cFc&]rWkO%KIHeF8BpAn@s@b?J=o;^:l:k:j2D/T.k+D*'([!P!(",bing:"-:e-:W-8h-8b-6u-5B-4T-3Y-1;-0a-0[{mp1ngnZhbhah&cm[vY,W5R0QpN/MQLQLLJnJbGXE:@~4E)r%,",ye:"-:d-9z-9.-9&-4e-2_-0U-)7-(u-'%-$W-#,-!]{:zIxqxdwgoVm$jxjw[hZzZ!YyY;X:X6UhUcUUUSURQUPxP@P?P,OmOkMYMXIQHsHpCXBh>i-,u-,G-,/-'I|/{)y&u^tXr*mSm>lKl?eNc3_H^LZhXL^>J=,7[6?1e=_=G<8:?7f7d6/05/f*6*2)c%x!'",diu:"-:_-:[",liang:"-:]-:Y-9)-5x-5[-5>-5%-1G-0B-&J-%y-%7-$Ly2bWY7Q*KJIwG%~n}bvRuAq=pZo8o6m1lyh[hZh(d]d$c|cqbY`,^xXkTaS4OVM;LAKGK=H{GFD}DJ@8@(?V?>=g;C:b976B/j/i/O.b.D,?,>+Z+Q&g&d%O%!",yan:"-:X-9d-5]-4]-4O-3;-1u-1Z-1Y-.a-.[-+:-*O-*F-*/-*$-){-)z-'%-&=-&2-%'-$N-$G-!L~~~a~Q~5{GzAydy7xLx@wMw>vPv>uFu@titfrgr?r9qwqfqWpKmhlEl'kuktk0jUjKjJjIjGgM-9<-9:-7m-5K-0W-.$-*H-*G-*A-*?-(s-(H-&n-&'-%;}L}@}9{j{5zbxTuBu3t%q2n,lVlUhKh?[`[ZZZY:XLN'KlIsIFA0A,}>k:c9s84684l0$/w&C&/&,!*",zhong:"-:P-8A-83-7x-4Z-0j-/C-$Tz8ysx$vMvHs^o)i)eqe0dddYS`MKC2@=?G4w2k.T$F!>",jie:"-:N-8i-8<-5$-4~-4W-4!-3j-2]-/@-/?-/)-,r-,a-*j-*i-(e-&c-%d-%H-$m-$8-#q~zzKz7vevOuit>sasVsCs(qSpIoJnpnln*m|lCkvkbjrjqjgjbhihIeEbr^S^;]_[,YZY+X{XwX?W_UmUOUJS9RINXNJL0KxKoI~I1HqHgHfH8EOB,>j>;:z9b882?/'.6+0)H)8&K&J%g%]%M%##D!~",feng:"-:M-8:-5L-4N-2Y-0]-0&-0!-/{-/y-%p{Rz9z5w}w9v7odoYl}l|l5W4MkKPI.E[?m?h=S;Y;#:R8e5Z4i3V3*2g1h/1,O)u%C$B",guan:"-:L-58-1=-0l-*vphb@b?af`LXqW*SRJ+G*D(B2>wRWQkP#L)?N>=0X.X.U",chuan:"-:K-7o-3G-2t-.K-$]}Tz3jFjDPMIRIDCbA?@i,H+<)7",chan:"-:J-91-2y-2R-1~-1/-/:-.k-.J-.*-*~-%$-$F-!n~P~@xBszr>q3l>kJkCkBjXh{hpgWdu^r^lXsX+W;VqVhU#S9RYJsJXDEB#=v:^967o7n71655d5B2V1I,#&v&u",lin:"-:I-9U-2g-0e-00-0/-)v-(l-%PxDlbk,gIgHc=bob)_=_6[MVGS?Q+PGN!FIEmEDQ>L#JuJfJ3J,IoGcDh@j=|=h.h)e)N",zhu:"-:G-:B-9]-7d-7G-7?-6Z-.&-,t-,n-#T-!z~4|=xpx3qVq!ploNnWnIl*i>[[[WT&StS;OqO1O0O.N>M#LzLFGWFmF,DhDbD^D0BH?&>Q;b7t7Z6s5x5>4V4A3y2^2@1+0x0?,K*K%B$J",ba:"-:F-8l-7`-1E-)^-)@-(b-&M-&I|_{[x>wCv0mumIj,fq]o]I]6]#[GZ)O+M'D,5?4R0+.m+@%N#/#!",dan:"-:D-8~-7{-7H-2r-2J-/V-,,-+G-*~-*{-'f-&2-%C-%B-$v-$F-!m-!b~[vTsjiofTfOfEb$aga>_q_P]4[VXuV@V?UjRiM/BeBSA*@)>rc>C=n=$;S;N;0:N:08?837i6R6G5|4]4>4$2]2O2F1]0u02/$.r,[,P,I*~)h);'f&H%!$N#X#U",jing:"-:A-9C-9+-9'-5r-5%-3A-2O-1N-0K-0C-/9-.~-,y-,k-,[|i|g|cyIvQt:t8t+pojAh|fdfZeeeWb/___NUoT+S&S%Q:Q3PIP0KZJpEvBsBn@I@H>m>%=><87]6#,r,'(^(B(<%($u",li:"-:@-6_-5u-5k-5Z-3s-2&-1z-08-/Q-/=-.o-.G-.'-.%-,l-,&-*L-*I-*:-*.-*!-)|-)Z-)X-(z-(2-&U-&0-%g-$C~g~`~A~>|`yrxEu+tat#rjqYq,nAmkm5m.lzjag@b]bXbRbB`l^&]q]gWYU@U3TsTlSpP_P>P%O&NmN^MqMSLnLcLYLUK!JoJdJMG1ECDuDjD_D8D.C/C+?k?[?Z=Y=U=/:/8z7@6C6$5H0a0U/>/=/#.z,~,u*V*$)z(t(_'x'u'l'W%R%F$l#P#A!Y",pie:"-:>rVV]V[PHAD8>",fu:"-:=-9c-8[-8#-7z-73-5y-5m-5j-5U-46-3v-0d-/|-/J-.R-+h-(=-(6-'[-'S-&E-!s|<|!{]wvwWvVvRuru'tDt,sbr5qJq/pmp3oWmgmFi~ifi7hzh;fwfkeje?c{ct^w]l]J]&]%[Y[QZ+YfV7S}SLS)ORN+M]MGM)M'L1KWJ2IYIPHKA:>~>Y=W-8%-6;-5|-4k-2k-2:-1q-.T-,|-,C-+y-+/-*V-(U-(T-(J-(?-(+-&)-%K-#v}4|^zLykxvvxv4u%tjthsurTownkn9n+lmkzk_j6hFgQfudbd`d@c'b[bZbKat_]^[]e]d]]Z4WGTTS7RoROQENvNtNoM&K#FLCVC=B3@[@Z@S?{>T>*=V;^:,874(3C322*1w/V/A+3*4*3(|(P')$h",tuo:"-:6-8X-77-6h-6.-'a-'G-%[-%$|Sz;v8sNrRmck'gzet]i]`[H[F[EZMYuV1NgN^MTM8ITI+GbFBF0AvA_@d?`?_?^-)C-(W-'v-'8|||{|T|:z~z{yFy@x$v%uNtsrGp&m7l0j+iridiahyh5h3ggf5eYeKe4e3dmdUcU`6`*_$^{^E]Y]F]E[u[HZtZpZ]Y{XvWpWVW2V{VvVtUKUJU>TjSMRwRgQ`Q/NOMyMcM2LqLhL6K~K7JjIuI]I*H+GHF_D|DnCAC6BiAJ@t@O@N?v?T?3>V>34`1_/9,x,^(R'w'[&3%c%;%7${$z$k$E",zha:"-:0-48-.N-.=-*C-(w-'X-'?-&K-$j-$O-$Aw/pNd6]s[m[XZdX4WIW#O2M7M1M0LvLlI?H4Fv;X:67u5#4@2N/p&d%.!M!H",hu:"-:/-:'-9j-9F-5E-0Z-+U-+L-'h-'W-%n-%Z-$_-$4-$1-#>-#2~k}v|;x1x0x,uGt4sEr]r[oxm[iphxfxfgdFd*d)cGa{^V^6^4^3^/^.^,^']y]9[xWWW$SXRFR-'$-&N-%z-#p-!}uSr`ljk/cY_f_eYtVZO:L=G5F!=O='8%7a3{/^./*<$f#c",yin:"-:+-7}-6^-0t-0;-*c-(j-(V-%o-$d-!T-!+~l~+~$}`}$|&{w{YzXz:w_u=t0t&p:n}lnlLlfya@`i`B_u_t_0SMO[L:KKEkE@E1DKCwC_BYBGA5>l>d>U<5;~:}:i9}9V6^6]4).],|,j*I(U$7#k#_#:",ping:"-:*-5i-0]-/z-/s-'u|Qz1u/ngnZmTi[iJi4heh&`0_zMfEU?6>6=A[KMbLw",sheng:"-:%-:$-4H-.X-.Q-,?-+0-(9}=x{x7u*k}_VS[RGQJQIOeMuIyG~E{BzBF?%;k;@:q7G2u/M.N*h)i&y&s&`!'",hao:"-:!-65-3k-2)-)6-'j-&_-#k-!t-!Y-!#~xxRvacOblRDR'QBPePaPWP7J!A~Ao=]-'6-&/-%]-$X-$:-!p-![~T~8y?xWwnw'tgs;rCr@nsncn`nRnHkgk9jpj`jZiqiOeceOe9djd_dEcscgcZcKc/bqbeb8ay`r`p_s_r^V^6^4^3]_]O]HW%R:QKQ9Q6PEOzNON)MdLZKSIdIGG{GUFkFRE|EjCzCuCmCMCJA4@e>X>S=f<[;i:+9h9)8p8/8,7N3e3R3K343&2Y2+2)2%1q1P1O1N0}0P/E/?/*.{.t.#+p*r)|(#'h$1!k",xiang:"-9x-9,-9(-6}-3*-1}-,4-,$-*0-(x-&r-%L~Ww~uXk5j)h7gqe'abQXP5LWH^F1DH;!8:*E'g'T",shu:"-9s-61-5g-55-54-1|-1F-)Y-'3yNyGu[tGq4oNoCnWnIg}gxdWchcgcIbt^X].Z.Z#Y>WBU9T'S|PvPtP*OhO1O0O.N[NBMtL`JtFuFYEpBuBKAaA`?c&=L/3,E,B*n*d&f%0$8",mao:"-9k-1,-1(-0|-0z-*dzLwksLmOkzi?a=_?^(S/QvPrN4M@I'B!AcAW?9;F/Y/#,J)E#$",mai:"-9i-7I-,{-,*-*}-#${Kx5",luan:"-9h-9Y-9V-*^}C}Bvmu0qXq:q$m)jOZ[TvOuL2D69K5J59#4#3",ru:"-9f-6K-2C-1K-(N-#{-!$vkv[s7qyq)jciX]kZgUTP+NzL(E0@W>7;Q9u6b+^",xue:"-9e-.x-(Q-!9|Bxbq>q+mmmMjzf=ckT/SlKvFc?!>u9j7>5y1&.B%L%<",sha:"-9b-4c-3?-2H-/,-.t-*+-%t-%^-%H-%4-$R-$0iCgkZEZDW$<%81806O5S4B2Z/J/B/2+%!l",suo:"-9_-9=-3]-&8-%x-$&-#j-#gu&s(as^$ZEZDW:PjKaJz:E9y+|)w)v)!(]",gan:"-9Z-8S-7J-5&-0=-/u-'c|Ro'o%o#o!hfh_dqa5U~T]T6R_NuMDKLH6FNEd@??;<:8f7_7/55+;*w'#%?!T",gui:"-9X-6q-3{-/(-/&-.7-.5-+Q-+J-+I-+F-*%}3{zv2u;s?rhrIp|k$jpj`iLhLh,gmf;cMVxVVTiThRCQ2O%M9L.KeIeI`GTGAG_k_Z^b]7Z`Y~Y9V^V;TnSgKTF7F6D[CvAG@:?!5P2|1d1>0S0G000/+z+M+)+'*](n(G%L$3",liao:"-9R-2|-!rrLovomo[>90%*F",chu:"-9K-5N-3d-3R-2K-2!-0$-/m-/Y-/I-,t-*)-!o{$x!s>n5hjgXcj`g_SWxW$VoTNS=NEIjI&HoHQF|E}EsESE#DsDdCzCG?@9r9q6x4N/+*+(,&;",kui:"-9I-3{-/4-+I-+F-$U-$;-!xwow4s/rBo*mQjVjHb]a.a,_y^BXgQdPyI2I0E&BV:S7x2l.q!/",yun:"-9G-7r-3q-1p-+}-+x-(0-&^-$^}xwEvsvEqOb}aca4a)`c]2[yRNQTP}MwHWF@BmBaA&A%@0=3=!:!7W2h2:202(2$1b.Y+(&P",sui:"-9A-5#-&F-#U{3wytvr1nwn4kpRqEWC1C0Ab=H9[7+6z5}2C1g0~(/'p",gen:"-9@-9?-&pX=X'L7",xie:"-9=-9!-7[-4J-4A-4/-39-1{-0s-0c-,w-,+-+'-+!-*k-*Z-)7-$(-!C~e{ry_wrw8w1u)sOq]opnenVnNm$jrgJeFcT`z`p_BZ~ZWZ8X9WnWMV*UiUFT}SWRePXMZLIK@JwI,HOH?H/FlC]?K>p>A;P9h7B695{5!4Q4P3b3E2,0w0s0O,C+k+e)8",zhai:"-9;-6B-4f-4*-3E-*K-*C-&c~zw{p{os[u[2YxW/UwU>SiSfH#EL#t",tou:"-98-4'-4&{$wNv'sqs@aK]*T0SQ",wang:"-97-8v-87-1JvYo7o1o0o/eoeiefe[dldJa}]>RTQ(OEODO=N1JD@J6;+E",kang:"-96-8)-+X}|rmkKg|dG`8]f](G=8_4d.a",da:"-95-.N-+f-'f-'R-&m-#~-!J{hxrw[v*d'ag_q]nWZVJ@f?}:<4Y0p&@&4$#",jiao:"-94-6n-6D-2q-2j-2I-.B-.6-,6-)B-(<-$H-#M-#K-#?-#(-!^-!=~IuUu1r=r6qcm+m(k1k%k!e.e+cJbl_~_i_KZjZTZ5X&W9VlVCV(ToTJT?T,SwSuSgSSQbPgP2LOIpG!>!:l:k9Y8w8<7b5[5C443,2b1>1*.9+l*X(5#e!v!^!V",hai:"-93-'V-'0-$#-#h~ey]vOq;pL[!A3=N3[,C",heng:"-90-&B-%QuJcXcLbaVKL/FiF&<|42*B",peng:"-90-5,-3J-.F-+o-!~zgyqyYfUe|cyc+`%[tZ?Z6YkXpWvW4OTKCJLIlIWGGFn?6t}sxk~hVhJh)gBg?g;dzZT8T.O)O(NfN^MrMTMSM&KuIRAh?`?^&D$i",men:"-8{-8G-53d8bcbCaz_9_&]VYgS^PZIh@>3=1,+((W",ren:"-8z-8y-8s-8U-8F-88-/d-/cx;vSu`n:n2d|dwdv]XO,NiLPLMK6J7/]",shen:"-8t-7V-6i-6/-5d-1Q-)l-)k-)j-)i-(V-'i-&}z^u|u>ttsys.qmp_pHorn7lui(fp`t`b]b]4WPTFR4P9P3M:J7J(IHHRA9@+=D<0n:(9U7C5[!e",jin:"-8o-8j-8d-7}-6<-35-2^-2=-01-,y-,k-,[-*X-*'-%o-!F~y{Fzkz6yE=q=M:I9$6~6g3h2M0i*Y)y)K(z(d(@(*",pu:"-8n-3$-+k-!S}^}O}<{BzPy(]p[rY{V0UvTeTdQ;PiPPP&O*M,FZE_AS=`:17k6T614r3a+v(C$m",reng:"-8g]m",zong:"-8f-5:-4y-43-3KzFpikxkrkNeJcdaraVY^XXX(W&Q|O>MxJQIKG28L8D8#3+1n1c0{,b,R%E#w",fo:"-8e-8;-73|IJl",lun:"-8c-7i-6S-4u}l}Y{.t*lSlRb9[{YMJa?j<6:3",cang:"-8a-89-7h-5;-3e-07-+OkeDW<];o:Y9g9_8a7;/G+J(!&Y&7",zai:"-8`-3V-2G-1!-&v}8pOl.]j]>L3>f;>:.4|4{3~&Y&7",ta:"-8^-6E-3^-#~-!&~Kz$yyy6vep}lc[HZXW`V&HCG}EqA[?}u.t`tZs~r~rOrNr9q`pUo;o:nBmylxlhjthhgCfhf+dI_a_X_R_'ZPYQXsWnWiVhVXVSU6U'QlQNPKNFMhGiFFEtDRC~ArA@>S=E=7:]:C7Q6*574*0l.=,s,G+f+c+U+O*|*s*T*,'3$c#b#Z",cha:"-8X-6Q-4D-/,-.t-)e-$A-$$~s{yvbu?o|m}kqj3]a]OZ7Z.XZX5WJW1NsM0LvK?I?GjEB@k,<%s",hong:"-8W-)w-).-(X-(K-(;-&{-%}-$)~i{kvXu6pqpjn=j[fvfBa*``XeVNQ[@E?y?<>@=b=S;J;B:R8J7U5(3|31+>+4'T",tong:"-8V-7/-6R-4Z-2h-,/-(}-&|-#Z}o|/mNm>m3h:f(c%`P`)Z1Q]PwwuqtKqdmdmVlQjhekYffd9]bDaxT:RBQtPcIiATX7s5L",fan:"-8E-0)-0(-0'-,1-+R-)a-!hy%v_tDr;r:iwhwdi_h]l[ARvRtNpMLKXJrJAG,FD@w@g?4955t5_3n2E15.l.[(A&O&/&,!.",miao:"-8D-,m-)v-$?vDscrPh>gtgSX^NP<#;A+K",yang:"-8C-7<-6{-3[-15-,f-,@-*g-'Z|J{xwTukswmrl6l3e`d4cEaA`m^}]T[lXRUz>`8N6A4y4D4.2B+6*O)4%Q$|$@#F",ang:"-8C-*gn.RLQoN0!5",wo:"-8?-4s-4L-*l-(/-'&-%q-$atCtBsfi8^TZYYbYSXKV#SRN8I>@1=#YqXmXjX7WmV!UGU'R{PpO_MoM(LEK3JgIfIJICI)HEG]FhFCEKE2DLC&BMBLA]>a>$OYOSN.K&J*J)F)A>@66}5i4v391=16+{+.",bin:"-86-3S-2EpAe}W?UNShJnImGXE:B^BO@r9I6q6Q6M6,+.(j((",di:"-85-7@-5a-4F-3:-*D-'}-&t-&$-%R-%&-#O-!(}0|h|d|@{Q{L{8zMyFy;x|w?tqsmrimUkIjoi`hBg:fofjeld#`7]g[g[=YFX]XGW2TLT!R[NfN(MrM3KAK:JCHiG7AI=g<};T9f9=3F/K.V+=*5'1%c##",fang:"-84-4}-+^|r{Qzcv5er^%TZS:S(RER6N/@<@'8*4c1@/!+m",wen:"-8,-/X-(M-(C-(&-%Jy`vNf)dfde]:X.WRSmQsKNHWH)C$B`@>;z;R:*4s+1*8(}(&$;$.",xin:"-8*-7f-5d-5G-!3-!0~%vSCR9N@N%D$C^4a3$",ai:"-8&-2W-09-)h-'!-&q-&5-%Y-$'-#]-#E-!;{SzIyfxUtgtUrxr'kaa9_7_,ZNYaT&T$QqP^P.CxClB.:%9t6U3.03(k(;#]!s!j!]",xiu:"-7~-5c-5V-''-$/~|p@mfmPh2N~G09~9F8I4+*P*#(N",xu:"-7~-7Y-6Y-6!-49-0x-,F-,E-*Y-)T-)+-'p-$e-$Q-#7-!o-!W}7{Wy,x+v&uxspsArFhHeXckcKc:b(`g^YY4XMTKT@RbRZR!QcP{O^OOLGI9GfC|CtCiCOCKBw@5@4>?=t<>;+;):P9r998W8B433W2H0m+t*N*?&;%T",tang:"-7y-5+-4M-3l-3U-1v-.2-&.-${-#.|XzpyukdilaA^cW^V~OsJFH%F{F<@P/:f8U6y6Y6+525127+_#@",hui:"-7u-7#-2u-1{-+H-+.-'/-&j-$[-#=-!f-!U-!D~p~,~&}u}Fz]xztEsgr7q]onn?n>i*gmg7g5f6f4f3e,e*cDcCcVEQSQCP|PQO]KeIOI3GRF4EiEZEQDqBVB>B=B7@n?D>h>g=y;+:S9X897x796y6:5,5)3t3q3k2h0y0q+h*9)G(=(2$~$)",kuai:"-7u-6@-2M-/p-&f-!8}:|ez&y'jEgMdXUkRrO]Cq=y79.*+g(2",cui:"-7s-5?-3N-04-%I-%>y8lYlWkhdSbE`TV|IxH*GHAg<48P6a331g)p(b%I$L!d",che:"-7n-5`-4I-,%-'y-&*|?vln|nGene/]QY.XcVsV>V<7`3r3b3E0C",chen:"-7h-4_-3e-2'-#|~ZyWyAw]pGoBdRa>[aY]THS~QAP$L[K_K'J(HUG3D]@+@*2n05)l%P$?$$",xun:"-7g-6O-4.-,Q-,A-,)-,(-+5-'3-!k-!P~u|y{=yixYxAw#uHqKq9o`oOmEj@j&j#g=ebe>c]`uXUTfRcP(NqL_KbF`BvB@Au@Y>5=r=l8+7y6V583O2h1{1D130j0Y0Q.5+b*H(L&T",chi:"-7c-7M-6b-6P-5E-3@-,W-,K-+_-*]-)<-)3-))-(:-&W-$z-$I-#l-!g-!=|@|)yLw/vBs6n|fsf$eweve6cBc9`X`7_|_2]`[f[!ZvZ/W+TxTCSNNcMPM3G1ChC6C4BX@T?Y;:8g4~4;3U1K.O'A$Y$U$E$2#G",xuan:"-7b-2N-/.-)o-)'-'(-$Y-$Mz)wsv&sWrqr.p]f[cobMaQaI_I^nX_SyS'RAR,QeQ$Q#PNK@HxHwEf?#;I8d4M3x2e+L*s*)*&)B(Z'~%/#E#<",nu:"-7a-3r-,svjq?ilfed1Wo",bai:"-7`-6z-(1-&:hJ[?[>ZwYeX}WAUfUCTAMFLN,n'D#*#)",gu:"-7_-3T-2e-0F-)I-'s-'N-&<-&;-%G-#y-#@}gzfx#uhrUq@o&lXl=j5j4d*`~]_]9TSNaM.K-27-+8-(%|Nzsznv/v)t'Y'R$*#[",zhou:"-7W-6M-2X-0{-'|-'z-'Q-'5-%X-$i-!G~{v.t/pgjCiceIY%QnQLQ8)<3;[5U3G2o0D(K(8#9",ci:"-7T-7B-6m-47-17-/+-/'-'t-'r-%@|*q}j3h<`hN|MILHD&C??56Z*p*k'E'6%=!{",beng:"-7S-#w-#+{R{#zgyXw!lBkYX0>v)d)[',&k&j$a",ga:"-7Q-'M-#A-#/-!4wIwDoEo>o.RaOM+C",dian:"-7K-7:-3m-18-**~M|P{lyBxfw6v~t6t!kXj]jNjMh@ao^!YOTrTWT9I_GqG_FPF5B?-(7-%`ylybwYvit=nodgc2b:Y#WPQ?LSB{?U-72-66-4E-'L-&,-#!|lmtmsj;h0d6YTV4R%M7M&)e",ti:"-7;-5N-5'-4R-/!-.n-*;-%H-$y-$3~w~rw?smsPnmnYnVl2foeCe6bnbjb#b!aU^)ZHY*X]XGU>OaONL$JxJCCQB]=0;T8O*5)A'r",zhan:"-7:-4>-2y-*s-!IrQnamRl>l)kCkBk.j|d+b0^M^?^5W|SJSGS0RsMjLiL-&t-%H-$j{szSmDl/kIi3c}cPa`^IZbX:QwP!M2HsGUBcAK?I0*/}/n'_&#%q%j%i",gou:"-71-3p-0y-+z-)H-'p-%W|C{uwdwcuTs0mnfM[CX%VcN6M^Gm?q:925.C*o%2",kou:"-71-0f-.C-,g-)J-)DpCp8fId3]^[|VpTV9@",ning:"-70-6>-4a-29-0.-'H-!)r%q!p2p)p'p!ot[4UMM5F/E5?17J6k.<+a&i",yong:"-7*-5t-3M-,U-,T-'T-$t-$+-!:{Oz!yCxcrlkUg{gAe{ceb{bzapaC`w`n`:[6XTU}M4LaGQ@}>x=9:p947:5T/{/i&p&l%)#S#8",wa:"-7)-/n-,e-(/-'P-'&-&x-%h-%A-#y-#nu5tbt3sGnCije[ZaWUTq>.:;8h'V'D'>&A",ka:"-7&-*r-'O-'M-'4-$u{g",bao:"-7%-5h-21-/>-.e-.]-,!-+{-+s~ozPzOz@sBqBpcpMp$ohoee&d:[w[kPPP1P&M]614J2<0_.u.h*G",huai:"-7#-',|mx^xIe_dC_:^oGhDX<25z",ming:"-6x-0g-06-(|-'guEs&`aXxR@PhOFH<>0:7,8",hen:"-6s-&p-!3eac6[0.:$y",quan:"-6p-1H-/.-.#-,5-,#-%%}X}Q{4w5u:t;q[m?jRf`c0b_b%['Y`WKNxJ:I[H_GLFjD>?F>F:a5841/I/H/7.o.n.m.O)2&I%'",tiao:"-6o-%Xr#pWmjmWh4cRZfSQRdQjOLO'NYK.Fo",xing:"-6j-5.-1<-/U-&g|0{auft{t5qljAh`f*cxb>aZUYR/P4Nl>ZG<9;H9<8o6o6l5n5G1z0B,a+T'h",an:"-6W-5J-4<-2D-*P-*J-')-%e-$x{b{&z_sYpwn@n8mXm:hXg~ZnXNQ.PnL'L&A1>M.g*w$V",lu:"-6V-33-1C-.H-,N-,<-*q-*o-!N~q~_};|G|5yVyUxMtVmChGgZgFf9f8^7XzW)V)UzUAU/O{MpLeJ#G&FyEuDvDaARAM>sb._,A$C",jiong:"-69-3'-1.-1$-0}}z|K{;]~]}?M=J7e4t4I3c2T2S1W1.",tui:"-6.-6(-3&y'tmo$ftfodrY(F>24",nan:"-6+-*|-$r~'~#v=tzstrb^e[sXfPqN*M6H}:d29&a&?",xiao:"-6*-5v-5R-3a-.x-,d-'j-'1-&l-&P-$}-$1-#D-#?-#&-!|-!v~c~J~CuUtHqGpPpJoKlGh/fFcJ_iX;V:TPT/SoSnQVQ'P;MiMaLOK+DOCYCLBAB4>B===8M=5;9*7)`$V$O!r",guang:"-5~-2}-1h-'@{~uIhXhTgOZsVKL+>28)5/4b4_4^3s.d+Y*U",ku:"-5}-/3-&Q-$6~R}PzrhDh+gN]dZiZ5OPMgL!I%3N.>$9",jun:"-5{-2T-0q-(n-(G|u{NuHollq_;Z3U5TzQPKMJH@F=l6V3G1B*1&'!Q!K!J",zu:"-5w-5?-+1-+$-&S-%rlYlAd(S#M1Ix0'*e",hun:"-5s-4o}_t9t'o9dMaz`oYDR?Q~JYJRBf=u>=4:&9z828&+F*L(F&r",lia:"-5[-5>",pai:"-5Q-&sg9eP[NY?JU?p>+;j;8/t.w,q",biao:"-5O-36-2/yJtIryi%f!VfNhLjFzEG<.9C66511o0c,k#|",fei:"-5M-.m-+M-*4-(i-%8w%vZt@t?nXh8gpgPbH]xSdQxQ%P:OPNLLxJVH5FOF)Di?Wq>O>N;y8^6F3{/(,T+P*M#y#5!Y",song:"-4q-3I-0D-)'u8pulDk^kOgydYdAb`a3a$`D_MZ#XXW0NK%J`HyEF-#*-!K~Oz%x#s{sXs9s%quqqq_q%kcj[jWhCgDexdha/_AVwV_U0U&R]R.Q:PwO?MHKpK]J{HvHdFbDMDI=_;E:U:K9d9O8K8F6j6i6N6=6&5~5o5j5M5A2w2r2_1x1)0b*:)*(y(S'i'5'%#j#;!B!;",ruan:"-4[zJxQsiVWOUE0):'}",chun:"-4Y-&7sda^RPR(PlOONDIBGrFQE(=T<,:[9N8u/6)C",ruo:"-4S-)[sskPf]Z:YUI8;y3'0^",dang:"-4M-2P-1V-/k-!1}*{fx]swpkl6kdf:aAZUUsTpKiEYD5@|8:7E5D*;(J(6'?%}",huang:"-4@-1L-/w-$PzDz.xtw&s[pEl9jBi0e@clcQa_a#`dXTQgQfPBOEHbH7D{@9:x9i8)4:2c2.1J0X+w)((E#i!}!g!Z",duan:"-4+-.Uz+s`SFS[$XOVUU8U*TwR1Q&PYKrEy6E5K't'k'c",za:"-4$-+Z-'b-'X-'2-$c-!c~B~:~5i}]s[$NyKr?r?a",lou:"-4#-38-.}-$7-#ByMu4tRo{n[kjkEg_`5X)W'HaG#:O9&8~1i'2$5#o#n",sou:"-3z-0J-)Q-)N-#z-#R-#QgsghZ#YvWlW>W0V:U`UBJ/DgCn:#,5#s",yuan:"-3u-1n-1)-0h-.z-*3-*1-)y-(0-&^-$Y-!<}{}t}Z}R}N}M}D{t{_yawlv6v(sSs:s)qhpepH0ErDk@/P>#;L9A8M.|,&&B%y%n%m",bang:"-3n{^ypiNi5h~hme|Z?YrWvS2KEJTJSH@=j/m++",shan:"-3h-3)-2R-/F-/<-.a-.E-*~-$q-$F-#H}'{Gy+y*ulubr2nDj|i(f+]zZ;Y3XuXsWaVhV?UySvQ8NrL|LlIVFSEhCI@`7|7p7O5F4B2Z211~.4*b%U%1",que:"-3f-*_-*W{Pyty$lgbNa+`KX!T8T.JBH$@j4e0|)O#q!N",nuo:"-3Q-1w-$ftxa6_#_!ZLXnWoWbWLK0HJF2Am",can:"-3P-2F-)l-)k-)j-)i-$D-#H~:r(q3amah`W`V`U_[XsVqVhO_BtBg;/784z1!0L(9",lei:"-3O-24-1t-,J-)q-#1|(z0xOx?rrU|U;G'E]DyDxD/?$>I=+JO7F5&2>1#(](7#&#%",cao:"-3L-#GnGk@`v`k`^_DVAUqOgOfG:8x",ao:"-3H-/n-*&-#X-#W|H|4xnxkv}vyvwsDs2rZmxmakAjnga`O_@]I]![DVuUeTBM*K=?>9;7M741m1^0Z,!+~(Y",cou:"-3D-0:Hl;1",chuang:"-3B-/b-/K-/5-.s-.i-.L-$T-!dhvhMd=`|W7O|;z;+:t8(+1*c)o)j)=$R!D",sai:"-2V-#b-#)-!/yod%a2XaAxAb",tai:"-2B-0_-)=}e|Mw[wXwOvzqvqCdodQdB`e[pU]SpR]MeE>@f@D@C>{:=4G4F1$*f",lan:"-2?-1@-)}-%P-!'~3|hx`xXt(qgqaqUmwkwhgb)_8_'^p[5X/UXU(TmSaS_PpLbHXDDD2D1=^9L8i7K6W5`5W5=5<46121%0n0d0I0@0>($'j",meng:"-2;-0k-,Lwaw`qEo2hnh*_._+^qXtUaP)O9K$F;EAANAF:A6h,Z+]'/&X#B!#",qiong:"-28-*fr.pza]`!K}F(3(3%2L1}*))J(G's'f",lie:"-25-0N-/O-,z-,w-,`-'<-&G{D{CuDjaj=djZeZ_YiUEL;JMA{>_=p403f2A1$0a0[.x,h,V+k+[",teng:"-2%i+9]8r1e%6%&",long:"-2#-'J-&]~^|7|6xHxGo2n=k6j_j^g.e([9U.QmOxO8LgKDGYDU>t:g9T9%5w0N*Z'n#f",rang:"-1}-,$~Nx[xC^mU$5b0K+S'X",xiong:"-1m-1j-/q-+v-+p-&zwsdLc?Sy@;>42w2r2#2!",chong:"-1l-0Y-#L{*p`oflelde0dc`+_dXT2NB6[6G5|5u$P",rui:"-1g-1e-1`-)LxFas]0M~KVF.@G)'&t",ke:"-1f-/*-.w-,]-,R-+;-)>-'o-'0-$!|Dzqx4u#p^oUmomIkvknjqc4bra6U4U0!/N//*j%>$O",tu:"-1c-1]-0H-/o-(y-&3-%?}n}c}J}I}A}?zezZyvxipvnUlskikFh.gVeVc}bsZ.YYX@W2K?EL@R=C=::r7u(i$r$>",nei:"-1I-1*-&TtvA(=w::8Q7V631r1[*a)~)%(v(?&S&>&%%r$(#d",shou:"-13-)`-)V-%l-!o{ox)x&pxo[]v]uYITcTN,",mei:"-0I~j|vz>yRv#sks]sTs4r

-+b-+(-(_-(.-&h-#%{@wGuWs}s|rJrDlaWTV}V+NAMvKfIgGKFX9a7c,7&]&+%~",bie:"-/A-/;fGe2`#M'M!$!#I",pao:"-/>-+i-'^~o|2w=hA]$[P?.4J4H3d06.M'^%A!S",geng:"-/7-&A{TzHlrh=ZIOlK4IX=X2p&M",shua:"-//-%j",cuo:"-.y-.p-*5wukWkSh!ZKY&WuV4(o$j$'",kei:"-.woU",la:"-.v-%3-$n~L|8[RXFXEWnUEU2R`MOI6DT:T0['o$A",pou:"-.l-'_-&[{]twtO]+]&Z+YGJS/<",tuan:"-.I~!}~}K}HyPy&f7`>[}XIVmGLE;;.:m8t2[,F%v%p",zuan:"-.)XOTt",keng:"-,x-([|t|kvIZCXlVgBF/C",gao:"-,Z-(I-(>wRlpWjNHGxGwGdG>E~E3Dm,)!y!t",lang:"-,V-&J-$~{Jy[r{llgiSeOIOHO;KRHHG4Cp=[3Y,z*%(s",weng:"-,@-#oyxv{kfU!Pd9o'N'&",tao:"-+m-)E-'+-%DwPwMw*r}i/fl`j[oYBWXL,JkGtE?><=)'v",cen:"-)l-)k-)j-)i{Un#kH@?=1",shuang:"-)byOqeq^`NDB>t8R5w5^0&",po:"-)8-&M-#6~]|ZvztMoZmlmZg9W]TXR+O*E%?E>q>o>D;*:J8;6F3v,9*l!`",a:"-(s-'o-%O-$0",tun:"-(k-(7-%L-!`}}|snFhNdP_mRQPFOC@x=335",hang:"-([{dwSvIj)dGS8NML/@.",shun:"-(ZHnF?",ne:"-(R-(8-(%-&T]0%a",chuo:"-(Q-&@-%=~Hu!t~t.ssqVa|^2Z}UuCClMi@i$fDf@b1`Y_4XyW6TMMzJ$I:GOD{=#gKfVfSfC^P^N^>[zWQW!VySKMlIvGkFdEJ:)8{4[1s/|/z,f,.*{(p%m",pen:"-('-$E-$=-!6CN;'6}'Q!=",pin:"-&~~Yuatnrvq{[AZ{H]@_/c+!)r",ha:"-&wvz",yo:"-&`-%c-$B",o:"-&X-$a-!H-!%",n:"-&)-#a",huan:"-%v-$Z-$Y~G}D{_zWw@w2r.q[pYp0okm8l!h]bVaH_I^iYpXQUnU1KyK2GBD%CPCB>1=c<~;c8V7D734/3>2I.[.;,3+R*})9(1'b$d$:",ken:"-%V{qxjc*_CX~*I",chuai:"-%=XIW}Ch",pa:"-%/vLisihd.]oX|NC@r8608)P#!",se:"-%,-$,yogK_WY%X`W~J/J.Hl",nv:"vkc7OM@!",nuan:"vcPo;`:m2X2W",shuo:"v]a'WhT'S|OKGnCn>>470W+p",niu:"v?q=dKd0]S]![DN?@8@!4u/e/d.W",rao:"u2rA]PU?KkFJ",niang:"t|r&qb",shui:"t]iTZMYuA$A#@{=.=*",nve:"t)%S$%",nen:"sirarYc^",niao:"s!r+qsnwFq9x",kuan:"pBp#ooK)CoCfCd",cuan:"jPV'U*T~TwDtD7BU@o6E5K1S0<",te:"dsdr`R/F/9",zen:"d5VU",zei:"^H",den:"][]C",zhua:"],ZYV#ER0:09",shuan:"[&L^GL{let t=0,n=1;for(let i=e.length;i--;)t+=n*$a.indexOf(e.charAt(i)),n*=91;return t},rn=(e,t)=>{let n,i,l,p,o;for(n in e)if(e.hasOwnProperty(n))for(i=e[n].match(Ea),l=0;l(Xt("data-v-006d4d7c"),e=e(),qt(),e),Sa={key:0},Ta={class:"container"},Ca={class:"action-bar"},La=["title"],Aa=["title"],za=["title"],Da=["src"],Na={key:0,class:"icon",style:{cursor:"pointer"}},Ia={key:2,"flex-placeholder":""},Pa={key:3,class:"action-bar"},ja={key:0,class:"gen-info"},Ba={class:"info-tags"},Ra={class:"info-tag"},Ua={class:"name"},Ha=["title"],Wa={class:"name"},Fa=["title","onDblclick"],Xa={key:0,class:"tags-container"},qa={style:{display:"inline-block",width:"32px"}},Ja=["onClick"],Ga=["onClick"],Va={class:"lr-layout-control"},Ya={class:"ctrl-item"},Za={class:"ctrl-item"},Ka={class:"ctrl-item"},Qa=me(()=>$("br",null,null,-1)),es=me(()=>$("h3",null,"Prompt",-1)),ts=["innerHTML"],ns=me(()=>$("br",null,null,-1)),is=me(()=>$("h3",null,"Negative Prompt",-1)),as=["innerHTML"],ss=me(()=>$("br",null,null,-1)),os=me(()=>$("h3",null,"Params",-1)),rs={style:{"font-weight":"600","text-transform":"capitalize"}},ls=["onDblclick"],cs=["onDblclick"],us=me(()=>$("br",null,null,-1)),ds=me(()=>$("h3",null,"Extra Meta Info",-1)),gs={class:"extra-meta-table"},fs={style:{"font-weight":"600","text-transform":"capitalize"}},hs=["onDblclick"],ps={class:"extra-meta-value"},vs={key:0},_s={key:1},ms=["title"],ys=ct({__name:"fullScreenContextMenu",props:{file:{},idx:{}},emits:["contextMenuClick"],setup(e,{emit:t}){const n=e;pn(a=>({"4e261acc":v(fe)?0:"46px","5c73a50d":v(ne)+"px","243d3811":`calc(100vw - ${v(ne)}px)`}));const i=Ge(),l=vn(),p=ue(),o=re(()=>l.tagMap.get(n.file.fullpath)??[]),r=ue(""),d=_n(),C=ue(""),D=ue({}),Z=ue(!1),G=re(()=>C.value.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")),K=re(()=>G.value.split(` -`)),S=re(()=>et(G.value)),j=re(()=>{let a=et(G.value);return delete a.prompt,delete a.negativePrompt,delete a.extraJsonMetaInfo,a}),W=re(()=>et(C.value).extraJsonMetaInfo),q=De("iib@fullScreenContextMenu.prompt-tab","structedData");async function Q(){var a;if((a=n==null?void 0:n.file)!=null&&a.fullpath){Z.value=!0;try{D.value=await kn(n.file.fullpath)}catch(g){console.error("Failed to get EXIF data:",g)}finally{Z.value=!1}}}xe(()=>{var a;return(a=n==null?void 0:n.file)==null?void 0:a.fullpath},async a=>{a&&(d.tasks.forEach(g=>g.cancel()),d.pushAction(()=>mn(a)).res.then(g=>{C.value=g}),D.value={},q.value==="exif"&&Q())},{immediate:!0}),xe(q,async a=>{a==="exif"&&Q()}),Ve(()=>{var a;q.value==="exif"&&((a=n==null?void 0:n.file)!=null&&a.fullpath)&&Q()});const ce=ue(),y=ue(),B={left:100,top:100,width:512,height:384,expanded:!0},A=De("fullScreenContextMenu.vue-drag",B);A.value&&(A.value.left<0||A.value.top<0)&&(A.value={...B});const{isLeftRightLayout:pe,lrLayoutInfoPanelWidth:ne,lrMenuAlwaysOn:fe}=ma(),ee=pe;_a(p,ce,y,{disbaled:ee,...A.value,onDrag:Xe(function(a,g){A.value={...A.value,left:a,top:g}},300),onResize:Xe(function(a,g){A.value={...A.value,width:a,height:g}},300)});const Ce=ue(!1),{isOutside:Ze}=yn(re(()=>!ee.value||fe.value?null:Ce.value?p.value:bn(document.querySelectorAll(".iib-tab-edge-trigger"))));xe(Ze,$n(a=>{Ce.value=!a},300));function je(a){return a.parentNode}function we(a){let g=0;for(const X of a)/[\u4e00-\u9fa5]/.test(X)?g+=3:g+=1;return g}function Ke(a){if(a.length===0)return!1;let g=0;for(const I of a){const T=we(I);if(g+=T,T>50)return!1}return!(g/a.length>30)}function s(a){if(!a)return"";const g="BREAK",X=a.replace(/>\s/g,"> ,").replace(/\sBREAK\s/g,","+g+",").split(/[\n,]+/).map(M=>M.trim()).filter(M=>M);if(!Ke(X))return a.split(` -`).map(M=>M.trim()).filter(M=>M).map(M=>`

${M}

`).join("");const I=[];let T=!1;for(let M=0;MBREAK
');continue}const J=X[M];T||(T=J.includes("("));const oe=["tag"];T&&oe.push("has-parentheses"),J.length<32&&oe.push("short-tag"),I.push(`${J}`),T&&(T=!J.includes(")"))}return I.join(i.showCommaInInfoPanel?",":" ")}St("load",a=>{const g=a.target;g.className==="ant-image-preview-img"&&(r.value=`${g.naturalWidth} x ${g.naturalHeight}`)},{capture:!0});const h=re(()=>{const a=[{name:ie("fileSize"),val:n.file.size}];return r.value&&a.push({name:ie("resolution"),val:r.value}),a}),L=()=>{const a="Negative prompt:",g=C.value.includes(a)?C.value.split(a)[0]:K.value[0]??"";ze(it(g.trim()))},P=()=>document.body.requestFullscreen(),U=a=>{ze(typeof a=="object"?JSON.stringify(a,null,4):a)},ae=a=>{a.key.startsWith("Arrow")?(a.stopPropagation(),a.preventDefault(),document.dispatchEvent(new KeyboardEvent("keydown",a))):a.key==="Escape"&&document.fullscreenElement&&document.exitFullscreen()};St("dblclick",a=>{var g;((g=a.target)==null?void 0:g.className)==="ant-image-preview-img"&&Ot()});const se=re(()=>ee.value||A.value.expanded),ve=De(rt+"contextShowFullPath",!1),V=re(()=>ve.value?n.file.fullpath:n.file.name),te=De(rt+"tagA2ZClassify",!1),Be=re(()=>{var X;const a=(X=i.conf)==null?void 0:X.all_custom_tags.map(I=>{var M,J;return{char:((M=I.display_name)==null?void 0:M[0])||((J=I.name)==null?void 0:J[0]),...I}}).reduce((I,T)=>{var J;let M="#";if(/[a-z]/i.test(T.char))M=T.char.toUpperCase();else if(/[\u4e00-\u9fa5]/.test(T.char))try{M=((J=/^\[?(\w)/.exec(xa(T.char)+""))==null?void 0:J[1])??"#"}catch(oe){console.log("err",oe)}return M=M.toUpperCase(),I[M]||(I[M]=[]),I[M].push(T),I},{});return Object.entries(a??{}).sort((I,T)=>I[0].charCodeAt(0)-T[0].charCodeAt(0))}),Oe=()=>{Ot(),t("contextMenuClick",{key:"tiktokView"},n.file,n.idx)},ke=ue(!1),Qe=async()=>{var a,g;if(!S.value.prompt){be.warning(ie("aiAnalyzeTagsNoPrompt"));return}if(!((g=(a=i.conf)==null?void 0:a.all_custom_tags)!=null&&g.length)){be.warning(ie("aiAnalyzeTagsNoCustomTags"));return}ke.value=!0;try{const X=S.value.prompt,T=`You are a professional AI assistant responsible for analyzing Stable Diffusion prompts and categorizing them into appropriate tags. +*/let sn=19968,ba=(40896-sn)/2,rt="",We=",",$a=(()=>{let e=[];for(let t=33;t<127;t++)t!=34&&t!=92&&t!=45&&e.push(String.fromCharCode(t));return e.join(rt)})(),bt={a:{yi:"!]#R$!$q(3(p)[*2*g+6+d.C.q0[0w1L2<717l8B8E9?:8;V;[;e;{<)<+.>4??@~A`BbC:CGC^CiDMDjDkF!H/H;JaL?M.M2MoNCN|OgO|P$P)PBPyQ~R%R.S.T;Tk^l$lt?uJv$vMyE|R}a-!}-#&-#8-#L-#b-$Q-%?-+q-,6-,8",yu:"#V$l%S&9&I('(7(=)))m*#*$*B+2+F+v,0,b,i.W0.1F232L2a3(384>6P8n;';i;y<1>(>)>]@iB&X&m&s'2'X'd'f(9(c(i(j)@)l+'+M.).+1y1{2=3K4c6&6'6)606<6B6`9`9{:a`?`AgCLCuD%D2F2GyH&H1I;K~LkLuM&MYO0O3O9P8PbPcQqR5S2SCU0U~V%XYY&Z}[G^P`7cUc}dEeNgOj$j)l?m:n4p,sOuRv.y'{/|i}1~P-$B-%Y-)|-)}-*K-+G-+H-,m-.@-.M-/|-0y-2D-2c-4W-4`-4h-7a-7p-9c-9i",shang:")Y6V9cJvR8UqXJXa])asbQc,s,uSvz-#+-.;",xia:"#Y#w&,&;'''I)1.u/j7=:[<'B[ByCtL'NmNyQOR([0`(cLh[iRkVt/t_u4uezFzM|W|{~d-&)-*4-.}-0a-5;-8S",han:"#,.m/h:l

MFrGXJqNrOUPCPqPrQ|]@`+`2h1lBlZnXp*r;rWrkz9{4{B}x-#c-#y-$;-$l-$y-%Q-%n-(i-(x-)i-/!-3*-5B-9V",wan:"#=$0&o.]0F4@5X5b6*628u9pk@,JhR`b$b`knmtujz'z0}<-#+-'I-*Q-16-7m",san:"3T3q3w3x7~uJuwzA-'n-([-,s",ji:"#r%''l'y)3)d)o*Z+'+9+G+M+T+Z+^+g+x._.c/R090d1S1W2;43484J4R5C5w6)6C6`7f7s878H8t8w9J9X9Z9{;8;<;B;C=(=2>6?YA$B+CHD0D8DbE:EQF2I*I|JEJnKKL)L:LkLzMdN'N5N:NiQ6QyRrUWVcVnWPWQWtX6XEXYXuY(ZAZ|[/]O]e^F^J^U^~`)b#b0c*ckc}dee!e$e9e>eyf+fXfrg)hFhriMjZlrqmr)sRt%uov3vevw|@};}N}g~!~+~F~{-!&-!u-#N-$%-&a-'u-(,-*x-+]-,W-.?-.V-._-.d-.g-/+-0$-0H-1%-1/-10-1^-1o-2/-2@-3'-4)-4o-5>-5H-5U-6,-6J-7/-7P-9e-9g-9h-9i-9j-:l",bu:"0$192,FKJgT=UYZ^e+hhjmm8mFoGpGp}sjw]w{-'7-'E-/m-3#-4.-6=",fou:"4I:L:O:Q~1-3:",mian:"!G!d#4$U$W$]3Y5X6A6_6o9g9w@qB/CkG!H_Q;-!L-!M-!P-/_-7y-7z-8'-8,-8q-8r",gai:"):5=5LD,ErI!J1Z'_/`TaYaac!lnpcw[|O}1",chou:"!+#n$N+0/y0}2:4e5/6#9jB*B.GNLfUmZ+^3^5_4e%e4fWkan]nbo.o6oU}u~$~*-.X-/>",zhuan:"%H'S'V.K0k1B1H1r2?7Z+7+f,8.#.|0K0p2O>#DNE1P.ccd]eMlpt8y>-0&",ju:"!Z$L$w%R*W,c,l/e1~3&3J8#:t=#=`=k@FBGC0DlD}FeGAIaIkJbMrN[OVP`RDTlU|W>Y`[$^Z`Ua*ccc{dWd]dae#e@eFeff8fSg*ga@'@2@KA%C|DQO+O]O^PvR!REScU'UfZw]m`l`na'i[l_m;p-4F-6'-63-91",shi:"!E!Q!e#?$p%$&+'$([(](q*^.&/5/n0[1w204zQQR9VYW2W@W^X2XNYxY{ZI[:[<[v]X^l^{^}_p`DaDbmgqi8ixjdk!kNkpl(lkntoMo^ocoeofp5ppq%q&q*q4qbr=t9x/-&^-&_-&}-'<-'@-(*-(8-)!-)H-+,-/<-0?-0d-0o-0p-2:-2O-3+-38-57-6M-9C-9E",qiu:"*6*7+a0r3k4D5]6j>7CaCeF`HEJXMhNgNjONP;QMQ_RfSWUUX?XUXqXrajc$d'jpjskXl]n@o.oup:r?-#5-#6-$8-/'-/k-0W-0X-1,-2Z-4v-7&-9U-:Y-:Z-:]",bing:"!n)F*4+/,>.75@DsOcZ7l`puqar||>-!:-!q-#,-#G-''-'C-(D-/O",ye:"$>$E(0,a6g=;@?HfSb[]_]lUlfn(oip=rmtDtTtevTx?-!O-!R-$5-%N-'F-'e-(T-*o-4Y-61",cong:"$'&Y1>8==g=l=p=vDIE=I2JUK0LsRZZk]$a}a~sKtBuKu_-*)-*V-+Y",dong:"&&.r0b5D?7?C@JD|G;I#KwQ([&jV~^-)T-/=-0)-4g-5/-6T-9,",si:"'?(b)^)g)p*+.+>0KxL+NLP7PiQnReS&W_`tp1pvp{qTqnr8r`tIuzyB-&6-&R-&^-&c-&s-&{-(:-)L-)q-*8-+.-0.-5j-6`-9N-:o",cheng:"#0$,$P&W*O*[*w+A+{,O,v/l5[7#:`?}FQOoS(UKZV_#cHcJk#m$nhrxtkuxv@vWx=xB|2-!A-$h-'w-)o-*>-+B-/u",diu:"r2xL-&&",liang:"3A3D3{6K@0CRF{Q%Up[,_Oe1h!h2hCiBiHojss-!=-)h-.J-.O",you:"(r)O*I7o8W;L;f=5=M>VDKFoFsFwG/KaOOOSPSQLY8ZN_;`qh%hMjWjnk6kPlYmEn3n>ncodp~r3x&x<-),-.y-/1-1p-1z-7N-8P-9D",yan:"##%F%L&%&F&T&v(Z,j/u1?2$5t7V;!;h?<@@AsCVCYCZD3FmGpH.JlN_PVQAT$UxV9WUX/XkXmXnY?Z3[U^1^C^E_e_~`B`C`RbDbPc;g/g7kIm#mNmsn5nHnsnyoPoVo`x+z7zkzmzn{A{`{e|}}2}b-%'-%,-%B-%v-'0-(#-)~-*$-*F-*j-*s-+C-.4-.H-.Y-0V-3$-3*-3B-3n-5#-5G-5u-7K-7r-8T-8W-8_-8`-8a-8d-8j-9L-9Q-9w-:1-:N",sang:"'EVNts-%2-%{",gun:"#<&#'U6F6z9dJ>JpTFTwUu]4h:?B@}AbB3BwECHxJ1NwOrP'U9UPXM[X[hhLhmq`tetlu.xSyUzTzU{W}4-!S-!s-#F-#`-#j-%f-(A-*%-+t-.3-/K-/U-1u-3T-3z-6g",ya:"#B%C&{'I*{,a.g=UDEKqO;T1WEWGY.^[g=i!j4lUp=s=v7x;}f-3C-3c-4U-6O-6V-9o-:;",pan:"!&!>!?!H!o'L'x2A76=F>R?$AIH+m/V2T4{6b99>j@`BnEkK*O:OBP^R2RKSzTKTNTO[@e^f>ohparHtQv5wbyF-3_-9@",jie:"#S%@&{(.*d+=.G0e4J5,599D;k=(@/CfD,G#G`J[LzOFP&P:PTQ=SKSQSqT/TITPTlU4U7UPVQXOXSX}Z%ZWZh]/^K^~_5ckdve=j^qGtNtXz,|1}.-!m-!u-$U-%c-&v-+i-.l-/@-2&-4{-5$",feng:"!@%N'40m5v7R:3C$FdHnN.PFSaWI[R^c`?b.c5k'n+n;r[u5uXxs-!$-!4-&%-&J-&L-(w-3(-3,-3F-8)",guan:"!'$b$j$k(W)B,Y/f0E6:9&:]:gBVFqIEWSW{X+X.a?bifMh?kmsUu>w7zOzS{,{2}{-'K-(N-0q-1N-1j-2e-2z-6D-7A",kuang:"!Y!z$Y%1%r%w(G+}/O/z5'538V8vZ-8>",chuan:",40jA7BYB`BhBxEvale[hIkJp%wQ-5+",chan:"&6'W)K)q1N6D7$8*8A8[8_:6;xCODJIHKQQ2RGR_R{S1UeW!W`X3ZMZy]B^+^7_N_bfbi|n2n6o@rTr]uWw3xYz%ze{7{g-#Q-%D-%~-(%-(S-+Z",lin:"$B&['t0:393O5{8!S]SrU;VsD5E4GTO$WNYk`LdDdNgjozp?wr~~-!a-&.-.D-.`-/&-/0-1t-1v-1}-9=",dan:"!K%$%5)r,S0N1h4V8A=A=B=H=~>q@9ATAVH*JDOkPUTLV?VoXGX~ZK_'a|bBc3f{mHn&nKn~~t-$I-'G-'s-)*-)a-,C-3Z-8H-8b-8i",wei:"#o$M%}&0'#'D'M6/6p6r7+8y9f;6>n@gC+D!DOE+FCGBH)I&I(I4INJ]K$KJL7LdMDN0PwQ$QDQHR?T3T6V`WkX$Z)[#[^^*^4_I_^e;fefig@hbj>kg?:?k@N?#@!@D@E@nA3C!CWC}D*DFE'E,E]EpFFF|GKHKHjJXKsNSODOGOXOwPIPMQEQIQWTETsTvU.V(V6ViW+WKWMXpYS[C^H`Va4a{b4bXc(c7cRd=dZegh*hPhRiAiLlIm(m*mmnQowo|pFqZYZZ]U_6_9d9fYj6j~lWm)mep)rQrbrctvwkxc{y|U}6~?~C~`~m-!Z-*'-+R-/j-0j-3i-4/-4@-5,-5f-6j-6s-7)-9G-9W-9X",tuo:"%U%V&z0L2J4v?{@$F_H6MUTbT~Y'Yc^QdHdQnVq+r`x1{{|;|<-&d-(.-(z-({-)1-)J-)K-*:-*e-*p-+$-+3-.b-/%-/[-0b-3O-4,-6_-8}-9$-9?",zhe:"#'%+%E'P2f2|_@eB>CADvFAI0I>J:L]M:M~TgWHWfY/Ya[|[}^6_ngmi6k`kll*l9r!tdwhxRzv}!-!j-%=-&9-&T-'(-'=-*&-0u-1I-2f-3;-3]-5F-5Y-7+-9T-:%",zhi:"!7!t$s%=(J(i(k(s(y)2)I)Z*2*>*A*T*^*c+(+)+J+Y,G/k4Q4b5T5W5s6~7^7|9(98;(<0=E=Q=b=}>L>|?+?QA4^4g=0D{OPOZX]Yb[(]G]W^ng=o;t*xHzI{N~J-&t-/9-/a-1{-22-9]-9`",hu:"(1(~.j0Z1M3!3^545r757G?0AMCtCxD5C_{u-$*-'1-(A-1!-1d-2i",yue:"$S%!(a){0^0|242S2_373H4<8sAlM{O,O.ZaZc_>cid2dCdFfZgApDqBw2whw}zczd{[-,V-6:-6B-8Y-:^-:m",lao:"&)'n,71s3<5>9M~CXE%F$H(JWMaOQP%Yg^jgrh>mAqa-$^-(w-/(-1w",pang:"!o'A1+=/>R?$?=A/B|QmWsd@jf~6~|-0k-2g-:K-:M",guai:"0,;%",sheng:"!D!^...t7*7q859e=[=x?*E(KM]^aMb1q2t2|#|Y|u-4_-9B",hao:"*:.,25-%|-0i",mie:"!`(D1G1dJxL>SNS~W]vt-1e-3M",nie:"1&294(4,=G=|B)B0E!GDMlSX^=e)e?eAezforAs$sJu*vfw9wByVyY{&|c}(-%L-%x-:#",xi:"!>#6$3$d%/&(&g'J's(!)P)n*l+7,,,n313z434i5j6H7?7W81878g979U;V;n<2<5<6>c>d@>A6BABBB}FUG]HeI9IbIwJ+JVKzL2NdPjQoQqRYRqSiT!U)UzW9WFWiWlX7XfXjXlZH[K[m]5]F_@`.`/`W`_a(cCcGcfcwesf)fulGlplwm&m4m_n:oIokp2p7pbqLqMqvsYu+ufv&w6wSxJy,z[{5{b}9}?}P}U~#~2~q-!%-&?-'2-'`-'r-(1-(C-*C-*O-*{-.)-/x-0_-1+-1J-2X-2q-46-6*-8I-9O",xiang:"!;)*+50U5Q6Y8b9u:U;E;J<4APC{HGHvLTaU4UI`]a$a]bxdRjGl{m/q#qOrXu,x$x>y`-$a-$e-%c-%d-)B-+5-3J-3q-4(-7i",mao:"!M#i$i*:/66e:uqcsVx,y%-,B-,O-4|",mai:"?W?XF>K^LgS{aKaxj(l+~g~h-!'-5{-7t-7u",luan:";D?dAzA{L=NDW~o{r7w@-4'-6G-6h-:y",ru:"/M7F8G:1>AEgIYJ6KlLhQJSHU:VGW,inlEm`oSr+x_-%E-&!-1]-3)-3K-3x",xue:"$?,(A=C@E@IGLKStTnXd[p_[coe,hdibig~/-!_-#M-18-2k-6%-6^",sha:"%4&G052u4O8F8~<<WIYIuTJU!Zt`m`pgNlNlypHu7wcyZ~0-!d-.x",qian:"'K.(/~0A0t1'2*2D2R2p6+7[8J8q:G;h>b@vA~CnD(EIElF:I%IjK>KLNNO&O8P}VR[*[u]u_q`!`&gSh;i~kjk~p9pEpOq;q?r6sPtYukvqwPwgwtwvx+{x-#U-$z-*+-*/-*=-+U-,y-,z-0x-37-4M-6z-8G-8M",suo:"#*1Z1^4Z797U:?;cFaFbJ7P{VJcuk)tatju3u9xi-/b",gan:"!3%)*1*t.Y/x1*1}3%4s91>GCmE#T>Y^bJbTcAcTcti}nE-+e-.Q-1T-2w-3*-:i",gui:"!q#o$.$C%x%})0)s,E/?1K1T?NERJ;N%P/R*RpUgEi#lilxuyvlzY{P|M~#-#K-*;-.7-.:-.=-/S-1F-1U-2%-2r-34-:Y-:]",jue:"$Z$l$o%6,%525S8#9NA^D=KiKtNnO6RwRxU!WWWbX%X5X>XBXZXiY4Zj]N^f_}a0c[chd7h7x8D9V:4AQCyFOFPNxV}Zm]c_QazkFkHl.uqv!vF}*}/}G}H}w-#$-#r-+|-,/",gen:"CQEHdc",xie:"';(f*&3c4k5+595I5h6g6v7&8>8T92:B:M<3>l?T?V?ZA&LRLTM0Q7QKS+S@SBStTRV*V^W4XKXOXS[B[y^<_Z_mflfnl,lU-!i-!v-#1-#D-#h-$#-%c-/S-2%-9Z-9q-9t-9~-:b",zhai:"%X)3,92qP*Q,Znh5iGj+jM-.N",kang:"%<+U2v3tg1lJpgugwmz={L-17",da:"!W.u/(/S84;H=Xs]Q]fa`d0dhe3gvh_hfi;i?lvnkoHo]p#q]v*xW-'%-(B-*h-+;-/Q-1>-20-3|-5k-5s-78-:a",hai:"5L?Aj9l/lnnro<-'!-'~-)Z-)b-+>-+p",heng:"?J?mMZT9vc-3o-4$-6e",peng:"%c&'&S'+'Z+,.V1+1@5@8P>~AACgE%FdJRMkRiRjU3eSgbh:s9v{zL-$+-$0-):-*A-,X-,b-,q-4K-6y",mu:"!1#N%]+V7`7n:@?.C5DeF~G%O=e/qKqPx!~3~G-#9",ting:"/s5l%>&?qC)FnI7PWQ8ZJ[El=rUxKz`~K-!~-$g-%e-9F",qin:"$j$k*'*Q.d5c=>>MD1DAGZG^GkMRO8Q}RJS7TVWJWrZQc]pXpkriwix{}c-!]-$~-)f-+E-/c-33-4L",qing:"&/&Z'i046+60:ZDaHzQ#Wr[%]%_Agph+i7m;>t?fA!BuC,DrGWH=I'J{L4MmO^U+U,U6VrW5ZL[d]Rd8d_eKf@m3pxq5qFrVtow0wxw|x(yT-'4-'^-(E-(V-(d-(g-).-)[-*^-+)-+~-,$-/0-1=-1}-42-6k",lian:"'K+D2+2P2V6w7b8k94;s{M-#!",ren:"(o*,*e+#4A4U5)5y8x9$>?@AD)E}FGGDTUU2Y!ZC^I^Vg&gFi&p/p;pRqp-!W-![-#[-#w-&i-'#-(2-.^-3{",shen:"!U![$8$r$u%j)#)9,12e2g3T3U3q3w4l96:p:~>i>m?t@BFkHwH}JGK!LCPGPHUNX)Y1YHZ*[2^)_%_L_S_VfylPqRrj-$W-)W-.m-/z-0@-0|-1)-2N-4A-8b",ze:"#R#}$n(+*p/,0J1I=0BsKAS?Vz[(].a@b7b]c:jO-&t-6.-9s-:,",jin:"!#$j$k%M)8)G.U.m/J4W4`6L70:/B6F&F;GcGkJYM!TWW%WzXsTwGy2-!^-'m-(Y-)$-7D-88-::",pu:"$5*k+j0$8LBTBUFXGGGaH~IsIt[D]]_|bEfInprtupv=xbyqyu|[-/m",reng:"(_DGiu|z",zong:"&Y'h+?3P3]4$5z6E6Q6n6x7(7M7X7e7t9%9nz?!?MB'CwE5E7ENE`F4GHHuJbL;NsXHYOYP[I_caFa[bzb~cZcpd(h3hQiJmbp&pmsGtRtuy=yO-$s-$t-,I-/{-0r-2P-4e-9)-9f-9i-9u-:D",zai:"#^7HGHb+g|i9n^",ta:"(d)i2~VAZr]wdBe7etfFfOfpkdkiq+sBt]tex1{'{5{;{={R{o-!s-#*-#B-/?-0t-2d",xian:"!:!O#5$<&#(F(h)X*3+D/D0V2k3B4%4|5A5c5t6,6]7J7r8Z8c8q90:%;];d;h?&@oAnA~B;BvDSDwFzG,LOM'M*MpOKO_O}PJT+T0V_W:WRX,ZXZo[O]d`>awbKb^cYdgd}f;fhgBhHnfo'oPqvr#r$rFrqs0o334=4P4f5i8o8{;z*]+m.?/Q/i345D5N5`9PA@EjJPO1T,Z,cFj|ndq:qYqjxC-')-/L-2*",dai:"0,1n4x7%9AC?OMQ]TdW=Yd^xa7aLbqdff'gCgLg[i%jIk4p0~z-!0-)E-/>-3I-8N-8e",ling:"%d)D*M++.5/+4p6@9];K;U<.=KBqD[GiJJJmL%M|OiT(TcUjYVdLgZh/n8oWpts0x)zN|q~;~O~]~a~c-!2-$L-%`-)C-/$-05-2C-3L-6Y-7E-7q-9z-9{-:A-:T",chao:"!k,h,r2u6?9b;5J@mA+DTGMH!UlUqZfs&sWy+z'z(z0zh{1{a-#d-.0-02-1X-2H-2T-92-:d",sa:"8g?^HDK{LYY@fnpQuwwS}A-!c-!s-&,-&P-)&",fan:"%0(M/1/40i2A2d6R7i8$;o<[AIBcBfE0KNLPM>N!SOVqXva=bcfXo:-+g",wo:"#l&A,R,_6}>I@OAlB!G*HQLgP[Qbe:-(p-:4-:I-:L",jian:"!%#9#`$<$D$I&N&b','r'}(&(<(X+D.p/9/g0#0/0Q181k262I3_5U6Z788(899v:9$>S@fB4BoCICSCTETE~G-#O-#X-'A-'S-(7-(k-,h-0Y-0`-0h-1(-28-2h-37-40-4R-5@-71-7F-7I-7J-7W",fen:"#|%A*9./2x3=3r4S9';M;q;~ARD4IxKmO?O@TGY,`^`ff|hjnOpUvY}K~5-'W-'}-(c-(r-.w-1M-2Q-35-85-8n-9.-9:",bin:"%A8I::A)AiNc`X`cahailKvjya~l-$p-%G-%k-,'-,1-,E-,_-,p-.!",di:"!u#/%W')'.'{)<)_*U.v/*1=2c4+6c:);X;@WDXD_FMG9G_ICJMJrJwJ|M6Q+QVR-0>-69",fang:"!I!n(l4Y9*>TBjD;O!Y;^ed@lLp@siwn|,-,?-.v-1s-3E-51",pei:">Q?(JBSwUrUsauc2hyiPnBn{s5y7|%|f~M-)#",diao:"$#&a,C,k.B1]5FJML|NhOaXxZ8Zv_M`ro~p_r!r:s*s[vawUxExR}v~D-.c-//-0%-2L-2{-3&-4O-9>",dun:"!^?gD'G!O'O(R/RO`ahShWiNu6zlzqzw{<{D{Q{c~4-#?-#{-%(-'f-)(-)4-.r-0g-0z-2V-36-3G-9<",xin:"!=(F?zBID7FkLZSyVtY3Y-%T-%U-*[-,w-.G-.W-1_",tang:"$f'@)f0{3V3j3o;l=)@zA4J4LJQSR$RAcMc~eef&g+m]o=tiu)uTv'wDx[yWyd{1}:-#I-']-'h-5:-96",huo:"!V$S$^(*)>)S*Y*_*`+|,W10=$=4AuCJG.IhMTSI[g`0a:4<%<@?R?U@.AEANAhG{THVmd#uQ}Y-$|",che:"$;%I&?&@=JFjP@gFA}EKFRFcK:LmRBTDW6Y7Zz[Q[o^;_V`$arb;c`cad>dKeagKimjHmDo@pAt(|C|o~H-5T-7]-9l-9m-:=",xun:"!x$Q*p,^4;8MAjEnF:KLKSL[LaMcRzS%XwY#Y)Yt^R^T_+j%jajlkclsmzoTv`-%A-(}-)U-+%-1?-1H-24-5A",chi:"!]!y$).X.y/A0+02133,5W<#<$>?2?D@SE9E|GeO%OHORR;U/U0UkVMYFZ9Zq[t`8aRcBc^d+dfeGj@jBkKkfkrkyl7q7q^qusx~9-&l-(4-(|-+&-.R-3Y-4!-4r-4w-4y-5]-6Z-8(-8C-9k-9v-:<",xuan:"!m!x#d$['5)k0R5?7J7d7w9K-+4",bai:"+&.;3;3M51L^W3b:b_-#k",gu:"!/$J'B)A*~+P.z010?0u3g75:r:v;Q>K@(AfE)G>GhJ,LSOdOjSeXFYR^h`%a]bxgdgehYi,iXk,nYprpws]wwy.}h-%@-%W-'Y-(Q-+`-/;-0'-2I-3^-5?-6S-7%-9*-9+",ni:"!h#P*G2m73=i>$>}@pABA{DqLpOLP.Q!XXZt`~d`h.jhmCpnx3}L~X-(e-0,-2J-7`-:+",ban:"*E2s5!9;>PBgBkQ*QvVKd[iciipPqEwfzx|$-!h-$F-%Z-.n-35",zhou:"!+#U$x&y062.2@2C3+384:777o8p9:B>o?#B^F@GoI$LfY][a]y^r_4_Manc0gkg{h,i0inCqg~Q-);-)`-)t-*r-+[-0(-3~-6f",qu:"$L'o(}.2.F/@2U3?4o5#<1u?/AxDlG:HhKbM}O[OfOpQdRDRlSkSpT'T:U&WxX!X&X=YeYjZj^tcjcld%d*fqf}g2gWw-#)",ga:"g=onsfwH-.A",dian:"&p'v,j1iIiKRPXdXeVewq!x%|8~@-!E-%3-%4-%z-*g-8Q-:8",tian:"!:#;'1'H,j4w6D>v@:BRBXGvWmX9atnTr#rFsXx%xM{%{n-!>-!G-'$-3f-5J-5S-8:",bi:"#L#M'!(w)L*@*C+;.n.o/E/Y0(0)1/1<2r2y4M4m6>7Q8@8};7<,=a>a>r@lA[BlC|E*F.FJG~H:J*>1>2GdYf^ucScxorpC&CqD^FyHSK}Tjh$la-#&-$)-,Z-/`",zuo:"(|*S+!+n/,/p4*7{?'D{F^H`HaJ?Th[(nWp||7-&t",ti:"!g#e')'?)Z)|*v/8285f6|9Y9y:{DXF!KgLIUzV&V'[qd)d2eJemexf~g8jxk=kLo&rDt)xy-%$-%r-*2-+m-,0-,L-,]-,a-/^-0B-2U-4;-4w-4y-5L-5M-5i-6r",zhan:"$H&b.33*6=9oGQLMN2N`NaOeWyYQZ/]h]l^B`#cghUhgiSl0n|zK~V-%~-&*-&N-&e-'|-*b-*l-.Z-1S-2y-37-60-7=-8i-:h",he:"&c()*(0z2i3@4?8r-:`",she:"'y(`BJBKBLJuNpOgP(S5Y>^dagakc'cDg~{!{^-#h-)u-7l",die:"!g!t&w5M9GpB5C6D~PmQ`R@V,V]YU[7_WcbdOdXdreigojNz+-#1-0S-2R-3d",gou:"/01%2)3g6t:&DhO[U#VBWwX;YNY~_(`ob5bgk_pMqHwl}k-#A-#m",kou:"!P!Z#r$$,P.2/W1OD+K=KFp$-5K",ning:"$P=R>!DpLevm-,~-64",yong:"%p&>A]DcIPP=Yre2e]l@mJmio9rHuVyh}n}~-%*-%s-'x-/y-0w-15-2A-2o-5`",wa:"%K,),?,E,`=N@r@xOyTuW1lc-#W-#^-#t-8w",ka:"?8U@qV",bao:",<.~6h?,DgGYHcK`L4MJN^OJTeUdV4V5Vf`ib*d8q/w%x.zs~>-!6-&x-&|-(9-)/-+j-,M-/7-1~-3/-3A-6Q-9r-:B",huai:"=7N3N8VDVSeE-:f",ming:"!C!w#zEDJ'R,WuZ0m^n_q}xT-3.-6L",hen:"Y|-!y",quan:"$b%u/K0B5<6$7:9mEqI3NAP|SlXLZ#_)dkeIgzi=o5qxv%xO{#-#_-%M-&$-)V-*3-,e-0L-2^-9}",tiao:"!~(t),,J,g/!3/4.5F=S?PCdD^H0J@JMJNPnWdZ8Zv_McqdwjCr!rdtyxR-#%-,G-/o-1&-2;-9y-:C",xing:"!D#Z&$0Y0g6J@YApBFEuF7FhHrP9T#XVX_[_lMluo+pBqZqwrhwZx6|D|S-'V-(/-)p-+D-/5-0D",kan:"!N$=$g%?'^.QG&T%h8ho{4{q-%)-.+-:R-:X",lai:"#8#F/X0%2/2MG'H%MSW7Zqaob,c&c4k.mBsgxd-$q-$w-)y-0*-4B-4f-8%",kua:"50?>B~Z=d9dlq~-+s",gong:"'91*44474=8o;z>[OBXQXba6bZfzg$gtrG-!z-,T-:L-:Q-:W-:u",mi:"!s#p$A(w)')w*C1d2b2}3p407c;>;F?bClH{J#K'K/L}N#N6PaU*WZW[WcX1Z.[j[l_g_rjXo4oXoYo_r,z/-!K-66-7X-7Y-7j-82-9&",an:"!(!.;)?I@XEzGlHWHgJSUxZS[N_d`k`{r1s:x]zy}+~=-!w-!x-$1-(l-/E-4I-4u-6v-8c",lu:"!)#Q$_%|&L&d'])E)J*}+[+o071X1v2!2#2G2H3I6S8^9q:f?9A,AtBmBzCFCMCND.G@JcJeJtKcM[NSYXh[~aVb|d$dseCf#gxh^h|i/i>iTk5nwpis2sascu8uMumvGw&w+yr|A|t~x-%J-%_-)+-)r-*N-,3-.q-.t-00-1i-1r-1y-3w-4E-4P-6!-6>-6U-7;-7C-7M-7b-8l",mou:"!|7n:@Oq[[_Ue6t=-#9-3y-8!",cun:".N2nA>lS",lv:"$()(*r+~0`5Z5~6S7_7j9q:*@wA(A8A;HkM,NKV=VZm'rJw#xDz_{T-*u-+*-5a",zhen:"!X!b!c!}%Y'%)5)T)b+I.A0X264N4w5Y7D7L9,:2=I?%B9H5I5IWJ&LnTpUSWaYKZb^pa2afbWc%g^hZi4iqkOnNoxq$r~s`tOu$u%wJyS|0|_~L-)D-,o-1f-3@-6R-8d",ce:"/%/U/^/t0G1W36F/H3HPJA",chai:")&>HCjEJNzS9T[Xz`jp4wY",nong:")v*j+q8C?cAXL,V~]iioipoL-,{-9a",hou:"#c$t0q3Z@AGFyHCKyL2LtNBNMP{DoU1UbVTdPllnm-+o-/R-:p",jun:"&].=/`0<0CFlGCI1O/PeTXWhaeg?m1p^qfr&t'wj|Q}^}l-$j-'8-(J-)m-+F-/]-2?-43-44-47-7U-7^-7d-:Y-:]",zu:"(x*J+10H4}95GqHbIkYm^kd6eLtdu2u;yk|6-!f",hun:"!F#O#W#]F6I8JyXT[=_2hczo{d-'>-(L-.C-9J",su:"';+1+3+],X1U3.324X7K7U:?>,>/@{DWFwJsM+M]MiXWYE[r^o_lcyf(k$khksnZrR-':-*_-+L-/i-1@-5p-6~",pai:"0'1z1|IOhBjLtV",biao:"'c,!1D@3A,A1AoJoM=T@UoVa[3]#b?seuZw$ycz#-&&-&+-&5-&D-&E-&F-&H-&O-&W-&X-*~-+@-+W-,;-2j-7Q",fei:"%[//1!6M9aO>e>r>z>{@GDFGjH$KhP_PuRuUtZp_GaObsvEyP|g~T-!/-!H-!I-&Y-&[-&]-'H-(j-*!-*,-0+-2F-9;",bei:"&i&r)`0'3f>wA[DfJ9M8PAU'V;ZLZwa1bVgch@iDlbm5mQqWrPv[wd|=-!l-#,-#C-+k-4N-6x",dao:")=)H)x+B+K005F8hbdm?n~o,oJqQsMx#y8-$x",chui:"&U0D@8GPsFtny0|n-$u-:_",kong:"%.&V,/0@;gg,sA-#(-4[",juan:"!{#2#H5J5V7Z9S:|;=?w@7AaG[K3SfUM^&mTrZras6u0vHy5yXzt}^}l-#'-&k-'.-6m-:w",luo:"%T&!&='n/>0M2]5>8f9M:n;@@)@UAwF8H9HYJ5N9OrRHS6UvW~X'Z1dbf`g'kAl:uEw>y/yf}s-$f-('-)_-*P-*k-+=-+X-/K-4#-6)",song:"&P.@===yGOY0Z]^b_?jcu1-$@-%[-'[-)e-,c",leng:"#>&h++L@eD",ben:"/&<(DxRuaUblk/sIy&",cai:"#T677P8aGSK+U>a5b[dxeQob",ying:"!R$v&C&|(P)c+_2K2^6U7/8`9^:>:X:Y:c=?A:ASDzEAF7F9G0G1H@HAHBHZJKLqMwOmQ0QPQiR0S8SgVPWv[i]M]|adbHc@g:j/m2twv8vky?~_-##-$.-$i-%g-%o-%p-1V-3g-4q-5*-53-5o-5~-67-6C-74-7>",ruan:"&u(>6^U?sA7C~G3G}HRITJZQgSUb(hKn}o/sL|T-0#-0Q-4i-4~-6{",ruo:"0P1#DnI}mP-0e-0{-5<",dang:"!,#s%2'((2/[1f2&CDF3GbKuN(S)UCW&]b^A_kd&kEvWxB{9~A-8[",huang:"'w+e0f1q7O>=C1F#H|Q@RtSuYv[V[f_Xd,kWt3txu}yI},-$,-'P-*.-0T-1A-2]-5q-86-87",duan:"${'&.I1`2X6a:#IMK(QfRI]1a*g3kxu]yN|F~x-#J-+}-,*-5a",sou:"#v2BC;IQJ(L_M?Qum[o3t~uAyH-&:-&<-&S-'c-(R-*<",yuan:"!9!f)V.i0F6f7':.;m>CD3DYE?I?I_InLGLdO5PRPzQFQXQrT&TYUiUuV3VF[xa3bYh]iQj=k@kgl8lRnPphs'u(|^-%1-)9-*G-.o-30-3U-4V-5%-54-6K-6]-6}-8s-9!-90-95",rong:"+Q+S5E7@9C;^>FEFEfF5J/QhQwQxSDVEghthyb-)R",jiang:"(43u3|5P8:9L:F<>=.A2EaH^ILK.LAQjRM[w]=^W`6ngo>oF|H-#P-%5-12-2_",bang:"&<'A+%5_749B@uC8IcO!O*OvPt[s_olQlVt^y^-#3-,#",shan:"#:'m)K)q+W.s7g7}:D;p;r?pALATBaD&DtR}S,TCWjY%[b]r^ObFc?cVd^gGlAn#p!qtvBwRz4z5z;{@|P|X-'q-*J-+V-/l-1C-1D-2s-2y",que:"&5&E&g'6'7(1(N:P:RI]O6c}z}{*{l{p}a-4Q-6t",nuo:"+<+u3e3y4&5JiKWL.M4N*N+N7N@SPZ:^(^zhxnoqls?vPvvw:yz~<-!*-$O-$_-%7-%}-1Y-6<-9R",zao:",y,~1R3sC#LlMPOC]`d1f4fNk%ktoCwA",cao:"3m>9C=C[EwJ_R:VbV|n)uc-*D-94",ao:"!T'Y}I-*S-+S-0~-2b-5X-8{",cou:"@ThJiK",chuang:"'_,H,L,q{+{E",piao:"$+).1D7a:;_tmuuCuUye-#!-%;-%y-'i-(Z-,t-,u-1*-2m",zun:"8':^U5]Pk|qqv+-1B-2u-4n-5|",deng:"$7'q.M/H1pCCW|`:f9l>mxv6yx}E",tie:"=VH8OhaPbndXq'qzv>vRx'-&z-'Q-*i",seng:"-,v",zhuang:"3:3nF)F]UBUZ",min:"!B%9&`.}/<1l6O6d:,:wDiSSb'pqs7tEzEzZ{K{S-1$-2n-3P-8q-8r",sai:"2'@cb6c9-%#-0_-2X",tai:"0+27>h>yB8BeD]GeLjdIl[nSpfw^-&/-)E-+7-/6-2$",lan:"17212Q4/8K8i9x;+I2F7I@sAHM9N?R1Z@[`l1~u-)S-*B-*v-0s-97",long:"!p$a%n&=(R(S,u.!.6/;1*162N=P>'?6E'[,A6;9l;1;;-&@-&C-&U-'b-(W-)M-)c-*@-*d-+T-.9-0m-5=-5_-7.-76-7[",shou:"6.9h@yC2uA-(_-:s",ran:"7v>ZDZIFOEOYTST`Tz-,A-,K",gang:"%.&q/{639!:N:W:x>Ep+s)ttwe",gua:"506}:z;%>xU^|cnedr#rFxM-&'-&1-*9-3k-6c",zui:"#G)C+15&8d;$KjRdXHi]nInqo!s$s8",qia:"%{'I?1HyU4dUnU-!{-+z",mei:"!L!_#)#a({)]+X0h3p;I;T?S?r@PE&FfI@QGTZdMg0mOnlrKtUtZyMyQ~N-#^-.>-.F-5(-7(-8V-8h",zhun:"+$,56(>UT8YAZ{_Pj.",du:"#K#b*f.T.^1,>DCsFBR&SZSmUyWqZd^$^D_E`3b%bNc)mMo(sDs|v}yL{!{^-!Y-#V-#s-#u-*E-,,-8]-8k",kai:"II`7gysvtbt{vCxGxvy@z<{({U-&;",hua:"%;&K'B3S8/BWD9D:GgIKK[MzR#XKZ&Ze[4[>]A]o_&`0p(p)rbsdunxN-*]-+<-5m-8=",bie:"FTNFObRmVuf6-19-2l-8|-:[",pao:"%e(@(O,!?|H>M=TeTfV>dDdTgfq/x.-!N-!o-7Q-7S-7|",geng:"56575d6m7,9Q;j;uAbArG?HYM3PfQ4Q[SRi_i`l6v|z$-#0-,k-0F",pou:"0$UO",tuan:"1H4'V8a%u<-5V-6#",zuan:"1B2Y808N8U8e:Kb3fjftq)vxw?w~",keng:"%t&3&RZOr>t1uOxg|&",gao:"#R#g)4)6)e*m+N+O/v0~3i7E:5;O;TA'B,GILrMHZ[_:m+ryu#xny]-#o-'_-,4-,5-5R-5v-93",lang:"&7*n/dC(F{IXJ.JHPOQlZEg%lzl~m.rLu&xzz^{]-)h",weng:"#q:b;}=rJ0L(Qstg-56-7,-9_",tao:")?58617A7N9W9kG|PoUhX{Yn[{^MdwhXjPjenzs+|r-!k-!t-#@-#l-#|-&w-'d-'y-)P-)x-9/",nao:"%z&q'*?a@&@ZAkP6R~YZ]Ju|x@zJ{O-.'",zang:";S?_AmAyB$I,K@M#abambLbUb}rC-)A-++-,.",suan:"(z.b/m0;1BI^nn",nian:"':*5*P1Y3*C/K6evf5f[h=iCiS-/4-0;-1x-2K-4%-8B",shuai:"7>:4RNTH",mang:"!5!6&<&D.ZCvEXEiG4G5M_OvRaSAlDp.rsx:-)g",rou:"*!2w3X>3?l@aHdQC]tekhEt$-#2-#f-*7-0R-4t",cen:"+W.m1A",shuang:"(V7;CPuh}z~b-*M-*y-+^-5c-6A-7B",po:"%g%i/70I3'7i<,IlK,jLn%n[o1oKotq9uswMwz|=-$K-%a-)7-,N-.E",a:"@@s@x}|:",tun:"AYAeC~OlVL`G`IgJ~Z-&h-(0-.j-1q-8J",hang:".k/T5*9HBiDHOAT#UAa9j3lJ-$C-%]-.i",shun:"!x$&$1$9BZKo-$:-%S-,g",ne:"!vY6^]",chuo:"'j0^6?8&9bd!e'e`Q`b`va/hpj9k3l/lsn9tCvSyJy{{:{r}i}{-*|-,|-/n-0A-0K-2>-3?-4+-7<",ken:"&#>8>Y>fUFV$`S`wsh-:?-:E",chuai:"A0ACeb",pa:"/bm|roxk-.6-1K",nin:"?[",kun:"#7&H);*s+*5oGEPpUEUJUgV.`wo%sCy*z]zj{Y-)w-,<-,=-,D-0/-2G-4^-5'-6w",qun:"0<;_;`UVU^e.k&-7U",ri:"TMp/p;pd-)%-+(",lve:"+4rgrlxr",zhui:"&U((.h66729r:'@C@|[!b>c6j_o#s>sQvdy1})}Y-)s-+J-4Z",sao:"$O7m8<:A:HAdR4-&<-*#-*I-+Q-,:-0l-1R-2a",en:"J!",zou:"0&6GG=[)_CcNcOlem@mcn.|h-*H-+1-/w-06-2E-83-:.-:7-:n",nv:"2h=TSvSxp8wW",nuan:"-'M",shuo:"$m&+'$0cIvZaZc_>qttmv~x*",niu:"4H9.FxpTwq-!`",rao:"+i8)9FF,KdVvk}}B-'v-(>",niang:"nuoRoZ",shui:"#I)7*q*z@1U[ZaZcZg_>_KzG",nve:"&ONJ",niao:"@%E>K1T^UGVO-2{-6H",kuan:",s,tAqw(-,&-,2",cuan:",',Q,s,t,z1)1[fLfsrZw;yv",te:"?vRgr{xe",zen:"]V_y",zei:"S;a_bv-0M-1Q-2+",zhua:"2(AU-,Y",shuan:"5<@]z3{?",zhuai:"#1dmi'",nou:";v=,tfv;",shai:"/Z121J1e2[[K",sen:"Ve",run:"$1AOz@zQ{F",ei:"ZH_@",gei:"5C9J",miu:"7n:@]+_w",neng:"?LR'",fiao:"WL",shei:"Zg",zhei:"j:",nun:"-84"},m:{yi:"-:~-:<-:;-:4-:3-:#-:!-9~-9T-92-8u-8R-8N-8I-8+-8(-7O-7M-74-6l-6c-6L-5z-5)-40-2U-2Q-2>-11-0o-/_-..-,o-,B-,3-+q-+[-+<-)X-(o-(5-'w-'k-'=-'#-&6-$'-!?~=}E}1|x{Zz|zzxix6x.x%wKw,v%uPs_rurorEr8r)pppdpXojoioVnxn_,^g]|]{]`]/[!Z=Y5XVVTTgT_T7T1SxSsR~RyR;QwQ0Q!PDP6NbN^N,MZMSLXLIL6L$J9I}IUIIHMG?EaEHE4D!CwCFBkBTBEB9B5@2?Y?K?I>K>H>'=a=R;m:~:48c8!7,5g4q3&2}2Y1j1f1`1M1/1'0t.O.K,_,,*x*f(c'G&.&&%b%Y%G%$$b$6$/#x#T!9",ding:"-:}-8q-)?-%!vipfkGiydzY2Ik6u+B&^&[%_",zheng:"-:}-9O-7L-0#{1{,yjuvsRm*lNlIi;eheZe8e4e3d/`x_v]3[+ZSY8Y2XlVFTYT#Q1C@A!4W3w07.),]%*#C",kao:"-:|n{k][#TbL>>R3p/,",qiao:"-:|-:(-6A-5v-4=-3(-2[-.@-,2-$H-$5-!q-!=y/y$xkx4rSm+m!k]k%j:iSi(hqbvaT_wVuV6V$T%KgGaF^FKFGEpDSBCBBB;8<2b1C1>.}#e",yu:"-:|-:p-9^-9P-9J-9H-80-7t-75-6'-5g-5b-5H-4U-3F-2l-20-1F-+K-)O-)+-(J-%a-$p-$K-$9-!7}]}W}5{7zizNzEvyvwv9v3tytjtetcsqsos@rsq|pyp+p%oQn6m%l8kyklk8jfgvguf%eGdWbtb(aLaKa:`1_1^:]e]d]KZOZ!YmXiTDS`SUS7RpQyNvLAKsJKJJJ;IAH|HmHVDVD:D*D#D!CrC[CDC,B*@K=Q<><<<1;h;_:v9G908=7M7I7A535#2{2R1b1:1(0;/q.(.&,1+G+9+7)n)h)F))(+&*%!$M$D$=#V!A!0",qi:"-:{-:r-9{-9E-9;-99-82-8$-5f-5(-3D-2{-1:-0G-.j-(Y-(A-(.-'v-'C-&%-%m-%I-%F-%E-%:-$D-#N-!Z-!B}$zvyHwbw;w1u~t[tFn;n3n$m~l^kkiBg/dpdTcKbJ4GyGJEW8l1T",xia:"-:y-:s-9u-6I-5e-3w-+T-*+-(v-'m-%n-!!}({Mwtwpm/logkeB_3YST)P~M-1A-/j-/i-*P-*J-(^-&C-&9-$k}[{Xtrrbp,n8lJl%dqbm_c_L]cZ(VLV%T]R_R^QRQQPOK9IJCH@l@^@?=k=Z=?y>]=x<`;t;(9.9(857&6{6d5m3D/;.j+?(>(!&8%{%t%4$X$,#H#>#'!w",bu:"-:q-7F-,M-*w-*t-(d-'K-&D{B{?{6zPtOm#izh'gfd,bi[rY}Y{YfQHM,C>C;C:'=",fou:"-:q-(cvCBj4H",mian:"-:o-42-1d-0w-,S-,H-$`tktQsZqpq#aDNWJ^E=D~@p?|;k;,7G/o",gai:"-:n-9w-6e-+u-+t|'uYm@dy^AW%T`QYNaHZGNGM:M8|'{&6!,",chou:"-:m-:l-8m-5_-4=-2A-(m~{t/r!iKhld$b3aS_%[_Y%W~N?N=LJJkI|E?B_0h/O.s.p&3&!%l#v!m",zhuan:"-:k-7o-3G-3+-2y-.I-)n-%+~EzRyPreq;<`,E%g#(",ju:"-:j-:?-9m-7n-62-5`-5S-4x-4j-2l-19-0%-.Z-.:-,.-+n-)H-'d-$|{/ztx_uct_tNt$o{nvnqnOnMmqmil`jYj9j7g+e%d:-(h-(c-%5-!.-!,~|~X}2|L{2xhvCs7*6e4n2x.Q.G,n)Q'(%k%h%@$p#R!U",shi:"-:h-:g-9q-9l-9N-9M-8t-8_-7R-6k-6]-1X-0m-,^-,:-+_-+6-++-*>-);-()-'{-',-%.-#t-#7-!W-!>{>z|y{xn=}:{:s:W:5:'9v7C7?6n4=4%28.3.+.#,0)$&3$}",qiu:"-:f-:^-8m-6#-)u-)9-&+~*|FyTsQl4j2j1cFc&]rWkO%KIHeF8BpAn@s@b?J=o;^:l:k:j2D/T.k+D*'([!P!(",bing:"-:e-:W-8h-8b-6u-5B-4T-3Y-1;-0a-0[{mp1ngnZhbhah&cm[vY,W5R0QpN/MQLQLLJnJbGXE:@~4E)r%,",ye:"-:d-9z-9.-9&-4e-2_-0U-)7-(u-'%-$W-#,-!]{:zIxqxdwgoVm$jxjw[hZzZ!YyY;X:X6UhUcUUUSURQUPxP@P?P,OmOkMYMXIQHsHpCXBh>i-,u-,G-,/-'I|/{)y&u^tXr*mSm>lKl?eNc3_H^LZhXL^>J=,7[6?1e=_=G<8:?7f7d6/05/f*6*2)c%x!'",diu:"-:_-:[",liang:"-:]-:Y-9)-5x-5[-5>-5%-1G-0B-&J-%y-%7-$Ly2bWY7Q*KJIwG%~n}bvRuAq=pZo8o6m1lyh[hZh(d]d$c|cqbY`,^xXkTaS4OVM;LAKGK=H{GFD}DJ@8@(?V?>=g;C:b976B/j/i/O.b.D,?,>+Z+Q&g&d%O%!",yan:"-:X-9d-5]-4]-4O-3;-1u-1Z-1Y-.a-.[-+:-*O-*F-*/-*$-){-)z-'%-&=-&2-%'-$N-$G-!L~~~a~Q~5{GzAydy7xLx@wMw>vPv>uFu@titfrgr?r9qwqfqWpKmhlEl'kuktk0jUjKjJjIjGgM-9<-9:-7m-5K-0W-.$-*H-*G-*A-*?-(s-(H-&n-&'-%;}L}@}9{j{5zbxTuBu3t%q2n,lVlUhKh?[`[ZZZY:XLN'KlIsIFA0A,}>k:c9s84684l0$/w&C&/&,!*",zhong:"-:P-8A-83-7x-4Z-0j-/C-$Tz8ysx$vMvHs^o)i)eqe0dddYS`MKC2@=?G4w2k.T$F!>",jie:"-:N-8i-8<-5$-4~-4W-4!-3j-2]-/@-/?-/)-,r-,a-*j-*i-(e-&c-%d-%H-$m-$8-#q~zzKz7vevOuit>sasVsCs(qSpIoJnpnln*m|lCkvkbjrjqjgjbhihIeEbr^S^;]_[,YZY+X{XwX?W_UmUOUJS9RINXNJL0KxKoI~I1HqHgHfH8EOB,>j>;:z9b882?/'.6+0)H)8&K&J%g%]%M%##D!~",feng:"-:M-8:-5L-4N-2Y-0]-0&-0!-/{-/y-%p{Rz9z5w}w9v7odoYl}l|l5W4MkKPI.E[?m?h=S;Y;#:R8e5Z4i3V3*2g1h/1,O)u%C$B",guan:"-:L-58-1=-0l-*vphb@b?af`LXqW*SRJ+G*D(B2>wRWQkP#L)?N>=0X.X.U",chuan:"-:K-7o-3G-2t-.K-$]}Tz3jFjDPMIRIDCbA?@i,H+<)7",chan:"-:J-91-2y-2R-1~-1/-/:-.k-.J-.*-*~-%$-$F-!n~P~@xBszr>q3l>kJkCkBjXh{hpgWdu^r^lXsX+W;VqVhU#S9RYJsJXDEB#=v:^967o7n71655d5B2V1I,#&v&u",lin:"-:I-9U-2g-0e-00-0/-)v-(l-%PxDlbk,gIgHc=bob)_=_6[MVGS?Q+PGN!FIEmEDQ>L#JuJfJ3J,IoGcDh@j=|=h.h)e)N",zhu:"-:G-:B-9]-7d-7G-7?-6Z-.&-,t-,n-#T-!z~4|=xpx3qVq!ploNnWnIl*i>[[[WT&StS;OqO1O0O.N>M#LzLFGWFmF,DhDbD^D0BH?&>Q;b7t7Z6s5x5>4V4A3y2^2@1+0x0?,K*K%B$J",ba:"-:F-8l-7`-1E-)^-)@-(b-&M-&I|_{[x>wCv0mumIj,fq]o]I]6]#[GZ)O+M'D,5?4R0+.m+@%N#/#!",dan:"-:D-8~-7{-7H-2r-2J-/V-,,-+G-*~-*{-'f-&2-%C-%B-$v-$F-!m-!b~[vTsjiofTfOfEb$aga>_q_P]4[VXuV@V?UjRiM/BeBSA*@)>rc>C=n=$;S;N;0:N:08?837i6R6G5|4]4>4$2]2O2F1]0u02/$.r,[,P,I*~)h);'f&H%!$N#X#U",jing:"-:A-9C-9+-9'-5r-5%-3A-2O-1N-0K-0C-/9-.~-,y-,k-,[|i|g|cyIvQt:t8t+pojAh|fdfZeeeWb/___NUoT+S&S%Q:Q3PIP0KZJpEvBsBn@I@H>m>%=><87]6#,r,'(^(B(<%($u",li:"-:@-6_-5u-5k-5Z-3s-2&-1z-08-/Q-/=-.o-.G-.'-.%-,l-,&-*L-*I-*:-*.-*!-)|-)Z-)X-(z-(2-&U-&0-%g-$C~g~`~A~>|`yrxEu+tat#rjqYq,nAmkm5m.lzjag@b]bXbRbB`l^&]q]gWYU@U3TsTlSpP_P>P%O&NmN^MqMSLnLcLYLUK!JoJdJMG1ECDuDjD_D8D.C/C+?k?[?Z=Y=U=/:/8z7@6C6$5H0a0U/>/=/#.z,~,u*V*$)z(t(_'x'u'l'W%R%F$l#P#A!Y",pie:"-:>rVV]V[PHAD8>",fu:"-:=-9c-8[-8#-7z-73-5y-5m-5j-5U-46-3v-0d-/|-/J-.R-+h-(=-(6-'[-'S-&E-!s|<|!{]wvwWvVvRuru'tDt,sbr5qJq/pmp3oWmgmFi~ifi7hzh;fwfkeje?c{ct^w]l]J]&]%[Y[QZ+YfV7S}SLS)ORN+M]MGM)M'L1KWJ2IYIPHKA:>~>Y=W-8%-6;-5|-4k-2k-2:-1q-.T-,|-,C-+y-+/-*V-(U-(T-(J-(?-(+-&)-%K-#v}4|^zLykxvvxv4u%tjthsurTownkn9n+lmkzk_j6hFgQfudbd`d@c'b[bZbKat_]^[]e]d]]Z4WGTTS7RoROQENvNtNoM&K#FLCVC=B3@[@Z@S?{>T>*=V;^:,874(3C322*1w/V/A+3*4*3(|(P')$h",tuo:"-:6-8X-77-6h-6.-'a-'G-%[-%$|Sz;v8sNrRmck'gzet]i]`[H[F[EZMYuV1NgN^MTM8ITI+GbFBF0AvA_@d?`?_?^-)C-(W-'v-'8|||{|T|:z~z{yFy@x$v%uNtsrGp&m7l0j+iridiahyh5h3ggf5eYeKe4e3dmdUcU`6`*_$^{^E]Y]F]E[u[HZtZpZ]Y{XvWpWVW2V{VvVtUKUJU>TjSMRwRgQ`Q/NOMyMcM2LqLhL6K~K7JjIuI]I*H+GHF_D|DnCAC6BiAJ@t@O@N?v?T?3>V>34`1_/9,x,^(R'w'[&3%c%;%7${$z$k$E",zha:"-:0-48-.N-.=-*C-(w-'X-'?-&K-$j-$O-$Aw/pNd6]s[m[XZdX4WIW#O2M7M1M0LvLlI?H4Fv;X:67u5#4@2N/p&d%.!M!H",hu:"-:/-:'-9j-9F-5E-0Z-+U-+L-'h-'W-%n-%Z-$_-$4-$1-#>-#2~k}v|;x1x0x,uGt4sEr]r[oxm[iphxfxfgdFd*d)cGa{^V^6^4^3^/^.^,^']y]9[xWWW$SXRFR-'$-&N-%z-#p-!}uSr`ljk/cY_f_eYtVZO:L=G5F!=O='8%7a3{/^./*<$f#c",yin:"-:+-7}-6^-0t-0;-*c-(j-(V-%o-$d-!T-!+~l~+~$}`}$|&{w{YzXz:w_u=t0t&p:n}lnlLlfya@`i`B_u_t_0SMO[L:KKEkE@E1DKCwC_BYBGA5>l>d>U<5;~:}:i9}9V6^6]4).],|,j*I(U$7#k#_#:",ping:"-:*-5i-0]-/z-/s-'u|Qz1u/ngnZmTi[iJi4heh&`0_zMfEU?6>6=A[KMbLw",sheng:"-:%-:$-4H-.X-.Q-,?-+0-(9}=x{x7u*k}_VS[RGQJQIOeMuIyG~E{BzBF?%;k;@:q7G2u/M.N*h)i&y&s&`!'",hao:"-:!-65-3k-2)-)6-'j-&_-#k-!t-!Y-!#~xxRvacOblRDR'QBPePaPWP7J!A~Ao=]-'6-&/-%]-$X-$:-!p-![~T~8y?xWwnw'tgs;rCr@nsncn`nRnHkgk9jpj`jZiqiOeceOe9djd_dEcscgcZcKc/bqbeb8ay`r`p_s_r^V^6^4^3]_]O]HW%R:QKQ9Q6PEOzNON)MdLZKSIdIGG{GUFkFRE|EjCzCuCmCMCJA4@e>X>S=f<[;i:+9h9)8p8/8,7N3e3R3K343&2Y2+2)2%1q1P1O1N0}0P/E/?/*.{.t.#+p*r)|(#'h$1!k",xiang:"-9x-9,-9(-6}-3*-1}-,4-,$-*0-(x-&r-%L~Ww~uXk5j)h7gqe'abQXP5LWH^F1DH;!8:*E'g'T",shu:"-9s-61-5g-55-54-1|-1F-)Y-'3yNyGu[tGq4oNoCnWnIg}gxdWchcgcIbt^X].Z.Z#Y>WBU9T'S|PvPtP*OhO1O0O.N[NBMtL`JtFuFYEpBuBKAaA`?c&=L/3,E,B*n*d&f%0$8",mao:"-9k-1,-1(-0|-0z-*dzLwksLmOkzi?a=_?^(S/QvPrN4M@I'B!AcAW?9;F/Y/#,J)E#$",mai:"-9i-7I-,{-,*-*}-#${Kx5",luan:"-9h-9Y-9V-*^}C}Bvmu0qXq:q$m)jOZ[TvOuL2D69K5J59#4#3",ru:"-9f-6K-2C-1K-(N-#{-!$vkv[s7qyq)jciX]kZgUTP+NzL(E0@W>7;Q9u6b+^",xue:"-9e-.x-(Q-!9|Bxbq>q+mmmMjzf=ckT/SlKvFc?!>u9j7>5y1&.B%L%<",sha:"-9b-4c-3?-2H-/,-.t-*+-%t-%^-%H-%4-$R-$0iCgkZEZDW$<%81806O5S4B2Z/J/B/2+%!l",suo:"-9_-9=-3]-&8-%x-$&-#j-#gu&s(as^$ZEZDW:PjKaJz:E9y+|)w)v)!(]",gan:"-9Z-8S-7J-5&-0=-/u-'c|Ro'o%o#o!hfh_dqa5U~T]T6R_NuMDKLH6FNEd@??;<:8f7_7/55+;*w'#%?!T",gui:"-9X-6q-3{-/(-/&-.7-.5-+Q-+J-+I-+F-*%}3{zv2u;s?rhrIp|k$jpj`iLhLh,gmf;cMVxVVTiThRCQ2O%M9L.KeIeI`GTGAG_k_Z^b]7Z`Y~Y9V^V;TnSgKTF7F6D[CvAG@:?!5P2|1d1>0S0G000/+z+M+)+'*](n(G%L$3",liao:"-9R-2|-!rrLovomo[>90%*F",chu:"-9K-5N-3d-3R-2K-2!-0$-/m-/Y-/I-,t-*)-!o{$x!s>n5hjgXcj`g_SWxW$VoTNS=NEIjI&HoHQF|E}EsESE#DsDdCzCG?@9r9q6x4N/+*+(,&;",kui:"-9I-3{-/4-+I-+F-$U-$;-!xwow4s/rBo*mQjVjHb]a.a,_y^BXgQdPyI2I0E&BV:S7x2l.q!/",yun:"-9G-7r-3q-1p-+}-+x-(0-&^-$^}xwEvsvEqOb}aca4a)`c]2[yRNQTP}MwHWF@BmBaA&A%@0=3=!:!7W2h2:202(2$1b.Y+(&P",sui:"-9A-5#-&F-#U{3wytvr1nwn4kpRqEWC1C0Ab=H9[7+6z5}2C1g0~(/'p",gen:"-9@-9?-&pX=X'L7",xie:"-9=-9!-7[-4J-4A-4/-39-1{-0s-0c-,w-,+-+'-+!-*k-*Z-)7-$(-!C~e{ry_wrw8w1u)sOq]opnenVnNm$jrgJeFcT`z`p_BZ~ZWZ8X9WnWMV*UiUFT}SWRePXMZLIK@JwI,HOH?H/FlC]?K>p>A;P9h7B695{5!4Q4P3b3E2,0w0s0O,C+k+e)8",zhai:"-9;-6B-4f-4*-3E-*K-*C-&c~zw{p{os[u[2YxW/UwU>SiSfH#EL#t",tou:"-98-4'-4&{$wNv'sqs@aK]*T0SQ",wang:"-97-8v-87-1JvYo7o1o0o/eoeiefe[dldJa}]>RTQ(OEODO=N1JD@J6;+E",kang:"-96-8)-+X}|rmkKg|dG`8]f](G=8_4d.a",da:"-95-.N-+f-'f-'R-&m-#~-!J{hxrw[v*d'ag_q]nWZVJ@f?}:<4Y0p&@&4$#",jiao:"-94-6n-6D-2q-2j-2I-.B-.6-,6-)B-(<-$H-#M-#K-#?-#(-!^-!=~IuUu1r=r6qcm+m(k1k%k!e.e+cJbl_~_i_KZjZTZ5X&W9VlVCV(ToTJT?T,SwSuSgSSQbPgP2LOIpG!>!:l:k9Y8w8<7b5[5C443,2b1>1*.9+l*X(5#e!v!^!V",hai:"-93-'V-'0-$#-#h~ey]vOq;pL[!A3=N3[,C",heng:"-90-&B-%QuJcXcLbaVKL/FiF&<|42*B",peng:"-90-5,-3J-.F-+o-!~zgyqyYfUe|cyc+`%[tZ?Z6YkXpWvW4OTKCJLIlIWGGFn?6t}sxk~hVhJh)gBg?g;dzZT8T.O)O(NfN^MrMTMSM&KuIRAh?`?^&D$i",men:"-8{-8G-53d8bcbCaz_9_&]VYgS^PZIh@>3=1,+((W",ren:"-8z-8y-8s-8U-8F-88-/d-/cx;vSu`n:n2d|dwdv]XO,NiLPLMK6J7/]",shen:"-8t-7V-6i-6/-5d-1Q-)l-)k-)j-)i-(V-'i-&}z^u|u>ttsys.qmp_pHorn7lui(fp`t`b]b]4WPTFR4P9P3M:J7J(IHHRA9@+=D<0n:(9U7C5[!e",jin:"-8o-8j-8d-7}-6<-35-2^-2=-01-,y-,k-,[-*X-*'-%o-!F~y{Fzkz6yE=q=M:I9$6~6g3h2M0i*Y)y)K(z(d(@(*",pu:"-8n-3$-+k-!S}^}O}<{BzPy(]p[rY{V0UvTeTdQ;PiPPP&O*M,FZE_AS=`:17k6T614r3a+v(C$m",reng:"-8g]m",zong:"-8f-5:-4y-43-3KzFpikxkrkNeJcdaraVY^XXX(W&Q|O>MxJQIKG28L8D8#3+1n1c0{,b,R%E#w",fo:"-8e-8;-73|IJl",lun:"-8c-7i-6S-4u}l}Y{.t*lSlRb9[{YMJa?j<6:3",cang:"-8a-89-7h-5;-3e-07-+OkeDW<];o:Y9g9_8a7;/G+J(!&Y&7",zai:"-8`-3V-2G-1!-&v}8pOl.]j]>L3>f;>:.4|4{3~&Y&7",ta:"-8^-6E-3^-#~-!&~Kz$yyy6vep}lc[HZXW`V&HCG}EqA[?}u.t`tZs~r~rOrNr9q`pUo;o:nBmylxlhjthhgCfhf+dI_a_X_R_'ZPYQXsWnWiVhVXVSU6U'QlQNPKNFMhGiFFEtDRC~ArA@>S=E=7:]:C7Q6*574*0l.=,s,G+f+c+U+O*|*s*T*,'3$c#b#Z",cha:"-8X-6Q-4D-/,-.t-)e-$A-$$~s{yvbu?o|m}kqj3]a]OZ7Z.XZX5WJW1NsM0LvK?I?GjEB@k,<%s",hong:"-8W-)w-).-(X-(K-(;-&{-%}-$)~i{kvXu6pqpjn=j[fvfBa*``XeVNQ[@E?y?<>@=b=S;J;B:R8J7U5(3|31+>+4'T",tong:"-8V-7/-6R-4Z-2h-,/-(}-&|-#Z}o|/mNm>m3h:f(c%`P`)Z1Q]PwwuqtKqdmdmVlQjhekYffd9]bDaxT:RBQtPcIiATX7s5L",fan:"-8E-0)-0(-0'-,1-+R-)a-!hy%v_tDr;r:iwhwdi_h]l[ARvRtNpMLKXJrJAG,FD@w@g?4955t5_3n2E15.l.[(A&O&/&,!.",miao:"-8D-,m-)v-$?vDscrPh>gtgSX^NP<#;A+K",yang:"-8C-7<-6{-3[-15-,f-,@-*g-'Z|J{xwTukswmrl6l3e`d4cEaA`m^}]T[lXRUz>`8N6A4y4D4.2B+6*O)4%Q$|$@#F",ang:"-8C-*gn.RLQoN0!5",wo:"-8?-4s-4L-*l-(/-'&-%q-$atCtBsfi8^TZYYbYSXKV#SRN8I>@1=#YqXmXjX7WmV!UGU'R{PpO_MoM(LEK3JgIfIJICI)HEG]FhFCEKE2DLC&BMBLA]>a>$OYOSN.K&J*J)F)A>@66}5i4v391=16+{+.",bin:"-86-3S-2EpAe}W?UNShJnImGXE:B^BO@r9I6q6Q6M6,+.(j((",di:"-85-7@-5a-4F-3:-*D-'}-&t-&$-%R-%&-#O-!(}0|h|d|@{Q{L{8zMyFy;x|w?tqsmrimUkIjoi`hBg:fofjeld#`7]g[g[=YFX]XGW2TLT!R[NfN(MrM3KAK:JCHiG7AI=g<};T9f9=3F/K.V+=*5'1%c##",fang:"-84-4}-+^|r{Qzcv5er^%TZS:S(RER6N/@<@'8*4c1@/!+m",wen:"-8,-/X-(M-(C-(&-%Jy`vNf)dfde]:X.WRSmQsKNHWH)C$B`@>;z;R:*4s+1*8(}(&$;$.",xin:"-8*-7f-5d-5G-!3-!0~%vSCR9N@N%D$C^4a3$",ai:"-8&-2W-09-)h-'!-&q-&5-%Y-$'-#]-#E-!;{SzIyfxUtgtUrxr'kaa9_7_,ZNYaT&T$QqP^P.CxClB.:%9t6U3.03(k(;#]!s!j!]",xiu:"-7~-5c-5V-''-$/~|p@mfmPh2N~G09~9F8I4+*P*#(N",xu:"-7~-7Y-6Y-6!-49-0x-,F-,E-*Y-)T-)+-'p-$e-$Q-#7-!o-!W}7{Wy,x+v&uxspsArFhHeXckcKc:b(`g^YY4XMTKT@RbRZR!QcP{O^OOLGI9GfC|CtCiCOCKBw@5@4>?=t<>;+;):P9r998W8B433W2H0m+t*N*?&;%T",tang:"-7y-5+-4M-3l-3U-1v-.2-&.-${-#.|XzpyukdilaA^cW^V~OsJFH%F{F<@P/:f8U6y6Y6+525127+_#@",hui:"-7u-7#-2u-1{-+H-+.-'/-&j-$[-#=-!f-!U-!D~p~,~&}u}Fz]xztEsgr7q]onn?n>i*gmg7g5f6f4f3e,e*cDcCcVEQSQCP|PQO]KeIOI3GRF4EiEZEQDqBVB>B=B7@n?D>h>g=y;+:S9X897x796y6:5,5)3t3q3k2h0y0q+h*9)G(=(2$~$)",kuai:"-7u-6@-2M-/p-&f-!8}:|ez&y'jEgMdXUkRrO]Cq=y79.*+g(2",cui:"-7s-5?-3N-04-%I-%>y8lYlWkhdSbE`TV|IxH*GHAg<48P6a331g)p(b%I$L!d",che:"-7n-5`-4I-,%-'y-&*|?vln|nGene/]QY.XcVsV>V<7`3r3b3E0C",chen:"-7h-4_-3e-2'-#|~ZyWyAw]pGoBdRa>[aY]THS~QAP$L[K_K'J(HUG3D]@+@*2n05)l%P$?$$",xun:"-7g-6O-4.-,Q-,A-,)-,(-+5-'3-!k-!P~u|y{=yixYxAw#uHqKq9o`oOmEj@j&j#g=ebe>c]`uXUTfRcP(NqL_KbF`BvB@Au@Y>5=r=l8+7y6V583O2h1{1D130j0Y0Q.5+b*H(L&T",chi:"-7c-7M-6b-6P-5E-3@-,W-,K-+_-*]-)<-)3-))-(:-&W-$z-$I-#l-!g-!=|@|)yLw/vBs6n|fsf$eweve6cBc9`X`7_|_2]`[f[!ZvZ/W+TxTCSNNcMPM3G1ChC6C4BX@T?Y;:8g4~4;3U1K.O'A$Y$U$E$2#G",xuan:"-7b-2N-/.-)o-)'-'(-$Y-$Mz)wsv&sWrqr.p]f[cobMaQaI_I^nX_SyS'RAR,QeQ$Q#PNK@HxHwEf?#;I8d4M3x2e+L*s*)*&)B(Z'~%/#E#<",nu:"-7a-3r-,svjq?ilfed1Wo",bai:"-7`-6z-(1-&:hJ[?[>ZwYeX}WAUfUCTAMFLN,n'D#*#)",gu:"-7_-3T-2e-0F-)I-'s-'N-&<-&;-%G-#y-#@}gzfx#uhrUq@o&lXl=j5j4d*`~]_]9TSNaM.K-27-+8-(%|Nzsznv/v)t'Y'R$*#[",zhou:"-7W-6M-2X-0{-'|-'z-'Q-'5-%X-$i-!G~{v.t/pgjCiceIY%QnQLQ8)<3;[5U3G2o0D(K(8#9",ci:"-7T-7B-6m-47-17-/+-/'-'t-'r-%@|*q}j3h<`hN|MILHD&C??56Z*p*k'E'6%=!{",beng:"-7S-#w-#+{R{#zgyXw!lBkYX0>v)d)[',&k&j$a",ga:"-7Q-'M-#A-#/-!4wIwDoEo>o.RaOM+C",dian:"-7K-7:-3m-18-**~M|P{lyBxfw6v~t6t!kXj]jNjMh@ao^!YOTrTWT9I_GqG_FPF5B?-(7-%`ylybwYvit=nodgc2b:Y#WPQ?LSB{?U-72-66-4E-'L-&,-#!|lmtmsj;h0d6YTV4R%M7M&)e",ti:"-7;-5N-5'-4R-/!-.n-*;-%H-$y-$3~w~rw?smsPnmnYnVl2foeCe6bnbjb#b!aU^)ZHY*X]XGU>OaONL$JxJCCQB]=0;T8O*5)A'r",zhan:"-7:-4>-2y-*s-!IrQnamRl>l)kCkBk.j|d+b0^M^?^5W|SJSGS0RsMjLiL-&t-%H-$j{szSmDl/kIi3c}cPa`^IZbX:QwP!M2HsGUBcAK?I0*/}/n'_&#%q%j%i",gou:"-71-3p-0y-+z-)H-'p-%W|C{uwdwcuTs0mnfM[CX%VcN6M^Gm?q:925.C*o%2",kou:"-71-0f-.C-,g-)J-)DpCp8fId3]^[|VpTV9@",ning:"-70-6>-4a-29-0.-'H-!)r%q!p2p)p'p!ot[4UMM5F/E5?17J6k.<+a&i",yong:"-7*-5t-3M-,U-,T-'T-$t-$+-!:{Oz!yCxcrlkUg{gAe{ceb{bzapaC`w`n`:[6XTU}M4LaGQ@}>x=9:p947:5T/{/i&p&l%)#S#8",wa:"-7)-/n-,e-(/-'P-'&-&x-%h-%A-#y-#nu5tbt3sGnCije[ZaWUTq>.:;8h'V'D'>&A",ka:"-7&-*r-'O-'M-'4-$u{g",bao:"-7%-5h-21-/>-.e-.]-,!-+{-+s~ozPzOz@sBqBpcpMp$ohoee&d:[w[kPPP1P&M]614J2<0_.u.h*G",huai:"-7#-',|mx^xIe_dC_:^oGhDX<25z",ming:"-6x-0g-06-(|-'guEs&`aXxR@PhOFH<>0:7,8",hen:"-6s-&p-!3eac6[0.:$y",quan:"-6p-1H-/.-.#-,5-,#-%%}X}Q{4w5u:t;q[m?jRf`c0b_b%['Y`WKNxJ:I[H_GLFjD>?F>F:a5841/I/H/7.o.n.m.O)2&I%'",tiao:"-6o-%Xr#pWmjmWh4cRZfSQRdQjOLO'NYK.Fo",xing:"-6j-5.-1<-/U-&g|0{auft{t5qljAh`f*cxb>aZUYR/P4Nl>ZG<9;H9<8o6o6l5n5G1z0B,a+T'h",an:"-6W-5J-4<-2D-*P-*J-')-%e-$x{b{&z_sYpwn@n8mXm:hXg~ZnXNQ.PnL'L&A1>M.g*w$V",lu:"-6V-33-1C-.H-,N-,<-*q-*o-!N~q~_};|G|5yVyUxMtVmChGgZgFf9f8^7XzW)V)UzUAU/O{MpLeJ#G&FyEuDvDaARAM>sb._,A$C",jiong:"-69-3'-1.-1$-0}}z|K{;]~]}?M=J7e4t4I3c2T2S1W1.",tui:"-6.-6(-3&y'tmo$ftfodrY(F>24",nan:"-6+-*|-$r~'~#v=tzstrb^e[sXfPqN*M6H}:d29&a&?",xiao:"-6*-5v-5R-3a-.x-,d-'j-'1-&l-&P-$}-$1-#D-#?-#&-!|-!v~c~J~CuUtHqGpPpJoKlGh/fFcJ_iX;V:TPT/SoSnQVQ'P;MiMaLOK+DOCYCLBAB4>B===8M=5;9*7)`$V$O!r",guang:"-5~-2}-1h-'@{~uIhXhTgOZsVKL+>28)5/4b4_4^3s.d+Y*U",ku:"-5}-/3-&Q-$6~R}PzrhDh+gN]dZiZ5OPMgL!I%3N.>$9",jun:"-5{-2T-0q-(n-(G|u{NuHollq_;Z3U5TzQPKMJH@F=l6V3G1B*1&'!Q!K!J",zu:"-5w-5?-+1-+$-&S-%rlYlAd(S#M1Ix0'*e",hun:"-5s-4o}_t9t'o9dMaz`oYDR?Q~JYJRBf=u>=4:&9z828&+F*L(F&r",lia:"-5[-5>",pai:"-5Q-&sg9eP[NY?JU?p>+;j;8/t.w,q",biao:"-5O-36-2/yJtIryi%f!VfNhLjFzEG<.9C66511o0c,k#|",fei:"-5M-.m-+M-*4-(i-%8w%vZt@t?nXh8gpgPbH]xSdQxQ%P:OPNLLxJVH5FOF)Di?Wq>O>N;y8^6F3{/(,T+P*M#y#5!Y",song:"-4q-3I-0D-)'u8pulDk^kOgydYdAb`a3a$`D_MZ#XXW0NK%J`HyEF-#*-!K~Oz%x#s{sXs9s%quqqq_q%kcj[jWhCgDexdha/_AVwV_U0U&R]R.Q:PwO?MHKpK]J{HvHdFbDMDI=_;E:U:K9d9O8K8F6j6i6N6=6&5~5o5j5M5A2w2r2_1x1)0b*:)*(y(S'i'5'%#j#;!B!;",ruan:"-4[zJxQsiVWOUE0):'}",chun:"-4Y-&7sda^RPR(PlOONDIBGrFQE(=T<,:[9N8u/6)C",ruo:"-4S-)[sskPf]Z:YUI8;y3'0^",dang:"-4M-2P-1V-/k-!1}*{fx]swpkl6kdf:aAZUUsTpKiEYD5@|8:7E5D*;(J(6'?%}",huang:"-4@-1L-/w-$PzDz.xtw&s[pEl9jBi0e@clcQa_a#`dXTQgQfPBOEHbH7D{@9:x9i8)4:2c2.1J0X+w)((E#i!}!g!Z",duan:"-4+-.Uz+s`SFS[$XOVUU8U*TwR1Q&PYKrEy6E5K't'k'c",za:"-4$-+Z-'b-'X-'2-$c-!c~B~:~5i}]s[$NyKr?r?a",lou:"-4#-38-.}-$7-#ByMu4tRo{n[kjkEg_`5X)W'HaG#:O9&8~1i'2$5#o#n",sou:"-3z-0J-)Q-)N-#z-#R-#QgsghZ#YvWlW>W0V:U`UBJ/DgCn:#,5#s",yuan:"-3u-1n-1)-0h-.z-*3-*1-)y-(0-&^-$Y-!<}{}t}Z}R}N}M}D{t{_yawlv6v(sSs:s)qhpepH0ErDk@/P>#;L9A8M.|,&&B%y%n%m",bang:"-3n{^ypiNi5h~hme|Z?YrWvS2KEJTJSH@=j/m++",shan:"-3h-3)-2R-/F-/<-.a-.E-*~-$q-$F-#H}'{Gy+y*ulubr2nDj|i(f+]zZ;Y3XuXsWaVhV?UySvQ8NrL|LlIVFSEhCI@`7|7p7O5F4B2Z211~.4*b%U%1",que:"-3f-*_-*W{Pyty$lgbNa+`KX!T8T.JBH$@j4e0|)O#q!N",nuo:"-3Q-1w-$ftxa6_#_!ZLXnWoWbWLK0HJF2Am",can:"-3P-2F-)l-)k-)j-)i-$D-#H~:r(q3amah`W`V`U_[XsVqVhO_BtBg;/784z1!0L(9",lei:"-3O-24-1t-,J-)q-#1|(z0xOx?rrU|U;G'E]DyDxD/?$>I=+JO7F5&2>1#(](7#&#%",cao:"-3L-#GnGk@`v`k`^_DVAUqOgOfG:8x",ao:"-3H-/n-*&-#X-#W|H|4xnxkv}vyvwsDs2rZmxmakAjnga`O_@]I]![DVuUeTBM*K=?>9;7M741m1^0Z,!+~(Y",cou:"-3D-0:Hl;1",chuang:"-3B-/b-/K-/5-.s-.i-.L-$T-!dhvhMd=`|W7O|;z;+:t8(+1*c)o)j)=$R!D",sai:"-2V-#b-#)-!/yod%a2XaAxAb",tai:"-2B-0_-)=}e|Mw[wXwOvzqvqCdodQdB`e[pU]SpR]MeE>@f@D@C>{:=4G4F1$*f",lan:"-2?-1@-)}-%P-!'~3|hx`xXt(qgqaqUmwkwhgb)_8_'^p[5X/UXU(TmSaS_PpLbHXDDD2D1=^9L8i7K6W5`5W5=5<46121%0n0d0I0@0>($'j",meng:"-2;-0k-,Lwaw`qEo2hnh*_._+^qXtUaP)O9K$F;EAANAF:A6h,Z+]'/&X#B!#",qiong:"-28-*fr.pza]`!K}F(3(3%2L1}*))J(G's'f",lie:"-25-0N-/O-,z-,w-,`-'<-&G{D{CuDjaj=djZeZ_YiUEL;JMA{>_=p403f2A1$0a0[.x,h,V+k+[",teng:"-2%i+9]8r1e%6%&",long:"-2#-'J-&]~^|7|6xHxGo2n=k6j_j^g.e([9U.QmOxO8LgKDGYDU>t:g9T9%5w0N*Z'n#f",rang:"-1}-,$~Nx[xC^mU$5b0K+S'X",xiong:"-1m-1j-/q-+v-+p-&zwsdLc?Sy@;>42w2r2#2!",chong:"-1l-0Y-#L{*p`oflelde0dc`+_dXT2NB6[6G5|5u$P",rui:"-1g-1e-1`-)LxFas]0M~KVF.@G)'&t",ke:"-1f-/*-.w-,]-,R-+;-)>-'o-'0-$!|Dzqx4u#p^oUmomIkvknjqc4bra6U4U0!/N//*j%>$O",tu:"-1c-1]-0H-/o-(y-&3-%?}n}c}J}I}A}?zezZyvxipvnUlskikFh.gVeVc}bsZ.YYX@W2K?EL@R=C=::r7u(i$r$>",nei:"-1I-1*-&TtvA(=w::8Q7V631r1[*a)~)%(v(?&S&>&%%r$(#d",shou:"-13-)`-)V-%l-!o{ox)x&pxo[]v]uYITcTN,",mei:"-0I~j|vz>yRv#sks]sTs4r

-+b-+(-(_-(.-&h-#%{@wGuWs}s|rJrDlaWTV}V+NAMvKfIgGKFX9a7c,7&]&+%~",bie:"-/A-/;fGe2`#M'M!$!#I",pao:"-/>-+i-'^~o|2w=hA]$[P?.4J4H3d06.M'^%A!S",geng:"-/7-&A{TzHlrh=ZIOlK4IX=X2p&M",shua:"-//-%j",cuo:"-.y-.p-*5wukWkSh!ZKY&WuV4(o$j$'",kei:"-.woU",la:"-.v-%3-$n~L|8[RXFXEWnUEU2R`MOI6DT:T0['o$A",pou:"-.l-'_-&[{]twtO]+]&Z+YGJS/<",tuan:"-.I~!}~}K}HyPy&f7`>[}XIVmGLE;;.:m8t2[,F%v%p",zuan:"-.)XOTt",keng:"-,x-([|t|kvIZCXlVgBF/C",gao:"-,Z-(I-(>wRlpWjNHGxGwGdG>E~E3Dm,)!y!t",lang:"-,V-&J-$~{Jy[r{llgiSeOIOHO;KRHHG4Cp=[3Y,z*%(s",weng:"-,@-#oyxv{kfU!Pd9o'N'&",tao:"-+m-)E-'+-%DwPwMw*r}i/fl`j[oYBWXL,JkGtE?><=)'v",cen:"-)l-)k-)j-)i{Un#kH@?=1",shuang:"-)byOqeq^`NDB>t8R5w5^0&",po:"-)8-&M-#6~]|ZvztMoZmlmZg9W]TXR+O*E%?E>q>o>D;*:J8;6F3v,9*l!`",a:"-(s-'o-%O-$0",tun:"-(k-(7-%L-!`}}|snFhNdP_mRQPFOC@x=335",hang:"-([{dwSvIj)dGS8NML/@.",shun:"-(ZHnF?",ne:"-(R-(8-(%-&T]0%a",chuo:"-(Q-&@-%=~Hu!t~t.ssqVa|^2Z}UuCClMi@i$fDf@b1`Y_4XyW6TMMzJ$I:GOD{=#gKfVfSfC^P^N^>[zWQW!VySKMlIvGkFdEJ:)8{4[1s/|/z,f,.*{(p%m",pen:"-('-$E-$=-!6CN;'6}'Q!=",pin:"-&~~Yuatnrvq{[AZ{H]@_/c+!)r",ha:"-&wvz",yo:"-&`-%c-$B",o:"-&X-$a-!H-!%",n:"-&)-#a",huan:"-%v-$Z-$Y~G}D{_zWw@w2r.q[pYp0okm8l!h]bVaH_I^iYpXQUnU1KyK2GBD%CPCB>1=c<~;c8V7D734/3>2I.[.;,3+R*})9(1'b$d$:",ken:"-%V{qxjc*_CX~*I",chuai:"-%=XIW}Ch",pa:"-%/vLisihd.]oX|NC@r8608)P#!",se:"-%,-$,yogK_WY%X`W~J/J.Hl",nv:"vkc7OM@!",nuan:"vcPo;`:m2X2W",shuo:"v]a'WhT'S|OKGnCn>>470W+p",niu:"v?q=dKd0]S]![DN?@8@!4u/e/d.W",rao:"u2rA]PU?KkFJ",niang:"t|r&qb",shui:"t]iTZMYuA$A#@{=.=*",nve:"t)%S$%",nen:"sirarYc^",niao:"s!r+qsnwFq9x",kuan:"pBp#ooK)CoCfCd",cuan:"jPV'U*T~TwDtD7BU@o6E5K1S0<",te:"dsdr`R/F/9",zen:"d5VU",zei:"^H",den:"][]C",zhua:"],ZYV#ER0:09",shuan:"[&L^GL{let t=0,n=1;for(let i=e.length;i--;)t+=n*$a.indexOf(e.charAt(i)),n*=91;return t},on=(e,t)=>{let n,i,c,p,s;for(n in e)if(e.hasOwnProperty(n))for(i=e[n].match(wa),c=0;c(Ft("data-v-94026b33"),e=e(),Xt(),e),Sa={key:0},Ta={class:"container"},La={class:"action-bar"},Ca=["title"],Aa=["title"],za=["title"],Da=["src"],Na={key:0,class:"icon",style:{cursor:"pointer"}},Ia={key:2,"flex-placeholder":""},ja={key:3,class:"action-bar"},Pa={key:0,class:"gen-info"},Ba={class:"info-tags"},Ra={class:"info-tag"},Ua={class:"name"},Ha=["title"],Wa={class:"name"},Fa=["title","onDblclick"],Xa={key:0,class:"tags-container"},qa={style:{display:"inline-block",width:"32px"}},Ja=["onClick"],Ga=["onClick"],Va={class:"lr-layout-control"},Ya={class:"ctrl-item"},Za={class:"ctrl-item"},Ka={class:"ctrl-item"},Qa=me(()=>w("br",null,null,-1)),es=me(()=>w("h3",null,"Prompt",-1)),ts=["innerHTML"],ns=me(()=>w("br",null,null,-1)),is=me(()=>w("h3",null,"Negative Prompt",-1)),as=["innerHTML"],ss=me(()=>w("br",null,null,-1)),os=me(()=>w("h3",null,"Params",-1)),rs={style:{"font-weight":"600","text-transform":"capitalize"}},ls=["onDblclick"],cs=["onDblclick"],us=me(()=>w("br",null,null,-1)),ds=me(()=>w("h3",null,"Extra Meta Info",-1)),gs={class:"extra-meta-table"},fs={style:{"font-weight":"600","text-transform":"capitalize"}},hs=["onDblclick"],ps={class:"extra-meta-value"},vs={key:0},_s={key:1},ms=["title"],ys=lt({__name:"fullScreenContextMenu",props:{file:{},idx:{}},emits:["contextMenuClick"],setup(e,{emit:t}){const n=e;pn(a=>({"3a9724bb":v(ee)?0:"46px","074c5a24":v(ye)+"px",f5adef9c:`calc(100vw - ${v(ye)}px)`}));const i=Ge(),c=vn(),p=ce(),s=ie(()=>c.tagMap.get(n.file.fullpath)??[]),o=ce(""),d=_n(),S=ce(""),A=ce({}),Y=ce(!1),G=ie(()=>S.value.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")),K=ie(()=>G.value.split(` +`)),M=ie(()=>Qe(G.value)),B=ie(()=>{let a=Qe(G.value);return delete a.prompt,delete a.negativePrompt,delete a.extraJsonMetaInfo,a}),W=ie(()=>Qe(S.value).extraJsonMetaInfo),q=Ne("iib@fullScreenContextMenu.prompt-tab","structedData");async function Q(){var a;if((a=n==null?void 0:n.file)!=null&&a.fullpath){Y.value=!0;try{A.value=await On(n.file.fullpath)}catch(g){console.error("Failed to get EXIF data:",g)}finally{Y.value=!1}}}Le(()=>{var a;return(a=n==null?void 0:n.file)==null?void 0:a.fullpath},async a=>{a&&(d.tasks.forEach(g=>g.cancel()),d.pushAction(()=>mn(a)).res.then(g=>{S.value=g}),A.value={},q.value==="exif"&&Q())},{immediate:!0}),Le(q,async a=>{a==="exif"&&Q()}),Ve(()=>{var a;q.value==="exif"&&((a=n==null?void 0:n.file)!=null&&a.fullpath)&&Q()});const le=ce(),y=ce(),U={left:100,top:100,width:512,height:384,expanded:!0},C=Ne("fullScreenContextMenu.vue-drag",U);C.value&&(C.value.left<0||C.value.top<0)&&(C.value={...U});const{isLeftRightLayout:he,lrLayoutInfoPanelWidth:ye,lrMenuAlwaysOn:ee}=ma(),te=he;_a(p,le,y,{disbaled:te,...C.value,onDrag:Xe(function(a,g){C.value={...C.value,left:a,top:g}},300),onResize:Xe(function(a,g){C.value={...C.value,width:a,height:g}},300)});const Ee=ce(!1),{isOutside:Ze}=yn(ie(()=>!te.value||ee.value?null:Ee.value?p.value:bn(document.querySelectorAll(".iib-tab-edge-trigger"))));Le(Ze,$n(a=>{Ee.value=!a},300));function Pe(a){return a.parentNode}function Ke(a){let g=0;for(const X of a)/[\u4e00-\u9fa5]/.test(X)?g+=3:g+=1;return g}function ke(a){if(a.length===0)return!1;let g=0;for(const R of a){const x=Ke(R);if(g+=x,x>50)return!1}return!(g/a.length>30)}function Be(a){if(!a)return"";const g="BREAK",X=a.replace(/>\s/g,"> ,").replace(/\sBREAK\s/g,","+g+",").split(/[\n,]+/).map(z=>z.trim()).filter(z=>z);if(!ke(X))return a.split(` +`).map(z=>z.trim()).filter(z=>z).map(z=>`

${z}

`).join("");const R=[];let x=!1;for(let z=0;zBREAK
');continue}const j=X[z];x||(x=j.includes("("));const re=["tag"];x&&re.push("has-parentheses"),j.length<32&&re.push("short-tag"),R.push(`${j}`),x&&(x=!j.includes(")"))}return R.join(i.showCommaInInfoPanel?",":" ")}xt("load",a=>{const g=a.target;g.className==="ant-image-preview-img"&&(o.value=`${g.naturalWidth} x ${g.naturalHeight}`)},{capture:!0});const r=ie(()=>{const a=[{name:ne("fileSize"),val:n.file.size}];return o.value&&a.push({name:ne("resolution"),val:o.value}),a}),h=()=>{const a="Negative prompt:",g=S.value.includes(a)?S.value.split(a)[0]:K.value[0]??"";De(nt(g.trim()))},T=()=>document.body.requestFullscreen(),I=a=>{De(typeof a=="object"?JSON.stringify(a,null,4):a)},F=a=>{a.key.startsWith("Arrow")?(a.stopPropagation(),a.preventDefault(),document.dispatchEvent(new KeyboardEvent("keydown",a))):a.key==="Escape"&&document.fullscreenElement&&document.exitFullscreen()};xt("dblclick",a=>{var g;((g=a.target)==null?void 0:g.className)==="ant-image-preview-img"&&Et()});const Z=ie(()=>te.value||C.value.expanded),ae=Ne(ot+"contextShowFullPath",!1),pe=ie(()=>ae.value?n.file.fullpath:n.file.name),J=Ne(ot+"tagA2ZClassify",!1),se=ie(()=>{var X;const a=(X=i.conf)==null?void 0:X.all_custom_tags.map(R=>{var z,j;return{char:((z=R.display_name)==null?void 0:z[0])||((j=R.name)==null?void 0:j[0]),...R}}).reduce((R,x)=>{var j;let z="#";if(/[a-z]/i.test(x.char))z=x.char.toUpperCase();else if(/[\u4e00-\u9fa5]/.test(x.char))try{z=((j=/^\[?(\w)/.exec(xa(x.char)+""))==null?void 0:j[1])??"#"}catch(re){console.log("err",re)}return z=z.toUpperCase(),R[z]||(R[z]=[]),R[z].push(x),R},{});return Object.entries(a??{}).sort((R,x)=>R[0].charCodeAt(0)-x[0].charCodeAt(0))}),Oe=()=>{Et(),t("contextMenuClick",{key:"tiktokView"},n.file,n.idx)},Me=ce(!1),Re=async()=>{var a,g;if(!M.value.prompt){be.warning(ne("aiAnalyzeTagsNoPrompt"));return}if(!((g=(a=i.conf)==null?void 0:a.all_custom_tags)!=null&&g.length)){be.warning(ne("aiAnalyzeTagsNoCustomTags"));return}Me.value=!0;try{const X=M.value.prompt,x=`You are a professional AI assistant responsible for analyzing Stable Diffusion prompts and categorizing them into appropriate tags. Your task is: 1. Analyze the given prompt @@ -14,6 +13,6 @@ Your task is: 4. If no tags match, return an empty string 5. Tag matching should be based on semantic similarity and thematic relevance -Available tags: ${i.conf.all_custom_tags.map(E=>E.name).join(", ")} +Available tags: ${i.conf.all_custom_tags.map(L=>L.name).join(", ")} -Please return only tag names, do not include any other content.`,J=(await Mn({messages:[{role:"system",content:T},{role:"user",content:`Please analyze this prompt and return matching tags: ${X}`}],temperature:.3,max_tokens:200})).choices[0].message.content.trim();if(!J){be.info(ie("aiAnalyzeTagsNoMatchedTags"));return}const oe=J.split(",").map(E=>E.trim()).filter(E=>E),b=i.conf.all_custom_tags.filter(E=>oe.some(le=>E.name.toLowerCase()===le.toLowerCase()||E.name.toLowerCase().includes(le.toLowerCase())||le.toLowerCase().includes(E.name.toLowerCase()))),ye=new Set(o.value.map(E=>E.id)),R=b.filter(E=>!ye.has(E.id));if(R.length===0){b.length>0?be.info(ie("aiAnalyzeTagsAllTagsAlreadyAdded")):be.info(ie("aiAnalyzeTagsNoValidTags"));return}for(const E of R)t("contextMenuClick",{key:`toggle-tag-${E.id}`},n.file,n.idx);be.success(ie("aiAnalyzeTagsSuccess",[R.length.toString(),R.map(E=>E.name).join(", ")]))}catch(X){console.error("AI分析标签失败:",X),be.error(ie("aiAnalyzeTagsFailed"))}finally{ke.value=!1}};return(a,g)=>{var u,f,x;const X=jn,I=Fe,T=xn,M=Sn,J=Tn,oe=Cn,b=Fe,ye=Pn,R=In,E=Ln,le=An,he=zn,Le=Ne,Ae=Dn;return _(),O("div",{ref_key:"el",ref:p,class:nt(["full-screen-menu",{"unset-size":!v(A).expanded,lr:v(ee),"always-on":v(fe),"mouse-in":Ce.value}]),onWheelCapture:g[13]||(g[13]=Mt(()=>{},["stop"])),onKeydownCapture:ae},[v(ee)?(_(),O("div",Sa)):H("",!0),$("div",Ta,[$("div",Ca,[v(ee)?H("",!0):(_(),O("div",{key:0,ref_key:"dragHandle",ref:y,class:"icon",style:{cursor:"grab"},title:v(ie)("dragToMovePanel")},[m(v(Zn))],8,La)),v(ee)?H("",!0):(_(),O("div",{key:1,class:"icon",style:{cursor:"pointer"},onClick:g[0]||(g[0]=c=>v(A).expanded=!v(A).expanded),title:v(ie)("clickToToggleMaximizeMinimize")},[se.value?(_(),de(v(En),{key:0})):(_(),de(v(wn),{key:1}))],8,Aa)),$("div",{style:{display:"flex","flex-direction":"column","align-items":"center",cursor:"grab"},class:"icon",title:v(ie)("fullscreenview"),onClick:P},[$("img",{src:v(li),style:{width:"21px",height:"21px","padding-bottom":"2px"},alt:""},null,8,Da)],8,za),m(X,{"get-popup-container":je},{overlay:k(()=>[m(Bn,{file:a.file,idx:a.idx,"selected-tag":o.value,onContextMenuClick:g[1]||(g[1]=(c,z,F)=>t("contextMenuClick",c,z,F))},null,8,["file","idx","selected-tag"])]),default:k(()=>[v(A).expanded?H("",!0):(_(),O("div",Na,[m(v(kt))]))]),_:1}),se.value?(_(),O("div",Ia)):H("",!0),se.value?(_(),O("div",Pa,[m(X,{trigger:["hover"],"get-popup-container":je},{overlay:k(()=>[m(oe,{onClick:g[2]||(g[2]=c=>t("contextMenuClick",c,a.file,a.idx))},{default:k(()=>{var c;return[((c=v(i).conf)==null?void 0:c.launch_mode)!=="server"?(_(),O(Y,{key:0},[m(T,{key:"send2txt2img"},{default:k(()=>[N(w(a.$t("sendToTxt2img")),1)]),_:1}),m(T,{key:"send2img2img"},{default:k(()=>[N(w(a.$t("sendToImg2img")),1)]),_:1}),m(T,{key:"send2inpaint"},{default:k(()=>[N(w(a.$t("sendToInpaint")),1)]),_:1}),m(T,{key:"send2extras"},{default:k(()=>[N(w(a.$t("sendToExtraFeatures")),1)]),_:1}),m(M,{key:"sendToThirdPartyExtension",title:a.$t("sendToThirdPartyExtension")},{default:k(()=>[m(T,{key:"send2controlnet-txt2img"},{default:k(()=>[N("ControlNet - "+w(a.$t("t2i")),1)]),_:1}),m(T,{key:"send2controlnet-img2img"},{default:k(()=>[N("ControlNet - "+w(a.$t("i2i")),1)]),_:1}),m(T,{key:"send2outpaint"},{default:k(()=>[N("openOutpaint")]),_:1})]),_:1},8,["title"])],64)):H("",!0),m(T,{key:"send2BatchDownload"},{default:k(()=>[N(w(a.$t("sendToBatchDownload")),1)]),_:1}),m(M,{key:"copy2target",title:a.$t("copyTo")},{default:k(()=>[(_(!0),O(Y,null,ge(v(i).quickMovePaths,z=>(_(),de(T,{key:`copy-to-${z.dir}`},{default:k(()=>[N(w(z.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),m(M,{key:"move2target",title:a.$t("moveTo")},{default:k(()=>[(_(!0),O(Y,null,ge(v(i).quickMovePaths,z=>(_(),de(T,{key:`move-to-${z.dir}`},{default:k(()=>[N(w(z.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),m(J),m(T,{key:"deleteFiles"},{default:k(()=>[N(w(a.$t("deleteSelected")),1)]),_:1}),m(T,{key:"openWithDefaultApp"},{default:k(()=>[N(w(a.$t("openWithDefaultApp")),1)]),_:1}),m(T,{key:"previewInNewWindow"},{default:k(()=>[N(w(a.$t("previewInNewWindow")),1)]),_:1}),m(T,{key:"copyPreviewUrl"},{default:k(()=>[N(w(a.$t("copySourceFilePreviewLink")),1)]),_:1}),m(T,{key:"copyFilePath"},{default:k(()=>[N(w(a.$t("copyFilePath")),1)]),_:1}),m(J),m(T,{key:"tiktokView",onClick:Oe},{default:k(()=>[N(w(a.$t("tiktokView")),1)]),_:1})]}),_:1})]),default:k(()=>[m(I,null,{default:k(()=>[N(w(v(ie)("openContextMenu")),1)]),_:1})]),_:1}),m(b,{onClick:g[3]||(g[3]=c=>t("contextMenuClick",{key:"download"},n.file,n.idx))},{default:k(()=>[N(w(a.$t("download")),1)]),_:1}),C.value?(_(),de(I,{key:0,onClick:g[4]||(g[4]=c=>v(ze)(C.value))},{default:k(()=>[N(w(a.$t("copyPrompt")),1)]),_:1})):H("",!0),C.value?(_(),de(I,{key:1,onClick:L},{default:k(()=>[N(w(a.$t("copyPositivePrompt")),1)]),_:1})):H("",!0),C.value&&((f=(u=v(i).conf)==null?void 0:u.all_custom_tags)!=null&&f.length)?(_(),de(I,{key:2,onClick:Qe,type:"primary",loading:ke.value},{default:k(()=>[N(w(a.$t("aiAnalyzeTags")),1)]),_:1},8,["loading"])):H("",!0),m(I,{onClick:Oe,onTouchstart:Mt(Oe,["prevent"]),type:"default"},{default:k(()=>[N(w(a.$t("tiktokView")),1)]),_:1},8,["onTouchstart"])])):H("",!0)]),se.value?(_(),O("div",ja,[$("div",Ba,[$("span",Ra,[$("span",Ua,w(a.$t("fileName")),1),$("span",{class:"value",title:V.value,onDblclick:g[5]||(g[5]=c=>v(ze)(V.value))},w(V.value),41,Ha),$("span",{style:{margin:"0 8px",cursor:"pointer"},title:"Click to expand full path",onClick:g[6]||(g[6]=c=>ve.value=!v(ve))},[m(v(kt))])]),(_(!0),O(Y,null,ge(h.value,c=>(_(),O("span",{class:"info-tag",key:c.name},[$("span",Wa,w(c.name),1),$("span",{class:"value",title:c.val,onDblclick:z=>v(ze)(c.val)},w(c.val),41,Fa)]))),128))]),(x=v(i).conf)!=null&&x.all_custom_tags?(_(),O("div",Xa,[$("div",{class:"sort-tag-switch",onClick:g[7]||(g[7]=c=>te.value=!v(te))},[v(te)?(_(),de(v(On),{key:1})):(_(),de(v(ri),{key:0}))]),$("div",{class:"tag",onClick:g[8]||(g[8]=(...c)=>v(xt)&&v(xt)(...c)),style:tt({"--tag-color":"var(--zp-luminous)"})},"+ "+w(a.$t("add")),5),v(te)?(_(!0),O(Y,{key:0},ge(Be.value,([c,z])=>(_(),O("div",{key:c,class:"tag-alpha-item"},[$("h4",qa,w(c)+" : ",1),$("div",null,[(_(!0),O(Y,null,ge(z,F=>(_(),O("div",{class:nt(["tag",{selected:o.value.some(Re=>Re.id===F.id)}]),onClick:Re=>t("contextMenuClick",{key:`toggle-tag-${F.id}`},a.file,a.idx),key:F.id,style:tt({"--tag-color":v(l).getColor(F)})},w(F.name),15,Ja))),128))])]))),128)):(_(!0),O(Y,{key:1},ge(v(i).conf.all_custom_tags,c=>(_(),O("div",{class:nt(["tag",{selected:o.value.some(z=>z.id===c.id)}]),onClick:z=>t("contextMenuClick",{key:`toggle-tag-${c.id}`},a.file,a.idx),key:c.id,style:tt({"--tag-color":v(l).getColor(c)})},w(c.name),15,Ga))),128))])):H("",!0),$("div",Va,[$("div",Ya,[N(w(a.$t("experimentalLRLayout"))+": ",1),m(ye,{checked:v(ee),"onUpdate:checked":g[9]||(g[9]=c=>Ue(ee)?ee.value=c:null),size:"small"},null,8,["checked"])]),v(ee)?(_(),O(Y,{key:0},[$("div",Za,[N(w(a.$t("width"))+": ",1),m(R,{value:v(ne),"onUpdate:value":g[10]||(g[10]=c=>Ue(ne)?ne.value=c:null),style:{width:"64px"},step:16,min:128,max:1024},null,8,["value"])]),m(E,{title:a.$t("alwaysOnTooltipInfo")},{default:k(()=>[$("div",Ka,[N(w(a.$t("alwaysOn"))+": ",1),m(ye,{checked:v(fe),"onUpdate:checked":g[11]||(g[11]=c=>Ue(fe)?fe.value=c:null),size:"small"},null,8,["checked"])])]),_:1},8,["title"])],64)):H("",!0)]),m(Ae,{activeKey:v(q),"onUpdate:activeKey":g[12]||(g[12]=c=>Ue(q)?q.value=c:null)},{default:k(()=>[m(le,{key:"structedData",tab:a.$t("structuredData")},{default:k(()=>[$("div",null,[S.value.prompt?(_(),O(Y,{key:0},[Qa,es,$("code",{innerHTML:s(S.value.prompt??"")},null,8,ts)],64)):H("",!0),S.value.negativePrompt?(_(),O(Y,{key:1},[ns,is,$("code",{innerHTML:s(S.value.negativePrompt??"")},null,8,as)],64)):H("",!0)]),Object.keys(j.value).length?(_(),O(Y,{key:0},[ss,os,$("table",null,[(_(!0),O(Y,null,ge(j.value,(c,z)=>(_(),O("tr",{key:z,class:"gen-info-frag"},[$("td",rs,w(z),1),typeof c=="object"?(_(),O("td",{key:0,style:{cursor:"pointer"},onDblclick:F=>U(c)},[$("code",null,w(c),1)],40,ls)):(_(),O("td",{key:1,style:{cursor:"pointer"},onDblclick:F=>U(v(it)(c))},w(v(it)(c)),41,cs))]))),128))])],64)):H("",!0),W.value&&Object.keys(W.value).length?(_(),O(Y,{key:1},[us,ds,$("table",gs,[(_(!0),O(Y,null,ge(W.value,(c,z)=>(_(),O("tr",{key:z,class:"gen-info-frag"},[$("td",fs,w(z),1),$("td",{style:{cursor:"pointer"},onDblclick:F=>U(c)},[$("code",ps,w(typeof c=="string"?c:JSON.stringify(c,null,2)),1)],40,hs)]))),128))])],64)):H("",!0)]),_:1},8,["tab"]),m(le,{key:"sourceText",tab:a.$t("sourceText")},{default:k(()=>[$("code",null,w(C.value),1)]),_:1},8,["tab"]),m(le,{key:"exif",tab:"EXIF"},{default:k(()=>[m(Le,{spinning:Z.value},{default:k(()=>[D.value&&Object.keys(D.value).length?(_(),O("div",vs,[m(va,{data:D.value},null,8,["data"])])):Z.value?H("",!0):(_(),O("div",_s,[m(he,{description:"No EXIF data available"})]))]),_:1},8,["spinning"])]),_:1})]),_:1},8,["activeKey"])])):H("",!0)]),v(A).expanded&&!v(ee)?(_(),O("div",{key:1,class:"mouse-sensor",ref_key:"resizeHandle",ref:ce,title:v(ie)("dragToResizePanel")},[m(v(Jn))],8,ms)):H("",!0)],34)}}});const Ns=ut(ys,[["__scopeId","data-v-006d4d7c"]]),bs={key:0,class:"float-panel"},$s={key:0,class:"select-actions"},Es={key:1},ws=ct({__name:"MultiSelectKeep",props:{show:{type:Boolean}},emits:["selectAll","reverseSelect","clearAllSelected"],setup(e,{emit:t}){const n=Ge(),i=()=>{t("clearAllSelected"),n.keepMultiSelect=!1},l=()=>{n.keepMultiSelect=!0};return(p,o)=>{const r=Fe;return p.show?(_(),O("div",bs,[v(n).keepMultiSelect?(_(),O("div",$s,[m(r,{size:"small",onClick:o[0]||(o[0]=d=>t("selectAll"))},{default:k(()=>[N(w(p.$t("select-all")),1)]),_:1}),m(r,{size:"small",onClick:o[1]||(o[1]=d=>t("reverseSelect"))},{default:k(()=>[N(w(p.$t("rerverse-select")),1)]),_:1}),m(r,{size:"small",onClick:o[2]||(o[2]=d=>t("clearAllSelected"))},{default:k(()=>[N(w(p.$t("clear-all-selected")),1)]),_:1}),m(r,{size:"small",onClick:i},{default:k(()=>[N(w(p.$t("exit")),1)]),_:1})])):(_(),O("div",Es,[m(r,{size:"small",type:"primary",onClick:l},{default:k(()=>[N(w(p.$t("keep-multi-selected")),1)]),_:1})]))])):H("",!0)}}});const Is=ut(ws,[["__scopeId","data-v-b04c3508"]]);export{zs as L,Is as M,Ds as R,Ns as f}; +Please return only tag names, do not include any other content.`,j=(await Mn({messages:[{role:"system",content:x},{role:"user",content:`Please analyze this prompt and return matching tags: ${X}`}],temperature:.3,max_tokens:200})).choices[0].message.content.trim();if(!j){be.info(ne("aiAnalyzeTagsNoMatchedTags"));return}const re=j.split(",").map(L=>L.trim()).filter(L=>L),ve=i.conf.all_custom_tags.filter(L=>re.some(D=>L.name.toLowerCase()===D.toLowerCase()||L.name.toLowerCase().includes(D.toLowerCase())||D.toLowerCase().includes(L.name.toLowerCase()))),$=new Set(s.value.map(L=>L.id)),ge=ve.filter(L=>!$.has(L.id));if(ge.length===0){ve.length>0?be.info(ne("aiAnalyzeTagsAllTagsAlreadyAdded")):be.info(ne("aiAnalyzeTagsNoValidTags"));return}for(const L of ge)t("contextMenuClick",{key:`toggle-tag-${L.id}`},n.file,n.idx);be.success(ne("aiAnalyzeTagsSuccess",[ge.length.toString(),ge.map(L=>L.name).join(", ")]))}catch(X){console.error("AI分析标签失败:",X),be.error(ne("aiAnalyzeTagsFailed"))}finally{Me.value=!1}};return(a,g)=>{var Se,u,f;const X=Pn,R=Fe,x=xn,z=Sn,j=Tn,re=Ln,ve=Fe,$=Cn,ge=An,L=zn,D=Dn,xe=Nn,fe=In,ze=jn;return _(),k("div",{ref_key:"el",ref:p,class:tt(["full-screen-menu",{"unset-size":!v(C).expanded,lr:v(te),"always-on":v(ee),"mouse-in":Ee.value}]),onWheelCapture:g[13]||(g[13]=Ot(()=>{},["stop"])),onKeydownCapture:F},[v(te)?(_(),k("div",Sa)):H("",!0),w("div",Ta,[w("div",La,[v(te)?H("",!0):(_(),k("div",{key:0,ref_key:"dragHandle",ref:y,class:"icon",style:{cursor:"grab"},title:v(ne)("dragToMovePanel")},[m(v(Zn))],8,Ca)),v(te)?H("",!0):(_(),k("div",{key:1,class:"icon",style:{cursor:"pointer"},onClick:g[0]||(g[0]=l=>v(C).expanded=!v(C).expanded),title:v(ne)("clickToToggleMaximizeMinimize")},[Z.value?(_(),ue(v(wn),{key:0})):(_(),ue(v(En),{key:1}))],8,Aa)),w("div",{style:{display:"flex","flex-direction":"column","align-items":"center",cursor:"grab"},class:"icon",title:v(ne)("fullscreenview"),onClick:T},[w("img",{src:v(li),style:{width:"21px",height:"21px","padding-bottom":"2px"},alt:""},null,8,Da)],8,za),m(X,{"get-popup-container":Pe},{overlay:O(()=>[m(Bn,{file:a.file,idx:a.idx,"selected-tag":s.value,onContextMenuClick:g[1]||(g[1]=(l,b,P)=>t("contextMenuClick",l,b,P))},null,8,["file","idx","selected-tag"])]),default:O(()=>[v(C).expanded?H("",!0):(_(),k("div",Na,[m(v(kt))]))]),_:1}),Z.value?(_(),k("div",Ia)):H("",!0),Z.value?(_(),k("div",ja,[m(X,{trigger:["hover"],"get-popup-container":Pe},{overlay:O(()=>[m(re,{onClick:g[2]||(g[2]=l=>t("contextMenuClick",l,a.file,a.idx))},{default:O(()=>{var l;return[((l=v(i).conf)==null?void 0:l.launch_mode)!=="server"?(_(),k(V,{key:0},[m(x,{key:"send2txt2img"},{default:O(()=>[N(E(a.$t("sendToTxt2img")),1)]),_:1}),m(x,{key:"send2img2img"},{default:O(()=>[N(E(a.$t("sendToImg2img")),1)]),_:1}),m(x,{key:"send2inpaint"},{default:O(()=>[N(E(a.$t("sendToInpaint")),1)]),_:1}),m(x,{key:"send2extras"},{default:O(()=>[N(E(a.$t("sendToExtraFeatures")),1)]),_:1}),m(z,{key:"sendToThirdPartyExtension",title:a.$t("sendToThirdPartyExtension")},{default:O(()=>[m(x,{key:"send2controlnet-txt2img"},{default:O(()=>[N("ControlNet - "+E(a.$t("t2i")),1)]),_:1}),m(x,{key:"send2controlnet-img2img"},{default:O(()=>[N("ControlNet - "+E(a.$t("i2i")),1)]),_:1}),m(x,{key:"send2outpaint"},{default:O(()=>[N("openOutpaint")]),_:1})]),_:1},8,["title"])],64)):H("",!0),m(x,{key:"send2BatchDownload"},{default:O(()=>[N(E(a.$t("sendToBatchDownload")),1)]),_:1}),m(z,{key:"copy2target",title:a.$t("copyTo")},{default:O(()=>[(_(!0),k(V,null,de(v(i).quickMovePaths,b=>(_(),ue(x,{key:`copy-to-${b.dir}`},{default:O(()=>[N(E(b.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),m(z,{key:"move2target",title:a.$t("moveTo")},{default:O(()=>[(_(!0),k(V,null,de(v(i).quickMovePaths,b=>(_(),ue(x,{key:`move-to-${b.dir}`},{default:O(()=>[N(E(b.zh),1)]),_:2},1024))),128))]),_:1},8,["title"]),m(j),m(x,{key:"deleteFiles"},{default:O(()=>[N(E(a.$t("deleteSelected")),1)]),_:1}),m(x,{key:"openWithDefaultApp"},{default:O(()=>[N(E(a.$t("openWithDefaultApp")),1)]),_:1}),m(x,{key:"previewInNewWindow"},{default:O(()=>[N(E(a.$t("previewInNewWindow")),1)]),_:1}),m(x,{key:"copyPreviewUrl"},{default:O(()=>[N(E(a.$t("copySourceFilePreviewLink")),1)]),_:1}),m(x,{key:"copyFilePath"},{default:O(()=>[N(E(a.$t("copyFilePath")),1)]),_:1}),m(j),m(x,{key:"tiktokView",onClick:Oe},{default:O(()=>[N(E(a.$t("tiktokView")),1)]),_:1})]}),_:1})]),default:O(()=>[m(R,null,{default:O(()=>[N(E(v(ne)("openContextMenu")),1)]),_:1})]),_:1}),m(ve,{onClick:g[3]||(g[3]=l=>t("contextMenuClick",{key:"download"},n.file,n.idx))},{default:O(()=>[N(E(a.$t("download")),1)]),_:1}),S.value?(_(),ue(R,{key:0,onClick:g[4]||(g[4]=l=>v(De)(S.value))},{default:O(()=>[N(E(a.$t("copyPrompt")),1)]),_:1})):H("",!0),S.value?(_(),ue(R,{key:1,onClick:h},{default:O(()=>[N(E(a.$t("copyPositivePrompt")),1)]),_:1})):H("",!0),S.value&&((u=(Se=v(i).conf)==null?void 0:Se.all_custom_tags)!=null&&u.length)?(_(),ue(R,{key:2,onClick:Re,type:"primary",loading:Me.value},{default:O(()=>[N(E(a.$t("aiAnalyzeTags")),1)]),_:1},8,["loading"])):H("",!0),m(R,{onClick:Oe,onTouchstart:Ot(Oe,["prevent"]),type:"default"},{default:O(()=>[N(E(a.$t("tiktokView")),1)]),_:1},8,["onTouchstart"])])):H("",!0)]),Z.value?(_(),k("div",Pa,[w("div",Ba,[w("span",Ra,[w("span",Ua,E(a.$t("fileName")),1),w("span",{class:"value",title:pe.value,onDblclick:g[5]||(g[5]=l=>v(De)(pe.value))},E(pe.value),41,Ha),w("span",{style:{margin:"0 8px",cursor:"pointer"},title:"Click to expand full path",onClick:g[6]||(g[6]=l=>ae.value=!v(ae))},[m(v(kt))])]),(_(!0),k(V,null,de(r.value,l=>(_(),k("span",{class:"info-tag",key:l.name},[w("span",Wa,E(l.name),1),w("span",{class:"value",title:l.val,onDblclick:b=>v(De)(l.val)},E(l.val),41,Fa)]))),128))]),(f=v(i).conf)!=null&&f.all_custom_tags?(_(),k("div",Xa,[w("div",{class:"sort-tag-switch",onClick:g[7]||(g[7]=l=>J.value=!v(J))},[v(J)?(_(),ue(v(kn),{key:1})):(_(),ue(v(ri),{key:0}))]),w("div",{class:"tag",onClick:g[8]||(g[8]=(...l)=>v(Mt)&&v(Mt)(...l)),style:et({"--tag-color":"var(--zp-luminous)"})},"+ "+E(a.$t("add")),5),v(J)?(_(!0),k(V,{key:0},de(se.value,([l,b])=>(_(),k("div",{key:l,class:"tag-alpha-item"},[w("h4",qa,E(l)+" : ",1),w("div",null,[(_(!0),k(V,null,de(b,P=>(_(),k("div",{class:tt(["tag",{selected:s.value.some(oe=>oe.id===P.id)}]),onClick:oe=>t("contextMenuClick",{key:`toggle-tag-${P.id}`},a.file,a.idx),key:P.id,style:et({"--tag-color":v(c).getColor(P)})},E(P.name),15,Ja))),128))])]))),128)):(_(!0),k(V,{key:1},de(v(i).conf.all_custom_tags,l=>(_(),k("div",{class:tt(["tag",{selected:s.value.some(b=>b.id===l.id)}]),onClick:b=>t("contextMenuClick",{key:`toggle-tag-${l.id}`},a.file,a.idx),key:l.id,style:et({"--tag-color":v(c).getColor(l)})},E(l.name),15,Ga))),128))])):H("",!0),w("div",Va,[w("div",Ya,[N(E(a.$t("experimentalLRLayout"))+": ",1),m($,{checked:v(te),"onUpdate:checked":g[9]||(g[9]=l=>Ue(te)?te.value=l:null),size:"small"},null,8,["checked"])]),v(te)?(_(),k(V,{key:0},[w("div",Za,[N(E(a.$t("width"))+": ",1),m(ge,{value:v(ye),"onUpdate:value":g[10]||(g[10]=l=>Ue(ye)?ye.value=l:null),style:{width:"64px"},step:16,min:128,max:1024},null,8,["value"])]),m(L,{title:a.$t("alwaysOnTooltipInfo")},{default:O(()=>[w("div",Ka,[N(E(a.$t("alwaysOn"))+": ",1),m($,{checked:v(ee),"onUpdate:checked":g[11]||(g[11]=l=>Ue(ee)?ee.value=l:null),size:"small"},null,8,["checked"])])]),_:1},8,["title"])],64)):H("",!0)]),m(ze,{activeKey:v(q),"onUpdate:activeKey":g[12]||(g[12]=l=>Ue(q)?q.value=l:null)},{default:O(()=>[m(D,{key:"structedData",tab:a.$t("structuredData")},{default:O(()=>[w("div",null,[M.value.prompt?(_(),k(V,{key:0},[Qa,es,w("code",{innerHTML:Be(M.value.prompt??"")},null,8,ts)],64)):H("",!0),M.value.negativePrompt?(_(),k(V,{key:1},[ns,is,w("code",{innerHTML:Be(M.value.negativePrompt??"")},null,8,as)],64)):H("",!0)]),Object.keys(B.value).length?(_(),k(V,{key:0},[ss,os,w("table",null,[(_(!0),k(V,null,de(B.value,(l,b)=>(_(),k("tr",{key:b,class:"gen-info-frag"},[w("td",rs,E(b),1),typeof l=="object"?(_(),k("td",{key:0,style:{cursor:"pointer"},onDblclick:P=>I(l)},[w("code",null,E(l),1)],40,ls)):(_(),k("td",{key:1,style:{cursor:"pointer"},onDblclick:P=>I(v(nt)(l))},E(v(nt)(l)),41,cs))]))),128))])],64)):H("",!0),W.value&&Object.keys(W.value).length?(_(),k(V,{key:1},[us,ds,w("table",gs,[(_(!0),k(V,null,de(W.value,(l,b)=>(_(),k("tr",{key:b,class:"gen-info-frag"},[w("td",fs,E(b),1),w("td",{style:{cursor:"pointer"},onDblclick:P=>I(l)},[w("code",ps,E(typeof l=="string"?l:JSON.stringify(l,null,2)),1)],40,hs)]))),128))])],64)):H("",!0)]),_:1},8,["tab"]),m(D,{key:"sourceText",tab:a.$t("sourceText")},{default:O(()=>[w("code",null,E(S.value),1)]),_:1},8,["tab"]),m(D,{key:"exif",tab:"EXIF"},{default:O(()=>[m(fe,{spinning:Y.value},{default:O(()=>[A.value&&Object.keys(A.value).length?(_(),k("div",vs,[m(va,{data:A.value},null,8,["data"])])):Y.value?H("",!0):(_(),k("div",_s,[m(xe,{description:"No EXIF data available"})]))]),_:1},8,["spinning"])]),_:1})]),_:1},8,["activeKey"])])):H("",!0)]),v(C).expanded&&!v(te)?(_(),k("div",{key:1,class:"mouse-sensor",ref_key:"resizeHandle",ref:le,title:v(ne)("dragToResizePanel")},[m(v(Jn))],8,ms)):H("",!0)],34)}}});const Cs=ct(ys,[["__scopeId","data-v-94026b33"]]),bs={key:0,class:"float-panel"},$s={key:0,class:"select-actions"},ws={key:1},Es=lt({__name:"MultiSelectKeep",props:{show:{type:Boolean}},emits:["selectAll","reverseSelect","clearAllSelected"],setup(e,{emit:t}){const n=Ge(),i=()=>{t("clearAllSelected"),n.keepMultiSelect=!1},c=()=>{n.keepMultiSelect=!0};return(p,s)=>{const o=Fe;return p.show?(_(),k("div",bs,[v(n).keepMultiSelect?(_(),k("div",$s,[m(o,{size:"small",onClick:s[0]||(s[0]=d=>t("selectAll"))},{default:O(()=>[N(E(p.$t("select-all")),1)]),_:1}),m(o,{size:"small",onClick:s[1]||(s[1]=d=>t("reverseSelect"))},{default:O(()=>[N(E(p.$t("rerverse-select")),1)]),_:1}),m(o,{size:"small",onClick:s[2]||(s[2]=d=>t("clearAllSelected"))},{default:O(()=>[N(E(p.$t("clear-all-selected")),1)]),_:1}),m(o,{size:"small",onClick:i},{default:O(()=>[N(E(p.$t("exit")),1)]),_:1})])):(_(),k("div",ws,[m(o,{size:"small",type:"primary",onClick:c},{default:O(()=>[N(E(p.$t("keep-multi-selected")),1)]),_:1})]))])):H("",!0)}}});const As=ct(Es,[["__scopeId","data-v-b6f9a67c"]]);export{Ts as L,As as M,Ls as R,Cs as f}; diff --git a/vue/dist/assets/SubstrSearch-56649a80.css b/vue/dist/assets/SubstrSearch-56649a80.css new file mode 100644 index 0000000..5b93bdd --- /dev/null +++ b/vue/dist/assets/SubstrSearch-56649a80.css @@ -0,0 +1 @@ +[data-v-9726dd9e] .float-panel{position:fixed}.regex-icon[data-v-9726dd9e]{user-select:none;padding:4px;margin:0 4px;cursor:pointer;border:1px solid var(--zp-border);border-radius:4px}.regex-icon img[data-v-9726dd9e]{height:1.5em}.regex-icon[data-v-9726dd9e]:hover{background:var(--zp-border)}.regex-icon.selected[data-v-9726dd9e]{background:var(--primary-color-1);border:1px solid var(--primary-color)}.search-bar[data-v-9726dd9e]{padding:8px 8px 0;display:flex}.search-bar.last[data-v-9726dd9e]{padding-bottom:8px}.search-bar .form-name[data-v-9726dd9e]{flex-shrink:0;padding:4px 8px}.search-bar .actions>*[data-v-9726dd9e]{margin-right:4px}.container[data-v-9726dd9e]{background:var(--zp-secondary-background);position:relative}.container .file-list[data-v-9726dd9e]{list-style:none;padding:8px;height:100%;overflow:auto;height:var(--pane-max-height);width:100%} diff --git a/vue/dist/assets/SubstrSearch-9fd55bc1.js b/vue/dist/assets/SubstrSearch-9fd55bc1.js new file mode 100644 index 0000000..2cdd735 --- /dev/null +++ b/vue/dist/assets/SubstrSearch-9fd55bc1.js @@ -0,0 +1 @@ +import{c as a,A as Ee,d as He,bk as Pe,az as Ge,r as w,ak as Ke,bo as se,s as Le,bq as je,br as qe,aH as Ne,R as Je,T as We,bp as ne,bs as Qe,p as Xe,o as u,j as z,x as t,y as e,k as d,l as i,t as o,v as _,m as v,z as G,bA as Ye,Q as F,F as oe,B as ie,C as Ze,O as et,V as re,$ as ue,as as tt,Z as at,bB as lt,X as st,bw as nt,Y as ot,a4 as it,at as rt,au as ut,bC as dt,n as pt}from"./index-c24b5c8e.js";/* empty css *//* empty css */import{s as ct,F as ft}from"./FileItem-c62b10f3.js";import{M as vt,L as mt,R as gt,f as _t}from"./MultiSelectKeep-ea31915e.js";import{c as ht,u as yt}from"./hook-4227849e.js";import{g as kt,o as bt}from"./index-47a4d52c.js";import{f as U,H as de,_ as wt,a as St}from"./searchHistory-f42938f6.js";import"./index-5130babf.js";import"./shortcut-4e374057.js";import"./_isIterateeCall-19da1ec8.js";var Ct={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M952 474H829.8C812.5 327.6 696.4 211.5 550 194.2V72c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v122.2C327.6 211.5 211.5 327.6 194.2 474H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h122.2C211.5 696.4 327.6 812.5 474 829.8V952c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V829.8C696.4 812.5 812.5 696.4 829.8 550H952c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM512 756c-134.8 0-244-109.2-244-244s109.2-244 244-244 244 109.2 244 244-109.2 244-244 244z"}},{tag:"path",attrs:{d:"M512 392c-32.1 0-62.1 12.4-84.8 35.2-22.7 22.7-35.2 52.7-35.2 84.8s12.5 62.1 35.2 84.8C449.9 619.4 480 632 512 632s62.1-12.5 84.8-35.2C619.4 574.1 632 544 632 512s-12.5-62.1-35.2-84.8A118.57 118.57 0 00512 392z"}}]},name:"aim",theme:"outlined"};const xt=Ct;function pe(p){for(var c=1;c(rt("data-v-9726dd9e"),p=p(),ut(),p),Rt={style:{"padding-right":"16px"}},Ot=L(()=>d("div",null,null,-1)),Tt=["title"],Mt=["src"],zt={class:"search-bar"},Ft={class:"form-name"},Ut={class:"search-bar last actions"},Vt={class:"hint"},Dt={key:0,style:{margin:"64px 16px 32px",padding:"8px",background:"var(--zp-secondary-variant-background)","border-radius":"16px"}},Bt={style:{margin:"16px 32px 16px"}},Et={style:{"padding-right":"16px"}},Ht=L(()=>d("div",null,null,-1)),Pt=L(()=>d("div",{style:{padding:"16px 0 512px"}},null,-1)),Gt={key:2,class:"preview-switch"},Kt=He({__name:"SubstrSearch",props:{tabIdx:{},paneIdx:{},searchScope:{}},setup(p){const c=p,h=Pe(),k=Ge("iib_auto_update_feature_tip_shown",!1),m=w(!1),S=w(""),A=w(!1),C=w(c.searchScope??""),x=w(!1),j=w(0),I=w("all"),V=ht(l=>{const s={cursor:l,regexp:m.value?S.value:"",surstr:m.value?"":S.value,path_only:A.value,folder_paths:(C.value??"").split(/,|\n/).map(r=>r.trim()).filter(r=>r),media_type:I.value};return dt(s)}),{queue:b,images:g,onContextMenuClickU:q,stackViewEl:ce,previewIdx:$,previewing:N,onPreviewVisibleChange:fe,previewImgMove:J,canPreview:W,itemSize:Q,gridItems:ve,showGenInfo:R,imageGenInfo:X,q:me,multiSelectedIdxs:D,onFileItemClick:ge,scroller:Y,showMenuIdx:B,onFileDragStart:_e,onFileDragEnd:he,cellWidth:ye,onScroll:Z,saveAllFileAsJson:ke,saveLoadedFileAsJson:be,props:we,changeIndchecked:Se,seedChangeChecked:Ce,getGenDiff:xe,getGenDiffWatchDep:Ie}=yt(V),f=w();Ke(async()=>{f.value=await se(),f.value.img_count&&f.value.expired&&T.autoUpdateIndex&&await E(),c.searchScope&&await O()}),Le(()=>c,async l=>{we.value=l},{deep:!0,immediate:!0});const E=je(()=>b.pushAction(async()=>(await qe(),f.value=await se(),h.tagMap.clear(),f.value)).res),ee=l=>{S.value=l.substr,C.value=l.folder_paths_str,m.value=l.isRegex,I.value=l.mediaType||"all",x.value=!1,O()},O=async()=>{j.value++,U.value.add({substr:S.value,folder_paths_str:C.value,isRegex:m.value,mediaType:I.value}),await V.reset({refetch:!0}),await Ne(),Z(),Y.value.scrollToItem(0),g.value.length||Je.info(We("fuzzy-search-noResults"))};ne("returnToIIB",async()=>{const l=await b.pushAction(Qe).res;f.value.expired=l.expired}),ne("searchIndexExpired",()=>f.value&&(f.value.expired=!0));const $e=()=>{m.value=!m.value},T=Xe(),{onClearAllSelected:Ae,onSelectAll:Re,onReverseSelect:Oe}=kt();return(l,s)=>{const r=wt,y=St,Te=re,M=ue,te=tt,Me=at,H=lt,ze=st,P=ue,Fe=nt,Ue=ot,Ve=re,De=it;return u(),z(oe,null,[a(Te,{visible:x.value,"onUpdate:visible":s[0]||(s[0]=n=>x.value=n),width:"70vw","mask-closable":"",onOk:s[1]||(s[1]=n=>x.value=!1)},{default:t(()=>[a(de,{records:e(U),onReuseRecord:ee},{default:t(({record:n})=>[d("div",Rt,[a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("historyRecordsSubstr"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.substr),1)]),_:2},1024)]),_:2},1024),n.folder_paths_str?(u(),_(y,{key:0},{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("searchScope"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.folder_paths_str),1)]),_:2},1024)]),_:2},1024)):v("",!0),a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("historyRecordsisRegex"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.isRegex),1)]),_:2},1024)]),_:2},1024),n.mediaType?(u(),_(y,{key:1},{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("mediaType"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.mediaType),1)]),_:2},1024)]),_:2},1024)):v("",!0),a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("time"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.time),1)]),_:2},1024)]),_:2},1024),Ot])]),_:1},8,["records"])]),_:1},8,["visible"]),d("div",{class:"container",ref_key:"stackViewEl",ref:ce},[e(k)?v("",!0):(u(),_(te,{key:0,type:"info","show-icon":"",message:l.$t("autoUpdateFeatureTip"),style:{margin:"8px"},closable:"",onClose:s[3]||(s[3]=n=>k.value=!0)},{action:t(()=>[a(M,{size:"small",type:"link",onClick:s[2]||(s[2]=n=>k.value=!0)},{default:t(()=>[i(o(l.$t("gotIt")),1)]),_:1})]),_:1},8,["message"])),f.value&&f.value.expired&&!e(T).autoUpdateIndex?(u(),_(te,{key:1,type:"warning","show-icon":"",message:l.$t("indexExpiredManualUpdate"),style:{margin:"8px"},closable:""},null,8,["message"])):v("",!0),a(vt,{show:!!e(D).length||e(T).keepMultiSelect,onClearAllSelected:e(Ae),onSelectAll:e(Re),onReverseSelect:e(Oe)},null,8,["show","onClearAllSelected","onSelectAll","onReverseSelect"]),d("div",{class:"search-bar",onKeydown:s[9]||(s[9]=G(()=>{},["stop"]))},[a(Me,{value:S.value,"onUpdate:value":s[4]||(s[4]=n=>S.value=n),placeholder:l.$t("fuzzy-search-placeholder")+" "+l.$t("regexSearchEnabledHint"),disabled:!e(b).isIdle,onKeydown:Ye(O,["enter"]),"allow-clear":""},null,8,["value","placeholder","disabled","onKeydown"]),a(ze,{value:I.value,"onUpdate:value":s[5]||(s[5]=n=>I.value=n),style:{width:"100px",margin:"0 4px"},disabled:!e(b).isIdle},{default:t(()=>[a(H,{value:"all"},{default:t(()=>[i(o(l.$t("all")),1)]),_:1}),a(H,{value:"image"},{default:t(()=>[i(o(l.$t("image")),1)]),_:1}),a(H,{value:"video"},{default:t(()=>[i(o(l.$t("video")),1)]),_:1})]),_:1},8,["value","disabled"]),d("div",{class:F(["regex-icon",{selected:A.value}]),onKeydown:s[6]||(s[6]=G(()=>{},["stop"])),onClick:s[7]||(s[7]=n=>A.value=!A.value),title:l.$t("pathOnly")},[a(e($t))],42,Tt),d("div",{class:F(["regex-icon",{selected:m.value}]),onKeydown:s[8]||(s[8]=G(()=>{},["stop"])),onClick:$e,title:"Use Regular Expression"},[d("img",{src:e(At)},null,8,Mt)],34),f.value&&!f.value.img_count?(u(),_(P,{key:0,onClick:e(E),loading:!e(b).isIdle,type:"primary"},{default:t(()=>[i(o(l.$t("generateIndexHint")),1)]),_:1},8,["onClick","loading"])):(u(),z(oe,{key:1},[a(P,{type:"primary",onClick:O,loading:!e(b).isIdle||e(V).loading},{default:t(()=>[i(o(l.$t("search")),1)]),_:1},8,["loading"]),f.value&&f.value.expired&&!e(T).autoUpdateIndex?(u(),_(P,{key:0,onClick:e(E),loading:!e(b).isIdle,style:{"margin-left":"8px"}},{default:t(()=>[i(o(l.$t("UpdateIndex")),1)]),_:1},8,["onClick","loading"])):v("",!0)],64))],32),d("div",zt,[d("div",Ft,o(l.$t("searchScope")),1),a(Fe,{"auto-size":{maxRows:8},value:C.value,"onUpdate:value":s[10]||(s[10]=n=>C.value=n),placeholder:l.$t("specifiedSearchFolder")},null,8,["value","placeholder"])]),d("div",Ut,[e(g).length?(u(),_(M,{key:0,onClick:e(be)},{default:t(()=>[i(o(l.$t("saveLoadedImageAsJson")),1)]),_:1},8,["onClick"])):v("",!0),e(g).length?(u(),_(M,{key:1,onClick:e(ke)},{default:t(()=>[i(o(l.$t("saveAllAsJson")),1)]),_:1},8,["onClick"])):v("",!0),a(M,{onClick:s[11]||(s[11]=n=>x.value=!0)},{default:t(()=>[i(o(l.$t("history")),1)]),_:1})]),a(De,{size:"large",spinning:!e(b).isIdle},{default:t(()=>[a(Ve,{visible:e(R),"onUpdate:visible":s[13]||(s[13]=n=>ie(R)?R.value=n:null),width:"70vw","mask-closable":"",onOk:s[14]||(s[14]=n=>R.value=!1)},{cancelText:t(()=>[]),default:t(()=>[a(Ue,{active:"",loading:!e(me).isIdle},{default:t(()=>[d("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:s[12]||(s[12]=n=>e(Ze)(e(X)))},[d("div",Vt,o(l.$t("doubleClickToCopy")),1),i(" "+o(e(X)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),j.value===0&&!e(g).length&&e(U).getRecords().length?(u(),z("div",Dt,[d("h2",Bt,o(l.$t("restoreFromHistory")),1),a(de,{records:e(U),onReuseRecord:ee},{default:t(({record:n})=>[d("div",Et,[a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("historyRecordsSubstr"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.substr),1)]),_:2},1024)]),_:2},1024),n.folder_paths_str?(u(),_(y,{key:0},{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("searchScope"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.folder_paths_str),1)]),_:2},1024)]),_:2},1024)):v("",!0),a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("historyRecordsisRegex"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.isRegex),1)]),_:2},1024)]),_:2},1024),n.mediaType?(u(),_(y,{key:1},{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("mediaType"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.mediaType),1)]),_:2},1024)]),_:2},1024)):v("",!0),a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("time"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.time),1)]),_:2},1024)]),_:2},1024),Ht])]),_:1},8,["records"])])):v("",!0),e(g)?(u(),_(e(ct),{key:1,ref_key:"scroller",ref:Y,class:"file-list",items:e(g),"item-size":e(Q).first,"key-field":"fullpath","item-secondary-size":e(Q).second,gridItems:e(ve),onScroll:e(Z)},{after:t(()=>[Pt]),default:t(({item:n,index:ae})=>[a(ft,{idx:ae,file:n,"show-menu-idx":e(B),"onUpdate:showMenuIdx":s[15]||(s[15]=le=>ie(B)?B.value=le:null),onFileItemClick:e(ge),"full-screen-preview-image-url":e(g)[e($)]?e(et)(e(g)[e($)]):"","cell-width":e(ye),selected:e(D).includes(ae),onContextMenuClick:e(q),onDragstart:e(_e),onDragend:e(he),onTiktokView:(le,Be)=>e(bt)(e(g),Be),"enable-change-indicator":e(Se),"seed-change-checked":e(Ce),"get-gen-diff":e(xe),"get-gen-diff-watch-dep":e(Ie),"is-selected-mutil-files":e(D).length>1,onPreviewVisibleChange:e(fe)},null,8,["idx","file","show-menu-idx","onFileItemClick","full-screen-preview-image-url","cell-width","selected","onContextMenuClick","onDragstart","onDragend","onTiktokView","enable-change-indicator","seed-change-checked","get-gen-diff","get-gen-diff-watch-dep","is-selected-mutil-files","onPreviewVisibleChange"])]),_:1},8,["items","item-size","item-secondary-size","gridItems","onScroll"])):v("",!0),e(N)?(u(),z("div",Gt,[a(e(mt),{onClick:s[16]||(s[16]=n=>e(J)("prev")),class:F({disable:!e(W)("prev")})},null,8,["class"]),a(e(gt),{onClick:s[17]||(s[17]=n=>e(J)("next")),class:F({disable:!e(W)("next")})},null,8,["class"])])):v("",!0)]),_:1},8,["spinning"]),e(N)&&e(g)&&e(g)[e($)]?(u(),_(_t,{key:2,file:e(g)[e($)],idx:e($),onContextMenuClick:e(q)},null,8,["file","idx","onContextMenuClick"])):v("",!0)],512)],64)}}});const ta=pt(Kt,[["__scopeId","data-v-9726dd9e"]]);export{ta as default}; diff --git a/vue/dist/assets/SubstrSearch-a76ed0be.js b/vue/dist/assets/SubstrSearch-a76ed0be.js deleted file mode 100644 index 363315e..0000000 --- a/vue/dist/assets/SubstrSearch-a76ed0be.js +++ /dev/null @@ -1 +0,0 @@ -import{c as a,A as Ee,d as He,c0 as Pe,aH as Ge,$ as b,at as Ke,c4 as se,v as Le,c6 as je,c7 as qe,ad as Ne,ag as Je,ae as We,c5 as ne,c8 as Qe,r as Xe,o as u,k as z,y as t,z as e,l as d,m as i,t as o,x as _,p as m,B as G,ci as Ye,Q as U,n as oe,C as ie,E as Ze,O as et,U as re,W as ue,aA as tt,V as at,cj as lt,R as st,cc as nt,T as ot,aB as it,aC as rt,ck as ut,q as dt}from"./index-2865012e.js";import{S as pt}from"./index-5aea14c7.js";/* empty css */import"./index-de079109.js";/* empty css */import"./index-6db1bae6.js";import{s as ct,F as ft}from"./FileItem-3bb21719.js";import{M as mt,L as vt,R as gt,f as _t}from"./MultiSelectKeep-d96596db.js";import{c as ht,u as yt}from"./hook-a753b2e2.js";import{g as kt,o as wt}from"./index-9ff6b146.js";import{f as F,H as de,_ as bt,a as St}from"./searchHistory-0a67cf21.js";import"./index-cc5bdcee.js";import"./index-f200274c.js";import"./index-50dada2e.js";import"./index-dfe4c7be.js";import"./index-85cde8a2.js";import"./shortcut-7cf3ed76.js";import"./_isIterateeCall-3cdb292e.js";var Ct={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M952 474H829.8C812.5 327.6 696.4 211.5 550 194.2V72c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v122.2C327.6 211.5 211.5 327.6 194.2 474H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h122.2C211.5 696.4 327.6 812.5 474 829.8V952c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V829.8C696.4 812.5 812.5 696.4 829.8 550H952c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM512 756c-134.8 0-244-109.2-244-244s109.2-244 244-244 244 109.2 244 244-109.2 244-244 244z"}},{tag:"path",attrs:{d:"M512 392c-32.1 0-62.1 12.4-84.8 35.2-22.7 22.7-35.2 52.7-35.2 84.8s12.5 62.1 35.2 84.8C449.9 619.4 480 632 512 632s62.1-12.5 84.8-35.2C619.4 574.1 632 544 632 512s-12.5-62.1-35.2-84.8A118.57 118.57 0 00512 392z"}}]},name:"aim",theme:"outlined"};const xt=Ct;function pe(p){for(var c=1;c(it("data-v-2c2d47fe"),p=p(),rt(),p),Rt={style:{"padding-right":"16px"}},Ot=L(()=>d("div",null,null,-1)),Tt=["title"],Mt=["src"],zt={class:"search-bar"},Ut={class:"form-name"},Ft={class:"search-bar last actions"},Vt={class:"hint"},Dt={key:0,style:{margin:"64px 16px 32px",padding:"8px",background:"var(--zp-secondary-variant-background)","border-radius":"16px"}},Bt={style:{margin:"16px 32px 16px"}},Et={style:{"padding-right":"16px"}},Ht=L(()=>d("div",null,null,-1)),Pt=L(()=>d("div",{style:{padding:"16px 0 512px"}},null,-1)),Gt={key:2,class:"preview-switch"},Kt=He({__name:"SubstrSearch",props:{tabIdx:{},paneIdx:{},searchScope:{}},setup(p){const c=p,h=Pe(),k=Ge("iib_auto_update_feature_tip_shown",!1),v=b(!1),S=b(""),A=b(!1),C=b(c.searchScope??""),x=b(!1),j=b(0),I=b("all"),V=ht(l=>{const s={cursor:l,regexp:v.value?S.value:"",surstr:v.value?"":S.value,path_only:A.value,folder_paths:(C.value??"").split(/,|\n/).map(r=>r.trim()).filter(r=>r),media_type:I.value};return ut(s)}),{queue:w,images:g,onContextMenuClickU:q,stackViewEl:ce,previewIdx:$,previewing:N,onPreviewVisibleChange:fe,previewImgMove:J,canPreview:W,itemSize:Q,gridItems:me,showGenInfo:R,imageGenInfo:X,q:ve,multiSelectedIdxs:D,onFileItemClick:ge,scroller:Y,showMenuIdx:B,onFileDragStart:_e,onFileDragEnd:he,cellWidth:ye,onScroll:Z,saveAllFileAsJson:ke,saveLoadedFileAsJson:we,props:be,changeIndchecked:Se,seedChangeChecked:Ce,getGenDiff:xe,getGenDiffWatchDep:Ie}=yt(V),f=b();Ke(async()=>{f.value=await se(),f.value.img_count&&f.value.expired&&T.autoUpdateIndex&&await E(),c.searchScope&&await O()}),Le(()=>c,async l=>{be.value=l},{deep:!0,immediate:!0});const E=je(()=>w.pushAction(async()=>(await qe(),f.value=await se(),h.tagMap.clear(),f.value)).res),ee=l=>{S.value=l.substr,C.value=l.folder_paths_str,v.value=l.isRegex,I.value=l.mediaType||"all",x.value=!1,O()},O=async()=>{j.value++,F.value.add({substr:S.value,folder_paths_str:C.value,isRegex:v.value,mediaType:I.value}),await V.reset({refetch:!0}),await Ne(),Z(),Y.value.scrollToItem(0),g.value.length||Je.info(We("fuzzy-search-noResults"))};ne("returnToIIB",async()=>{const l=await w.pushAction(Qe).res;f.value.expired=l.expired}),ne("searchIndexExpired",()=>f.value&&(f.value.expired=!0));const $e=()=>{v.value=!v.value},T=Xe(),{onClearAllSelected:Ae,onSelectAll:Re,onReverseSelect:Oe}=kt();return(l,s)=>{const r=bt,y=St,Te=re,M=ue,te=tt,Me=at,H=lt,ze=st,P=ue,Ue=nt,Fe=ot,Ve=re,De=pt;return u(),z(oe,null,[a(Te,{visible:x.value,"onUpdate:visible":s[0]||(s[0]=n=>x.value=n),width:"70vw","mask-closable":"",onOk:s[1]||(s[1]=n=>x.value=!1)},{default:t(()=>[a(de,{records:e(F),onReuseRecord:ee},{default:t(({record:n})=>[d("div",Rt,[a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("historyRecordsSubstr"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.substr),1)]),_:2},1024)]),_:2},1024),n.folder_paths_str?(u(),_(y,{key:0},{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("searchScope"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.folder_paths_str),1)]),_:2},1024)]),_:2},1024)):m("",!0),a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("historyRecordsisRegex"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.isRegex),1)]),_:2},1024)]),_:2},1024),n.mediaType?(u(),_(y,{key:1},{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("mediaType"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.mediaType),1)]),_:2},1024)]),_:2},1024)):m("",!0),a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("time"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.time),1)]),_:2},1024)]),_:2},1024),Ot])]),_:1},8,["records"])]),_:1},8,["visible"]),d("div",{class:"container",ref_key:"stackViewEl",ref:ce},[e(k)?m("",!0):(u(),_(te,{key:0,type:"info","show-icon":"",message:l.$t("autoUpdateFeatureTip"),style:{margin:"8px"},closable:"",onClose:s[3]||(s[3]=n=>k.value=!0)},{action:t(()=>[a(M,{size:"small",type:"link",onClick:s[2]||(s[2]=n=>k.value=!0)},{default:t(()=>[i(o(l.$t("gotIt")),1)]),_:1})]),_:1},8,["message"])),f.value&&f.value.expired&&!e(T).autoUpdateIndex?(u(),_(te,{key:1,type:"warning","show-icon":"",message:l.$t("indexExpiredManualUpdate"),style:{margin:"8px"},closable:""},null,8,["message"])):m("",!0),a(mt,{show:!!e(D).length||e(T).keepMultiSelect,onClearAllSelected:e(Ae),onSelectAll:e(Re),onReverseSelect:e(Oe)},null,8,["show","onClearAllSelected","onSelectAll","onReverseSelect"]),d("div",{class:"search-bar",onKeydown:s[9]||(s[9]=G(()=>{},["stop"]))},[a(Me,{value:S.value,"onUpdate:value":s[4]||(s[4]=n=>S.value=n),placeholder:l.$t("fuzzy-search-placeholder")+" "+l.$t("regexSearchEnabledHint"),disabled:!e(w).isIdle,onKeydown:Ye(O,["enter"]),"allow-clear":""},null,8,["value","placeholder","disabled","onKeydown"]),a(ze,{value:I.value,"onUpdate:value":s[5]||(s[5]=n=>I.value=n),style:{width:"100px",margin:"0 4px"},disabled:!e(w).isIdle},{default:t(()=>[a(H,{value:"all"},{default:t(()=>[i(o(l.$t("all")),1)]),_:1}),a(H,{value:"image"},{default:t(()=>[i(o(l.$t("image")),1)]),_:1}),a(H,{value:"video"},{default:t(()=>[i(o(l.$t("video")),1)]),_:1})]),_:1},8,["value","disabled"]),d("div",{class:U(["regex-icon",{selected:A.value}]),onKeydown:s[6]||(s[6]=G(()=>{},["stop"])),onClick:s[7]||(s[7]=n=>A.value=!A.value),title:l.$t("pathOnly")},[a(e($t))],42,Tt),d("div",{class:U(["regex-icon",{selected:v.value}]),onKeydown:s[8]||(s[8]=G(()=>{},["stop"])),onClick:$e,title:"Use Regular Expression"},[d("img",{src:e(At)},null,8,Mt)],34),f.value&&!f.value.img_count?(u(),_(P,{key:0,onClick:e(E),loading:!e(w).isIdle,type:"primary"},{default:t(()=>[i(o(l.$t("generateIndexHint")),1)]),_:1},8,["onClick","loading"])):(u(),z(oe,{key:1},[a(P,{type:"primary",onClick:O,loading:!e(w).isIdle||e(V).loading},{default:t(()=>[i(o(l.$t("search")),1)]),_:1},8,["loading"]),f.value&&f.value.expired&&!e(T).autoUpdateIndex?(u(),_(P,{key:0,onClick:e(E),loading:!e(w).isIdle,style:{"margin-left":"8px"}},{default:t(()=>[i(o(l.$t("UpdateIndex")),1)]),_:1},8,["onClick","loading"])):m("",!0)],64))],32),d("div",zt,[d("div",Ut,o(l.$t("searchScope")),1),a(Ue,{"auto-size":{maxRows:8},value:C.value,"onUpdate:value":s[10]||(s[10]=n=>C.value=n),placeholder:l.$t("specifiedSearchFolder")},null,8,["value","placeholder"])]),d("div",Ft,[e(g).length?(u(),_(M,{key:0,onClick:e(we)},{default:t(()=>[i(o(l.$t("saveLoadedImageAsJson")),1)]),_:1},8,["onClick"])):m("",!0),e(g).length?(u(),_(M,{key:1,onClick:e(ke)},{default:t(()=>[i(o(l.$t("saveAllAsJson")),1)]),_:1},8,["onClick"])):m("",!0),a(M,{onClick:s[11]||(s[11]=n=>x.value=!0)},{default:t(()=>[i(o(l.$t("history")),1)]),_:1})]),a(De,{size:"large",spinning:!e(w).isIdle},{default:t(()=>[a(Ve,{visible:e(R),"onUpdate:visible":s[13]||(s[13]=n=>ie(R)?R.value=n:null),width:"70vw","mask-closable":"",onOk:s[14]||(s[14]=n=>R.value=!1)},{cancelText:t(()=>[]),default:t(()=>[a(Fe,{active:"",loading:!e(ve).isIdle},{default:t(()=>[d("div",{style:{width:"100%","word-break":"break-all","white-space":"pre-line","max-height":"70vh",overflow:"auto"},onDblclick:s[12]||(s[12]=n=>e(Ze)(e(X)))},[d("div",Vt,o(l.$t("doubleClickToCopy")),1),i(" "+o(e(X)),1)],32)]),_:1},8,["loading"])]),_:1},8,["visible"]),j.value===0&&!e(g).length&&e(F).getRecords().length?(u(),z("div",Dt,[d("h2",Bt,o(l.$t("restoreFromHistory")),1),a(de,{records:e(F),onReuseRecord:ee},{default:t(({record:n})=>[d("div",Et,[a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("historyRecordsSubstr"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.substr),1)]),_:2},1024)]),_:2},1024),n.folder_paths_str?(u(),_(y,{key:0},{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("searchScope"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.folder_paths_str),1)]),_:2},1024)]),_:2},1024)):m("",!0),a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("historyRecordsisRegex"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.isRegex),1)]),_:2},1024)]),_:2},1024),n.mediaType?(u(),_(y,{key:1},{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("mediaType"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.mediaType),1)]),_:2},1024)]),_:2},1024)):m("",!0),a(y,null,{default:t(()=>[a(r,{span:4},{default:t(()=>[i(o(l.$t("time"))+":",1)]),_:1}),a(r,{span:20},{default:t(()=>[i(o(n.time),1)]),_:2},1024)]),_:2},1024),Ht])]),_:1},8,["records"])])):m("",!0),e(g)?(u(),_(e(ct),{key:1,ref_key:"scroller",ref:Y,class:"file-list",items:e(g),"item-size":e(Q).first,"key-field":"fullpath","item-secondary-size":e(Q).second,gridItems:e(me),onScroll:e(Z)},{after:t(()=>[Pt]),default:t(({item:n,index:ae})=>[a(ft,{idx:ae,file:n,"show-menu-idx":e(B),"onUpdate:showMenuIdx":s[15]||(s[15]=le=>ie(B)?B.value=le:null),onFileItemClick:e(ge),"full-screen-preview-image-url":e(g)[e($)]?e(et)(e(g)[e($)]):"","cell-width":e(ye),selected:e(D).includes(ae),onContextMenuClick:e(q),onDragstart:e(_e),onDragend:e(he),onTiktokView:(le,Be)=>e(wt)(e(g),Be),"enable-change-indicator":e(Se),"seed-change-checked":e(Ce),"get-gen-diff":e(xe),"get-gen-diff-watch-dep":e(Ie),"is-selected-mutil-files":e(D).length>1,onPreviewVisibleChange:e(fe)},null,8,["idx","file","show-menu-idx","onFileItemClick","full-screen-preview-image-url","cell-width","selected","onContextMenuClick","onDragstart","onDragend","onTiktokView","enable-change-indicator","seed-change-checked","get-gen-diff","get-gen-diff-watch-dep","is-selected-mutil-files","onPreviewVisibleChange"])]),_:1},8,["items","item-size","item-secondary-size","gridItems","onScroll"])):m("",!0),e(N)?(u(),z("div",Gt,[a(e(vt),{onClick:s[16]||(s[16]=n=>e(J)("prev")),class:U({disable:!e(W)("prev")})},null,8,["class"]),a(e(gt),{onClick:s[17]||(s[17]=n=>e(J)("next")),class:U({disable:!e(W)("next")})},null,8,["class"])])):m("",!0)]),_:1},8,["spinning"]),e(N)&&e(g)&&e(g)[e($)]?(u(),_(_t,{key:2,file:e(g)[e($)],idx:e($),onContextMenuClick:e(q)},null,8,["file","idx","onContextMenuClick"])):m("",!0)],512)],64)}}});const ra=dt(Kt,[["__scopeId","data-v-2c2d47fe"]]);export{ra as default}; diff --git a/vue/dist/assets/SubstrSearch-df0d485d.css b/vue/dist/assets/SubstrSearch-df0d485d.css deleted file mode 100644 index 99ea601..0000000 --- a/vue/dist/assets/SubstrSearch-df0d485d.css +++ /dev/null @@ -1 +0,0 @@ -[data-v-2c2d47fe] .float-panel{position:fixed}.regex-icon[data-v-2c2d47fe]{user-select:none;padding:4px;margin:0 4px;cursor:pointer;border:1px solid var(--zp-border);border-radius:4px}.regex-icon img[data-v-2c2d47fe]{height:1.5em}.regex-icon[data-v-2c2d47fe]:hover{background:var(--zp-border)}.regex-icon.selected[data-v-2c2d47fe]{background:var(--primary-color-1);border:1px solid var(--primary-color)}.search-bar[data-v-2c2d47fe]{padding:8px 8px 0;display:flex}.search-bar.last[data-v-2c2d47fe]{padding-bottom:8px}.search-bar .form-name[data-v-2c2d47fe]{flex-shrink:0;padding:4px 8px}.search-bar .actions>*[data-v-2c2d47fe]{margin-right:4px}.container[data-v-2c2d47fe]{background:var(--zp-secondary-background);position:relative}.container .file-list[data-v-2c2d47fe]{list-style:none;padding:8px;height:100%;overflow:auto;height:var(--pane-max-height);width:100%} diff --git a/vue/dist/assets/TagSearch-3b2eb264.css b/vue/dist/assets/TagSearch-3b2eb264.css deleted file mode 100644 index 4eb4acd..0000000 --- a/vue/dist/assets/TagSearch-3b2eb264.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.ant-collapse{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";background-color:#fafafa;border:1px solid #d9d9d9;border-bottom:0;border-radius:2px}.ant-collapse>.ant-collapse-item{border-bottom:1px solid #d9d9d9}.ant-collapse>.ant-collapse-item:last-child,.ant-collapse>.ant-collapse-item:last-child>.ant-collapse-header{border-radius:0 0 2px 2px}.ant-collapse>.ant-collapse-item>.ant-collapse-header{position:relative;display:flex;flex-wrap:nowrap;align-items:flex-start;padding:12px 16px;color:#000000d9;line-height:1.5715;cursor:pointer;transition:all .3s,visibility 0s}.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow{display:inline-block;margin-right:12px;font-size:12px;vertical-align:-1px}.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow svg{transition:transform .24s}.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-extra{margin-left:auto}.ant-collapse>.ant-collapse-item>.ant-collapse-header:focus{outline:none}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only{cursor:default}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only .ant-collapse-header-text{cursor:pointer}.ant-collapse>.ant-collapse-item.ant-collapse-no-arrow>.ant-collapse-header{padding-left:12px}.ant-collapse-icon-position-right>.ant-collapse-item>.ant-collapse-header{position:relative;padding:12px 40px 12px 16px}.ant-collapse-icon-position-right>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow{position:absolute;top:50%;right:16px;left:auto;margin:0;transform:translateY(-50%)}.ant-collapse-content{color:#000000d9;background-color:#fff;border-top:1px solid #d9d9d9}.ant-collapse-content>.ant-collapse-content-box{padding:16px}.ant-collapse-content-hidden{display:none}.ant-collapse-item:last-child>.ant-collapse-content{border-radius:0 0 2px 2px}.ant-collapse-borderless{background-color:#fafafa;border:0}.ant-collapse-borderless>.ant-collapse-item{border-bottom:1px solid #d9d9d9}.ant-collapse-borderless>.ant-collapse-item:last-child,.ant-collapse-borderless>.ant-collapse-item:last-child .ant-collapse-header{border-radius:0}.ant-collapse-borderless>.ant-collapse-item>.ant-collapse-content{background-color:transparent;border-top:0}.ant-collapse-borderless>.ant-collapse-item>.ant-collapse-content>.ant-collapse-content-box{padding-top:4px}.ant-collapse-ghost{background-color:transparent;border:0}.ant-collapse-ghost>.ant-collapse-item{border-bottom:0}.ant-collapse-ghost>.ant-collapse-item>.ant-collapse-content{background-color:transparent;border-top:0}.ant-collapse-ghost>.ant-collapse-item>.ant-collapse-content>.ant-collapse-content-box{padding-top:12px;padding-bottom:12px}.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header,.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header>.arrow{color:#00000040;cursor:not-allowed}.ant-collapse-rtl{direction:rtl}.ant-collapse-rtl .ant-collapse>.ant-collapse-item>.ant-collapse-header{padding:12px 40px 12px 16px}.ant-collapse-rtl.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow{margin-right:0;margin-left:12px}.ant-collapse-rtl.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow svg{transform:rotate(180deg)}.ant-collapse-rtl.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-extra{margin-right:auto;margin-left:0}.ant-collapse-rtl.ant-collapse>.ant-collapse-item.ant-collapse-no-arrow>.ant-collapse-header{padding-right:12px;padding-left:0}.small-alpha-slider{height:10px!important}.small-alpha-slider .small-bar{height:10px!important;width:10px!important}.small-alpha-slider .small-bar div{width:12px!important;height:12px!important;border-radius:5px!important;transform:translate(-6px,-2px);margin-top:1px!important}.bee-alpha-slider{position:relative;margin-bottom:15px;width:100%;height:14px;box-shadow:2px 0 8px #00000014;border-radius:15px}.bee-alpha-slider.is-vertical{width:14px;height:100%;display:inline-block;transform:rotate(180deg)}.bee-alpha-slider.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.bee-alpha-slider__bar{position:relative;width:100%;height:100%;border-radius:15px}.bee-alpha-slider__bar-pointer{position:absolute;width:14px;height:14px}.bee-alpha-slider__bar-handle{width:14px;height:14px;border-radius:6px;transform:translate(-7px,-2px);background-color:#f8f8f8;margin-top:2px;box-shadow:0 1px 4px #0000005e;cursor:pointer}.bee-alpha-slider__bar-handle.vertical{transform:translateY(-7px);margin-top:0}.bee-compact{margin-bottom:15px;width:auto;box-shadow:3px 0 5px #00000014;display:inline-block}.bee-compact__row{position:relative;width:100%;margin:0}.bee-compact__row>*{display:inline-block;vertical-align:middle}.bee-compact__color_cube{width:100%;height:100%}.bee-compact__color_cube.transparent:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:white}.bee-compact__color_cube.transparent:after{content:"";position:absolute;top:100%;left:0;transform:rotate(-45deg);transform-origin:0 0;width:35px;height:1px;background:red}.bee-compact__color_cube.advance{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAdCAYAAAC9pNwMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABqVJREFUeNrEl11yHDUQx1ua2Zlde2M7jqESqnjg45kjcBwOwQG4BY+8cwWK17xBUUARICQhTmI7tte7Ozs7o+bXLTleuACpKNJqJP3789+doKoSPxfVGxFZioS1iK5Yd0nCJko9iLTVVvZSlCOp5FBF7vP5RFTelyDHvmYvMPPtiP19fu+HIHPetrllX2TLMJAOgEehti3ZY/Axap51ZB5ZDEnGMUoCNCmDbRv+2Q4CDJ5Mymj4OmE0CNj6b5WJlkel3xkiGXjOc0imDH/JDid1AXQEfKgccHg3lN+uhh+v2WkkOvCUnT3GjP2WOfrJzjUNPq/ugPUej1TiwME3+DfVUhWkEQF6LZraJxsp6xHLIzW/DNyAW75PGJVrOxbQFSeWzOsdjQ/tZHTxtSgdzAimMfOAdbas7crUvIWAqZg5+gg8FBzYTOygbo1tAb1xTYMs/q1xAFgnvBx5JrKO2X9pzJrJhr+b5BaY8vjG3O+w7HFnypkZ+zP3K8AWL7FHiRsJappe4knA9fo/pj7WrIrdshBs8cukcu0ljhK2lZt1Q8B1msMj5WCQKoibd8q8p1J8i6aWJnrJCcDljDX2Cm8Jn2WJC9PtIHpYeowza125Dc3c6CQ1MbEdooxoPQw54Ak9jigaKcAMk9ddgUi68ZxMmNbNG8hTXXjOZrPf+vg4C+RpRRJqO0ps8FxtzhoJLiSIHCWtLi9u5LiZyqKv0UvlHmaccukoVjJLFu2YUy946FRidS7beCXN9i3gKzd1Yo53ps7ppTnqEYD0mYNldpuxnvIo2nZb/L+ay9tulA/sJpE/Tfchj1H2kW2KpsFYSK4YgI1vZDJe57XmIAu642N5kCxUJfQ8bA48IKpWGNKi/T7rPWRMBMkp5lhz5mUlV0O+fGAGC5XMkTzoG349I/D+Qis0jpeZBt0CXaZGnwtwdcS7A/4ycOIi3bNI0pzfxoVHQYYDIu+A9djJ5bKX+c2BVKnHS5Xcw8QTecWlXxi/khgvYMFzHlp4/g74WREshg3zpuS9mfowShxyrnv6wFS2Dl12QUDwaO54xIWTKZem8up7M0ojn5BzdftEdPMzII9ljE8kVde8Z5y89PSJYcACAJhWTigFOO1rpqRbWs0pKjp4Nkl6OMiGQiFnKsOnLQNqJNe33yV5iFml/4YLfzB+wwpvuNoT+eq0F+JWYtp50MlXLBvUAkLlXXbdloHkUsREDsc6y9LDvs2pTNJD6eM5+x/KAslqWK/pOo/WEIvw3PC3q8rZz3IzWBqqp2CpTvjAACIVyFhLMQmlwXPU9gYrC+lCZs0VtPkc0Jfc+Va+XK/lK3Pr10XhF8ToAjf1VKktAH0hd3srqesSMmCJaiNwJB/IzNviF9Uor8NnndSkyRBfExbPpdHfKRg/yqH8JCPxdvbZVE6+6GTzmCD9Af45RfhzLGZZtEaIVQVdDpLwVByAHeIu8DXWGTySUil8wSNw6fMoliZnfHsqfXiC2M+gjJXX7wuEOvm4gWUBa9h4xrAAtwy6hHyWo1QQGc9gDkD7sAt8VjqETSnUHaArd0Gupc8ZBv4n4ymUfiEPxEu4/A3eyayX+x+ZZjjoIEl6D+2zrJJgyOoKf68RCKJXOpt4B3xZQNclwVeSbXVd2hXzKXlpqsC3c0ttyR3La6rTW2yyP1dpSbdowUtBji1+aAioxTZXD+ORZcrs+A5YF9kWnnfWeJUSZgnswKeZ7FNHkaeXgjTmowVhkhuQ1pQxCE1aik2A16OVVwtvayxmW6fdeDNKKcs79Zhy5eaFwIOXsxu3grolVsUVS0y0pAKN3tpMStdlheJajZ1V5rxWHxoJjR6crr51frlg59K73AFWf7h3gs8BlWtpsHpqwrioa6nJj5lphgim1C3XdPGuuZm2hYIB90QCrKqxDnPkm81hN6pvAyqElRdvN3exjdXeYGQS8oXGmjgoICQjhUh6jdSYmvQdpakSFArIfg6bqiqZW6t3N6HaNbUX7M4Lt4NK8bX3SblJM9Mas+65xuodpVFRj58HfLyAdPZjftCittnLXaHWKQdczNE4trkfK8GFiT3RVqU523gaBbeC04/3zW3pp0yJWFqfofjZejBfw3bGE3WNO8jrmLtDt5ahVyHt+DiUDv/WtFpAQ+4MrDFvC3Bb+uXiI2f1TXGURfesNPc11mjacki1dK/JKTnsUmYGLnnM/2MycWRt7dCtedrSyhqPe39tPBecjV3rrTWDweqzSl2hsfVwM3lX+UL+f0CuTv/Hn38EGAAvCnNy1JKVIQAAAABJRU5ErkJggg==)}.bee-compact__color_cube .alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.bee-compact__color-cube--wrap{position:relative;width:25px;height:25px;cursor:pointer;overflow:hidden}.bee-compact__color-cube--wrap:hover{transform:scale(1.2);z-index:299;transition:transform .2s}.bee-colorPicker__record{display:flex;align-items:center;margin-top:20px}.bee-colorPicker__record .text{width:48px;margin-right:10px;text-align:right;font-size:12px;color:#666}.bee-colorPicker__record .color-list{width:auto;display:flex;position:relative;margin:0}.bee-colorPicker__record .color-list .color-item{position:relative;width:25px;height:25px;cursor:pointer;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:1px;box-shadow:3px 0 5px #00000014}.bee-colorPicker__record .color-list .color-item__round{border-radius:50%}.bee-colorPicker__record .color-list .color-item.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.bee-colorPicker__record .color-list .color-item:hover{transform:scale(1.2);z-index:299;transition:transform .2s}.bee-colorPicker__record .color-list .color-item__display{width:100%;height:100%}.small-hue-slider{height:10px!important}.small-hue-slider .small-bar{height:10px!important;width:10px!important}.small-hue-slider .small-bar div{width:12px!important;height:12px!important;border-radius:5px!important;transform:translate(-6px,-2px);margin-top:1px!important}.bee-hue-colorPicker{position:relative;margin-bottom:15px;width:100%;height:14px;box-shadow:2px 0 8px #00000014;border-radius:15px}.bee-hue-colorPicker.is-vertical{width:14px;height:100%;display:inline-block;transform:rotate(180deg)}.bee-hue-colorPicker.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.bee-hue-colorPicker__inner{position:relative;width:100%;height:100%;border-radius:15px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMkAAAAdCAYAAAAAaUg8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAKtJREFUeNrs09EKgjAUgOGzEFfv/7CVBceiLiJiLnf7fSAbDoUj/iWnyKgRcXxf9Wtt7Vvntf8854jLY3uN19qzf67nH/e2nmmdZ8xjg2x+sI533qf9g4wM/3GvLPumOHVMWf/4SiWWsUG6/6bG+/NWDgE0iQREAiIBkYBIQCQgEhAJiAQQCYgERAIiAZGASEAkIBJAJCASEAmIBEQCIgGRgEgAkYBIYNAqwAD5oWo3bpsiKwAAAABJRU5ErkJggg==);background-size:100%}.bee-hue-colorPicker__inner-pointer{position:absolute;width:14px;height:14px}.bee-hue-colorPicker__inner-handle{width:14px;height:14px;border-radius:6px;transform:translate(-7px,-2px);background-color:#f8f8f8;margin-top:2px;box-shadow:0 1px 4px #0000005e;cursor:pointer}.bee-hue-colorPicker__inner-handle.vertical{transform:translate(-1px,-7px);margin-top:0}.small-light-slider{height:10px!important}.small-light-slider .small-bar{height:10px!important;width:10px!important}.small-light-slider .small-bar div{width:12px!important;height:12px!important;border-radius:5px!important;transform:translate(-6px,-2px);margin-top:1px!important}.bee-light-colorPicker{position:relative;margin-bottom:15px;width:100%;height:14px;box-shadow:2px 0 8px #00000014;border-radius:15px}.bee-light-colorPicker.is-vertical{width:14px;height:100%;display:inline-block;transform:rotate(180deg)}.bee-light-colorPicker.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.bee-light-colorPicker__inner{position:relative;width:100%;height:100%;border-radius:15px}.bee-light-colorPicker__inner-pointer{position:absolute;width:14px;height:14px}.bee-light-colorPicker__inner-handle{width:14px;height:14px;border-radius:6px;transform:translate(-7px,-2px);background-color:#f8f8f8;margin-top:2px;box-shadow:0 1px 4px #0000005e;cursor:pointer}.bee-light-colorPicker__inner-handle.vertical{transform:translateY(-7px);margin-top:0}.bee-saturation{position:relative;margin-bottom:15px;width:100%;height:125px}.bee-saturation__chrome{border-top-left-radius:5px;border-top-right-radius:5px;border-color:transparent}.bee-saturation__hidden{overflow:hidden}.bee-saturation__white,.bee-saturation__black{position:absolute;top:0;left:0;right:0;bottom:0}.bee-saturation__black{background:linear-gradient(0deg,#000,transparent)}.bee-saturation__white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.bee-saturation__cursor{position:absolute}.bee-saturation__cursor div{transform:translate(-5px,-5px);box-shadow:0 1px 4px #0000005e;width:10px;height:10px;border:1px solid white;border-radius:50%;cursor:pointer}.inputs-controls{display:flex;font-size:16px;margin-bottom:5px}.inputs-controls .formatBtn{position:relative;display:inline-flex;justify-content:center;align-items:center;padding:1px;border:0;text-align:center;cursor:pointer;background-color:transparent;font-weight:700;outline:none;margin-right:5px}.inputs-controls .formatBtn:hover{color:#1a3aff}.inputs-controls .format-group{display:flex;flex-grow:1}.inputs-controls .format-group input{padding:5px;margin:0 3px;min-width:0;text-align:center;border-width:0 0 1px 0;-webkit-appearance:none;appearance:none;-moz-appearance:textfield;outline:none;flex:1}.inputs-controls .format-group input::-webkit-outer-spin-button,.inputs-controls .format-group input::-webkit-inner-spin-button{-webkit-appearance:none!important;margin:0}.bee-fk-colorPicker{position:relative;box-sizing:border-box;border-radius:3px;box-shadow:0 0 10px #00000026;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;width:249px;padding-bottom:10px}.bee-fk-colorPicker__inner{padding:12px}.bee-fk-colorPicker__header{margin-bottom:12px;z-index:999;text-align:left}.bee-fk-colorPicker__header .back{border:solid black;border-width:0 1px 1px 0;display:inline-block;padding:4px;margin-left:2px;transform:rotate(135deg);-webkit-transform:rotate(135deg)}.bee-fk-colorPicker__display{position:relative;width:100%;margin:0;text-align:left}.bee-fk-colorPicker__display .transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.bee-fk-colorPicker__display .current-color{margin-right:10px;width:50px;height:24px;box-shadow:3px 0 5px #00000014;position:relative;cursor:pointer;overflow:hidden;display:inline-block;vertical-align:middle}.bee-fk-colorPicker__display .current-color .color-cube{width:100%;height:100%}.bee-fk-colorPicker__display .hexColor-prefix{position:relative;padding:0 4px;font-size:14px;display:inline-block;vertical-align:middle}.bee-fk-colorPicker__display input{width:25px;text-align:center;outline:0;border-top:0;border-right:0;border-left:none;display:inline-block;vertical-align:middle;padding-bottom:3px;border-bottom:1px solid #e3e2e8}.bee-fk-colorPicker__display .hexColor-input{width:64px}.bee-fk-colorPicker__display .action{float:right;vertical-align:middle}.bee-fk-colorPicker__display .action .clear-btn{border-color:transparent;color:#409eff;background:transparent;padding-left:0;padding-right:0;display:inline-block;vertical-align:middle;cursor:pointer}.bee-fk-colorPicker__display .action .copy-btn{border-color:transparent;color:#13ce66cc;background:transparent;padding-left:0;padding-right:0;display:inline-block;margin-left:10px;vertical-align:middle;cursor:pointer}.bee-ele-colorPicker{position:relative;box-sizing:border-box;border-radius:3px;box-shadow:0 0 10px #00000026;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;padding:10px;width:300px}.bee-ele-colorPicker .bee-ele-row{display:flex}.bee-ele-colorPicker .bee-ele-row .bee-ele-saturation{width:280px;height:180px}.bee-ele-colorPicker .bee-ele-row .bee-ele-hue{margin-left:10px;height:180px}.bee-chrome-colorPicker{position:relative;box-sizing:border-box;border-radius:3px;box-shadow:0 0 10px #00000026;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;width:250px;padding-bottom:20px}.bee-chrome-colorPicker-body{padding:0 12px;background-color:#fff}.bee-chrome-colorPicker-body .chrome-controls{display:flex}.bee-chrome-colorPicker-body .chrome-controls .chrome-color-wrap{position:relative;width:36px;height:36px;border-radius:50%;overflow:hidden;z-index:1}.bee-chrome-colorPicker-body .chrome-controls .chrome-color-wrap .current-color{width:100%;height:100%}.bee-chrome-colorPicker-body .chrome-controls .chrome-sliders{flex:1;margin-left:10px}.bee-color-wrap{margin-right:10px;width:50px;height:24px;box-shadow:3px 0 5px #00000014;position:relative;cursor:pointer;overflow:hidden;display:inline-block;vertical-align:middle}.bee-color-wrap.transparent{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.bee-color-wrap.round{width:22px;height:22px;border-radius:50%;border:1px solid #d8d8d8}.bee-color-wrap .current-color{width:100%;height:100%}.vc-alpha-slider[data-v-18925ba6]{position:relative;margin-bottom:15px;width:100%;height:14px;box-shadow:2px 0 8px #00000014;border-radius:15px}.vc-alpha-slider.is-vertical[data-v-18925ba6]{width:14px;height:100%;display:inline-block;transform:rotate(180deg)}.vc-alpha-slider.transparent[data-v-18925ba6]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.vc-alpha-slider__bar[data-v-18925ba6]{position:relative;width:100%;height:100%;border-radius:15px}.vc-alpha-slider__bar-pointer[data-v-18925ba6]{position:absolute;width:14px;height:14px}.vc-alpha-slider__bar-handle[data-v-18925ba6]{width:14px;height:14px;border-radius:6px;transform:translate(-7px,-2px);background-color:#f8f8f8;margin-top:2px;box-shadow:0 1px 4px #0000005e;cursor:pointer}.vc-alpha-slider__bar-handle.vertical[data-v-18925ba6]{transform:translateY(-7px);margin-top:0}.vc-alpha-slider.small-slider[data-v-18925ba6]{height:10px!important}.vc-alpha-slider.small-slider .small-bar[data-v-18925ba6]{height:10px!important;width:10px!important}.vc-alpha-slider.small-slider .small-bar div[data-v-18925ba6]{width:12px!important;height:12px!important;border-radius:5px!important;transform:translate(-6px,-2px);margin-top:1px!important}.vc-compact[data-v-b969fd48]{margin-bottom:15px;width:auto;box-shadow:3px 0 5px #00000014;display:inline-block}.vc-compact__row[data-v-b969fd48]{position:relative;width:100%;margin:0;height:27px}.vc-compact__row>*[data-v-b969fd48]{display:inline-block;vertical-align:middle}.vc-compact__color_cube[data-v-b969fd48]{width:100%;height:100%}.vc-compact__color_cube.transparent[data-v-b969fd48]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:white}.vc-compact__color_cube.transparent[data-v-b969fd48]:after{content:"";position:absolute;top:100%;left:0;transform:rotate(-45deg);transform-origin:0 0;width:35px;height:1px;background:red}.vc-compact__color_cube.advance[data-v-b969fd48]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAdCAYAAAC9pNwMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABqVJREFUeNrEl11yHDUQx1ua2Zlde2M7jqESqnjg45kjcBwOwQG4BY+8cwWK17xBUUARICQhTmI7tte7Ozs7o+bXLTleuACpKNJqJP3789+doKoSPxfVGxFZioS1iK5Yd0nCJko9iLTVVvZSlCOp5FBF7vP5RFTelyDHvmYvMPPtiP19fu+HIHPetrllX2TLMJAOgEehti3ZY/Axap51ZB5ZDEnGMUoCNCmDbRv+2Q4CDJ5Mymj4OmE0CNj6b5WJlkel3xkiGXjOc0imDH/JDid1AXQEfKgccHg3lN+uhh+v2WkkOvCUnT3GjP2WOfrJzjUNPq/ugPUej1TiwME3+DfVUhWkEQF6LZraJxsp6xHLIzW/DNyAW75PGJVrOxbQFSeWzOsdjQ/tZHTxtSgdzAimMfOAdbas7crUvIWAqZg5+gg8FBzYTOygbo1tAb1xTYMs/q1xAFgnvBx5JrKO2X9pzJrJhr+b5BaY8vjG3O+w7HFnypkZ+zP3K8AWL7FHiRsJappe4knA9fo/pj7WrIrdshBs8cukcu0ljhK2lZt1Q8B1msMj5WCQKoibd8q8p1J8i6aWJnrJCcDljDX2Cm8Jn2WJC9PtIHpYeowza125Dc3c6CQ1MbEdooxoPQw54Ak9jigaKcAMk9ddgUi68ZxMmNbNG8hTXXjOZrPf+vg4C+RpRRJqO0ps8FxtzhoJLiSIHCWtLi9u5LiZyqKv0UvlHmaccukoVjJLFu2YUy946FRidS7beCXN9i3gKzd1Yo53ps7ppTnqEYD0mYNldpuxnvIo2nZb/L+ay9tulA/sJpE/Tfchj1H2kW2KpsFYSK4YgI1vZDJe57XmIAu642N5kCxUJfQ8bA48IKpWGNKi/T7rPWRMBMkp5lhz5mUlV0O+fGAGC5XMkTzoG349I/D+Qis0jpeZBt0CXaZGnwtwdcS7A/4ycOIi3bNI0pzfxoVHQYYDIu+A9djJ5bKX+c2BVKnHS5Xcw8QTecWlXxi/khgvYMFzHlp4/g74WREshg3zpuS9mfowShxyrnv6wFS2Dl12QUDwaO54xIWTKZem8up7M0ojn5BzdftEdPMzII9ljE8kVde8Z5y89PSJYcACAJhWTigFOO1rpqRbWs0pKjp4Nkl6OMiGQiFnKsOnLQNqJNe33yV5iFml/4YLfzB+wwpvuNoT+eq0F+JWYtp50MlXLBvUAkLlXXbdloHkUsREDsc6y9LDvs2pTNJD6eM5+x/KAslqWK/pOo/WEIvw3PC3q8rZz3IzWBqqp2CpTvjAACIVyFhLMQmlwXPU9gYrC+lCZs0VtPkc0Jfc+Va+XK/lK3Pr10XhF8ToAjf1VKktAH0hd3srqesSMmCJaiNwJB/IzNviF9Uor8NnndSkyRBfExbPpdHfKRg/yqH8JCPxdvbZVE6+6GTzmCD9Af45RfhzLGZZtEaIVQVdDpLwVByAHeIu8DXWGTySUil8wSNw6fMoliZnfHsqfXiC2M+gjJXX7wuEOvm4gWUBa9h4xrAAtwy6hHyWo1QQGc9gDkD7sAt8VjqETSnUHaArd0Gupc8ZBv4n4ymUfiEPxEu4/A3eyayX+x+ZZjjoIEl6D+2zrJJgyOoKf68RCKJXOpt4B3xZQNclwVeSbXVd2hXzKXlpqsC3c0ttyR3La6rTW2yyP1dpSbdowUtBji1+aAioxTZXD+ORZcrs+A5YF9kWnnfWeJUSZgnswKeZ7FNHkaeXgjTmowVhkhuQ1pQxCE1aik2A16OVVwtvayxmW6fdeDNKKcs79Zhy5eaFwIOXsxu3grolVsUVS0y0pAKN3tpMStdlheJajZ1V5rxWHxoJjR6crr51frlg59K73AFWf7h3gs8BlWtpsHpqwrioa6nJj5lphgim1C3XdPGuuZm2hYIB90QCrKqxDnPkm81hN6pvAyqElRdvN3exjdXeYGQS8oXGmjgoICQjhUh6jdSYmvQdpakSFArIfg6bqiqZW6t3N6HaNbUX7M4Lt4NK8bX3SblJM9Mas+65xuodpVFRj58HfLyAdPZjftCittnLXaHWKQdczNE4trkfK8GFiT3RVqU523gaBbeC04/3zW3pp0yJWFqfofjZejBfw3bGE3WNO8jrmLtDt5ahVyHt+DiUDv/WtFpAQ+4MrDFvC3Bb+uXiI2f1TXGURfesNPc11mjacki1dK/JKTnsUmYGLnnM/2MycWRt7dCtedrSyhqPe39tPBecjV3rrTWDweqzSl2hsfVwM3lX+UL+f0CuTv/Hn38EGAAvCnNy1JKVIQAAAABJRU5ErkJggg==)}.vc-compact__color_cube .alpha[data-v-b969fd48]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.vc-compact__color-cube--wrap[data-v-b969fd48]{position:relative;width:27px;height:27px;cursor:pointer;overflow:hidden}.vc-compact__color-cube--wrap[data-v-b969fd48]:hover{transform:scale(1.2);z-index:299;transition:transform .2s}.vc-saturation[data-v-7f0cdcdf]{position:relative;margin-bottom:15px;width:100%;height:125px}.vc-saturation__chrome[data-v-7f0cdcdf]{border-top-left-radius:5px;border-top-right-radius:5px;border-color:transparent}.vc-saturation__hidden[data-v-7f0cdcdf]{overflow:hidden}.vc-saturation__white[data-v-7f0cdcdf],.vc-saturation__black[data-v-7f0cdcdf]{position:absolute;top:0;left:0;right:0;bottom:0}.vc-saturation__black[data-v-7f0cdcdf]{background:linear-gradient(0deg,#000,transparent)}.vc-saturation__white[data-v-7f0cdcdf]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.vc-saturation__cursor[data-v-7f0cdcdf]{position:absolute}.vc-saturation__cursor div[data-v-7f0cdcdf]{transform:translate(-5px,-5px);box-shadow:0 1px 4px #0000005e;width:10px;height:10px;border:1px solid white;border-radius:50%;cursor:pointer}.vc-hue-slider[data-v-e1a08576]{position:relative;margin-bottom:15px;width:100%;height:14px;box-shadow:2px 0 8px #00000014;border-radius:15px}.vc-hue-slider.is-vertical[data-v-e1a08576]{width:14px;height:100%;display:inline-block;transform:rotate(180deg)}.vc-hue-slider.transparent[data-v-e1a08576]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.vc-hue-slider__bar[data-v-e1a08576]{position:relative;width:100%;height:100%;border-radius:15px;background:linear-gradient(to right,rgb(255,0,0) 0%,rgb(255,255,0) 16.66%,rgb(0,255,0) 33.33%,rgb(0,255,255) 50%,rgb(0,0,255) 66.66%,rgb(255,0,255) 83.33%,rgb(255,0,0) 100%);background:-webkit-linear-gradient(left,rgb(255,0,0) 0%,rgb(255,255,0) 16.66%,rgb(0,255,0) 33.33%,rgb(0,255,255) 50%,rgb(0,0,255) 66.66%,rgb(255,0,255) 83.33%,rgb(255,0,0) 100%);background:-moz-linear-gradient(left,rgb(255,0,0) 0%,rgb(255,255,0) 16.66%,rgb(0,255,0) 33.33%,rgb(0,255,255) 50%,rgb(0,0,255) 66.66%,rgb(255,0,255) 83.33%,rgb(255,0,0) 100%);background:-ms-linear-gradient(left,rgb(255,0,0) 0%,rgb(255,255,0) 16.66%,rgb(0,255,0) 33.33%,rgb(0,255,255) 50%,rgb(0,0,255) 66.66%,rgb(255,0,255) 83.33%,rgb(255,0,0) 100%)}.vc-hue-slider__bar-pointer[data-v-e1a08576]{position:absolute;width:14px;height:14px}.vc-hue-slider__bar-handle[data-v-e1a08576]{width:14px;height:14px;border-radius:6px;transform:translate(-7px,-2px);background-color:#f8f8f8;margin-top:2px;box-shadow:0 1px 4px #0000005e;cursor:pointer}.vc-hue-slider__bar-handle.vertical[data-v-e1a08576]{transform:translateY(-7px);margin-top:0}.vc-hue-slider.small-slider[data-v-e1a08576]{height:10px!important}.vc-hue-slider.small-slider .small-bar[data-v-e1a08576]{height:10px!important;width:10px!important}.vc-hue-slider.small-slider .small-bar div[data-v-e1a08576]{width:12px!important;height:12px!important;border-radius:5px!important;transform:translate(-6px,-2px);margin-top:1px!important}.vc-lightness-slider[data-v-94a50a9e]{position:relative;margin-bottom:15px;width:100%;height:14px;box-shadow:2px 0 8px #00000014;border-radius:15px}.vc-lightness-slider.is-vertical[data-v-94a50a9e]{width:14px;height:100%;display:inline-block;transform:rotate(180deg)}.vc-lightness-slider.transparent[data-v-94a50a9e]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.vc-lightness-slider__bar[data-v-94a50a9e]{position:relative;width:100%;height:100%;border-radius:15px}.vc-lightness-slider__bar-pointer[data-v-94a50a9e]{position:absolute;width:14px;height:14px}.vc-lightness-slider__bar-handle[data-v-94a50a9e]{width:14px;height:14px;border-radius:6px;transform:translate(-7px,-2px);background-color:#f8f8f8;margin-top:2px;box-shadow:0 1px 4px #0000005e;cursor:pointer}.vc-lightness-slider__bar-handle.vertical[data-v-94a50a9e]{transform:translateY(-7px);margin-top:0}.vc-lightness-slider.small-slider[data-v-94a50a9e]{height:10px!important}.vc-lightness-slider.small-slider .small-bar[data-v-94a50a9e]{height:10px!important;width:10px!important}.vc-lightness-slider.small-slider .small-bar div[data-v-94a50a9e]{width:12px!important;height:12px!important;border-radius:5px!important;transform:translate(-6px,-2px);margin-top:1px!important}.vc-colorPicker__record[data-v-0f657238]{display:flex;align-items:center;margin-top:15px}.vc-colorPicker__record .text[data-v-0f657238]{width:48px;margin-right:10px;text-align:right;font-size:12px;color:#666}.vc-colorPicker__record .color-list[data-v-0f657238]{width:100%;display:flex;position:relative;margin:0;gap:2px}.vc-colorPicker__record .color-list .color-item[data-v-0f657238]{position:relative;flex:1;max-width:26px;height:26px;border-radius:2px;cursor:pointer;overflow:hidden;display:inline-block;vertical-align:middle;box-shadow:3px 0 5px #0000001a}.vc-colorPicker__record .color-list .color-item__round[data-v-0f657238]{border-radius:50%}.vc-colorPicker__record .color-list .color-item.transparent[data-v-0f657238]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.vc-colorPicker__record .color-list .color-item[data-v-0f657238]:hover{transform:scale(1.2);z-index:299;transition:transform .2s}.vc-colorPicker__record .color-list .color-item__display[data-v-0f657238]{width:100%;height:100%}.vc-display[data-v-7334ac20]{height:28px;display:flex;align-items:center;gap:8px}.vc-display .vc-current-color[data-v-7334ac20]{width:50px;height:100%;box-shadow:3px 0 5px #00000014;border-radius:2px;position:relative;cursor:pointer;overflow:hidden;display:inline-block;vertical-align:middle}.vc-display .vc-current-color.vc-transparent[data-v-7334ac20]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.vc-display .vc-current-color .color-cube[data-v-7334ac20]{width:100%;height:100%;text-align:center}.vc-display .vc-color-input[data-v-7334ac20]{height:100%;flex:1;flex-shrink:0;box-sizing:border-box;position:relative}.vc-display .vc-color-input input[data-v-7334ac20]{padding:0;border:0;outline:none;cursor:pointer;font-size:14px;text-align:center;box-sizing:border-box;background-color:#c8c8c840;color:#666;border-radius:2px;height:100%;width:100%}.vc-display .vc-rgb-input[data-v-7334ac20]{flex:1;font-size:12px;color:#666;text-align:center}.vc-display .vc-rgb-input input[data-v-7334ac20]{padding:4px 0;margin-bottom:2px;border:0;outline:none;cursor:pointer;font-size:14px;text-align:center;background-color:#c8c8c840;color:#666;border-radius:2px;width:100%}.vc-display .vc-alpha-input[data-v-7334ac20]{width:48px;height:100%;border:none;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;border-radius:2px;font-size:14px;background-color:#c8c8c840;padding:0 2px}.vc-display .vc-alpha-input>input[data-v-7334ac20]{width:100%;height:100%;padding:0;text-align:center;background-color:transparent;font-size:inherit}.vc-display .vc-alpha-input__inner[data-v-7334ac20]{padding:10px 12px;border-radius:4px;color:#000;font-size:14px;line-height:20px;outline:none;border:none;display:block;box-sizing:border-box;cursor:pointer}.vc-display .vc-input-toggle[data-v-7334ac20]{cursor:pointer;font-size:12px;line-height:12px;width:24px;border-radius:4px;padding:2px}.vc-display .vc-input-toggle[data-v-7334ac20]:hover{background-color:#efefef}.vc-display .vc-input-toggle[data-v-7334ac20]:before{height:0;width:0;margin:auto auto 2px;content:"";display:block;border-bottom:4px solid #888;border-left:4px solid transparent;border-right:4px solid transparent}.vc-display .vc-input-toggle[data-v-7334ac20]:after{height:0;width:0;margin:2px auto auto;content:"";display:block;border-top:4px solid #888;border-left:4px solid transparent;border-right:4px solid transparent}.vc-display .copy-text[data-v-7334ac20]{font-size:12px;line-height:28px;text-align:center;transform:scale(.8);display:inline-block}.vc-fk-colorPicker[data-v-48e3c224]{position:relative;box-sizing:border-box;border-radius:3px;user-select:none;background-color:initial}.vc-fk-colorPicker__inner[data-v-48e3c224]{position:relative}.vc-fk-colorPicker__header[data-v-48e3c224]{z-index:999;text-align:left}.vc-fk-colorPicker__header .back[data-v-48e3c224]{border:2px solid rgba(150,150,150,.6);border-width:0 2px 2px 0;display:inline-block;padding:4px;margin-left:2px;margin-bottom:12px;transform:rotate(135deg)}.vc-fk-colorPicker__display[data-v-48e3c224]{position:relative;width:100%;margin:0;text-align:left}.vc-fk-colorPicker__display .transparent[data-v-48e3c224]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.vc-fk-colorPicker__display .current-color[data-v-48e3c224]{margin-right:10px;width:50px;height:24px;box-shadow:3px 0 5px #00000014;position:relative;cursor:pointer;overflow:hidden;display:inline-block;vertical-align:middle}.vc-fk-colorPicker__display .current-color .color-cube[data-v-48e3c224]{width:100%;height:100%}.vc-fk-colorPicker__display .hexColor-prefix[data-v-48e3c224]{position:relative;padding:0 4px;font-size:14px;display:inline-block;vertical-align:middle}.vc-fk-colorPicker__display input[data-v-48e3c224]{width:25px;text-align:center;outline:0;border-top:0;border-right:0;border-left:none;display:inline-block;vertical-align:middle;padding-bottom:3px;border-bottom:1px solid #e3e2e8}.vc-fk-colorPicker__display .hexColor-input[data-v-48e3c224]{width:64px}.vc-fk-colorPicker__display .action[data-v-48e3c224]{float:right;vertical-align:middle}.vc-fk-colorPicker__display .action .clear-btn[data-v-48e3c224]{border-color:transparent;color:#409eff;background:transparent;padding-left:0;padding-right:0;display:inline-block;vertical-align:middle;cursor:pointer}.vc-fk-colorPicker__display .action .copy-btn[data-v-48e3c224]{border-color:transparent;color:#13ce66cc;background:transparent;padding-left:0;padding-right:0;display:inline-block;margin-left:10px;vertical-align:middle;cursor:pointer}.vc-chrome-colorPicker[data-v-2611d66c]{position:relative;box-sizing:border-box;border-radius:3px;user-select:none;background-color:initial}.vc-chrome-colorPicker-body[data-v-2611d66c]{position:relative}.vc-chrome-colorPicker-body .chrome-controls[data-v-2611d66c]{display:flex}.vc-chrome-colorPicker-body .chrome-controls .chrome-color-wrap[data-v-2611d66c]{position:relative;width:36px;height:36px;border-radius:50%;overflow:hidden;z-index:1}.vc-chrome-colorPicker-body .chrome-controls .chrome-color-wrap.transparent[data-v-2611d66c]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.vc-chrome-colorPicker-body .chrome-controls .chrome-color-wrap .current-color[data-v-2611d66c]{width:100%;height:100%}.vc-chrome-colorPicker-body .chrome-controls .chrome-sliders[data-v-2611d66c]{flex:1;margin-left:10px}.bee-angle{transform:rotate(90deg)}.bee-angle>*{display:inline-block;vertical-align:middle}.bee-angle.zero-right{transform:rotate(180deg)}.bee-angle.zero-bottom{transform:rotate(270deg)}.bee-angle__round{position:relative;width:16px;height:16px;border:1px solid #666;border-radius:50%;cursor:pointer;display:inline-block;vertical-align:middle}.bee-angle__round:before{content:"";position:absolute;top:50%;left:0;transform:translateY(-50%);width:50%;height:1px;background-color:#666}.vc-gradient-picker[data-v-c4d6d6ea]{position:relative}.vc-gradient-picker__header[data-v-c4d6d6ea]{margin-bottom:12px;z-index:999;text-align:left;display:flex;justify-content:space-between;align-items:center}.vc-gradient-picker__header .back[data-v-c4d6d6ea]{border:2px solid rgba(150,150,150,.65);border-width:0 2px 2px 0;display:inline-block;padding:4px;margin-left:2px;transform:rotate(135deg);margin-right:8px}.vc-gradient-picker .vc-gradient__types[data-v-c4d6d6ea]{display:flex;width:100%;justify-content:space-between}.vc-gradient-picker .vc-gradient__types .vc-gradient-wrap__types[data-v-c4d6d6ea]{display:flex;background-color:#c8c8c840;border-radius:4px;overflow:hidden;align-items:center}.vc-gradient-picker .vc-gradient__types .vc-gradient__type[data-v-c4d6d6ea]{padding:4px 8px;color:#666;cursor:pointer;font-size:12px}.vc-gradient-picker .vc-gradient__types .vc-gradient__type.active[data-v-c4d6d6ea]{color:#000;background-color:#c8c8c8cc}.vc-gradient-picker__body[data-v-c4d6d6ea]{margin-bottom:12px;display:-ms-flexbox;display:flex;align-items:center}.vc-gradient-picker__body .vc-color-range[data-v-c4d6d6ea]{flex:1}.vc-gradient-picker__body .vc-color-range__container[data-v-c4d6d6ea]{position:relative;height:16px;border-radius:5px}.vc-gradient-picker__body .vc-color-range__container .vc-background[data-v-c4d6d6ea]{height:100%;border-radius:4px;box-shadow:inset 0 0 0 1px #0000000f}.vc-gradient-picker__body .vc-color-range__container .vc-gradient__stop__container[data-v-c4d6d6ea]{position:absolute;width:100%;top:0;height:100%;left:0}.vc-gradient-picker__body .vc-color-range__container .vc-gradient__stop__container .vc-gradient__stop[data-v-c4d6d6ea]{position:absolute;top:-2px;width:14px;height:16px;overflow:hidden;border:2px solid #fff;border-radius:2px;cursor:pointer;box-shadow:0 0 2px 1px #00000059;box-sizing:content-box;transform:translate(-9px)}.vc-gradient-picker__body .vc-color-range__container .vc-gradient__stop__container .vc-gradient__stop--inner[data-v-c4d6d6ea]{display:inline-block;height:100%}.vc-gradient-picker__body .vc-color-range__container .vc-gradient__stop__container .vc-gradient__stop--current[data-v-c4d6d6ea]{position:relative;z-index:1;box-shadow:0 0 2px 2px #2253f4,0 0 1px 1px #2253f480}.vc-gradient-picker .vc-degree-input[data-v-c4d6d6ea]{position:relative;z-index:2;font-size:12px;border-radius:4px;display:flex}.vc-gradient-picker .vc-degree-input:hover .vc-degree-input__panel[data-v-c4d6d6ea]{display:block}.vc-gradient-picker .vc-degree-input__control[data-v-c4d6d6ea]{width:100%;height:100%;display:flex;justify-content:center;align-items:center;border-radius:4px;background-color:#c8c8c840;color:#666;padding:0 6px 0 0}.vc-gradient-picker .vc-degree-input__control input[data-v-c4d6d6ea]{max-width:28px;text-align:center;border:none;outline:none;background-color:transparent;color:#666;font-size:inherit;overflow:visible}.vc-gradient-picker .vc-degree-input__panel[data-v-c4d6d6ea]{display:none;z-index:10;position:absolute;top:20px;left:0}.vc-gradient-picker .vc-degree-input__panel .vc-degree-input__disk[data-v-c4d6d6ea]{padding:4px;background-color:#f1f1f1;box-shadow:0 0 2px #00000029,0 1px 8px #0000000f,0 4px 12px #00000014;border-radius:4px;display:flex;justify-content:center;align-items:center;position:relative;transform:translate(0)}.vc-gradient-picker .vc-picker-degree-input[data-v-c4d6d6ea]{margin-left:8px}.vc-colorpicker[data-v-0492277d]{position:relative;box-sizing:border-box;border-radius:3px;box-shadow:0 0 10px #00000026;user-select:none;width:276px;z-index:10000}.vc-colorpicker *[data-v-0492277d]{outline:none;line-height:1}.vc-colorpicker--container[data-v-0492277d]{padding:16px}.vc-colorpicker--tabs[data-v-0492277d]{padding:2px;background:#f6f7f9;border-radius:6px;position:relative;margin-bottom:12px}.vc-colorpicker--tabs__inner[data-v-0492277d]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:0;background:#f6f7f9;border-bottom:none;position:relative;box-sizing:border-box}.vc-colorpicker--tabs__btn[data-v-0492277d]{-ms-flex:1;flex:1;z-index:2;color:#636c78;font-size:14px;border-radius:4px;cursor:pointer}.vc-colorpicker--tabs__btn.vc-btn-active[data-v-0492277d]{color:#33383e;font-weight:600}.vc-colorpicker--tabs__btn button[data-v-0492277d]{width:100%;background-color:initial;padding:6px 0;font-size:14px;line-height:20px;color:#636c78;border:0;border-radius:0;outline:0;cursor:pointer;appearance:none;-webkit-appearance:none;font-weight:inherit}.vc-colorpicker--tabs__btn button .vc-btn__content[data-v-0492277d]{position:relative;white-space:nowrap}.vc-colorpicker--tabs__bg[data-v-0492277d]{position:absolute;top:0;bottom:0;background:#fff;box-shadow:0 1px 4px #0000001f;border-radius:4px;z-index:1;transition:left .2s ease-in-out}.vc-colorpicker.black[data-v-0492277d]{background-color:#000;color:#fff}.vc-colorpicker.white[data-v-0492277d]{background-color:#fff;color:#333}.vc-color-wrap[data-v-354ca836]{margin-right:10px;width:50px;height:24px;box-shadow:3px 0 5px #00000014;position:relative;cursor:pointer;overflow:hidden;display:inline-block;vertical-align:middle}.vc-color-wrap.transparent[data-v-354ca836]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);background-repeat:repeat}.vc-color-wrap.round[data-v-354ca836]{width:22px;height:22px;border-radius:50%;border:1px solid #d8d8d8}.vc-color-wrap .current-color[data-v-354ca836]{width:100%;height:100%}.vc-color-extra[data-v-354ca836]{margin-top:10px}.tag-wrap[data-v-cf78787e]{display:inline-block;position:relative}.tag-wrap:hover .float-actions[data-v-cf78787e],.tag-wrap .float-actions:hover[data-v-cf78787e]{display:flex;flex-wrap:nowrap;opacity:1;max-height:100px}.tag-wrap .tag[data-v-cf78787e]{border:2px solid var(--zp-secondary);color:var(--zp-primary);border-radius:999px;padding:4px 16px;margin:4px;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:space-between;flex-direction:row;gap:4px}.tag-wrap .tag.selected[data-v-cf78787e]{color:var(--primary-color);border:2px solid var(--primary-color)}.tag-wrap .tag-name[data-v-cf78787e]{max-width:192px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag-wrap .float-actions[data-v-cf78787e]{position:absolute;left:0;top:-32px;transition-delay:.5s;transition-duration:.3s;background:var(--zp-primary-background);box-sizing:border-box;border-radius:4px;user-select:none;display:none;opacity:0;max-height:0;overflow:hidden;z-index:9999;transition-property:opacity,max-height;transition-duration:.5s;transition-timing-function:ease-in-out;padding:4px;box-shadow:0 4px 16px var(--zp-luminous-deep);border-bottom:3px solid var(--zp-luminous)}.tag-wrap .float-actions div[data-v-cf78787e]{background:var(--zp-secondary-background);cursor:pointer;white-space:pre;font-size:12px;padding:1px 4px}.tag-wrap .float-actions div[data-v-cf78787e]:hover{background:var(--zp-secondary-variant-background)}.tag-wrap .float-actions[data-v-cf78787e]>:not(:last-child){margin-right:4px}.spin-container[data-v-9d975be9]{text-align:center;background:rgba(0,0,0,.05);border-radius:4px;padding:256px}[data-v-9d975be9] .ant-collapse>.ant-collapse-item>.ant-collapse-header{padding:0}.container[data-v-9d975be9]{height:var(--pane-max-height);overflow:auto;display:flex;flex-direction:column;align-items:stretch}.container .generate-idx-hint[data-v-9d975be9]{margin:64px;padding:64px;font-size:2em;text-align:center;background-color:var(--zp-secondary-background);white-space:pre-line;line-height:2.5em;border-radius:16px}.container .remove[data-v-9d975be9]{padding:4px;position:cursor;border-radius:2px}.container .remove[data-v-9d975be9]:hover{background-color:var(--zp-secondary-background)}.container .select[data-v-9d975be9]{padding:8px}.container .search-bar[data-v-9d975be9]{padding:8px;display:flex}.container .search-bar .form-name[data-v-9d975be9]{flex-shrink:0;padding:4px 8px;width:128px}.container .list-container[data-v-9d975be9]{background-color:var(--zp-secondary-background);overflow:scroll}.container .cat-name[data-v-9d975be9]{user-select:none;position:sticky;top:0;padding:4px 16px;background:var(--zp-primary-background);margin:4px;transition:all .3s ease;border-left:4px solid var(--primary-color);cursor:pointer;z-index:1;display:flex;align-items:center;flex-direction:row}.container .cat-name .filter-input[data-v-9d975be9]{margin-left:32px;width:256px}.container .cat-name .filter-input>span[data-v-9d975be9]{border-radius:6px}.container .cat-name[data-v-9d975be9]:hover{border-radius:4px;background-color:var(--zp-secondary-background)}.container .cat-name .arrow[data-v-9d975be9]{color:var(--primary-color);transition:all .3s ease;margin-right:16px}.container .cat-name .arrow.down[data-v-9d975be9]{transform:rotate(90deg)}.container .pinned-search[data-v-9d975be9]{margin:16px;border-radius:16px;background:var(--zp-primary-background);padding:8px}.container .tag-list[data-v-9d975be9]{list-style:none;margin:16px;border-radius:16px;background:var(--zp-primary-background);padding:8px}.container .tag-list .tag[data-v-9d975be9]{border:2px solid var(--zp-secondary);color:var(--zp-primary);border-radius:999px;padding:4px 16px;margin:4px;display:inline-block;cursor:pointer;position:relative} diff --git a/vue/dist/assets/TagSearch-900575e0.js b/vue/dist/assets/TagSearch-900575e0.js deleted file mode 100644 index 41d8d1e..0000000 --- a/vue/dist/assets/TagSearch-900575e0.js +++ /dev/null @@ -1,15 +0,0 @@ -import{P as Ze,ac as Xi,d as ce,bt as Lo,a$ as Ji,$ as U,bx as Zi,v as Qe,u as Do,Y as Z,a1 as bn,h as me,c as P,a as qt,by as Qi,b as el,f as tl,bz as nl,a3 as ha,bA as rl,aS as al,i as ol,b7 as il,bB as ll,a7 as tn,a8 as Cn,a6 as sl,A as ul,aV as cl,aT as dl,bC as gr,aU as fl,bD as pl,bE as No,bo as vl,bF as Vo,bG as hl,bH as gl,bI as yl,bJ as ml,bK as bl,bm as Cl,bL as ga,bM as Fo,bN as _l,bO as xl,bP as wl,Z as Te,bQ as Ht,ad as Ko,bR as he,bS as Sl,aH as jn,a9 as Wo,bT as kl,bU as ze,at as Uo,o as A,k as L,l as S,Q as ue,G as de,n as Se,H as lt,p as V,bV as Al,m as ne,t as W,ab as Ol,bW as $l,bX as El,bY as re,x as G,y as z,bZ as ya,b_ as ma,an as yr,b$ as Rl,aB as dt,aC as ft,c0 as zo,B as _n,z as le,c1 as Tl,c2 as Ml,q as Go,r as Pl,c3 as Il,aD as Hl,ay as jl,aw as Bl,c4 as ba,ap as Ll,c5 as Ca,c6 as Dl,c7 as Nl,c8 as Vl,S as Yn,av as Fl,c9 as Kl,ag as _a,ae as Xn,U as xa,ca as Wl,cb as Ul,W as wa,aA as zl,cc as Gl,V as ql,cd as Yl}from"./index-2865012e.js";import{S as Xl}from"./index-5aea14c7.js";/* empty css */import"./index-de079109.js";/* empty css */import{t as Sa,_ as Jl,a as Zl,H as Ql}from"./searchHistory-0a67cf21.js";import"./index-6db1bae6.js";import{b as es,i as ts}from"./isArrayLikeObject-0a84f6f1.js";import{i as ns}from"./_isIterateeCall-3cdb292e.js";var rs=function(){return{prefixCls:String,activeKey:{type:[Array,Number,String]},defaultActiveKey:{type:[Array,Number,String]},accordion:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},expandIcon:Function,openAnimation:Ze.object,expandIconPosition:Ze.oneOf(Xi("left","right")),collapsible:{type:String},ghost:{type:Boolean,default:void 0},onChange:Function,"onUpdate:activeKey":Function}},qo=function(){return{openAnimation:Ze.object,prefixCls:String,header:Ze.any,headerClass:String,showArrow:{type:Boolean,default:void 0},isActive:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},accordion:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},expandIcon:Function,extra:Ze.any,panelKey:Ze.oneOfType([Ze.string,Ze.number]),collapsible:{type:String},role:String,onItemClick:{type:Function}}};function ka(e){var t=e;if(!Array.isArray(t)){var n=el(t);t=n==="number"||n==="string"?[t]:[]}return t.map(function(r){return String(r)})}const Yt=ce({compatConfig:{MODE:3},name:"ACollapse",inheritAttrs:!1,props:Lo(rs(),{accordion:!1,destroyInactivePanel:!1,bordered:!0,openAnimation:Ji("ant-motion-collapse",!1),expandIconPosition:"left"}),slots:["expandIcon"],setup:function(t,n){var r=n.attrs,a=n.slots,o=n.emit,s=U(ka(Zi([t.activeKey,t.defaultActiveKey])));Qe(function(){return t.activeKey},function(){s.value=ka(t.activeKey)},{deep:!0});var i=Do("collapse",t),l=i.prefixCls,c=i.direction,u=Z(function(){var h=t.expandIconPosition;return h!==void 0?h:c.value==="rtl"?"right":"left"}),d=function(v){var m=t.expandIcon,_=m===void 0?a.expandIcon:m,w=_?_(v):P(rl,{rotate:v.isActive?90:void 0},null);return P("div",null,[al(Array.isArray(_)?w[0]:w)?ha(w,{class:"".concat(l.value,"-arrow")},!1):w])},f=function(v){t.activeKey===void 0&&(s.value=v);var m=t.accordion?v[0]:v;o("update:activeKey",m),o("change",m)},p=function(v){var m=s.value;if(t.accordion)m=m[0]===v?[]:[v];else{m=ol(m);var _=m.indexOf(v),w=_>-1;w?m.splice(_,1):m.push(v)}f(m)},C=function(v,m){var _,w,E;if(!nl(v)){var $=s.value,M=t.accordion,N=t.destroyInactivePanel,D=t.collapsible,K=t.openAnimation,b=String((_=v.key)!==null&&_!==void 0?_:m),R=v.props||{},T=R.header,H=T===void 0?(w=v.children)===null||w===void 0||(E=w.header)===null||E===void 0?void 0:E.call(w):T,F=R.headerClass,Y=R.collapsible,O=R.disabled,g=!1;M?g=$[0]===b:g=$.indexOf(b)>-1;var x=Y??D;(O||O==="")&&(x="disabled");var j={key:b,panelKey:b,header:H,headerClass:F,isActive:g,prefixCls:l.value,destroyInactivePanel:N,openAnimation:K,accordion:M,onItemClick:x==="disabled"?null:p,expandIcon:d,collapsible:x};return ha(v,j)}},y=function(){var v;return tl((v=a.default)===null||v===void 0?void 0:v.call(a)).map(C)};return function(){var h,v=t.accordion,m=t.bordered,_=t.ghost,w=bn((h={},me(h,l.value,!0),me(h,"".concat(l.value,"-borderless"),!m),me(h,"".concat(l.value,"-icon-position-").concat(u.value),!0),me(h,"".concat(l.value,"-rtl"),c.value==="rtl"),me(h,"".concat(l.value,"-ghost"),!!_),me(h,r.class,!!r.class),h));return P("div",qt(qt({class:w},Qi(r)),{},{style:r.style,role:v?"tablist":null}),[y()])}}}),as=ce({compatConfig:{MODE:3},name:"PanelContent",props:qo(),setup:function(t,n){var r=n.slots,a=U(!1);return il(function(){(t.isActive||t.forceRender)&&(a.value=!0)}),function(){var o,s;if(!a.value)return null;var i=t.prefixCls,l=t.isActive,c=t.role;return P("div",{ref:U,class:bn("".concat(i,"-content"),(o={},me(o,"".concat(i,"-content-active"),l),me(o,"".concat(i,"-content-inactive"),!l),o)),role:c},[P("div",{class:"".concat(i,"-content-box")},[(s=r.default)===null||s===void 0?void 0:s.call(r)])])}}}),xn=ce({compatConfig:{MODE:3},name:"ACollapsePanel",inheritAttrs:!1,props:Lo(qo(),{showArrow:!0,isActive:!1,onItemClick:function(){},headerClass:"",forceRender:!1}),slots:["expandIcon","extra","header"],setup:function(t,n){var r=n.slots,a=n.emit,o=n.attrs;ll(t.disabled===void 0,"Collapse.Panel",'`disabled` is deprecated. Please use `collapsible="disabled"` instead.');var s=Do("collapse",t),i=s.prefixCls,l=function(){a("itemClick",t.panelKey)},c=function(d){(d.key==="Enter"||d.keyCode===13||d.which===13)&&l()};return function(){var u,d,f,p,C=t.header,y=C===void 0?(u=r.header)===null||u===void 0?void 0:u.call(r):C,h=t.headerClass,v=t.isActive,m=t.showArrow,_=t.destroyInactivePanel,w=t.accordion,E=t.forceRender,$=t.openAnimation,M=t.expandIcon,N=M===void 0?r.expandIcon:M,D=t.extra,K=D===void 0?(d=r.extra)===null||d===void 0?void 0:d.call(r):D,b=t.collapsible,R=b==="disabled",T=i.value,H=bn("".concat(T,"-header"),(f={},me(f,h,h),me(f,"".concat(T,"-header-collapsible-only"),b==="header"),f)),F=bn((p={},me(p,"".concat(T,"-item"),!0),me(p,"".concat(T,"-item-active"),v),me(p,"".concat(T,"-item-disabled"),R),me(p,"".concat(T,"-no-arrow"),!m),me(p,"".concat(o.class),!!o.class),p)),Y=P("i",{class:"arrow"},null);m&&typeof N=="function"&&(Y=N(t));var O=tn(P(as,{prefixCls:T,isActive:v,forceRender:E,role:w?"tabpanel":null},{default:r.default}),[[Cn,v]]),g=qt({appear:!1,css:!1},$);return P("div",qt(qt({},o),{},{class:F}),[P("div",{class:H,onClick:function(){return b!=="header"&&l()},role:w?"tab":"button",tabindex:R?-1:0,"aria-expanded":v,onKeypress:c},[m&&Y,b==="header"?P("span",{onClick:l,class:"".concat(T,"-header-text")},[y]):y,K&&P("div",{class:"".concat(T,"-extra")},[K])]),P(sl,g,{default:function(){return[!_||v?O:null]}})])}}});Yt.Panel=xn;Yt.install=function(e){return e.component(Yt.name,Yt),e.component(xn.name,xn),e};var os={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 000-48.4z"}}]},name:"arrow-right",theme:"outlined"};const is=os;function Aa(e){for(var t=1;t1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,s&&ns(n[0],n[1],s)&&(o=a<3?void 0:o,a=1),t=Object(t);++r=0,o=!n&&a&&(t==="hex"||t==="hex6"||t==="hex3"||t==="hex4"||t==="hex8"||t==="name");return o?t==="name"&&this._a===0?this.toName():this.toRgbString():(t==="rgb"&&(r=this.toRgbString()),t==="prgb"&&(r=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(r=this.toHexString()),t==="hex3"&&(r=this.toHexString(!0)),t==="hex4"&&(r=this.toHex8String(!0)),t==="hex8"&&(r=this.toHex8String()),t==="name"&&(r=this.toName()),t==="hsl"&&(r=this.toHslString()),t==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},clone:function(){return k(this.toString())},_applyModification:function(t,n){var r=t.apply(null,[this].concat([].slice.call(n)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(js,arguments)},brighten:function(){return this._applyModification(Bs,arguments)},darken:function(){return this._applyModification(Ls,arguments)},desaturate:function(){return this._applyModification(Ps,arguments)},saturate:function(){return this._applyModification(Is,arguments)},greyscale:function(){return this._applyModification(Hs,arguments)},spin:function(){return this._applyModification(Ds,arguments)},_applyCombination:function(t,n){return t.apply(null,[this].concat([].slice.call(n)))},analogous:function(){return this._applyCombination(Fs,arguments)},complement:function(){return this._applyCombination(Ns,arguments)},monochromatic:function(){return this._applyCombination(Ks,arguments)},splitcomplement:function(){return this._applyCombination(Vs,arguments)},triad:function(){return this._applyCombination(Ta,[3])},tetrad:function(){return this._applyCombination(Ta,[4])}};k.fromRatio=function(e,t){if(wn(e)=="object"){var n={};for(var r in e)e.hasOwnProperty(r)&&(r==="a"?n[r]=e[r]:n[r]=zt(e[r]));e=n}return k(e,t)};function $s(e){var t={r:0,g:0,b:0},n=1,r=null,a=null,o=null,s=!1,i=!1;return typeof e=="string"&&(e=qs(e)),wn(e)=="object"&&(We(e.r)&&We(e.g)&&We(e.b)?(t=Es(e.r,e.g,e.b),s=!0,i=String(e.r).substr(-1)==="%"?"prgb":"rgb"):We(e.h)&&We(e.s)&&We(e.v)?(r=zt(e.s),a=zt(e.v),t=Ts(e.h,r,a),s=!0,i="hsv"):We(e.h)&&We(e.s)&&We(e.l)&&(r=zt(e.s),o=zt(e.l),t=Rs(e.h,r,o),s=!0,i="hsl"),e.hasOwnProperty("a")&&(n=e.a)),n=Jo(n),{ok:s,format:e.format||i,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}function Es(e,t,n){return{r:J(e,255)*255,g:J(t,255)*255,b:J(n,255)*255}}function Oa(e,t,n){e=J(e,255),t=J(t,255),n=J(n,255);var r=Math.max(e,t,n),a=Math.min(e,t,n),o,s,i=(r+a)/2;if(r==a)o=s=0;else{var l=r-a;switch(s=i>.5?l/(2-r-a):l/(r+a),r){case e:o=(t-n)/l+(t1&&(d-=1),d<1/6?c+(u-c)*6*d:d<1/2?u:d<2/3?c+(u-c)*(2/3-d)*6:c}if(t===0)r=a=o=n;else{var i=n<.5?n*(1+t):n+t-n*t,l=2*n-i;r=s(l,i,e+1/3),a=s(l,i,e),o=s(l,i,e-1/3)}return{r:r*255,g:a*255,b:o*255}}function $a(e,t,n){e=J(e,255),t=J(t,255),n=J(n,255);var r=Math.max(e,t,n),a=Math.min(e,t,n),o,s,i=r,l=r-a;if(s=r===0?0:l/r,r==a)o=0;else{switch(r){case e:o=(t-n)/l+(t>1)+720)%360;--t;)r.h=(r.h+a)%360,o.push(k(r));return o}function Ks(e,t){t=t||6;for(var n=k(e).toHsv(),r=n.h,a=n.s,o=n.v,s=[],i=1/t;t--;)s.push(k({h:r,s:a,v:o})),o=(o+i)%1;return s}k.mix=function(e,t,n){n=n===0?0:n||50;var r=k(e).toRgb(),a=k(t).toRgb(),o=n/100,s={r:(a.r-r.r)*o+r.r,g:(a.g-r.g)*o+r.g,b:(a.b-r.b)*o+r.b,a:(a.a-r.a)*o+r.a};return k(s)};k.readability=function(e,t){var n=k(e),r=k(t);return(Math.max(n.getLuminance(),r.getLuminance())+.05)/(Math.min(n.getLuminance(),r.getLuminance())+.05)};k.isReadable=function(e,t,n){var r=k.readability(e,t),a,o;switch(o=!1,a=Ys(n),a.level+a.size){case"AAsmall":case"AAAlarge":o=r>=4.5;break;case"AAlarge":o=r>=3;break;case"AAAsmall":o=r>=7;break}return o};k.mostReadable=function(e,t,n){var r=null,a=0,o,s,i,l;n=n||{},s=n.includeFallbackColors,i=n.level,l=n.size;for(var c=0;ca&&(a=o,r=k(t[c]));return k.isReadable(e,r,{level:i,size:l})||!s?r:(n.includeFallbackColors=!1,k.mostReadable(e,["#fff","#000"],n))};var Cr=k.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},Ws=k.hexNames=Us(Cr);function Us(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}function Jo(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function J(e,t){zs(e)&&(e="100%");var n=Gs(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function Ln(e){return Math.min(1,Math.max(0,e))}function we(e){return parseInt(e,16)}function zs(e){return typeof e=="string"&&e.indexOf(".")!=-1&&parseFloat(e)===1}function Gs(e){return typeof e=="string"&&e.indexOf("%")!=-1}function Be(e){return e.length==1?"0"+e:""+e}function zt(e){return e<=1&&(e=e*100+"%"),e}function Zo(e){return Math.round(parseFloat(e)*255).toString(16)}function Ma(e){return we(e)/255}var je=function(){var e="[-\\+]?\\d+%?",t="[-\\+]?\\d*\\.\\d+%?",n="(?:"+t+")|(?:"+e+")",r="[\\s|\\(]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")\\s*\\)?",a="[\\s|\\(]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")\\s*\\)?";return{CSS_UNIT:new RegExp(n),rgb:new RegExp("rgb"+r),rgba:new RegExp("rgba"+a),hsl:new RegExp("hsl"+r),hsla:new RegExp("hsla"+a),hsv:new RegExp("hsv"+r),hsva:new RegExp("hsva"+a),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function We(e){return!!je.CSS_UNIT.exec(e)}function qs(e){e=e.replace(As,"").replace(Os,"").toLowerCase();var t=!1;if(Cr[e])e=Cr[e],t=!0;else if(e=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n;return(n=je.rgb.exec(e))?{r:n[1],g:n[2],b:n[3]}:(n=je.rgba.exec(e))?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=je.hsl.exec(e))?{h:n[1],s:n[2],l:n[3]}:(n=je.hsla.exec(e))?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=je.hsv.exec(e))?{h:n[1],s:n[2],v:n[3]}:(n=je.hsva.exec(e))?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=je.hex8.exec(e))?{r:we(n[1]),g:we(n[2]),b:we(n[3]),a:Ma(n[4]),format:t?"name":"hex8"}:(n=je.hex6.exec(e))?{r:we(n[1]),g:we(n[2]),b:we(n[3]),format:t?"name":"hex"}:(n=je.hex4.exec(e))?{r:we(n[1]+""+n[1]),g:we(n[2]+""+n[2]),b:we(n[3]+""+n[3]),a:Ma(n[4]+""+n[4]),format:t?"name":"hex8"}:(n=je.hex3.exec(e))?{r:we(n[1]+""+n[1]),g:we(n[2]+""+n[2]),b:we(n[3]+""+n[3]),format:t?"name":"hex"}:!1}function Ys(e){var t,n;return e=e||{level:"AA",size:"small"},t=(e.level||"AA").toUpperCase(),n=(e.size||"small").toLowerCase(),t!=="AA"&&t!=="AAA"&&(t="AA"),n!=="small"&&n!=="large"&&(n="small"),{level:t,size:n}}var pt=pt||{};pt.stringify=function(){var e={"visit_linear-gradient":function(t){return e.visit_gradient(t)},"visit_repeating-linear-gradient":function(t){return e.visit_gradient(t)},"visit_radial-gradient":function(t){return e.visit_gradient(t)},"visit_repeating-radial-gradient":function(t){return e.visit_gradient(t)},visit_gradient:function(t){var n=e.visit(t.orientation);return n&&(n+=", "),t.type+"("+n+e.visit(t.colorStops)+")"},visit_shape:function(t){var n=t.value,r=e.visit(t.at),a=e.visit(t.style);return a&&(n+=" "+a),r&&(n+=" at "+r),n},"visit_default-radial":function(t){var n="",r=e.visit(t.at);return r&&(n+=r),n},"visit_extent-keyword":function(t){var n=t.value,r=e.visit(t.at);return r&&(n+=" at "+r),n},"visit_position-keyword":function(t){return t.value},visit_position:function(t){return e.visit(t.value.x)+" "+e.visit(t.value.y)},"visit_%":function(t){return t.value+"%"},visit_em:function(t){return t.value+"em"},visit_px:function(t){return t.value+"px"},visit_literal:function(t){return e.visit_color(t.value,t)},visit_hex:function(t){return e.visit_color("#"+t.value,t)},visit_rgb:function(t){return e.visit_color("rgb("+t.value.join(", ")+")",t)},visit_rgba:function(t){return e.visit_color("rgba("+t.value.join(", ")+")",t)},visit_color:function(t,n){var r=t,a=e.visit(n.length);return a&&(r+=" "+a),r},visit_angular:function(t){return t.value+"deg"},visit_directional:function(t){return"to "+t.value},visit_array:function(t){var n="",r=t.length;return t.forEach(function(a,o){n+=e.visit(a),o0&&n("Invalid input not EOF"),O}function a(){return _(o)}function o(){return s("linear-gradient",e.linearGradient,l)||s("repeating-linear-gradient",e.repeatingLinearGradient,l)||s("radial-gradient",e.radialGradient,d)||s("repeating-radial-gradient",e.repeatingRadialGradient,d)}function s(O,g,x){return i(g,function(j){var q=x();return q&&(F(e.comma)||n("Missing comma before color stops")),{type:O,orientation:q,colorStops:_(w)}})}function i(O,g){var x=F(O);if(x){F(e.startCall)||n("Missing (");var j=g(x);return F(e.endCall)||n("Missing )"),j}}function l(){return c()||u()}function c(){return H("directional",e.sideOrCorner,1)}function u(){return H("angular",e.angleValue,1)}function d(){var O,g=f(),x;return g&&(O=[],O.push(g),x=t,F(e.comma)&&(g=f(),g?O.push(g):t=x)),O}function f(){var O=p()||C();if(O)O.at=h();else{var g=y();if(g){O=g;var x=h();x&&(O.at=x)}else{var j=v();j&&(O={type:"default-radial",at:j})}}return O}function p(){var O=H("shape",/^(circle)/i,0);return O&&(O.style=T()||y()),O}function C(){var O=H("shape",/^(ellipse)/i,0);return O&&(O.style=b()||y()),O}function y(){return H("extent-keyword",e.extentKeywords,1)}function h(){if(H("position",/^at/,0)){var O=v();return O||n("Missing positioning value"),O}}function v(){var O=m();if(O.x||O.y)return{type:"position",value:O}}function m(){return{x:b(),y:b()}}function _(O){var g=O(),x=[];if(g)for(x.push(g);F(e.comma);)g=O(),g?x.push(g):n("One extra comma");return x}function w(){var O=E();return O||n("Expected color definition"),O.length=b(),O}function E(){return M()||D()||N()||$()}function $(){return H("literal",e.literalColor,0)}function M(){return H("hex",e.hexColor,1)}function N(){return i(e.rgbColor,function(){return{type:"rgb",value:_(K)}})}function D(){return i(e.rgbaColor,function(){return{type:"rgba",value:_(K)}})}function K(){return F(e.number)[1]}function b(){return H("%",e.percentageValue,1)||R()||T()}function R(){return H("position-keyword",e.positionKeywords,1)}function T(){return H("px",e.pixelValue,1)||H("em",e.emValue,1)}function H(O,g,x){var j=F(g);if(j)return{type:O,value:j[x]}}function F(O){var g,x;return x=/^[\n\r\t\s]+/.exec(t),x&&Y(x[0].length),g=O.exec(t),g&&Y(g[0].length),g}function Y(O){t=t.substr(O)}return function(O){return t=O.toString(),r()}}();var Xs=pt.parse,Js=pt.stringify,Ce="top",Me="bottom",Pe="right",_e="left",Mr="auto",ln=[Ce,Me,Pe,_e],kt="start",nn="end",Zs="clippingParents",Qo="viewport",Ft="popper",Qs="reference",Pa=ln.reduce(function(e,t){return e.concat([t+"-"+kt,t+"-"+nn])},[]),ei=[].concat(ln,[Mr]).reduce(function(e,t){return e.concat([t,t+"-"+kt,t+"-"+nn])},[]),eu="beforeRead",tu="read",nu="afterRead",ru="beforeMain",au="main",ou="afterMain",iu="beforeWrite",lu="write",su="afterWrite",uu=[eu,tu,nu,ru,au,ou,iu,lu,su];function Fe(e){return e?(e.nodeName||"").toLowerCase():null}function Ae(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function st(e){var t=Ae(e).Element;return e instanceof t||e instanceof Element}function Ee(e){var t=Ae(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Pr(e){if(typeof ShadowRoot>"u")return!1;var t=Ae(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function cu(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},a=t.attributes[n]||{},o=t.elements[n];!Ee(o)||!Fe(o)||(Object.assign(o.style,r),Object.keys(a).forEach(function(s){var i=a[s];i===!1?o.removeAttribute(s):o.setAttribute(s,i===!0?"":i)}))})}function du(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var a=t.elements[r],o=t.attributes[r]||{},s=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),i=s.reduce(function(l,c){return l[c]="",l},{});!Ee(a)||!Fe(a)||(Object.assign(a.style,i),Object.keys(o).forEach(function(l){a.removeAttribute(l)}))})}}const fu={name:"applyStyles",enabled:!0,phase:"write",fn:cu,effect:du,requires:["computeStyles"]};function Ne(e){return e.split("-")[0]}var it=Math.max,Sn=Math.min,At=Math.round;function _r(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function ti(){return!/^((?!chrome|android).)*safari/i.test(_r())}function Ot(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),a=1,o=1;t&&Ee(e)&&(a=e.offsetWidth>0&&At(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&At(r.height)/e.offsetHeight||1);var s=st(e)?Ae(e):window,i=s.visualViewport,l=!ti()&&n,c=(r.left+(l&&i?i.offsetLeft:0))/a,u=(r.top+(l&&i?i.offsetTop:0))/o,d=r.width/a,f=r.height/o;return{width:d,height:f,top:u,right:c+d,bottom:u+f,left:c,x:c,y:u}}function Ir(e){var t=Ot(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function ni(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Pr(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function qe(e){return Ae(e).getComputedStyle(e)}function pu(e){return["table","td","th"].indexOf(Fe(e))>=0}function rt(e){return((st(e)?e.ownerDocument:e.document)||window.document).documentElement}function Dn(e){return Fe(e)==="html"?e:e.assignedSlot||e.parentNode||(Pr(e)?e.host:null)||rt(e)}function Ia(e){return!Ee(e)||qe(e).position==="fixed"?null:e.offsetParent}function vu(e){var t=/firefox/i.test(_r()),n=/Trident/i.test(_r());if(n&&Ee(e)){var r=qe(e);if(r.position==="fixed")return null}var a=Dn(e);for(Pr(a)&&(a=a.host);Ee(a)&&["html","body"].indexOf(Fe(a))<0;){var o=qe(a);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return a;a=a.parentNode}return null}function sn(e){for(var t=Ae(e),n=Ia(e);n&&pu(n)&&qe(n).position==="static";)n=Ia(n);return n&&(Fe(n)==="html"||Fe(n)==="body"&&qe(n).position==="static")?t:n||vu(e)||t}function Hr(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Xt(e,t,n){return it(e,Sn(t,n))}function hu(e,t,n){var r=Xt(e,t,n);return r>n?n:r}function ri(){return{top:0,right:0,bottom:0,left:0}}function ai(e){return Object.assign({},ri(),e)}function oi(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var gu=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,ai(typeof t!="number"?t:oi(t,ln))};function yu(e){var t,n=e.state,r=e.name,a=e.options,o=n.elements.arrow,s=n.modifiersData.popperOffsets,i=Ne(n.placement),l=Hr(i),c=[_e,Pe].indexOf(i)>=0,u=c?"height":"width";if(!(!o||!s)){var d=gu(a.padding,n),f=Ir(o),p=l==="y"?Ce:_e,C=l==="y"?Me:Pe,y=n.rects.reference[u]+n.rects.reference[l]-s[l]-n.rects.popper[u],h=s[l]-n.rects.reference[l],v=sn(o),m=v?l==="y"?v.clientHeight||0:v.clientWidth||0:0,_=y/2-h/2,w=d[p],E=m-f[u]-d[C],$=m/2-f[u]/2+_,M=Xt(w,$,E),N=l;n.modifiersData[r]=(t={},t[N]=M,t.centerOffset=M-$,t)}}function mu(e){var t=e.state,n=e.options,r=n.element,a=r===void 0?"[data-popper-arrow]":r;a!=null&&(typeof a=="string"&&(a=t.elements.popper.querySelector(a),!a)||ni(t.elements.popper,a)&&(t.elements.arrow=a))}const bu={name:"arrow",enabled:!0,phase:"main",fn:yu,effect:mu,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function $t(e){return e.split("-")[1]}var Cu={top:"auto",right:"auto",bottom:"auto",left:"auto"};function _u(e,t){var n=e.x,r=e.y,a=t.devicePixelRatio||1;return{x:At(n*a)/a||0,y:At(r*a)/a||0}}function Ha(e){var t,n=e.popper,r=e.popperRect,a=e.placement,o=e.variation,s=e.offsets,i=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,d=e.isFixed,f=s.x,p=f===void 0?0:f,C=s.y,y=C===void 0?0:C,h=typeof u=="function"?u({x:p,y}):{x:p,y};p=h.x,y=h.y;var v=s.hasOwnProperty("x"),m=s.hasOwnProperty("y"),_=_e,w=Ce,E=window;if(c){var $=sn(n),M="clientHeight",N="clientWidth";if($===Ae(n)&&($=rt(n),qe($).position!=="static"&&i==="absolute"&&(M="scrollHeight",N="scrollWidth")),$=$,a===Ce||(a===_e||a===Pe)&&o===nn){w=Me;var D=d&&$===E&&E.visualViewport?E.visualViewport.height:$[M];y-=D-r.height,y*=l?1:-1}if(a===_e||(a===Ce||a===Me)&&o===nn){_=Pe;var K=d&&$===E&&E.visualViewport?E.visualViewport.width:$[N];p-=K-r.width,p*=l?1:-1}}var b=Object.assign({position:i},c&&Cu),R=u===!0?_u({x:p,y},Ae(n)):{x:p,y};if(p=R.x,y=R.y,l){var T;return Object.assign({},b,(T={},T[w]=m?"0":"",T[_]=v?"0":"",T.transform=(E.devicePixelRatio||1)<=1?"translate("+p+"px, "+y+"px)":"translate3d("+p+"px, "+y+"px, 0)",T))}return Object.assign({},b,(t={},t[w]=m?y+"px":"",t[_]=v?p+"px":"",t.transform="",t))}function xu(e){var t=e.state,n=e.options,r=n.gpuAcceleration,a=r===void 0?!0:r,o=n.adaptive,s=o===void 0?!0:o,i=n.roundOffsets,l=i===void 0?!0:i,c={placement:Ne(t.placement),variation:$t(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:a,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ha(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ha(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const wu={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:xu,data:{}};var pn={passive:!0};function Su(e){var t=e.state,n=e.instance,r=e.options,a=r.scroll,o=a===void 0?!0:a,s=r.resize,i=s===void 0?!0:s,l=Ae(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(u){u.addEventListener("scroll",n.update,pn)}),i&&l.addEventListener("resize",n.update,pn),function(){o&&c.forEach(function(u){u.removeEventListener("scroll",n.update,pn)}),i&&l.removeEventListener("resize",n.update,pn)}}const ku={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Su,data:{}};var Au={left:"right",right:"left",bottom:"top",top:"bottom"};function yn(e){return e.replace(/left|right|bottom|top/g,function(t){return Au[t]})}var Ou={start:"end",end:"start"};function ja(e){return e.replace(/start|end/g,function(t){return Ou[t]})}function jr(e){var t=Ae(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Br(e){return Ot(rt(e)).left+jr(e).scrollLeft}function $u(e,t){var n=Ae(e),r=rt(e),a=n.visualViewport,o=r.clientWidth,s=r.clientHeight,i=0,l=0;if(a){o=a.width,s=a.height;var c=ti();(c||!c&&t==="fixed")&&(i=a.offsetLeft,l=a.offsetTop)}return{width:o,height:s,x:i+Br(e),y:l}}function Eu(e){var t,n=rt(e),r=jr(e),a=(t=e.ownerDocument)==null?void 0:t.body,o=it(n.scrollWidth,n.clientWidth,a?a.scrollWidth:0,a?a.clientWidth:0),s=it(n.scrollHeight,n.clientHeight,a?a.scrollHeight:0,a?a.clientHeight:0),i=-r.scrollLeft+Br(e),l=-r.scrollTop;return qe(a||n).direction==="rtl"&&(i+=it(n.clientWidth,a?a.clientWidth:0)-o),{width:o,height:s,x:i,y:l}}function Lr(e){var t=qe(e),n=t.overflow,r=t.overflowX,a=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+a+r)}function ii(e){return["html","body","#document"].indexOf(Fe(e))>=0?e.ownerDocument.body:Ee(e)&&Lr(e)?e:ii(Dn(e))}function Jt(e,t){var n;t===void 0&&(t=[]);var r=ii(e),a=r===((n=e.ownerDocument)==null?void 0:n.body),o=Ae(r),s=a?[o].concat(o.visualViewport||[],Lr(r)?r:[]):r,i=t.concat(s);return a?i:i.concat(Jt(Dn(s)))}function xr(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Ru(e,t){var n=Ot(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function Ba(e,t,n){return t===Qo?xr($u(e,n)):st(t)?Ru(t,n):xr(Eu(rt(e)))}function Tu(e){var t=Jt(Dn(e)),n=["absolute","fixed"].indexOf(qe(e).position)>=0,r=n&&Ee(e)?sn(e):e;return st(r)?t.filter(function(a){return st(a)&&ni(a,r)&&Fe(a)!=="body"}):[]}function Mu(e,t,n,r){var a=t==="clippingParents"?Tu(e):[].concat(t),o=[].concat(a,[n]),s=o[0],i=o.reduce(function(l,c){var u=Ba(e,c,r);return l.top=it(u.top,l.top),l.right=Sn(u.right,l.right),l.bottom=Sn(u.bottom,l.bottom),l.left=it(u.left,l.left),l},Ba(e,s,r));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function li(e){var t=e.reference,n=e.element,r=e.placement,a=r?Ne(r):null,o=r?$t(r):null,s=t.x+t.width/2-n.width/2,i=t.y+t.height/2-n.height/2,l;switch(a){case Ce:l={x:s,y:t.y-n.height};break;case Me:l={x:s,y:t.y+t.height};break;case Pe:l={x:t.x+t.width,y:i};break;case _e:l={x:t.x-n.width,y:i};break;default:l={x:t.x,y:t.y}}var c=a?Hr(a):null;if(c!=null){var u=c==="y"?"height":"width";switch(o){case kt:l[c]=l[c]-(t[u]/2-n[u]/2);break;case nn:l[c]=l[c]+(t[u]/2-n[u]/2);break}}return l}function rn(e,t){t===void 0&&(t={});var n=t,r=n.placement,a=r===void 0?e.placement:r,o=n.strategy,s=o===void 0?e.strategy:o,i=n.boundary,l=i===void 0?Zs:i,c=n.rootBoundary,u=c===void 0?Qo:c,d=n.elementContext,f=d===void 0?Ft:d,p=n.altBoundary,C=p===void 0?!1:p,y=n.padding,h=y===void 0?0:y,v=ai(typeof h!="number"?h:oi(h,ln)),m=f===Ft?Qs:Ft,_=e.rects.popper,w=e.elements[C?m:f],E=Mu(st(w)?w:w.contextElement||rt(e.elements.popper),l,u,s),$=Ot(e.elements.reference),M=li({reference:$,element:_,strategy:"absolute",placement:a}),N=xr(Object.assign({},_,M)),D=f===Ft?N:$,K={top:E.top-D.top+v.top,bottom:D.bottom-E.bottom+v.bottom,left:E.left-D.left+v.left,right:D.right-E.right+v.right},b=e.modifiersData.offset;if(f===Ft&&b){var R=b[a];Object.keys(K).forEach(function(T){var H=[Pe,Me].indexOf(T)>=0?1:-1,F=[Ce,Me].indexOf(T)>=0?"y":"x";K[T]+=R[F]*H})}return K}function Pu(e,t){t===void 0&&(t={});var n=t,r=n.placement,a=n.boundary,o=n.rootBoundary,s=n.padding,i=n.flipVariations,l=n.allowedAutoPlacements,c=l===void 0?ei:l,u=$t(r),d=u?i?Pa:Pa.filter(function(C){return $t(C)===u}):ln,f=d.filter(function(C){return c.indexOf(C)>=0});f.length===0&&(f=d);var p=f.reduce(function(C,y){return C[y]=rn(e,{placement:y,boundary:a,rootBoundary:o,padding:s})[Ne(y)],C},{});return Object.keys(p).sort(function(C,y){return p[C]-p[y]})}function Iu(e){if(Ne(e)===Mr)return[];var t=yn(e);return[ja(e),t,ja(t)]}function Hu(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var a=n.mainAxis,o=a===void 0?!0:a,s=n.altAxis,i=s===void 0?!0:s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,d=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,C=p===void 0?!0:p,y=n.allowedAutoPlacements,h=t.options.placement,v=Ne(h),m=v===h,_=l||(m||!C?[yn(h)]:Iu(h)),w=[h].concat(_).reduce(function(pe,xe){return pe.concat(Ne(xe)===Mr?Pu(t,{placement:xe,boundary:u,rootBoundary:d,padding:c,flipVariations:C,allowedAutoPlacements:y}):xe)},[]),E=t.rects.reference,$=t.rects.popper,M=new Map,N=!0,D=w[0],K=0;K=0,F=H?"width":"height",Y=rn(t,{placement:b,boundary:u,rootBoundary:d,altBoundary:f,padding:c}),O=H?T?Pe:_e:T?Me:Ce;E[F]>$[F]&&(O=yn(O));var g=yn(O),x=[];if(o&&x.push(Y[R]<=0),i&&x.push(Y[O]<=0,Y[g]<=0),x.every(function(pe){return pe})){D=b,N=!1;break}M.set(b,x)}if(N)for(var j=C?3:1,q=function(xe){var Le=w.find(function(yt){var De=M.get(yt);if(De)return De.slice(0,xe).every(function(Dt){return Dt})});if(Le)return D=Le,"break"},fe=j;fe>0;fe--){var He=q(fe);if(He==="break")break}t.placement!==D&&(t.modifiersData[r]._skip=!0,t.placement=D,t.reset=!0)}}const ju={name:"flip",enabled:!0,phase:"main",fn:Hu,requiresIfExists:["offset"],data:{_skip:!1}};function La(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Da(e){return[Ce,Pe,Me,_e].some(function(t){return e[t]>=0})}function Bu(e){var t=e.state,n=e.name,r=t.rects.reference,a=t.rects.popper,o=t.modifiersData.preventOverflow,s=rn(t,{elementContext:"reference"}),i=rn(t,{altBoundary:!0}),l=La(s,r),c=La(i,a,o),u=Da(l),d=Da(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}const Lu={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Bu};function Du(e,t,n){var r=Ne(e),a=[_e,Ce].indexOf(r)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,s=o[0],i=o[1];return s=s||0,i=(i||0)*a,[_e,Pe].indexOf(r)>=0?{x:i,y:s}:{x:s,y:i}}function Nu(e){var t=e.state,n=e.options,r=e.name,a=n.offset,o=a===void 0?[0,0]:a,s=ei.reduce(function(u,d){return u[d]=Du(d,t.rects,o),u},{}),i=s[t.placement],l=i.x,c=i.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=s}const Vu={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Nu};function Fu(e){var t=e.state,n=e.name;t.modifiersData[n]=li({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Ku={name:"popperOffsets",enabled:!0,phase:"read",fn:Fu,data:{}};function Wu(e){return e==="x"?"y":"x"}function Uu(e){var t=e.state,n=e.options,r=e.name,a=n.mainAxis,o=a===void 0?!0:a,s=n.altAxis,i=s===void 0?!1:s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,d=n.padding,f=n.tether,p=f===void 0?!0:f,C=n.tetherOffset,y=C===void 0?0:C,h=rn(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:u}),v=Ne(t.placement),m=$t(t.placement),_=!m,w=Hr(v),E=Wu(w),$=t.modifiersData.popperOffsets,M=t.rects.reference,N=t.rects.popper,D=typeof y=="function"?y(Object.assign({},t.rects,{placement:t.placement})):y,K=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),b=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,R={x:0,y:0};if($){if(o){var T,H=w==="y"?Ce:_e,F=w==="y"?Me:Pe,Y=w==="y"?"height":"width",O=$[w],g=O+h[H],x=O-h[F],j=p?-N[Y]/2:0,q=m===kt?M[Y]:N[Y],fe=m===kt?-N[Y]:-M[Y],He=t.elements.arrow,pe=p&&He?Ir(He):{width:0,height:0},xe=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:ri(),Le=xe[H],yt=xe[F],De=Xt(0,M[Y],pe[Y]),Dt=_?M[Y]/2-j-De-Le-K.mainAxis:q-De-Le-K.mainAxis,zn=_?-M[Y]/2+j+De+yt+K.mainAxis:fe+De+yt+K.mainAxis,Nt=t.elements.arrow&&sn(t.elements.arrow),Gn=Nt?w==="y"?Nt.clientTop||0:Nt.clientLeft||0:0,B=(T=b==null?void 0:b[w])!=null?T:0,Vt=O+Dt-B-Gn,ae=O+zn-B,dn=Xt(p?Sn(g,Vt):g,O,p?it(x,ae):x);$[w]=dn,R[w]=dn-O}if(i){var Ke,qi=w==="x"?Ce:_e,Yi=w==="x"?Me:Pe,at=$[E],fn=E==="y"?"height":"width",ua=at+h[qi],ca=at-h[Yi],qn=[Ce,_e].indexOf(v)!==-1,da=(Ke=b==null?void 0:b[E])!=null?Ke:0,fa=qn?ua:at-M[fn]-N[fn]-da+K.altAxis,pa=qn?at+M[fn]+N[fn]-da-K.altAxis:ca,va=p&&qn?hu(fa,at,pa):Xt(p?fa:ua,at,p?pa:ca);$[E]=va,R[E]=va-at}t.modifiersData[r]=R}}const zu={name:"preventOverflow",enabled:!0,phase:"main",fn:Uu,requiresIfExists:["offset"]};function Gu(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function qu(e){return e===Ae(e)||!Ee(e)?jr(e):Gu(e)}function Yu(e){var t=e.getBoundingClientRect(),n=At(t.width)/e.offsetWidth||1,r=At(t.height)/e.offsetHeight||1;return n!==1||r!==1}function Xu(e,t,n){n===void 0&&(n=!1);var r=Ee(t),a=Ee(t)&&Yu(t),o=rt(t),s=Ot(e,a,n),i={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&((Fe(t)!=="body"||Lr(o))&&(i=qu(t)),Ee(t)?(l=Ot(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=Br(o))),{x:s.left+i.scrollLeft-l.x,y:s.top+i.scrollTop-l.y,width:s.width,height:s.height}}function Ju(e){var t=new Map,n=new Set,r=[];e.forEach(function(o){t.set(o.name,o)});function a(o){n.add(o.name);var s=[].concat(o.requires||[],o.requiresIfExists||[]);s.forEach(function(i){if(!n.has(i)){var l=t.get(i);l&&a(l)}}),r.push(o)}return e.forEach(function(o){n.has(o.name)||a(o)}),r}function Zu(e){var t=Ju(e);return uu.reduce(function(n,r){return n.concat(t.filter(function(a){return a.phase===r}))},[])}function Qu(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function ec(e){var t=e.reduce(function(n,r){var a=n[r.name];return n[r.name]=a?Object.assign({},a,r,{options:Object.assign({},a.options,r.options),data:Object.assign({},a.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var Na={placement:"bottom",modifiers:[],strategy:"absolute"};function Va(){for(var e=arguments.length,t=new Array(e),n=0;n - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */function Fa(e){return Object.prototype.toString.call(e)==="[object Object]"}function ac(e){var t,n;return Fa(e)===!1?!1:(t=e.constructor,t===void 0?!0:(n=t.prototype,!(Fa(n)===!1||n.hasOwnProperty("isPrototypeOf")===!1)))}function Zt(){return Zt=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(a[n]=e[n]);return a}const oc={silent:!1,logLevel:"warn"},ic=["validator"],ui=Object.prototype,ci=ui.toString,lc=ui.hasOwnProperty,di=/^\s*function (\w+)/;function Ka(e){var t;const n=(t=e==null?void 0:e.type)!==null&&t!==void 0?t:e;if(n){const r=n.toString().match(di);return r?r[1]:""}return""}const ut=ac,sc=e=>e;let ge=sc;const Et=(e,t)=>lc.call(e,t),uc=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e},Rt=Array.isArray||function(e){return ci.call(e)==="[object Array]"},Tt=e=>ci.call(e)==="[object Function]",kn=e=>ut(e)&&Et(e,"_vueTypes_name"),fi=e=>ut(e)&&(Et(e,"type")||["_vueTypes_name","validator","default","required"].some(t=>Et(e,t)));function Dr(e,t){return Object.defineProperty(e.bind(t),"__original",{value:e})}function vt(e,t,n=!1){let r,a=!0,o="";r=ut(e)?e:{type:e};const s=kn(r)?r._vueTypes_name+" - ":"";if(fi(r)&&r.type!==null){if(r.type===void 0||r.type===!0||!r.required&&t===void 0)return a;Rt(r.type)?(a=r.type.some(i=>vt(i,t,!0)===!0),o=r.type.map(i=>Ka(i)).join(" or ")):(o=Ka(r),a=o==="Array"?Rt(t):o==="Object"?ut(t):o==="String"||o==="Number"||o==="Boolean"||o==="Function"?function(i){if(i==null)return"";const l=i.constructor.toString().match(di);return l?l[1]:""}(t)===o:t instanceof r.type)}if(!a){const i=`${s}value "${t}" should be of type "${o}"`;return n===!1?(ge(i),!1):i}if(Et(r,"validator")&&Tt(r.validator)){const i=ge,l=[];if(ge=c=>{l.push(c)},a=r.validator(t),ge=i,!a){const c=(l.length>1?"* ":"")+l.join(` -* `);return l.length=0,n===!1?(ge(c),a):c}}return a}function ke(e,t){const n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get(){return this.required=!0,this}},def:{value(a){return a===void 0?(Et(this,"default")&&delete this.default,this):Tt(a)||vt(this,a,!0)===!0?(this.default=Rt(a)?()=>[...a]:ut(a)?()=>Object.assign({},a):a,this):(ge(`${this._vueTypes_name} - invalid default value: "${a}"`),this)}}}),{validator:r}=n;return Tt(r)&&(n.validator=Dr(r,n)),n}function Ve(e,t){const n=ke(e,t);return Object.defineProperty(n,"validate",{value(r){return Tt(this.validator)&&ge(`${this._vueTypes_name} - calling .validate() will overwrite the current custom validator function. Validator info: -${JSON.stringify(this)}`),this.validator=Dr(r,this),this}})}function Wa(e,t,n){const r=function(l){const c={};return Object.getOwnPropertyNames(l).forEach(u=>{c[u]=Object.getOwnPropertyDescriptor(l,u)}),Object.defineProperties({},c)}(t);if(r._vueTypes_name=e,!ut(n))return r;const{validator:a}=n,o=si(n,ic);if(Tt(a)){let{validator:l}=r;l&&(l=(i=(s=l).__original)!==null&&i!==void 0?i:s),r.validator=Dr(l?function(c){return l.call(this,c)&&a.call(this,c)}:a,r)}var s,i;return Object.assign(r,o)}function Nn(e){return e.replace(/^(?!\s*$)/gm," ")}const cc=()=>Ve("any",{}),dc=()=>Ve("function",{type:Function}),fc=()=>Ve("boolean",{type:Boolean}),pc=()=>Ve("string",{type:String}),vc=()=>Ve("number",{type:Number}),hc=()=>Ve("array",{type:Array}),gc=()=>Ve("object",{type:Object}),yc=()=>ke("integer",{type:Number,validator:e=>uc(e)}),mc=()=>ke("symbol",{validator:e=>typeof e=="symbol"});function bc(e,t="custom validation failed"){if(typeof e!="function")throw new TypeError("[VueTypes error]: You must provide a function as argument");return ke(e.name||"<>",{type:null,validator(n){const r=e(n);return r||ge(`${this._vueTypes_name} - ${t}`),r}})}function Cc(e){if(!Rt(e))throw new TypeError("[VueTypes error]: You must provide an array as argument.");const t=`oneOf - value should be one of "${e.join('", "')}".`,n=e.reduce((r,a)=>{if(a!=null){const o=a.constructor;r.indexOf(o)===-1&&r.push(o)}return r},[]);return ke("oneOf",{type:n.length>0?n:void 0,validator(r){const a=e.indexOf(r)!==-1;return a||ge(t),a}})}function _c(e){if(!Rt(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");let t=!1,n=[];for(let a=0;an.indexOf(a)===o);const r=n.length>0?n:null;return ke("oneOfType",t?{type:r,validator(a){const o=[],s=e.some(i=>{const l=vt(kn(i)&&i._vueTypes_name==="oneOf"?i.type||null:i,a,!0);return typeof l=="string"&&o.push(l),l===!0});return s||ge(`oneOfType - provided value does not match any of the ${o.length} passed-in validators: -${Nn(o.join(` -`))}`),s}}:{type:r})}function xc(e){return ke("arrayOf",{type:Array,validator(t){let n="";const r=t.every(a=>(n=vt(e,a,!0),n===!0));return r||ge(`arrayOf - value validation error: -${Nn(n)}`),r}})}function wc(e){return ke("instanceOf",{type:e})}function Sc(e){return ke("objectOf",{type:Object,validator(t){let n="";const r=Object.keys(t).every(a=>(n=vt(e,t[a],!0),n===!0));return r||ge(`objectOf - value validation error: -${Nn(n)}`),r}})}function kc(e){const t=Object.keys(e),n=t.filter(a=>{var o;return!((o=e[a])===null||o===void 0||!o.required)}),r=ke("shape",{type:Object,validator(a){if(!ut(a))return!1;const o=Object.keys(a);if(n.length>0&&n.some(s=>o.indexOf(s)===-1)){const s=n.filter(i=>o.indexOf(i)===-1);return ge(s.length===1?`shape - required property "${s[0]}" is not defined.`:`shape - required properties "${s.join('", "')}" are not defined.`),!1}return o.every(s=>{if(t.indexOf(s)===-1)return this._vueTypes_isLoose===!0||(ge(`shape - shape definition does not include a "${s}" property. Allowed keys: "${t.join('", "')}".`),!1);const i=vt(e[s],a[s],!0);return typeof i=="string"&&ge(`shape - "${s}" property validation error: - ${Nn(i)}`),i===!0})}});return Object.defineProperty(r,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(r,"loose",{get(){return this._vueTypes_isLoose=!0,this}}),r}const Ac=["name","validate","getter"],Oc=(()=>{var e;return(e=class{static get any(){return cc()}static get func(){return dc().def(this.defaults.func)}static get bool(){return fc().def(this.defaults.bool)}static get string(){return pc().def(this.defaults.string)}static get number(){return vc().def(this.defaults.number)}static get array(){return hc().def(this.defaults.array)}static get object(){return gc().def(this.defaults.object)}static get integer(){return yc().def(this.defaults.integer)}static get symbol(){return mc()}static get nullable(){return{type:null}}static extend(t){if(Rt(t))return t.forEach(l=>this.extend(l)),this;const{name:n,validate:r=!1,getter:a=!1}=t,o=si(t,Ac);if(Et(this,n))throw new TypeError(`[VueTypes error]: Type "${n}" already defined`);const{type:s}=o;if(kn(s))return delete o.type,Object.defineProperty(this,n,a?{get:()=>Wa(n,s,o)}:{value(...l){const c=Wa(n,s,o);return c.validator&&(c.validator=c.validator.bind(c,...l)),c}});let i;return i=a?{get(){const l=Object.assign({},o);return r?Ve(n,l):ke(n,l)},enumerable:!0}:{value(...l){const c=Object.assign({},o);let u;return u=r?Ve(n,c):ke(n,c),c.validator&&(u.validator=c.validator.bind(u,...l)),u},enumerable:!0},Object.defineProperty(this,n,i)}}).defaults={},e.sensibleDefaults=void 0,e.config=oc,e.custom=bc,e.oneOf=Cc,e.instanceOf=wc,e.oneOfType=_c,e.arrayOf=xc,e.objectOf=Sc,e.shape=kc,e.utils={validate:(t,n)=>vt(n,t,!0)===!0,toType:(t,n,r=!1)=>r?Ve(t,n):ke(t,n)},e})();function $c(e={func:()=>{},bool:!0,string:"",number:0,array:()=>[],object:()=>({}),integer:0}){var t;return(t=class extends Oc{static get sensibleDefaults(){return Zt({},this.defaults)}static set sensibleDefaults(n){this.defaults=n!==!1?Zt({},n!==!0?n:e):{}}}).defaults=Zt({},e),t}let I=class extends $c(){};var Ua=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Nr(e){var t={exports:{}};return e(t,t.exports),t.exports}var vn=function(e){return e&&e.Math==Math&&e},ie=vn(typeof globalThis=="object"&&globalThis)||vn(typeof window=="object"&&window)||vn(typeof self=="object"&&self)||vn(typeof Ua=="object"&&Ua)||function(){return this}()||Function("return this")(),X=function(e){try{return!!e()}catch{return!0}},$e=!X(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7}),za={}.propertyIsEnumerable,Ga=Object.getOwnPropertyDescriptor,Ec={f:Ga&&!za.call({1:2},1)?function(e){var t=Ga(this,e);return!!t&&t.enumerable}:za},Vn=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},Rc={}.toString,Ge=function(e){return Rc.call(e).slice(8,-1)},Tc="".split,Fn=X(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return Ge(e)=="String"?Tc.call(e,""):Object(e)}:Object,et=function(e){if(e==null)throw TypeError("Can't call method on "+e);return e},jt=function(e){return Fn(et(e))},se=function(e){return typeof e=="object"?e!==null:typeof e=="function"},Vr=function(e,t){if(!se(e))return e;var n,r;if(t&&typeof(n=e.toString)=="function"&&!se(r=n.call(e))||typeof(n=e.valueOf)=="function"&&!se(r=n.call(e))||!t&&typeof(n=e.toString)=="function"&&!se(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},Mc={}.hasOwnProperty,oe=function(e,t){return Mc.call(e,t)},wr=ie.document,Pc=se(wr)&&se(wr.createElement),pi=function(e){return Pc?wr.createElement(e):{}},vi=!$e&&!X(function(){return Object.defineProperty(pi("div"),"a",{get:function(){return 7}}).a!=7}),qa=Object.getOwnPropertyDescriptor,Fr={f:$e?qa:function(e,t){if(e=jt(e),t=Vr(t,!0),vi)try{return qa(e,t)}catch{}if(oe(e,t))return Vn(!Ec.f.call(e,t),e[t])}},be=function(e){if(!se(e))throw TypeError(String(e)+" is not an object");return e},Ya=Object.defineProperty,Ye={f:$e?Ya:function(e,t,n){if(be(e),t=Vr(t,!0),be(n),vi)try{return Ya(e,t,n)}catch{}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},Re=$e?function(e,t,n){return Ye.f(e,t,Vn(1,n))}:function(e,t,n){return e[t]=n,e},Kr=function(e,t){try{Re(ie,e,t)}catch{ie[e]=t}return t},ct=ie["__core-js_shared__"]||Kr("__core-js_shared__",{}),Ic=Function.toString;typeof ct.inspectSource!="function"&&(ct.inspectSource=function(e){return Ic.call(e)});var An,Qt,On,hi=ct.inspectSource,Xa=ie.WeakMap,Hc=typeof Xa=="function"&&/native code/.test(hi(Xa)),gi=Nr(function(e){(e.exports=function(t,n){return ct[t]||(ct[t]=n!==void 0?n:{})})("versions",[]).push({version:"3.8.3",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})}),jc=0,Bc=Math.random(),Wr=function(e){return"Symbol("+String(e===void 0?"":e)+")_"+(++jc+Bc).toString(36)},Ja=gi("keys"),Ur=function(e){return Ja[e]||(Ja[e]=Wr(e))},Kn={},Lc=ie.WeakMap;if(Hc){var mt=ct.state||(ct.state=new Lc),Dc=mt.get,Nc=mt.has,Vc=mt.set;An=function(e,t){return t.facade=e,Vc.call(mt,e,t),t},Qt=function(e){return Dc.call(mt,e)||{}},On=function(e){return Nc.call(mt,e)}}else{var Kt=Ur("state");Kn[Kt]=!0,An=function(e,t){return t.facade=e,Re(e,Kt,t),t},Qt=function(e){return oe(e,Kt)?e[Kt]:{}},On=function(e){return oe(e,Kt)}}var tt={set:An,get:Qt,has:On,enforce:function(e){return On(e)?Qt(e):An(e,{})},getterFor:function(e){return function(t){var n;if(!se(t)||(n=Qt(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},nt=Nr(function(e){var t=tt.get,n=tt.enforce,r=String(String).split("String");(e.exports=function(a,o,s,i){var l,c=!!i&&!!i.unsafe,u=!!i&&!!i.enumerable,d=!!i&&!!i.noTargetGet;typeof s=="function"&&(typeof o!="string"||oe(s,"name")||Re(s,"name",o),(l=n(s)).source||(l.source=r.join(typeof o=="string"?o:""))),a!==ie?(c?!d&&a[o]&&(u=!0):delete a[o],u?a[o]=s:Re(a,o,s)):u?a[o]=s:Kr(o,s)})(Function.prototype,"toString",function(){return typeof this=="function"&&t(this).source||hi(this)})}),Jn=ie,Za=function(e){return typeof e=="function"?e:void 0},Wn=function(e,t){return arguments.length<2?Za(Jn[e])||Za(ie[e]):Jn[e]&&Jn[e][t]||ie[e]&&ie[e][t]},Fc=Math.ceil,Kc=Math.floor,Bt=function(e){return isNaN(e=+e)?0:(e>0?Kc:Fc)(e)},Wc=Math.min,Oe=function(e){return e>0?Wc(Bt(e),9007199254740991):0},Uc=Math.max,zc=Math.min,$n=function(e,t){var n=Bt(e);return n<0?Uc(n+t,0):zc(n,t)},Qa=function(e){return function(t,n,r){var a,o=jt(t),s=Oe(o.length),i=$n(r,s);if(e&&n!=n){for(;s>i;)if((a=o[i++])!=a)return!0}else for(;s>i;i++)if((e||i in o)&&o[i]===n)return e||i||0;return!e&&-1}},yi={includes:Qa(!0),indexOf:Qa(!1)},Gc=yi.indexOf,mi=function(e,t){var n,r=jt(e),a=0,o=[];for(n in r)!oe(Kn,n)&&oe(r,n)&&o.push(n);for(;t.length>a;)oe(r,n=t[a++])&&(~Gc(o,n)||o.push(n));return o},En=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],qc=En.concat("length","prototype"),Yc={f:Object.getOwnPropertyNames||function(e){return mi(e,qc)}},Xc={f:Object.getOwnPropertySymbols},Jc=Wn("Reflect","ownKeys")||function(e){var t=Yc.f(be(e)),n=Xc.f;return n?t.concat(n(e)):t},Zc=function(e,t){for(var n=Jc(t),r=Ye.f,a=Fr.f,o=0;o1?arguments[1]:void 0)}});(function(){function e(){ht(this,e)}return gt(e,null,[{key:"isInBrowser",value:function(){return typeof window<"u"}},{key:"isServer",value:function(){return typeof window>"u"}},{key:"getUA",value:function(){return e.isInBrowser()?window.navigator.userAgent.toLowerCase():""}},{key:"isMobile",value:function(){return/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion)}},{key:"isOpera",value:function(){return navigator.userAgent.indexOf("Opera")!==-1}},{key:"isIE",value:function(){var t=e.getUA();return t!==""&&t.indexOf("msie")>0}},{key:"isIE9",value:function(){var t=e.getUA();return t!==""&&t.indexOf("msie 9.0")>0}},{key:"isEdge",value:function(){var t=e.getUA();return t!==""&&t.indexOf("edge/")>0}},{key:"isChrome",value:function(){var t=e.getUA();return t!==""&&/chrome\/\d+/.test(t)&&!e.isEdge()}},{key:"isPhantomJS",value:function(){var t=e.getUA();return t!==""&&/phantomjs/.test(t)}},{key:"isFirefox",value:function(){var t=e.getUA();return t!==""&&/firefox/.test(t)}}]),e})();var ud=[].join,cd=Fn!=Object,dd=zr("join",",");ye({target:"Array",proto:!0,forced:cd||!dd},{join:function(e){return ud.call(jt(this),e===void 0?",":e)}});var bt,Rn,Xe=function(e){return Object(et(e))},Mt=Array.isArray||function(e){return Ge(e)=="Array"},Ci=!!Object.getOwnPropertySymbols&&!X(function(){return!String(Symbol())}),fd=Ci&&!Symbol.sham&&typeof Symbol.iterator=="symbol",hn=gi("wks"),en=ie.Symbol,pd=fd?en:en&&en.withoutSetter||Wr,ee=function(e){return oe(hn,e)||(Ci&&oe(en,e)?hn[e]=en[e]:hn[e]=pd("Symbol."+e)),hn[e]},vd=ee("species"),Un=function(e,t){var n;return Mt(e)&&(typeof(n=e.constructor)!="function"||n!==Array&&!Mt(n.prototype)?se(n)&&(n=n[vd])===null&&(n=void 0):n=void 0),new(n===void 0?Array:n)(t===0?0:t)},Pt=function(e,t,n){var r=Vr(t);r in e?Ye.f(e,r,Vn(0,n)):e[r]=n},Qn=Wn("navigator","userAgent")||"",ro=ie.process,ao=ro&&ro.versions,oo=ao&&ao.v8;oo?Rn=(bt=oo.split("."))[0]+bt[1]:Qn&&(!(bt=Qn.match(/Edge\/(\d+)/))||bt[1]>=74)&&(bt=Qn.match(/Chrome\/(\d+)/))&&(Rn=bt[1]);var Tn=Rn&&+Rn,hd=ee("species"),Gr=function(e){return Tn>=51||!X(function(){var t=[];return(t.constructor={})[hd]=function(){return{foo:1}},t[e](Boolean).foo!==1})},gd=Gr("splice"),yd=Lt("splice",{ACCESSORS:!0,0:0,1:2}),md=Math.max,bd=Math.min;ye({target:"Array",proto:!0,forced:!gd||!yd},{splice:function(e,t){var n,r,a,o,s,i,l=Xe(this),c=Oe(l.length),u=$n(e,c),d=arguments.length;if(d===0?n=r=0:d===1?(n=0,r=c-u):(n=d-2,r=bd(md(Bt(t),0),c-u)),c+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(a=Un(l,r),o=0;oc-r+n;o--)delete l[o-1]}else if(n>r)for(o=c-r;o>u;o--)i=o+n-1,(s=o+r-1)in l?l[i]=l[s]:delete l[i];for(o=0;o0&&(!o.multiline||o.multiline&&e[o.lastIndex-1]!==` -`)&&(l="(?: "+l+")",u=" "+u,c++),n=new RegExp("^(?:"+l+")",i)),rr&&(n=new RegExp("^"+l+"$(?!\\s)",i)),nr&&(t=o.lastIndex),r=Mn.call(s?n:o,u),s?r?(r.input=r.input.slice(c),r[0]=r[0].slice(c),r.index=o.lastIndex,o.lastIndex+=r[0].length):o.lastIndex=0:nr&&r&&(o.lastIndex=o.global?r.index+r[0].length:t),rr&&r&&r.length>1&&wd.call(r[0],n,function(){for(a=1;a")!=="7"}),uo="a".replace(/./,"$0")==="$0",co=ee("replace"),fo=!!/./[co]&&/./[co]("a","$0")==="",$d=!X(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return n.length!==2||n[0]!=="a"||n[1]!=="b"}),Oi=function(e,t,n,r){var a=ee(e),o=!X(function(){var d={};return d[a]=function(){return 7},""[e](d)!=7}),s=o&&!X(function(){var d=!1,f=/a/;return e==="split"&&((f={}).constructor={},f.constructor[Ad]=function(){return f},f.flags="",f[a]=/./[a]),f.exec=function(){return d=!0,null},f[a](""),!d});if(!o||!s||e==="replace"&&(!Od||!uo||fo)||e==="split"&&!$d){var i=/./[a],l=n(a,""[e],function(d,f,p,C,y){return f.exec===an?o&&!y?{done:!0,value:i.call(f,p,C)}:{done:!0,value:d.call(p,f,C)}:{done:!1}},{REPLACE_KEEPS_$0:uo,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:fo}),c=l[0],u=l[1];nt(String.prototype,e,c),nt(RegExp.prototype,a,t==2?function(d,f){return u.call(d,this,f)}:function(d){return u.call(d,this)})}r&&Re(RegExp.prototype[a],"sham",!0)},Ed=ee("match"),$i=function(e){var t;return se(e)&&((t=e[Ed])!==void 0?!!t:Ge(e)=="RegExp")},Yr=function(e){if(typeof e!="function")throw TypeError(String(e)+" is not a function");return e},Rd=ee("species"),po=function(e){return function(t,n){var r,a,o=String(et(t)),s=Bt(n),i=o.length;return s<0||s>=i?e?"":void 0:(r=o.charCodeAt(s))<55296||r>56319||s+1===i||(a=o.charCodeAt(s+1))<56320||a>57343?e?o.charAt(s):r:e?o.slice(s,s+2):a-56320+(r-55296<<10)+65536}},Ei={codeAt:po(!1),charAt:po(!0)},Td=Ei.charAt,Ri=function(e,t,n){return t+(n?Td(e,t).length:1)},kr=function(e,t){var n=e.exec;if(typeof n=="function"){var r=n.call(e,t);if(typeof r!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return r}if(Ge(e)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return an.call(e,t)},Md=[].push,Pd=Math.min,Ct=!X(function(){return!RegExp(4294967295,"y")});Oi("split",2,function(e,t,n){var r;return r="abbc".split(/(b)*/)[1]=="c"||"test".split(/(?:)/,-1).length!=4||"ab".split(/(?:ab)*/).length!=2||".".split(/(.?)(.?)/).length!=4||".".split(/()()/).length>1||"".split(/.?/).length?function(a,o){var s=String(et(this)),i=o===void 0?4294967295:o>>>0;if(i===0)return[];if(a===void 0)return[s];if(!$i(a))return t.call(s,a,i);for(var l,c,u,d=[],f=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(a.sticky?"y":""),p=0,C=new RegExp(a.source,f+"g");(l=an.call(C,s))&&!((c=C.lastIndex)>p&&(d.push(s.slice(p,l.index)),l.length>1&&l.index=i));)C.lastIndex===l.index&&C.lastIndex++;return p===s.length?!u&&C.test("")||d.push(""):d.push(s.slice(p)),d.length>i?d.slice(0,i):d}:"0".split(void 0,0).length?function(a,o){return a===void 0&&o===0?[]:t.call(this,a,o)}:t,[function(a,o){var s=et(this),i=a==null?void 0:a[e];return i!==void 0?i.call(a,s,o):r.call(String(s),a,o)},function(a,o){var s=n(r,a,this,o,r!==t);if(s.done)return s.value;var i=be(a),l=String(this),c=function(w,E){var $,M=be(w).constructor;return M===void 0||($=be(M)[Rd])==null?E:Yr($)}(i,RegExp),u=i.unicode,d=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(Ct?"y":"g"),f=new c(Ct?i:"^(?:"+i.source+")",d),p=o===void 0?4294967295:o>>>0;if(p===0)return[];if(l.length===0)return kr(f,l)===null?[l]:[];for(var C=0,y=0,h=[];y1?arguments[1]:void 0,t.length)),r=String(e);return vo?vo.call(t,r,n):t.slice(n,n+r.length)===r}});var _t=function(e){return typeof e=="string"},xt=function(e){return e!==null&&Mi(e)==="object"},on=function(){function e(){ht(this,e)}return gt(e,null,[{key:"isWindow",value:function(t){return t===window}},{key:"addEventListener",value:function(t,n,r){var a=arguments.length>3&&arguments[3]!==void 0&&arguments[3];t&&n&&r&&t.addEventListener(n,r,a)}},{key:"removeEventListener",value:function(t,n,r){var a=arguments.length>3&&arguments[3]!==void 0&&arguments[3];t&&n&&r&&t.removeEventListener(n,r,a)}},{key:"triggerDragEvent",value:function(t,n){var r=!1,a=function(s){var i;(i=n.drag)===null||i===void 0||i.call(n,s)},o=function s(i){var l;e.removeEventListener(document,"mousemove",a),e.removeEventListener(document,"mouseup",s),document.onselectstart=null,document.ondragstart=null,r=!1,(l=n.end)===null||l===void 0||l.call(n,i)};e.addEventListener(t,"mousedown",function(s){var i;r||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},e.addEventListener(document,"mousemove",a),e.addEventListener(document,"mouseup",o),r=!0,(i=n.start)===null||i===void 0||i.call(n,s))})}},{key:"getBoundingClientRect",value:function(t){return t&&xt(t)&&t.nodeType===1?t.getBoundingClientRect():null}},{key:"hasClass",value:function(t,n){return!!(t&&xt(t)&&_t(n)&&t.nodeType===1)&&t.classList.contains(n.trim())}},{key:"addClass",value:function(t,n){if(t&&xt(t)&&_t(n)&&t.nodeType===1&&(n=n.trim(),!e.hasClass(t,n))){var r=t.className;t.className=r?r+" "+n:n}}},{key:"removeClass",value:function(t,n){if(t&&xt(t)&&_t(n)&&t.nodeType===1&&typeof t.className=="string"){n=n.trim();for(var r=t.className.trim().split(" "),a=r.length-1;a>=0;a--)r[a]=r[a].trim(),r[a]&&r[a]!==n||r.splice(a,1);t.className=r.join(" ")}}},{key:"toggleClass",value:function(t,n,r){t&&xt(t)&&_t(n)&&t.nodeType===1&&t.classList.toggle(n,r)}},{key:"replaceClass",value:function(t,n,r){t&&xt(t)&&_t(n)&&_t(r)&&t.nodeType===1&&(n=n.trim(),r=r.trim(),e.removeClass(t,n),e.addClass(t,r))}},{key:"getScrollTop",value:function(t){var n="scrollTop"in t?t.scrollTop:t.pageYOffset;return Math.max(n,0)}},{key:"setScrollTop",value:function(t,n){"scrollTop"in t?t.scrollTop=n:t.scrollTo(t.scrollX,n)}},{key:"getRootScrollTop",value:function(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0}},{key:"setRootScrollTop",value:function(t){e.setScrollTop(window,t),e.setScrollTop(document.body,t)}},{key:"getElementTop",value:function(t,n){if(e.isWindow(t))return 0;var r=n?e.getScrollTop(n):e.getRootScrollTop();return t.getBoundingClientRect().top+r}},{key:"getVisibleHeight",value:function(t){return e.isWindow(t)?t.innerHeight:t.getBoundingClientRect().height}},{key:"isHidden",value:function(t){if(!t)return!1;var n=window.getComputedStyle(t),r=n.display==="none",a=t.offsetParent===null&&n.position!=="fixed";return r||a}},{key:"triggerEvent",value:function(t,n){if("createEvent"in document){var r=document.createEvent("HTMLEvents");r.initEvent(n,!1,!0),t.dispatchEvent(r)}}},{key:"calcAngle",value:function(t,n){var r=t.getBoundingClientRect(),a=r.left+r.width/2,o=r.top+r.height/2,s=Math.abs(a-n.clientX),i=Math.abs(o-n.clientY),l=i/Math.sqrt(Math.pow(s,2)+Math.pow(i,2)),c=Math.acos(l),u=Math.floor(180/(Math.PI/c));return n.clientX>a&&n.clientY>o&&(u=180-u),n.clientX==a&&n.clientY>o&&(u=180),n.clientX>a&&n.clientY==o&&(u=90),n.clientXo&&(u=180+u),n.clientX1?r-1:0),o=1;o]*>)/g,Zd=/\$([$&'`]|\d\d?)/g,Qd=function(e,t,n,r,a,o){var s=n+e.length,i=r.length,l=Zd;return a!==void 0&&(a=Xe(a),l=Jd),Xd.call(o,l,function(c,u){var d;switch(u.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(s);case"<":d=a[u.slice(1,-1)];break;default:var f=+u;if(f===0)return c;if(f>i){var p=Yd(f/10);return p===0?c:p<=i?r[p-1]===void 0?u.charAt(1):r[p-1]+u.charAt(1):c}d=r[f-1]}return d===void 0?"":d})},ef=Math.max,tf=Math.min;Oi("replace",2,function(e,t,n,r){var a=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,o=r.REPLACE_KEEPS_$0,s=a?"$":"$0";return[function(i,l){var c=et(this),u=i==null?void 0:i[e];return u!==void 0?u.call(i,c,l):t.call(String(c),i,l)},function(i,l){if(!a&&o||typeof l=="string"&&l.indexOf(s)===-1){var c=n(t,i,this,l);if(c.done)return c.value}var u=be(i),d=String(this),f=typeof l=="function";f||(l=String(l));var p=u.global;if(p){var C=u.unicode;u.lastIndex=0}for(var y=[];;){var h=kr(u,d);if(h===null||(y.push(h),!p))break;String(h[0])===""&&(u.lastIndex=Ri(d,Oe(u.lastIndex),C))}for(var v,m="",_=0,w=0;w=_&&(m+=d.slice(_,$)+b,_=$+E.length)}return m+d.slice(_)}]});(function(){function e(){ht(this,e)}return gt(e,null,[{key:"camelize",value:function(t){return t.replace(/-(\w)/g,function(n,r){return r?r.toUpperCase():""})}},{key:"capitalize",value:function(t){return t.charAt(0).toUpperCase()+t.slice(1)}}]),e})();(function(){function e(){ht(this,e)}return gt(e,null,[{key:"_clone",value:function(){}}]),e})();var Pi=ee("isConcatSpreadable"),nf=Tn>=51||!X(function(){var e=[];return e[Pi]=!1,e.concat()[0]!==e}),rf=Gr("concat"),af=function(e){if(!se(e))return!1;var t=e[Pi];return t!==void 0?!!t:Mt(e)};ye({target:"Array",proto:!0,forced:!nf||!rf},{concat:function(e){var t,n,r,a,o,s=Xe(this),i=Un(s,0),l=0;for(t=-1,r=arguments.length;t9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");Pt(i,l++,o)}return i.length=l,i}});var ir,cn=function(e,t,n){if(Yr(e),t===void 0)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(r){return e.call(t,r)};case 2:return function(r,a){return e.call(t,r,a)};case 3:return function(r,a,o){return e.call(t,r,a,o)}}return function(){return e.apply(t,arguments)}},ho=[].push,Je=function(e){var t=e==1,n=e==2,r=e==3,a=e==4,o=e==6,s=e==7,i=e==5||o;return function(l,c,u,d){for(var f,p,C=Xe(l),y=Fn(C),h=cn(c,u,3),v=Oe(y.length),m=0,_=d||Un,w=t?_(l,v):n||s?_(l,0):void 0;v>m;m++)if((i||m in y)&&(p=h(f=y[m],m,C),e))if(t)w[m]=p;else if(p)switch(e){case 3:return!0;case 5:return f;case 6:return m;case 2:ho.call(w,f)}else switch(e){case 4:return!1;case 7:ho.call(w,f)}return o?-1:r||a?a:w}},Ii={forEach:Je(0),map:Je(1),filter:Je(2),some:Je(3),every:Je(4),find:Je(5),findIndex:Je(6),filterOut:Je(7)},of=$e?Object.defineProperties:function(e,t){be(e);for(var n,r=Xr(t),a=r.length,o=0;a>o;)Ye.f(e,n=r[o++],t[n]);return e},lf=Wn("document","documentElement"),Hi=Ur("IE_PROTO"),lr=function(){},go=function(e){return" - + + diff --git a/vue/src/App.vue b/vue/src/App.vue index d177e1b..3d9c8c0 100644 --- a/vue/src/App.vue +++ b/vue/src/App.vue @@ -1,10 +1,13 @@ + + diff --git a/vue/src/components/SmartOrganizeConfigModal.vue b/vue/src/components/SmartOrganizeConfigModal.vue new file mode 100644 index 0000000..8d385bd --- /dev/null +++ b/vue/src/components/SmartOrganizeConfigModal.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/vue/src/i18n/de.ts b/vue/src/i18n/de.ts index 1f03046..400381c 100644 --- a/vue/src/i18n/de.ts +++ b/vue/src/i18n/de.ts @@ -236,5 +236,73 @@ export const de: Partial = { aiAnalyzeTagsNoValidTags: 'Keine gültigen passenden Tags gefunden', aiAnalyzeTagsAllTagsAlreadyAdded: 'Alle passenden Tags wurden bereits zum Bild hinzugefügt', aiAnalyzeTagsSuccess: '{0} Tags hinzugefügt: {1}', - aiAnalyzeTagsFailed: 'KI-Tag-Analyse fehlgeschlagen, bitte Konfiguration überprüfen' + aiAnalyzeTagsFailed: 'KI-Tag-Analyse fehlgeschlagen, bitte Konfiguration überprüfen', + + // ===== Smart Organize Files ===== + organizeJobs: 'Organisationsaufgaben', + folders: 'Ordner', + files: 'Dateien', + queued: 'In Warteschlange', + analyzing: 'Analysieren', + waitingConfirm: 'Warten auf Bestätigung', + moving: 'Verschieben', + completed: 'Abgeschlossen', + error: 'Fehler', + generatingEmbeddings: 'Vektoren werden erzeugt...', + clusteringAnalysis: 'Clustering-Analyse...', + generatingTitles: 'Titel werden erzeugt...', + previewReady: 'Vorschau bereit', + movingFiles: 'Dateien werden verschoben...', + organizePreviewReady: 'Vorschau bereit: {files} Dateien → {clusters} Ordner', + viewPreview: 'Vorschau anzeigen', + smartOrganizePreview: 'Smart Organize Vorschau', + organizePreviewSummary: '{files} Dateien werden in {folders} Ordner organisiert', + destFolder: 'Zielordner', + unsorted: 'Unsortiert', + skip: 'Überspringen', + cancelSkip: 'Überspringen abbrechen', + showMore: '{count} weitere anzeigen...', + willMove: '{count} Dateien werden verschoben', + skipped: '{count} übersprungen', + confirmOrganize: 'Organisation bestätigen', + startMovingFiles: 'Dateien werden verschoben...', + confirmFailed: 'Bestätigung fehlgeschlagen', + organizeComplete: 'Fertig: {moved} Dateien verschoben, {folders} Ordner erstellt', + organizeFailed: 'Organisation fehlgeschlagen', + smartOrganize: 'AI Organize', + smartOrganizeHint: 'KI analysiert und organisiert verstreute Dateien in Ordner', + organizeJobStarted: 'Organisationsaufgabe gestartet, Fortschritt im Panel unten rechts', + + // Smart Organize Config Modal + smartOrganizeConfig: 'Smart Organize Einstellungen', + smartOrganizeConfigDesc: 'Smart Organize Optionen konfigurieren', + smartOrganizeNotice: 'Mehr Dateien und verteilte Cluster benötigen mehr Zeit. Die Aufgabe läuft im Hintergrund.', + organizeSourceFolders: 'Zu organisierende Ordner', + organizeSourceFolder: 'Zielordner', + organizeSourceFolderHint: 'Dateien in diesem Ordner werden in Kategorien organisiert', + organizeRecursive: 'Unterordner einbeziehen', + organizeRecursiveDesc: 'Alle Dateien in Unterordnern als zu organisierende Dateien behandeln', + organizeMinClusterSize: 'Min. Clustergröße', + organizeMinClusterSizeDesc: 'Weniger Dateien als diese Anzahl erstellen keinen separaten Ordner', + organizeTargetFolder: 'Zielordner', + organizeTargetFolderDesc: 'Organisierte Dateien werden in diesen Ordner verschoben (Standard: aktueller Ordner)', + organizeAction: 'Aktion', + organizeActionMove: 'Verschieben', + organizeActionCopy: 'Kopieren', + organizeStartTask: 'Organisation starten', + organizeCancel: 'Abbrechen', + updatingIndex: 'Index wird aktualisiert...', + startingOrganizeJob: 'Organisationsaufgabe wird gestartet...', + + // Flatten folder + flattenFolder: 'Ordner abflachen', + flattenFolderDesc: 'Alle Dateien aus Unterordnern in den aktuellen Ordner verschieben', + flattenFolderWarning: 'Dies ist eine gefährliche Operation! Alle Dateien in Unterordnern werden in den aktuellen Ordner verschoben, Unterordner werden gelöscht.', + flattenFolderScanning: 'Dateien werden gescannt...', + flattenFolderConflict: 'Dateinamenskonflikte gefunden, Abflachung nicht möglich', + flattenFolderConflictFiles: 'Konfliktbehaftete Dateinamen', + flattenFolderConfirm: '{count} Dateien abflachen bestätigen?', + flattenFolderExecuting: 'Ordner wird abgeflacht...', + flattenFolderSuccess: 'Abflachung abgeschlossen, {count} Dateien verschoben', + flattenFolderNoFiles: 'Keine Dateien zum Verschieben' } diff --git a/vue/src/i18n/en.ts b/vue/src/i18n/en.ts index 0e5cb8c..970e476 100644 --- a/vue/src/i18n/en.ts +++ b/vue/src/i18n/en.ts @@ -496,5 +496,73 @@ You can specify which snapshot to restore to when starting IIB in the global set aiAnalyzeTagsNoValidTags: 'No valid matching tags found', aiAnalyzeTagsAllTagsAlreadyAdded: 'All matched tags have already been added to the image', aiAnalyzeTagsSuccess: 'Added {0} tags: {1}', - aiAnalyzeTagsFailed: 'AI tag analysis failed, please check configuration' + aiAnalyzeTagsFailed: 'AI tag analysis failed, please check configuration', + + // ===== Smart Organize Files ===== + organizeJobs: 'Organize Tasks', + folders: 'folders', + files: 'files', + queued: 'Queued', + analyzing: 'Analyzing', + waitingConfirm: 'Waiting Confirm', + moving: 'Moving', + completed: 'Completed', + error: 'Error', + generatingEmbeddings: 'Generating embeddings...', + clusteringAnalysis: 'Clustering analysis...', + generatingTitles: 'Generating titles...', + previewReady: 'Preview ready', + movingFiles: 'Moving files...', + organizePreviewReady: 'Preview ready: {files} files → {clusters} folders', + viewPreview: 'View Preview', + smartOrganizePreview: 'Smart Organize Preview', + organizePreviewSummary: '{files} files will be organized into {folders} folders', + destFolder: 'Destination folder', + unsorted: 'Unsorted', + skip: 'Skip', + cancelSkip: 'Cancel Skip', + showMore: 'Show {count} more...', + willMove: 'Will move {count} files', + skipped: '{count} skipped', + confirmOrganize: 'Confirm Organize', + startMovingFiles: 'Starting to move files...', + confirmFailed: 'Confirm failed', + organizeComplete: 'Done: {moved} files moved, {folders} folders created', + organizeFailed: 'Organize failed', + smartOrganize: 'AI Organize', + smartOrganizeHint: 'AI will analyze and organize scattered files into folders', + organizeJobStarted: 'Organize task started, check progress in bottom-right panel', + + // Smart Organize Config Modal + smartOrganizeConfig: 'Smart Organize Settings', + smartOrganizeConfigDesc: 'Configure smart organize options', + smartOrganizeNotice: 'More files and scattered clusters take longer to process. The task runs in background, so you can continue working.', + organizeSourceFolders: 'Folders to organize', + organizeSourceFolder: 'Target folder', + organizeSourceFolderHint: 'Files in this folder will be organized into categories', + organizeRecursive: 'Include subfolders', + organizeRecursiveDesc: 'Treat all files in subfolders as files to organize', + organizeMinClusterSize: 'Min cluster size', + organizeMinClusterSizeDesc: 'Files less than this number will not create a separate folder', + organizeTargetFolder: 'Target folder', + organizeTargetFolderDesc: 'Organized files will be placed in this folder (default: current folder)', + organizeAction: 'Action', + organizeActionMove: 'Move', + organizeActionCopy: 'Copy', + organizeStartTask: 'Start Organize', + organizeCancel: 'Cancel', + updatingIndex: 'Updating index...', + startingOrganizeJob: 'Starting organize job...', + + // Flatten folder + flattenFolder: 'Flatten Folder', + flattenFolderDesc: 'Move all files from subfolders to current folder', + flattenFolderWarning: 'This is a dangerous operation! All files in subfolders will be moved to the current folder, and subfolders will be deleted.', + flattenFolderScanning: 'Scanning files...', + flattenFolderConflict: 'Filename conflicts found, cannot flatten', + flattenFolderConflictFiles: 'Conflicting filenames', + flattenFolderConfirm: 'Confirm flattening {count} files?', + flattenFolderExecuting: 'Flattening folder...', + flattenFolderSuccess: 'Flatten complete, moved {count} files', + flattenFolderNoFiles: 'No files to move' } diff --git a/vue/src/i18n/zh-hans.ts b/vue/src/i18n/zh-hans.ts index fdca609..1ff7f05 100644 --- a/vue/src/i18n/zh-hans.ts +++ b/vue/src/i18n/zh-hans.ts @@ -474,5 +474,73 @@ export const zhHans = { aiAnalyzeTagsNoValidTags: '没有找到有效的匹配标签', aiAnalyzeTagsAllTagsAlreadyAdded: '所有匹配的标签已经添加到图像上了', aiAnalyzeTagsSuccess: '已添加 {0} 个标签:{1}', - aiAnalyzeTagsFailed: 'AI分析标签失败,请检查配置' + aiAnalyzeTagsFailed: 'AI分析标签失败,请检查配置', + + // ===== 智能整理文件 ===== + organizeJobs: '整理任务', + folders: '个文件夹', + files: '个文件', + queued: '排队中', + analyzing: '分析中', + waitingConfirm: '待确认', + moving: '移动中', + completed: '已完成', + error: '错误', + generatingEmbeddings: '正在生成向量...', + clusteringAnalysis: '正在聚类分析...', + generatingTitles: '正在生成标题...', + previewReady: '预览就绪', + movingFiles: '正在移动文件...', + organizePreviewReady: '预览就绪:{files} 个文件 → {clusters} 个文件夹', + viewPreview: '查看预览', + smartOrganizePreview: '智能整理预览', + organizePreviewSummary: '{files} 个文件将被整理到 {folders} 个文件夹', + destFolder: '目标文件夹', + unsorted: '未分类', + skip: '跳过', + cancelSkip: '取消跳过', + showMore: '显示更多 ({count})...', + willMove: '将移动 {count} 个文件', + skipped: '已跳过 {count} 个', + confirmOrganize: '确认整理', + startMovingFiles: '开始移动文件...', + confirmFailed: '确认失败', + organizeComplete: '完成:已移动 {moved} 个文件,创建了 {folders} 个文件夹', + organizeFailed: '整理失败', + smartOrganize: 'AI整理', + smartOrganizeHint: 'AI 将分析并把零散文件整理到文件夹中', + organizeJobStarted: '整理任务已启动,请在右下角面板查看进度', + + // Smart Organize Config Modal + smartOrganizeConfig: '智能整理设置', + smartOrganizeConfigDesc: '配置智能整理选项', + smartOrganizeNotice: '文件越多、聚类越分散,处理时间越长。任务会在后台运行,你可以继续其他操作。', + organizeSourceFolders: '将对以下文件夹进行整理', + organizeSourceFolder: '整理目标文件夹', + organizeSourceFolderHint: '将对该文件夹内的文件进行智能分类整理', + organizeRecursive: '递归处理子文件夹', + organizeRecursiveDesc: '将所有子文件夹中的文件都视为待整理文件', + organizeMinClusterSize: '最小聚类大小', + organizeMinClusterSizeDesc: '少于此数量的文件不会创建单独文件夹', + organizeTargetFolder: '目标文件夹', + organizeTargetFolderDesc: '整理后的文件将放入此文件夹(默认为当前文件夹)', + organizeAction: '操作方式', + organizeActionMove: '移动', + organizeActionCopy: '复制', + organizeStartTask: '开始整理', + organizeCancel: '取消', + updatingIndex: '正在更新索引...', + startingOrganizeJob: '正在启动整理任务...', + + // Flatten folder + flattenFolder: '压平文件夹', + flattenFolderDesc: '将所有子文件夹中的文件移动到当前文件夹', + flattenFolderWarning: '这是一个危险操作!所有子文件夹中的文件将被移动到当前文件夹,子文件夹将被删除。', + flattenFolderScanning: '正在扫描文件...', + flattenFolderConflict: '发现文件名冲突,无法执行压平操作', + flattenFolderConflictFiles: '冲突的文件名', + flattenFolderConfirm: '确认压平 {count} 个文件?', + flattenFolderExecuting: '正在压平文件夹...', + flattenFolderSuccess: '压平完成,已移动 {count} 个文件', + flattenFolderNoFiles: '没有需要移动的文件' } diff --git a/vue/src/i18n/zh-hant.ts b/vue/src/i18n/zh-hant.ts index 9e857b4..c5ffbf6 100644 --- a/vue/src/i18n/zh-hant.ts +++ b/vue/src/i18n/zh-hant.ts @@ -476,5 +476,73 @@ export const zhHant: Partial = { aiAnalyzeTagsNoValidTags: '沒有找到有效的匹配標籤', aiAnalyzeTagsAllTagsAlreadyAdded: '所有匹配的標籤已經添加到圖像上了', aiAnalyzeTagsSuccess: '已添加 {0} 個標籤:{1}', - aiAnalyzeTagsFailed: 'AI分析標籤失敗,請檢查配置' + aiAnalyzeTagsFailed: 'AI分析標籤失敗,請檢查配置', + + // ===== 智能整理文件 ===== + organizeJobs: '整理任務', + folders: '個資料夾', + files: '個檔案', + queued: '排隊中', + analyzing: '分析中', + waitingConfirm: '待確認', + moving: '移動中', + completed: '已完成', + error: '錯誤', + generatingEmbeddings: '正在生成向量...', + clusteringAnalysis: '正在聚類分析...', + generatingTitles: '正在生成標題...', + previewReady: '預覽就緒', + movingFiles: '正在移動檔案...', + organizePreviewReady: '預覽就緒:{files} 個檔案 → {clusters} 個資料夾', + viewPreview: '查看預覽', + smartOrganizePreview: '智能整理預覽', + organizePreviewSummary: '{files} 個檔案將被整理到 {folders} 個資料夾', + destFolder: '目標資料夾', + unsorted: '未分類', + skip: '跳過', + cancelSkip: '取消跳過', + showMore: '顯示更多 ({count})...', + willMove: '將移動 {count} 個檔案', + skipped: '已跳過 {count} 個', + confirmOrganize: '確認整理', + startMovingFiles: '開始移動檔案...', + confirmFailed: '確認失敗', + organizeComplete: '完成:已移動 {moved} 個檔案,創建了 {folders} 個資料夾', + organizeFailed: '整理失敗', + smartOrganize: 'AI整理', + smartOrganizeHint: 'AI 將分析並把零散檔案整理到資料夾中', + organizeJobStarted: '整理任務已啟動,請在右下角面板查看進度', + + // Smart Organize Config Modal + smartOrganizeConfig: '智能整理設定', + smartOrganizeConfigDesc: '配置智能整理選項', + smartOrganizeNotice: '檔案越多、聚類越分散,處理時間越長。任務會在背景運行,您可以繼續其他操作。', + organizeSourceFolders: '將對以下資料夾進行整理', + organizeSourceFolder: '整理目標資料夾', + organizeSourceFolderHint: '將對該資料夾內的檔案進行智能分類整理', + organizeRecursive: '遞迴處理子資料夾', + organizeRecursiveDesc: '將所有子資料夾中的檔案都視為待整理檔案', + organizeMinClusterSize: '最小聚類大小', + organizeMinClusterSizeDesc: '少於此數量的檔案不會創建單獨資料夾', + organizeTargetFolder: '目標資料夾', + organizeTargetFolderDesc: '整理後的檔案將放入此資料夾(預設為目前資料夾)', + organizeAction: '操作方式', + organizeActionMove: '移動', + organizeActionCopy: '複製', + organizeStartTask: '開始整理', + organizeCancel: '取消', + updatingIndex: '正在更新索引...', + startingOrganizeJob: '正在啟動整理任務...', + + // Flatten folder + flattenFolder: '壓平資料夾', + flattenFolderDesc: '將所有子資料夾中的檔案移動到目前資料夾', + flattenFolderWarning: '這是一個危險操作!所有子資料夾中的檔案將被移動到目前資料夾,子資料夾將被刪除。', + flattenFolderScanning: '正在掃描檔案...', + flattenFolderConflict: '發現檔案名稱衝突,無法執行壓平操作', + flattenFolderConflictFiles: '衝突的檔案名稱', + flattenFolderConfirm: '確認壓平 {count} 個檔案?', + flattenFolderExecuting: '正在壓平資料夾...', + flattenFolderSuccess: '壓平完成,已移動 {count} 個檔案', + flattenFolderNoFiles: '沒有需要移動的檔案' } diff --git a/vue/src/page/OrganizeFiles/OrganizePreview.vue b/vue/src/page/OrganizeFiles/OrganizePreview.vue new file mode 100644 index 0000000..1c26850 --- /dev/null +++ b/vue/src/page/OrganizeFiles/OrganizePreview.vue @@ -0,0 +1,422 @@ + + + + + diff --git a/vue/src/page/fileTransfer/hooks/useLocation.ts b/vue/src/page/fileTransfer/hooks/useLocation.ts index 7322bb5..a91c954 100644 --- a/vue/src/page/fileTransfer/hooks/useLocation.ts +++ b/vue/src/page/fileTransfer/hooks/useLocation.ts @@ -292,6 +292,18 @@ export function useLocation () { useGlobalEventListen('returnToIIB', lazyRefresh) + // Listen for refreshFileView event (e.g., after smart organize completes) + useGlobalEventListen('refreshFileView', (data?: { paths?: string[] }) => { + // Check if current location is in the affected paths + const paths = data?.paths || [] + const shouldRefresh = paths.length === 0 || paths.some(p => + currLocation.value.startsWith(p) || p.startsWith(currLocation.value) + ) + if (shouldRefresh) { + refresh() + } + }) + useEventListen.value('refresh', refresh) useEventListen.value('navigateUp', backToLastUseTo) diff --git a/vue/src/page/fileTransfer/stackView.vue b/vue/src/page/fileTransfer/stackView.vue index d3efa9b..742ec53 100644 --- a/vue/src/page/fileTransfer/stackView.vue +++ b/vue/src/page/fileTransfer/stackView.vue @@ -28,10 +28,14 @@ import FileItem from '@/components/FileItem.vue' import fullScreenContextMenu from './fullScreenContextMenu.vue' import BaseFileListInfo from '@/components/BaseFileListInfo.vue' import { copy2clipboardI18n } from '@/util' -import { openFolder } from '@/api' +import { openFolder, flattenFolder } from '@/api' import { sortMethods } from './fileSort' import { isTauri } from '@/util/env' import MultiSelectKeep from '@/components/MultiSelectKeep.vue' +import { openSmartOrganizeConfig } from '@/util/smartOrganize' +import { Modal, message } from 'ant-design-vue' +import { t } from '@/i18n' +import { h, ref } from 'vue' const global = useGlobalStore() const props = defineProps<{ @@ -101,6 +105,78 @@ const onTiktokViewClick = () => { openTiktokViewWithFiles(sortedFiles.value, previewIdx.value || 0) } +// Flatten folder handler +const flattenFolderLoading = ref(false) +const onFlattenFolderClick = async () => { + moreActionsDropdownShow.value = false + + // Step 1: Dry run to check for conflicts + flattenFolderLoading.value = true + let dryRunResult + try { + message.loading({ content: t('flattenFolderScanning'), key: 'flatten', duration: 0 }) + dryRunResult = await flattenFolder({ folder_path: currLocation.value, dry_run: true }) + } catch (e: any) { + message.destroy('flatten') + message.error(e.message || String(e)) + flattenFolderLoading.value = false + return + } + message.destroy('flatten') + flattenFolderLoading.value = false + + // Check if no files to move + if (dryRunResult.total_files === 0) { + message.info(t('flattenFolderNoFiles')) + return + } + + // Check for conflicts + if (dryRunResult.conflicts.length > 0) { + Modal.error({ + title: t('flattenFolderConflict'), + content: h('div', {}, [ + h('p', {}, `${t('flattenFolderConflictFiles')}:`), + h('ul', { style: 'max-height: 300px; overflow-y: auto;' }, + dryRunResult.conflicts.map(f => h('li', { style: 'color: red;' }, f)) + ) + ]) + }) + return + } + + // Step 2: Confirm with user + Modal.confirm({ + title: t('flattenFolder'), + content: h('div', {}, [ + h('p', { style: 'color: red; font-weight: bold;' }, t('flattenFolderWarning')), + h('p', {}, t('flattenFolderConfirm', { count: dryRunResult.total_files })) + ]), + okText: t('confirm'), + okType: 'danger', + cancelText: t('cancel'), + onOk: async () => { + // Step 3: Execute flatten + try { + message.loading({ content: t('flattenFolderExecuting'), key: 'flatten', duration: 0 }) + const result = await flattenFolder({ folder_path: currLocation.value, dry_run: false }) + message.destroy('flatten') + + if (result.success) { + message.success(t('flattenFolderSuccess', { count: result.moved_files })) + // Refresh the view + refresh() + } else { + message.error(`${t('error')}: ${result.errors?.join(', ')}`) + } + } catch (e: any) { + message.destroy('flatten') + message.error(e.message || String(e)) + } + } + }) +} + watch( () => props, () => { @@ -172,6 +248,7 @@ watch(
diff --git a/vue/src/store/useGlobalStore.ts b/vue/src/store/useGlobalStore.ts index 72978aa..06d52be 100644 --- a/vue/src/store/useGlobalStore.ts +++ b/vue/src/store/useGlobalStore.ts @@ -1,5 +1,6 @@ import type { GlobalConf } from '@/api' import type { ExtraPathType, MatchImageByTagsReq, Tag } from '@/api/db' +import type { OrganizeJobProgress, OrganizeFilesPreviewResp } from '@/api/organize' import { FileNodeInfo } from '@/api/files' import { i18n, t } from '@/i18n' import { getPreferredLang } from '@/i18n' @@ -365,6 +366,49 @@ export const useGlobalStore = defineStore( const magicSwitchTiktokView = ref(false) const showRandomImageInStartup = ref(true) const showTiktokNavigator = ref(false) + + // ===== Organize Jobs Management ===== + interface OrganizeJob { + job_id: string + status: string + progress: OrganizeJobProgress + startedAt: number + folder_paths: string[] + preview?: OrganizeFilesPreviewResp + } + + const activeOrganizeJobs = ref([]) + const showOrganizePanel = ref(true) // 控制面板显示/隐藏 + + // Smart organize config modal state + const showSmartOrganizeConfig = ref(false) + const smartOrganizeConfigPath = ref('') + + const addOrganizeJob = (job: OrganizeJob) => { + activeOrganizeJobs.value.push(job) + showOrganizePanel.value = true // 添加任务时自动显示面板 + } + + const updateOrganizeJob = (job_id: string, update: Partial) => { + const idx = activeOrganizeJobs.value.findIndex(j => j.job_id === job_id) + if (idx >= 0) { + // Deep clone to ensure Vue reactivity works properly + const existingJob = JSON.parse(JSON.stringify(activeOrganizeJobs.value[idx])) + const newJob = { ...existingJob, ...update } + // Force Vue reactivity by replacing the entire array item + activeOrganizeJobs.value.splice(idx, 1, newJob) + console.log('Updated job:', job_id, 'status:', newJob.status, 'preview:', newJob.preview ? `has preview (${newJob.preview.total_files} files)` : 'no preview') + } + } + + const removeOrganizeJob = (job_id: string) => { + activeOrganizeJobs.value = activeOrganizeJobs.value.filter(j => j.job_id !== job_id) + } + + const getOrganizeJob = (job_id: string) => { + return activeOrganizeJobs.value.find(j => j.job_id === job_id) + } + return { computedTheme, showTiktokNavigator, @@ -408,7 +452,17 @@ export const useGlobalStore = defineStore( batchDownloadPackOnly: ref(false), magicSwitchTiktokView, showRandomImageInStartup, - autoUpdateIndex: ref(true) + autoUpdateIndex: ref(true), + // Organize jobs + activeOrganizeJobs, + showOrganizePanel, + addOrganizeJob, + updateOrganizeJob, + removeOrganizeJob, + getOrganizeJob, + // Smart organize config modal + showSmartOrganizeConfig, + smartOrganizeConfigPath } }, { diff --git a/vue/src/util/index.ts b/vue/src/util/index.ts index 981afca..546ce67 100644 --- a/vue/src/util/index.ts +++ b/vue/src/util/index.ts @@ -106,6 +106,7 @@ export const { useEventListen: useGlobalEventListen, eventEmitter: globalEvents searchIndexExpired(): void closeTabPane(tabIdx: number, key: string): void updateGlobalSettingDone(): void + refreshFileView(args?: { paths?: string[] }): void }>() type AsyncFunction = (...args: any[]) => Promise diff --git a/vue/src/util/smartOrganize.ts b/vue/src/util/smartOrganize.ts new file mode 100644 index 0000000..584c265 --- /dev/null +++ b/vue/src/util/smartOrganize.ts @@ -0,0 +1,140 @@ +/** + * Smart organize utility functions + * Handles starting organize jobs and polling for status + */ + +import { message } from 'ant-design-vue' +import { t } from '@/i18n' +import { useGlobalStore } from '@/store/useGlobalStore' +import { startOrganizeFiles, getOrganizeFilesStatus } from '@/api/organize' +import type { OrganizeFilesReq } from '@/api/organize' +import { globalEvents } from '@/util' + +export interface SmartOrganizeConfig { + destFolder: string + recursive: boolean + minClusterSize: number + action: 'move' | 'copy' +} + +/** + * Open the smart organize config modal + * @param folderPath - Folder path to organize + */ +export function openSmartOrganizeConfig(folderPath: string) { + const globalStore = useGlobalStore() + globalStore.smartOrganizeConfigPath = folderPath + globalStore.showSmartOrganizeConfig = true +} + +/** + * Start a smart organize job with config from modal + * @param paths - Array of folder paths or file paths to organize + * @param config - Config from modal + */ +export async function startSmartOrganizeWithConfig( + paths: string[], + config: SmartOrganizeConfig +) { + const globalStore = useGlobalStore() + + try { + // Build request with config options + const req: OrganizeFilesReq = { + folder_paths: paths, + lang: globalStore.lang, + dest_folder: config.destFolder || undefined, + min_cluster_size: config.minClusterSize, + action: config.action, + recursive: config.recursive + } + + const { job_id } = await startOrganizeFiles(req) + + // Add job to global store for tracking + globalStore.addOrganizeJob({ + job_id, + status: 'queued', + progress: { + stage: 'embedding', + embedded_done: 0, + to_embed: 0, + clusters_done: 0, + clusters_total: 0, + moved_done: 0, + moved_total: 0, + current_file: '', + created_folders: [], + errors: [] + }, + startedAt: Date.now(), + folder_paths: paths + }) + + message.success(t('organizeJobStarted')) + + // Start polling for status + pollOrganizeStatus(job_id, paths) + + return job_id + } catch (e: any) { + message.error(`${t('error')}: ${e.message || e}`) + throw e + } +} + + +/** + * Poll for organize job status until completion + * @param job_id - Job ID to poll + * @param folderPaths - Original folder paths (for refreshing view after completion) + */ +async function pollOrganizeStatus(job_id: string, folderPaths?: string[]) { + const globalStore = useGlobalStore() + const pollInterval = 2000 // 2 seconds + + const poll = async () => { + try { + const status = await getOrganizeFilesStatus(job_id) + console.log('Poll response:', 'status:', status.status, 'stage:', status.progress?.stage, 'preview:', status.preview ? `yes (${status.preview.total_files} files, ${status.preview.clusters?.length} clusters)` : 'no') + + // Update job in store with all available data + const updateData: any = { + status: status.status, + progress: status.progress + } + + // Only include preview if it exists in the response + if (status.preview) { + updateData.preview = status.preview + console.log('Preview data received from API:', status.preview.total_files, 'files') + } + + globalStore.updateOrganizeJob(job_id, updateData) + + // Continue polling if not done or error + if (!['done', 'error', 'preview_ready'].includes(status.status)) { + setTimeout(poll, pollInterval) + } else { + console.log('Poll stopped at status:', status.status) + if (status.status === 'error') { + console.error('Organize job failed:', status.error) + } else if (status.status === 'preview_ready') { + console.log('Preview ready - user can now view and confirm') + } else if (status.status === 'done') { + // Refresh file view after completion + console.log('Organize done, emitting refresh event') + globalEvents.emit('refreshFileView', { paths: folderPaths }) + } + } + } catch (e) { + console.error('Poll organize status error:', e) + // Retry on error + setTimeout(poll, pollInterval * 2) + } + } + + // Start polling + poll() +} +